Salome HOME
86dfc0c1a5adb3a2873df250bb95dc01c6d48c4b
[tools/siman.git] / Workspace / Siman / src / org / splat / simer / OpenKnowledge.java
1 package org.splat.simer;
2
3 import java.text.SimpleDateFormat;
4 import java.util.ArrayList;
5 import java.util.Iterator;
6 import java.util.List;
7 import java.util.ResourceBundle;
8 import java.util.Vector;
9
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;
18
19 public class OpenKnowledge extends OpenObject {
20
21         private KnowledgeElement myknelm;
22         private String credate;
23         private ProjectElementService _projectElementService;
24         private ProjectSettingsService _projectSettingsService;
25
26         public class Menu extends SimpleMenu {
27                 // ------------------------------------
28                 public Menu(List<Step> context) {
29                         super("steps", "study");
30                         int i = 0;
31                         int j = 0;
32                         for (Iterator<Step> k = context.iterator(); k.hasNext(); i++) {
33                                 Step step = k.next();
34                                 int number = step.getNumber();
35                                 String icon;
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";
40                                 else
41                                         icon = "icon.done.png";
42                                 addItem(String.valueOf(number), "folder.step." + number, icon,
43                                                 "step-knowledge?selection=" + number);
44                         }
45                         this.selects(String.valueOf(j));
46                 }
47         }
48
49         // ==============================================================================================================================
50         // Constructor
51         // ==============================================================================================================================
52
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();
63
64                 myknelm = knelm;
65
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();) {
74                         Step next = i.next();
75                         if (next.getNumber() == index)
76                                 ustep = next;
77                         for (Iterator<SimulationContext> j = next
78                                         .getAllSimulationContexts().iterator(); j.hasNext();) {
79                                 context.add(new SimulationContextFacade(j.next(), getProjectSettings().getAllSteps()));
80                         }
81                 }
82                 value.append("<p>").append("<b>")
83                                 .append(label.getString("label.source")).append(":</b>")
84                                 .append("<br>").append(label.getString("label.study"))
85                                 .append("&nbsp\"").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
90                 return this;
91         }
92
93         // ==============================================================================================================================
94         // Public member functions
95         // ==============================================================================================================================
96
97         public String getAuthorName() {
98                 // -----------------------------
99                 return myknelm.getAuthor().toString();
100         }
101
102         public String getDate() {
103                 // ------------------------
104                 return credate;
105         }
106
107         public Integer getIndex() {
108                 // -------------------------
109                 return myknelm.getIndex();
110         }
111
112         public Menu getMenu() {
113                 // ----------------------
114                 return (Menu) menu;
115         }
116
117         public ProgressState getProgressState() {
118                 // ---------------------------------------
119                 return myknelm.getProgressState();
120         }
121
122         public String getReference() {
123                 // ----------------------------
124                 return myknelm.getReference();
125         }
126
127         public KnowledgeElement getKnowledgeObject() {
128                 // ---------------------------------------------
129                 return myknelm;
130         }
131
132         public String getTitle() {
133                 // ------------------------
134                 return myknelm.getTitle();
135         }
136
137         public String getType() {
138                 // ------------------------
139                 return ResourceBundle.getBundle("som",
140                                 ApplicationSettings.getCurrentLocale()).getString(
141                                 "type.knowledge." + myknelm.getType().getName());
142         }
143
144         public void setSelection(String step) {
145                 // --------------------------------------
146                 selection = step;
147                 int index = Integer.valueOf(selection);
148                 for (Iterator<Step> i = involving.iterator(); i.hasNext();) {
149                         ustep = i.next();
150                         if (ustep.getNumber() == index)
151                                 break;
152                 }
153                 menu.selects(selection);
154                 setupContents(); // The contents may have changed even if the selection is the same
155         }
156
157         // ==============================================================================================================================
158         // Private services
159         // ==============================================================================================================================
160
161         private List<Step> getAllSteps(Scenario scenar) {
162                 // ------------------------------------------------
163                 Vector<Step> result = new Vector<Step>();
164                 Step[] step = getProjectElementService().getSteps(scenar);
165
166                 int base = step[0].getNumber();
167                 int last = step[step.length - 1].getNumber();
168                 for (int i = 0; i < step.length; i++) {
169                         result.add(step[i]);
170                 }
171                 step = getProjectElementService().getSteps(scenar.getOwnerStudy());
172                 for (int i = step.length - 1; i > -1; i--) {
173                         if (step[i].getNumber() >= base)
174                                 continue;
175                         result.add(0, step[i]);
176                 }
177                 for (int i = 0; i < step.length; i++) {
178                         if (step[i].getNumber() <= last)
179                                 continue;
180                         result.add(step[i]);
181                 }
182                 return result;
183         }
184
185         /**
186          * Get the projectElementService.
187          * 
188          * @return the projectElementService
189          */
190         public ProjectElementService getProjectElementService() {
191                 return _projectElementService;
192         }
193
194         /**
195          * Set the projectElementService.
196          * 
197          * @param projectElementService
198          *            the projectElementService to set
199          */
200         public void setProjectElementService(
201                         ProjectElementService projectElementService) {
202                 _projectElementService = projectElementService;
203         }
204
205         /**
206          * Get project settings.
207          * @return Project settings service
208          */
209         private ProjectSettingsService getProjectSettings() {
210                 return _projectSettingsService;
211         }
212
213         /**
214          * Set project settings service.
215          * @param projectSettingsService project settings service
216          */
217         public void setProjectSettings(
218                         ProjectSettingsService projectSettingsService) {
219                 _projectSettingsService = projectSettingsService;
220         }
221 }