comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/MainValuesArtifact.java @ 1085:07878836ee0d

Plot "real" (respecting parameters) W and Q MainValues, yet in wrong scale. flys-artifacts/trunk@2588 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Fri, 26 Aug 2011 08:49:18 +0000
parents fa01c3602f66
children e298c4d28927
comparison
equal deleted inserted replaced
1084:583314dafdb6 1085:07878836ee0d
5 5
6 import org.apache.log4j.Logger; 6 import org.apache.log4j.Logger;
7 7
8 import org.w3c.dom.Document; 8 import org.w3c.dom.Document;
9 9
10 import de.intevation.artifactdatabase.state.DefaultFacet;
11 import de.intevation.artifactdatabase.state.Facet; 10 import de.intevation.artifactdatabase.state.Facet;
12 import de.intevation.artifactdatabase.state.DefaultOutput; 11 import de.intevation.artifactdatabase.state.DefaultOutput;
13 import de.intevation.artifactdatabase.state.State; 12 import de.intevation.artifactdatabase.state.State;
13 import de.intevation.artifactdatabase.data.StateData;
14 14
15 import de.intevation.artifacts.Artifact; 15 import de.intevation.artifacts.Artifact;
16 import de.intevation.artifacts.ArtifactFactory; 16 import de.intevation.artifacts.ArtifactFactory;
17 import de.intevation.artifacts.CallContext;
18 import de.intevation.artifacts.CallMeta; 17 import de.intevation.artifacts.CallMeta;
19 import de.intevation.flys.artifacts.model.RiverFactory; 18 import de.intevation.flys.artifacts.model.RiverFactory;
20 19
21 import de.intevation.flys.artifacts.model.FacetTypes; 20 import de.intevation.flys.artifacts.model.MainValuesWFacet;
21 import de.intevation.flys.artifacts.model.MainValuesQFacet;
22 import de.intevation.artifactdatabase.data.DefaultStateData;
22 import de.intevation.flys.artifacts.states.StaticState; 23 import de.intevation.flys.artifacts.states.StaticState;
23 24
24 import de.intevation.flys.model.Gauge; 25 import de.intevation.flys.model.Gauge;
26 import de.intevation.flys.model.MainValue;
25 import de.intevation.flys.model.River; 27 import de.intevation.flys.model.River;
26 28
27 29
28 /** 30 /**
29 * Artifact to access names of Points Of Interest along a segment of a river. 31 * Artifact to access names of Points Of Interest along a segment of a river.
71 73
72 @Override 74 @Override
73 protected void initialize(Artifact artifact, Object context, CallMeta meta) { 75 protected void initialize(Artifact artifact, Object context, CallMeta meta) {
74 logger.debug("MainValuesArtifact.initialize"); 76 logger.debug("MainValuesArtifact.initialize");
75 WINFOArtifact winfo = (WINFOArtifact) artifact; 77 WINFOArtifact winfo = (WINFOArtifact) artifact;
76 River river = winfo.getRiver(); 78 //River river = winfo.getRiver();
77 double location = winfo.getLocations()[0]; // Ort der Abflusskurve 79 double location = winfo.getLocations()[0];
78 80 logger.debug("MainValues.location: " + location);
79 logger.error("Location: " + location); 81 addData("location", new DefaultStateData("location", null, null,
80 Gauge gauge = river.determineGaugeByPosition(location); 82 String.valueOf(location)));
83 addData("river", winfo.getData("river"));
81 } 84 }
82 85
83 86
84 /** 87 /**
85 * Get a list containing the one and only State. 88 * Get a list containing the one and only State.
86 * @param context ignored. 89 * @param context ignored.
87 * @return list with one and only state. 90 * @return list with one and only state.
88 */ 91 */
89 @Override 92 @Override
90 protected List<State> getStates(Object context) { 93 protected List<State> getStates(Object context) {
91 ArrayList<State> states = new ArrayList<State>(); 94 ArrayList<State> states = new ArrayList<State>();
126 129
127 } 130 }
128 else { 131 else {
129 state = new StaticState(); 132 state = new StaticState();
130 List<Facet> fs = new ArrayList<Facet>(); 133 List<Facet> fs = new ArrayList<Facet>();
131 fs.add(new MainValuesFacet()); 134 Facet qfacet = new MainValuesQFacet();
135 Facet wfacet = new MainValuesWFacet();
136 fs.add(qfacet);
137 fs.add(wfacet);
132 // TODO check if facets and outputs already exist. 138 // TODO check if facets and outputs already exist.
133 // TODO also check, this is usually done in initialize, too. 139 // TODO also check, this is usually done in initialize, too.
134 facets.put(state.getID(), fs); 140 facets.put(state.getID(), fs);
135 DefaultOutput mainValuesOutput1 = new DefaultOutput( 141 DefaultOutput mainValuesOutput1 = new DefaultOutput(
136 "discharge_curve", "output.discharge_curve", "image/png", 142 "discharge_curve", "output.discharge_curve", "image/png",
146 state.getOutputs().add(mainValuesOutput2); 152 state.getOutputs().add(mainValuesOutput2);
147 } 153 }
148 return state; 154 return state;
149 } 155 }
150 156
151 157 /**
152 public List getMainValues() { 158 * Get the river.
153 River river = RiverFactory.getRiver("Saar"); 159 * @todo resolve, this is a duplicate of WINFOArtifact.
154 logger.warn("Go to river " + river); 160 */
155 double location = 5.0f; 161 public River getRiver() {
156 Gauge gauge = river.determineGaugeByPosition(location); 162 StateData dRiver = getData("river");
157 return gauge.getMainValues(); 163
158 } 164 return dRiver != null
159 165 ? RiverFactory.getRiver((String) dRiver.getValue())
160 166 : null;
161 /* FACET IMPLEMENTATION */ 167 }
162 // TODO evaluate whether DefaultFacet can do. 168
163 static class MainValuesFacet 169 protected Gauge getGauge() {
164 extends DefaultFacet 170 River river = getRiver();
165 implements FacetTypes { 171
166 172 if (river == null) {
167 public MainValuesFacet() { 173 return null;
168 description = "facet.discharge_curves.mainvalues.description"; 174 }
169 name = COMPUTED_DISCHARGE_MAINVALUES; 175
170 //Resources.getMsg(meta, I18N_DESCRIPTION, I18N_DESCRIPTION)); 176 double location = Double.parseDouble(
171 index = 0; 177 (String)getData("location").getValue());
172 } 178
173 179 return river.determineGaugeByPosition(location);
174 180 }
175 /** 181
176 * Returns the description of this facet. 182 public List<MainValue> getMainValuesQ() {
177 * 183 List<MainValue> filteredList = new ArrayList<MainValue>();
178 * @return the description of this facet. 184 Gauge gauge = getGauge();
179 */ 185 if (gauge != null) {
180 @Override 186 List<MainValue> orig = gauge.getMainValues();
181 public String getDescription() { 187 for (MainValue mv : orig) {
182 // TODO remove, is part of DefaultFacet. 188 if (mv.getMainValue().getType().getName().equals("Q")) {
183 return "facet.mainvalues"; 189 filteredList.add(mv);
184 } 190 }
185 191 }
186 192 }
187 /** 193 return filteredList;
188 * Returns the data this facet requires. 194 }
189 * 195
190 * @param artifact the owner artifact. 196 public List<MainValue> getMainValuesW() {
191 * @param context the CallContext (ignored). 197 List<MainValue> filteredList = new ArrayList<MainValue>();
192 * 198 Gauge gauge = getGauge();
193 * @return the data. 199 if (gauge != null) {
194 */ 200 List<MainValue> orig = gauge.getMainValues();
195 @Override 201 for (MainValue mv : orig) {
196 public Object getData(Artifact artifact, CallContext context) { 202 if (mv.getMainValue().getType().getName().equals("W")) {
197 MainValuesArtifact mvArtifact = (MainValuesArtifact) artifact; 203 filteredList.add(mv);
198 return mvArtifact.getMainValues(); 204 }
199 } 205 }
200 206 }
201 207 return filteredList;
202 /** 208 }
203 * Create a deep copy of this Facet.
204 * @return a deep copy.
205 */
206 @Override
207 public MainValuesFacet deepCopy() {
208 MainValuesFacet copy = new MainValuesFacet();
209 copy.set(this);
210 return copy;
211 }
212 }
213
214 } 209 }

http://dive4elements.wald.intevation.org