teichmann@5831: package org.dive4elements.river.artifacts.states; felix@1629: felix@1629: import java.util.List; felix@1629: felix@1629: import org.apache.log4j.Logger; felix@1629: teichmann@5831: import org.dive4elements.artifacts.CallContext; teichmann@5831: import org.dive4elements.artifacts.CallMeta; felix@1629: teichmann@5831: import org.dive4elements.artifactdatabase.state.Facet; felix@1629: teichmann@5831: import org.dive4elements.river.artifacts.FLYSArtifact; teichmann@5831: import org.dive4elements.river.artifacts.WINFOArtifact; 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.DataFacet; teichmann@5831: import org.dive4elements.river.artifacts.model.CrossSectionWaterLineFacet; teichmann@5831: import org.dive4elements.river.artifacts.model.CalculationResult; felix@1629: felix@1629: felix@1629: public class WaterlevelInfoState felix@1629: extends DefaultState felix@1629: implements FacetTypes felix@1629: { felix@1629: /** The logger that is used in this state. */ felix@1629: private static Logger logger = Logger.getLogger(WaterlevelInfoState.class); felix@1629: felix@1629: felix@1629: @Override felix@1629: protected String getUIProvider() { felix@1629: return "noinput"; felix@1629: } felix@1629: felix@1629: felix@2657: @Override felix@1629: public Object computeInit( felix@1629: FLYSArtifact artifact, felix@1629: String hash, felix@1629: Object context, felix@1629: CallMeta meta, felix@1629: List facets felix@1629: ) { felix@1629: return compute((WINFOArtifact) artifact, hash, facets, null); felix@1629: } felix@1629: felix@1629: felix@1629: protected Object compute( felix@1629: WINFOArtifact winfo, felix@1629: String hash, felix@1629: List facets, felix@1629: Object old felix@1629: ) { felix@1629: logger.debug("WaterlevelInfoState.compute"); felix@1629: String id = getID(); felix@1629: felix@1629: CalculationResult res = old instanceof CalculationResult felix@1629: ? (CalculationResult)old felix@1629: : winfo.getWaterlevelData(); felix@1629: felix@1629: if (facets == null) { felix@1629: return res; felix@1629: } felix@1629: felix@1629: WQKms [] wqkms = (WQKms [])res.getData(); felix@1629: felix@1629: for (int i = 0; i < wqkms.length; i++) { felix@1629: String nameW = null; felix@1629: String nameQ = null; felix@1629: felix@1629: if (winfo.isQ()) { felix@1629: nameQ = wqkms[i].getName(); felix@1629: nameW = "W(" + nameQ + ")"; felix@1629: } felix@1629: else { felix@1629: nameW = wqkms[i].getName(); felix@1629: nameQ = "Q(" + nameQ + ")"; felix@1629: } felix@1629: felix@1629: logger.debug("WaterlevelInfoState Create facet: " + nameW); felix@1629: logger.debug("WaterlevelInfoState Create facet: " + nameQ); felix@1629: felix@1629: Facet w = new WaterlevelFacet( felix@1629: i, LONGITUDINAL_W, nameW, ComputeType.ADVANCE, id, hash); felix@1629: Facet q = new WaterlevelFacet( felix@1629: i, LONGITUDINAL_Q, nameQ, ComputeType.ADVANCE, id, hash); felix@1629: felix@1629: facets.add(w); felix@1629: facets.add(q); felix@1629: } felix@1629: felix@1629: if (wqkms.length > 0) { felix@1629: Facet wst = new DataFacet( felix@1629: WST, "WST data", ComputeType.ADVANCE, hash, id); felix@1629: Facet csv = new DataFacet( felix@1629: CSV, "CSV data", ComputeType.ADVANCE, hash, id); felix@1629: felix@1629: facets.add(wst); felix@1629: facets.add(csv); felix@1629: } felix@1629: felix@1629: if (res.getReport().hasProblems()) { felix@1629: facets.add(new ReportFacet(ComputeType.ADVANCE, hash, id)); felix@1629: } felix@1629: felix@1804: // TODO Adjust to WaterlevelState - implementation. felix@1804: facets.add(new CrossSectionWaterLineFacet(0, "Q=" + winfo.getDataAsString("wq_single"))); felix@1804: felix@1629: // Assume to be in wq_single mode. felix@1629: return res; felix@1629: } felix@1629: felix@1629: felix@1629: /** felix@1629: * @param context Ignored. felix@1629: */ felix@1629: @Override felix@1629: public Object computeFeed( felix@1629: FLYSArtifact artifact, felix@1629: String hash, felix@1629: CallContext context, felix@1629: List facets, felix@1629: Object old felix@1629: ) { felix@1629: return compute((WINFOArtifact) artifact, hash, facets, old); felix@1629: } felix@1629: felix@1629: felix@1629: /** felix@1629: * @param context Ignored. felix@1629: */ felix@1629: @Override felix@1629: public Object computeAdvance( felix@1629: FLYSArtifact artifact, felix@1629: String hash, felix@1629: CallContext context, felix@1629: List facets, felix@1629: Object old felix@1629: ) { felix@1629: return compute((WINFOArtifact) artifact, hash, facets, old); felix@1629: } felix@1629: } felix@1629: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :