# HG changeset patch # User Felix Wolfsteller # Date 1352897210 -3600 # Node ID 03b8d10a99c0b432645f01c5e2d41bef2f677fd6 # Parent 976ff4b74b96c5e1a1a5504e2a4db024d96f2dea FixationArtifact: implement WaterLineArtifact, deliver lines for cross-sections. diff -r 976ff4b74b96 -r 03b8d10a99c0 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:26:45 2012 +0100 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/FixationArtifact.java Wed Nov 14 13:46:50 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 :