]> SALOME platform Git repositories - tools/siman.git/blob - Workspace/Siman/src/org/splat/simer/EditKnowledgeElementAction.java
Salome HOME
cfcb2c5da289e630be51843265c7bb2945741c63
[tools/siman.git] / Workspace / Siman / src / org / splat / simer / EditKnowledgeElementAction.java
1 package org.splat.simer;
2
3 import org.splat.dal.bo.som.KnowledgeElement;
4 import org.splat.dal.bo.som.KnowledgeElementType;
5 import org.splat.dal.bo.som.Scenario;
6 import org.splat.service.KnowledgeElementService;
7 import org.splat.service.KnowledgeElementTypeService;
8 import org.splat.service.ScenarioService;
9 import org.splat.service.dto.KnowledgeElementDTO;
10 import org.splat.som.Step;
11 import org.splat.wapp.Constants;
12
13 /**
14  * Action for addition and modification of knowledge elements in the selected scenario.
15  */
16 public class EditKnowledgeElementAction extends DisplayStudyStepAction {
17
18         /**
19          * Serial version ID.
20          */
21         private static final long serialVersionUID = 4636919137087687068L;
22
23         /**
24          * Edited knowledge element type.
25          */
26         private String _knowledgeType = null; // Edited knowledge type
27         /**
28          * Edited knowledge element title.
29          */
30         private String _knowledgeTitle = null;
31         /**
32          * Edited knowledge element value.
33          */
34         private String _knowledgeValue = null;
35         /**
36          * Injected scenario service.
37          */
38         private ScenarioService _scenarioService;
39         /**
40          * Injected knowledge element service.
41          */
42         private KnowledgeElementService _knowledgeElementService;
43         /**
44          * Injected knowledge element type service.
45          */
46         private KnowledgeElementTypeService _knowledgeElementTypeService;
47
48         /**
49          * Value of the menu property. It can be: none, create, open, study, knowledge, sysadmin, help.
50          */
51         private String _menuProperty;
52
53         /**
54          * Value of the title bar property. 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. On the screen it looks like pen on the status icon, pop-up
60          * menu also can be called. It is necessary for correct building the title bar.
61          */
62         private String _editDisabledProperty = "false";
63
64         /**
65          * Value of the tool bar property. It can be: none, standard, study, back.
66          */
67         private String _toolProperty;
68
69         /**
70          * Value of the left menu property. It can be: open, study, knowledge, scenario.
71          */
72         private String _leftMenuProperty;
73
74         // ==============================================================================================================================
75         // Action methods
76         // ==============================================================================================================================
77
78         /**
79          * Initialize the action. Get selected study from the session.
80          * 
81          * @return SUCCESS if no exceptions
82          */
83         public String doInitialize() {
84                 _openStudy = getOpenStudy();
85
86                 setMenuProperty(Constants.STUDY_MENU);
87                 setTitleProperty(Constants.STUDY_MENU);
88                 if ("true".equals(getWriteAccess())
89                                 && getUserRights().canCreateDocument()) {
90                         setToolProperty(Constants.STUDY_MENU);
91                 } else {
92                         setToolProperty("standard");
93                 }
94                 setLeftMenuProperty(Constants.STUDY_MENU);
95                 initializationFullScreenContext(_menuProperty, _titleProperty,
96                                 _editDisabledProperty, _toolProperty, _leftMenuProperty);
97
98                 return SUCCESS;
99         }
100
101         /**
102          * Add a new or update an existing knowledge element of the selected scenario in the open study.
103          * 
104          * @return SUCCESS if operation succeeded, ERROR if Runtime exception, otherwise INPUT
105          */
106         public String doSetKnowledge() {
107
108                 String res = SUCCESS;
109                 setMenuProperty(Constants.STUDY_MENU);
110                 setTitleProperty(Constants.STUDY_MENU);
111                 if ("true".equals(getWriteAccess())
112                                 && getUserRights().canCreateDocument()) {
113                         setToolProperty(Constants.STUDY_MENU);
114                 } else {
115                         setToolProperty("standard");
116                 }
117                 setLeftMenuProperty(Constants.STUDY_MENU);
118                 initializationFullScreenContext(_menuProperty, _titleProperty,
119                                 _editDisabledProperty, _toolProperty, _leftMenuProperty);
120
121                 try {
122                         _openStudy = getOpenStudy();
123
124                         if ((_knowledgeTitle == null) || (_knowledgeValue == null)) {
125                                 KnowledgeElementDTO kelm = new KnowledgeElementDTO(Integer
126                                                 .valueOf(_knowledgeType), _knowledgeTitle,
127                                                 _knowledgeValue);
128                                 if (_knowledgeValue == null) { // Renaming of an existing Knowledge Element
129                                         getKnowledgeElementService().rename(kelm, _knowledgeTitle);
130                                 } else { // Edition of a knowledge
131                                         getKnowledgeElementService().update(kelm, _knowledgeValue);
132                                 }
133                                 _openStudy.update(kelm); // For updating the truncated value
134                         } else { // Addition of a new Knowledge Element
135                                 KnowledgeElement.Properties kprop = new KnowledgeElement.Properties();
136                                 KnowledgeElementType ktype = getKnowledgeElementTypeService()
137                                                 .selectType(Integer.valueOf(_knowledgeType));
138                                 kprop.setType(ktype).setTitle(_knowledgeTitle).setValue(
139                                                 _knowledgeValue).setAuthor(getConnectedUser());
140                                 _openStudy.add(getScenarioService().addKnowledgeElement(
141                                                 (Scenario) _openStudy.getSelectedStep().getOwner(),
142                                                 kprop));
143                                 getMenu(Constants.STUDY_MENU)
144                                                 .selects(_openStudy.getSelection()); // Updates the menu icon, in case of first added document
145                         }
146                 } catch (RuntimeException saverror) {
147                         LOG.error("Reason:", saverror);
148                         res = ERROR;
149                 } catch (Exception error) {
150                         LOG.error("Exception while saving a knowledge: ", error);
151                         res = INPUT;
152                 }
153                 return res;
154         }
155
156         /**
157          * Delete a knowledge element from the current scenario.
158          * 
159          * @return SUCCESS if no exceptions
160          */
161         public String doDeleteKnowledge() {
162                 _openStudy = getOpenStudy();
163                 Step step = _openStudy.getSelectedStep();
164                 Scenario scene = (Scenario) step.getOwner(); // It is necessarily a Scenario
165
166                 KnowledgeElement kelm = scene.getKnowledgeElement(Integer
167                                 .valueOf(_myindex));
168                 getScenarioService().removeKnowledgeElement(scene, kelm); // The knowledge element necessarily exists
169
170                 _openStudy.remove(kelm);
171                 updateMenu();
172
173                 return SUCCESS;
174         }
175
176         /**
177          * Promote a knowledge element from the current scenario.
178          * 
179          * @return SUCCESS if no exceptions
180          */
181         public String doPromoteKnowledge() {
182                 getKnowledgeElementService().promote(getKnowledgeElement()); // The knowledge element necessarily exists
183                 updateMenu();
184                 return SUCCESS;
185         }
186
187         /**
188          * Demote a knowledge element from the current scenario.
189          * 
190          * @return SUCCESS if no exceptions
191          */
192         public String doDemoteKnowledge() {
193                 getKnowledgeElementService().demote(getKnowledgeElement()); // The knowledge element necessarily exists
194                 updateMenu();
195                 return SUCCESS;
196         }
197
198         /**
199          * Get selected knowledge element.
200          * 
201          * @return the selected knowledge element
202          */
203         private KnowledgeElement getKnowledgeElement() {
204                 _openStudy = getOpenStudy();
205                 Step step = _openStudy.getSelectedStep();
206                 Scenario scene = (Scenario) step.getOwner(); // It is necessarily a Scenario
207                 return scene.getKnowledgeElement(Integer.valueOf(_myindex));
208         }
209
210         /**
211          * Update current menu.
212          */
213         private void updateMenu() {
214                 getMenu(Constants.STUDY_MENU).selects(_openStudy.getSelection()); // Updates the menu icon, in case of last removed document
215
216                 setMenuProperty(Constants.STUDY_MENU);
217                 setTitleProperty(Constants.STUDY_MENU);
218                 if ("true".equals(getWriteAccess())
219                                 && getUserRights().canCreateDocument()) {
220                         setToolProperty(Constants.STUDY_MENU);
221                 } else {
222                         setToolProperty("standard");
223                 }
224                 setLeftMenuProperty(Constants.STUDY_MENU);
225                 initializationFullScreenContext(_menuProperty, _titleProperty,
226                                 _editDisabledProperty, _toolProperty, _leftMenuProperty);
227
228         }
229
230         // ==============================================================================================================================
231         // Getters and setters
232         // ==============================================================================================================================
233
234         /**
235          * Get the type of the modified knowledge element.
236          * 
237          * @return the knowledge type name
238          */
239         public String getKnowledgeType() {
240                 return _knowledgeType;
241         }
242
243         /**
244          * Get the id of the modified knowledge element.
245          * 
246          * @return the knowledge element id
247          */
248         public String getSelectedKnowledge() {
249                 return _myindex;
250         }
251
252         /**
253          * Set the type of the modified knowledge element.
254          * 
255          * @param type
256          *            the knowledge type name
257          */
258         public void setKnowledgeType(final String type) {
259                 this._knowledgeType = type;
260         }
261
262         /**
263          * Set the title of the modified knowledge element.
264          * 
265          * @param title
266          *            the new knowledge title
267          */
268         public void setKnowledgeTitle(final String title) {
269                 this._knowledgeTitle = title;
270         }
271
272         /**
273          * Set the value of the modified knowledge element.
274          * 
275          * @param value
276          *            the knowledge value
277          */
278         public void setKnowledgeValue(final String value) {
279                 this._knowledgeValue = value;
280         }
281
282         /**
283          * Get the scenarioService.
284          * 
285          * @return the scenarioService
286          */
287         public ScenarioService getScenarioService() {
288                 return _scenarioService;
289         }
290
291         /**
292          * Set the scenarioService.
293          * 
294          * @param scenarioService
295          *            the scenarioService to set
296          */
297         public void setScenarioService(final ScenarioService scenarioService) {
298                 _scenarioService = scenarioService;
299         }
300
301         /**
302          * Get the knowledgeElementService.
303          * 
304          * @return the knowledgeElementService
305          */
306         public KnowledgeElementService getKnowledgeElementService() {
307                 return _knowledgeElementService;
308         }
309
310         /**
311          * Set the knowledgeElementService.
312          * 
313          * @param knowledgeElementService
314          *            the knowledgeElementService to set
315          */
316         public void setKnowledgeElementService(
317                         final KnowledgeElementService knowledgeElementService) {
318                 _knowledgeElementService = knowledgeElementService;
319         }
320
321         /**
322          * Get the knowledgeElementTypeService.
323          * 
324          * @return the knowledgeElementTypeService
325          */
326         public KnowledgeElementTypeService getKnowledgeElementTypeService() {
327                 return _knowledgeElementTypeService;
328         }
329
330         /**
331          * Set the knowledgeElementTypeService.
332          * 
333          * @param knowledgeElementTypeService
334          *            the knowledgeElementTypeService to set
335          */
336         public void setKnowledgeElementTypeService(
337                         final KnowledgeElementTypeService knowledgeElementTypeService) {
338                 _knowledgeElementTypeService = knowledgeElementTypeService;
339         }
340
341         /**
342          * Get the menuProperty.
343          * 
344          * @return the menuProperty
345          */
346         @Override
347         public String getMenuProperty() {
348                 return _menuProperty;
349         }
350
351         /**
352          * Set the menuProperty.
353          * 
354          * @param menuProperty
355          *            the menuProperty to set
356          */
357         @Override
358         public void setMenuProperty(final String menuProperty) {
359                 this._menuProperty = menuProperty;
360         }
361
362         /**
363          * Get the _titleProperty.
364          * 
365          * @return the _titleProperty
366          */
367         @Override
368         public String getTitleProperty() {
369                 return _titleProperty;
370         }
371
372         /**
373          * Set the titleProperty.
374          * 
375          * @param titleProperty
376          *            the titleProperty to set
377          */
378         @Override
379         public void setTitleProperty(final String titleProperty) {
380                 _titleProperty = titleProperty;
381         }
382
383         /**
384          * Get the editDisabledProperty.
385          * 
386          * @return the editDisabledProperty
387          */
388         @Override
389         public String getEditDisabledProperty() {
390                 return _editDisabledProperty;
391         }
392
393         /**
394          * Set the editDisabledProperty.
395          * 
396          * @param editDisabledProperty
397          *            the editDisabledProperty to set
398          */
399         @Override
400         public void setEditDisabledProperty(final String editDisabledProperty) {
401                 _editDisabledProperty = editDisabledProperty;
402         }
403
404         /**
405          * Get the toolProperty.
406          * 
407          * @return the toolProperty
408          */
409         @Override
410         public String getToolProperty() {
411                 return _toolProperty;
412         }
413
414         /**
415          * Set the toolProperty.
416          * 
417          * @param toolProperty
418          *            the toolProperty to set
419          */
420         @Override
421         public void setToolProperty(final String toolProperty) {
422                 _toolProperty = toolProperty;
423         }
424
425         /**
426          * Get the leftMenuProperty.
427          * 
428          * @return the leftMenuProperty
429          */
430         @Override
431         public String getLeftMenuProperty() {
432                 return _leftMenuProperty;
433         }
434
435         /**
436          * Set the leftMenuProperty.
437          * 
438          * @param leftMenuProperty
439          *            the leftMenuProperty to set
440          */
441         @Override
442         public void setLeftMenuProperty(final String leftMenuProperty) {
443                 _leftMenuProperty = leftMenuProperty;
444         }
445
446         /**
447          * Get the knowledgeValue.
448          * 
449          * @return the knowledgeValue
450          */
451         public String getKnowledgeValue() {
452                 return _knowledgeValue;
453         }
454
455         /**
456          * Get the knowledgeTitle.
457          * 
458          * @return the knowledgeTitle
459          */
460         public String getKnowledgeTitle() {
461                 return _knowledgeTitle;
462         }
463
464 }