diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/common/entities/LDAPConfiguration.java b/navalplanner-business/src/main/java/org/navalplanner/business/common/entities/LDAPConfiguration.java index 53c5ebe0d..06bd2e002 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/common/entities/LDAPConfiguration.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/common/entities/LDAPConfiguration.java @@ -20,6 +20,7 @@ package org.navalplanner.business.common.entities; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -166,12 +167,30 @@ public class LDAPConfiguration extends BaseEntity { } public List getConfigurationRolesLdap() { - return configurationRolesLdap; + return Collections.unmodifiableList(configurationRolesLdap); } public void setConfigurationRolesLdap( - List configurationRolesLdap) { - this.configurationRolesLdap = configurationRolesLdap; + String roleLibreplan, List rolesLdap) { + removeConfigurationRolesLdapForRoleLibreplan(roleLibreplan); + + for (String roleLdap : rolesLdap) { + ConfigurationRolesLDAP configuration = new ConfigurationRolesLDAP(); + configuration.setRoleLibreplan(roleLibreplan); + configuration.setRoleLdap(roleLdap); + configurationRolesLdap.add(configuration); + } + } + + private void removeConfigurationRolesLdapForRoleLibreplan( + String roleLibreplan) { + List toRemove = new ArrayList(); + for (ConfigurationRolesLDAP each : configurationRolesLdap) { + if (each.getRoleLibreplan().equals(roleLibreplan)) { + toRemove.add(each); + } + } + configurationRolesLdap.removeAll(toRemove); } public Map> getMapMatchingRoles() { @@ -197,4 +216,5 @@ public class LDAPConfiguration extends BaseEntity { public void setMapMatchingRoles(Map> mapMatchingRoles) { this.mapMatchingRoles = mapMatchingRoles; } + } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/ConfigurationController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/ConfigurationController.java index 2f028531a..a67ff1055 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/ConfigurationController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/ConfigurationController.java @@ -37,7 +37,6 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.navalplanner.business.calendars.entities.BaseCalendar; import org.navalplanner.business.common.entities.Configuration; -import org.navalplanner.business.common.entities.ConfigurationRolesLDAP; import org.navalplanner.business.common.entities.EntityNameEnum; import org.navalplanner.business.common.entities.EntitySequence; import org.navalplanner.business.common.entities.LDAPConfiguration; @@ -838,46 +837,12 @@ public class ConfigurationController extends GenericForwardComposer { }, new Util.Setter() { @Override public void set(String value) { - Map> mapRoles = configurationModel + configurationModel .getLdapConfiguration() - .getMapMatchingRoles(); - mapRoles.put(role.name(), - Arrays - .asList(StringUtils.split(value))); - // Add the list of roles to the configuration - // getting the values from map - List oldRoles = configurationModel - .getLdapConfiguration() - .getConfigurationRolesLdap(); - List newRoles = new ArrayList(); - for (String roleLdap : mapRoles.get(role.name())) { - ConfigurationRolesLDAP configurationRoleLdap = new ConfigurationRolesLDAP(); - configurationRoleLdap.setRoleLdap(roleLdap); - configurationRoleLdap.setRoleLibreplan(role - .name()); - newRoles.add(configurationRoleLdap); - } - for (ConfigurationRolesLDAP oldRole : oldRoles) { - boolean isRoleAdded = false; - if (oldRole.getRoleLibreplan().equals( - role.name())) - isRoleAdded = true; - for (ConfigurationRolesLDAP addedRole : newRoles) { - if (addedRole.getRoleLibreplan() - .equals(oldRole - .getRoleLibreplan()) - && addedRole.getRoleLdap() - .equals(oldRole - .getRoleLdap())) { - isRoleAdded = true; - } - } - if (!isRoleAdded) - newRoles.add(oldRole); - } - configurationModel.getLdapConfiguration() - .setConfigurationRolesLdap(newRoles); - + .setConfigurationRolesLdap( + role.name(), + Arrays.asList(StringUtils + .split(value, ";"))); } }); textbox.setWidth("300px");