]> SALOME platform Git repositories - tools/siman.git/blob - Workspace/Siman/src/org/splat/simer/EditKnowledgeElementAction.java
Salome HOME
Menus are improved
[tools/siman.git] / Workspace / Siman / src / org / splat / simer / EditKnowledgeElementAction.java
1 package org.splat.simer;
2
3 import org.splat.dal.bo.kernel.User;
4 import org.splat.dal.bo.som.KnowledgeElement;
5 import org.splat.dal.bo.som.KnowledgeElementType;
6 import org.splat.dal.bo.som.Scenario;
7 import org.splat.service.KnowledgeElementService;
8 import org.splat.service.KnowledgeElementTypeService;
9 import org.splat.service.ScenarioService;
10 import org.splat.som.Step;
11
12 /**
13  * Action for addition and modification of knowledge elements in the selected scenario.
14  */
15 public class EditKnowledgeElementAction extends DisplayStudyStepAction {
16
17         /**
18          * Serial version ID.
19          */
20         private static final long serialVersionUID = 4636919137087687068L;
21
22         /**
23          * Edited knowledge element type.
24          */
25         private String type = null; // Edited knowledge type
26         /**
27          * Edited knowledge element title.
28          */
29         private String title = null;
30         /**
31          * Edited knowledge element value.
32          */
33         private String value = null;
34         /**
35          * Injected scenario service.
36          */
37         private ScenarioService _scenarioService;
38         /**
39          * Injected knowledge element service.
40          */
41         private KnowledgeElementService _knowledgeElementService;
42         /**
43          * Injected knowledge element type service.
44          */
45         private KnowledgeElementTypeService _knowledgeElementTypeService;
46         
47         /**
48          * Value of the menu property. 
49          * It can be: none, create, open, study, knowledge, sysadmin, help.
50          */
51         private String _menuProperty;
52
53         // ==============================================================================================================================
54         // Action methods
55         // ==============================================================================================================================
56
57         /**
58          * Initialize the action. Get selected study from the session.
59          * 
60          * @return SUCCESS if no exceptions
61          */
62         public String doInitialize() {
63                 mystudy = getOpenStudy();
64                 
65                 setMenuProperty("study");
66                 initializationScreenContext(_menuProperty);
67                 
68                 return SUCCESS;
69         }
70
71         /**
72          * Add a new or update an existing knowledge element of the selected scenario in the open study.
73          * 
74          * @return SUCCESS if operation succeeded, ERROR if Runtime exception, otherwise INPUT
75          */
76         public String doSetKnowledge() {
77                 
78                 setMenuProperty("study");
79                 initializationScreenContext(_menuProperty);
80                 
81                 try {
82                         User user = getConnectedUser();
83                         mystudy = getOpenStudy();
84
85                         Step step = mystudy.getSelectedStep();
86                         Scenario scene = (Scenario) step.getOwner(); // It is necessarily a Scenario
87
88                         if (title != null && value != null) { // Addition of a new Knowledge Element
89                                 KnowledgeElement.Properties kprop = new KnowledgeElement.Properties();
90                                 KnowledgeElementType ktype = getKnowledgeElementTypeService()
91                                                 .selectType(Integer.valueOf(type));
92                                 kprop.setType(ktype).setTitle(title).setValue(value).setAuthor(
93                                                 user);
94                                 mystudy.add(getScenarioService().addKnowledgeElement(scene,
95                                                 kprop));
96                                 getMenu("study").selects(mystudy.getSelection()); // Updates the menu icon, in case of first added document
97                         } else if (title != null) { // Renaming of an existing Knowledge Element
98                                 KnowledgeElement kelm = scene.getKnowledgeElement(Integer
99                                                 .valueOf(type));
100                                 getKnowledgeElementService().rename(kelm, title);
101                                 // Useless to update the open study
102                         } else if (value != null) { // Edition of a knowledge
103                                 KnowledgeElement kelm = scene.getKnowledgeElement(Integer
104                                                 .valueOf(type));
105                                 getKnowledgeElementService().update(kelm, value);
106                                 mystudy.update(kelm); // For updating the truncated value
107                         }
108                         return SUCCESS;
109                 } catch (RuntimeException saverror) {
110                         logger.error("Reason:", saverror);
111                         return ERROR;
112                 } catch (Exception error) {
113                         logger.error("Exception while saving a knowledge: ", error);
114                         return INPUT;
115                 }
116         }
117
118         /**
119          * Delete a knowledge element from the current scenario.
120          * 
121          * @return SUCCESS if no exceptions
122          */
123         public String doDeleteKnowledge() {
124                 mystudy = getOpenStudy();
125                 Step step = mystudy.getSelectedStep();
126                 Scenario scene = (Scenario) step.getOwner(); // It is necessarily a Scenario
127
128                 KnowledgeElement kelm = scene.getKnowledgeElement(Integer
129                                 .valueOf(myindex));
130                 getScenarioService().removeKnowledgeElement(scene, kelm); // The knowledge element necessarily exists
131
132                 mystudy.remove(kelm);
133                 getMenu("study").selects(mystudy.getSelection()); // Updates the menu icon, in case of last removed document
134                 
135                 setMenuProperty("study");
136                 initializationScreenContext(_menuProperty);
137
138                 return SUCCESS;
139         }
140
141         // ==============================================================================================================================
142         // Getters and setters
143         // ==============================================================================================================================
144
145         /**
146          * Get the type of the modified knowledge element.
147          * 
148          * @return the knowledge type name
149          */
150         public String getKnowledgeType() {
151                 // ---------------------------------
152                 return type;
153         }
154
155         /**
156          * Get the id of the modified knowledge element.
157          * 
158          * @return the knowledge element id
159          */
160         public String getSelectedKnowledge() {
161                 // -------------------------------------
162                 return myindex;
163         }
164
165         /**
166          * Set the type of the modified knowledge element.
167          * 
168          * @param type
169          *            the knowledge type name
170          */
171         public void setKnowledgeType(String type) {
172                 // ------------------------------------------
173                 this.type = type;
174         }
175
176         /**
177          * Set the title of the modified knowledge element.
178          * 
179          * @param title
180          *            the new knowledge title
181          */
182         public void setKnowledgeTitle(String title) {
183                 // --------------------------------------------
184                 this.title = title;
185         }
186
187         /**
188          * Set the value of the modified knowledge element.
189          * 
190          * @param value
191          *            the knowledge value
192          */
193         public void setKnowledgeValue(String value) {
194                 // --------------------------------------------
195                 this.value = value;
196         }
197
198         /**
199          * Get the scenarioService.
200          * 
201          * @return the scenarioService
202          */
203         public ScenarioService getScenarioService() {
204                 return _scenarioService;
205         }
206
207         /**
208          * Set the scenarioService.
209          * 
210          * @param scenarioService
211          *            the scenarioService to set
212          */
213         public void setScenarioService(ScenarioService scenarioService) {
214                 _scenarioService = scenarioService;
215         }
216
217         /**
218          * Get the knowledgeElementService.
219          * 
220          * @return the knowledgeElementService
221          */
222         public KnowledgeElementService getKnowledgeElementService() {
223                 return _knowledgeElementService;
224         }
225
226         /**
227          * Set the knowledgeElementService.
228          * 
229          * @param knowledgeElementService
230          *            the knowledgeElementService to set
231          */
232         public void setKnowledgeElementService(
233                         KnowledgeElementService knowledgeElementService) {
234                 _knowledgeElementService = knowledgeElementService;
235         }
236
237         /**
238          * Get the knowledgeElementTypeService.
239          * @return the knowledgeElementTypeService
240          */
241         public KnowledgeElementTypeService getKnowledgeElementTypeService() {
242                 return _knowledgeElementTypeService;
243         }
244
245         /**
246          * Set the knowledgeElementTypeService.
247          * @param knowledgeElementTypeService the knowledgeElementTypeService to set
248          */
249         public void setKnowledgeElementTypeService(
250                         KnowledgeElementTypeService knowledgeElementTypeService) {
251                 _knowledgeElementTypeService = knowledgeElementTypeService;
252         }
253         
254         /**
255          * Get the menuProperty.
256          * @return the menuProperty
257          */
258         public String getMenuProperty() {
259                 return _menuProperty;
260         }
261
262         /**
263          * Set the menuProperty.
264          * @param menuProperty the menuProperty to set
265          */
266         public void setMenuProperty(String menuProperty) {
267                 this._menuProperty = menuProperty;
268         }
269 }