From c3d077efce0dc3a9c24723a9fa84a1edad2b39e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lorenzo=20Tilve=20=C3=81lvaro?= Date: Mon, 28 Jan 2013 09:51:11 +0100 Subject: [PATCH 001/106] Added new parameters to user preferences for company view and resource load filtering FEA: ItEr77S15FilteringEnhancements --- .../business/users/entities/User.java | 53 ++++++++++++++++++- 1 file changed, 52 insertions(+), 1 deletion(-) diff --git a/libreplan-business/src/main/java/org/libreplan/business/users/entities/User.java b/libreplan-business/src/main/java/org/libreplan/business/users/entities/User.java index bd285c96e..1f5a5b425 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/users/entities/User.java +++ b/libreplan-business/src/main/java/org/libreplan/business/users/entities/User.java @@ -3,7 +3,7 @@ * * Copyright (C) 2009-2010 Fundación para o Fomento da Calidade Industrial e * Desenvolvemento Tecnolóxico de Galicia - * Copyright (C) 2010-2012 Igalia, S.L. + * Copyright (C) 2010-2013 Igalia, S.L. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by @@ -33,6 +33,7 @@ import org.libreplan.business.common.BaseEntity; import org.libreplan.business.common.IHumanIdentifiable; import org.libreplan.business.common.Registry; import org.libreplan.business.common.exceptions.InstanceNotFoundException; +import org.libreplan.business.labels.entities.Label; import org.libreplan.business.resources.entities.Worker; import org.libreplan.business.scenarios.entities.Scenario; import org.libreplan.business.settings.entities.Language; @@ -47,6 +48,7 @@ import org.libreplan.business.users.daos.IUserDAO; * @author Ignacio Diaz Teijido * @author Manuel Rego Casasnovas * @author Javier Moran Rua + * @author Lorenzo Tilve Álvaro */ public class User extends BaseEntity implements IHumanIdentifiable{ @@ -81,6 +83,16 @@ public class User extends BaseEntity implements IHumanIdentifiable{ private Worker worker; + private Label projectsFilterLabel = null; + + private Integer projectsFilterPeriodSince; + + private Integer projectsFilterPeriodTo; + + private Integer resourcesLoadFilterPeriodSince; + + private Integer resourcesLoadFilterPeriodTo; + /** * Necessary for Hibernate. Please, do not call it. */ @@ -373,4 +385,43 @@ public class User extends BaseEntity implements IHumanIdentifiable{ return true; } + public Label getProjectsFilterLabel() { + return projectsFilterLabel; + } + + public void setProjectsFilterLabel(Label label) { + projectsFilterLabel = label; + } + + public Integer getProjectsFilterPeriodSince() { + return projectsFilterPeriodSince; + } + public void setProjectsFilterPeriodSince(Integer period) { + projectsFilterPeriodSince = period; + } + + public Integer getProjectsFilterPeriodTo() { + return projectsFilterPeriodTo; + } + + public void setProjectsFilterPeriodTo(Integer period) { + projectsFilterPeriodTo = period; + } + + public Integer getResourcesLoadFilterPeriodSince() { + return resourcesLoadFilterPeriodSince; + } + + public void setResourcesLoadFilterPeriodSince(Integer period) { + resourcesLoadFilterPeriodSince = period; + } + + public Integer getResourcesLoadFilterPeriodTo() { + return resourcesLoadFilterPeriodTo; + } + + public void setResourcesLoadFilterPeriodTo(Integer period) { + resourcesLoadFilterPeriodTo = period; + } + } From 676b6c487672ed9070c86809a2b079fbdaa35c62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lorenzo=20Tilve=20=C3=81lvaro?= Date: Mon, 28 Jan 2013 09:54:33 +0100 Subject: [PATCH 002/106] Defined hibernate configuration for filtering parameters persistance FEA: ItEr77S15FilteringEnhancements --- .../libreplan/business/users/entities/Users.hbm.xml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/libreplan-business/src/main/resources/org/libreplan/business/users/entities/Users.hbm.xml b/libreplan-business/src/main/resources/org/libreplan/business/users/entities/Users.hbm.xml index ee8216415..03fe789b3 100644 --- a/libreplan-business/src/main/resources/org/libreplan/business/users/entities/Users.hbm.xml +++ b/libreplan-business/src/main/resources/org/libreplan/business/users/entities/Users.hbm.xml @@ -63,6 +63,16 @@ + + + + + + + + + + From 1cab7560695e1a762d9ca6ecb7d5e6974d897873 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lorenzo=20Tilve=20=C3=81lvaro?= Date: Mon, 28 Jan 2013 09:56:03 +0100 Subject: [PATCH 003/106] Added database changelog for filtering preferences FEA: ItEr77S15FilteringEnhancements --- .../src/main/resources/db.changelog-1.3.xml | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/libreplan-business/src/main/resources/db.changelog-1.3.xml b/libreplan-business/src/main/resources/db.changelog-1.3.xml index 8da319d91..18a670175 100644 --- a/libreplan-business/src/main/resources/db.changelog-1.3.xml +++ b/libreplan-business/src/main/resources/db.changelog-1.3.xml @@ -208,4 +208,36 @@ columnDataType="INTEGER" /> + + Add column to store project filtering interval 'range since' parameter + + + + + + + Add column to store project filtering interval 'range to' parameter + + + + + + + Add column to store resources load filtering interval 'range since' parameter + + + + + + + Add column to store resources load filtering interval 'range to' parameter + + + + + From 5e262b5144ed430ed10c56c167e850cfecd1337e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lorenzo=20Tilve=20=C3=81lvaro?= Date: Mon, 28 Jan 2013 09:57:21 +0100 Subject: [PATCH 004/106] Added initial interface to user preferences for company and resourcesload filtering configuration FEA: ItEr77S15FilteringEnhancements --- .../src/main/webapp/myaccount/settings.zul | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/libreplan-webapp/src/main/webapp/myaccount/settings.zul b/libreplan-webapp/src/main/webapp/myaccount/settings.zul index 20243b223..63e4de3bc 100644 --- a/libreplan-webapp/src/main/webapp/myaccount/settings.zul +++ b/libreplan-webapp/src/main/webapp/myaccount/settings.zul @@ -117,6 +117,30 @@ + + + + From 8a9b78050a929a82c779c3f52ece3f15a88a5901 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lorenzo=20Tilve=20=C3=81lvaro?= Date: Mon, 28 Jan 2013 10:02:14 +0100 Subject: [PATCH 005/106] Added accesors to settings controller for manipulation of filtering preferences FEA: ItEr77S15FilteringEnhancements --- .../web/users/settings/ISettingsModel.java | 21 +++++++++ .../users/settings/SettingsController.java | 34 ++++++++++++++ .../web/users/settings/SettingsModel.java | 46 +++++++++++++++++++ 3 files changed, 101 insertions(+) diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/users/settings/ISettingsModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/users/settings/ISettingsModel.java index b95d164b3..3a49f7e12 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/users/settings/ISettingsModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/users/settings/ISettingsModel.java @@ -2,6 +2,7 @@ * This file is part of LibrePlan * * Copyright (C) 2011 ComtecSF, S.L. + * Copyright (C) 2013 Igalia, S.L. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by @@ -19,6 +20,7 @@ package org.libreplan.web.users.settings; import org.libreplan.business.common.exceptions.ValidationException; +import org.libreplan.business.labels.entities.Label; import org.libreplan.business.settings.entities.Language; @@ -27,6 +29,7 @@ import org.libreplan.business.settings.entities.Language; * * @author Cristina Alvarino Perez * @author Ignacio Diaz Teijido + * @author Lorenzo Tilve Álvaro */ public interface ISettingsModel { @@ -67,4 +70,22 @@ public interface ISettingsModel { boolean isBound(); + Integer getProjectsFilterPeriodSince(); + + void setProjectsFilterPeriodSince(Integer period); + + Integer getProjectsFilterPeriodTo(); + + void setProjectsFilterPeriodTo(Integer period); + + Integer getResourcesLoadFilterPeriodSince(); + + void setResourcesLoadFilterPeriodSince(Integer period); + + Integer getResourcesLoadFilterPeriodTo(); + + void setResourcesLoadFilterPeriodTo(Integer period); + + Label getProjectsFilterLabel(); + } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/users/settings/SettingsController.java b/libreplan-webapp/src/main/java/org/libreplan/web/users/settings/SettingsController.java index db6a1515e..882ebf26c 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/users/settings/SettingsController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/users/settings/SettingsController.java @@ -2,6 +2,7 @@ * This file is part of LibrePlan * * Copyright (C) 2011 ComtecSF, S.L. + * Copyright (C) 2013 Igalia. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by @@ -41,6 +42,7 @@ import org.zkoss.zul.Textbox; * * @author Cristina Alvarino Perez * @author Ignacio Diaz Teijido + * @author Lorenzo Tilve Álvaro */ public class SettingsController extends GenericForwardComposer { @@ -176,4 +178,36 @@ public class SettingsController extends GenericForwardComposer { return settingsModel.isBound(); } + public Integer getProjectsFilterPeriodSince() { + return settingsModel.getProjectsFilterPeriodSince(); + } + + public void setProjectsFilterPeriodSince(Integer period) { + settingsModel.setProjectsFilterPeriodSince(period); + } + + public Integer getProjectsFilterPeriodTo() { + return settingsModel.getProjectsFilterPeriodTo(); + } + + public void setProjectsFilterPeriodTo(Integer period) { + settingsModel.setProjectsFilterPeriodTo(period); + } + + public Integer getResourcesLoadFilterPeriodSince() { + return settingsModel.getResourcesLoadFilterPeriodSince(); + } + + public void setResourcesLoadFilterPeriodSince(Integer period) { + settingsModel.setResourcesLoadFilterPeriodSince(period); + } + + public Integer getResourcesLoadFilterPeriodTo() { + return settingsModel.getResourcesLoadFilterPeriodTo(); + } + + public void setResourcesLoadFilterPeriodTo(Integer period) { + settingsModel.setResourcesLoadFilterPeriodTo(period); + } + } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/users/settings/SettingsModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/users/settings/SettingsModel.java index 4a7df6763..63e4aaf4c 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/users/settings/SettingsModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/users/settings/SettingsModel.java @@ -22,6 +22,7 @@ package org.libreplan.web.users.settings; import org.apache.commons.lang.Validate; import org.libreplan.business.common.exceptions.InstanceNotFoundException; import org.libreplan.business.common.exceptions.ValidationException; +import org.libreplan.business.labels.entities.Label; import org.libreplan.business.settings.entities.Language; import org.libreplan.business.users.daos.IUserDAO; import org.libreplan.business.users.entities.Profile; @@ -202,4 +203,49 @@ public class SettingsModel implements ISettingsModel { return false; } + @Override + public Label getProjectsFilterLabel() { + return user.getProjectsFilterLabel(); + } + + @Override + public Integer getProjectsFilterPeriodSince() { + return user.getProjectsFilterPeriodSince(); + } + + @Override + public void setProjectsFilterPeriodSince(Integer period) { + user.setProjectsFilterPeriodSince(period); + } + + @Override + public Integer getProjectsFilterPeriodTo() { + return user.getProjectsFilterPeriodTo(); + } + + @Override + public void setProjectsFilterPeriodTo(Integer period) { + user.setProjectsFilterPeriodTo(period); + } + + @Override + public Integer getResourcesLoadFilterPeriodSince() { + return user.getResourcesLoadFilterPeriodSince(); + } + + @Override + public void setResourcesLoadFilterPeriodSince(Integer period) { + user.setResourcesLoadFilterPeriodSince(period); + } + + @Override + public Integer getResourcesLoadFilterPeriodTo() { + return user.getResourcesLoadFilterPeriodTo(); + } + + @Override + public void setResourcesLoadFilterPeriodTo(Integer period) { + user.setResourcesLoadFilterPeriodTo(period); + } + } From bc20df68ac1be16b46304162456fad26e0658f08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lorenzo=20Tilve=20=C3=81lvaro?= Date: Mon, 28 Jan 2013 11:13:46 +0100 Subject: [PATCH 006/106] Adapted dates filter to user preferences It will substract N months to the current date and use it as the start date for the compan view filtering, being N the 'projects since' parameter on the user settings tab. Similarly, it will add M months to the current date and use it as the filtering end date with the specified parameter. FEA: ItEr77S15FilteringEnhancements --- .../planner/company/CompanyPlanningModel.java | 66 +++++++++++++++---- 1 file changed, 52 insertions(+), 14 deletions(-) diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/planner/company/CompanyPlanningModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/planner/company/CompanyPlanningModel.java index fbe3552c6..3b5df0882 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/planner/company/CompanyPlanningModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/planner/company/CompanyPlanningModel.java @@ -716,23 +716,61 @@ public class CompanyPlanningModel implements ICompanyPlanningModel { @Override @Transactional(readOnly = true) public IPredicate getDefaultPredicate(Boolean includeOrderElements) { - if (currentScenario == null) { - currentScenario = scenarioManager.getCurrent(); - } - List list = orderDAO.getOrdersByReadAuthorizationByScenario( - SecurityUtils.getSessionUserLoginName(), currentScenario); Date startDate = null; Date endDate = null; - for (Order each : list) { - each.useSchedulingDataFor(currentScenario, false); - TaskGroup associatedTaskElement = each.getAssociatedTaskElement(); - if (associatedTaskElement != null - && STATUS_VISUALIZED.contains(each.getState())) { - startDate = Collections.min(notNull(startDate, each.getInitDate(), - associatedTaskElement.getStartDate())); - endDate = Collections.max(notNull(endDate, each.getDeadline(), - associatedTaskElement.getEndDate())); + + boolean calculateStartDate = true; + boolean calculateEndDate = true; + + User user; + try { + user = this.userDAO.findByLoginName(SecurityUtils + .getSessionUserLoginName()); + } catch (InstanceNotFoundException e) { + throw new RuntimeException(e); + } + + // Calculate filter based on user preferences + if (user != null) { + if (user.getProjectsFilterPeriodSince() != null) { + startDate = new LocalDate() + .minusMonths(user.getProjectsFilterPeriodSince()) + .toDateTimeAtStartOfDay().toDate(); + calculateStartDate = false; + } + if (user.getProjectsFilterPeriodTo() != null) { + endDate = new LocalDate() + .plusMonths(user.getProjectsFilterPeriodTo()) + .toDateMidnight().toDate(); + calculateEndDate = false; + } + } + + // Filter predicate needs to be calculated based on the projects dates + if ((calculateStartDate) || (calculateEndDate)) { + if (currentScenario == null) { + currentScenario = scenarioManager.getCurrent(); + } + List list = orderDAO.getOrdersByReadAuthorizationByScenario( + SecurityUtils.getSessionUserLoginName(), currentScenario); + for (Order each : list) { + each.useSchedulingDataFor(currentScenario, false); + TaskGroup associatedTaskElement = each + .getAssociatedTaskElement(); + if (associatedTaskElement != null + && STATUS_VISUALIZED.contains(each.getState())) { + if (calculateStartDate) { + startDate = Collections.min(notNull(startDate, + each.getInitDate(), + associatedTaskElement.getStartDate())); + } + if (calculateEndDate) { + endDate = Collections.max(notNull(endDate, + each.getDeadline(), + associatedTaskElement.getEndDate())); + } + } } } filterStartDate = startDate != null ? LocalDate From b16cfdf4a64961c4e12cb3faa3e6f8515441f02d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lorenzo=20Tilve=20=C3=81lvaro?= Date: Mon, 28 Jan 2013 11:25:56 +0100 Subject: [PATCH 007/106] Added onchange listeners to company view date filter widgets FEA: ItEr77S15FilteringEnhancements --- libreplan-webapp/src/main/webapp/orders/_orderFilter.zul | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libreplan-webapp/src/main/webapp/orders/_orderFilter.zul b/libreplan-webapp/src/main/webapp/orders/_orderFilter.zul index 651929c3e..caf436a29 100644 --- a/libreplan-webapp/src/main/webapp/orders/_orderFilter.zul +++ b/libreplan-webapp/src/main/webapp/orders/_orderFilter.zul @@ -25,9 +25,11 @@ From dcd7cd8c09e8aff722a73d4565d61a2b54984db6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lorenzo=20Tilve=20=C3=81lvaro?= Date: Wed, 30 Jan 2013 17:13:38 +0100 Subject: [PATCH 014/106] Refactored to OrderStatusEnum static method to get default visible project status --- .../business/orders/entities/OrderStatusEnum.java | 10 ++++++++++ .../web/planner/company/CompanyPlanningModel.java | 7 ++----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/libreplan-business/src/main/java/org/libreplan/business/orders/entities/OrderStatusEnum.java b/libreplan-business/src/main/java/org/libreplan/business/orders/entities/OrderStatusEnum.java index 814e817bd..9f9386ef1 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/orders/entities/OrderStatusEnum.java +++ b/libreplan-business/src/main/java/org/libreplan/business/orders/entities/OrderStatusEnum.java @@ -23,6 +23,8 @@ package org.libreplan.business.orders.entities; import static org.libreplan.business.i18n.I18nHelper._; +import java.util.EnumSet; + /** * @author Susana Montes Pedreiera @@ -53,4 +55,12 @@ public enum OrderStatusEnum { public static OrderStatusEnum getDefault() { return PRE_SALES; } + + public static EnumSet getVisibleStatus() { + return EnumSet.of(OrderStatusEnum.PRE_SALES, OrderStatusEnum.OFFERED, + OrderStatusEnum.OUTSOURCED, OrderStatusEnum.ACCEPTED, + OrderStatusEnum.STARTED, OrderStatusEnum.ON_HOLD, + OrderStatusEnum.FINISHED); + } + } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/planner/company/CompanyPlanningModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/planner/company/CompanyPlanningModel.java index dd3b2a234..db9507225 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/planner/company/CompanyPlanningModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/planner/company/CompanyPlanningModel.java @@ -160,11 +160,8 @@ public class CompanyPlanningModel implements ICompanyPlanningModel { private LocalDate filterFinishDate; // All the status but CANCELLED and STORED - private static final EnumSet STATUS_VISUALIZED = EnumSet - .of(OrderStatusEnum.PRE_SALES, OrderStatusEnum.OFFERED, - OrderStatusEnum.OUTSOURCED, OrderStatusEnum.ACCEPTED, - OrderStatusEnum.STARTED, OrderStatusEnum.ON_HOLD, - OrderStatusEnum.FINISHED); + private static final EnumSet STATUS_VISUALIZED = OrderStatusEnum + .getVisibleStatus(); public void setPlanningControllerEntryPoints( MultipleTabsPlannerController entryPoints) { From 13a4473d3ff1ada66dd51dba2aa66c8b774383d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lorenzo=20Tilve=20=C3=81lvaro?= Date: Thu, 31 Jan 2013 09:51:25 +0100 Subject: [PATCH 015/106] Created Criterion configuration bandbox on user settings to filter Resources Load results FEA: ItEr77S15FilteringEnhancements --- .../business/users/entities/User.java | 11 +++++++ .../web/users/settings/ISettingsModel.java | 7 ++++ .../users/settings/SettingsController.java | 25 ++++++++++++++ .../web/users/settings/SettingsModel.java | 33 +++++++++++++++++++ .../src/main/webapp/myaccount/settings.zul | 8 +++-- 5 files changed, 82 insertions(+), 2 deletions(-) diff --git a/libreplan-business/src/main/java/org/libreplan/business/users/entities/User.java b/libreplan-business/src/main/java/org/libreplan/business/users/entities/User.java index 1f5a5b425..6580bf3e9 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/users/entities/User.java +++ b/libreplan-business/src/main/java/org/libreplan/business/users/entities/User.java @@ -34,6 +34,7 @@ import org.libreplan.business.common.IHumanIdentifiable; import org.libreplan.business.common.Registry; import org.libreplan.business.common.exceptions.InstanceNotFoundException; import org.libreplan.business.labels.entities.Label; +import org.libreplan.business.resources.entities.Criterion; import org.libreplan.business.resources.entities.Worker; import org.libreplan.business.scenarios.entities.Scenario; import org.libreplan.business.settings.entities.Language; @@ -89,6 +90,8 @@ public class User extends BaseEntity implements IHumanIdentifiable{ private Integer projectsFilterPeriodTo; + private Criterion resourcesLoadFilterCriterion = null; + private Integer resourcesLoadFilterPeriodSince; private Integer resourcesLoadFilterPeriodTo; @@ -393,6 +396,14 @@ public class User extends BaseEntity implements IHumanIdentifiable{ projectsFilterLabel = label; } + public Criterion getResourcesLoadFilterCriterion() { + return resourcesLoadFilterCriterion; + } + + public void setResourcesLoadFilterCriterion(Criterion criterion) { + resourcesLoadFilterCriterion = criterion; + } + public Integer getProjectsFilterPeriodSince() { return projectsFilterPeriodSince; } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/users/settings/ISettingsModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/users/settings/ISettingsModel.java index 5927af94a..344c27eef 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/users/settings/ISettingsModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/users/settings/ISettingsModel.java @@ -23,6 +23,7 @@ import java.util.List; import org.libreplan.business.common.exceptions.ValidationException; import org.libreplan.business.labels.entities.Label; +import org.libreplan.business.resources.entities.Criterion; import org.libreplan.business.settings.entities.Language; @@ -94,4 +95,10 @@ public interface ISettingsModel { void setProjectsFilterLabel(Label label); + List getAllCriteria(); + + Criterion getResourcesLoadFilterCriterion(); + + void setResourcesLoadFilterCriterion(Criterion criterion); + } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/users/settings/SettingsController.java b/libreplan-webapp/src/main/java/org/libreplan/web/users/settings/SettingsController.java index f85021ac3..e94283641 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/users/settings/SettingsController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/users/settings/SettingsController.java @@ -29,6 +29,7 @@ import java.util.List; import org.libreplan.business.common.exceptions.ValidationException; import org.libreplan.business.labels.entities.Label; +import org.libreplan.business.resources.entities.Criterion; import org.libreplan.business.settings.entities.Language; import org.libreplan.web.common.IMessagesForUser; import org.libreplan.web.common.Level; @@ -63,6 +64,8 @@ public class SettingsController extends GenericForwardComposer { private BandboxSearch projectsFilterLabelBandboxSearch; + private BandboxSearch resourcesLoadFilterCriterionBandboxSearch; + public static ListitemRenderer languagesRenderer = new ListitemRenderer() { @Override public void render(org.zkoss.zul.Listitem item, Object data) @@ -91,6 +94,16 @@ public class SettingsController extends GenericForwardComposer { setProjectsFilterLabel((Label) selectedItem.getValue()); } }); + resourcesLoadFilterCriterionBandboxSearch.setListboxEventListener( + Events.ON_SELECT, new EventListener() { + @Override + public void onEvent(Event event) { + Listitem selectedItem = (Listitem) ((SelectEvent) event) + .getSelectedItems().iterator().next(); + setResourcesLoadFilterCriterion((Criterion) selectedItem + .getValue()); + } + }); } public List getLanguages() { @@ -240,4 +253,16 @@ public class SettingsController extends GenericForwardComposer { settingsModel.setProjectsFilterLabel(label); } + public List getAllCriteria() { + return settingsModel.getAllCriteria(); + } + + public Criterion getResourcesLoadFilterCriterion() { + return settingsModel.getResourcesLoadFilterCriterion(); + } + + public void setResourcesLoadFilterCriterion(Criterion criterion) { + settingsModel.setResourcesLoadFilterCriterion(criterion); + } + } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/users/settings/SettingsModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/users/settings/SettingsModel.java index 7bc1655b9..8f1ec9bd2 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/users/settings/SettingsModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/users/settings/SettingsModel.java @@ -28,6 +28,8 @@ import org.libreplan.business.common.exceptions.InstanceNotFoundException; import org.libreplan.business.common.exceptions.ValidationException; import org.libreplan.business.labels.daos.ILabelDAO; import org.libreplan.business.labels.entities.Label; +import org.libreplan.business.resources.daos.ICriterionDAO; +import org.libreplan.business.resources.entities.Criterion; import org.libreplan.business.settings.entities.Language; import org.libreplan.business.users.daos.IUserDAO; import org.libreplan.business.users.entities.Profile; @@ -58,10 +60,15 @@ public class SettingsModel implements ISettingsModel { @Autowired private ILabelDAO labelsDAO; + @Autowired + private ICriterionDAO criterionDAO; + private User user; private List From 08ec2695f3fe19480fbb2b7db5b225ce9e263d39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lorenzo=20Tilve=20=C3=81lvaro?= Date: Thu, 31 Jan 2013 15:54:31 +0100 Subject: [PATCH 017/106] Clear filter label or criterion settings if they have been removed FEA: ItEr77S15FilteringEnhancements --- .../web/users/settings/SettingsController.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/users/settings/SettingsController.java b/libreplan-webapp/src/main/java/org/libreplan/web/users/settings/SettingsController.java index e94283641..359e56322 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/users/settings/SettingsController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/users/settings/SettingsController.java @@ -125,6 +125,7 @@ public class SettingsController extends GenericForwardComposer { public boolean save() { try { + checkEmptyBandboxes(); settingsModel.confirmSave(); messages.showMessage(Level.INFO, _("Settings saved")); return true; @@ -134,6 +135,15 @@ public class SettingsController extends GenericForwardComposer { return false; } + private void checkEmptyBandboxes() { + if (projectsFilterLabelBandboxSearch.getSelectedElement() == null) { + settingsModel.setProjectsFilterLabel(null); + } + if (resourcesLoadFilterCriterionBandboxSearch.getSelectedElement() == null) { + settingsModel.setResourcesLoadFilterCriterion(null); + } + } + public void setSelectedLanguage(Language language) { settingsModel.setApplicationLanguage(language); } From 0fe7ace58c7f9259c2fd899077c968a9faf0d34f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lorenzo=20Tilve=20=C3=81lvaro?= Date: Thu, 31 Jan 2013 18:41:06 +0100 Subject: [PATCH 018/106] Inserted into company view filter the specified label user setting FEA: ItEr77S15FilteringEnhancements --- .../company/CompanyPlanningController.java | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/planner/company/CompanyPlanningController.java b/libreplan-webapp/src/main/java/org/libreplan/web/planner/company/CompanyPlanningController.java index e5f38f61f..82133d1ac 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/planner/company/CompanyPlanningController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/planner/company/CompanyPlanningController.java @@ -31,10 +31,16 @@ import java.util.Map; import org.apache.commons.lang.Validate; import org.libreplan.business.common.entities.ProgressType; +import org.libreplan.business.common.exceptions.InstanceNotFoundException; import org.libreplan.business.planner.entities.TaskElement; +import org.libreplan.business.users.daos.IUserDAO; +import org.libreplan.business.users.entities.User; import org.libreplan.business.users.entities.UserRole; import org.libreplan.web.common.components.bandboxsearch.BandboxMultipleSearch; import org.libreplan.web.common.components.finders.FilterPair; +import org.libreplan.web.common.components.finders.IFilterEnum; +import org.libreplan.web.common.components.finders.OrderFilterEnum; +import org.libreplan.web.common.components.finders.TaskGroupFilterEnum; import org.libreplan.web.planner.TaskGroupPredicate; import org.libreplan.web.planner.tabs.MultipleTabsPlannerController; import org.libreplan.web.security.SecurityUtils; @@ -76,6 +82,9 @@ public class CompanyPlanningController implements Composer { @Autowired private ICompanyPlanningModel model; + @Autowired + private IUserDAO userDAO; + private List> additional = new ArrayList>(); private Planner planner; @@ -136,6 +145,8 @@ public class CompanyPlanningController implements Composer { bdFilters = (BandboxMultipleSearch) filterComponent .getFellow("bdFilters"); bdFilters.setFinder("taskGroupsMultipleFiltersFinder"); + loadPredefinedBandboxFilter(); + checkIncludeOrderElements = (Checkbox) filterComponent .getFellow("checkIncludeOrderElements"); filterComponent.setVisible(true); @@ -144,6 +155,24 @@ public class CompanyPlanningController implements Composer { } + private void loadPredefinedBandboxFilter() { + User user; + try { + user = this.userDAO.findByLoginName(SecurityUtils + .getSessionUserLoginName()); + } catch (InstanceNotFoundException e) { + throw new RuntimeException(e); + } + + // Calculate filter based on user preferences + if ((user != null) && (user.getProjectsFilterLabel() != null)) { + bdFilters.addSelectedElement(new FilterPair( + TaskGroupFilterEnum.Label, user.getProjectsFilterLabel() + .getCompleteName(), user + .getProjectsFilterLabel())); + } + } + /** * Checks the creation permissions of the current user and enables/disables * the create buttons accordingly. @@ -305,6 +334,7 @@ public class CompanyPlanningController implements Composer { filterFinishDate.setValue(model.getFilterFinishDate(). toDateMidnight().toDate()); } + return predicate; } return new TaskGroupPredicate(listFilters, startDate, finishDate, From 82d78afec48891211edf617482d7fecc776d724b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lorenzo=20Tilve=20=C3=81lvaro?= Date: Thu, 31 Jan 2013 19:48:21 +0100 Subject: [PATCH 019/106] Moved method to generate label name and type pattern for finders to Label class FEA: ItEr77S15FilteringEnhancements --- .../java/org/libreplan/business/labels/entities/Label.java | 4 ++++ .../finders/OrderElementsMultipleFiltersFinder.java | 4 ++-- .../components/finders/OrdersMultipleFiltersFinder.java | 4 ++-- .../components/finders/TaskElementsMultipleFiltersFinder.java | 4 ++-- .../components/finders/TaskGroupsMultipleFiltersFinder.java | 4 ++-- .../web/planner/company/CompanyPlanningController.java | 2 +- 6 files changed, 13 insertions(+), 9 deletions(-) diff --git a/libreplan-business/src/main/java/org/libreplan/business/labels/entities/Label.java b/libreplan-business/src/main/java/org/libreplan/business/labels/entities/Label.java index d68a2aa7e..9cb5886e1 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/labels/entities/Label.java +++ b/libreplan-business/src/main/java/org/libreplan/business/labels/entities/Label.java @@ -132,4 +132,8 @@ public class Label extends IntegrationEntity implements Comparable