package it.geosolutions.geostore.services.rest; import it.geosolutions.geostore.core.model.User; import it.geosolutions.geostore.core.model.UserGroup; import it.geosolutions.geostore.services.rest.model.RESTUserGroup; import it.geosolutions.geostore.services.rest.model.ShortResourceList; import it.geosolutions.geostore.services.rest.model.UserGroupList; import it.geosolutions.geostore.services.rest.model.UserList; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.MultivaluedMap; import com.sun.jersey.api.client.WebResource; import com.sun.jersey.core.util.MultivaluedMapImpl; /** * Advanced GeoStore client for user management * * @author Lorenzo Natali * @author DamianoG * */ public class AdministratorGeoStoreClient extends GeoStoreClient { // ========================================================================== // === USERS MANAGEMENT // ========================================================================== public User getUser(long id) { return getBaseWebResource("users", "user", id).accept(MediaType.TEXT_XML).get(User.class); } public User getUser(String name) { return getBaseWebResource("users", "search", name).accept(MediaType.TEXT_XML).get(User.class); } public User getUser(long id, Boolean includeAttributes) { WebResource wr = getBaseWebResource("users", "user", id); MultivaluedMap<String, String> queryParams = new MultivaluedMapImpl(); if (includeAttributes != null) { queryParams.add("includeattributes", includeAttributes.toString()); } return wr.queryParams(queryParams).get(User.class); } public UserList getUsers() { return getBaseWebResource("users").header("Content-Type", MediaType.TEXT_XML).accept(MediaType.TEXT_XML).get(UserList.class); } public UserList getUsers(Integer page, Integer entries) { WebResource wr = getBaseWebResource("users"); return wr.queryParam("page", page.toString()) .queryParam("entries", entries.toString()) .header("Content-Type", MediaType.TEXT_XML) .accept(MediaType.TEXT_XML) .get(UserList.class); } // TODO move it to the base client to allow login public User getUserDetails() { return getBaseWebResource("users", "user", "details").get(User.class); } public Long insert(User user) { // WebResource wr = getBaseWebResource(); // // String sid = wr.path("resources") String sid = getBaseWebResource("users").header("Content-Type", MediaType.TEXT_XML) .accept(MediaType.TEXT_PLAIN).post(String.class, user); return Long.parseLong(sid); } public void deleteUser(Long id) { getBaseWebResource("users", "user", id).delete(); } public void update(Long id, User user) { getBaseWebResource("users", "user", id).header("Content-Type", MediaType.TEXT_XML) .put(user); } // ========================================================================== // === USER GROUPS MANAGEMENT // ========================================================================== public long insertUserGroup(UserGroup usergroup) { String sid = getBaseWebResource("usergroups").header("Content-Type", MediaType.TEXT_XML) .accept(MediaType.TEXT_PLAIN).post(String.class, usergroup); return Long.parseLong(sid); } public void deleteUserGroup(long usergroupId) { getBaseWebResource("usergroups", "group", usergroupId).delete(); } public void assignUserGroup(long userId, long usergroupId) { getBaseWebResource("usergroups", "group", userId, usergroupId).post(); } public void deassignUserGroup(long userId, long usergroupId) { getBaseWebResource("usergroups", "group", userId, usergroupId).delete(); } public RESTUserGroup getUserGroup(long usergroupId){ return getBaseWebResource("usergroups", "group", usergroupId).get(RESTUserGroup.class); } public UserGroupList getUserGroups(Integer page, Integer entries, boolean all) { WebResource wr = getBaseWebResource("usergroups"); wr = wr.queryParam("page", page.toString()); wr = wr.queryParam("entries", entries.toString()); wr = wr.queryParam("all", ""+all); return wr.header("Content-Type", MediaType.TEXT_XML).accept(MediaType.TEXT_XML) .get(UserGroupList.class); } public ShortResourceList updateSecurityRules(ShortResourceList resourcesToSet, Long groupId, boolean canRead, boolean canWrite) { WebResource wr = getBaseWebResource("usergroups","update_security_rules", groupId, canRead, canWrite); ShortResourceList updatedResources = wr.header("Content-Type", MediaType.TEXT_XML) .accept(MediaType.TEXT_XML).put(ShortResourceList.class, resourcesToSet); return updatedResources; } public RESTUserGroup getUserGroup(String name) { return getBaseWebResource("usergroups", "group", "name",name).get(RESTUserGroup.class); } }