Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java @ 704:eab5e5089d77
Merged revisions 2127-2133,2136-2137,2140,2143-2144,2146,2150-2151,2153-2154 via svnmerge from
svn+ssh://teichmann@thoe/home/projects/Geospatial/bsh-generischer-viewer/Material/SVN/flys-artifacts/branches/facets-slt
........
r2127 | ingo | 2011-06-16 09:50:56 +0200 (Do, 16 Jun 2011) | 1 line
Added a compute() method to WINFOArtifact which acts as a dispatcher for different computations. It triggers a calculation based on ComputeCallbacks that are generated by the current states.
........
r2128 | ingo | 2011-06-16 10:25:06 +0200 (Do, 16 Jun 2011) | 1 line
Moved Waterlevel state into the correct package.
........
r2129 | ingo | 2011-06-16 10:43:58 +0200 (Do, 16 Jun 2011) | 1 line
Added two more compute() methods to ComputeCallback to distinguish between different phases of the artifact.
........
r2130 | ingo | 2011-06-16 10:57:05 +0200 (Do, 16 Jun 2011) | 1 line
Use enums to dispatch computeFeed() and computeAdvance().
........
r2131 | ingo | 2011-06-16 11:04:59 +0200 (Do, 16 Jun 2011) | 1 line
Store facets for each state.
........
r2132 | ingo | 2011-06-16 12:05:44 +0200 (Do, 16 Jun 2011) | 1 line
Generated facets for each output aspect.
........
r2133 | ingo | 2011-06-16 15:24:00 +0200 (Do, 16 Jun 2011) | 1 line
Write computed facets into artifacts describe document.
........
r2136 | ingo | 2011-06-16 16:10:49 +0200 (Do, 16 Jun 2011) | 1 line
Add index and description of facets to collections describe document.
........
r2137 | ingo | 2011-06-16 16:31:41 +0200 (Do, 16 Jun 2011) | 1 line
OutGenerators doOut() takes a facet object now instead of just its name.
........
r2140 | ingo | 2011-06-17 11:19:43 +0200 (Fr, 17 Jun 2011) | 1 line
OutGenerators use now facets to fetch necessary data.
........
r2143 | teichmann | 2011-06-17 12:40:54 +0200 (Fr, 17 Jun 2011) | 1 line
Removed ComputeCallback because this was thought too complicated. Fixed issue with facets not be re-generated if same state is entered again.
........
r2144 | teichmann | 2011-06-17 13:08:31 +0200 (Fr, 17 Jun 2011) | 1 line
make getGauges() more robust
........
r2146 | teichmann | 2011-06-17 13:23:57 +0200 (Fr, 17 Jun 2011) | 1 line
mico opt: inter cmps are faster than str cmps.
........
r2150 | teichmann | 2011-06-17 15:10:20 +0200 (Fr, 17 Jun 2011) | 1 line
call computeAdvance() if we want to advance.
........
r2151 | teichmann | 2011-06-17 15:45:50 +0200 (Fr, 17 Jun 2011) | 1 line
Base WST/CSV exports on facets. TODO: generate the facets.
........
r2153 | teichmann | 2011-06-17 16:03:29 +0200 (Fr, 17 Jun 2011) | 1 line
Add facet to access raw computed data.
........
r2154 | teichmann | 2011-06-17 16:37:09 +0200 (Fr, 17 Jun 2011) | 1 line
Generate data facets for the computed states.
........
flys-artifacts/trunk@2156 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Fri, 17 Jun 2011 16:17:03 +0000 |
parents | 19a3185822a4 708b270dfd30 |
children | 853dceead0f4 |
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java Fri Jun 17 13:00:54 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java Fri Jun 17 16:17:03 2011 +0000 @@ -1,6 +1,10 @@ package de.intevation.flys.artifacts; +import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Map; +import java.util.Set; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -12,6 +16,8 @@ import de.intevation.artifacts.CallContext; import de.intevation.artifactdatabase.ProtocolUtils; +import de.intevation.artifactdatabase.state.DefaultOutput; +import de.intevation.artifactdatabase.state.Facet; import de.intevation.artifactdatabase.state.Output; import de.intevation.artifactdatabase.state.State; import de.intevation.artifactdatabase.state.StateEngine; @@ -25,6 +31,7 @@ import de.intevation.flys.artifacts.states.DefaultState; import de.intevation.flys.artifacts.context.FLYSContext; +import de.intevation.flys.artifacts.model.DischargeTables; import de.intevation.flys.artifacts.model.MainValuesFactory; import de.intevation.flys.artifacts.model.WQDay; import de.intevation.flys.artifacts.model.WQKms; @@ -177,7 +184,7 @@ for (String stateId: stateIds) { logger.debug("Append output modes for state: " + stateId); - State state = engine.getState(stateId); + DefaultState state = (DefaultState) engine.getState(stateId); List<Output> list = state.getOutputs(); if (list == null || list.size() == 0) { @@ -185,7 +192,17 @@ continue; } - ProtocolUtils.appendOutputModes(creator, outs, list); + List<Facet> fs = facets.get(stateId); + if (fs == null || fs.size() == 0) { + logger.debug("No facets found."); + continue; + } + + logger.debug("Found " + fs.size() + " facets in previous states."); + + List<Output> generated = generateOutputs(list, fs); + + ProtocolUtils.appendOutputModes(creator, outs, generated); } try { @@ -196,7 +213,19 @@ logger.debug( "Append output modes for state: " + cur.getID()); - ProtocolUtils.appendOutputModes(creator, outs, list); + List<Facet> fs = facets.get(cur.getID()); + if (fs != null && fs.size() > 0) { + List<Output> generated = generateOutputs(list, fs); + + logger.debug("Found " + fs.size() + " current facets."); + + ProtocolUtils.appendOutputModes( + creator, outs, generated); + } + else { + logger.debug("No facets found for the current state."); + } + } } } @@ -206,6 +235,36 @@ } + protected List<Output> generateOutputs(List<Output> list, List<Facet> fs) { + List<Output> generated = new ArrayList<Output>(); + + for (Output out: list) { + Output o = new DefaultOutput( + out.getName(), + out.getDescription(), + out.getMimeType()); + + Set<String> outtype = new HashSet<String>(); + + for (Facet f: out.getFacets()) { + outtype.add(f.getName()); + } + + for (Facet f: fs) { + String type = f.getName(); + + if(outtype.contains(type)) { + o.addFacet(f); + } + } + + generated.add(o); + } + + return generated; + } + + /** * This method appends the static data - that has already been inserted by * the user - to the static node of the DESCRIBE document. @@ -380,6 +439,37 @@ /** + * Returns the data that is used to create discharge curves. + * + * @return a map where the key is the name of the gauge and a double[][] + * which are the values. + */ + public Map<String, double[][]> getDischargeCurveData() { + River river = getRiver(); + List<Gauge> gauges = getGauges(); + + if (gauges == null) { + logger.warn("No gauges found for the current kilometer range."); + return null; + } + + int num = gauges.size(); + + logger.debug("Found " + num + " gauges."); + + String[] gaugeNames = new String[num]; + + for (int i = 0; i < num; i++) { + gaugeNames[i] = gauges.get(i).getName(); + } + + DischargeTables dt = new DischargeTables(river.getName(), gaugeNames); + + return dt.getValues(100d); + } + + + /** * Returns the data that is computed by a discharge curve computation. * * @return the data computed by a discharge curve computation.