1 package org.splat.simer;
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;
13 * Action for addition and modification of knowledge elements in the selected scenario.
15 public class EditKnowledgeElementAction extends DisplayStudyStepAction {
20 private static final long serialVersionUID = 4636919137087687068L;
23 * Edited knowledge element type.
25 private String type = null; // Edited knowledge type
27 * Edited knowledge element title.
29 private String title = null;
31 * Edited knowledge element value.
33 private String value = null;
35 * Injected scenario service.
37 private ScenarioService _scenarioService;
39 * Injected knowledge element service.
41 private KnowledgeElementService _knowledgeElementService;
43 * Injected knowledge element type service.
45 private KnowledgeElementTypeService _knowledgeElementTypeService;
48 * Value of the menu property. It can be: none, create, open, study, knowledge, sysadmin, help.
50 private String _menuProperty;
53 * Value of the title bar property.
54 * It can be: study, knowledge.
56 private String _titleProperty;
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.
63 private String _editDisabledProperty = "false";
66 * Value of the tool bar property.
67 * It can be: none, standard, study, back.
69 private String _toolProperty;
71 // ==============================================================================================================================
73 // ==============================================================================================================================
76 * Initialize the action. Get selected study from the session.
78 * @return SUCCESS if no exceptions
80 public String doInitialize() {
81 mystudy = getOpenStudy();
83 setMenuProperty("study");
84 setTitleProperty("study");
85 if ("true".equals(getWriteAccess()) && getUserRights().canCreateDocument()) {
86 setToolProperty("study");
88 setToolProperty("standard");
90 initializationScreenContext(_menuProperty, _titleProperty, _editDisabledProperty, _toolProperty);
96 * Add a new or update an existing knowledge element of the selected scenario in the open study.
98 * @return SUCCESS if operation succeeded, ERROR if Runtime exception, otherwise INPUT
100 public String doSetKnowledge() {
102 setMenuProperty("study");
103 setTitleProperty("study");
104 if ("true".equals(getWriteAccess()) && getUserRights().canCreateDocument()) {
105 setToolProperty("study");
107 setToolProperty("standard");
109 initializationScreenContext(_menuProperty, _titleProperty, _editDisabledProperty, _toolProperty);
112 User user = getConnectedUser();
113 mystudy = getOpenStudy();
115 Step step = mystudy.getSelectedStep();
116 Scenario scene = (Scenario) step.getOwner(); // It is necessarily a Scenario
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(
124 mystudy.add(getScenarioService().addKnowledgeElement(scene,
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
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
135 getKnowledgeElementService().update(kelm, value);
136 mystudy.update(kelm); // For updating the truncated value
139 } catch (RuntimeException saverror) {
140 logger.error("Reason:", saverror);
142 } catch (Exception error) {
143 logger.error("Exception while saving a knowledge: ", error);
149 * Delete a knowledge element from the current scenario.
151 * @return SUCCESS if no exceptions
153 public String doDeleteKnowledge() {
154 mystudy = getOpenStudy();
155 Step step = mystudy.getSelectedStep();
156 Scenario scene = (Scenario) step.getOwner(); // It is necessarily a Scenario
158 KnowledgeElement kelm = scene.getKnowledgeElement(Integer
160 getScenarioService().removeKnowledgeElement(scene, kelm); // The knowledge element necessarily exists
162 mystudy.remove(kelm);
163 getMenu("study").selects(mystudy.getSelection()); // Updates the menu icon, in case of last removed document
165 setMenuProperty("study");
166 setTitleProperty("study");
167 if ("true".equals(getWriteAccess()) && getUserRights().canCreateDocument()) {
168 setToolProperty("study");
170 setToolProperty("standard");
172 initializationScreenContext(_menuProperty, _titleProperty, _editDisabledProperty, _toolProperty);
177 // ==============================================================================================================================
178 // Getters and setters
179 // ==============================================================================================================================
182 * Get the type of the modified knowledge element.
184 * @return the knowledge type name
186 public String getKnowledgeType() {
187 // ---------------------------------
192 * Get the id of the modified knowledge element.
194 * @return the knowledge element id
196 public String getSelectedKnowledge() {
197 // -------------------------------------
202 * Set the type of the modified knowledge element.
205 * the knowledge type name
207 public void setKnowledgeType(String type) {
208 // ------------------------------------------
213 * Set the title of the modified knowledge element.
216 * the new knowledge title
218 public void setKnowledgeTitle(String title) {
219 // --------------------------------------------
224 * Set the value of the modified knowledge element.
227 * the knowledge value
229 public void setKnowledgeValue(String value) {
230 // --------------------------------------------
235 * Get the scenarioService.
237 * @return the scenarioService
239 public ScenarioService getScenarioService() {
240 return _scenarioService;
244 * Set the scenarioService.
246 * @param scenarioService
247 * the scenarioService to set
249 public void setScenarioService(ScenarioService scenarioService) {
250 _scenarioService = scenarioService;
254 * Get the knowledgeElementService.
256 * @return the knowledgeElementService
258 public KnowledgeElementService getKnowledgeElementService() {
259 return _knowledgeElementService;
263 * Set the knowledgeElementService.
265 * @param knowledgeElementService
266 * the knowledgeElementService to set
268 public void setKnowledgeElementService(
269 KnowledgeElementService knowledgeElementService) {
270 _knowledgeElementService = knowledgeElementService;
274 * Get the knowledgeElementTypeService.
276 * @return the knowledgeElementTypeService
278 public KnowledgeElementTypeService getKnowledgeElementTypeService() {
279 return _knowledgeElementTypeService;
283 * Set the knowledgeElementTypeService.
285 * @param knowledgeElementTypeService
286 * the knowledgeElementTypeService to set
288 public void setKnowledgeElementTypeService(
289 KnowledgeElementTypeService knowledgeElementTypeService) {
290 _knowledgeElementTypeService = knowledgeElementTypeService;
294 * Get the menuProperty.
296 * @return the menuProperty
298 public String getMenuProperty() {
299 return _menuProperty;
303 * Set the menuProperty.
305 * @param menuProperty
306 * the menuProperty to set
308 public void setMenuProperty(final String menuProperty) {
309 this._menuProperty = menuProperty;
313 * Get the _titleProperty.
314 * @return the _titleProperty
316 public String getTitleProperty() {
317 return _titleProperty;
321 * Set the titleProperty.
322 * @param titleProperty the titleProperty to set
324 public void setTitleProperty(final String titleProperty) {
325 _titleProperty = titleProperty;
329 * Get the editDisabledProperty.
330 * @return the editDisabledProperty
332 public String getEditDisabledProperty() {
333 return _editDisabledProperty;
337 * Set the editDisabledProperty.
338 * @param editDisabledProperty the editDisabledProperty to set
340 public void setEditDisabledProperty(final String editDisabledProperty) {
341 _editDisabledProperty = editDisabledProperty;
345 * Get the toolProperty.
346 * @return the toolProperty
348 public String getToolProperty() {
349 return _toolProperty;
353 * Set the toolProperty.
354 * @param toolProperty the toolProperty to set
356 public void setToolProperty(final String toolProperty) {
357 _toolProperty = toolProperty;