-// $Id$\r
/**\r
* Copyright (C) 2009 EDIT European Distributed Institute of Taxonomy\r
* http://www.e-taxonomy.eu\r
\r
package eu.etaxonomy.cdm.remote.controller;\r
\r
-import io.swagger.annotations.Api;\r
-\r
import java.io.IOException;\r
+import java.util.ArrayList;\r
import java.util.Arrays;\r
import java.util.List;\r
import java.util.UUID;\r
import eu.etaxonomy.cdm.api.service.IClassificationService;\r
import eu.etaxonomy.cdm.api.service.ITaxonService;\r
import eu.etaxonomy.cdm.api.service.ITermService;\r
+import eu.etaxonomy.cdm.exception.UnpublishedException;\r
import eu.etaxonomy.cdm.model.common.DefinedTermBase;\r
import eu.etaxonomy.cdm.model.name.Rank;\r
import eu.etaxonomy.cdm.model.taxon.Classification;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
import eu.etaxonomy.cdm.remote.editor.RankPropertyEditor;\r
+import io.swagger.annotations.Api;\r
\r
/**\r
* The ClassificationController class is a Spring MVC Controller.\r
* @author a.kohlbecker\r
- * @date 20.03.2009\r
+ * @since 20.03.2009\r
*/\r
@Controller\r
@Api("portal_classification")\r
@RequestMapping(value="/portal/classification")\r
-public class ClassificationPortalListController extends IdentifiableListController<Classification,IClassificationService> {\r
+public class ClassificationPortalListController extends AbstractIdentifiableListController<Classification,IClassificationService> {\r
\r
\r
private static final List<String> CLASSIFICATION_INIT_STRATEGY = Arrays.asList(new String[]{\r
});\r
\r
private static final List<String> NODE_INIT_STRATEGY = Arrays.asList(new String[]{\r
- "taxon.sec",\r
"taxon.name.rank",\r
+ "taxon.sec"\r
});\r
\r
\r
}\r
}\r
rank = findRank(rankUuid);\r
-\r
+ boolean includeUnpublished = NO_UNPUBLISHED;\r
// long start = System.currentTimeMillis();\r
- List<TaxonNode> rootNodes = service.listRankSpecificRootNodes(tree, rank, null, null, DEFAULT_INIT_STRATEGY);\r
+ List<TaxonNode> rootNodes = service.listRankSpecificRootNodes(tree, rank, includeUnpublished, null, null, NODE_INIT_STRATEGY);\r
// System.err.println("service.listRankSpecificRootNodes() " + (System.currentTimeMillis() - start));\r
return rootNodes;\r
}\r
\r
\r
-\r
-\r
/**\r
* Lists all child-{@link TaxonNode}s of the specified {@link Taxon} in the {@link Classification}. The\r
* a given {@link Rank} is ignored in this method but for consistency reasons it has been allowed to included it into the URI.\r
HttpServletResponse response) throws IOException {\r
logger.info("getChildNodesOfTaxon() " + request.getRequestURI());\r
\r
+ boolean includeUnpublished = NO_UNPUBLISHED; //for now we do not allow any remote service to publish unpublished data\r
+\r
+ List<TaxonNode> children = service.listChildNodesOfTaxon(taxonUuid, treeUuid,\r
+ includeUnpublished, null, null, NODE_INIT_STRATEGY);\r
+ return children;\r
+\r
+ }\r
+\r
+ @RequestMapping(\r
+ value = {"{treeUuid}/siblingsOf/{taxonUuid}"},\r
+ method = RequestMethod.GET)\r
+ public List<TaxonNode> getSiblingsOfTaxon(\r
+ @PathVariable("treeUuid") UUID treeUuid,\r
+ @PathVariable("taxonUuid") UUID taxonUuid,\r
+ HttpServletRequest request,\r
+ HttpServletResponse response) throws IOException {\r
+ logger.info("getSiblingsOfTaxon() " + request.getRequestURI());\r
\r
- List<TaxonNode> childs = service.listChildNodesOfTaxon(taxonUuid, treeUuid, null, null, NODE_INIT_STRATEGY);\r
+ boolean includeUnpublished = NO_UNPUBLISHED;\r
+ //FIXME return pager\r
+ List<TaxonNode> childs = service.listSiblingsOfTaxon(taxonUuid, treeUuid, includeUnpublished, null, null, NODE_INIT_STRATEGY);\r
return childs;\r
\r
}\r
@PathVariable("taxonUuid") UUID taxonUuid,\r
@PathVariable("rankUuid") UUID rankUuid,\r
HttpServletRequest request,\r
- HttpServletResponse response) throws IOException {\r
+ HttpServletResponse response) {\r
logger.info("getPathFromTaxonToRank() " + request.getRequestURI());\r
\r
+ boolean includeUnpublished = NO_UNPUBLISHED;\r
+\r
Classification tree = service.find(treeUuid);\r
Rank rank = findRank(rankUuid);\r
Taxon taxon = (Taxon) taxonService.load(taxonUuid);\r
\r
- return service.loadTreeBranchToTaxon(taxon, tree, rank, NODE_INIT_STRATEGY);\r
+ try {\r
+ return service.loadTreeBranchToTaxon(taxon, tree, rank, includeUnpublished, NODE_INIT_STRATEGY);\r
+ } catch (UnpublishedException e) {\r
+ return new ArrayList<>();\r
+ }\r
}\r
\r
/**\r
@PathVariable("treeUuid") UUID treeUuid,\r
@PathVariable("taxonUuid") UUID taxonUuid,\r
HttpServletRequest request,\r
- HttpServletResponse response) throws IOException {\r
+ HttpServletResponse response) {\r
\r
return getPathFromTaxonToRank(treeUuid, taxonUuid, null, request, response);\r
}\r
private Rank findRank(UUID rankUuid) {\r
Rank rank = null;\r
if(rankUuid != null){\r
- DefinedTermBase dt = termService.find(rankUuid);\r
+ DefinedTermBase<?> dt = termService.find(rankUuid);\r
if(dt instanceof Rank){\r
rank = (Rank)dt;\r
} else {\r
}\r
\r
\r
-}
\ No newline at end of file
+}