1 |
|
|
2 |
|
|
3 |
|
|
4 |
|
|
5 |
|
|
6 |
|
|
7 |
|
|
8 |
|
|
9 |
|
|
10 |
|
|
11 |
|
|
12 |
|
|
13 |
|
|
14 |
|
|
15 |
|
|
16 |
|
|
17 |
|
|
18 |
|
|
19 |
|
|
20 |
|
package org.xwiki.rest.internal.resources.tags; |
21 |
|
|
22 |
|
import java.util.ArrayList; |
23 |
|
import java.util.List; |
24 |
|
|
25 |
|
import javax.inject.Named; |
26 |
|
|
27 |
|
import org.xwiki.component.annotation.Component; |
28 |
|
import org.xwiki.query.Query; |
29 |
|
import org.xwiki.query.QueryException; |
30 |
|
import org.xwiki.rest.XWikiResource; |
31 |
|
import org.xwiki.rest.XWikiRestException; |
32 |
|
import org.xwiki.rest.internal.DomainObjectFactory; |
33 |
|
import org.xwiki.rest.internal.RangeIterable; |
34 |
|
import org.xwiki.rest.internal.Utils; |
35 |
|
import org.xwiki.rest.model.jaxb.Pages; |
36 |
|
import org.xwiki.rest.resources.tags.PagesForTagsResource; |
37 |
|
|
38 |
|
import com.xpn.xwiki.api.Document; |
39 |
|
|
40 |
|
@Component |
41 |
|
@Named("org.xwiki.rest.internal.resources.tags.PagesForTagsResourceImpl") |
|
|
| 89.3% |
Uncovered Elements: 3 (28) |
Complexity: 5 |
Complexity Density: 0.23 |
|
42 |
|
public class PagesForTagsResourceImpl extends XWikiResource implements PagesForTagsResource |
43 |
|
{ |
|
|
| 87% |
Uncovered Elements: 3 (23) |
Complexity: 4 |
Complexity Density: 0.21 |
|
44 |
1 |
@Override... |
45 |
|
public Pages getTags(String wikiName, String tagNames, Integer start, Integer number, Boolean withPrettyNames) |
46 |
|
throws XWikiRestException |
47 |
|
{ |
48 |
1 |
String database = Utils.getXWikiContext(componentManager).getWikiId(); |
49 |
|
|
50 |
1 |
try { |
51 |
1 |
Pages pages = objectFactory.createPages(); |
52 |
|
|
53 |
1 |
Utils.getXWikiContext(componentManager).setWikiId(wikiName); |
54 |
|
|
55 |
1 |
String[] tagNamesArray = tagNames.split(","); |
56 |
|
|
57 |
1 |
List<String> documentNames = new ArrayList<String>(); |
58 |
1 |
for (String tagName : tagNamesArray) { |
59 |
1 |
List<String> documentNamesForTag = getDocumentsWithTag(tagName); |
60 |
|
|
61 |
|
|
62 |
1 |
for (String documentName : documentNamesForTag) { |
63 |
1 |
if (!documentNames.contains(documentName)) { |
64 |
1 |
documentNames.add(documentName); |
65 |
|
} |
66 |
|
} |
67 |
|
} |
68 |
|
|
69 |
1 |
RangeIterable<String> ri = new RangeIterable<String>(documentNames, start, number); |
70 |
|
|
71 |
1 |
for (String documentName : ri) { |
72 |
1 |
Document doc = Utils.getXWikiApi(componentManager).getDocument(documentName); |
73 |
1 |
if (doc != null) { |
74 |
1 |
pages.getPageSummaries().add(DomainObjectFactory |
75 |
|
.createPageSummary(objectFactory, uriInfo.getBaseUri(), doc, Utils.getXWikiApi( |
76 |
|
componentManager), withPrettyNames)); |
77 |
|
} |
78 |
|
} |
79 |
|
|
80 |
1 |
return pages; |
81 |
|
} catch (Exception e) { |
82 |
0 |
throw new XWikiRestException(e); |
83 |
|
} finally { |
84 |
1 |
Utils.getXWikiContext(componentManager).setWikiId(database); |
85 |
|
} |
86 |
|
} |
87 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (3) |
Complexity: 1 |
Complexity Density: 0.33 |
|
88 |
1 |
private List<String> getDocumentsWithTag(String tag) throws QueryException... |
89 |
|
{ |
90 |
1 |
String query = |
91 |
|
"select doc.fullName from XWikiDocument as doc, BaseObject as obj, DBStringListProperty as prop " |
92 |
|
+ "where obj.name=doc.fullName and obj.className='XWiki.TagClass' and obj.id=prop.id.id " |
93 |
|
+ "and prop.id.name='tags' and :tag in elements(prop.list) order by doc.name asc"; |
94 |
|
|
95 |
1 |
List<String> documentsWithTag = queryManager.createQuery(query, Query.HQL).bindValue("tag", tag).execute(); |
96 |
|
|
97 |
1 |
return documentsWithTag; |
98 |
|
} |
99 |
|
} |