From f5fb5ec24e9f2834535edad1d97991610855e6a5 Mon Sep 17 00:00:00 2001 From: Susana Montes Pedreira Date: Tue, 19 Jul 2011 15:05:26 +0200 Subject: [PATCH] Change the format of the matching results of a search in the gantt view and the resource allocation view. FEA: ItEr75S09ImproveBandboxFinders --- .../CriterionMultipleFiltersFinder.java | 83 +++++++++++++------ .../finders/ResourceAllocationFilterEnum.java | 1 + ...sourceAllocationMultipleFiltersFinder.java | 25 ++---- .../resourceload/ResourceLoadController.java | 4 +- 4 files changed, 69 insertions(+), 44 deletions(-) diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/CriterionMultipleFiltersFinder.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/CriterionMultipleFiltersFinder.java index 2a9efab02..d31defa34 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/CriterionMultipleFiltersFinder.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/CriterionMultipleFiltersFinder.java @@ -23,10 +23,13 @@ package org.navalplanner.web.common.components.finders; import java.util.Iterator; import java.util.List; +import java.util.Map; +import java.util.SortedMap; import org.apache.commons.lang.StringUtils; import org.navalplanner.business.hibernate.notification.PredefinedDatabaseSnapshots; import org.navalplanner.business.resources.entities.Criterion; +import org.navalplanner.business.resources.entities.CriterionType; import org.springframework.beans.factory.annotation.Autowired; public class CriterionMultipleFiltersFinder extends MultipleFiltersFinder { @@ -34,13 +37,6 @@ public class CriterionMultipleFiltersFinder extends MultipleFiltersFinder { @Autowired private PredefinedDatabaseSnapshots databaseSnapshots; - private IFilterEnum criterionFilterEnum = new IFilterEnum() { - @Override - public String toString() { - return "criterion"; - } - }; - /** * Forces to mark the string as needing translation */ @@ -51,18 +47,22 @@ public class CriterionMultipleFiltersFinder extends MultipleFiltersFinder { @Override public List getFirstTenFilters() { getListMatching().clear(); - Iterator iteratorCriterion = getCriterions().iterator(); - while(iteratorCriterion.hasNext() && getListMatching().size() < 10) { - Criterion criterion = iteratorCriterion.next(); - getListMatching().add(new FilterPair( - criterionFilterEnum, criterion.getName(), criterion)); + SortedMap> criterionsMap = getCriterionsMap(); + Iterator iteratorCriterionType = criterionsMap.keySet() + .iterator(); + while (iteratorCriterionType.hasNext() && getListMatching().size() < 10) { + CriterionType type = iteratorCriterionType.next(); + for (int i = 0; getListMatching().size() < 10 + && i < criterionsMap.get(type).size(); i++) { + Criterion criterion = criterionsMap.get(type).get(i); + addCriterion(type, criterion); + } } - addNoneFilter(); return getListMatching(); } - private List getCriterions() { - return databaseSnapshots.snapshotListCriterion(); + private SortedMap> getCriterionsMap() { + return databaseSnapshots.snapshotCriterionsMap(); } @Override @@ -70,21 +70,54 @@ public class CriterionMultipleFiltersFinder extends MultipleFiltersFinder { getListMatching().clear(); if ((filter != null) && (!filter.isEmpty())) { filter = StringUtils.deleteWhitespace(filter.toLowerCase()); - searchInCriteria(filter); + searchInCriterionTypes(filter); } addNoneFilter(); return getListMatching(); - } - private void searchInCriteria(String filter) { - for (Criterion criterion : getCriterions()) { - String name = StringUtils.deleteWhitespace( - criterion.getName().toLowerCase()); - if(name.contains(filter)) { - getListMatching().add(new FilterPair( - criterionFilterEnum, criterion.getName(), criterion)); + + private void searchInCriterionTypes(String filter) { + boolean limited = (filter.length() < 3); + Map> mapCriterions = getCriterionsMap(); + for (CriterionType type : mapCriterions.keySet()) { + String name = StringUtils.deleteWhitespace(type.getName() + .toLowerCase()); + if (name.contains(filter)) { + setFilterPairCriterionType(type, limited); + } else { + searchInCriterions(type, filter); } } } -} + private void searchInCriterions(CriterionType type, String filter) { + Map> mapCriterions = getCriterionsMap(); + for (Criterion criterion : mapCriterions.get(type)) { + String name = StringUtils.deleteWhitespace(criterion.getName() + .toLowerCase()); + if (name.contains(filter)) { + addCriterion(type, criterion); + if ((filter.length() < 3) && (getListMatching().size() > 9)) { + return; + } + } + } + } + + private void setFilterPairCriterionType(CriterionType type, boolean limited) { + Map> mapCriterions = getCriterionsMap(); + for (Criterion criterion : mapCriterions.get(type)) { + addCriterion(type, criterion); + if ((limited) && (getListMatching().size() > 9)) { + return; + } + } + } + + private void addCriterion(CriterionType type, Criterion criterion) { + String pattern = criterion.getName() + " ( " + type.getName() + " ) "; + getListMatching().add( + new FilterPair(ResourceFilterEnum.Criterion, type.getResource() + .toLowerCase(), pattern, criterion)); + } +} \ No newline at end of file diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/ResourceAllocationFilterEnum.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/ResourceAllocationFilterEnum.java index d4ae4423e..9f517562a 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/ResourceAllocationFilterEnum.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/ResourceAllocationFilterEnum.java @@ -24,6 +24,7 @@ */ package org.navalplanner.web.common.components.finders; + public enum ResourceAllocationFilterEnum implements IFilterEnum { Criterion(_("Criterion")), Resource(_("Resource")); diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/ResourceAllocationMultipleFiltersFinder.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/ResourceAllocationMultipleFiltersFinder.java index f8d72bc7d..71b4f0822 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/ResourceAllocationMultipleFiltersFinder.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/ResourceAllocationMultipleFiltersFinder.java @@ -89,12 +89,7 @@ public class ResourceAllocationMultipleFiltersFinder extends .isLimitingResource()) { continue; } - - String pattern = className.getSimpleName() + " :: " - + resource.getName(); - getListMatching().add( - new FilterPair(ResourceAllocationFilterEnum.Resource, - pattern, resource)); + addResource(className, resource); } } return getListMatching(); @@ -109,10 +104,7 @@ public class ResourceAllocationMultipleFiltersFinder extends for (int i = 0; getListMatching().size() < 10 && i < mapCriterions.get(type).size(); i++) { Criterion criterion = mapCriterions.get(type).get(i); - String pattern = type.getName() + " :: " + criterion.getName(); - getListMatching().add( - new FilterPair(ResourceAllocationFilterEnum.Criterion, - pattern, criterion)); + addCriterion(type, criterion); } } return getListMatching(); @@ -196,18 +188,17 @@ public class ResourceAllocationMultipleFiltersFinder extends } private void addCriterion(CriterionType type, Criterion criterion) { - String pattern = type.getName() + " :: " + criterion.getName(); + String pattern = criterion.getName() + " ( " + type.getName() + " )"; getListMatching().add( - new FilterPair(ResourceAllocationFilterEnum.Criterion, pattern, - criterion)); + new FilterPair(ResourceAllocationFilterEnum.Criterion, type + .getResource().toLowerCase(), pattern, criterion)); } private void addResource(Class className, Resource resource) { - String pattern = className.getSimpleName() + " :: " - + resource.getName(); + String pattern = resource.getName(); getListMatching().add( - new FilterPair(ResourceAllocationFilterEnum.Resource, pattern, - resource)); + new FilterPair(ResourceAllocationFilterEnum.Resource, className + .getSimpleName(), pattern, resource)); } public boolean isValidNewFilter(List filterValues, Object obj) { diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/ResourceLoadController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/ResourceLoadController.java index 7876e26dc..ab0e31ea1 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/ResourceLoadController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/ResourceLoadController.java @@ -31,10 +31,10 @@ import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Map.Entry; import java.util.Set; import java.util.SortedMap; import java.util.TreeMap; +import java.util.Map.Entry; import org.apache.commons.lang.Validate; import org.joda.time.LocalDate; @@ -319,7 +319,7 @@ public class ResourceLoadController implements Composer { bandBox = new BandboxMultipleSearch(); bandBox.setId("workerBandboxMultipleSearch"); bandBox.setWidthBandbox("185px"); - bandBox.setWidthListbox("300px"); + bandBox.setWidthListbox("450px"); bandBox.setFinder("workerMultipleFiltersFinder"); bandBox.afterCompose();