]> SALOME platform Git repositories - tools/siman.git/blob - Workspace/Siman/src/org/splat/simer/EditKnowledgeElementAction.java
Salome HOME
Tool bar is 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. It can be: none, create, open, study, knowledge, sysadmin, help.
49          */
50         private String _menuProperty;
51         
52         /**
53          * Value of the title bar property. 
54          * It can be: study, knowledge.
55          */
56         private String _titleProperty;
57         
58         /**
59          * Property that indicates whether the current open study is editable or not.
60          * On the screen it looks like pen on the status icon, pop-up menu also can be called.
61          * It is necessary for correct building the title bar.
62          */
63         private String _editDisabledProperty = "false";
64         
65         /**
66          * Value of the tool bar property. 
67          * It can be: none, standard, study, back.
68          */
69         private String _toolProperty;
70
71         // ==============================================================================================================================
72         // Action methods
73         // ==============================================================================================================================
74
75         /**
76          * Initialize the action. Get selected study from the session.
77          * 
78          * @return SUCCESS if no exceptions
79          */
80         public String doInitialize() {
81                 mystudy = getOpenStudy();
82
83                 setMenuProperty("study");
84                 setTitleProperty("study");
85                 if ("true".equals(getWriteAccess()) &&  getUserRights().canCreateDocument()) {
86                         setToolProperty("study");
87                 } else {
88                         setToolProperty("standard");
89                 }
90                 initializationScreenContext(_menuProperty, _titleProperty, _editDisabledProperty, _toolProperty);
91
92                 return SUCCESS;
93         }
94
95         /**
96          * Add a new or update an existing knowledge element of the selected scenario in the open study.
97          * 
98          * @return SUCCESS if operation succeeded, ERROR if Runtime exception, otherwise INPUT
99          */
100         public String doSetKnowledge() {
101
102                 setMenuProperty("study");
103                 setTitleProperty("study");
104                 if ("true".equals(getWriteAccess()) &&  getUserRights().canCreateDocument()) {
105                         setToolProperty("study");
106                 } else {
107                         setToolProperty("standard");
108                 }
109                 initializationScreenContext(_menuProperty, _titleProperty, _editDisabledProperty, _toolProperty);
110
111                 try {
112                         User user = getConnectedUser();
113                         mystudy = getOpenStudy();
114
115                         Step step = mystudy.getSelectedStep();
116                         Scenario scene = (Scenario) step.getOwner(); // It is necessarily a Scenario
117
118                         if (title != null && value != null) { // Addition of a new Knowledge Element
119                                 KnowledgeElement.Properties kprop = new KnowledgeElement.Properties();
120                                 KnowledgeElementType ktype = getKnowledgeElementTypeService()
121                                                 .selectType(Integer.valueOf(type));
122                                 kprop.setType(ktype).setTitle(title).setValue(value).setAuthor(
123                                                 user);
124                                 mystudy.add(getScenarioService().addKnowledgeElement(scene,
125                                                 kprop));
126                                 getMenu("study").selects(mystudy.getSelection()); // Updates the menu icon, in case of first added document
127                         } else if (title != null) { // Renaming of an existing Knowledge Element
128                                 KnowledgeElement kelm = scene.getKnowledgeElement(Integer
129                                                 .valueOf(type));
130                                 getKnowledgeElementService().rename(kelm, title);
131                                 // Useless to update the open study
132                         } else if (value != null) { // Edition of a knowledge
133                                 KnowledgeElement kelm = scene.getKnowledgeElement(Integer
134                                                 .valueOf(type));
135                                 getKnowledgeElementService().update(kelm, value);
136                                 mystudy.update(kelm); // For updating the truncated value
137                         }
138                         return SUCCESS;
139                 } catch (RuntimeException saverror) {
140                         logger.error("Reason:", saverror);
141                         return ERROR;
142                 } catch (Exception error) {
143                         logger.error("Exception while saving a knowledge: ", error);
144                         return INPUT;
145                 }
146         }
147
148         /**
149          * Delete a knowledge element from the current scenario.
150          * 
151          * @return SUCCESS if no exceptions
152          */
153         public String doDeleteKnowledge() {
154                 mystudy = getOpenStudy();
155                 Step step = mystudy.getSelectedStep();
156                 Scenario scene = (Scenario) step.getOwner(); // It is necessarily a Scenario
157
158                 KnowledgeElement kelm = scene.getKnowledgeElement(Integer
159                                 .valueOf(myindex));
160                 getScenarioService().removeKnowledgeElement(scene, kelm); // The knowledge element necessarily exists
161
162                 mystudy.remove(kelm);
163                 getMenu("study").selects(mystudy.getSelection()); // Updates the menu icon, in case of last removed document
164
165                 setMenuProperty("study");
166                 setTitleProperty("study");
167                 if ("true".equals(getWriteAccess()) &&  getUserRights().canCreateDocument()) {
168                         setToolProperty("study");
169                 } else {
170                         setToolProperty("standard");
171                 }
172                 initializationScreenContext(_menuProperty, _titleProperty, _editDisabledProperty, _toolProperty);
173
174                 return SUCCESS;
175         }
176
177         // ==============================================================================================================================
178         // Getters and setters
179         // ==============================================================================================================================
180
181         /**
182          * Get the type of the modified knowledge element.
183          * 
184          * @return the knowledge type name
185          */
186         public String getKnowledgeType() {
187                 // ---------------------------------
188                 return type;
189         }
190
191         /**
192          * Get the id of the modified knowledge element.
193          * 
194          * @return the knowledge element id
195          */
196         public String getSelectedKnowledge() {
197                 // -------------------------------------
198                 return myindex;
199         }
200
201         /**
202          * Set the type of the modified knowledge element.
203          * 
204          * @param type
205          *            the knowledge type name
206          */
207         public void setKnowledgeType(String type) {
208                 // ------------------------------------------
209                 this.type = type;
210         }
211
212         /**
213          * Set the title of the modified knowledge element.
214          * 
215          * @param title
216          *            the new knowledge title
217          */
218         public void setKnowledgeTitle(String title) {
219                 // --------------------------------------------
220                 this.title = title;
221         }
222
223         /**
224          * Set the value of the modified knowledge element.
225          * 
226          * @param value
227          *            the knowledge value
228          */
229         public void setKnowledgeValue(String value) {
230                 // --------------------------------------------
231                 this.value = value;
232         }
233
234         /**
235          * Get the scenarioService.
236          * 
237          * @return the scenarioService
238          */
239         public ScenarioService getScenarioService() {
240                 return _scenarioService;
241         }
242
243         /**
244          * Set the scenarioService.
245          * 
246          * @param scenarioService
247          *            the scenarioService to set
248          */
249         public void setScenarioService(ScenarioService scenarioService) {
250                 _scenarioService = scenarioService;
251         }
252
253         /**
254          * Get the knowledgeElementService.
255          * 
256          * @return the knowledgeElementService
257          */
258         public KnowledgeElementService getKnowledgeElementService() {
259                 return _knowledgeElementService;
260         }
261
262         /**
263          * Set the knowledgeElementService.
264          * 
265          * @param knowledgeElementService
266          *            the knowledgeElementService to set
267          */
268         public void setKnowledgeElementService(
269                         KnowledgeElementService knowledgeElementService) {
270                 _knowledgeElementService = knowledgeElementService;
271         }
272
273         /**
274          * Get the knowledgeElementTypeService.
275          * 
276          * @return the knowledgeElementTypeService
277          */
278         public KnowledgeElementTypeService getKnowledgeElementTypeService() {
279                 return _knowledgeElementTypeService;
280         }
281
282         /**
283          * Set the knowledgeElementTypeService.
284          * 
285          * @param knowledgeElementTypeService
286          *            the knowledgeElementTypeService to set
287          */
288         public void setKnowledgeElementTypeService(
289                         KnowledgeElementTypeService knowledgeElementTypeService) {
290                 _knowledgeElementTypeService = knowledgeElementTypeService;
291         }
292
293         /**
294          * Get the menuProperty.
295          * 
296          * @return the menuProperty
297          */
298         public String getMenuProperty() {
299                 return _menuProperty;
300         }
301
302         /**
303          * Set the menuProperty.
304          * 
305          * @param menuProperty
306          *            the menuProperty to set
307          */
308         public void setMenuProperty(final String menuProperty) {
309                 this._menuProperty = menuProperty;
310         }
311         
312         /**
313          * Get the _titleProperty.
314          * @return the _titleProperty
315          */
316         public String getTitleProperty() {
317                 return _titleProperty;
318         }
319
320         /**
321          * Set the titleProperty.
322          * @param titleProperty the titleProperty to set
323          */
324         public void setTitleProperty(final String titleProperty) {
325                 _titleProperty = titleProperty;
326         }
327
328         /**
329          * Get the editDisabledProperty.
330          * @return the editDisabledProperty
331          */
332         public String getEditDisabledProperty() {
333                 return _editDisabledProperty;
334         }
335
336         /**
337          * Set the editDisabledProperty.
338          * @param editDisabledProperty the editDisabledProperty to set
339          */
340         public void setEditDisabledProperty(final String editDisabledProperty) {
341                 _editDisabledProperty = editDisabledProperty;
342         }
343
344         /**
345          * Get the toolProperty.
346          * @return the toolProperty
347          */
348         public String getToolProperty() {
349                 return _toolProperty;
350         }
351
352         /**
353          * Set the toolProperty.
354          * @param toolProperty the toolProperty to set
355          */
356         public void setToolProperty(final String toolProperty) {
357                 _toolProperty = toolProperty;
358         }
359
360         
361 }