}
@RequestMapping("role-def-manage")
public String manage(@RequestParam("id") Long id, Model model)
throws Exception {
RoleDef roleDef = roleDefManager.get(id);
List<Role> roles = roleManager.findBy("roleDef.id", id);
ScopeDTO currentScope = ScopeHolder.getScopeDto();
List<ScopeDTO> scopeDtos;
if (currentScope.isShared()) {
scopeDtos = scopeConnector.findAll();
} else {
scopeDtos = new ArrayList<ScopeDTO>();
scopeDtos.add(currentScope);
}
List<RoleDTO> roleDtos = new ArrayList<RoleDTO>();
for (ScopeDTO scopeDto : scopeDtos) {
Role existedRole = null;
for (Role role : roles) {
if (role.getScopeId().equals(scopeDto.getId())) {
existedRole = role;
break;
}
}
if (existedRole == null) {
RoleDTO roleDto = new RoleDTO();
roleDto.setName(roleDef.getName());
roleDto.setScopeId(scopeDto.getId());
roleDto.setStatus("added");
roleDtos.add(roleDto);
} else {
RoleDTO roleDto = new RoleDTO();
roleDto.setName(roleDef.getName());
roleDto.setId(existedRole.getId());
roleDto.setScopeId(scopeDto.getId());
roleDto.setStatus("existed");
roleDtos.add(roleDto);
}
}
for (Role role : roles) {
boolean existed = false;
for (ScopeDTO scopeDto : scopeDtos) {
if (role.getScopeId().equals(scopeDto.getId())) {
existed = true;
break;
}
}
if (!existed) {
RoleDTO roleDto = new RoleDTO();
roleDto.setName(roleDef.getName());
roleDto.setId(role.getId());
roleDto.setScopeId(role.getScopeId());
roleDto.setStatus("removed");
roleDtos.add(roleDto);
}