/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.smartitengineering.user.ws.resources; import com.smartitengineering.user.service.Services; import com.smartitengineering.user.domain.Organization; import com.smartitengineering.user.domain.Privilege; import com.smartitengineering.user.domain.UserGroup; import com.smartitengineering.util.rest.atom.server.AbstractResource; import javax.ws.rs.DELETE; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.ResponseBuilder; import javax.ws.rs.core.Response.Status; import org.apache.abdera.model.Feed; import org.apache.abdera.model.Link; /** * * @author modhu7 */ @Path("/orgs/sn/{organizationUniqueShortName}/usergroups/name/{groupName}/privs/name/{privilegeName}") public class UserGroupPrivilegeResource extends AbstractResource { private String organizationUniqueShortName; private String groupName; private String privilegeName; private static String REL_PRIV = "privilege"; private Organization organization; private UserGroup userGroup; private Privilege privilege; public UserGroupPrivilegeResource(@PathParam("organizationUniqueShortName") String organizationUniqueShortName, @PathParam( "groupName") String groupName, @PathParam("privilegeName") String privilegeName) { this.organizationUniqueShortName = organizationUniqueShortName; this.groupName = groupName; this.privilegeName = privilegeName; organization = getOrganization(); userGroup = getUserGroup(); privilege = getPrivilege(); } @GET @Produces(MediaType.APPLICATION_ATOM_XML) public Response get() { ResponseBuilder responseBuilder; if (organization == null || userGroup == null || privilege == null) { return Response.status(Status.NOT_FOUND).build(); } try { responseBuilder = Response.status(Status.OK); Feed privilegeFeed = getUserGroupPrivilegeFeed(); responseBuilder = Response.ok(privilegeFeed); } catch (Exception ex) { responseBuilder = Response.status(Status.INTERNAL_SERVER_ERROR); } return responseBuilder.build(); } @DELETE public Response delete() { ResponseBuilder responseBuilder; if (organization == null || userGroup == null || privilege == null) { return Response.status(Status.NOT_FOUND).build(); } try { responseBuilder = Response.status(Status.OK); userGroup.getPrivileges().remove(getPrivilege()); Services.getInstance().getUserGroupService().update(userGroup); } catch (Exception ex) { responseBuilder = Response.status(Status.INTERNAL_SERVER_ERROR); } return responseBuilder.build(); } private Feed getUserGroupPrivilegeFeed() { Feed privilegeFeed = getAbderaFactory().newFeed(); privilegeFeed.setId(privilegeName); privilegeFeed.setTitle(privilegeName); privilegeFeed.addLink(getSelfLink()); Link altLink = getAbderaFactory().newLink(); altLink.setHref(getRelativeURIBuilder().path(UserGroupPrivilegeResource.class).build(organizationUniqueShortName, groupName, privilegeName). toString()); altLink.setRel(Link.REL_ALTERNATE); altLink.setMimeType(MediaType.APPLICATION_JSON); privilegeFeed.addLink(altLink); Link privLink = getAbderaFactory().newLink(); privLink.setHref(getRelativeURIBuilder().path(OrganizationPrivilegeResource.class).build(organizationUniqueShortName, privilegeName).toString()); privLink.setRel(REL_PRIV); privLink.setMimeType(MediaType.APPLICATION_JSON); privilegeFeed.addLink(privLink); return privilegeFeed; } private Privilege getPrivilege() { return Services.getInstance().getPrivilegeService().getPrivilegeByOrganizationAndPrivilegeName( organizationUniqueShortName, privilegeName); } private Organization getOrganization() { return Services.getInstance().getOrganizationService().getOrganizationByUniqueShortName(organizationUniqueShortName); } private UserGroup getUserGroup() { return Services.getInstance().getUserGroupService().getByOrganizationAndUserGroupName(organizationUniqueShortName, groupName); } @Override protected String getAuthor() { return "Smart User"; } }