Salome HOME
57f84062a2f729a5732bc980673b966be85a1d37
[tools/siman.git] / Workspace / Siman / src / org / splat / simer / Action.java
1 package org.splat.simer;
2
3 import java.util.Map;
4 import java.util.Comparator;
5 import java.util.ResourceBundle;
6
7 import javax.security.auth.login.LoginContext;
8 import javax.servlet.http.HttpServletRequest;
9
10 import com.opensymphony.xwork2.ActionSupport;
11
12 import org.apache.struts2.ServletActionContext;
13 import org.apache.struts2.interceptor.ServletRequestAware;
14 import org.apache.struts2.interceptor.SessionAware;
15 import org.apache.log4j.Logger;
16 import org.splat.dal.bo.kernel.User;
17 import org.splat.som.ApplicationRights;
18 import org.splat.dal.bo.som.KnowledgeElement;
19 import org.splat.dal.bo.som.SimulationContextType;
20 import org.splat.dal.bo.som.Study;
21 import org.splat.dal.bo.som.DocumentType;
22 import org.splat.wapp.Menu;
23
24
25 public class Action extends ActionSupport implements ServletRequestAware, SessionAware {
26
27         private   Map<String, Object>  session;
28         private   String               mercode;
29         private OpenStudy _openStudy;
30         private OpenKnowledge _openKnowledge;
31         
32         private MenuBarSettings _menuBarSettings;
33         
34         private HttpServletRequest  request;
35
36         /**
37          * Serial version ID.
38          */
39         private   static final long    serialVersionUID = -895295026709526501L;
40         /**
41          * Action logger.
42          */
43     protected static final Logger  logger           = Logger.getLogger(Action.class);
44
45     public class DocumentTypeComparator implements Comparator<DocumentType> {
46 //  -----------------------------------------------------------------------
47       public int compare(DocumentType t1, DocumentType t2)
48       {
49         ResourceBundle       locale = ResourceBundle.getBundle("som", ApplicationSettings.getCurrentLocale());
50         String               name1  = t1.getName();
51         if (t1.isApproved()) name1  = locale.getString("type.document." + name1);
52         String               name2  = t2.getName();
53         if (t2.isApproved()) name2  = locale.getString("type.document." + name2);
54
55         return name1.compareToIgnoreCase(name2);
56       }
57     }
58     public class ContextTypeComparator  implements Comparator<SimulationContextType> {
59 //  --------------------------------------------------------------------------------
60       public int compare(SimulationContextType t1, SimulationContextType t2)
61       {
62         ResourceBundle       locale = ResourceBundle.getBundle("som", ApplicationSettings.getCurrentLocale());
63         String               name1  = t1.getName();
64         if (t1.isApproved()) name1  = locale.getString("type.context." + name1);
65         String               name2  = t2.getName();
66         if (t2.isApproved()) name2  = locale.getString("type.context." + name2);
67
68         return name1.compareToIgnoreCase(name2);
69       }
70     }
71
72 //  ==============================================================================================================================
73 //  Session services
74 //  ==============================================================================================================================
75
76     protected void closeKnowledge () {
77 //  --------------------------------
78       OpenObject open = (OpenObject)session.remove("knowledge.open");
79       if (open != null) {
80         if (session.get("study.open") == null) open.clearFacades();      // For eventually reopening the knowledge from a fresh context
81       }
82     }
83     protected void closeStudy () {
84 //  ----------------------------
85       OpenObject open = (OpenObject)session.remove("study.open");
86       if (open != null) {
87         if (session.get("knowledge.open") == null) open.clearFacades();  // For eventually reopening the study from a fresh context
88       }
89     }
90     protected void connect (LoginContext context, User user) {
91 //  --------------------------------------------------------
92       OpenStudy  open = getOpenStudy();
93       if (open != null) {
94           open.changeUser(user);
95       }
96       session.put("user.rights", new ApplicationRights(user) );
97       session.put("login.context", context);                             // For executing the deconnection, when requested
98     }
99     protected void disconnect () {
100 //  ----------------------------
101       OpenStudy  open = getOpenStudy();
102       if (open != null) {
103           open.changeUser(null);
104       }
105       session.put("user.rights", new ApplicationRights(null) );          // Disables user rights
106       session.remove("login.context");
107     }
108     protected User getConnectedUser () {
109 //  ----------------------------------
110       ApplicationRights  rights = (ApplicationRights)session.get("user.rights");
111       return rights.getUser();                                           // May be null
112     }
113     protected Menu getMenu (String name) {
114 //  ------------------------------------
115       return (Menu)session.get("menu." + name);
116     }
117     public void setOpenKnowledge (OpenKnowledge kelm) {
118         _openKnowledge = kelm;
119       }
120     protected OpenKnowledge getOpenKnowledge () {
121 //      _openKnowledge = (OpenKnowledge)session.get("knowledge.open");               // May be null
122         return _openKnowledge;
123     }
124     public void setOpenStudy (OpenStudy aStudy) {
125       _openStudy = aStudy;
126     }
127     public OpenStudy getOpenStudy () {
128 //      _openStudy = (OpenStudy)session.get("study.open");
129           return _openStudy;                       // May be null
130         }
131     protected OpenKnowledge open (KnowledgeElement kelm) {
132 //  ----------------------------------------------------
133       OpenKnowledge open = _openKnowledge.open(kelm);
134
135       closeKnowledge();   // Just in case
136           session.put("knowledge.open", open);
137           return open;
138     }
139     protected OpenStudy open (Study study) {
140 //  --------------------------------------
141           OpenStudy open = _openStudy.open(getConnectedUser(), study);         // The connected user may be null
142
143       closeStudy();       // Just in case
144           session.put("study.open", open);
145           return open;
146     }
147     
148     /**
149      * Initialization the Context for menubar.
150      */
151     public void initializationContext() {
152         getMenuBarSettings().initializeInitialMenuProperties();
153         
154         if (session.get("study.open") == null) {
155                 getMenuBarSettings().setIsStudyNull(true);
156                 logger.debug("MKA: setIsStudyNull = true");
157         } else {
158                 getMenuBarSettings().setIsStudyNull(false);
159                 logger.debug("MKA: setIsStudyNull = false");
160         }
161         
162         if (session.get("knowledge.open") == null) {
163                 getMenuBarSettings().setIsKnowledgeNull(true);
164                 logger.debug("MKA: setIsKnowledgeNull = true");
165         } else {
166                 getMenuBarSettings().setIsKnowledgeNull(false);
167                 logger.debug("MKA: setIsKnowledgeNull = false");
168         }
169         
170         ApplicationRights userRights  = (ApplicationRights)session.get("user.rights");
171         
172         if (userRights.canCreateStudy()) {
173                 getMenuBarSettings().setCanUserCreateStudy(true);
174         } else {
175                 getMenuBarSettings().setCanUserCreateStudy(false);
176         }
177         
178         if (userRights.canManageDatabase()) {
179                 getMenuBarSettings().setCanUserManageDatabase(true);
180         } else {
181                 getMenuBarSettings().setCanUserManageDatabase(false);
182         } 
183         
184     }
185     
186     /**
187          * Initialization of the screen context for menu bar.
188          */
189         public void initializationScreenContext(final String menuProperty) {
190                 
191                 initializationContext();
192                 getMenuBarSettings().intializeMenuBar(menuProperty);
193         }
194 //  ==============================================================================================================================
195 //  Getters and setters
196 //  ==============================================================================================================================
197     
198         public void setServletRequest (HttpServletRequest request) {
199                 this.request = request;
200         }
201         
202         public HttpServletRequest getServletRequest() {
203                 return request;
204         }
205
206     public String getErrorCode () {
207 //  -----------------------------
208       return mercode;
209     }
210     public Map<String, Object> getSession () {
211 //  ----------------------------------------
212       return session;
213     }
214
215     public void setErrorCode (String code) {
216 //  --------------------------------------
217       this.mercode = code;
218     }
219         public void setSession (Map<String, Object> session) {
220 //  ----------------------------------------------------                
221           this.session = session;
222         }
223         
224         /**
225          * Get the menuBarSettings.
226          * @return the menuBarSettings
227          */
228         public MenuBarSettings getMenuBarSettings() {
229                 return _menuBarSettings;
230         }
231
232         /**
233          * Set the menuBarSettings.
234          * @param menuBarSettings the menuBarSettings to set
235          */
236         public void setMenuBarSettings(final MenuBarSettings menuBarSettings) {
237                 _menuBarSettings = menuBarSettings;
238         }
239 }