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 public class Menu extends SimpleMenu {
24 // ------------------------------------
25 public Menu(List<Step> context) {
26 super("steps", "study");
29 for (Iterator<Step> k = context.iterator(); k.hasNext(); i++) {
31 int number = step.getNumber();
33 if (step.mayContain(KnowledgeElement.class))
34 j = i + 1; // Steps are numbered from 1 to N
35 if (!step.isStarted())
36 icon = "icon.empty.png";
38 icon = "icon.done.png";
39 addItem(String.valueOf(number), "folder.step." + number, icon,
40 "step-knowledge?selection=" + number);
42 this.selects(String.valueOf(j));
46 // ==============================================================================================================================
48 // ==============================================================================================================================
50 public OpenKnowledge open (KnowledgeElement knelm) {
51 // ---------------------------------------------
52 ResourceBundle label = ResourceBundle.getBundle("labels",
53 ApplicationSettings.getCurrentLocale());
54 ResourceBundle custom = ResourceBundle.getBundle("som",
55 ApplicationSettings.getCurrentLocale());
56 SimpleDateFormat convert = new SimpleDateFormat(
57 custom.getString("date.format"));
58 StringBuffer value = new StringBuffer(knelm.getValue());
59 Scenario scene = knelm.getOwnerScenario();
63 // Preparation of the display
64 credate = convert.format(myknelm.getDate());
65 involving = getAllSteps(knelm.getOwnerScenario());
66 context = new ArrayList<SimulationContextFacade>();
67 menu = new Menu(getInvolvedSteps());
68 selection = menu.getSelection(); // The default selection is set in the menu definition
69 int index = Integer.valueOf(selection);
70 for (Iterator<Step> i = involving.iterator(); i.hasNext();) {
72 if (next.getNumber() == index)
74 for (Iterator<SimulationContext> j = next
75 .getAllSimulationContexts().iterator(); j.hasNext();) {
76 context.add(new SimulationContextFacade(j.next(), getProjectSettings().getAllSteps()));
79 value.append("<p>").append("<b>")
80 .append(label.getString("label.source")).append(":</b>")
81 .append("<br>").append(label.getString("label.study"))
82 .append(" \"").append(scene.getOwnerStudy().getTitle())
83 .append("\",").append("<br>").append(scene.getTitle())
84 .append(".").append("</p>");
85 description = value.toString();
86 setupContents(); // Initializes documents and knowledge at ustep
90 // ==============================================================================================================================
91 // Public member functions
92 // ==============================================================================================================================
94 public String getAuthorName() {
95 // -----------------------------
96 return myknelm.getAuthor().toString();
99 public String getDate() {
100 // ------------------------
104 public Long getIndex() {
105 // -------------------------
106 return myknelm.getIndex();
109 public Menu getMenu() {
110 // ----------------------
114 public ProgressState getProgressState() {
115 // ---------------------------------------
116 return myknelm.getProgressState();
119 public String getReference() {
120 // ----------------------------
121 return myknelm.getReference();
124 public KnowledgeElement getKnowledgeObject() {
125 // ---------------------------------------------
129 public String getTitle() {
130 // ------------------------
131 return myknelm.getTitle();
134 public String getType() {
135 // ------------------------
136 return ResourceBundle.getBundle("som",
137 ApplicationSettings.getCurrentLocale()).getString(
138 "type.knowledge." + myknelm.getType().getName());
141 public void setSelection(String step) {
142 // --------------------------------------
144 int index = Integer.valueOf(selection);
145 for (Iterator<Step> i = involving.iterator(); i.hasNext();) {
147 if (ustep.getNumber() == index)
150 menu.selects(selection);
151 setupContents(); // The contents may have changed even if the selection is the same
154 // ==============================================================================================================================
156 // ==============================================================================================================================
158 private List<Step> getAllSteps(Scenario scenar) {
159 // ------------------------------------------------
160 Vector<Step> result = new Vector<Step>();
161 Step[] step = getProjectElementService().getSteps(scenar);
163 int base = step[0].getNumber();
164 int last = step[step.length - 1].getNumber();
165 for (int i = 0; i < step.length; i++) {
168 step = getProjectElementService().getSteps(scenar.getOwnerStudy());
169 for (int i = step.length - 1; i > -1; i--) {
170 if (step[i].getNumber() >= base)
172 result.add(0, step[i]);
174 for (int i = 0; i < step.length; i++) {
175 if (step[i].getNumber() <= last)