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