ingo@399: package de.intevation.flys.artifacts.states;
ingo@399: 
ingo@687: import java.util.List;
ingo@687: 
ingo@399: import org.apache.log4j.Logger;
ingo@399: 
ingo@692: import de.intevation.artifacts.CallContext;
ingo@692: 
ingo@687: import de.intevation.artifactdatabase.state.Facet;
ingo@687: 
ingo@687: import de.intevation.flys.artifacts.FLYSArtifact;
ingo@687: import de.intevation.flys.artifacts.WINFOArtifact;
raimund@2132: import de.intevation.flys.artifacts.ChartArtifact;
sascha@711: 
felix@2730: import de.intevation.flys.artifacts.model.CrossSectionWaterLineFacet;
ingo@692: import de.intevation.flys.artifacts.model.FacetTypes;
sascha@711: import de.intevation.flys.artifacts.model.ReportFacet;
ingo@696: import de.intevation.flys.artifacts.model.WaterlevelFacet;
raimund@2135: import de.intevation.flys.artifacts.model.EmptyFacet;
raimund@2135: 
ingo@692: import de.intevation.flys.artifacts.model.WQKms;
ingo@692: import de.intevation.flys.artifacts.model.WQCKms;
sascha@709: import de.intevation.flys.artifacts.model.CalculationResult;
ingo@687: 
sascha@703: import de.intevation.flys.artifacts.model.DataFacet;
sascha@703: 
ingo@692: public class DischargeLongitudinalSection
ingo@692: extends      DefaultState
ingo@692: implements   FacetTypes
ingo@692: {
ingo@399:     private static Logger logger =
ingo@399:         Logger.getLogger(DischargeLongitudinalSection.class);
ingo@687: 
ingo@687: 
ingo@687:     @Override
sascha@697:     public Object computeAdvance(
sascha@697:         FLYSArtifact artifact,
sascha@697:         String       hash,
sascha@697:         CallContext  context,
sascha@742:         List<Facet>  facets,
sascha@697:         Object       old
sascha@697:     ) {
raimund@2132:         if (artifact instanceof ChartArtifact) {
raimund@2135:             ChartArtifact chart = (ChartArtifact)artifact;
raimund@2135:             facets.add(new EmptyFacet());
raimund@2132:             return null;
raimund@2132:         }
raimund@2132: 
sascha@697:         WINFOArtifact winfo = (WINFOArtifact)artifact;
ingo@692: 
sascha@711:         CalculationResult res = old instanceof CalculationResult
sascha@711:             ? (CalculationResult)old
sascha@711:             : winfo.getDischargeLongitudinalSectionData();
ingo@692: 
sascha@705:         if (facets == null) {
sascha@705:             return res;
sascha@705:         }
sascha@705: 
sascha@709:         WQKms [] wqkms = (WQKms [])res.getData();
sascha@709: 
sascha@709:         for (int i = 0; i < wqkms.length; i++) {
sascha@697:             String nameW = null;
sascha@697:             String nameQ = null;
ingo@692: 
sascha@697:             if (winfo.isQ()) {
sascha@709:                 nameQ = wqkms[i].getName();
sascha@697:                 nameW = "W(" + nameQ + ")";
ingo@687:             }
sascha@697:             else {
sascha@709:                 nameW = wqkms[i].getName();
ingo@2014:                 nameQ = "Q(" + nameW + ")";
sascha@697:             }
ingo@687: 
sascha@697:             Facet w = new WaterlevelFacet(
sascha@697:                 i, DISCHARGE_LONGITUDINAL_W, nameW);
sascha@697: 
sascha@697:             Facet q = new WaterlevelFacet(
sascha@697:                 i, DISCHARGE_LONGITUDINAL_Q, nameQ);
sascha@697: 
felix@2730:             Facet s = new CrossSectionWaterLineFacet(i, nameW);
felix@2730: 
felix@2730:             facets.add(s);
sascha@697:             facets.add(w);
sascha@697:             facets.add(q);
sascha@697: 
sascha@709:             if (wqkms[i] instanceof WQCKms) {
sascha@697:                 // TODO DO i18n
sascha@697: 
sascha@697:                 String nameC = nameW.replace(
ingo@1712:                     "benutzerdefiniert",
ingo@1712:                     "benutzerdefiniert [korrigiert]");
sascha@697: 
sascha@697:                 Facet c = new WaterlevelFacet(
sascha@697:                     i, DISCHARGE_LONGITUDINAL_C, nameC);
sascha@697: 
felix@3124:                 // Here, avoid index clash with Facet "s" above and
felix@3124:                 // signal the WINFO later that we want to access Cs.
felix@3124:                 Facet r = new CrossSectionWaterLineFacet(i + 1, nameC);
felix@2730: 
sascha@697:                 facets.add(c);
felix@2730:                 facets.add(r);
sascha@697:             }
sascha@697:         }
sascha@697: 
sascha@709:         if (wqkms.length > 0) {
sascha@703:             facets.add(new DataFacet(CSV, "CSV data"));
sascha@703:             facets.add(new DataFacet(WST, "WST data"));
sascha@703:         }
sascha@703: 
sascha@711:         if (res.getReport().hasProblems()) {
sascha@711:             facets.add(new ReportFacet());
sascha@711:         }
sascha@711: 
sascha@697:         return res;
ingo@687:     }
ingo@399: }
ingo@399: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :