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;
29 private static final long serialVersionUID = -895295026709526501L;
30 protected static final Logger logger = Logger.getLogger(Action.class);
32 public class DocumentTypeComparator implements Comparator<DocumentType> {
33 // -----------------------------------------------------------------------
34 public int compare(DocumentType t1, DocumentType t2)
36 ResourceBundle locale = ResourceBundle.getBundle("som", ApplicationSettings.getCurrentLocale());
37 String name1 = t1.getName();
38 if (t1.isApproved()) name1 = locale.getString("type.document." + name1);
39 String name2 = t2.getName();
40 if (t2.isApproved()) name2 = locale.getString("type.document." + name2);
42 return name1.compareToIgnoreCase(name2);
45 public class ContextTypeComparator implements Comparator<SimulationContextType> {
46 // --------------------------------------------------------------------------------
47 public int compare(SimulationContextType t1, SimulationContextType t2)
49 ResourceBundle locale = ResourceBundle.getBundle("som", ApplicationSettings.getCurrentLocale());
50 String name1 = t1.getName();
51 if (t1.isApproved()) name1 = locale.getString("type.context." + name1);
52 String name2 = t2.getName();
53 if (t2.isApproved()) name2 = locale.getString("type.context." + name2);
55 return name1.compareToIgnoreCase(name2);
59 // ==============================================================================================================================
61 // ==============================================================================================================================
63 protected void closeKnowledge () {
64 // --------------------------------
65 OpenObject open = (OpenObject)session.remove("knowledge.open");
67 if (session.get("study.open") == null) open.clearFacades(); // For eventually reopening the knowledge from a fresh context
70 protected void closeStudy () {
71 // ----------------------------
72 OpenObject open = (OpenObject)session.remove("study.open");
74 if (session.get("knowledge.open") == null) open.clearFacades(); // For eventually reopening the study from a fresh context
77 protected void connect (LoginContext context, User user) {
78 // --------------------------------------------------------
79 OpenStudy open = getOpenStudy();
81 open.changeUser(user);
83 session.put("user.rights", new ApplicationRights(user) );
84 session.put("login.context", context); // For executing the deconnection, when requested
86 protected void disconnect () {
87 // ----------------------------
88 OpenStudy open = getOpenStudy();
90 open.changeUser(null);
92 session.put("user.rights", new ApplicationRights(null) ); // Disables user rights
93 session.remove("login.context");
95 protected User getConnectedUser () {
96 // ----------------------------------
97 ApplicationRights rights = (ApplicationRights)session.get("user.rights");
98 return rights.getUser(); // May be null
100 protected Menu getMenu (String name) {
101 // ------------------------------------
102 return (Menu)session.get("menu." + name);
104 public void setOpenKnowledge (OpenKnowledge kelm) {
105 _openKnowledge = kelm;
107 protected OpenKnowledge getOpenKnowledge () {
108 // _openKnowledge = (OpenKnowledge)session.get("knowledge.open"); // May be null
109 return _openKnowledge;
111 public void setOpenStudy (OpenStudy aStudy) {
114 public OpenStudy getOpenStudy () {
115 // _openStudy = (OpenStudy)session.get("study.open");
116 return _openStudy; // May be null
118 protected OpenKnowledge open (KnowledgeElement kelm) {
119 // ----------------------------------------------------
120 OpenKnowledge open = _openKnowledge.open(kelm);
122 closeKnowledge(); // Just in case
123 session.put("knowledge.open", open);
126 protected OpenStudy open (Study study) {
127 // --------------------------------------
128 OpenStudy open = _openStudy.open(getConnectedUser(), study); // The connected user may be null
130 closeStudy(); // Just in case
131 session.put("study.open", open);
134 // ==============================================================================================================================
135 // Getters and setters
136 // ==============================================================================================================================
138 public String getErrorCode () {
139 // -----------------------------
142 public Map<String, Object> getSession () {
143 // ----------------------------------------
147 public void setErrorCode (String code) {
148 // --------------------------------------
151 public void setSession (Map<String, Object> session) {
152 // ----------------------------------------------------
153 this.session = session;