Salome HOME
Fix:
[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         // Action methods
50         // ==============================================================================================================================
51
52         /**
53          * Initialize the action. Get selected study from the session.
54          * 
55          * @return SUCCESS if no exceptions
56          */
57         public String doInitialize() {
58                 _openStudy = getOpenStudy();
59                 setMenu();
60                 return SUCCESS;
61         }
62
63         /**
64          * Add a new or update an existing knowledge element of the selected scenario in the open study.
65          * 
66          * @return SUCCESS if operation succeeded, ERROR if Runtime exception, otherwise INPUT
67          */
68         public String doSetKnowledge() {
69
70                 String res = SUCCESS;
71                 setMenu();
72
73                 try {
74                         _openStudy = getOpenStudy();
75
76                         if ((_knowledgeTitle == null) || (_knowledgeValue == null)) {
77                                 KnowledgeElementDTO kelm = new KnowledgeElementDTO(Integer
78                                                 .valueOf(_knowledgeType), _knowledgeTitle,
79                                                 _knowledgeValue);
80                                 if (_knowledgeValue == null) { // Renaming of an existing Knowledge Element
81                                         getKnowledgeElementService().rename(kelm, _knowledgeTitle);
82                                 } else { // Edition of a knowledge
83                                         getKnowledgeElementService().update(kelm, _knowledgeValue);
84                                 }
85                                 _openStudy.update(kelm); // For updating the truncated value
86                         } else { // Addition of a new Knowledge Element
87                                 KnowledgeElement.Properties kprop = new KnowledgeElement.Properties();
88                                 KnowledgeElementType ktype = getKnowledgeElementTypeService()
89                                                 .selectType(Integer.valueOf(_knowledgeType));
90                                 kprop.setType(ktype).setTitle(_knowledgeTitle).setValue(
91                                                 _knowledgeValue).setAuthor(getConnectedUser());
92                                 _openStudy.add(getScenarioService().addKnowledgeElement(
93                                                 (Scenario) _openStudy.getSelectedStep().getOwner(),
94                                                 kprop));
95                                 getMenu(Constants.STUDY_MENU)
96                                                 .selects(_openStudy.getSelection()); // Updates the menu icon, in case of first added document
97                         }
98                 } catch (RuntimeException saverror) {
99                         LOG.error("Reason:", saverror);
100                         res = ERROR;
101                 } catch (Exception error) {
102                         LOG.error("Exception while saving a knowledge: ", error);
103                         res = INPUT;
104                 }
105                 return res;
106         }
107
108         /**
109          * Delete a knowledge element from the current scenario.
110          * 
111          * @return SUCCESS if no exceptions
112          */
113         public String doDeleteKnowledge() {
114                 _openStudy = getOpenStudy();
115                 Step step = _openStudy.getSelectedStep();
116                 Scenario scene = (Scenario) step.getOwner(); // It is necessarily a Scenario
117
118                 KnowledgeElement kelm = scene.getKnowledgeElement(Integer
119                                 .valueOf(_myindex));
120                 getScenarioService().removeKnowledgeElement(scene, kelm); // The knowledge element necessarily exists
121
122                 _openStudy.remove(kelm);
123                 updateMenu();
124
125                 return SUCCESS;
126         }
127
128         /**
129          * Promote a knowledge element from the current scenario.
130          * 
131          * @return SUCCESS if no exceptions
132          */
133         public String doPromoteKnowledge() {
134                 getKnowledgeElementService().promote(getKnowledgeElement()); // The knowledge element necessarily exists
135                 updateMenu();
136                 return SUCCESS;
137         }
138
139         /**
140          * Demote a knowledge element from the current scenario.
141          * 
142          * @return SUCCESS if no exceptions
143          */
144         public String doDemoteKnowledge() {
145                 getKnowledgeElementService().demote(getKnowledgeElement()); // The knowledge element necessarily exists
146                 updateMenu();
147                 return SUCCESS;
148         }
149
150         /**
151          * Get selected knowledge element.
152          * 
153          * @return the selected knowledge element
154          */
155         private KnowledgeElement getKnowledgeElement() {
156                 _openStudy = getOpenStudy();
157                 Step step = _openStudy.getSelectedStep();
158                 Scenario scene = (Scenario) step.getOwner(); // It is necessarily a Scenario
159                 return scene.getKnowledgeElement(Integer.valueOf(_myindex));
160         }
161
162         /**
163          * Update current menu.
164          */
165         private void updateMenu() {
166                 getMenu(Constants.STUDY_MENU).selects(_openStudy.getSelection()); // Updates the menu icon, in case of last removed document
167                 setMenu();
168         }
169
170         // ==============================================================================================================================
171         // Getters and setters
172         // ==============================================================================================================================
173
174         /**
175          * Get the type of the modified knowledge element.
176          * 
177          * @return the knowledge type name
178          */
179         public String getKnowledgeType() {
180                 return _knowledgeType;
181         }
182
183         /**
184          * Get the id of the modified knowledge element.
185          * 
186          * @return the knowledge element id
187          */
188         public String getSelectedKnowledge() {
189                 return _myindex;
190         }
191
192         /**
193          * Set the type of the modified knowledge element.
194          * 
195          * @param type
196          *            the knowledge type name
197          */
198         public void setKnowledgeType(final String type) {
199                 this._knowledgeType = type;
200         }
201
202         /**
203          * Set the title of the modified knowledge element.
204          * 
205          * @param title
206          *            the new knowledge title
207          */
208         public void setKnowledgeTitle(final String title) {
209                 this._knowledgeTitle = title;
210         }
211
212         /**
213          * Set the value of the modified knowledge element.
214          * 
215          * @param value
216          *            the knowledge value
217          */
218         public void setKnowledgeValue(final String value) {
219                 this._knowledgeValue = value;
220         }
221
222         /**
223          * Get the scenarioService.
224          * 
225          * @return the scenarioService
226          */
227         public ScenarioService getScenarioService() {
228                 return _scenarioService;
229         }
230
231         /**
232          * Set the scenarioService.
233          * 
234          * @param scenarioService
235          *            the scenarioService to set
236          */
237         public void setScenarioService(final ScenarioService scenarioService) {
238                 _scenarioService = scenarioService;
239         }
240
241         /**
242          * Get the knowledgeElementService.
243          * 
244          * @return the knowledgeElementService
245          */
246         public KnowledgeElementService getKnowledgeElementService() {
247                 return _knowledgeElementService;
248         }
249
250         /**
251          * Set the knowledgeElementService.
252          * 
253          * @param knowledgeElementService
254          *            the knowledgeElementService to set
255          */
256         public void setKnowledgeElementService(
257                         final KnowledgeElementService knowledgeElementService) {
258                 _knowledgeElementService = knowledgeElementService;
259         }
260
261         /**
262          * Get the knowledgeElementTypeService.
263          * 
264          * @return the knowledgeElementTypeService
265          */
266         public KnowledgeElementTypeService getKnowledgeElementTypeService() {
267                 return _knowledgeElementTypeService;
268         }
269
270         /**
271          * Set the knowledgeElementTypeService.
272          * 
273          * @param knowledgeElementTypeService
274          *            the knowledgeElementTypeService to set
275          */
276         public void setKnowledgeElementTypeService(
277                         final KnowledgeElementTypeService knowledgeElementTypeService) {
278                 _knowledgeElementTypeService = knowledgeElementTypeService;
279         }
280
281         /**
282          * Get the knowledgeValue.
283          * 
284          * @return the knowledgeValue
285          */
286         public String getKnowledgeValue() {
287                 return _knowledgeValue;
288         }
289
290         /**
291          * Get the knowledgeTitle.
292          * 
293          * @return the knowledgeTitle
294          */
295         public String getKnowledgeTitle() {
296                 return _knowledgeTitle;
297         }
298 }