1 package org.splat.simer;
4 import java.util.Comparator;
5 import java.util.ResourceBundle;
7 import javax.security.auth.login.LoginContext;
9 import com.opensymphony.xwork2.ActionSupport;
11 import org.apache.struts2.interceptor.SessionAware;
12 import org.apache.log4j.Logger;
13 import org.splat.dal.bo.kernel.User;
14 import org.splat.som.ApplicationRights;
15 import org.splat.dal.bo.som.KnowledgeElement;
16 import org.splat.dal.bo.som.SimulationContextType;
17 import org.splat.dal.bo.som.Study;
18 import org.splat.dal.bo.som.DocumentType;
19 import org.splat.wapp.Menu;
22 public class Action extends ActionSupport implements SessionAware {
24 private Map<String, Object> session;
25 private String mercode;
26 private OpenStudy _openStudy;
27 private OpenKnowledge _openKnowledge;
32 private static final long serialVersionUID = -895295026709526501L;
36 protected static final Logger logger = Logger.getLogger(Action.class);
38 public class DocumentTypeComparator implements Comparator<DocumentType> {
39 // -----------------------------------------------------------------------
40 public int compare(DocumentType t1, DocumentType t2)
42 ResourceBundle locale = ResourceBundle.getBundle("som", ApplicationSettings.getCurrentLocale());
43 String name1 = t1.getName();
44 if (t1.isApproved()) name1 = locale.getString("type.document." + name1);
45 String name2 = t2.getName();
46 if (t2.isApproved()) name2 = locale.getString("type.document." + name2);
48 return name1.compareToIgnoreCase(name2);
51 public class ContextTypeComparator implements Comparator<SimulationContextType> {
52 // --------------------------------------------------------------------------------
53 public int compare(SimulationContextType t1, SimulationContextType t2)
55 ResourceBundle locale = ResourceBundle.getBundle("som", ApplicationSettings.getCurrentLocale());
56 String name1 = t1.getName();
57 if (t1.isApproved()) name1 = locale.getString("type.context." + name1);
58 String name2 = t2.getName();
59 if (t2.isApproved()) name2 = locale.getString("type.context." + name2);
61 return name1.compareToIgnoreCase(name2);
65 // ==============================================================================================================================
67 // ==============================================================================================================================
69 protected void closeKnowledge () {
70 // --------------------------------
71 OpenObject open = (OpenObject)session.remove("knowledge.open");
73 if (session.get("study.open") == null) open.clearFacades(); // For eventually reopening the knowledge from a fresh context
76 protected void closeStudy () {
77 // ----------------------------
78 OpenObject open = (OpenObject)session.remove("study.open");
80 if (session.get("knowledge.open") == null) open.clearFacades(); // For eventually reopening the study from a fresh context
83 protected void connect (LoginContext context, User user) {
84 // --------------------------------------------------------
85 OpenStudy open = getOpenStudy();
87 open.changeUser(user);
89 session.put("user.rights", new ApplicationRights(user) );
90 session.put("login.context", context); // For executing the deconnection, when requested
92 protected void disconnect () {
93 // ----------------------------
94 OpenStudy open = getOpenStudy();
96 open.changeUser(null);
98 session.put("user.rights", new ApplicationRights(null) ); // Disables user rights
99 session.remove("login.context");
101 protected User getConnectedUser () {
102 // ----------------------------------
103 ApplicationRights rights = (ApplicationRights)session.get("user.rights");
104 return rights.getUser(); // May be null
106 protected Menu getMenu (String name) {
107 // ------------------------------------
108 return (Menu)session.get("menu." + name);
110 public void setOpenKnowledge (OpenKnowledge kelm) {
111 _openKnowledge = kelm;
113 protected OpenKnowledge getOpenKnowledge () {
114 // _openKnowledge = (OpenKnowledge)session.get("knowledge.open"); // May be null
115 return _openKnowledge;
117 public void setOpenStudy (OpenStudy aStudy) {
120 public OpenStudy getOpenStudy () {
121 // _openStudy = (OpenStudy)session.get("study.open");
122 return _openStudy; // May be null
124 protected OpenKnowledge open (KnowledgeElement kelm) {
125 // ----------------------------------------------------
126 OpenKnowledge open = _openKnowledge.open(kelm);
128 closeKnowledge(); // Just in case
129 session.put("knowledge.open", open);
132 protected OpenStudy open (Study study) {
133 // --------------------------------------
134 OpenStudy open = _openStudy.open(getConnectedUser(), study); // The connected user may be null
136 closeStudy(); // Just in case
137 session.put("study.open", open);
140 // ==============================================================================================================================
141 // Getters and setters
142 // ==============================================================================================================================
144 public String getErrorCode () {
145 // -----------------------------
148 public Map<String, Object> getSession () {
149 // ----------------------------------------
153 public void setErrorCode (String code) {
154 // --------------------------------------
157 public void setSession (Map<String, Object> session) {
158 // ----------------------------------------------------
159 this.session = session;