diff src/main/java/de/mpiwg/itgroup/ismi/jsf/PhaseTracker.java @ 1:2e911857a759

(none)
author jurzua
date Wed, 29 Oct 2014 14:00:28 +0000
parents
children e5d4443a1bc5
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/de/mpiwg/itgroup/ismi/jsf/PhaseTracker.java	Wed Oct 29 14:00:28 2014 +0000
@@ -0,0 +1,140 @@
+package de.mpiwg.itgroup.ismi.jsf;
+
+import java.util.Map;
+
+import javax.faces.context.FacesContext;
+import javax.faces.event.PhaseEvent;
+import javax.faces.event.PhaseId;
+import javax.faces.event.PhaseListener;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpServletResponseWrapper;
+
+import org.apache.commons.lang.StringUtils;
+
+import de.mpiwg.itgroup.ismi.entry.beans.SessionBean;
+
+public class PhaseTracker implements PhaseListener {
+
+	private static final long serialVersionUID = -1L;
+
+	public void beforePhase(PhaseEvent event) {
+
+		Map<String, String> parameters = event.getFacesContext().getExternalContext().getRequestParameterMap();
+		
+		String servletPath = event.getFacesContext().getExternalContext().getRequestServletPath();
+		
+		if(StringUtils.isNotEmpty(servletPath) && event.getPhaseId() == PhaseId.RESTORE_VIEW){
+			
+			if(StringUtils.endsWith(parameters.get("login"), "true")){
+				getSessionBean(event.getFacesContext()).listenerDisplayLoginDialog(null);
+			}
+			
+			if(servletPath.equals("/browse/entityDetails.xhtml")){
+				String entityId = parameters.get("eid");
+				if(StringUtils.isNotEmpty(entityId)){
+					setIdToEntityDetails(event.getFacesContext(), entityId);
+				}
+			} else if(servletPath.equals("/browse/entityRepository.xhtml")){
+				//setEntityRepositoryState(parameters, event.getFacesContext());
+				
+			} else if(servletPath.equals("/search/simpleSearch.xhtml")){
+				//String term = parameters.get("term");
+				//String mode = parameters.get("md");
+				//getSessionBean(event.getFacesContext()).setSimpleSearchState(term, mode);
+			} else if(servletPath.equals("/search/displayAuthor.xhtml")){
+				String personId = parameters.get("personId");
+				String textId = parameters.get("textId");
+				String witnessId = parameters.get("witnessId");
+				
+				if(StringUtils.isNotEmpty(personId)){
+					getSessionBean(event.getFacesContext()).displayAuthorSetPerson(personId);
+					if(StringUtils.isNotEmpty(textId)){
+						getSessionBean(event.getFacesContext()).displayAuthorSetTitle(textId);
+						if(StringUtils.isNotEmpty(witnessId)){
+							getSessionBean(event.getFacesContext()).displayAuthorSetWitness(witnessId);
+						}
+					}
+				}else if(StringUtils.isNotEmpty(textId)){
+					getSessionBean(event.getFacesContext()).displayAuthorFromTitles(textId);
+					if(StringUtils.isNotEmpty(witnessId)){
+						getSessionBean(event.getFacesContext()).displayAuthorSetWitness(witnessId);
+					}
+				}else if(StringUtils.isNotEmpty(witnessId)){
+					getSessionBean(event.getFacesContext()).displayAuthorFromWitness(witnessId);
+				}
+				
+				
+			}else if(servletPath.equals("/search/displayTitle.xhtml")){
+				String textId = parameters.get("textId");
+				String witnessId = parameters.get("witnessId");
+				if(StringUtils.isNotEmpty(textId)){
+					getSessionBean(event.getFacesContext()).displayTitleSetTitle(textId);
+					if(StringUtils.isNotEmpty(witnessId)){
+						getSessionBean(event.getFacesContext()).displayTitleSetWitness(witnessId);	
+					}
+				}else if(StringUtils.isNotEmpty(witnessId)){
+					getSessionBean(event.getFacesContext()).displayTitleFromWitness(witnessId);
+				} 
+			}else if(servletPath.equals("/entry/createEntity.xhtml")){
+				String entityId = parameters.get("eid");
+				String formIndex = parameters.get("formIndex");
+				if(StringUtils.isEmpty(entityId) && StringUtils.isNotEmpty(formIndex)){
+					//set tabIndex
+					getSessionBean(event.getFacesContext()).setSelectedTab(formIndex);
+				}else if(StringUtils.isNotEmpty(entityId) && !entityId.equals("0")){
+					//set entity to edit
+					getSessionBean(event.getFacesContext()).editEntity(entityId);
+				}
+			}else if(servletPath.equals("/public/dynamicPage.xhtml")){
+				String entId = parameters.get("eid");
+				if(StringUtils.isNotEmpty(entId)){
+					getSessionBean(event.getFacesContext()).getDynamicPage().load(entId);
+				}
+			
+			}else if(servletPath.equals("/public/publicCodexOverview.xhtml")){	
+				String entId = parameters.get("eid");
+				if(StringUtils.isNotEmpty(entId)){
+					getSessionBean(event.getFacesContext()).getPublicCodexView().load(entId);
+				}
+				
+			}/* else if(servletPath.equals("/entry/geonameForm.xhtml")){
+			}
+				String placeId = parameters.get("placeId");
+				if(StringUtils.isNotEmpty(placeId)){
+					getSessionBean(event.getFacesContext()).setPlaceInGeoForm(placeId);
+				}
+			}*/
+		}
+	}
+
+	
+	private SessionBean getSessionBean(FacesContext context){
+		SessionBean bean = (SessionBean)context.getExternalContext().getSessionMap().get("Session");
+		if(bean == null){
+			bean = new SessionBean();
+			context.getExternalContext().getSessionMap().put("Session", bean);
+		}
+		return bean;
+	}
+	
+	private void setIdToEntityDetails(FacesContext context, String id){
+		getSessionBean(context).setIdEntityDetails(id);
+	}
+	
+	
+	
+
+	public void afterPhase(PhaseEvent event) {
+	}
+
+	public PhaseId getPhaseId() {
+		return PhaseId.ANY_PHASE;
+	}
+	
+	
+	class PrettyUrlResponseWrapper extends HttpServletResponseWrapper {
+	    public PrettyUrlResponseWrapper(HttpServletResponse response) {   
+	        super(response);   
+	    } 
+	}
+}