ingo@688: package de.intevation.flys.artifacts.states;
ingo@688: 
ingo@688: import java.util.List;
ingo@688: 
ingo@688: import org.apache.log4j.Logger;
ingo@688: 
ingo@927: import de.intevation.artifacts.Artifact;
ingo@688: import de.intevation.artifacts.CallContext;
ingo@688: 
ingo@688: import de.intevation.artifactdatabase.state.Facet;
ingo@688: 
ingo@688: import de.intevation.flys.artifacts.FLYSArtifact;
ingo@688: import de.intevation.flys.artifacts.WINFOArtifact;
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;
ingo@692: import de.intevation.flys.artifacts.model.WQKms;
ingo@688: 
sascha@703: import de.intevation.flys.artifacts.model.DataFacet;
sascha@709: import de.intevation.flys.artifacts.model.CalculationResult;
sascha@703: 
ingo@688: 
ingo@692: public class WaterlevelState
ingo@692: extends      DefaultState
ingo@692: implements   FacetTypes
ingo@692: {
ingo@688:     /** The logger that is used in this state.*/
ingo@688:     private static Logger logger = Logger.getLogger(WaterlevelState.class);
ingo@688: 
ingo@688: 
ingo@688:     @Override
ingo@927:     protected String getUIProvider() {
ingo@927:         return "continue";
ingo@927:     }
ingo@927: 
ingo@927: 
ingo@927:     /**
ingo@927:      * This method returns always true, because there is no data to validate.
ingo@927:      *
ingo@927:      * @param artifact The Artifact.
ingo@927:      * @param context The CallContext.
ingo@927:      *
ingo@927:      * @return always true.
ingo@927:      */
ingo@927:     @Override
ingo@927:     public boolean validate(Artifact artifact, CallContext context)
ingo@927:     throws IllegalArgumentException
ingo@927:     {
ingo@927:         return true;
ingo@927:     }
ingo@927: 
ingo@927: 
ingo@927:     @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:     ) {
sascha@697:         WINFOArtifact winfo = (WINFOArtifact)artifact;
ingo@692: 
ingo@930:         String id = getID();
ingo@930: 
sascha@709:         CalculationResult res = old instanceof CalculationResult
sascha@709:             ? (CalculationResult)old
sascha@709:             : winfo.getWaterlevelData();
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@688:             }
sascha@697:             else {
sascha@709:                 nameW = wqkms[i].getName();
sascha@697:                 nameQ = "Q(" + nameQ + ")";
sascha@697:             }
sascha@697: 
sascha@697:             logger.debug("Create facet: " + nameW);
sascha@697:             logger.debug("Create facet: " + nameQ);
sascha@697: 
ingo@930:             Facet w = new WaterlevelFacet(
ingo@930:                 i, LONGITUDINAL_W, nameW, ComputeType.ADVANCE, id, hash);
ingo@930:             Facet q = new WaterlevelFacet(
ingo@930:                 i, LONGITUDINAL_Q, nameQ, ComputeType.ADVANCE, id, hash);
sascha@697: 
sascha@697:             facets.add(w);
sascha@697:             facets.add(q);
sascha@697:         }
sascha@697: 
sascha@709:         if (wqkms.length > 0) {
ingo@930:             Facet wst = new DataFacet(
ingo@930:                 WST, "WST data", ComputeType.ADVANCE, hash, id);
ingo@930:             Facet csv = new DataFacet(
ingo@930:                 CSV, "CSV data", ComputeType.ADVANCE, hash, id);
sascha@703: 
sascha@703:             facets.add(wst);
sascha@703:             facets.add(csv);
sascha@703:         }
sascha@703: 
sascha@711:         if (res.getReport().hasProblems()) {
ingo@930:             facets.add(new ReportFacet(ComputeType.ADVANCE, hash, id));
sascha@711:         }
sascha@711: 
sascha@697:         return res;
ingo@688:     }
ingo@688: }
ingo@688: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :