1
|
1 package de.mpiwg.itgroup.ismi.jsf;
|
|
2
|
|
3 import java.util.Map;
|
|
4
|
|
5 import javax.faces.context.FacesContext;
|
|
6 import javax.faces.event.PhaseEvent;
|
|
7 import javax.faces.event.PhaseId;
|
|
8 import javax.faces.event.PhaseListener;
|
|
9 import javax.servlet.http.HttpServletResponse;
|
|
10 import javax.servlet.http.HttpServletResponseWrapper;
|
|
11
|
|
12 import org.apache.commons.lang.StringUtils;
|
|
13
|
|
14 import de.mpiwg.itgroup.ismi.entry.beans.SessionBean;
|
|
15
|
|
16 public class PhaseTracker implements PhaseListener {
|
|
17
|
|
18 private static final long serialVersionUID = -1L;
|
|
19
|
|
20 public void beforePhase(PhaseEvent event) {
|
|
21
|
|
22 Map<String, String> parameters = event.getFacesContext().getExternalContext().getRequestParameterMap();
|
|
23
|
|
24 String servletPath = event.getFacesContext().getExternalContext().getRequestServletPath();
|
|
25
|
|
26 if(StringUtils.isNotEmpty(servletPath) && event.getPhaseId() == PhaseId.RESTORE_VIEW){
|
|
27
|
|
28 if(StringUtils.endsWith(parameters.get("login"), "true")){
|
|
29 getSessionBean(event.getFacesContext()).listenerDisplayLoginDialog(null);
|
|
30 }
|
|
31
|
|
32 if(servletPath.equals("/browse/entityDetails.xhtml")){
|
|
33 String entityId = parameters.get("eid");
|
|
34 if(StringUtils.isNotEmpty(entityId)){
|
|
35 setIdToEntityDetails(event.getFacesContext(), entityId);
|
|
36 }
|
|
37 } else if(servletPath.equals("/browse/entityRepository.xhtml")){
|
|
38 //setEntityRepositoryState(parameters, event.getFacesContext());
|
|
39
|
|
40 } else if(servletPath.equals("/search/simpleSearch.xhtml")){
|
|
41 //String term = parameters.get("term");
|
|
42 //String mode = parameters.get("md");
|
|
43 //getSessionBean(event.getFacesContext()).setSimpleSearchState(term, mode);
|
|
44 } else if(servletPath.equals("/search/displayAuthor.xhtml")){
|
|
45 String personId = parameters.get("personId");
|
|
46 String textId = parameters.get("textId");
|
|
47 String witnessId = parameters.get("witnessId");
|
|
48
|
|
49 if(StringUtils.isNotEmpty(personId)){
|
|
50 getSessionBean(event.getFacesContext()).displayAuthorSetPerson(personId);
|
|
51 if(StringUtils.isNotEmpty(textId)){
|
|
52 getSessionBean(event.getFacesContext()).displayAuthorSetTitle(textId);
|
|
53 if(StringUtils.isNotEmpty(witnessId)){
|
|
54 getSessionBean(event.getFacesContext()).displayAuthorSetWitness(witnessId);
|
|
55 }
|
|
56 }
|
|
57 }else if(StringUtils.isNotEmpty(textId)){
|
|
58 getSessionBean(event.getFacesContext()).displayAuthorFromTitles(textId);
|
|
59 if(StringUtils.isNotEmpty(witnessId)){
|
|
60 getSessionBean(event.getFacesContext()).displayAuthorSetWitness(witnessId);
|
|
61 }
|
|
62 }else if(StringUtils.isNotEmpty(witnessId)){
|
|
63 getSessionBean(event.getFacesContext()).displayAuthorFromWitness(witnessId);
|
|
64 }
|
|
65
|
|
66
|
|
67 }else if(servletPath.equals("/search/displayTitle.xhtml")){
|
|
68 String textId = parameters.get("textId");
|
|
69 String witnessId = parameters.get("witnessId");
|
|
70 if(StringUtils.isNotEmpty(textId)){
|
|
71 getSessionBean(event.getFacesContext()).displayTitleSetTitle(textId);
|
|
72 if(StringUtils.isNotEmpty(witnessId)){
|
|
73 getSessionBean(event.getFacesContext()).displayTitleSetWitness(witnessId);
|
|
74 }
|
|
75 }else if(StringUtils.isNotEmpty(witnessId)){
|
|
76 getSessionBean(event.getFacesContext()).displayTitleFromWitness(witnessId);
|
|
77 }
|
|
78 }else if(servletPath.equals("/entry/createEntity.xhtml")){
|
|
79 String entityId = parameters.get("eid");
|
|
80 String formIndex = parameters.get("formIndex");
|
|
81 if(StringUtils.isEmpty(entityId) && StringUtils.isNotEmpty(formIndex)){
|
|
82 //set tabIndex
|
|
83 getSessionBean(event.getFacesContext()).setSelectedTab(formIndex);
|
|
84 }else if(StringUtils.isNotEmpty(entityId) && !entityId.equals("0")){
|
|
85 //set entity to edit
|
|
86 getSessionBean(event.getFacesContext()).editEntity(entityId);
|
|
87 }
|
|
88 }else if(servletPath.equals("/public/dynamicPage.xhtml")){
|
|
89 String entId = parameters.get("eid");
|
|
90 if(StringUtils.isNotEmpty(entId)){
|
|
91 getSessionBean(event.getFacesContext()).getDynamicPage().load(entId);
|
|
92 }
|
|
93
|
|
94 }else if(servletPath.equals("/public/publicCodexOverview.xhtml")){
|
|
95 String entId = parameters.get("eid");
|
|
96 if(StringUtils.isNotEmpty(entId)){
|
|
97 getSessionBean(event.getFacesContext()).getPublicCodexView().load(entId);
|
|
98 }
|
|
99
|
|
100 }
|
|
101 }
|
|
102 }
|
|
103
|
|
104
|
|
105 private SessionBean getSessionBean(FacesContext context){
|
|
106 SessionBean bean = (SessionBean)context.getExternalContext().getSessionMap().get("Session");
|
|
107 if(bean == null){
|
|
108 bean = new SessionBean();
|
|
109 context.getExternalContext().getSessionMap().put("Session", bean);
|
|
110 }
|
|
111 return bean;
|
|
112 }
|
|
113
|
|
114 private void setIdToEntityDetails(FacesContext context, String id){
|
|
115 getSessionBean(context).setIdEntityDetails(id);
|
|
116 }
|
|
117
|
|
118
|
|
119
|
|
120
|
|
121 public void afterPhase(PhaseEvent event) {
|
|
122 }
|
|
123
|
|
124 public PhaseId getPhaseId() {
|
|
125 return PhaseId.ANY_PHASE;
|
|
126 }
|
|
127
|
|
128
|
|
129 class PrettyUrlResponseWrapper extends HttpServletResponseWrapper {
|
|
130 public PrettyUrlResponseWrapper(HttpServletResponse response) {
|
|
131 super(response);
|
|
132 }
|
|
133 }
|
|
134 }
|