# HG changeset patch # User Felix Wolfsteller # Date 1352897302 -3600 # Node ID 1983f5706578deceb6619e36bcb47b402fce14fd # Parent 3f08855e68bc5903837fa8ae8fec1d8ec39c109a# Parent d7e1aee9d51edf69eb62e7cb5100d4033bb35733 Merged. diff -r d7e1aee9d51e -r 1983f5706578 flys-artifacts/doc/conf/artifacts/fixanalysis.xml --- a/flys-artifacts/doc/conf/artifacts/fixanalysis.xml Wed Nov 14 12:37:57 2012 +0100 +++ b/flys-artifacts/doc/conf/artifacts/fixanalysis.xml Wed Nov 14 13:48:22 2012 +0100 @@ -278,6 +278,17 @@ + + + + + + + + + + + diff -r d7e1aee9d51e -r 1983f5706578 flys-artifacts/src/main/java/de/intevation/flys/artifacts/FixationArtifact.java --- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/FixationArtifact.java Wed Nov 14 12:37:57 2012 +0100 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/FixationArtifact.java Wed Nov 14 13:48:22 2012 +0100 @@ -1,5 +1,18 @@ package de.intevation.flys.artifacts; +import de.intevation.artifacts.CallContext; + +import de.intevation.flys.artifacts.geom.Lines; +import de.intevation.flys.artifacts.StaticWKmsArtifact; + +import de.intevation.flys.artifacts.model.CalculationResult; +import de.intevation.flys.artifacts.model.WKms; +import de.intevation.flys.artifacts.model.fixings.FixRealizingResult; + +import de.intevation.flys.artifacts.states.DefaultState.ComputeType; + +import de.intevation.flys.model.FastCrossSectionLine; + import org.apache.log4j.Logger; /** @@ -9,6 +22,7 @@ */ public class FixationArtifact extends FLYSArtifact +implements WaterLineArtifact { /** The logger for this class. */ private static Logger logger = Logger.getLogger(FixationArtifact.class); @@ -34,5 +48,34 @@ public String getName() { return ARTIFACT_NAME; } + + @Override + public Lines.LineData getWaterLines( + int facetIdx, + FastCrossSectionLine csl, + double d, + double w, + CallContext context + ) { + FixRealizingResult result = (FixRealizingResult) + ((CalculationResult)this.compute(context, ComputeType.ADVANCE, false)).getData(); + + WKms wkms = result.getWQKms()[facetIdx]; + + double km = csl.getKm(); + + // Find W at km. + double wAtKm; + + wAtKm = StaticWKmsArtifact.getWAtKm(wkms, km); + + if (wAtKm == -1 || Double.isNaN(wAtKm)) { + logger.warn("Waterlevel at km " + km + " unknown."); + return new Lines.LineData(new double[][] {{}}, 0d, 0d); + } + + // This should be FixRealizationResult, which can be getWQKms()ed + return Lines.createWaterLines(csl.getPoints(), wAtKm); + } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : diff -r d7e1aee9d51e -r 1983f5706578 flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java --- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java Wed Nov 14 12:37:57 2012 +0100 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java Wed Nov 14 13:48:22 2012 +0100 @@ -185,7 +185,8 @@ return getDischargeLongitudinalSectionData(); } else if (calculationMode.equals("calc.extreme.curve")) { - return (CalculationResult) this.compute(context, ComputeType.ADVANCE, false); + return (CalculationResult) + this.compute(context, ComputeType.ADVANCE, false); } River river = FLYSUtils.getRiver(this); diff -r d7e1aee9d51e -r 1983f5706578 flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/CrossSectionWaterLineFacet.java --- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/CrossSectionWaterLineFacet.java Wed Nov 14 12:37:57 2012 +0100 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/CrossSectionWaterLineFacet.java Wed Nov 14 13:48:22 2012 +0100 @@ -71,6 +71,10 @@ if (nextKm == null) nextKm = new Double(-1d); + if (!(artifact instanceof WaterLineArtifact)) { + logger.error("CrossSectionWaterLineFacet needs WaterLineArtifact"); + return new Lines.LineData(new double[][] {}, 0d,0d); + } WaterLineArtifact lineArtifact = (WaterLineArtifact) artifact; if (crossSection != null) { diff -r d7e1aee9d51e -r 1983f5706578 flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/QSectorFacet.java --- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/QSectorFacet.java Wed Nov 14 12:37:57 2012 +0100 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/QSectorFacet.java Wed Nov 14 13:48:22 2012 +0100 @@ -49,6 +49,11 @@ @Override public Object getData(Artifact artifact, CallContext context) { QSectorArtifact qsectorArtifact = (QSectorArtifact) artifact; + if (qsectorArtifact == null || context == null || + context.getContextValue("currentKm") == null) { + logger.error("No artifact, context or currentKm in QSectorFacet"); + return null; + } double currentKm = ((Double)context.getContextValue("currentKm")).doubleValue(); return qsectorArtifact.getQSectors(currentKm, context); diff -r d7e1aee9d51e -r 1983f5706578 flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/fixation/FixRealizingCompute.java --- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/fixation/FixRealizingCompute.java Wed Nov 14 12:37:57 2012 +0100 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/fixation/FixRealizingCompute.java Wed Nov 14 13:48:22 2012 +0100 @@ -10,6 +10,7 @@ import de.intevation.flys.artifacts.FLYSArtifact; import de.intevation.flys.artifacts.access.FixRealizingAccess; import de.intevation.flys.artifacts.model.CalculationResult; +import de.intevation.flys.artifacts.model.CrossSectionWaterLineFacet; import de.intevation.flys.artifacts.model.DataFacet; import de.intevation.flys.artifacts.model.FacetTypes; import de.intevation.flys.artifacts.model.ReportFacet; @@ -32,7 +33,6 @@ /** The logger used in this class. */ private static Logger logger = Logger.getLogger(FixRealizingCompute.class); - public static final String I18N_WQ_CURVE = "fix.vollmer.wq.curve"; public static final String I18N_WQ_OUTLIER = "fix.vollmer.wq.outliers"; @@ -101,9 +101,11 @@ Facet q = new FixWaterlevelFacet( i, LONGITUDINAL_Q, nameQ); + Facet csFacet = new CrossSectionWaterLineFacet(i, nameW); facets.add(w); facets.add(q); + facets.add(csFacet); if (wqkms[i] instanceof WQCKms) { String nameC = nameW.replace(