1 package org.splat.simer;
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;
14 * Action for addition and modification of knowledge elements in the selected scenario.
16 public class EditKnowledgeElementAction extends DisplayStudyStepAction {
21 private static final long serialVersionUID = 4636919137087687068L;
24 * Edited knowledge element type.
26 private String _knowledgeType = null; // Edited knowledge type
28 * Edited knowledge element title.
30 private String _knowledgeTitle = null;
32 * Edited knowledge element value.
34 private String _knowledgeValue = null;
36 * Injected scenario service.
38 private ScenarioService _scenarioService;
40 * Injected knowledge element service.
42 private KnowledgeElementService _knowledgeElementService;
44 * Injected knowledge element type service.
46 private KnowledgeElementTypeService _knowledgeElementTypeService;
48 // ==============================================================================================================================
50 // ==============================================================================================================================
53 * Initialize the action. Get selected study from the session.
55 * @return SUCCESS if no exceptions
57 public String doInitialize() {
58 _openStudy = getOpenStudy();
64 * Add a new or update an existing knowledge element of the selected scenario in the open study.
66 * @return SUCCESS if operation succeeded, ERROR if Runtime exception, otherwise INPUT
68 public String doSetKnowledge() {
74 _openStudy = getOpenStudy();
76 if ((_knowledgeTitle == null) || (_knowledgeValue == null)) {
77 KnowledgeElementDTO kelm = new KnowledgeElementDTO(Integer
78 .valueOf(_knowledgeType), _knowledgeTitle,
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);
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(),
95 getMenu(Constants.STUDY_MENU)
96 .selects(_openStudy.getSelection()); // Updates the menu icon, in case of first added document
98 } catch (RuntimeException saverror) {
99 LOG.error("Reason:", saverror);
101 } catch (Exception error) {
102 LOG.error("Exception while saving a knowledge: ", error);
109 * Delete a knowledge element from the current scenario.
111 * @return SUCCESS if no exceptions
113 public String doDeleteKnowledge() {
114 _openStudy = getOpenStudy();
115 Step step = _openStudy.getSelectedStep();
116 Scenario scene = (Scenario) step.getOwner(); // It is necessarily a Scenario
118 KnowledgeElement kelm = scene.getKnowledgeElement(Integer
120 getScenarioService().removeKnowledgeElement(scene, kelm); // The knowledge element necessarily exists
122 _openStudy.remove(kelm);
129 * Promote a knowledge element from the current scenario.
131 * @return SUCCESS if no exceptions
133 public String doPromoteKnowledge() {
134 getKnowledgeElementService().promote(getKnowledgeElement()); // The knowledge element necessarily exists
140 * Demote a knowledge element from the current scenario.
142 * @return SUCCESS if no exceptions
144 public String doDemoteKnowledge() {
145 getKnowledgeElementService().demote(getKnowledgeElement()); // The knowledge element necessarily exists
151 * Get selected knowledge element.
153 * @return the selected knowledge element
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));
163 * Update current menu.
165 private void updateMenu() {
166 getMenu(Constants.STUDY_MENU).selects(_openStudy.getSelection()); // Updates the menu icon, in case of last removed document
170 // ==============================================================================================================================
171 // Getters and setters
172 // ==============================================================================================================================
175 * Get the type of the modified knowledge element.
177 * @return the knowledge type name
179 public String getKnowledgeType() {
180 return _knowledgeType;
184 * Get the id of the modified knowledge element.
186 * @return the knowledge element id
188 public String getSelectedKnowledge() {
193 * Set the type of the modified knowledge element.
196 * the knowledge type name
198 public void setKnowledgeType(final String type) {
199 this._knowledgeType = type;
203 * Set the title of the modified knowledge element.
206 * the new knowledge title
208 public void setKnowledgeTitle(final String title) {
209 this._knowledgeTitle = title;
213 * Set the value of the modified knowledge element.
216 * the knowledge value
218 public void setKnowledgeValue(final String value) {
219 this._knowledgeValue = value;
223 * Get the scenarioService.
225 * @return the scenarioService
227 public ScenarioService getScenarioService() {
228 return _scenarioService;
232 * Set the scenarioService.
234 * @param scenarioService
235 * the scenarioService to set
237 public void setScenarioService(final ScenarioService scenarioService) {
238 _scenarioService = scenarioService;
242 * Get the knowledgeElementService.
244 * @return the knowledgeElementService
246 public KnowledgeElementService getKnowledgeElementService() {
247 return _knowledgeElementService;
251 * Set the knowledgeElementService.
253 * @param knowledgeElementService
254 * the knowledgeElementService to set
256 public void setKnowledgeElementService(
257 final KnowledgeElementService knowledgeElementService) {
258 _knowledgeElementService = knowledgeElementService;
262 * Get the knowledgeElementTypeService.
264 * @return the knowledgeElementTypeService
266 public KnowledgeElementTypeService getKnowledgeElementTypeService() {
267 return _knowledgeElementTypeService;
271 * Set the knowledgeElementTypeService.
273 * @param knowledgeElementTypeService
274 * the knowledgeElementTypeService to set
276 public void setKnowledgeElementTypeService(
277 final KnowledgeElementTypeService knowledgeElementTypeService) {
278 _knowledgeElementTypeService = knowledgeElementTypeService;
282 * Get the knowledgeValue.
284 * @return the knowledgeValue
286 public String getKnowledgeValue() {
287 return _knowledgeValue;
291 * Get the knowledgeTitle.
293 * @return the knowledgeTitle
295 public String getKnowledgeTitle() {
296 return _knowledgeTitle;