Salome HOME
aa647707b1699a8e67ce634970bc363bf953cd89
[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         public class Menu extends SimpleMenu {
24                 // ------------------------------------
25                 public Menu(List<Step> context) {
26                         super("steps", "study");
27                         int i = 0;
28                         int j = 0;
29                         for (Iterator<Step> k = context.iterator(); k.hasNext(); i++) {
30                                 Step step = k.next();
31                                 int number = step.getNumber();
32                                 String icon;
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";
37                                 else
38                                         icon = "icon.done.png";
39                                 addItem(String.valueOf(number), "folder.step." + number, icon,
40                                                 "step-knowledge?selection=" + number);
41                         }
42                         this.selects(String.valueOf(j));
43                 }
44         }
45
46         // ==============================================================================================================================
47         // Constructor
48         // ==============================================================================================================================
49
50         public OpenKnowledge open (KnowledgeElement knelm) {
51                 // ---------------------------------------------
52                 ResourceBundle label = ResourceBundle.getBundle("labels",
53                                 getApplicationSettings().getCurrentLocale());
54                 ResourceBundle custom = ResourceBundle.getBundle("som",
55                                 getApplicationSettings().getCurrentLocale());
56                 SimpleDateFormat convert = new SimpleDateFormat(
57                                 custom.getString("date.format"));
58                 StringBuffer value = new StringBuffer(knelm.getValue());
59                 Scenario scene = knelm.getOwnerScenario();
60
61                 myknelm = knelm;
62
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();) {
71                         Step next = i.next();
72                         if (next.getNumber() == index)
73                                 ustep = next;
74                         for (Iterator<SimulationContext> j = next
75                                         .getAllSimulationContexts().iterator(); j.hasNext();) {
76                                 context.add(new SimulationContextFacade(j.next(), getProjectSettings().getAllSteps()));
77                         }
78                 }
79                 value.append("<p>").append("<b>")
80                                 .append(label.getString("label.source")).append(":</b>")
81                                 .append("<br>").append(label.getString("label.study"))
82                                 .append("&nbsp\"").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
87                 return this;
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 Long 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                                 getApplicationSettings().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 }