From b940c7882697833b696e54de5330a634e62ca701 Mon Sep 17 00:00:00 2001 From: Manuel Rego Casasnovas Date: Mon, 1 Oct 2012 12:22:04 +0200 Subject: [PATCH] Add restrictions by number of users and resources A new column in configuration has been added and it should me modified manually to limit the number of users and resources. --- .../common/entities/Configuration.java | 20 +++++++++++++++++++ .../business/resources/entities/Resource.java | 13 ++++++++++++ .../business/users/daos/IUserDAO.java | 2 ++ .../business/users/daos/UserDAO.java | 5 +++++ .../business/users/entities/User.java | 15 ++++++++++++++ .../src/main/resources/db.changelog-1.3.xml | 17 ++++++++++++++++ .../common/entities/Configuration.hbm.xml | 3 +++ 7 files changed, 75 insertions(+) diff --git a/libreplan-business/src/main/java/org/libreplan/business/common/entities/Configuration.java b/libreplan-business/src/main/java/org/libreplan/business/common/entities/Configuration.java index 7594dd6a7..5635becf3 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/common/entities/Configuration.java +++ b/libreplan-business/src/main/java/org/libreplan/business/common/entities/Configuration.java @@ -113,6 +113,18 @@ public class Configuration extends BaseEntity { private PersonalTimesheetsPeriodicityEnum personalTimesheetsPeriodicity = PersonalTimesheetsPeriodicityEnum.MONTHLY; + /** + * Maximum users configurable directly in database for SaaS products. If + * zero it means that there isn't any limitation. + */ + private Integer maxUsers = 0; + + /** + * Maximum resources configurable directly in database for SaaS products. If + * zero it means that there isn't any limitation. + */ + private Integer maxResources = 0; + public void setDefaultCalendar(BaseCalendar defaultCalendar) { this.defaultCalendar = defaultCalendar; } @@ -470,4 +482,12 @@ public class Configuration extends BaseEntity { this.personalTimesheetsPeriodicity = personalTimesheetsPeriodicity; } + public Integer getMaxUsers() { + return maxUsers; + } + + public Integer getMaxResources() { + return maxResources; + } + } diff --git a/libreplan-business/src/main/java/org/libreplan/business/resources/entities/Resource.java b/libreplan-business/src/main/java/org/libreplan/business/resources/entities/Resource.java index c35d3f0c5..a9c47c3c2 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/resources/entities/Resource.java +++ b/libreplan-business/src/main/java/org/libreplan/business/resources/entities/Resource.java @@ -1186,4 +1186,17 @@ public abstract class Resource extends IntegrationEntity implements resource.getShortDescription()); } + @AssertTrue(message = "You have exceeded the maximum limit of users") + public boolean checkMaxUsers() { + Integer maxResources = Registry.getConfigurationDAO() + .getConfiguration().getMaxResources(); + if (maxResources != null && maxResources > 0) { + List resources = Registry.getResourceDAO().findAll(); + if (resources.size() > maxResources) { + return false; + } + } + return true; + } + } diff --git a/libreplan-business/src/main/java/org/libreplan/business/users/daos/IUserDAO.java b/libreplan-business/src/main/java/org/libreplan/business/users/daos/IUserDAO.java index ef2fca20b..a6ed0d376 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/users/daos/IUserDAO.java +++ b/libreplan-business/src/main/java/org/libreplan/business/users/daos/IUserDAO.java @@ -100,4 +100,6 @@ public interface IUserDAO extends IGenericDAO{ */ void remove(User user) throws InstanceNotFoundException; + List findAll(); + } diff --git a/libreplan-business/src/main/java/org/libreplan/business/users/daos/UserDAO.java b/libreplan-business/src/main/java/org/libreplan/business/users/daos/UserDAO.java index 9280f03c7..0d919d0cb 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/users/daos/UserDAO.java +++ b/libreplan-business/src/main/java/org/libreplan/business/users/daos/UserDAO.java @@ -173,4 +173,9 @@ public class UserDAO extends GenericDAOHibernate super.remove(user.getId()); } + @Override + public List findAll() { + return list(User.class); + } + } 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 41862785c..5bdda865e 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 @@ -24,6 +24,7 @@ package org.libreplan.business.users.entities; import static org.libreplan.business.i18n.I18nHelper._; import java.util.HashSet; +import java.util.List; import java.util.Set; import org.hibernate.validator.AssertTrue; @@ -343,4 +344,18 @@ public class User extends BaseEntity implements IHumanIdentifiable{ return isLibrePlanUser().equals(Boolean.TRUE) ? _("Database") : _("LDAP"); } + + @AssertTrue(message = "You have exceeded the maximum limit of users") + public boolean checkMaxUsers() { + Integer maxUsers = Registry.getConfigurationDAO().getConfiguration() + .getMaxUsers(); + if (maxUsers != null && maxUsers > 0) { + List users = Registry.getUserDAO().findAll(); + if (users.size() > maxUsers) { + return false; + } + } + return true; + } + } 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 681b51255..b4ce27ed8 100644 --- a/libreplan-business/src/main/resources/db.changelog-1.3.xml +++ b/libreplan-business/src/main/resources/db.changelog-1.3.xml @@ -56,4 +56,21 @@ referencedTableName="type_of_work_hours" referencedColumnNames="id" /> + + Add max_users and max_resources columns to configuration + + + + + + + + + + + + + + diff --git a/libreplan-business/src/main/resources/org/libreplan/business/common/entities/Configuration.hbm.xml b/libreplan-business/src/main/resources/org/libreplan/business/common/entities/Configuration.hbm.xml index 3df6cd30d..0a4ee5f13 100644 --- a/libreplan-business/src/main/resources/org/libreplan/business/common/entities/Configuration.hbm.xml +++ b/libreplan-business/src/main/resources/org/libreplan/business/common/entities/Configuration.hbm.xml @@ -88,6 +88,9 @@ + + +