package com.sukamo.membership.service;
import java.util.List;
import java.util.logging.Logger;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
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 com.sukamo.membership.dto.SearchRequestVo;
import com.sukamo.membership.dto.MemberListVo;
import com.sukamo.membership.persistence.entity.Member;
import com.sukamo.membership.dto.MembershipListVo;
import com.sukamo.membership.persistence.entity.Membership;
/**
* REST end points for Membership
*/
@Path("/membership")
@Produces(MediaType.APPLICATION_JSON)
public class MembershipRestResource extends AbstractRestResource {
private final static Logger log = Logger.getLogger(MembershipRestResource.class.getName());
private static MembershipService membershipService = null;
private MembershipService getMembershipService() {
if (membershipService == null) {
membershipService = new MembershipService();
}
return membershipService;
}
@Path("members")
@GET
public List<Member> getAllMembers() {
try {
log.fine("Getting all Members");
isAuthorized("getAllMembers");
return getMembershipService().getAllMembers();
} catch (Exception e) {
throw new MembershipWebApplicationException(e.getMessage());
}
}
@Path("members/page/{pageNumber}/item-count/{itemsPerPage}")
@GET
public MemberListVo getAllMembers(@PathParam("pageNumber") final int pageNumber, @PathParam("itemsPerPage") final int itemsPerPage) {
try {
log.fine("Getting Members");
isAuthorized("getAllMembers");
return getMembershipService().getMembers(pageNumber, itemsPerPage);
} catch (Exception e) {
throw new MembershipWebApplicationException(e.getMessage());
}
}
@Path("members/page/{pageNumber}/item-count/{itemsPerPage}")
@POST
public MemberListVo searchMembers(@PathParam("pageNumber") final int pageNumber, @PathParam("itemsPerPage") final int itemsPerPage, List<SearchRequestVo> criteria) {
try {
log.fine("Searching Members");
isAuthorized("searchMembers");
return getMembershipService().searchMembers(pageNumber, itemsPerPage, criteria);
} catch (Exception e) {
throw new MembershipWebApplicationException(e.getMessage());
}
}
@Path("member/{memberId}")
@GET
public Member getMember(@PathParam("memberId") final Long memberId) {
try {
log.fine("Getting Member for " + memberId);
isAuthorized("getMember");
return getMembershipService().getMember(memberId);
} catch (Exception e) {
throw new MembershipWebApplicationException(e.getMessage());
}
}
@Path("member/{memberId}")
@DELETE
public Response deleteMember(@PathParam("memberId") final Long memberId) {
try {
log.fine("Deleting Member " + memberId);
isAuthorized("deleteMember");
getMembershipService().deleteMember(memberId);
} catch (Exception e) {
throw new MembershipWebApplicationException(e.getMessage());
}
return Response.ok().build();
}
@Path("member")
@POST
@Consumes(MediaType.APPLICATION_JSON)
public Member saveMember(Member member) {
try {
log.fine("Saving Member");
isAuthorized("saveMember");
return getMembershipService().saveMember(member);
} catch (Exception e) {
throw new MembershipWebApplicationException(e.getMessage());
}
}
@Path("member/email_id/{emailId}")
@GET
public Member getMemberByEmailId(@PathParam("emailId") final String emailId) {
try {
log.fine("Getting Member for " + emailId);
isAuthorized("getMember");
return getMembershipService().getMemberByEmailId(emailId);
} catch (Exception e) {
throw new MembershipWebApplicationException(e.getMessage());
}
}
@Path("memberships")
@GET
public List<Membership> getAllMemberships() {
try {
log.fine("Getting all Memberships");
isAuthorized("getAllMemberships");
return getMembershipService().getAllMemberships();
} catch (Exception e) {
throw new MembershipWebApplicationException(e.getMessage());
}
}
@Path("memberships/page/{pageNumber}/item-count/{itemsPerPage}")
@GET
public MembershipListVo getAllMemberships(@PathParam("pageNumber") final int pageNumber, @PathParam("itemsPerPage") final int itemsPerPage) {
try {
log.fine("Getting Memberships");
isAuthorized("getAllMemberships");
return getMembershipService().getMemberships(pageNumber, itemsPerPage);
} catch (Exception e) {
throw new MembershipWebApplicationException(e.getMessage());
}
}
@Path("membership/{membershipId}")
@GET
public Membership getMembership(@PathParam("membershipId") final Long membershipId) {
try {
log.fine("Getting Membership for " + membershipId);
isAuthorized("getMembership");
return getMembershipService().getMembership(membershipId);
} catch (Exception e) {
throw new MembershipWebApplicationException(e.getMessage());
}
}
@Path("membership/{membershipId}")
@DELETE
public Response deleteMembership(@PathParam("membershipId") final Long membershipId) {
try {
log.fine("Deleting Membership " + membershipId);
isAuthorized("deleteMembership");
getMembershipService().deleteMembership(membershipId);
} catch (Exception e) {
throw new MembershipWebApplicationException(e.getMessage());
}
return Response.ok().build();
}
@Path("membership")
@POST
@Consumes(MediaType.APPLICATION_JSON)
public Membership saveMembership(Membership membership) {
try {
log.fine("Saving Membership");
isAuthorized("saveMembership");
return getMembershipService().saveMembership(membership);
} catch (Exception e) {
throw new MembershipWebApplicationException(e.getMessage());
}
}
}