Class GroupManager

java.lang.Object
org.vrspace.server.core.GroupManager

@Component @Lazy public class GroupManager extends Object
Manages client group membership and ownership. General workflow when joining private groups: ask to join, owner allows. OR, invite a member, member accepts. For public groups, member just joins, though invite/accept should work. User can leave the group, or get kicked by the owner.
Author:
joe
  • Constructor Details

    • GroupManager

      public GroupManager()
  • Method Details

    • getInstance

      public static GroupManager getInstance()
    • init

      @PostConstruct public void init()
    • listGroups

      @Transactional public List<UserGroup> listGroups(Client client)
    • listOwnedGroups

      @Transactional public List<UserGroup> listOwnedGroups(Client client)
    • createGroup

      @Transactional public UserGroup createGroup(Client client, UserGroup group)
    • updateGroup

      @Transactional public UserGroup updateGroup(Client client, UserGroup group)
    • deleteGroup

      @Transactional public void deleteGroup(Client client, UserGroup group)
    • show

      @Transactional public List<Client> show(UserGroup group)
    • invite

      @Transactional public void invite(UserGroup group, Long memberId, Client owner)
    • invite

      @Transactional public void invite(UserGroup group, Client member, Client owner)
      Invite a client to a group. For private groups, only owners can invite.
      Parameters:
      group -
      member -
    • accept

      @Transactional public void accept(UserGroup group, Client member)
      Accept invitation to a group, either public or private
      Parameters:
      group -
      member -
    • ask

      @Transactional public void ask(UserGroup group, Client member)
      Ask to join a private group
      Parameters:
      group -
      member -
    • allow

      @Transactional public void allow(UserGroup group, Long memberId, Client owner)
    • allow

      @Transactional public void allow(UserGroup group, Client member, Client owner)
      Allow a client who asked to join a private group
      Parameters:
      group -
      member -
    • join

      @Transactional public void join(UserGroup group, Client member)
      Join a public group
      Parameters:
      group -
      member -
    • leave

      @Transactional public void leave(UserGroup group, Client member)
      Leave a group
      Parameters:
      group -
      member -
    • kick

      @Transactional public void kick(UserGroup group, long memberId, Client owner)
    • kick

      @Transactional public void kick(UserGroup group, Client member, Client owner)
      Group owner can kick another user from the group
      Parameters:
      group -
      member -
    • pendingRequests

      @Transactional public List<GroupMember> pendingRequests(UserGroup group, Client member)
      Group owner can list all pending join requests
      Parameters:
      group -
      member -
      Returns:
    • pendingInvitations

      @Transactional public List<GroupMember> pendingInvitations(Client member)
      Any user can list their own pending invitations
      Parameters:
      member -
      Returns:
    • addOwner

      @Transactional public void addOwner(UserGroup group, Client owner)
    • removeOwner

      @Transactional public void removeOwner(UserGroup group, Client owner)
    • write

      @Transactional public void write(Client sender, UserGroup group, String text)
    • worldInvite

      @Transactional public void worldInvite(Client sender, UserGroup group, String text, String link)
    • getGroup

      @Transactional public UserGroup getGroup(Client client, String name)
    • getGroup

      @Transactional public UserGroup getGroup(Client client, long groupId)
    • getGroup

      @Transactional public UserGroup getGroup(long groupId)
    • unreadGroups

      @Transactional public List<UserGroup> unreadGroups(Client client)
    • unreadMessages

      @Transactional public List<GroupMessage> unreadMessages(Client client, UserGroup group)
    • listOwners

      @Transactional public List<Client> listOwners(UserGroup group)