diff src/main/java/de/mpiwg/itgroup/ismi/entry/beans/SessionBean.java @ 1:2e911857a759

(none)
author jurzua
date Wed, 29 Oct 2014 14:00:28 +0000
parents
children 4ec8d4cfad26
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/de/mpiwg/itgroup/ismi/entry/beans/SessionBean.java	Wed Oct 29 14:00:28 2014 +0000
@@ -0,0 +1,1131 @@
+package de.mpiwg.itgroup.ismi.entry.beans;
+
+import java.io.IOException;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+import javax.faces.event.ActionEvent;
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.log4j.Logger;
+import org.mpi.openmind.cache.WrapperService;
+import org.mpi.openmind.repository.bo.Attribute;
+import org.mpi.openmind.repository.bo.Entity;
+import org.mpi.openmind.security.SecurityService;
+import org.mpi.openmind.security.bo.User;
+import org.mpiwg.itgroup.escidoc.utils.ESciDocItemDataTable;
+import org.mpiwg.itgroup.escidoc.web.ESciDocItemForm;
+import org.mpiwg.itgroup.geonames.GeonameForm;
+import org.richfaces.event.ItemChangeEvent;
+
+import de.mpiwg.itgroup.ismi.admin.AdminBean;
+import de.mpiwg.itgroup.ismi.browse.EntityDetailsBean;
+import de.mpiwg.itgroup.ismi.defs.DefinitionForm;
+import de.mpiwg.itgroup.ismi.entry.beans.AbstractISMIBean.CheckResults;
+import de.mpiwg.itgroup.ismi.event.beans.CopyEvent;
+import de.mpiwg.itgroup.ismi.event.beans.StudyEvent;
+import de.mpiwg.itgroup.ismi.event.beans.TransferEvent;
+import de.mpiwg.itgroup.ismi.merge.GeneralMerge;
+import de.mpiwg.itgroup.ismi.publicView.DynamicPageEditor;
+import de.mpiwg.itgroup.ismi.publicView.PublicCodexBean;
+import de.mpiwg.itgroup.ismi.publicView.PublicCodexList;
+import de.mpiwg.itgroup.ismi.publicView.PublicCodexView;
+import de.mpiwg.itgroup.ismi.publicView.pages.DynamicPage;
+import de.mpiwg.itgroup.ismi.search.beans.AdvancedSearchBean;
+import de.mpiwg.itgroup.ismi.search.beans.DisplayAuthorBean;
+import de.mpiwg.itgroup.ismi.search.beans.DisplayTitleBean;
+import de.mpiwg.itgroup.ismi.util.guiComponents.Calendar;
+import de.mpiwg.itgroup.ismi.util.guiComponents.EntityList;
+
+public class SessionBean extends AbstractBean implements Serializable{
+	
+	private static Logger logger = Logger.getLogger(SessionBean.class);
+	
+	private DefinitionForm defForm = new DefinitionForm();
+	private StudyEvent studyEventForm = new StudyEvent();
+	private CopyEvent copyEventForm = new CopyEvent();
+	private TransferEvent transferEventForm = new TransferEvent();
+	private transient AdvancedSearchBean advancedSearch = new AdvancedSearchBean();
+	private GeonameForm geoForm = new GeonameForm();
+	
+	private EntityDetailsBean entDetailsForm = new EntityDetailsBean();
+	
+	
+	private DisplayAuthorBean displayAuthor = new DisplayAuthorBean();
+	private DisplayTitleBean displayTitle = new DisplayTitleBean();
+	
+	private ESciDocItemForm eSciDocForm = new ESciDocItemForm();
+	
+	private ESciDocItemDataTable refDataTable = new ESciDocItemDataTable(null);
+	
+	private DynamicPageEditor pageEditor = null;
+	
+
+	private Calendar currentCalendar = null;
+	private EntityList currentEntListForCalendar = null;
+	private Long currentEntIdForCalendar;
+	
+	private boolean displayLoginDialog = false;
+	
+	private DigiListBean digiList;
+	
+	//public
+	private DynamicPage dynamicPage;
+	private PublicCodexView publicCodexView;
+	private PublicCodexBean publicCodexBean;
+	
+	public void editCalendar(Calendar cal, EntityList list, Long entId){
+		this.currentCalendar = cal;
+		this.currentEntListForCalendar = list;
+		this.currentEntIdForCalendar = entId;
+	}
+	
+	public void listenerSaveEditionCalendar(ActionEvent event){
+		if(this.currentEntListForCalendar != null && this.currentEntIdForCalendar != null){
+			this.currentEntListForCalendar.getCalendarMap().put(currentEntIdForCalendar, currentCalendar);
+			this.currentCalendar = null;
+			this.currentEntListForCalendar = null;
+			this.currentEntIdForCalendar = null;
+		}
+	}
+	
+	
+	public static String PAGE_ENTITY_REPOSITORY = "entity_repository";
+	public static String PAGE_ENTITY_DETAILS = "entity_details";
+	public static String PAGE_ENTRY = "entry_edit_entity";
+	public static String PAGE_EVENT_FORM = "event_form";
+	public static String PAGE_SIMPLE_SEARCH = "simple_search";
+	public static String PAGE_PUBLIC_CODICES = "public_codices";
+	public static String PAGE_DISPLAY_TITLE = "display_title";
+	public static String PAGE_DISPLAY_AUTHOR = "display_author";
+	public static String PAGE_GENERAL_MERGE = "general_merge";
+	public static String PAGE_GEO_FORM = "geo_form";
+	public static String PAGE_ADMIN = "admin";
+	public static String PAGE_PROFILE = "profile";
+	public static String PAGE_DEF_EDITOR = "defEditor";
+	
+	private User user = null;
+	private String username = "";
+	private String password = "";
+
+	//private Entity currentEntity;
+
+	private GeneralMerge generalMerge;
+
+	//private String last_action;
+	//private Date time_of_lastAction;
+	
+	private String remoteAddr;
+
+	private static final long serialVersionUID = 1L;
+	
+	//Entities tabs
+	public static String WITNESS_TAB = "Witness";
+	public static String CODEX_TAB = "Codex";
+	public static String COLLECTION_TAB = "Collection";
+	public static String REPOSITORY_TAB = "Repository";
+	public static String CITY_TAB = "Place";
+	public static String TEXT_TAB = "Text";
+	public static String PERSON_TAB = "Person";
+	public static String ALIAS_TAB = "Alias";
+	public static String SUBJECT_TAB = "Subject";
+	public static String ROLE_TAB = "Role";
+	public static String DIGI_TAB = "Digi";
+
+	//Events tabs
+	public static String WITNESS_STUDY_EVENT_TAB = "Study";
+	public static String COPY_EVENT_TAB = "Copy";
+	public static String TRANSFER_EVENT_TAB = "Transfer";
+	
+	private String selectedTab = WITNESS_TAB;
+	private String selectedEventTab = WITNESS_STUDY_EVENT_TAB;
+	private String selectedAdvancedSearchTab = "01";
+	
+
+	private Long editFormCurrentEntId;
+
+	private boolean displayError = false;
+	private ArrayList<String> errorMessages;
+
+	public String getOCByTabIndex(){
+		if(selectedTab != null){
+			if(selectedTab.equals(WITNESS_TAB)){
+				return AbstractISMIBean.WITNESS;
+			}else if(selectedTab.equals(CODEX_TAB)){
+				return AbstractISMIBean.CODEX;
+			}else if(selectedTab.equals(COLLECTION_TAB)){
+				return AbstractISMIBean.COLLECTION;
+			}else if(selectedTab.equals(REPOSITORY_TAB)){
+				return AbstractISMIBean.REPOSITORY;
+			}else if(selectedTab.equals(CITY_TAB)){
+				return AbstractISMIBean.PLACE;
+			}else if(selectedTab.equals(TEXT_TAB)){
+				return AbstractISMIBean.TEXT;
+			}else if(selectedTab.equals(PERSON_TAB)){
+				return AbstractISMIBean.PERSON;
+			}else if(selectedTab.equals(ALIAS_TAB)){
+				return AbstractISMIBean.ALIAS;
+			}else if(selectedTab.equals(SUBJECT_TAB)){
+				return AbstractISMIBean.SUBJECT;
+			}else if(selectedTab.equals(ROLE_TAB)){
+				return AbstractISMIBean.ROLE;
+			}else if(selectedTab.equals(DIGI_TAB)){
+				return AbstractISMIBean.DIGITALIZATION;
+			}
+		}
+		return null;
+	}
+	
+	public void listenerOpenESciDocForm(ActionEvent event){
+		this.refDataTable.open();
+	}
+
+	//************************************
+	//************************************
+	//************************************
+	public SessionBean() {
+		if(StringUtils.isBlank(this.remoteAddr)){
+			this.getRemoteAddr();
+		}
+		logger.info(" [remoteAddr=" + remoteAddr + "]");
+	}
+	
+	private void autoLogin(){
+		/*
+		this.username = "jurzua@mpiwg-berlin.mpg.de";
+		this.password = "221082";
+		this.login();
+			*/
+	}
+
+	public void getRemoteAddr(){
+		try{
+			HttpServletRequest httpServletRequest = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();  
+			this.remoteAddr = httpServletRequest.getRemoteAddr();
+		}catch (Exception ex) {}
+	}
+
+
+	public void listenerLogin(ActionEvent event) {
+		this.login();
+	}
+	
+	public String actionLogin(){
+		this.login();
+		return new String();
+	}
+	
+	public void listenerDisplayLoginDialog(ActionEvent event) {
+		if(user == null){
+			this.displayLoginDialog = true;
+		}else{
+			this.displayLoginDialog = false;
+		}
+	}
+	
+	public String actionLoginCancel(){
+		this.displayLoginDialog = false;
+		return PAGE_SIMPLE_SEARCH;
+	}
+
+	private void login(){
+		user = null;
+		// this.loginMsg = "";
+
+		if (StringUtils.isNotEmpty(username)
+				&& StringUtils.isNotEmpty(password)) {
+			user = getSecurityService().getUserByPassword(username, password);
+		}
+
+		if (user == null) {
+			addErrorMsg("The system does not find the account!");
+			this.displayLoginDialog = false;
+		} else {
+			if(StringUtils.isBlank(this.remoteAddr)){
+				this.getRemoteAddr();
+			}
+			logger.info("login " + username + " [remoteAddr=" + remoteAddr + "]");
+			this.setUser(user);
+			this.generalMerge = new GeneralMerge();
+			this.defForm = new DefinitionForm();
+			// refresh the editor of Dirk
+			addSessionBean("CurrentWitness", new CurrentWitnessBean());
+			addSessionBean("CurrentCodex", new CurrentCodexBean());
+			addSessionBean("CurrentText", new CurrentTextBean());
+			addSessionBean("CurrentPerson", new CurrentPersonBean());
+			addSessionBean("CurrentAlias", new CurrentAliasBean());
+			addSessionBean("CurrentCollection", new CurrentCollectionBean());
+			addSessionBean("CurrentRepository", new CurrentRepositoryBean());
+			addSessionBean("CurrentCity", new CurrentCityBean());
+			addSessionBean("CurrentDigi", new CurrentDigitalizationBean());
+			editFormCurrentEntId = null;
+			this.displayLoginDialog = false;
+		}
+	}
+	
+	public String logout() {
+		if(StringUtils.isBlank(this.remoteAddr)){
+			this.getRemoteAddr();
+		}
+		logger.info("logout " + username + " [remoteAddr=" + remoteAddr + "]");
+		this.username = "";
+		this.password = "";
+		this.user = null;
+		this.generalMerge = null;
+		this.defForm = null;
+		return PAGE_PUBLIC_CODICES;
+	}
+
+	public boolean isCanDelete() {
+		return isAdmin();
+	}
+
+	public boolean isCanMerge() {
+		if (getUser() != null) {
+			String role = getUser().getRole();
+			if (StringUtils.isNotEmpty(role)) {
+				if (AdminBean.Administrator.equals(role)
+						|| AdminBean.Researcher.equals(role)) {
+					return true;
+				}
+			}
+		}
+		return false;
+	}
+
+	public boolean isCanCreate() {
+		if (getUser() != null) {
+			String role = getUser().getRole();
+			if (StringUtils.isNotEmpty(role)) {
+				if (AdminBean.Administrator.equals(role)
+						|| AdminBean.Researcher.equals(role)
+						|| AdminBean.Student.equals(role)) {
+					return true;
+				}
+			}
+		}
+		return false;
+	}
+
+	public boolean isCanEdit() {
+		if (getUser() != null) {
+			String role = getUser().getRole();
+			if (StringUtils.isNotEmpty(role)) {
+				if (AdminBean.Administrator.equals(role)
+						|| AdminBean.Researcher.equals(role)) {
+					return true;
+				}
+			}
+		}
+		return false;
+	}
+
+	public boolean isAdmin() {
+		if (getUser() != null) {
+			String role = getUser().getRole();
+			if (StringUtils.isNotEmpty(role)) {
+				if (AdminBean.Administrator.equals(role)) {
+					return true;
+				}
+			}
+		}
+		return false;
+	}
+
+	private List<String> generalMsgList = new ArrayList<String>();
+	private List<String> errorMsgList = new ArrayList<String>();
+
+	public List<String> getErrorMsgList() {
+		return errorMsgList;
+	}
+
+	public void setErrorMsgList(List<String> errorMsgList) {
+		this.errorMsgList = errorMsgList;
+	}
+
+	public List<String> getGeneralMsgList() {
+		return generalMsgList;
+	}
+
+	public void setGeneralMsgList(List<String> generalMsgList) {
+		this.generalMsgList = generalMsgList;
+	}
+
+	public void addErrorMsg(String msg) {
+		if (this.errorMsgList == null)
+			this.errorMsgList = new ArrayList<String>();
+		if (StringUtils.isNotEmpty(msg)) {
+			this.errorMsgList.add(msg);
+		}
+	}
+
+	public void addGeneralMsg(String msg) {
+		if (this.generalMsgList == null)
+			this.generalMsgList = new ArrayList<String>();
+		if (StringUtils.isNotEmpty(msg)) {
+			this.generalMsgList.add(msg);
+		}
+	}
+
+	public void actionCloseErrorMsgDialog(ActionEvent event) {
+		this.errorMsgList = new ArrayList<String>();
+	}
+
+	public void actionCloseGeneralMsgDialog(ActionEvent event) {
+		this.generalMsgList = new ArrayList<String>();
+	}
+	
+	protected SecurityService getSecurityService() {
+		return getAppBean().getSecurityService();
+	}
+	
+	public void setSelectedTab(String tab) {
+		this.selectedTab = tab;
+	}
+
+	public String closeErrorWindowAction() {
+		setDisplayError(false);
+		return "close_error";
+	}
+
+	public void editEntity(Long id) {
+		Entity entity = getWrapper().getEntityById(id);
+		this.editEntity(entity);
+	}
+	
+	public void editEntity(String id) {
+		try{
+			Long entityId = Long.parseLong(id);
+			this.editEntity(entityId);
+		}catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+	
+	/*
+	public void setPlaceInGeoForm(String id){
+		try {
+			Long placeId = new Long(id);
+			Entity place = getWrapper().getEntityById(placeId);
+			if(place != null){
+				this.geoForm.loadPlace(place);	
+			}
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}*/
+	
+
+	public void editEntity(Entity entity) {
+		logger.info("[" + this.getUsername() +  "] Edit Entity= " + entity);
+
+		entity = getWrapper().getEntityContent(entity);
+
+		this.editFormCurrentEntId = entity.getId();
+		if (entity.getObjectClass().equals("WITNESS")) {
+			this.editWitness(entity);
+			selectedTab = WITNESS_TAB;
+		} else if (entity.getObjectClass().equals("TEXT")) {
+			this.editText(entity);
+			selectedTab = TEXT_TAB;
+		} else if (entity.getObjectClass().equals("REPOSITORY")) {
+			this.editRepository(entity);
+			selectedTab = REPOSITORY_TAB;
+		} else if (entity.getObjectClass().equals("PERSON")) {
+			this.editPerson(entity);
+			selectedTab = PERSON_TAB;
+		} else if (entity.getObjectClass().equals("COLLECTION")) {
+			this.editCollection(entity);
+			selectedTab = COLLECTION_TAB;
+		} else if (entity.getObjectClass().equals("CODEX")) {
+			this.editCodex(entity);
+			selectedTab = CODEX_TAB;
+		} else if (entity.getObjectClass().equals("PLACE")) {
+			this.editPlace(entity);
+			selectedTab = CITY_TAB;
+		} else if (entity.getObjectClass().equals("ALIAS")) {
+			this.editAlias(entity);
+			selectedTab = ALIAS_TAB;
+		} else if (entity.getObjectClass().equals("SUBJECT")) {
+			this.editSubject(entity);
+			selectedTab = SUBJECT_TAB;
+		} else if (entity.getObjectClass().equals("ROLE")) {
+			this.editRole(entity);
+			selectedTab = ROLE_TAB;
+		} else if (entity.getObjectClass().equals("DIGITALIZATION")) {
+			this.editDigi(entity);
+			selectedTab = DIGI_TAB;			
+		} else if (entity.getObjectClass().equals(StudyEvent.OC)) {
+			this.editWitnessStudyEvent(entity);
+			selectedEventTab = WITNESS_STUDY_EVENT_TAB;
+		} else if (entity.getObjectClass().equals(CopyEvent.OC)) {
+			this.editCopyEvent(entity);
+			selectedEventTab = COPY_EVENT_TAB;
+		} else if (entity.getObjectClass().equals(TransferEvent.OC)) {
+			this.editTransferEvent(entity);
+			selectedEventTab = TRANSFER_EVENT_TAB;
+		} else {
+			addErrorMsg("Form not implemented for these entities [" + entity.getObjectClass() + "]");
+		}
+	}
+
+	//***************************
+	//***************************
+	//***************************
+	//***************************
+	//***************************
+	private void editText(Entity text) {
+		CurrentTextBean bean = (CurrentTextBean)getSessionBean(ApplicationBean.CURRENT_TEXT);
+		if(bean == null){
+			bean = new CurrentTextBean();
+			addSessionBean(ApplicationBean.CURRENT_TEXT, bean);	
+		}
+		try {
+			bean.setEntity(text);
+		} catch (Exception e) {
+			logger.error("[U=" + this.getUsername() +  "]" + e.getMessage(), e);
+		}
+	}
+
+	private void editRepository(Entity repository) {
+		CurrentRepositoryBean bean = (CurrentRepositoryBean)getSessionBean(ApplicationBean.CURRENT_REPOSITORY);
+		if(bean == null){
+			bean = new CurrentRepositoryBean();
+			addSessionBean(ApplicationBean.CURRENT_REPOSITORY, bean);
+		}
+		try {
+			bean.setEntity(repository);
+		} catch (Exception e) {
+			logger.error("[U=" + this.getUsername() +  "]" + e.getMessage(), e);
+		}
+	}
+	
+	private void editPerson(Entity person) {
+		CurrentPersonBean bean = (CurrentPersonBean)getSessionBean(ApplicationBean.CURRENT_PERSON);
+		if(bean == null){
+			bean = new CurrentPersonBean();
+			addSessionBean(ApplicationBean.CURRENT_PERSON, bean);
+		}
+		try {
+			bean.setEntity(person);
+		} catch (Exception e) {
+			logger.error("[U=" + this.getUsername() +  "]" + e.getMessage(), e);
+		}
+	}
+
+	private void editCollection(Entity collection) {
+		CurrentCollectionBean bean = (CurrentCollectionBean) getSessionBean(ApplicationBean.CURRENT_COLLECTION);
+		if (bean == null) {
+			bean = new CurrentCollectionBean();
+			addSessionBean(ApplicationBean.CURRENT_COLLECTION, bean);
+		}
+		try {
+			bean.setEntity(collection);
+		} catch (Exception e) {
+			logger.error("[U=" + this.getUsername() +  "]" + e.getMessage(), e);
+		}
+	}
+
+	private void editCodex(Entity codex) {
+		CurrentCodexBean bean = (CurrentCodexBean) getSessionBean(ApplicationBean.CURRENT_CODEX);
+		if (bean == null) {
+			bean = new CurrentCodexBean();
+			addSessionBean(ApplicationBean.CURRENT_CODEX, bean);
+		}
+		try {
+			bean.setEntity(codex);
+		} catch (Exception e) {
+			logger.error("[U=" + this.getUsername() +  "]" + e.getMessage(), e);
+		}
+	}
+
+	private void editPlace(Entity place) {
+		CurrentCityBean bean = (CurrentCityBean) getSessionBean(ApplicationBean.CURRENT_CITY);
+		if (bean == null) {
+			bean = new CurrentCityBean();
+			addSessionBean(ApplicationBean.CURRENT_CITY, bean);
+		}
+		try {
+			bean.setEntity(place);
+		} catch (Exception e) {
+			logger.error("[U=" + this.getUsername() +  "]" + e.getMessage(), e);
+		}
+	}
+
+	private void editAlias(Entity alias) {
+		CurrentAliasBean bean = (CurrentAliasBean) getSessionBean(ApplicationBean.CURRENT_ALIAS);
+		if (bean == null) {
+			bean = new CurrentAliasBean();
+			addSessionBean(ApplicationBean.CURRENT_ALIAS, bean);
+		}
+		try {
+			bean.setEntity(alias);
+		} catch (Exception e) {
+			logger.error("[U=" + this.getUsername() +  "]" + e.getMessage(), e);
+		}
+	}
+
+	private void editSubject(Entity subject) {
+		CurrentSubjectBean bean = (CurrentSubjectBean) getSessionBean(ApplicationBean.CURRENT_SUBJECT);
+		if (bean == null) {
+			bean = new CurrentSubjectBean();
+			addSessionBean(ApplicationBean.CURRENT_SUBJECT, bean);
+		}
+		try {
+			bean.setEntity(subject);
+		} catch (Exception e) {
+			logger.error("[U=" + this.getUsername() +  "]" + e.getMessage(), e);
+		}
+	}
+	
+	private void editRole(Entity role) {
+		CurrentRoleBean bean = (CurrentRoleBean) getSessionBean(ApplicationBean.CURRENT_ROLE);
+		if (bean == null) {
+			bean = new CurrentRoleBean();
+			addSessionBean(ApplicationBean.CURRENT_ROLE, bean);
+		}
+		try {
+			bean.setEntity(role);
+		} catch (Exception e) {
+			logger.error("[U=" + this.getUsername() +  "]" + e.getMessage(), e);
+		}
+	}
+	
+	
+	private void editDigi(Entity digi) {
+		CurrentDigitalizationBean bean = (CurrentDigitalizationBean) getSessionBean(ApplicationBean.CURRENT_DIGI);
+		if (bean == null) {
+			bean = new CurrentDigitalizationBean();
+			addSessionBean(ApplicationBean.CURRENT_DIGI, bean);
+		}
+		try {
+			bean.setEntity(digi);
+		} catch (Exception e) {
+			logger.error("[U=" + this.getUsername() +  "]" + e.getMessage(), e);
+		}
+	}
+	
+	
+
+	private void editWitness(Entity witness) {
+		CurrentWitnessBean bean = (CurrentWitnessBean) getSessionBean(ApplicationBean.CURRENT_WITNESS);
+		if (bean == null) {
+			bean = new CurrentWitnessBean();
+			addSessionBean(ApplicationBean.CURRENT_WITNESS, bean);
+		}
+		try {
+			bean.setEntity(witness);
+		} catch (Exception e) {
+			logger.error("[U=" + this.getUsername() +  "]" + e.getMessage(), e);
+		}
+	}
+	
+	private void editWitnessStudyEvent(Entity event){
+		this.studyEventForm = new StudyEvent(event);
+	}
+	
+	public void listenerCreateStudyEvent(ActionEvent event){
+		this.studyEventForm = new StudyEvent();
+	}
+
+	private void editCopyEvent(Entity event){
+		this.copyEventForm = new CopyEvent(event);
+	}
+	
+	public void listenerCreateCopyEvent(ActionEvent event){
+		this.copyEventForm = new CopyEvent();
+	}
+	
+	private void editTransferEvent(Entity event){
+		this.transferEventForm = new TransferEvent(event);
+	}
+	
+	public void listenerCreateTransferEvent(ActionEvent event){
+		this.transferEventForm = new TransferEvent();
+	}
+
+		
+	public Long getEditFormCurrentEntId() {
+		return editFormCurrentEntId;
+	}
+
+	public void setEditFormCurrentEntId(Long editFormCurrentEntId) {
+		this.editFormCurrentEntId = editFormCurrentEntId;
+	}
+
+	
+    public void updateCurrent(ItemChangeEvent event) {
+    	System.out.println(event.getNewItemName());
+    }
+	
+	public void listenerEntityTabChange(ItemChangeEvent event) {
+		String url = "?formIndex=" + this.selectedTab;
+		this.redirect(null, url);
+	}
+	
+	public void listenerEventTabChange(ItemChangeEvent event) {
+		String url = "?formIndex=" + this.selectedEventTab;
+		this.redirect(null, url);
+	}
+	
+	public void listenerAdvancedSearchTabChange(ItemChangeEvent event) {
+		String url = "?searchForm=" + this.selectedAdvancedSearchTab;
+		this.redirect(null, url);
+	}
+	
+	protected void redirect(String redirectPath, String parameters){
+		FacesContext fc = FacesContext.getCurrentInstance();
+		ExternalContext ec = fc.getExternalContext();
+		String contextPath = ec.getRequestContextPath();
+		if(StringUtils.isEmpty(redirectPath)){
+			redirectPath = ec.getRequestServletPath();	
+		}
+		try {
+			ec.redirect(ec.encodeActionURL(contextPath + redirectPath + parameters));
+			
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+	}
+	
+	public Entity getDefinition(Entity assertion) {
+		return getWrapper().getDefinition(assertion.getObjectClass());
+	}
+	
+	public String toProfile(){
+		return PAGE_PROFILE;
+	}
+
+	public String toSimpleSearch() {
+		return PAGE_SIMPLE_SEARCH;
+	}
+
+	public String toDefinitionEditor(){
+		if(this.defForm != null){
+			this.defForm.loadDefinitions();
+			return PAGE_DEF_EDITOR;
+		}
+		return "";
+	}
+	
+	public String toGeoForm(){
+		this.geoForm.loadPlaces(null);
+		return PAGE_GEO_FORM;
+	}
+
+	public String displayByAttribute() {
+		Attribute att = (Attribute) getRequestBean("attribute");
+		logger.info(att);
+		if (att != null) {
+			Entity ent = getWrapper().getEntityById(att.getSourceId());
+			if (ent.getObjectClass().equals("TEXT")) {
+				this.displayTitle.showTitle(ent.getId());
+				return PAGE_DISPLAY_TITLE;
+			} else if (ent.getObjectClass().equals("PERSON")) {
+				this.displayAuthor.showAuthor(ent.getId());
+				return PAGE_DISPLAY_AUTHOR;
+			}
+		}
+
+		return "";
+	}
+	
+	public void displayAuthorSetPerson(String personId){
+		try{
+			Long id = new Long(personId);
+			Entity person = getWrapper().getEntityById(id);
+			if(person != null){
+				person = getWrapper().getEntityContent(person);
+				if (person.getObjectClass().equals("PERSON")) {
+					this.displayAuthor.showAuthor(person.getId());
+				}	
+			}
+		}catch(Exception e){
+			logger.error("[U=" + this.getUsername() +  "]" + e.getMessage(), e);
+		}
+	}
+	
+	public void displayAuthorSetTitle(String textId){
+		try{
+			Long id = new Long(textId);
+			this.displayAuthor.showTitle(id);
+		}catch(Exception e){
+			logger.error("[U=" + this.getUsername() +  "]" + e.getMessage(), e);
+		}
+	}
+	
+	public void displayAuthorSetWitness(String witnessId){
+		try{
+			Long id = new Long(witnessId);
+			this.displayAuthor.showWitness(id);
+		}catch(Exception e){
+			logger.error("[U=" + this.getUsername() +  "]" + e.getMessage(), e);
+		}
+	}
+	
+	public void displayTitleSetTitle(String textId){
+		try{
+			Long id = new Long(textId);
+			Entity ent = getWrapper().getEntityById(id);
+			if(ent != null){
+				ent = getWrapper().getEntityContent(ent);
+				if (ent.getObjectClass().equals("TEXT")) {
+					//this.editText(ent);
+					this.displayTitle.showTitle(id);
+				}	
+			}
+		}catch(Exception e){
+			logger.error("[U=" + this.getUsername() +  "]" + e.getMessage(), e);
+		}
+	}
+	
+	public void displayTitleSetWitness(String witnessId){
+		try{
+			Long id = new Long(witnessId);
+			this.displayTitle.showWitness(id);
+			
+		}catch(Exception e){
+			logger.error("[U=" + this.getUsername() +  "]" + e.getMessage(), e);
+		}
+	}
+	
+	public void displayTitleFromWitness(String witnessId){
+		try{
+			Long longWitnessId = new Long(witnessId);
+			
+			List<Entity> textList = 
+				getWrapper().getTargetsForSourceRelation(longWitnessId, "is_exemplar_of", "TEXT", 1);
+			if(textList.size() > 0){
+				this.displayTitle.showTitle(textList.get(0).getId());
+				this.displayTitle.showWitness(longWitnessId);	
+			}
+			
+		}catch(Exception e){
+			logger.error("[U=" + this.getUsername() +  "]" + e.getMessage(), e);
+		}
+	}
+	
+	public void displayAuthorFromWitness(String witnessId){
+		try{
+			Long longWitnessId = new Long(witnessId);
+			
+			List<Entity> titleList = 
+				getWrapper().getTargetsForSourceRelation(longWitnessId, "is_exemplar_of", "TEXT", 1);
+			if(titleList.size() > 0){
+				Entity title = titleList.get(0);
+				List<Entity> authorList = 
+					getWrapper().getTargetsForSourceRelation(title.getId(), "was_created_by", "PERSON", 1);
+				if(authorList.size() > 0){
+					this.displayAuthor.showAuthor(authorList.get(0).getId());
+					this.displayAuthor.showTitle(title.getId());
+					this.displayAuthor.showWitness(longWitnessId);
+				}
+			}
+			
+		}catch(Exception e){
+			logger.error("[U=" + this.getUsername() +  "]" + e.getMessage(), e);
+		}
+	}
+	
+	public void displayAuthorFromTitles(String titleId){
+		try{
+			Long longTitleId = new Long(titleId);
+
+			List<Entity> authorList = 
+				getWrapper().getTargetsForSourceRelation(longTitleId, "was_created_by", "PERSON", 1);
+			if(authorList.size() > 0){
+				this.displayAuthor.showAuthor(authorList.get(0).getId());
+				this.displayAuthor.showTitle(longTitleId);
+			}
+			
+		}catch(Exception e){
+			logger.error("[U=" + this.getUsername() +  "]" + e.getMessage(), e);
+		}
+	}
+	
+
+	public String editByAttribute() {
+		Attribute att = (Attribute) getRequestBean("attribute");
+		logger.info(att);
+		if (att != null) {
+			Entity ent = getWrapper().getEntityById(att.getSourceId());
+			if (ent != null) {
+				this.editEntity(ent);
+				return PAGE_ENTRY;
+			}
+		}
+
+		return "";
+	}
+	
+	public void setIdEntityDetails(String id){
+		try{
+			Long idLong = new Long(id);
+			Entity e = getWrapper().getEntityById(idLong);
+			this.entDetailsForm.setEntity(e);
+		}catch(Exception e){
+			logger.error("[U=" + this.getUsername() +  "]" + e.getMessage(), e);
+		}
+	}
+
+	public String editByEntity() {
+		Entity ent = (Entity) getRequestBean("entity");
+		if (ent != null) {
+			if (ent != null) {
+				this.editEntity(ent);
+				return PAGE_ENTRY;
+			}
+		}
+		return "";
+	}
+
+	public void setErrorMessages(CheckResults cr) {
+
+		errorMessages = new ArrayList<String>();
+		for (String err : cr.errors) {
+			errorMessages.add(err);
+		}
+
+	}
+
+	public void setDisplayError(boolean b) {
+		displayError = b;
+
+	}
+
+	public boolean getDisplayError() {
+		return displayError;
+	}
+
+	public ArrayList<String> getErrorMessages() {
+		return errorMessages;
+	}
+
+	public User getUser() {
+		if(user == null){
+			autoLogin();
+		}
+		return user;
+	}
+
+	public void setUser(User user) {
+		this.user = user;
+	}
+
+	public String getUsername() {
+		return username;
+	}
+
+	public void setUsername(String username) {
+		this.username = username;
+	}
+
+	public String getPassword() {
+		return password;
+	}
+
+	public void setPassword(String password) {
+		this.password = password;
+	}
+
+	public GeneralMerge getGeneralMerge() {
+		return generalMerge;
+	}
+
+	public void setGeneralMerge(GeneralMerge generalMerge) {
+		this.generalMerge = generalMerge;
+	}
+
+	public DefinitionForm getDefForm() {
+		return defForm;
+	}
+
+	public void setDefForm(DefinitionForm defForm) {
+		this.defForm = defForm;
+	}
+
+	public StudyEvent getStudyEventForm() {
+		return studyEventForm;
+	}
+
+	public void setStudyEventForm(StudyEvent studyEventForm) {
+		this.studyEventForm = studyEventForm;
+	}
+
+	public CopyEvent getCopyEventForm() {
+		return copyEventForm;
+	}
+
+	public void setCopyEventForm(CopyEvent copyEventForm) {
+		this.copyEventForm = copyEventForm;
+	}
+
+	public TransferEvent getTransferEventForm() {
+		return transferEventForm;
+	}
+
+	public void setTransferEventForm(TransferEvent transferEventForm) {
+		this.transferEventForm = transferEventForm;
+	}
+
+	public String getSelectedEventTab() {
+		return selectedEventTab;
+	}
+
+	public void setSelectedEventTab(String selectedEventTab) {
+		this.selectedEventTab = selectedEventTab;
+	}
+
+	public AdvancedSearchBean getAdvancedSearch() {
+		return advancedSearch;
+	}
+
+	public void setAdvancedSearch(AdvancedSearchBean advancedSearch) {
+		this.advancedSearch = advancedSearch;
+	}
+
+	public DisplayAuthorBean getDisplayAuthor() {
+		return displayAuthor;
+	}
+
+	public void setDisplayAuthor(DisplayAuthorBean displayAuthor) {
+		this.displayAuthor = displayAuthor;
+	}
+
+	public DisplayTitleBean getDisplayTitle() {
+		return displayTitle;
+	}
+
+	public void setDisplayTitle(DisplayTitleBean displayTitle) {
+		this.displayTitle = displayTitle;
+	}
+
+	public Calendar getCurrentCalendar() {
+		return currentCalendar;
+	}
+
+	public void setCurrentCalendar(Calendar currentCalendar) {
+		this.currentCalendar = currentCalendar;
+	}
+
+	public EntityList getCurrentEntListForCalendar() {
+		return currentEntListForCalendar;
+	}
+
+	public void setCurrentEntListForCalendar(EntityList currentEntListForCalendar) {
+		this.currentEntListForCalendar = currentEntListForCalendar;
+	}
+
+	public Long getCurrentEntIdForCalendar() {
+		return currentEntIdForCalendar;
+	}
+
+	public void setCurrentEntIdForCalendar(Long currentEntIdForCalendar) {
+		this.currentEntIdForCalendar = currentEntIdForCalendar;
+	}
+
+	public boolean isDisplayLoginDialog() {
+		return displayLoginDialog;
+	}
+	
+	public boolean isDisplayLoginDialog4PrivatePage(){
+		return displayLoginDialog || this.user == null;
+	}
+	
+	public boolean isDisplayLoginDialog4PublicPage(){
+		return displayLoginDialog;
+	}
+
+	public EntityDetailsBean getEntDetailsForm() {
+		return entDetailsForm;
+	}
+
+	public void setEntDetailsForm(EntityDetailsBean entDetailsForm) {
+		this.entDetailsForm = entDetailsForm;
+	}
+
+	public ESciDocItemForm geteSciDocForm() {
+		return eSciDocForm;
+	}
+
+	public void seteSciDocForm(ESciDocItemForm eSciDocForm) {
+		this.eSciDocForm = eSciDocForm;
+	}
+
+	public ESciDocItemDataTable getRefDataTable() {
+		return refDataTable;
+	}
+
+	public void setRefDataTable(ESciDocItemDataTable refDataTable) {
+		this.refDataTable = refDataTable;
+	}
+
+	public GeonameForm getGeoForm() {
+		return geoForm;
+	}
+
+	public String getSelectedTab() {
+		return selectedTab;
+	}
+
+	public String getSelectedAdvancedSearchTab() {
+		return selectedAdvancedSearchTab;
+	}
+
+	public void setSelectedAdvancedSearchTab(String selectedAdvancedSearchTab) {
+		this.selectedAdvancedSearchTab = selectedAdvancedSearchTab;
+	}
+
+	
+	public DynamicPageEditor getPageEditor(){
+		if(this.pageEditor == null){
+			this.pageEditor = new DynamicPageEditor();
+		}
+		return this.pageEditor;
+	}
+
+	public DigiListBean getDigiList() {
+		if(digiList == null){
+			digiList = new DigiListBean(getWrapper());
+		}
+		
+		return digiList;
+	}
+
+	public DynamicPage getDynamicPage() {
+		if(dynamicPage == null){
+			this.dynamicPage = new DynamicPage();
+		}
+		return dynamicPage;
+	}
+
+	public void setDynamicPage(DynamicPage dynamicPage) {
+		this.dynamicPage = dynamicPage;
+	}
+	
+	public PublicCodexView getPublicCodexView(){
+		if(publicCodexView == null){
+			this.publicCodexView = new PublicCodexView();
+		}
+		return this.publicCodexView;
+	}
+
+	public PublicCodexBean getPublicCodexBean() {
+		if(publicCodexBean == null){
+			this.publicCodexBean = new PublicCodexBean();
+		}
+		return publicCodexBean;
+	}
+
+	public void setPublicCodexBean(PublicCodexBean publicCodexBean) {
+		this.publicCodexBean = publicCodexBean;
+	}
+	
+	
+	
+}
+