Salome HOME
New dependency (CGLIB jar) is added to Siman-Common (for aop:scoped-proxy). Search...
[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
9 import com.opensymphony.xwork2.ActionSupport;
10
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;
20
21
22 public class Action extends ActionSupport implements SessionAware {
23
24         private   Map<String, Object>  session;
25         private   String               mercode;
26         private OpenStudy _openStudy;
27         private OpenKnowledge _openKnowledge;
28
29         private   static final long    serialVersionUID = -895295026709526501L;
30     protected static final Logger  logger           = Logger.getLogger(Action.class);
31
32     public class DocumentTypeComparator implements Comparator<DocumentType> {
33 //  -----------------------------------------------------------------------
34       public int compare(DocumentType t1, DocumentType t2)
35       {
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);
41
42         return name1.compareToIgnoreCase(name2);
43       }
44     }
45     public class ContextTypeComparator  implements Comparator<SimulationContextType> {
46 //  --------------------------------------------------------------------------------
47       public int compare(SimulationContextType t1, SimulationContextType t2)
48       {
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);
54
55         return name1.compareToIgnoreCase(name2);
56       }
57     }
58
59 //  ==============================================================================================================================
60 //  Session services
61 //  ==============================================================================================================================
62
63     protected void closeKnowledge () {
64 //  --------------------------------
65       OpenObject open = (OpenObject)session.remove("knowledge.open");
66       if (open != null) {
67         if (session.get("study.open") == null) open.clearFacades();      // For eventually reopening the knowledge from a fresh context
68       }
69     }
70     protected void closeStudy () {
71 //  ----------------------------
72       OpenObject open = (OpenObject)session.remove("study.open");
73       if (open != null) {
74         if (session.get("knowledge.open") == null) open.clearFacades();  // For eventually reopening the study from a fresh context
75       }
76     }
77     protected void connect (LoginContext context, User user) {
78 //  --------------------------------------------------------
79       OpenStudy  open = getOpenStudy();
80       if (open != null) {
81           open.changeUser(user);
82       }
83       session.put("user.rights", new ApplicationRights(user) );
84       session.put("login.context", context);                             // For executing the deconnection, when requested
85     }
86     protected void disconnect () {
87 //  ----------------------------
88       OpenStudy  open = getOpenStudy();
89       if (open != null) {
90           open.changeUser(null);
91       }
92       session.put("user.rights", new ApplicationRights(null) );          // Disables user rights
93       session.remove("login.context");
94     }
95     protected User getConnectedUser () {
96 //  ----------------------------------
97       ApplicationRights  rights = (ApplicationRights)session.get("user.rights");
98       return rights.getUser();                                           // May be null
99     }
100     protected Menu getMenu (String name) {
101 //  ------------------------------------
102       return (Menu)session.get("menu." + name);
103     }
104     public void setOpenKnowledge (OpenKnowledge kelm) {
105         _openKnowledge = kelm;
106       }
107     protected OpenKnowledge getOpenKnowledge () {
108         _openKnowledge = (OpenKnowledge)session.get("knowledge.open");               // May be null
109         return _openKnowledge;
110     }
111     public void setOpenStudy (OpenStudy aStudy) {
112       _openStudy = aStudy;
113     }
114     public OpenStudy getOpenStudy () {
115 //      _openStudy = (OpenStudy)session.get("study.open");
116           return _openStudy;                       // May be null
117         }
118     protected OpenKnowledge open (KnowledgeElement kelm) {
119 //  ----------------------------------------------------
120       OpenKnowledge open = _openKnowledge.open(kelm);
121
122       closeKnowledge();   // Just in case
123           session.put("knowledge.open", open);
124           return open;
125     }
126     protected OpenStudy open (Study study) {
127 //  --------------------------------------
128           OpenStudy open = _openStudy.open(getConnectedUser(), study);         // The connected user may be null
129
130       closeStudy();       // Just in case
131           session.put("study.open", open);
132           return open;
133     }
134 //  ==============================================================================================================================
135 //  Getters and setters
136 //  ==============================================================================================================================
137
138     public String getErrorCode () {
139 //  -----------------------------
140       return mercode;
141     }
142     public Map<String, Object> getSession () {
143 //  ----------------------------------------
144       return session;
145     }
146
147     public void setErrorCode (String code) {
148 //  --------------------------------------
149       this.mercode = code;
150     }
151         public void setSession (Map<String, Object> session) {
152 //  ----------------------------------------------------                
153           this.session = session;
154         }
155 }