diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/search/ResourcePredicate.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/search/ResourcePredicate.java index b900f6e6d..7fad69821 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/search/ResourcePredicate.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/search/ResourcePredicate.java @@ -52,6 +52,8 @@ public class ResourcePredicate implements IPredicate { private String[] personalFilters; + private Boolean isLimitedResource; + private List assignedResourcesInIntervalDates; public ResourcePredicate(List filters, String personalFilters, @@ -63,6 +65,14 @@ public class ResourcePredicate implements IPredicate { this.personalFilters = personalFilters.split(" "); } + public ResourcePredicate(List filters, String personalFilters, + LocalDate startDate, + LocalDate finishDate, + Boolean isLimitedResource) { + this(filters, personalFilters, startDate, finishDate); + this.isLimitedResource = isLimitedResource; + } + @Override public boolean accepts(Object object) { final Resource resource = (Resource) object; @@ -74,12 +84,16 @@ public class ResourcePredicate implements IPredicate { return false; } if (acceptFilters(resource) && acceptPersonalFilters(resource) - && acceptFiltersDates(resource)) { + && acceptFiltersDates(resource) && acceptFilterIsLimitedResource(resource)) { return true; } return false; } + private boolean acceptFilterIsLimitedResource(Resource resource) { + return (isLimitedResource != null) ? isLimitedResource.equals(resource.isLimitedResource()) : true; + } + private boolean acceptFilters(Resource resource) { if ((filters == null) || (filters.isEmpty())) { return true; diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/worker/WorkerCRUDController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/worker/WorkerCRUDController.java index f61571561..e8e664711 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/worker/WorkerCRUDController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/worker/WorkerCRUDController.java @@ -22,8 +22,10 @@ package org.navalplanner.web.resources.worker; import static org.navalplanner.web.I18nHelper._; +import java.util.Arrays; import java.util.Date; import java.util.EnumSet; +import java.util.HashSet; import java.util.List; import java.util.Set; @@ -109,6 +111,8 @@ public class WorkerCRUDController extends GenericForwardComposer implements private Datebox filterFinishDate; + private Combobox filterLimitedResource; + private BandboxMultipleSearch bdFilters; private Textbox txtfilter; @@ -293,6 +297,8 @@ public class WorkerCRUDController extends GenericForwardComposer implements .getFellowIfAny("filterFinishDate"); this.filterStartDate = (Datebox) listWindow .getFellowIfAny("filterStartDate"); + this.filterLimitedResource = (Combobox) listWindow + .getFellowIfAny("filterLimitedResource"); this.bdFilters = (BandboxMultipleSearch) listWindow .getFellowIfAny("bdFilters"); this.txtfilter = (Textbox) listWindow.getFellowIfAny("txtfilter"); @@ -601,13 +607,18 @@ public class WorkerCRUDController extends GenericForwardComposer implements finishDate = LocalDate.fromDateFields(filterFinishDate.getValue()); } + final Comboitem item = filterLimitedResource.getSelectedItem(); + Boolean isLimitedResource = (item != null) ? LimitedResourceEnum + .valueOf((LimitedResourceEnum) item.getValue()) : null; + if (listFilters.isEmpty() && (personalFilter == null || personalFilter.isEmpty()) - && startDate == null && finishDate == null) { + && startDate == null && finishDate == null + && isLimitedResource == null) { return null; } return new ResourcePredicate(listFilters, personalFilter, startDate, - finishDate); + finishDate, isLimitedResource); } private void filterByPredicate(ResourcePredicate predicate) { @@ -629,7 +640,7 @@ public class WorkerCRUDController extends GenericForwardComposer implements } public enum LimitedResourceEnum { - ALL(""), + ALL(_("ALL")), LIMITED_RESOURCE(_("LIMITED RESOURCE")), NON_LIMITED_RESOURCE(_("NON LIMITED RESOURCE")); @@ -647,11 +658,32 @@ public class WorkerCRUDController extends GenericForwardComposer implements return (isLimitedResource != null) ? LIMITED_RESOURCE : NON_LIMITED_RESOURCE; } + public static Boolean valueOf(LimitedResourceEnum option) { + if (LIMITED_RESOURCE.equals(option)) { + return true; + } else if (NON_LIMITED_RESOURCE.equals(option)) { + return false; + } else { + return null; + } + } + public static Set getLimitedResourceOptionList() { return EnumSet.of( LimitedResourceEnum.LIMITED_RESOURCE, LimitedResourceEnum.NON_LIMITED_RESOURCE); } + + public static Set getLimitedResourceFilterOptionList() { + return EnumSet.of(LimitedResourceEnum.ALL, + LimitedResourceEnum.LIMITED_RESOURCE, + LimitedResourceEnum.NON_LIMITED_RESOURCE); + } + + } + + public Set getLimitedResourceFilterOptionList() { + return LimitedResourceEnum.getLimitedResourceFilterOptionList(); } public Set getLimitedResourceOptionList() { diff --git a/navalplanner-webapp/src/main/webapp/resources/search/_resourceFilter.zul b/navalplanner-webapp/src/main/webapp/resources/search/_resourceFilter.zul index 3b5f3e728..9842b4263 100644 --- a/navalplanner-webapp/src/main/webapp/resources/search/_resourceFilter.zul +++ b/navalplanner-webapp/src/main/webapp/resources/search/_resourceFilter.zul @@ -1,15 +1,27 @@ + +