1. Project Clover database Tue Dec 20 2016 21:24:09 CET
  2. Package org.xwiki.rest.internal.resources.tags

File TagsResourceImpl.java

 

Coverage histogram

../../../../../../img/srcFileCovDistChart10.png
0% of files have more coverage

Code metrics

0
21
2
1
90
57
3
0.14
10.5
2
1.5

Classes

Class Line # Actions
TagsResourceImpl 42 21 0% 3 1
0.9565217595.7%
 

Contributing tests

No tests hitting this source file were found.

Source view

1    /*
2    * See the NOTICE file distributed with this work for additional
3    * information regarding copyright ownership.
4    *
5    * This is free software; you can redistribute it and/or modify it
6    * under the terms of the GNU Lesser General Public License as
7    * published by the Free Software Foundation; either version 2.1 of
8    * the License, or (at your option) any later version.
9    *
10    * This software is distributed in the hope that it will be useful,
11    * but WITHOUT ANY WARRANTY; without even the implied warranty of
12    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13    * Lesser General Public License for more details.
14    *
15    * You should have received a copy of the GNU Lesser General Public
16    * License along with this software; if not, write to the Free
17    * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
18    * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
19    */
20    package org.xwiki.rest.internal.resources.tags;
21   
22    import java.util.Collections;
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.Relations;
31    import org.xwiki.rest.XWikiResource;
32    import org.xwiki.rest.XWikiRestException;
33    import org.xwiki.rest.internal.Utils;
34    import org.xwiki.rest.model.jaxb.Link;
35    import org.xwiki.rest.model.jaxb.Tag;
36    import org.xwiki.rest.model.jaxb.Tags;
37    import org.xwiki.rest.resources.tags.PagesForTagsResource;
38    import org.xwiki.rest.resources.tags.TagsResource;
39   
40    @Component
41    @Named("org.xwiki.rest.internal.resources.tags.TagsResourceImpl")
 
42    public class TagsResourceImpl extends XWikiResource implements TagsResource
43    {
 
44  1 toggle @Override
45    public Tags getTags(String wikiName) throws XWikiRestException
46    {
47  1 String database = Utils.getXWikiContext(componentManager).getWikiId();
48   
49  1 try {
50  1 Tags tags = objectFactory.createTags();
51   
52  1 Utils.getXWikiContext(componentManager).setWikiId(wikiName);
53   
54  1 List<String> tagNames = getAllTags();
55   
56  1 for (String tagName : tagNames) {
57  8 Tag tag = objectFactory.createTag();
58  8 tag.setName(tagName);
59   
60  8 String tagUri =
61    Utils.createURI(uriInfo.getBaseUri(), PagesForTagsResource.class, wikiName, tagName).toString();
62  8 Link tagLink = objectFactory.createLink();
63  8 tagLink.setHref(tagUri);
64  8 tagLink.setRel(Relations.TAG);
65  8 tag.getLinks().add(tagLink);
66   
67  8 tags.getTags().add(tag);
68    }
69   
70  1 return tags;
71    } catch (QueryException e) {
72  0 throw new XWikiRestException(e);
73    } finally {
74  1 Utils.getXWikiContext(componentManager).setWikiId(database);
75    }
76    }
77   
 
78  1 toggle private List<String> getAllTags() throws QueryException
79    {
80  1 String query =
81    "select distinct elements(prop.list) from BaseObject as obj, "
82    + "DBStringListProperty as prop where obj.className='XWiki.TagClass' "
83    + "and obj.id=prop.id.id and prop.id.name='tags'";
84   
85  1 List<String> tags = queryManager.createQuery(query, Query.HQL).execute();
86  1 Collections.sort(tags, String.CASE_INSENSITIVE_ORDER);
87   
88  1 return tags;
89    }
90    }