1 package org.splat.simer;
3 import java.text.SimpleDateFormat;
4 import java.util.ArrayList;
5 import java.util.Iterator;
7 import java.util.ResourceBundle;
8 import java.util.Vector;
10 import org.splat.dal.bo.som.KnowledgeElement;
11 import org.splat.dal.bo.som.ProgressState;
12 import org.splat.dal.bo.som.Scenario;
13 import org.splat.dal.bo.som.SimulationContext;
14 import org.splat.service.ProjectElementService;
15 import org.splat.service.technical.ProjectSettingsService;
16 import org.splat.som.Step;
17 import org.splat.wapp.SimpleMenu;
19 public class OpenKnowledge extends OpenObject {
21 private KnowledgeElement myknelm;
22 private String credate;
23 private ProjectElementService _projectElementService;
24 private ProjectSettingsService _projectSettingsService;
26 public class Menu extends SimpleMenu {
27 // ------------------------------------
28 public Menu(List<Step> context) {
29 super("steps", "study");
32 for (Iterator<Step> k = context.iterator(); k.hasNext(); i++) {
34 int number = step.getNumber();
36 if (step.mayContain(KnowledgeElement.class))
37 j = i + 1; // Steps are numbered from 1 to N
38 if (!step.isStarted())
39 icon = "icon.empty.png";
41 icon = "icon.done.png";
42 addItem(String.valueOf(number), "folder.step." + number, icon,
43 "step-knowledge?selection=" + number);
45 this.selects(String.valueOf(j));
49 // ==============================================================================================================================
51 // ==============================================================================================================================
53 public OpenKnowledge open (KnowledgeElement knelm) {
54 // ---------------------------------------------
55 ResourceBundle label = ResourceBundle.getBundle("labels",
56 ApplicationSettings.getCurrentLocale());
57 ResourceBundle custom = ResourceBundle.getBundle("som",
58 ApplicationSettings.getCurrentLocale());
59 SimpleDateFormat convert = new SimpleDateFormat(
60 custom.getString("date.format"));
61 StringBuffer value = new StringBuffer(knelm.getValue());
62 Scenario scene = knelm.getOwnerScenario();
66 // Preparation of the display
67 credate = convert.format(myknelm.getDate());
68 involving = getAllSteps(knelm.getOwnerScenario());
69 context = new ArrayList<SimulationContextFacade>();
70 menu = new Menu(getInvolvedSteps());
71 selection = menu.getSelection(); // The default selection is set in the menu definition
72 int index = Integer.valueOf(selection);
73 for (Iterator<Step> i = involving.iterator(); i.hasNext();) {
75 if (next.getNumber() == index)
77 for (Iterator<SimulationContext> j = next
78 .getAllSimulationContexts().iterator(); j.hasNext();) {
79 context.add(new SimulationContextFacade(j.next(), getProjectSettings().getAllSteps()));
82 value.append("<p>").append("<b>")
83 .append(label.getString("label.source")).append(":</b>")
84 .append("<br>").append(label.getString("label.study"))
85 .append(" \"").append(scene.getOwnerStudy().getTitle())
86 .append("\",").append("<br>").append(scene.getTitle())
87 .append(".").append("</p>");
88 description = value.toString();
89 setupContents(); // Initializes documents and knowledge at ustep
93 // ==============================================================================================================================
94 // Public member functions
95 // ==============================================================================================================================
97 public String getAuthorName() {
98 // -----------------------------
99 return myknelm.getAuthor().toString();
102 public String getDate() {
103 // ------------------------
107 public Integer getIndex() {
108 // -------------------------
109 return myknelm.getIndex();
112 public Menu getMenu() {
113 // ----------------------
117 public ProgressState getProgressState() {
118 // ---------------------------------------
119 return myknelm.getProgressState();
122 public String getReference() {
123 // ----------------------------
124 return myknelm.getReference();
127 public KnowledgeElement getKnowledgeObject() {
128 // ---------------------------------------------
132 public String getTitle() {
133 // ------------------------
134 return myknelm.getTitle();
137 public String getType() {
138 // ------------------------
139 return ResourceBundle.getBundle("som",
140 ApplicationSettings.getCurrentLocale()).getString(
141 "type.knowledge." + myknelm.getType().getName());
144 public void setSelection(String step) {
145 // --------------------------------------
147 int index = Integer.valueOf(selection);
148 for (Iterator<Step> i = involving.iterator(); i.hasNext();) {
150 if (ustep.getNumber() == index)
153 menu.selects(selection);
154 setupContents(); // The contents may have changed even if the selection is the same
157 // ==============================================================================================================================
159 // ==============================================================================================================================
161 private List<Step> getAllSteps(Scenario scenar) {
162 // ------------------------------------------------
163 Vector<Step> result = new Vector<Step>();
164 Step[] step = getProjectElementService().getSteps(scenar);
166 int base = step[0].getNumber();
167 int last = step[step.length - 1].getNumber();
168 for (int i = 0; i < step.length; i++) {
171 step = getProjectElementService().getSteps(scenar.getOwnerStudy());
172 for (int i = step.length - 1; i > -1; i--) {
173 if (step[i].getNumber() >= base)
175 result.add(0, step[i]);
177 for (int i = 0; i < step.length; i++) {
178 if (step[i].getNumber() <= last)
186 * Get the projectElementService.
188 * @return the projectElementService
190 public ProjectElementService getProjectElementService() {
191 return _projectElementService;
195 * Set the projectElementService.
197 * @param projectElementService
198 * the projectElementService to set
200 public void setProjectElementService(
201 ProjectElementService projectElementService) {
202 _projectElementService = projectElementService;
206 * Get project settings.
207 * @return Project settings service
209 private ProjectSettingsService getProjectSettings() {
210 return _projectSettingsService;
214 * Set project settings service.
215 * @param projectSettingsService project settings service
217 public void setProjectSettings(
218 ProjectSettingsService projectSettingsService) {
219 _projectSettingsService = projectSettingsService;