LectureView.java 3.64 KB
package fi.codecrew.moya.web.lecture;

import javax.ejb.EJB;
import javax.enterprise.context.ConversationScoped;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.model.ListDataModel;
import javax.inject.Named;

import fi.codecrew.moya.beans.EventBeanLocal;
import fi.codecrew.moya.beans.LectureBeanLocal;
import fi.codecrew.moya.enums.apps.LecturePermission;
import fi.codecrew.moya.model.Lecture;
import fi.codecrew.moya.model.LectureGroup;
import fi.codecrew.moya.utilities.I18n;
import fi.codecrew.moya.web.cdiview.GenericCDIView;

@Named
@ConversationScoped
public class LectureView extends GenericCDIView {

	private static final long serialVersionUID = 1L;

	@EJB
	LectureBeanLocal lectureBean;

	@EJB
	EventBeanLocal eventBean;

	private LectureGroup currentLectureGroup;
	private Lecture currentLecture;

	private boolean creatingLecture = true;

	private boolean multicreate = false;

	private ListDataModel<Lecture> lectures;

	private Integer lecturegroupId = null;

	public void initView() {
		if (super.requirePermissions(LecturePermission.MANAGE)) {
			super.beginConversation();
		}
	}

	public void saveLecture() {
		FacesContext context = FacesContext.getCurrentInstance();

		if (currentLecture == null) {
			// this should never happen, so no internatiolazion here.
			context.addMessage(null, new FacesMessage(I18n.get("error"), "There was some internal error when saving lecture group, basicly there was no lecturegroup to save."));
			return;
		}

		currentLecture = lectureBean.saveLecture(currentLecture);
		currentLectureGroup = currentLecture.getLectureGroup();

		if (creatingLecture)
			context.addMessage(null, new FacesMessage(I18n.get("success"), I18n.get("lecturegroup.create.success")));
		else
			context.addMessage(null, new FacesMessage(I18n.get("success"), I18n.get("lecturegroup.save.success")));

		this.creatingLecture = false;

		lectures = null;

		if (isMulticreate()) {
			currentLecture = (Lecture) currentLecture.clone();

			currentLecture.setName("");
			currentLecture.setDescription("");
		} else {
			currentLecture = null;
		}

	}

	public void editCurrent() {
		if (lectures != null && lectures.isRowAvailable()) {
			this.creatingLecture = false;
			currentLecture = lectures.getRowData();
		}
	}

	public void createNew() {
		creatingLecture = true;
		currentLecture = null;
	}

	public Integer getLectureGroupId() {

		return lecturegroupId;
	}

	public void setLectureGroupId(Integer lectureGroupId) {

		this.lecturegroupId = lectureGroupId;

	}

	public ListDataModel<Lecture> getLectures() {

		if (lectures == null && getCurrentLectureGroup() != null) {
			lectures = new ListDataModel<Lecture>(getCurrentLectureGroup().getLectures());
		}

		return lectures;
	}

	public void setLectures(ListDataModel<Lecture> lectures) {
		this.lectures = lectures;
	}

	public boolean isMulticreate() {
		return multicreate;
	}

	public void setMulticreate(boolean multicreate) {
		this.multicreate = multicreate;
	}

	public Lecture getCurrentLecture() {
		if (currentLecture == null) {
			currentLecture = new Lecture(getCurrentLectureGroup());
		}

		return currentLecture;
	}

	public void setCurrentLecture(Lecture currentLecture) {
		this.currentLecture = currentLecture;
	}

	public LectureGroup getCurrentLectureGroup() {

		if (currentLectureGroup == null) {
			currentLectureGroup = lectureBean.findLectureGroup(lecturegroupId);
		}

		return currentLectureGroup;
	}

	public String getEditPanelTitle() {
		if (isCreatingLecture()) {
			return I18n.get("lecture.createLecture");
		} else {
			return I18n.get("lecture.saveLecture");
		}
	}

	public boolean isCreatingLecture() {
		return creatingLecture;
	}

}