sascha@3775: package de.intevation.flys.artifacts.states.extreme; sascha@3775: sascha@3775: import de.intevation.artifactdatabase.state.Facet; sascha@3775: sascha@3775: import de.intevation.artifacts.CallContext; sascha@3775: sascha@3775: import de.intevation.flys.artifacts.FLYSArtifact; sascha@3775: sascha@3775: import de.intevation.flys.artifacts.access.ExtremeAccess; sascha@3775: felix@4302: import de.intevation.flys.artifacts.model.Calculation; sascha@3775: import de.intevation.flys.artifacts.model.CalculationResult; felix@4302: import de.intevation.flys.artifacts.model.FacetTypes; sascha@3775: import de.intevation.flys.artifacts.model.ReportFacet; felix@4302: import de.intevation.flys.artifacts.model.WaterlevelFacet; felix@4302: import de.intevation.flys.artifacts.model.WQKms; sascha@3775: felix@4315: import de.intevation.flys.artifacts.model.extreme.ExtremeCurveFacet; sascha@3775: import de.intevation.flys.artifacts.model.extreme.ExtremeCalculation; felix@4302: import de.intevation.flys.artifacts.model.extreme.ExtremeResult; sascha@3775: sascha@3775: import de.intevation.flys.artifacts.states.DefaultState; sascha@3775: felix@4302: import de.intevation.flys.utils.FLYSUtils; felix@4302: sascha@3775: import java.util.List; sascha@3775: sascha@3775: import org.apache.log4j.Logger; sascha@3775: 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: sascha@3775: public ExtremeCompute() { sascha@3775: } sascha@3775: 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: sascha@3775: ExtremeAccess access = new ExtremeAccess(artifact); 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@4302: } felix@4302: felix@4302: for (int i = 0; i < wqkms.length; i++) { felix@4302: String name = wqkms[i].getName(); felix@4302: felix@4302: // Ext.Calc has wqkmsName(i) felix@4302: String nameW = "WW";//TODO: FLYSUtils.createWspWTitle(artifact, context, name); felix@4302: String nameQ = "QQ";//FLYSUtils.createWspQTitle(artifact, context, name); felix@4302: felix@4302: // Hotfix for theme names. Themes with the same name cause problems felix@4302: // aggregating chart legend items. felix@4302: if (i > 0 && name.equals(wqkms[i - 1].getName())) { felix@4302: nameW += "; Q=" + wqkms[i].get(0, new double[3])[1]; felix@4302: nameQ += " = " + wqkms[i].get(0, new double[3])[1]; felix@4302: } felix@4302: felix@4302: Facet w = new WaterlevelFacet( felix@4302: i, LONGITUDINAL_W, nameW, ComputeType.ADVANCE, id, hash); felix@4302: Facet q = new WaterlevelFacet( felix@4302: i, LONGITUDINAL_Q, nameQ, ComputeType.ADVANCE, id, hash); felix@4302: felix@4302: // TODO add more facets like: felix@4315: // csv, data, pdf wst facet, data facet felix@4302: // furthermore, waterlevel felix@4302: //facets.add(new CrossSectionWaterLineFacet(i, nameW)); felix@4315: facets.add(new ExtremeCurveFacet("WQ")); felix@4302: felix@4302: facets.add(w); felix@4302: facets.add(q); felix@4302: } felix@4302: 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 :