PlaceGroupBean.java 2.77 KB
package fi.insomnia.bortal.beans;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import javax.ejb.EJB;
import javax.ejb.Stateless;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import fi.insomnia.bortal.enums.Permission;
import fi.insomnia.bortal.enums.RolePermission;
import fi.insomnia.bortal.exceptions.PermissionDeniedException;
import fi.insomnia.bortal.facade.GroupMembershipFacade;
import fi.insomnia.bortal.facade.PlaceGroupFacade;
import fi.insomnia.bortal.model.GroupMembership;
import fi.insomnia.bortal.model.Place;
import fi.insomnia.bortal.model.PlaceGroup;
import fi.insomnia.bortal.model.User;

/**
 * Session Bean implementation class PlaceGroupBean
 */
@Stateless
public class PlaceGroupBean implements PlaceGroupBeanLocal {

    private static final Logger logger = LoggerFactory.getLogger(PlaceGroupBean.class);
    @EJB
    private EventBeanLocal eventbean;

    @EJB
    private PlaceGroupFacade pgfacade;
    @EJB
    private GroupMembershipFacade gmemfacade;
    @EJB
    private UserBeanLocal userbean;
    @EJB
    private SecurityBeanLocal secubean;

    /**
     * Default constructor.
     */
    public PlaceGroupBean() {
        // TODO Auto-generated constructor stub
    }

    // @Override
    // public PlaceGroup createPlaceGroup(User creator) {
    // }

    // @Override
    // public GroupMembership createGroupMembership(PlaceGroup pg, Place p) {
    //
    // GroupMembership membership = new
    // GroupMembership(eventbean.getCurrentEvent(), pg, p,
    // gmemfacade.createInviteToken());
    // gmemfacade.create(membership);
    // return membership;
    // }

    @Override
    public List<GroupMembership> getMemberships(User user) {
        userbean.fatalNotLoggedIn();
        List<GroupMembership> ret = gmemfacade.find(eventbean.getCurrentEvent(), user);
        return ret;
    }

    @Override
    public boolean associateToToken(User user, String token) {
        userbean.fatalNotLoggedIn();
        GroupMembership mem = gmemfacade.findByToken(token);
        boolean ret = false;

        if (mem != null && mem.getUser() == null) {
            mem.setUser(user);
            gmemfacade.merge(mem);
            ret = true;
        }

        return ret;

    }

    @Override
    public void releaseAndGenerateToken(GroupMembership gmem) {
        if (!userbean.getCurrentUser().equals(gmem.getPlaceGroup().getCreator()) ||
                !userbean.hasCurrentUserPermission(Permission.MAP, RolePermission.WRITE)) {
            throw new PermissionDeniedException(secubean, userbean.getCurrentUser(), "User tried to release and generate group membership: " + gmem);
        }
        gmem.setUser(null);
        gmem.setInviteToken(gmemfacade.createInviteToken(eventbean.getCurrentEvent()));
        gmemfacade.merge(gmem);
    }
}