diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/search/NewAllocationSelectorController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/search/NewAllocationSelectorController.java index c9e572e56..adb24641c 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/search/NewAllocationSelectorController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/search/NewAllocationSelectorController.java @@ -24,6 +24,7 @@ package org.navalplanner.web.resources.search; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; +import java.util.Collections; import java.util.EnumSet; import java.util.HashSet; import java.util.List; @@ -31,7 +32,6 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Set; -import org.apache.commons.lang.StringUtils; import org.navalplanner.business.resources.daos.IResourcesSearcher.IResourcesQuery; import org.navalplanner.business.resources.entities.Criterion; import org.navalplanner.business.resources.entities.CriterionType; @@ -424,24 +424,37 @@ public class NewAllocationSelectorController extends */ private CriterionTreeNode asNode(CriterionType criterionType, Set criterions) { - return new CriterionTreeNode(criterionType, toNodeList(criterions)); + return new CriterionTreeNode(criterionType, + toNodeList(withoutParents(criterions))); } - /** - * Converts a {@link Set} of {@link Criterion} to an {@link ArrayList} of - * {@link CriterionTreeNode} - * - * @param criterions - * @return - */ - private ArrayList toNodeList(Set criterions) { + private List withoutParents( + Collection criterions) { + List result = new ArrayList(); + for (Criterion each : criterions) { + if (each.getParent() == null) { + result.add(each); + } + } + return result; + } + + private List toNodeList( + Collection criterions) { ArrayList result = new ArrayList(); - for (Criterion criterion : criterions) { + for (Criterion criterion : sortedByName(criterions)) { result.add(asNode(criterion)); } return result; } + private List sortedByName( + Collection criterions) { + List result = new ArrayList(criterions); + Collections.sort(result, Criterion.byName); + return result; + } + /** * Converts {@link Criterion} to {@link CriterionTreeNode} * @@ -449,7 +462,8 @@ public class NewAllocationSelectorController extends * @return */ private CriterionTreeNode asNode(Criterion criterion) { - return new CriterionTreeNode(criterion, new ArrayList()); + return new CriterionTreeNode(criterion, + toNodeList(criterion.getChildren())); } /**