Salome HOME
Beans initialization is fixed. Document can be added to study now.
[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
25         public class Menu extends SimpleMenu {
26                 // ------------------------------------
27                 public Menu(List<Step> context) {
28                         super("steps", "study");
29                         int i = 0;
30                         int j = 0;
31                         for (Iterator<Step> k = context.iterator(); k.hasNext(); i++) {
32                                 Step step = k.next();
33                                 int number = step.getNumber();
34                                 String icon;
35                                 if (step.mayContain(KnowledgeElement.class))
36                                         j = i + 1; // Steps are numbered from 1 to N
37                                 if (!step.isStarted())
38                                         icon = "icon.empty.png";
39                                 else
40                                         icon = "icon.done.png";
41                                 addItem(String.valueOf(number), "folder.step." + number, icon,
42                                                 "step-knowledge?selection=" + number);
43                         }
44                         this.selects(String.valueOf(j));
45                 }
46         }
47
48         // ==============================================================================================================================
49         // Constructor
50         // ==============================================================================================================================
51
52         public OpenKnowledge open (KnowledgeElement knelm) {
53                 // ---------------------------------------------
54                 ResourceBundle label = ResourceBundle.getBundle("labels",
55                                 ApplicationSettings.getCurrentLocale());
56                 ResourceBundle custom = ResourceBundle.getBundle("som",
57                                 ApplicationSettings.getCurrentLocale());
58                 SimpleDateFormat convert = new SimpleDateFormat(
59                                 custom.getString("date.format"));
60                 StringBuffer value = new StringBuffer(knelm.getValue());
61                 Scenario scene = knelm.getOwnerScenario();
62
63                 myknelm = knelm;
64
65                 // Preparation of the display
66                 credate = convert.format(myknelm.getDate());
67                 involving = getAllSteps(knelm.getOwnerScenario());
68                 context = new ArrayList<SimulationContextFacade>();
69                 menu = new Menu(getInvolvedSteps());
70                 selection = menu.getSelection(); // The default selection is set in the menu definition
71                 int index = Integer.valueOf(selection);
72                 for (Iterator<Step> i = involving.iterator(); i.hasNext();) {
73                         Step next = i.next();
74                         if (next.getNumber() == index)
75                                 ustep = next;
76                         for (Iterator<SimulationContext> j = next
77                                         .getAllSimulationContexts().iterator(); j.hasNext();) {
78                                 context.add(new SimulationContextFacade(j.next(), getProjectSettings().getAllSteps()));
79                         }
80                 }
81                 value.append("<p>").append("<b>")
82                                 .append(label.getString("label.source")).append(":</b>")
83                                 .append("<br>").append(label.getString("label.study"))
84                                 .append("&nbsp\"").append(scene.getOwnerStudy().getTitle())
85                                 .append("\",").append("<br>").append(scene.getTitle())
86                                 .append(".").append("</p>");
87                 description = value.toString();
88                 setupContents(); // Initializes documents and knowledge at ustep
89                 return this;
90         }
91
92         // ==============================================================================================================================
93         // Public member functions
94         // ==============================================================================================================================
95
96         public String getAuthorName() {
97                 // -----------------------------
98                 return myknelm.getAuthor().toString();
99         }
100
101         public String getDate() {
102                 // ------------------------
103                 return credate;
104         }
105
106         public Integer getIndex() {
107                 // -------------------------
108                 return myknelm.getIndex();
109         }
110
111         public Menu getMenu() {
112                 // ----------------------
113                 return (Menu) menu;
114         }
115
116         public ProgressState getProgressState() {
117                 // ---------------------------------------
118                 return myknelm.getProgressState();
119         }
120
121         public String getReference() {
122                 // ----------------------------
123                 return myknelm.getReference();
124         }
125
126         public KnowledgeElement getKnowledgeObject() {
127                 // ---------------------------------------------
128                 return myknelm;
129         }
130
131         public String getTitle() {
132                 // ------------------------
133                 return myknelm.getTitle();
134         }
135
136         public String getType() {
137                 // ------------------------
138                 return ResourceBundle.getBundle("som",
139                                 ApplicationSettings.getCurrentLocale()).getString(
140                                 "type.knowledge." + myknelm.getType().getName());
141         }
142
143         public void setSelection(String step) {
144                 // --------------------------------------
145                 selection = step;
146                 int index = Integer.valueOf(selection);
147                 for (Iterator<Step> i = involving.iterator(); i.hasNext();) {
148                         ustep = i.next();
149                         if (ustep.getNumber() == index)
150                                 break;
151                 }
152                 menu.selects(selection);
153                 setupContents(); // The contents may have changed even if the selection is the same
154         }
155
156         // ==============================================================================================================================
157         // Private services
158         // ==============================================================================================================================
159
160         private List<Step> getAllSteps(Scenario scenar) {
161                 // ------------------------------------------------
162                 Vector<Step> result = new Vector<Step>();
163                 Step[] step = getProjectElementService().getSteps(scenar);
164
165                 int base = step[0].getNumber();
166                 int last = step[step.length - 1].getNumber();
167                 for (int i = 0; i < step.length; i++) {
168                         result.add(step[i]);
169                 }
170                 step = getProjectElementService().getSteps(scenar.getOwnerStudy());
171                 for (int i = step.length - 1; i > -1; i--) {
172                         if (step[i].getNumber() >= base)
173                                 continue;
174                         result.add(0, step[i]);
175                 }
176                 for (int i = 0; i < step.length; i++) {
177                         if (step[i].getNumber() <= last)
178                                 continue;
179                         result.add(step[i]);
180                 }
181                 return result;
182         }
183
184         /**
185          * Get the projectElementService.
186          * 
187          * @return the projectElementService
188          */
189         public ProjectElementService getProjectElementService() {
190                 return _projectElementService;
191         }
192
193         /**
194          * Set the projectElementService.
195          * 
196          * @param projectElementService
197          *            the projectElementService to set
198          */
199         public void setProjectElementService(
200                         ProjectElementService projectElementService) {
201                 _projectElementService = projectElementService;
202         }
203
204 }