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());
            }
        }    
    }

results matching ""

    No results matching ""