From 95b07aa3f3965a7884fd0860b90a3c2b73c18daa Mon Sep 17 00:00:00 2001 From: Katja Luther Date: Tue, 2 Jun 2015 11:44:51 +0000 Subject: [PATCH] add SortMode enum and change the param for sorting of loadChildNodesOfTaxonNode from boolean to SortMode enum see #4226 --- .gitattributes | 1 + .../cdm/api/service/ITaxonNodeService.java | 7 ++++-- .../cdm/api/service/NodeSortMode.java | 7 ++++++ .../cdm/api/service/TaxonNodeServiceImpl.java | 23 +++++++++++++------ 4 files changed, 29 insertions(+), 9 deletions(-) create mode 100644 cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/NodeSortMode.java diff --git a/.gitattributes b/.gitattributes index c451226369..22a11957fb 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2301,6 +2301,7 @@ cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/MicroFormatCategorica cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/MicroFormatQuantitativeDescriptionBuilder.java -text cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/NameServiceImpl.java -text cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/NaturalLanguageGenerator.java -text +cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/NodeSortMode.java -text cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/OccurrenceServiceImpl.java -text cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/PolytomousKeyNodeServiceImpl.java -text cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/PolytomousKeyServiceImpl.java -text diff --git a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/ITaxonNodeService.java b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/ITaxonNodeService.java index e50ecda42e..6502638fd9 100644 --- a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/ITaxonNodeService.java +++ b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/ITaxonNodeService.java @@ -31,12 +31,12 @@ import eu.etaxonomy.cdm.model.taxon.TaxonNode; public interface ITaxonNodeService extends IAnnotatableService{ /** - *returns the childnodes of the taxonNode, if recursive is true it returns all descendants + *returns the childnodes of the taxonNode, if recursive is true it returns all descendants, if sort is true the nodes are sorted * * @param taxonNode * @param propertyPaths * @param recursive - * @return + * @return List */ public List loadChildNodesOfTaxonNode(TaxonNode taxonNode, List propertyPaths, boolean recursive, boolean sort); @@ -101,6 +101,9 @@ public interface ITaxonNodeService extends IAnnotatableService{ UpdateResult moveTaxonNode(UUID taxonNodeUuid, UUID targetNodeUuid, boolean moveToParent); + List loadChildNodesOfTaxonNode(TaxonNode taxonNode, + List propertyPaths, boolean recursive, NodeSortMode sortMode); + diff --git a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/NodeSortMode.java b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/NodeSortMode.java new file mode 100644 index 0000000000..fd9829c137 --- /dev/null +++ b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/NodeSortMode.java @@ -0,0 +1,7 @@ +package eu.etaxonomy.cdm.api.service; + +public enum NodeSortMode { + doNaturalOrder, + doRankAndAlphabeticalOrder, + doAlphabeticalOrder +} diff --git a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/TaxonNodeServiceImpl.java b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/TaxonNodeServiceImpl.java index c132b3da29..9a7d023625 100644 --- a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/TaxonNodeServiceImpl.java +++ b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/TaxonNodeServiceImpl.java @@ -39,6 +39,8 @@ import eu.etaxonomy.cdm.model.taxon.Synonym; import eu.etaxonomy.cdm.model.taxon.SynonymRelationship; import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType; import eu.etaxonomy.cdm.model.taxon.Taxon; +import eu.etaxonomy.cdm.model.taxon.TaxonComparatorSearch; +import eu.etaxonomy.cdm.model.taxon.TaxonNaturalComparator; import eu.etaxonomy.cdm.model.taxon.TaxonNode; import eu.etaxonomy.cdm.model.taxon.TaxonRelationship; import eu.etaxonomy.cdm.persistence.dao.initializer.IBeanInitializer; @@ -72,7 +74,7 @@ public class TaxonNodeServiceImpl extends AnnotatableServiceBase loadChildNodesOfTaxonNode(TaxonNode taxonNode, - List propertyPaths, boolean recursive, boolean sorted) { + List propertyPaths, boolean recursive, NodeSortMode sortMode) { taxonNode = dao.load(taxonNode.getUuid()); List childNodes; if (recursive == true){ @@ -80,9 +82,13 @@ public class TaxonNodeServiceImpl extends AnnotatableServiceBase(taxonNode.getChildNodes()); } - if (sorted){ - Collections.sort(childNodes, taxonNodeComparator); - } + if (sortMode.equals(NodeSortMode.doNaturalOrder)){ + TaxonNaturalComparator comparator = new TaxonNaturalComparator(); + Collections.sort(childNodes, comparator); + } else if (sortMode.equals(NodeSortMode.doAlphabeticalOrder)){ + Collections.sort(childNodes, this.taxonNodeComparator); + } + defaultBeanInitializer.initializeAll(childNodes, propertyPaths); return childNodes; } @@ -242,6 +248,7 @@ public class TaxonNodeServiceImpl extends AnnotatableServiceBase children = new HashSet (); @@ -289,7 +296,7 @@ public class TaxonNodeServiceImpl extends AnnotatableServiceBase