Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/fixation/FixRealizingCompute.java @ 5798:febeb4bb10a5
StaticWQKmsArtifact: implement WaterLineArtifact .
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Wed, 24 Apr 2013 08:21:52 +0200 |
parents | 4ce126aa130c |
children |
line wrap: on
line source
package de.intevation.flys.artifacts.states.fixation; import java.util.List; import org.apache.log4j.Logger; import de.intevation.artifactdatabase.state.Facet; import de.intevation.artifacts.CallContext; import de.intevation.artifacts.CallMeta; 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; import de.intevation.flys.artifacts.model.WQCKms; import de.intevation.flys.artifacts.model.WQKms; import de.intevation.flys.artifacts.model.WQKmsFactory; import de.intevation.flys.artifacts.model.fixings.FixOutlierFacet; import de.intevation.flys.artifacts.model.fixings.FixRealizingCalculation; import de.intevation.flys.artifacts.model.fixings.FixRealizingResult; import de.intevation.flys.artifacts.model.fixings.FixEventFacet; import de.intevation.flys.artifacts.model.fixings.FixReferenceEventsFacet; import de.intevation.flys.artifacts.model.fixings.FixWQCurveFacet; import de.intevation.flys.artifacts.model.fixings.FixWaterlevelFacet; import de.intevation.flys.artifacts.resources.Resources; import de.intevation.flys.artifacts.states.DefaultState; /** * State to compute the fixation realizing (vollmer) results. * * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> */ public class FixRealizingCompute extends DefaultState implements FacetTypes { /** 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"; public static final String I18N_WQ_EVENTS = "fix.vollmer.wq.events"; /** * The default constructor that initializes an empty State object. */ public FixRealizingCompute() { } @Override public Object computeAdvance( FLYSArtifact artifact, String hash, CallContext context, List<Facet> facets, Object old ) { logger.debug("FixRealizingCompute.computeAdvance"); CalculationResult res; FixRealizingAccess access = new FixRealizingAccess(artifact, context); if (old instanceof CalculationResult) { res = (CalculationResult) old; } else { FixRealizingCalculation calc = new FixRealizingCalculation(access); res = calc.calculate(); } if (facets == null) { return res; } if (res.getReport().hasProblems()) { facets.add(new ReportFacet()); } String id = getID(); CallMeta meta = context.getMeta(); FixRealizingResult fixRes = (FixRealizingResult) res.getData(); WQKms [] wqkms = fixRes != null ? fixRes.getWQKms() : new WQKms[0]; for (int i = 0; i < wqkms.length; i++) { String nameW = null; String nameQ = null; if (access.isQ()) { nameQ = wqkms[i].getName(); nameW = "W(" + nameQ + ")"; } else { nameW = wqkms[i].getName(); nameQ = "Q(" + nameW + ")"; } Facet w = new FixWaterlevelFacet( i, LONGITUDINAL_W, nameW); 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( "benutzerdefiniert", "benutzerdefiniert [korrigiert]"); Facet c = new FixWaterlevelFacet( i, DISCHARGE_LONGITUDINAL_C, nameC); facets.add(c); } } // Add one facet per event. int i = 0; for (int event: access.getEvents()) { facets.add(new FixEventFacet(i, FIX_EVENTS, WQKmsFactory.getWQKmsName(event))); i++; } if (wqkms.length > 0) { facets.add( new DataFacet(CSV, "CSV data", ComputeType.ADVANCE, hash, id)); facets.add( new DataFacet(WST, "WST data", ComputeType.ADVANCE, hash, id)); facets.add( new DataFacet(PDF, "PDF data", ComputeType.ADVANCE, hash, id)); } facets.add( new DataFacet(AT, "AT data", ComputeType.ADVANCE, hash, id)); facets.add(new FixWQCurveFacet( 0, Resources.getMsg(meta, I18N_WQ_CURVE, I18N_WQ_CURVE) + " (" + access.getFunction() + ")")); facets.add(new FixReferenceEventsFacet( 0, FIX_REFERENCE_EVENTS_WQ, Resources.getMsg(meta, I18N_WQ_EVENTS, I18N_WQ_EVENTS))); facets.add(new FixOutlierFacet( 0, FIX_OUTLIER, Resources.getMsg(meta, I18N_WQ_OUTLIER, I18N_WQ_OUTLIER))); return res; } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :