From c0b9dcdec542f7956244a6e1a5538d106690a81c Mon Sep 17 00:00:00 2001 From: Vova Perebykivskiy Date: Tue, 22 Dec 2015 17:51:39 +0200 Subject: [PATCH] i18n. Add Limits functionality. Changes to INSTALL and HACKING documents. (cherry picked from commit 0a0af1e9cded313ac4d5293d16cf834346287ccb) --- HACKING.rst | 19 ++--- INSTALL.rst | 4 +- .../business/common/daos/ILimitsDAO.java | 3 +- .../business/common/daos/LimitsDAO.java | 13 +--- .../business/common/entities/Limits.java | 6 +- .../business/resources/daos/IMachineDAO.java | 6 -- .../business/resources/daos/IResourceDAO.java | 2 + .../business/resources/daos/IWorkerDAO.java | 3 - .../business/resources/daos/MachineDAO.java | 6 -- .../business/resources/daos/ResourceDAO.java | 6 ++ .../business/resources/daos/WorkerDAO.java | 7 -- .../src/main/resources/db.changelog-1.4.xml | 46 +++++++++--- .../libreplan/web/common/ILimitsModel.java | 3 +- .../org/libreplan/web/common/LimitsModel.java | 10 +-- .../web/resources/machine/IMachineModel.java | 4 - .../machine/MachineCRUDController.java | 38 ++++++---- .../web/resources/machine/MachineModel.java | 9 --- .../web/resources/worker/IWorkerModel.java | 4 - .../worker/WorkerCRUDController.java | 73 ++++++++++--------- .../web/resources/worker/WorkerModel.java | 7 -- .../web/users/UserCRUDController.java | 39 +++++----- .../src/main/resources/i18n/keys.pot | 11 ++- 22 files changed, 153 insertions(+), 166 deletions(-) diff --git a/HACKING.rst b/HACKING.rst index 082212cb7..f66b75f69 100644 --- a/HACKING.rst +++ b/HACKING.rst @@ -228,8 +228,6 @@ Microsoft Windows # Copy downloaded *.jar file to JAVA_HOME location: (e.g. C:\Program Files\Java\jdk1.7.0_80\jre\lib\ext) # Put downloaded *.jar file to Tomcat lib location: (e.g. C:\Program Files\Apache Software Foundation\Tomcat 6.0\lib) -* Download latest ``.war`` file from SourceForge.net (for PostgreSQL) and rename it to libreplan.war:: - # http://sourceforge.net/projects/libreplan/files/LibrePlan/ * Create database:: @@ -266,15 +264,12 @@ Microsoft Windows GRANT ALL PRIVILEGES ON DATABASE libreplan TO libreplan; -* Restore PostgreSQL dump - scripts/database/postgresql_1.4.1.backup:: - * Create an Environment Variable JAVA_HOME # You need to set it to your JDK installed directory * Configure Apache Tomcat Server - # Put your libreplan.war file to Apache Tomcat webapps folder (e.g. C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\) # Go to (e.g. C:\Program Files\Apache Software Foundation\Tomcat 6.0\conf\Catalina\localhost\) and create there libreplan.xml file with this lines of code: @@ -288,13 +283,7 @@ Microsoft Windows url="jdbc:postgresql://localhost/libreplan" /> -* Start Apache Tomcat server - - # Possible location: C:\Program Files\Apache Software Foundation\Tomcat 6.0\bin\Tomcat6.exe - -* Go to http://localhost:8080/libreplan ======= -* Restore PostgreSQL dump - scripts/database/postgresql_1.4.1.backup * Download source code:: @@ -316,8 +305,12 @@ Microsoft Windows * Launch application:: - # cd libreplan-webapp - # mvn jetty:run + * Get *.war file from project folder (e.g ../libreplan/libreplan-webapp/target/libreplan-webapp.war) + * Rename it to libreplan.war + * Put your libreplan.war file to Apache Tomcat webapps folder (e.g. C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\) + * Start Apache Tomcat server + + # Possible location: C:\Program Files\Apache Software Foundation\Tomcat 6.0\bin\Tomcat6.exe * Go to http://localhost:8080/libreplan-webapp/ diff --git a/INSTALL.rst b/INSTALL.rst index ab8a3d74b..8e14342fb 100644 --- a/INSTALL.rst +++ b/INSTALL.rst @@ -326,7 +326,7 @@ Microsoft Windows Instructions: -* Download and install latest Java Runtime Environment 7u79 (JRE7u79):: +* Download and install latest Java Runtime Environment 7u80 (JRE7u79):: # http://www.oracle.com/technetwork/java/javase/downloads/jre7-downloads-1880261.html @@ -367,7 +367,7 @@ Instructions: ON ALL TABLES IN SCHEMA public TO libreplan; -* Restore PostgreSQL dump - scripts/database/postgresql_1.4.1.backup:: +* Restore PostgreSQL / MySQL dump:: * Create an Environment Variable JRE_HOME diff --git a/libreplan-business/src/main/java/org/libreplan/business/common/daos/ILimitsDAO.java b/libreplan-business/src/main/java/org/libreplan/business/common/daos/ILimitsDAO.java index f6689d3a4..e95b248ea 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/common/daos/ILimitsDAO.java +++ b/libreplan-business/src/main/java/org/libreplan/business/common/daos/ILimitsDAO.java @@ -35,6 +35,5 @@ public interface ILimitsDAO extends IGenericDAO { List getAll(); Limits getUsersType(); - Limits getWorkersType(); - Limits getMachinesType(); + Limits getResourcesType(); } diff --git a/libreplan-business/src/main/java/org/libreplan/business/common/daos/LimitsDAO.java b/libreplan-business/src/main/java/org/libreplan/business/common/daos/LimitsDAO.java index e51dd983a..87a7c7565 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/common/daos/LimitsDAO.java +++ b/libreplan-business/src/main/java/org/libreplan/business/common/daos/LimitsDAO.java @@ -49,19 +49,10 @@ public class LimitsDAO extends GenericDAOHibernate implements ILim } @Override - public Limits getWorkersType() { + public Limits getResourcesType() { List list = list(Limits.class); for (Limits item : list) - if (item.getType().equals("workers")) return item; + if (item.getType().equals("workers+machines")) return item; return null; } - - @Override - public Limits getMachinesType() { - List list = list(Limits.class); - for (Limits item : list) - if (item.getType().equals("machines")) return item; - return null; - } - } diff --git a/libreplan-business/src/main/java/org/libreplan/business/common/entities/Limits.java b/libreplan-business/src/main/java/org/libreplan/business/common/entities/Limits.java index b2d810d18..1b2a041d1 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/common/entities/Limits.java +++ b/libreplan-business/src/main/java/org/libreplan/business/common/entities/Limits.java @@ -34,7 +34,7 @@ public class Limits extends BaseEntity{ private String type; - private Long value; + private Integer value; public String getType() { @@ -44,10 +44,10 @@ public class Limits extends BaseEntity{ this.type = type; } - public Long getValue() { + public Integer getValue() { return value; } - public void setValue(Long value) { + public void setValue(Integer value) { this.value = value; } } diff --git a/libreplan-business/src/main/java/org/libreplan/business/resources/daos/IMachineDAO.java b/libreplan-business/src/main/java/org/libreplan/business/resources/daos/IMachineDAO.java index c10f03104..02a74dd4d 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/resources/daos/IMachineDAO.java +++ b/libreplan-business/src/main/java/org/libreplan/business/resources/daos/IMachineDAO.java @@ -33,7 +33,6 @@ import org.libreplan.business.resources.entities.Machine; * @author Diego Pino Garcia * @author Javier Moran Rua * @author Fernando Bellas Permuy - * @author Vova Perebykivskiy */ public interface IMachineDAO extends IIntegrationEntityDAO { @@ -83,9 +82,4 @@ public interface IMachineDAO extends IIntegrationEntityDAO { * code as the one passed as parameter */ boolean existsMachineWithCodeInAnotherTransaction(String code); - - /** - * Return a number of rows in database table - */ - Number getRowCount(); } diff --git a/libreplan-business/src/main/java/org/libreplan/business/resources/daos/IResourceDAO.java b/libreplan-business/src/main/java/org/libreplan/business/resources/daos/IResourceDAO.java index 3b3bf3bfe..9855b15ac 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/resources/daos/IResourceDAO.java +++ b/libreplan-business/src/main/java/org/libreplan/business/resources/daos/IResourceDAO.java @@ -120,4 +120,6 @@ public interface IResourceDAO extends IIntegrationEntityDAO { */ List getWorkingHoursPerWorker(Integer year, Integer month); + Number getRowCount(); + } diff --git a/libreplan-business/src/main/java/org/libreplan/business/resources/daos/IWorkerDAO.java b/libreplan-business/src/main/java/org/libreplan/business/resources/daos/IWorkerDAO.java index 299fe28bc..913ed8702 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/resources/daos/IWorkerDAO.java +++ b/libreplan-business/src/main/java/org/libreplan/business/resources/daos/IWorkerDAO.java @@ -36,7 +36,6 @@ import org.springframework.transaction.annotation.Transactional; * @author Fernando Bellas Permuy * @author Manuel Rego Casasnovas * @author Diego Pino Garcia - * @author Vova Perebykivskiy */ public interface IWorkerDAO extends IIntegrationEntityDAO { @@ -127,6 +126,4 @@ public interface IWorkerDAO extends IIntegrationEntityDAO { * Return the list of {@link Worker Workers} bound to any {@link User}. */ List getBound(); - - Number getRowCount(); } diff --git a/libreplan-business/src/main/java/org/libreplan/business/resources/daos/MachineDAO.java b/libreplan-business/src/main/java/org/libreplan/business/resources/daos/MachineDAO.java index a32c7d3c0..062c859a8 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/resources/daos/MachineDAO.java +++ b/libreplan-business/src/main/java/org/libreplan/business/resources/daos/MachineDAO.java @@ -41,7 +41,6 @@ import org.springframework.transaction.annotation.Transactional; * @author Diego Pino Garcia * @author Javier Moran Rua * @author Fernando Bellas Permuy - * @author Vova Perebykivskiy */ @Repository @Scope(BeanDefinition.SCOPE_SINGLETON) @@ -84,11 +83,6 @@ public class MachineDAO extends IntegrationEntityDAO } } - @Override - public Number getRowCount() { - return (Number) getSession().createCriteria(Machine.class).setProjection(Projections.rowCount()).uniqueResult(); - } - @Override @Transactional(readOnly= true, propagation = Propagation.REQUIRES_NEW) public Machine findUniqueByCodeInAnotherTransaction(String code) diff --git a/libreplan-business/src/main/java/org/libreplan/business/resources/daos/ResourceDAO.java b/libreplan-business/src/main/java/org/libreplan/business/resources/daos/ResourceDAO.java index c4e155095..018040c33 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/resources/daos/ResourceDAO.java +++ b/libreplan-business/src/main/java/org/libreplan/business/resources/daos/ResourceDAO.java @@ -27,6 +27,7 @@ import java.util.Iterator; import java.util.List; import org.hibernate.Query; +import org.hibernate.criterion.Projections; import org.hibernate.criterion.Restrictions; import org.libreplan.business.common.daos.IntegrationEntityDAO; import org.libreplan.business.labels.entities.Label; @@ -248,6 +249,11 @@ public class ResourceDAO extends IntegrationEntityDAO implements return result; } + @Override + public Number getRowCount() { + return (Number) getSession().createCriteria(Resource.class).setProjection(Projections.rowCount()).uniqueResult(); + } + private List toDTO(List rows) { List result = new ArrayList(); diff --git a/libreplan-business/src/main/java/org/libreplan/business/resources/daos/WorkerDAO.java b/libreplan-business/src/main/java/org/libreplan/business/resources/daos/WorkerDAO.java index ba3f15074..341fb01e6 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/resources/daos/WorkerDAO.java +++ b/libreplan-business/src/main/java/org/libreplan/business/resources/daos/WorkerDAO.java @@ -44,7 +44,6 @@ import org.springframework.transaction.annotation.Transactional; * @author Fernando Bellas Permuy * @author Manuel Rego Casasnovas * @author Diego Pino Garcia - * @author Vova Perebykivskiy */ @Repository @Scope(BeanDefinition.SCOPE_SINGLETON) @@ -199,10 +198,4 @@ public class WorkerDAO extends IntegrationEntityDAO criteria.add(Restrictions.isNotNull("user")); return criteria.list(); } - - @Override - public Number getRowCount() { - return (Number) getSession().createCriteria(Worker.class).setProjection(Projections.rowCount()).uniqueResult(); - } - } \ No newline at end of file diff --git a/libreplan-business/src/main/resources/db.changelog-1.4.xml b/libreplan-business/src/main/resources/db.changelog-1.4.xml index 6535a3098..a92cccb40 100644 --- a/libreplan-business/src/main/resources/db.changelog-1.4.xml +++ b/libreplan-business/src/main/resources/db.changelog-1.4.xml @@ -1,7 +1,7 @@ @@ -14,9 +14,9 @@ Add foreign key constraint to new id_cost_category column on cost_category id + baseTableName="criterion" baseColumnNames="id_cost_category" + referencedTableName="cost_category" referencedColumnNames="id" + onDelete="SET NULL" /> @@ -25,11 +25,11 @@ + defaultValueBoolean="FALSE" /> + columnName="automatic_budget_enabled" + defaultNullValue="FALSE" + columnDataType="BOOLEAN" /> @@ -41,8 +41,32 @@ + baseTableName="configuration" baseColumnNames="automatic_budget_type_of_work_hours" + referencedTableName="type_of_work_hours" referencedColumnNames="id" /> + + + + + + + + + + + + + + + + INSERT INTO limits VALUES(0, 'users', 5); + INSERT INTO limits VALUES(1, 'workers+machines', 10); + diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/common/ILimitsModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/common/ILimitsModel.java index 8b525cff0..36b35f8cb 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/common/ILimitsModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/common/ILimitsModel.java @@ -34,6 +34,5 @@ public interface ILimitsModel { List getAll(); Limits getUsersType(); - Limits getWorkersType(); - Limits getMachinesType(); + Limits getResourcesType(); } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/common/LimitsModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/common/LimitsModel.java index 4eb8666b7..5ee7c81a4 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/common/LimitsModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/common/LimitsModel.java @@ -58,13 +58,7 @@ public class LimitsModel implements ILimitsModel { @Override @Transactional(readOnly = true) - public Limits getWorkersType() { - return limitsDAO.getWorkersType(); - } - - @Override - @Transactional(readOnly = true) - public Limits getMachinesType() { - return limitsDAO.getMachinesType(); + public Limits getResourcesType() { + return limitsDAO.getResourcesType(); } } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/resources/machine/IMachineModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/resources/machine/IMachineModel.java index 7be640035..9ad7e649d 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/resources/machine/IMachineModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/resources/machine/IMachineModel.java @@ -63,7 +63,6 @@ import org.libreplan.web.resources.search.ResourcePredicate; * * @author Diego Pino Garcia * @author Javier Moran Rua - * @author Vova Perebykivskiy */ public interface IMachineModel extends IIntegrationEntityModel { // Initial conversational steps @@ -108,7 +107,4 @@ public interface IMachineModel extends IIntegrationEntityModel { void confirmRemove(Machine machine) throws InstanceNotFoundException; void removeCalendar(); - - Number getRowCount(); - } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/resources/machine/MachineCRUDController.java b/libreplan-webapp/src/main/java/org/libreplan/web/resources/machine/MachineCRUDController.java index 2c29bde9b..6860100b3 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/resources/machine/MachineCRUDController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/resources/machine/MachineCRUDController.java @@ -34,6 +34,7 @@ import org.libreplan.business.calendars.entities.ResourceCalendar; import org.libreplan.business.common.entities.Limits; import org.libreplan.business.common.exceptions.InstanceNotFoundException; import org.libreplan.business.common.exceptions.ValidationException; +import org.libreplan.business.resources.daos.IResourceDAO; import org.libreplan.business.resources.entities.Machine; import org.libreplan.web.calendars.BaseCalendarEditionController; import org.libreplan.web.calendars.IBaseCalendarModel; @@ -48,6 +49,7 @@ import org.libreplan.web.costcategories.ResourcesCostCategoryAssignmentControlle import org.libreplan.web.resources.search.ResourcePredicate; import org.libreplan.web.resources.worker.CriterionsController; import org.libreplan.web.resources.worker.CriterionsMachineController; +import org.libreplan.web.resources.worker.IWorkerModel; import org.libreplan.web.resources.worker.WorkerCRUDController.LimitingResourceEnum; import org.springframework.beans.factory.annotation.Autowired; import org.zkoss.zk.ui.Component; @@ -88,6 +90,9 @@ public class MachineCRUDController extends BaseCRUDController { @Autowired private IMachineModel machineModel; + @Autowired + private IResourceDAO resourceDAO; + private Component configurationUnits; private CriterionsMachineController criterionsController; @@ -157,9 +162,9 @@ public class MachineCRUDController extends BaseCRUDController { private void setupResourcesCostCategoryAssignmentController(Component comp) { Component costCategoryAssignmentContainer = - editWindow.getFellowIfAny("costCategoryAssignmentContainer"); + editWindow.getFellowIfAny("costCategoryAssignmentContainer"); resourcesCostCategoryAssignmentController = (ResourcesCostCategoryAssignmentController) - costCategoryAssignmentContainer.getVariable("assignmentController", true); + costCategoryAssignmentContainer.getVariable("assignmentController", true); } @Override @@ -455,11 +460,11 @@ public class MachineCRUDController extends BaseCRUDController { LocalDate finishDate = null; if (filterStartDate.getValue() != null) { startDate = LocalDate.fromDateFields(filterStartDate - .getValue()); + .getValue()); } if (filterFinishDate.getValue() != null) { finishDate = LocalDate.fromDateFields(filterFinishDate - .getValue()); + .getValue()); } final Listitem item = filterLimitingResource.getSelectedItem(); @@ -496,7 +501,7 @@ public class MachineCRUDController extends BaseCRUDController { private void setupFilterLimitingResourceListbox() { for(LimitingResourceEnum resourceEnum : - LimitingResourceEnum.getLimitingResourceFilterOptionList()) { + LimitingResourceEnum.getLimitingResourceFilterOptionList()) { Listitem item = new Listitem(); item.setParent(filterLimitingResource); item.setValue(resourceEnum); @@ -574,7 +579,7 @@ public class MachineCRUDController extends BaseCRUDController { row.addEventListener(Events.ON_CLICK, new EventListener() { @Override - public void onEvent(Event event) { + public void onEvent(Event event) { goToEditForm(machine); } }); @@ -620,23 +625,26 @@ public class MachineCRUDController extends BaseCRUDController { } public boolean isCreateButtonDisabled(){ - Limits machinesTypeLimit = limitsModel.getMachinesType(); - Long machinesCount = (Long) machineModel.getRowCount(); - if ( machinesTypeLimit != null ) - if ( machinesCount >= machinesTypeLimit.getValue() ) + Limits resourcesTypeLimit = limitsModel.getResourcesType(); + Integer resourcesCount = (Integer) resourceDAO.getRowCount(); + + if ( resourcesTypeLimit != null ) + if ( resourcesCount >= resourcesTypeLimit.getValue() ) return true; return false; } public String getShowCreateFormLabel(){ - Limits machinesTypeLimit = limitsModel.getMachinesType(); - Long machinesCount = (Long) machineModel.getRowCount(); - if ( machinesTypeLimit != null ) - if ( machinesCount >= machinesTypeLimit.getValue() ) + Limits resourcesTypeLimit = limitsModel.getResourcesType(); + Integer resourcesCount = (Integer) resourceDAO.getRowCount(); + + int resourcesLeft = resourcesTypeLimit.getValue() - resourcesCount; + if ( resourcesTypeLimit != null ) + if ( resourcesCount >= resourcesTypeLimit.getValue() ) return _("Machines limit reached"); - return _("Create"); + return _("Create") + " ( " + resourcesLeft + " " + _("left") + " )"; } } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/resources/machine/MachineModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/resources/machine/MachineModel.java index 71e2caf6e..3b11c5bb0 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/resources/machine/MachineModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/resources/machine/MachineModel.java @@ -70,7 +70,6 @@ import org.springframework.transaction.annotation.Transactional; /** * @author Diego Pino Garcia * @author Javier Moran Rua - * @author Vova Perebykivskiy */ @Service @Scope(BeanDefinition.SCOPE_PROTOTYPE) @@ -403,12 +402,4 @@ public class MachineModel extends IntegrationEntityModel implements calendarToRemove = machine.getCalendar(); machine.setCalendar(null); } - - @Override - @Transactional(readOnly = true) - public Number getRowCount() { - return machineDAO.getRowCount(); - } - - } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/resources/worker/IWorkerModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/resources/worker/IWorkerModel.java index 8f657ba27..ab11c7be7 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/resources/worker/IWorkerModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/resources/worker/IWorkerModel.java @@ -74,7 +74,6 @@ import org.libreplan.web.resources.search.ResourcePredicate; * @author Óscar González Fernández * @author Fernando Bellas Permuy * @author Manuel Rego Casasnovas - * @author Vova Perebykivskiy */ public interface IWorkerModel extends IIntegrationEntityModel { @@ -147,7 +146,4 @@ public interface IWorkerModel extends IIntegrationEntityModel { void setBoundUser(User user); User getBoundUserFromDB(Worker worker); - - Number getRowCount(); - } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/resources/worker/WorkerCRUDController.java b/libreplan-webapp/src/main/java/org/libreplan/web/resources/worker/WorkerCRUDController.java index 722db4f45..5a5169343 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/resources/worker/WorkerCRUDController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/resources/worker/WorkerCRUDController.java @@ -38,6 +38,7 @@ import org.libreplan.business.calendars.entities.ResourceCalendar; import org.libreplan.business.common.entities.Limits; import org.libreplan.business.common.exceptions.InstanceNotFoundException; import org.libreplan.business.common.exceptions.ValidationException; +import org.libreplan.business.resources.daos.IResourceDAO; import org.libreplan.business.resources.entities.ResourceType; import org.libreplan.business.resources.entities.VirtualWorker; import org.libreplan.business.resources.entities.Worker; @@ -114,6 +115,9 @@ public class WorkerCRUDController extends GenericForwardComposer implements @Autowired private IWorkerModel workerModel; + @Autowired + private IResourceDAO resourceDAO; + @Resource private IUserCRUDController userCRUD; @@ -207,10 +211,10 @@ public class WorkerCRUDController extends GenericForwardComposer implements } public WorkerCRUDController(Window listWindow, Window editWindow, - Window editCalendarWindow, - IWorkerModel workerModel, - IMessagesForUser messages, - IWorkerCRUDControllerEntryPoints workerCRUD) { + Window editCalendarWindow, + IWorkerModel workerModel, + IMessagesForUser messages, + IWorkerCRUDControllerEntryPoints workerCRUD) { this.listWindow = listWindow; this.editWindow = editWindow; this.workerModel = workerModel; @@ -511,7 +515,7 @@ public class WorkerCRUDController extends GenericForwardComposer implements Radio radio = new Radio(_(option.label)); if (option.equals(UserBindingOption.CREATE_NEW_USER) && !SecurityUtils - .isSuperuserOrUserInRoles(UserRole.ROLE_USER_ACCOUNTS)) { + .isSuperuserOrUserInRoles(UserRole.ROLE_USER_ACCOUNTS)) { radio.setDisabled(true); radio.setTooltiptext(_("You do not have permissions to create new users")); } @@ -531,7 +535,7 @@ public class WorkerCRUDController extends GenericForwardComposer implements this.filterStartDate = (Datebox) listWindow .getFellowIfAny("filterStartDate"); this.filterLimitingResource = (Listbox) listWindow - .getFellowIfAny("filterLimitingResource"); + .getFellowIfAny("filterLimitingResource"); this.bdFilters = (BandboxMultipleSearch) listWindow .getFellowIfAny("bdFilters"); this.txtfilter = (Textbox) listWindow.getFellowIfAny("txtfilter"); @@ -541,9 +545,9 @@ public class WorkerCRUDController extends GenericForwardComposer implements private void setupResourcesCostCategoryAssignmentController(Component comp) { Component costCategoryAssignmentContainer = - editWindow.getFellowIfAny("costCategoryAssignmentContainer"); + editWindow.getFellowIfAny("costCategoryAssignmentContainer"); resourcesCostCategoryAssignmentController = (ResourcesCostCategoryAssignmentController) - costCategoryAssignmentContainer.getVariable("assignmentController", true); + costCategoryAssignmentContainer.getVariable("assignmentController", true); } private void editAsignedCriterions() { @@ -653,7 +657,7 @@ public class WorkerCRUDController extends GenericForwardComposer implements } private Window getCurrentWindow() { - return editWindow; + return editWindow; } private void updateCalendarController() { @@ -919,7 +923,7 @@ public class WorkerCRUDController extends GenericForwardComposer implements private void setupFilterLimitingResourceListbox() { for(LimitingResourceEnum resourceEnum : - LimitingResourceEnum.getLimitingResourceFilterOptionList()) { + LimitingResourceEnum.getLimitingResourceFilterOptionList()) { Listitem item = new Listitem(); item.setParent(filterLimitingResource); item.setValue(resourceEnum); @@ -1017,7 +1021,7 @@ public class WorkerCRUDController extends GenericForwardComposer implements row.addEventListener(Events.ON_CLICK, new EventListener() { @Override - public void onEvent(Event event) { + public void onEvent(Event event) { goToEditForm(worker); } }); @@ -1061,19 +1065,19 @@ public class WorkerCRUDController extends GenericForwardComposer implements String title; switch (state) { - case CREATE: - if (StringUtils.isEmpty(humanId)) { - title = _("Create {0}", entityType); - } else { - title = _("Create {0}: {1}", entityType, humanId); - } - break; - case EDIT: - title = _("Edit {0}: {1}", entityType, humanId); - break; - default: - throw new IllegalStateException( - "You should be in creation or edition mode to use this method"); + case CREATE: + if (StringUtils.isEmpty(humanId)) { + title = _("Create {0}", entityType); + } else { + title = _("Create {0}: {1}", entityType, humanId); + } + break; + case EDIT: + title = _("Edit {0}: {1}", entityType, humanId); + break; + default: + throw new IllegalStateException( + "You should be in creation or edition mode to use this method"); } ((Caption) editWindow.getFellow("caption")).setLabel(title); } @@ -1167,23 +1171,26 @@ public class WorkerCRUDController extends GenericForwardComposer implements } public boolean isCreateButtonDisabled(){ - Limits workersTypeLimit = limitsModel.getWorkersType(); - Long workersCount = (Long) workerModel.getRowCount(); - if ( workersTypeLimit != null ) - if ( workersCount >= workersTypeLimit.getValue() ) + Limits resourcesTypeLimit = limitsModel.getResourcesType(); + Integer resourcesCount = (Integer) resourceDAO.getRowCount(); + + if ( resourcesTypeLimit != null ) + if ( resourcesCount >= resourcesTypeLimit.getValue() ) return true; return false; } public String getShowCreateFormLabel(){ - Limits workersTypeLimit = limitsModel.getWorkersType(); - Long workersCount = (Long) workerModel.getRowCount(); - if ( workersTypeLimit != null ) - if ( workersCount >= workersTypeLimit.getValue() ) + Limits resourcesTypeLimit = limitsModel.getResourcesType(); + Integer resourcesCount = (Integer) resourceDAO.getRowCount(); + + int resourcesLeft = resourcesTypeLimit.getValue() - resourcesCount; + if ( resourcesTypeLimit != null ) + if ( resourcesCount >= resourcesTypeLimit.getValue() ) return _("Workers limit reached"); - return _("Create"); + return _("Create") + " ( " + resourcesLeft + " " + _("left") + " )"; } } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/resources/worker/WorkerModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/resources/worker/WorkerModel.java index 90ca8a30d..aa82fdd70 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/resources/worker/WorkerModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/resources/worker/WorkerModel.java @@ -702,11 +702,4 @@ public class WorkerModel extends IntegrationEntityModel implements IWorkerModel } return null; } - - @Override - @Transactional(readOnly = true) - public Number getRowCount() { - return workerDAO.getRowCount(); - } - } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/users/UserCRUDController.java b/libreplan-webapp/src/main/java/org/libreplan/web/users/UserCRUDController.java index 5e34cd5ea..775f3ee32 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/users/UserCRUDController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/users/UserCRUDController.java @@ -119,16 +119,16 @@ public class UserCRUDController extends BaseCRUDController implements Button[] buttons = Util.appendOperationsAndOnClickEvent(row, new EventListener() { - @Override - public void onEvent(Event event) throws Exception { - goToEditForm(user); - } - }, new EventListener() { - @Override - public void onEvent(Event event) throws Exception { - confirmDelete(user); - } - }); + @Override + public void onEvent(Event event) throws Exception { + goToEditForm(user); + } + }, new EventListener() { + @Override + public void onEvent(Event event) throws Exception { + confirmDelete(user); + } + }); // Disable remove button for default admin as it's mandatory if (isDefaultAdmin(user)) { @@ -260,7 +260,7 @@ public class UserCRUDController extends BaseCRUDController implements userModel.setPassword(password); //update the constraint on the confirmation password box ((Textbox)editWindow.getFellowIfAny("passwordConfirmation")). - clearErrorMessage(true); + clearErrorMessage(true); } public Constraint validatePasswordConfirmation() { @@ -382,11 +382,11 @@ public class UserCRUDController extends BaseCRUDController implements Button removeButton = Util .createRemoveButton(new EventListener() { - @Override - public void onEvent(Event event) throws Exception { - removeRole(role); - } - }); + @Override + public void onEvent(Event event) throws Exception { + removeRole(role); + } + }); removeButton.setDisabled(areRolesAndProfilesDisabled() || role.equals(UserRole.ROLE_BOUND_USER) || isUserDefaultAdmin()); @@ -505,7 +505,7 @@ public class UserCRUDController extends BaseCRUDController implements public boolean isCreateButtonDisabled(){ Limits usersTypeLimit = limitsModel.getUsersType(); - Long usersCount = (Long) userModel.getRowCount(); + Integer usersCount = (Integer) userModel.getRowCount(); if (usersTypeLimit != null) if ( usersCount >= usersTypeLimit.getValue() ) return true; @@ -514,11 +514,12 @@ public class UserCRUDController extends BaseCRUDController implements public String getShowCreateFormLabel(){ Limits usersTypeLimit = limitsModel.getUsersType(); - Long usersCount = (Long) userModel.getRowCount(); + Integer usersCount = (Integer) userModel.getRowCount(); + int usersLeft = usersTypeLimit.getValue() - usersCount; if (usersTypeLimit != null) if ( usersCount >= usersTypeLimit.getValue() ) return _("User limit reached"); - return _("Create"); + return _("Create") + " ( " + usersLeft + " " + _("left") + " )"; } } diff --git a/libreplan-webapp/src/main/resources/i18n/keys.pot b/libreplan-webapp/src/main/resources/i18n/keys.pot index 68b1068d7..2255f22e5 100644 --- a/libreplan-webapp/src/main/resources/i18n/keys.pot +++ b/libreplan-webapp/src/main/resources/i18n/keys.pot @@ -8631,6 +8631,9 @@ msgstr "" #: libreplan-webapp/src/main/webapp/advance/_listAdvanceTypes.zul:33 #: libreplan-webapp/src/main/webapp/unittypes/_listUnitTypes.zul:32 #: libreplan-webapp/src/main/webapp/qualityforms/_listQualityForm.zul:58 +#: libreplan-webapp/src/main/java/org/libreplan/web/users/UserCRUDController.java:523 +#: libreplan-webapp/src/main/java/org/libreplan/web/resources/machine/MachineCRUDController.java:640 +#: libreplan-webapp/src/main/java/org/libreplan/web/resources/worker/WorkerCRUDController.java:1187 msgid "Create" msgstr "" @@ -9292,7 +9295,13 @@ msgstr "" msgid "User limit reached" msgstr "" -#: libreplan-webapp/src/main/java/org/libreplan/web/resources/worker/UserCRUDController.java:1178 +#: libreplan-webapp/src/main/java/org/libreplan/web/users/UserCRUDController.java:523 +#: libreplan-webapp/src/main/java/org/libreplan/web/resources/machine/MachineCRUDController.java:640 +#: libreplan-webapp/src/main/java/org/libreplan/web/resources/worker/WorkerCRUDController.java:1187 +msgid "left" +msgstr "" + +#: libreplan-webapp/src/main/java/org/libreplan/web/resources/worker/WorkerCRUDController.java:1178 msgid "Workers limit reached" msgstr ""