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 if (_selection == null) { // Opening a study just newed
123 _selection = _openStudy.getSelection(); // Default selection
125 _openStudy = open(getStudyService().selectStudy(
126 _openStudy.getIndex())); // Closes the previously open study
127 _openStudy.setSelection(_selection);
133 * Promote a knowledge element from the current scenario.
135 * @return SUCCESS if no exceptions
137 public String doPromoteKnowledge() {
138 getKnowledgeElementService().promote(getKnowledgeElement()); // The knowledge element necessarily exists
144 * Demote a knowledge element from the current scenario.
146 * @return SUCCESS if no exceptions
148 public String doDemoteKnowledge() {
149 getKnowledgeElementService().demote(getKnowledgeElement()); // The knowledge element necessarily exists
155 * Get selected knowledge element.
157 * @return the selected knowledge element
159 private KnowledgeElement getKnowledgeElement() {
160 _openStudy = getOpenStudy();
161 Step step = _openStudy.getSelectedStep();
162 Scenario scene = (Scenario) step.getOwner(); // It is necessarily a Scenario
163 return scene.getKnowledgeElement(Integer.valueOf(_myindex));
167 * Update current menu.
169 private void updateMenu() {
170 getMenu(Constants.STUDY_MENU).selects(_openStudy.getSelection()); // Updates the menu icon, in case of last removed document
174 // ==============================================================================================================================
175 // Getters and setters
176 // ==============================================================================================================================
179 * Get the type of the modified knowledge element.
181 * @return the knowledge type name
183 public String getKnowledgeType() {
184 return _knowledgeType;
188 * Get the id of the modified knowledge element.
190 * @return the knowledge element id
192 public String getSelectedKnowledge() {
197 * Set the type of the modified knowledge element.
200 * the knowledge type name
202 public void setKnowledgeType(final String type) {
203 this._knowledgeType = type;
207 * Set the title of the modified knowledge element.
210 * the new knowledge title
212 public void setKnowledgeTitle(final String title) {
213 this._knowledgeTitle = title;
217 * Set the value of the modified knowledge element.
220 * the knowledge value
222 public void setKnowledgeValue(final String value) {
223 this._knowledgeValue = value;
227 * Get the scenarioService.
229 * @return the scenarioService
231 public ScenarioService getScenarioService() {
232 return _scenarioService;
236 * Set the scenarioService.
238 * @param scenarioService
239 * the scenarioService to set
241 public void setScenarioService(final ScenarioService scenarioService) {
242 _scenarioService = scenarioService;
246 * Get the knowledgeElementService.
248 * @return the knowledgeElementService
250 public KnowledgeElementService getKnowledgeElementService() {
251 return _knowledgeElementService;
255 * Set the knowledgeElementService.
257 * @param knowledgeElementService
258 * the knowledgeElementService to set
260 public void setKnowledgeElementService(
261 final KnowledgeElementService knowledgeElementService) {
262 _knowledgeElementService = knowledgeElementService;
266 * Get the knowledgeElementTypeService.
268 * @return the knowledgeElementTypeService
270 public KnowledgeElementTypeService getKnowledgeElementTypeService() {
271 return _knowledgeElementTypeService;
275 * Set the knowledgeElementTypeService.
277 * @param knowledgeElementTypeService
278 * the knowledgeElementTypeService to set
280 public void setKnowledgeElementTypeService(
281 final KnowledgeElementTypeService knowledgeElementTypeService) {
282 _knowledgeElementTypeService = knowledgeElementTypeService;
286 * Get the knowledgeValue.
288 * @return the knowledgeValue
290 public String getKnowledgeValue() {
291 return _knowledgeValue;
295 * Get the knowledgeTitle.
297 * @return the knowledgeTitle
299 public String getKnowledgeTitle() {
300 return _knowledgeTitle;