teichmann@5831: package org.dive4elements.river.artifacts.states.extreme; sascha@3775: teichmann@5831: import org.dive4elements.artifactdatabase.state.Facet; sascha@3775: teichmann@5831: import org.dive4elements.artifacts.CallContext; sascha@3775: teichmann@5831: import org.dive4elements.river.artifacts.FLYSArtifact; teichmann@5831: teichmann@5831: import org.dive4elements.river.artifacts.access.ExtremeAccess; teichmann@5831: teichmann@5831: import org.dive4elements.river.artifacts.model.CalculationResult; teichmann@5831: import org.dive4elements.river.artifacts.model.CrossSectionWaterLineFacet; teichmann@5831: import org.dive4elements.river.artifacts.model.DataFacet; teichmann@5831: import org.dive4elements.river.artifacts.model.FacetTypes; teichmann@5831: import org.dive4elements.river.artifacts.model.ReportFacet; teichmann@5831: import org.dive4elements.river.artifacts.model.WaterlevelFacet; teichmann@5831: import org.dive4elements.river.artifacts.model.WQKms; teichmann@5831: teichmann@5831: import org.dive4elements.river.artifacts.model.extreme.ExtremeCurveFacet; teichmann@5831: import org.dive4elements.river.artifacts.model.extreme.ExtremeCalculation; teichmann@5831: import org.dive4elements.river.artifacts.model.extreme.ExtremeResult; teichmann@5831: teichmann@5831: import org.dive4elements.river.artifacts.resources.Resources; teichmann@5831: import org.dive4elements.river.artifacts.states.DefaultState; sascha@3775: sascha@3775: import java.util.List; sascha@3775: sascha@3775: import org.apache.log4j.Logger; sascha@3775: felix@4404: felix@4043: /** State in which to deliver extreme value analysis result. */ sascha@3775: public class ExtremeCompute sascha@3775: extends DefaultState felix@4302: implements FacetTypes sascha@3775: { felix@4043: /** Private logger. */ felix@4301: private static Logger logger = Logger.getLogger(ExtremeCompute.class); sascha@3775: felix@4404: sascha@3775: public ExtremeCompute() { sascha@3775: } sascha@3775: felix@4404: sascha@3775: @Override sascha@3775: public Object computeAdvance( sascha@3775: FLYSArtifact artifact, sascha@3775: String hash, sascha@3775: CallContext context, sascha@3775: List facets, sascha@3775: Object old sascha@3775: ) { felix@4301: logger.debug("ExtremeCompute.computeAdvance"); sascha@3775: sascha@3775: CalculationResult res; sascha@3775: felix@4825: ExtremeAccess access = new ExtremeAccess(artifact, context); sascha@3775: sascha@3775: if (old instanceof CalculationResult) { sascha@3775: res = (CalculationResult)old; sascha@3775: } sascha@3775: else { sascha@3775: ExtremeCalculation calc = new ExtremeCalculation(access); sascha@3775: res = calc.calculate(); sascha@3775: } sascha@3775: sascha@3775: if (facets == null) { sascha@3775: return res; sascha@3775: } sascha@3775: sascha@3775: if (res.getReport().hasProblems()) { sascha@3775: facets.add(new ReportFacet()); sascha@3775: } sascha@3775: felix@4302: ExtremeResult eres = (ExtremeResult) res.getData(); felix@4302: WQKms [] wqkms = (WQKms []) eres.getWQKms(); felix@4302: felix@4302: if (wqkms == null) { felix@4302: logger.error("No computation result!"); felix@4411: return res; felix@4302: } felix@4302: felix@4302: for (int i = 0; i < wqkms.length; i++) { felix@4302: String name = wqkms[i].getName(); felix@4411: // The name already contains "W(...)". felix@4411: String qname = name.replace("W(","Q="); felix@4411: qname = qname.substring(0,qname.length()-1); felix@4302: felix@4302: Facet w = new WaterlevelFacet( felix@4411: i, LONGITUDINAL_W, name, ComputeType.ADVANCE, id, hash); felix@4302: Facet q = new WaterlevelFacet( felix@4411: i, LONGITUDINAL_Q, qname, ComputeType.ADVANCE, id, hash); felix@4479: Facet csFacet = new CrossSectionWaterLineFacet(i, name); felix@4302: felix@4302: facets.add(w); felix@4302: facets.add(q); felix@4479: facets.add(csFacet); felix@4302: } felix@4302: felix@4406: felix@4406: facets.add( felix@4406: new DataFacet(CSV, "CSV data", ComputeType.ADVANCE, hash, id)); felix@4406: facets.add( felix@4406: new DataFacet(PDF, "PDF data", ComputeType.ADVANCE, hash, id)); felix@4406: facets.add( felix@4406: new DataFacet(WST, "WST data", ComputeType.ADVANCE, hash, id)); felix@4406: felix@4367: facets.add(new ExtremeCurveFacet(Resources.getMsg(context.getMeta(), felix@4367: "extreme_wq_curve", "extreme_wq_curve"))); felix@4367: facets.add(new ExtremeCurveFacet(Resources.getMsg(context.getMeta(), felix@4367: "extreme_wq_base_curve", "extreme_wq_base_curve") felix@4367: , true)); sascha@3775: sascha@3775: return res; sascha@3775: } sascha@3775: } sascha@3775: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :