package hu.sch.services; import hu.sch.domain.Group; import hu.sch.domain.Membership; import hu.sch.domain.user.User; import hu.sch.services.exceptions.MembershipAlreadyExistsException; import java.util.Date; import java.util.List; import javax.ejb.Local; /** * Memebership management. * * @author tomi */ @Local public interface MembershipManagerLocal { /** * Creates a new membership: basically a user joins a group as a member. * * @param group the group the user wants to join to. * @param user the user which wants to join. * @param membershipStart start of the membership * @param membershipEnd end of the membership * @param isAuthorized true and the user will get an automatic "tag" post in * the group. */ void joinGroup(Group group, User user, Date membershipStart, Date membershipEnd, boolean isAuthorized) throws MembershipAlreadyExistsException; /** * Deletes a membership. * * @param membership the membership to delete. * @return true if the deletion was successful, false otherwise. */ void deleteMembership(Membership membership); /** * Gets a membership for the given user-group pair. * * @param groupId * @param userId * @return the membership or null if there is no match */ Membership findMembership(Long groupId, Long userId); /** * Get a membership with the specified id. * * @param id the id of the membership * @return the memerbship object or null if the record was not found */ Membership findMembership(Long id); /** * Activates the membership. * * Turns an "öregtag" into an active member. * * @param membership */ void activateMembership(Membership membership); /** * Inactivates the membership. * * Turns an active member into an "öregtag". * * @param membership */ void inactivateMembership(Membership membership); /** * Fetches and sets the memberships for the given group. * * @param group the group which memberships collection will be populated. * @return the same group with the memberships included */ public Group fetchMembershipsFor(Group group); /** * Gets memberships for user. * * It includes groups and posts as well. * * NOTE: probably it is a temporary solution. * * @param user * @return */ List<Membership> findMembershipsForUser(User user); /** * Gets active memberships for a group. Includes some user info in the * fetched memeberships. * * @param groupId * @return */ List<Membership> findActiveMembershipsForGroup(Long groupId); /** * Gets inactive (öregtag) memberships for a group. Includes some user info * in the fetched memeberships. * * @param groupId * @return */ List<Membership> findInactiveMembershipsForGroup(Long groupId); }