From e64b502b17daf9c9c47c5f70b5d8d06914480d46 Mon Sep 17 00:00:00 2001 From: andrew-dzak Date: Fri, 22 Nov 2013 15:00:54 +0100 Subject: [PATCH] add roles to list users --- .../api/UsersApiResource.java | 28 +++++-------- .../useradministration/data/AppUserData.java | 21 +++++++++- .../service/AppUserReadPlatformService.java | 6 +-- .../AppUserReadPlatformServiceImpl.java | 40 ++++++++----------- .../service/RoleReadPlatformService.java | 6 ++- .../service/RoleReadPlatformServiceImpl.java | 16 ++++++-- 6 files changed, 63 insertions(+), 54 deletions(-) mode change 100644 => 100755 mifosng-provider/src/main/java/org/mifosplatform/useradministration/data/AppUserData.java mode change 100644 => 100755 mifosng-provider/src/main/java/org/mifosplatform/useradministration/service/RoleReadPlatformService.java mode change 100644 => 100755 mifosng-provider/src/main/java/org/mifosplatform/useradministration/service/RoleReadPlatformServiceImpl.java diff --git a/mifosng-provider/src/main/java/org/mifosplatform/useradministration/api/UsersApiResource.java b/mifosng-provider/src/main/java/org/mifosplatform/useradministration/api/UsersApiResource.java index 592e8a800..9cf517b29 100755 --- a/mifosng-provider/src/main/java/org/mifosplatform/useradministration/api/UsersApiResource.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/useradministration/api/UsersApiResource.java @@ -5,23 +5,6 @@ */ package org.mifosplatform.useradministration.api; -import java.util.Arrays; -import java.util.Collection; -import java.util.HashSet; -import java.util.Set; - -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.UriInfo; - import org.mifosplatform.commands.domain.CommandWrapper; import org.mifosplatform.commands.service.CommandWrapperBuilder; import org.mifosplatform.commands.service.PortfolioCommandSourceWritePlatformService; @@ -38,6 +21,15 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; +import javax.ws.rs.*; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.UriInfo; +import java.util.Arrays; +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; + @Path("/users") @Consumes({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON }) @@ -79,7 +71,7 @@ public class UsersApiResource { this.context.authenticatedUser().validateHasReadPermission(this.resourceNameForPermissions); - final Collection users = this.readPlatformService.retrieveAllUsers(); // this.readPlatformService.retrieveAllUsersWithRoles(); + final Collection users = this.readPlatformService.retrieveAllUsers(); final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); return this.toApiJsonSerializer.serialize(settings, users, this.RESPONSE_DATA_PARAMETERS); diff --git a/mifosng-provider/src/main/java/org/mifosplatform/useradministration/data/AppUserData.java b/mifosng-provider/src/main/java/org/mifosplatform/useradministration/data/AppUserData.java old mode 100644 new mode 100755 index f30776389..9ca08222b --- a/mifosng-provider/src/main/java/org/mifosplatform/useradministration/data/AppUserData.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/useradministration/data/AppUserData.java @@ -5,10 +5,10 @@ */ package org.mifosplatform.useradministration.data; -import java.util.Collection; - import org.mifosplatform.organisation.office.data.OfficeData; +import java.util.Collection; + /** * Immutable data object for application user data. */ @@ -68,4 +68,21 @@ public class AppUserData { public String username() { return this.username; } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + AppUserData that = (AppUserData) o; + + if (id != null ? !id.equals(that.id) : that.id != null) return false; + + return true; + } + + @Override + public int hashCode() { + return id != null ? id.hashCode() : 0; + } } \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosplatform/useradministration/service/AppUserReadPlatformService.java b/mifosng-provider/src/main/java/org/mifosplatform/useradministration/service/AppUserReadPlatformService.java index dd99e8195..619529258 100755 --- a/mifosng-provider/src/main/java/org/mifosplatform/useradministration/service/AppUserReadPlatformService.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/useradministration/service/AppUserReadPlatformService.java @@ -5,10 +5,10 @@ */ package org.mifosplatform.useradministration.service; -import java.util.Collection; - import org.mifosplatform.useradministration.data.AppUserData; +import java.util.Collection; + public interface AppUserReadPlatformService { Collection retrieveAllUsers(); @@ -18,6 +18,4 @@ public interface AppUserReadPlatformService { AppUserData retrieveNewUserDetails(); AppUserData retrieveUser(Long userId); - - Collection retrieveAllUsersWithRoles(); } \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosplatform/useradministration/service/AppUserReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosplatform/useradministration/service/AppUserReadPlatformServiceImpl.java index cb8dec1f6..8ea66fc2c 100755 --- a/mifosng-provider/src/main/java/org/mifosplatform/useradministration/service/AppUserReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/useradministration/service/AppUserReadPlatformServiceImpl.java @@ -5,13 +5,6 @@ */ package org.mifosplatform.useradministration.service; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashSet; -import java.util.Set; - import org.mifosplatform.infrastructure.core.domain.JdbcSupport; import org.mifosplatform.infrastructure.core.service.RoutingDataSource; import org.mifosplatform.infrastructure.security.service.PlatformSecurityContext; @@ -29,6 +22,12 @@ import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.stereotype.Service; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Set; + @Service public class AppUserReadPlatformServiceImpl implements AppUserReadPlatformService { @@ -57,7 +56,7 @@ public class AppUserReadPlatformServiceImpl implements AppUserReadPlatformServic final String hierarchy = currentUser.getOffice().getHierarchy(); final String hierarchySearchString = hierarchy + "%"; - final AppUserMapper mapper = new AppUserMapper(); + final AppUserMapper mapper = new AppUserMapper(this.roleReadPlatformService); final String sql = "select " + mapper.schema(); return this.jdbcTemplate.query(sql, mapper, new Object[] { hierarchySearchString }); @@ -84,21 +83,6 @@ public class AppUserReadPlatformServiceImpl implements AppUserReadPlatformServic return AppUserData.template(offices, availableRoles); } - @Override - public Collection retrieveAllUsersWithRoles() { - - final Collection users = this.appUserRepository.findAll(); - final Collection appUserData = new HashSet(); - for(final AppUser user : users){ - final Set selectedUserRoles = new HashSet(); - for(final Role role : user.getRoles()){ - selectedUserRoles.add(role.toData()) ; - } - appUserData.add(AppUserData.instance(user.getId(), user.getUsername(), user.getEmail(), user.getOffice().getId(), - user.getOffice().getName(), user.getFirstname(), user.getLastname(),null,selectedUserRoles)) ; - } - return appUserData; - } @Override public AppUserData retrieveUser(final Long userId) { @@ -124,6 +108,11 @@ public class AppUserReadPlatformServiceImpl implements AppUserReadPlatformServic private static final class AppUserMapper implements RowMapper { + private final RoleReadPlatformService roleReadPlatformService; + + public AppUserMapper(final RoleReadPlatformService roleReadPlatformService){ + this.roleReadPlatformService = roleReadPlatformService; + } @Override public AppUserData mapRow(final ResultSet rs, @SuppressWarnings("unused") final int rowNum) throws SQLException { @@ -135,7 +124,10 @@ public class AppUserReadPlatformServiceImpl implements AppUserReadPlatformServic final Long officeId = JdbcSupport.getLong(rs, "officeId"); final String officeName = rs.getString("officeName"); - return AppUserData.instance(id, username, email, officeId, officeName, firstname, lastname, null, null); + //pass the client id to retrieve the clients assigned roles + final Collection selectedRoles = this.roleReadPlatformService.retrieveClientRoles(id); + + return AppUserData.instance(id, username, email, officeId, officeName, firstname, lastname, null, selectedRoles); } public String schema() { diff --git a/mifosng-provider/src/main/java/org/mifosplatform/useradministration/service/RoleReadPlatformService.java b/mifosng-provider/src/main/java/org/mifosplatform/useradministration/service/RoleReadPlatformService.java old mode 100644 new mode 100755 index ebcbb5f59..1ddac1339 --- a/mifosng-provider/src/main/java/org/mifosplatform/useradministration/service/RoleReadPlatformService.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/useradministration/service/RoleReadPlatformService.java @@ -5,13 +5,15 @@ */ package org.mifosplatform.useradministration.service; -import java.util.Collection; - import org.mifosplatform.useradministration.data.RoleData; +import java.util.Collection; + public interface RoleReadPlatformService { Collection retrieveAll(); RoleData retrieveOne(Long roleId); + + Collection retrieveClientRoles(Long clientId); } \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosplatform/useradministration/service/RoleReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosplatform/useradministration/service/RoleReadPlatformServiceImpl.java old mode 100644 new mode 100755 index 48b2528cf..3a8b99f33 --- a/mifosng-provider/src/main/java/org/mifosplatform/useradministration/service/RoleReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/useradministration/service/RoleReadPlatformServiceImpl.java @@ -5,10 +5,6 @@ */ package org.mifosplatform.useradministration.service; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.Collection; - import org.mifosplatform.infrastructure.core.domain.JdbcSupport; import org.mifosplatform.infrastructure.core.service.RoutingDataSource; import org.mifosplatform.useradministration.data.RoleData; @@ -19,6 +15,10 @@ import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.stereotype.Service; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.Collection; + @Service public class RoleReadPlatformServiceImpl implements RoleReadPlatformService { @@ -66,4 +66,12 @@ public class RoleReadPlatformServiceImpl implements RoleReadPlatformService { return " r.id as id, r.name as name, r.description as description from m_role r"; } } + + @Override + public Collection retrieveClientRoles(Long clientId) { + final String sql = "select " + this.roleRowMapper.schema() + " inner join m_appuser_role" + + " ar on ar.role_id = r.id where ar.appuser_id= ?"; + + return this.jdbcTemplate.query(sql,this.roleRowMapper,new Object[]{clientId}); + } } \ No newline at end of file