diff --git a/libreplan-business/src/main/java/org/libreplan/business/resources/entities/Criterion.java b/libreplan-business/src/main/java/org/libreplan/business/resources/entities/Criterion.java index 2c2239aa1..9adf58538 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/resources/entities/Criterion.java +++ b/libreplan-business/src/main/java/org/libreplan/business/resources/entities/Criterion.java @@ -466,6 +466,10 @@ public class Criterion extends IntegrationEntity implements ICriterion, return String.format("%s :: %s", type, name); } + public String getFinderPattern() { + return String.format("%s ( %s )", name, type.getName()); + } + @Override public int compareTo(Criterion o) { return toString().compareToIgnoreCase(o.toString()); diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/resourceload/ResourceLoadController.java b/libreplan-webapp/src/main/java/org/libreplan/web/resourceload/ResourceLoadController.java index 182e82660..98402b415 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/resourceload/ResourceLoadController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/resourceload/ResourceLoadController.java @@ -53,6 +53,7 @@ import org.libreplan.business.users.daos.IUserDAO; import org.libreplan.business.users.entities.User; import org.libreplan.web.common.components.bandboxsearch.BandboxMultipleSearch; import org.libreplan.web.common.components.finders.FilterPair; +import org.libreplan.web.common.components.finders.ResourceFilterEnum; import org.libreplan.web.planner.chart.Chart; import org.libreplan.web.planner.chart.StandardLoadChartFiller; import org.libreplan.web.planner.company.CompanyPlanningModel; @@ -284,6 +285,10 @@ public class ResourceLoadController implements Composer { "resourceLoadStartDate"); LocalDate endDate = (LocalDate) Sessions.getCurrent().getAttribute( "resourceLoadEndDate"); + List bandboxFilterPairs = (List) Sessions + .getCurrent() + .getAttribute( + "resourceLoadFilterWorkerOrCriterion"); try { user = this.userDAO.findByLoginName(SecurityUtils .getSessionUserLoginName()); @@ -312,6 +317,18 @@ public class ResourceLoadController implements Composer { result.add(new ByDatesFilter(onChange, filterBy, startDate, endDate)); WorkersOrCriteriaBandbox bandbox = new WorkersOrCriteriaBandbox( onChange, filterBy, filterTypeChanger, resourcesSearcher); + + if (bandboxFilterPairs != null && !bandboxFilterPairs.isEmpty()) { + for (FilterPair filterPair : bandboxFilterPairs) { + bandbox.getBandBox().addSelectedElement(filterPair); + } + } else if ((user != null) + && (user.getResourcesLoadFilterCriterion() != null)) { + bandboxFilterPairs = new ArrayList(); + bandboxFilterPairs.add(new FilterPair(ResourceFilterEnum.Criterion, + user.getResourcesLoadFilterCriterion().getFinderPattern(), + user.getResourcesLoadFilterCriterion())); + } result.add(bandbox); result.add(new ByNamePaginator(onChange, filterBy, filterTypeChanger, bandbox)); @@ -559,6 +576,10 @@ public class ResourceLoadController implements Composer { private Label label = new Label(); + public BandboxMultipleSearch getBandBox() { + return bandBox; + } + private WorkersOrCriteriaBandbox(Runnable onChange, PlanningState filterBy, FilterTypeChanger filterType, IResourcesSearcher resourcesSearcher) { @@ -585,6 +606,9 @@ public class ResourceLoadController implements Composer { @Override public void onEvent(Event event) throws Exception { entitiesSelected = getSelected(); + Sessions.getCurrent().setAttribute( + "resourceLoadFilterWorkerOrCriterion", + bandBox.getSelectedElements()); notifyChange(); } }); @@ -675,6 +699,12 @@ public class ResourceLoadController implements Composer { return result; } + public void addSelectedElementsToBandbox(List criterion) { + for (FilterPair object : criterion) { + bandBox.addSelectedElement(object); + } + } + } private static class ByNamePaginator extends DependingOnFiltering