filtering users
This commit is contained in:
@@ -5,7 +5,12 @@ import java.util.List;
|
||||
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
|
||||
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
|
||||
import org.codehaus.jackson.map.annotate.JsonFilter;
|
||||
|
||||
@XmlRootElement(name = "user")
|
||||
@JsonIgnoreProperties({ "orgId" })
|
||||
@JsonFilter("userFilter")
|
||||
public class AppUserData {
|
||||
|
||||
private Long id;
|
||||
|
||||
@@ -23,8 +23,8 @@ public class PermissionData implements Serializable {
|
||||
//
|
||||
}
|
||||
|
||||
public PermissionData(final Long id, final Long orgId,
|
||||
final String name, final String description, final String code, int groupType) {
|
||||
public PermissionData(final Long id, final Long orgId, final String name,
|
||||
final String description, final String code, int groupType) {
|
||||
this.id = id;
|
||||
this.orgId = orgId;
|
||||
this.name = name;
|
||||
@@ -32,13 +32,13 @@ public class PermissionData implements Serializable {
|
||||
this.code = code;
|
||||
this.groupType = groupType;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
PermissionData data = (PermissionData) obj;
|
||||
return this.code.equalsIgnoreCase(data.code);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return this.code.hashCode();
|
||||
|
||||
@@ -10,13 +10,15 @@ 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.Response;
|
||||
import javax.ws.rs.core.UriInfo;
|
||||
|
||||
import org.mifosng.data.AppUserData;
|
||||
import org.mifosng.data.EntityIdentifier;
|
||||
import org.mifosng.data.UserList;
|
||||
import org.mifosng.data.command.UserCommand;
|
||||
import org.mifosng.platform.api.infrastructure.ApiJSONFormattingService;
|
||||
import org.mifosng.platform.user.service.AppUserReadPlatformService;
|
||||
import org.mifosng.platform.user.service.AppUserWritePlatformService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -27,75 +29,91 @@ import org.springframework.stereotype.Component;
|
||||
@Component
|
||||
@Scope("singleton")
|
||||
public class UserApiResource {
|
||||
|
||||
@Autowired
|
||||
|
||||
private String allowedFieldList = "allowedOffices,availableRoles";
|
||||
private String filterName = "userFilter";
|
||||
|
||||
@Autowired
|
||||
private AppUserReadPlatformService appUserReadPlatformService;
|
||||
|
||||
@Autowired
|
||||
private AppUserWritePlatformService appUserWritePlatformService;
|
||||
|
||||
@GET
|
||||
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
|
||||
@Produces({MediaType.APPLICATION_JSON})
|
||||
public Response retrieveUsers() {
|
||||
|
||||
Collection<AppUserData> users = this.appUserReadPlatformService.retrieveAllUsers();
|
||||
@Autowired
|
||||
private ApiJSONFormattingService jsonFormattingService;
|
||||
|
||||
return Response.ok().entity(new UserList(users)).build();
|
||||
@GET
|
||||
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
|
||||
@Produces({ MediaType.APPLICATION_JSON })
|
||||
public String retrieveUsers(@Context UriInfo uriInfo) {
|
||||
|
||||
Collection<AppUserData> users = this.appUserReadPlatformService
|
||||
.retrieveAllUsers();
|
||||
|
||||
String selectedFields = "id,officeId,officeName,username,firstname,lastname,email";
|
||||
return this.jsonFormattingService.convertRequest(users, filterName,
|
||||
allowedFieldList, selectedFields, uriInfo.getQueryParameters());
|
||||
}
|
||||
|
||||
|
||||
@GET
|
||||
@Path("{userId}")
|
||||
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
|
||||
@Produces({ MediaType.APPLICATION_JSON})
|
||||
public Response retrieveUser(@PathParam("userId") final Long userId) {
|
||||
|
||||
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
|
||||
@Produces({ MediaType.APPLICATION_JSON })
|
||||
public String retrieveUser(@PathParam("userId") final Long userId,
|
||||
@Context UriInfo uriInfo) {
|
||||
|
||||
AppUserData user = this.appUserReadPlatformService.retrieveUser(userId);
|
||||
|
||||
return Response.ok().entity(user).build();
|
||||
|
||||
String selectedFields = "";
|
||||
return this.jsonFormattingService.convertRequest(user, filterName,
|
||||
allowedFieldList, selectedFields, uriInfo.getQueryParameters());
|
||||
}
|
||||
|
||||
@GET
|
||||
|
||||
@GET
|
||||
@Path("template")
|
||||
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
|
||||
@Produces({ MediaType.APPLICATION_JSON})
|
||||
public Response newUserDetails() {
|
||||
|
||||
AppUserData newUser = this.appUserReadPlatformService.retrieveNewUserDetails();
|
||||
|
||||
return Response.ok().entity(newUser).build();
|
||||
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
|
||||
@Produces({ MediaType.APPLICATION_JSON })
|
||||
public String newUserDetails(@Context UriInfo uriInfo) {
|
||||
|
||||
AppUserData newUser = this.appUserReadPlatformService
|
||||
.retrieveNewUserDetails();
|
||||
|
||||
String selectedFields = allowedFieldList;
|
||||
return this.jsonFormattingService.convertRequest(newUser, filterName,
|
||||
allowedFieldList, selectedFields, uriInfo.getQueryParameters());
|
||||
}
|
||||
|
||||
@POST
|
||||
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
|
||||
@Produces({ MediaType.APPLICATION_JSON})
|
||||
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
|
||||
@Produces({ MediaType.APPLICATION_JSON })
|
||||
public Response createUser(UserCommand command) {
|
||||
|
||||
Long userId = this.appUserWritePlatformService.createUser(command);
|
||||
return Response.ok().entity(new EntityIdentifier(userId)).build();
|
||||
}
|
||||
|
||||
|
||||
@DELETE
|
||||
@Path("{userId}")
|
||||
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
|
||||
@Produces({ MediaType.APPLICATION_JSON})
|
||||
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
|
||||
@Produces({ MediaType.APPLICATION_JSON })
|
||||
public Response deleteUser(@PathParam("userId") final Long userId) {
|
||||
|
||||
this.appUserWritePlatformService.deleteUser(userId);
|
||||
|
||||
return Response.ok().build();
|
||||
}
|
||||
|
||||
|
||||
@PUT
|
||||
@Path("{userId}")
|
||||
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
|
||||
@Produces({ MediaType.APPLICATION_JSON})
|
||||
public Response updateUser(@PathParam("userId") final Long userId, UserCommand command) {
|
||||
|
||||
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
|
||||
@Produces({ MediaType.APPLICATION_JSON })
|
||||
public Response updateUser(@PathParam("userId") final Long userId,
|
||||
UserCommand command) {
|
||||
|
||||
command.setId(userId);
|
||||
|
||||
|
||||
this.appUserWritePlatformService.updateUser(command);
|
||||
|
||||
|
||||
return Response.ok().entity(new EntityIdentifier(userId)).build();
|
||||
}
|
||||
}
|
||||
+109
-57
@@ -86,62 +86,8 @@ public class ApiJSONFormattingServiceImpl implements ApiJSONFormattingService {
|
||||
String filterType, String fields, boolean prettyOutput) {
|
||||
|
||||
try {
|
||||
String json = "";
|
||||
// String myFilter = "myFilter";
|
||||
FilterProvider filters = null;
|
||||
Set<String> filterFields = new HashSet<String>();
|
||||
|
||||
StringTokenizer st = new StringTokenizer(fields, ",");
|
||||
while (st.hasMoreTokens()) {
|
||||
filterFields.add(st.nextToken().trim());
|
||||
}
|
||||
|
||||
if (filterName.equals("roleFilter")) {
|
||||
|
||||
Set<String> permissionFields = new HashSet<String>();
|
||||
//Ask keith which ones to show
|
||||
permissionFields.add("id");
|
||||
permissionFields.add("name");
|
||||
permissionFields.add("description");
|
||||
permissionFields.add("code");
|
||||
permissionFields.add("groupType");
|
||||
|
||||
if (filterType.equals("I")) {
|
||||
filters = new SimpleFilterProvider()
|
||||
.addFilter(
|
||||
filterName,
|
||||
SimpleBeanPropertyFilter
|
||||
.filterOutAllExcept(filterFields))
|
||||
.addFilter(
|
||||
"permissionFilter",
|
||||
SimpleBeanPropertyFilter
|
||||
.filterOutAllExcept(permissionFields));
|
||||
|
||||
} else {
|
||||
filters = new SimpleFilterProvider()
|
||||
.addFilter(
|
||||
filterName,
|
||||
SimpleBeanPropertyFilter
|
||||
.serializeAllExcept(filterFields))
|
||||
.addFilter(
|
||||
"permissionFilter",
|
||||
SimpleBeanPropertyFilter
|
||||
.filterOutAllExcept(permissionFields));
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
if (filterType.equals("I")) {
|
||||
filters = new SimpleFilterProvider().addFilter(filterName,
|
||||
SimpleBeanPropertyFilter
|
||||
.filterOutAllExcept(filterFields));
|
||||
|
||||
} else {
|
||||
filters = new SimpleFilterProvider().addFilter(filterName,
|
||||
SimpleBeanPropertyFilter
|
||||
.serializeAllExcept(filterFields));
|
||||
}
|
||||
}
|
||||
FilterProvider filters = buildFilter(filterName, filterType, fields);
|
||||
ObjectWriter jsonWriter = null;
|
||||
if (prettyOutput) {
|
||||
jsonWriter = new ObjectMapper()
|
||||
@@ -150,9 +96,8 @@ public class ApiJSONFormattingServiceImpl implements ApiJSONFormattingService {
|
||||
jsonWriter = new ObjectMapper().writer();
|
||||
}
|
||||
|
||||
json = jsonWriter.withFilters(filters).writeValueAsString(
|
||||
return jsonWriter.withFilters(filters).writeValueAsString(
|
||||
dataObject);
|
||||
return json;
|
||||
} catch (JsonGenerationException e) {
|
||||
throw new PlatformInternalServerException(
|
||||
"error.msg.platform.json.generation",
|
||||
@@ -171,6 +116,113 @@ public class ApiJSONFormattingServiceImpl implements ApiJSONFormattingService {
|
||||
}
|
||||
}
|
||||
|
||||
private FilterProvider buildFilter(String filterName, String filterType,
|
||||
String fields) {
|
||||
FilterProvider filters = null;
|
||||
|
||||
Set<String> filterFields = new HashSet<String>();
|
||||
StringTokenizer st = new StringTokenizer(fields, ",");
|
||||
while (st.hasMoreTokens()) {
|
||||
filterFields.add(st.nextToken().trim());
|
||||
}
|
||||
|
||||
if (filterName.equals("myFilter")) {
|
||||
|
||||
if (filterType.equals("I")) {
|
||||
return new SimpleFilterProvider().addFilter(filterName,
|
||||
SimpleBeanPropertyFilter
|
||||
.filterOutAllExcept(filterFields));
|
||||
|
||||
} else {
|
||||
return new SimpleFilterProvider().addFilter(filterName,
|
||||
SimpleBeanPropertyFilter
|
||||
.serializeAllExcept(filterFields));
|
||||
}
|
||||
}
|
||||
|
||||
if (filterName.equals("roleFilter")) {
|
||||
|
||||
Set<String> permissionFields = new HashSet<String>();
|
||||
// Ask keith which ones to show
|
||||
permissionFields.add("id");
|
||||
permissionFields.add("name");
|
||||
permissionFields.add("description");
|
||||
permissionFields.add("code");
|
||||
permissionFields.add("groupType");
|
||||
|
||||
if (filterType.equals("I")) {
|
||||
return new SimpleFilterProvider().addFilter(
|
||||
filterName,
|
||||
SimpleBeanPropertyFilter
|
||||
.filterOutAllExcept(filterFields)).addFilter(
|
||||
"permissionFilter",
|
||||
SimpleBeanPropertyFilter
|
||||
.filterOutAllExcept(permissionFields));
|
||||
|
||||
} else {
|
||||
return new SimpleFilterProvider().addFilter(
|
||||
filterName,
|
||||
SimpleBeanPropertyFilter
|
||||
.serializeAllExcept(filterFields)).addFilter(
|
||||
"permissionFilter",
|
||||
SimpleBeanPropertyFilter
|
||||
.filterOutAllExcept(permissionFields));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (filterName.equals("userFilter")) {
|
||||
|
||||
Set<String> roleFields = new HashSet<String>();
|
||||
roleFields.add("id");
|
||||
roleFields.add("name");
|
||||
roleFields.add("description");
|
||||
roleFields.add("availablePermissions");
|
||||
roleFields.add("selectedPermissions");
|
||||
// Ask keith which ones to show
|
||||
Set<String> permissionFields = new HashSet<String>();
|
||||
// Ask keith which ones to show
|
||||
permissionFields.add("id");
|
||||
permissionFields.add("name");
|
||||
permissionFields.add("description");
|
||||
permissionFields.add("code");
|
||||
permissionFields.add("groupType");
|
||||
|
||||
if (filterType.equals("I")) {
|
||||
return new SimpleFilterProvider()
|
||||
.addFilter(
|
||||
filterName,
|
||||
SimpleBeanPropertyFilter
|
||||
.filterOutAllExcept(filterFields))
|
||||
.addFilter(
|
||||
"roleFilter",
|
||||
SimpleBeanPropertyFilter
|
||||
.filterOutAllExcept(roleFields))
|
||||
.addFilter(
|
||||
"permissionFilter",
|
||||
SimpleBeanPropertyFilter
|
||||
.filterOutAllExcept(permissionFields));
|
||||
|
||||
} else {
|
||||
return new SimpleFilterProvider()
|
||||
.addFilter(
|
||||
filterName,
|
||||
SimpleBeanPropertyFilter
|
||||
.serializeAllExcept(filterFields))
|
||||
.addFilter(
|
||||
"roleFilter",
|
||||
SimpleBeanPropertyFilter
|
||||
.filterOutAllExcept(roleFields))
|
||||
.addFilter(
|
||||
"permissionFilter",
|
||||
SimpleBeanPropertyFilter
|
||||
.filterOutAllExcept(permissionFields));
|
||||
}
|
||||
|
||||
}
|
||||
return filters;
|
||||
}
|
||||
|
||||
private Boolean isTrue(String param) {
|
||||
if (param != null && param.equalsIgnoreCase("true"))
|
||||
return true;
|
||||
|
||||
Reference in New Issue
Block a user