remove permission maintenance from add/edit role

This commit is contained in:
John Woodlock
2012-11-21 21:30:17 +00:00
parent 43fb5c3294
commit baba0b809e
4 changed files with 5 additions and 50 deletions
@@ -10,7 +10,6 @@ public class RoleCommand {
private final Long id;
private final String name;
private final String description;
private final String[] permissions;
private final Set<String> modifiedParameters;
@@ -19,7 +18,6 @@ public class RoleCommand {
this.id = id;
this.name = name;
this.description = description;
this.permissions = permissionIds;
}
public Long getId() {
@@ -34,10 +32,6 @@ public class RoleCommand {
return description;
}
public String[] getPermissions() {
return permissions;
}
public boolean isNameChanged() {
return this.modifiedParameters.contains("name");
}
@@ -3,7 +3,6 @@ package org.mifosng.platform.user.domain;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.persistence.Column;
@@ -39,10 +38,9 @@ public class Role extends AbstractAuditableCustom<AppUser, Long> {
this.permissions = new HashSet<Permission>();
}
public Role(final String name, final String description, final List<Permission> rolePermissions) {
public Role(final String name, final String description) {
this.name = name.trim();
this.description = description.trim();
this.permissions = new HashSet<Permission>(rolePermissions);
}
public Collection<Permission> getPermissions() {
@@ -71,7 +69,7 @@ public class Role extends AbstractAuditableCustom<AppUser, Long> {
return new RoleData(this.getId(), this.name, this.description, rolePermissions);
}
public void update(final RoleCommand command, final List<Permission> selectedPermissions) {
public void update(final RoleCommand command) {
if (command.isNameChanged()) {
this.name = command.getName();
}
@@ -80,10 +78,6 @@ public class Role extends AbstractAuditableCustom<AppUser, Long> {
this.description = command.getDescription();
}
if (command.isPermissionsChanged()) {
this.permissions.clear();
this.permissions = new HashSet<Permission>(selectedPermissions);
}
}
public String getName() {
@@ -23,7 +23,6 @@ public class RoleCommandValidator {
baseDataValidator.reset().parameter("name").value(command.getName()).notBlank();
baseDataValidator.reset().parameter("description").value(command.getDescription()).notBlank().notExceedingLengthOf(500);
baseDataValidator.reset().parameter("permissions").value(command.getPermissions()).arrayNotEmpty();
if (!dataValidationErrors.isEmpty()) {
throw new PlatformApiDataValidationException("validation.msg.validation.errors.exist", "Validation errors exist.", dataValidationErrors);
@@ -38,9 +37,8 @@ public class RoleCommandValidator {
baseDataValidator.reset().parameter("id").value(command.getId()).notNull();
baseDataValidator.reset().parameter("name").value(command.getName()).ignoreIfNull().notBlank();
baseDataValidator.reset().parameter("description").value(command.getDescription()).ignoreIfNull().notBlank().notExceedingLengthOf(500);
baseDataValidator.reset().parameter("permissions").value(command.getPermissions()).ignoreIfNull().arrayNotEmpty();
baseDataValidator.reset().anyOfNotNull(command.getName(), command.getDescription(), command.getPermissions());
baseDataValidator.reset().anyOfNotNull(command.getName(), command.getDescription());
if (!dataValidationErrors.isEmpty()) {
throw new PlatformApiDataValidationException("validation.msg.validation.errors.exist", "Validation errors exist.", dataValidationErrors);
@@ -1,8 +1,6 @@
package org.mifosng.platform.user.service;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import org.mifosng.platform.accounting.api.commands.RolePermissionCommand;
@@ -17,7 +15,6 @@ import org.mifosng.platform.user.domain.RoleRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
@Service
public class RoleWritePlatformServiceJpaRepositoryImpl implements
@@ -47,11 +44,7 @@ public class RoleWritePlatformServiceJpaRepositoryImpl implements
RoleCommandValidator validator = new RoleCommandValidator(command);
validator.validateForCreate();
List<Permission> selectedPermissions = assembleListOfSelectedPermissions(command
.getPermissions());
Role entity = new Role(command.getName(), command.getDescription(),
selectedPermissions);
Role entity = new Role(command.getName(), command.getDescription());
this.roleRepository.save(entity);
@@ -67,14 +60,11 @@ public class RoleWritePlatformServiceJpaRepositoryImpl implements
RoleCommandValidator validator = new RoleCommandValidator(command);
validator.validateForUpdate();
List<Permission> selectedPermissions = assembleListOfSelectedPermissions(command
.getPermissions());
Role role = this.roleRepository.findOne(command.getId());
if (role == null) {
throw new RoleNotFoundException(command.getId());
}
role.update(command, selectedPermissions);
role.update(command);
this.roleRepository.save(role);
@@ -131,25 +121,4 @@ public class RoleWritePlatformServiceJpaRepositoryImpl implements
throw new PermissionNotFoundException(permissionCode);
}
private List<Permission> assembleListOfSelectedPermissions(
final String[] selectedPermissionsArray) {
List<Long> selectedPermissionIds = new ArrayList<Long>();
List<Permission> selectedPermissions = new ArrayList<Permission>();
if (!ObjectUtils.isEmpty(selectedPermissionsArray)) {
for (String selectedId : selectedPermissionsArray) {
selectedPermissionIds.add(Long.valueOf(selectedId));
}
Collection<Permission> allPermissions = this.permissionRepository
.findAll();
for (Permission permission : allPermissions) {
if (selectedPermissionIds.contains(permission.getId())) {
selectedPermissions.add(permission);
}
}
}
return selectedPermissions;
}
}