PlaceGroupView.java 3.42 KB
package fi.insomnia.bortal.view;

import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.model.ListDataModel;

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

import fi.insomnia.bortal.beans.PlaceBeanLocal;
import fi.insomnia.bortal.beans.PlaceGroupBeanLocal;
import fi.insomnia.bortal.beans.UserBeanLocal;
import fi.insomnia.bortal.enums.Permission;
import fi.insomnia.bortal.enums.RolePermission;
import fi.insomnia.bortal.model.GroupMembership;
import fi.insomnia.bortal.model.Place;
import fi.insomnia.bortal.model.PlaceGroup;
import fi.insomnia.bortal.model.User;

@ManagedBean(name = "placeGroupView_old")
@SessionScoped
public class PlaceGroupView extends GenericView {

	private static final Logger logger = LoggerFactory.getLogger(PlaceGroupView.class);
	private User user;
	@EJB
	private UserBeanLocal userBean;
	@EJB
	private PlaceGroupBeanLocal placegroupBean;
	private ListDataModel<GroupMembership> memberlist;

	@EJB
	private PlaceBeanLocal placebean;
	@EJB
	private PlaceGroupBeanLocal placegroupBean;

	private PlaceGroup group;

	private String token;
	private ListDataModel<Place> placelist;
	private Place place;

	public void editSelf() {
		userBean.fatalNotLoggedIn();
		setUser(userBean.getCurrentUser());
	}

	public void initPlacegroupsPlacelist() {
		setPlacelist(new ListDataModel<Place>(group.getPlaces()));

	}

	public void setUser(User user) {
		this.user = user;
	}

	public User getUser() {
		userBean.fatalNotLoggedIn();
		if (user != null) {
			logger.debug("User {}", user.getPlaceGroups().size());
		}
		return user;
	}


	public ListDataModel<GroupMembership> getGroupMemberships() {
		userBean.fatalNotLoggedIn();
		memberlist = new ListDataModel<GroupMembership>(placegroupBean.getMembershipsAndCreations(user));
		return memberlist;
	}


	public void setToken(String token) {
		this.token = token;
	}

	public String getToken() {
		return token;
	}

	public boolean canModify(GroupMembership row) {
		boolean ret = false;
		if (row != null && (
				userBean.getCurrentUser().equals(row.getPlaceGroup().getCreator()) ||
						userBean.hasPermission(Permission.MAP, RolePermission.WRITE))) {
			ret = true;
		}
		return ret;
	}

	public String releasePlace() {
		GroupMembership row = memberlist.getRowData();
		if (row != null && (userBean.getCurrentUser().equals(row.getPlaceGroup().getCreator()) ||
				userBean.hasPermission(Permission.MAP, RolePermission.WRITE))) {
			placegroupBean.releaseAndGenerateToken(row);
			this.addFaceMessage("placegroupview.placeReleased", row.getPlaceReservation().getName());
		} else {
			this.addFaceMessage("placegroupview.placeReleaseFailed", row.getPlaceReservation().getName());

		}
		return null;
	}

	public String removePlaceFromGroup() {
		userBean.fatalPermission(Permission.MAP, RolePermission.WRITE, "No right to release place ", place);
		place.getGroup().getPlaces().remove(place);
		place.setGroup(null);
		place = placebean.mergeChanges(place);
		return null;
	}

	public String editPlace() {
		place = placelist.getRowData();
		return null;
	}

	public void setGroup(PlaceGroup group) {
		this.group = group;
	}

	public PlaceGroup getGroup() {
		return group;
	}

	public void setPlacelist(ListDataModel<Place> placelist) {
		this.placelist = placelist;
	}

	public ListDataModel<Place> getPlacelist() {
		return placelist;
	}

	public void setPlace(Place place) {
		this.place = place;
	}

	public Place getPlace() {
		return place;
	}
}