sascha@2170: package de.intevation.flys.artifacts.states;
sascha@2170: 
sascha@2195: import de.intevation.artifactdatabase.state.Facet;
sascha@2195: 
sascha@2195: import de.intevation.artifacts.CallContext;
sascha@2195: 
sascha@2195: import de.intevation.flys.artifacts.FLYSArtifact;
sascha@2195: import de.intevation.flys.artifacts.WINFOArtifact;
sascha@2195: 
sascha@2195: import de.intevation.flys.artifacts.model.CalculationResult;
felix@2259: import de.intevation.flys.artifacts.model.DataFacet;
sascha@2195: import de.intevation.flys.artifacts.model.FacetTypes;
felix@2222: import de.intevation.flys.artifacts.model.ReferenceCurveFacet;
sascha@2195: import de.intevation.flys.artifacts.model.ReportFacet;
felix@2283: import de.intevation.flys.artifacts.model.WWQQ;
sascha@2195: 
sascha@2195: import java.util.List;
sascha@2195: 
sascha@2195: import org.apache.log4j.Logger;
sascha@2195: 
felix@2251: 
felix@2760: /** State of WINFO in which reference curves can be produced. */
sascha@2170: public class ReferenceCurveState
sascha@2170: extends      DefaultState
sascha@2195: implements   FacetTypes
sascha@2170: {
felix@2259:     private static Logger logger = Logger.getLogger(ReferenceCurveState.class);
sascha@2195: 
felix@2760: 
sascha@2170:     public ReferenceCurveState() {
sascha@2170:     }
sascha@2195: 
felix@2760: 
sascha@2195:     @Override
sascha@2195:     public Object computeAdvance(
sascha@2195:         FLYSArtifact artifact,
sascha@2195:         String       hash,
sascha@2195:         CallContext  context,
sascha@2195:         List<Facet>  facets,
sascha@2195:         Object       old
sascha@2195:     ) {
sascha@2195:         if (!(artifact instanceof WINFOArtifact)) {
sascha@2195:             return null;
sascha@2195:         }
sascha@2195: 
felix@2259:         String id = getID();
felix@2259: 
sascha@2195:         WINFOArtifact winfo = (WINFOArtifact)artifact;
sascha@2195: 
sascha@2195:         CalculationResult res = old instanceof CalculationResult
sascha@2195:             ? (CalculationResult)old
sascha@2326:             : winfo.getReferenceCurveData(context);
sascha@2195: 
sascha@2195:         if (facets == null) {
sascha@2195:             return res;
sascha@2195:         }
sascha@2195: 
felix@2283:         WWQQ [] wws = (WWQQ [])res.getData();
sascha@2195: 
sascha@2195:         for (int i = 0; i < wws.length; ++i) {
felix@2307:             String wwsName = wws[i].getName();
felix@2251:             facets.add(new ReferenceCurveFacet(i,
felix@2251:                 REFERENCE_CURVE,
felix@2307:                 wwsName
felix@2307:                 ));
sascha@2277:             facets.add(new ReferenceCurveFacet(i,
sascha@2277:                 REFERENCE_CURVE_NORMALIZED,
felix@2307:                 wwsName
felix@2307:                 ));
sascha@2195:         }
sascha@2195: 
sascha@2195:         if (wws.length > 0) {
raimund@2310:             logger.debug("Adding CSV and PDF data facet.");
felix@2259:             Facet csv = new DataFacet (CSV, "CSV data", ComputeType.ADVANCE, hash, id);
raimund@2310:             Facet pdf = new DataFacet (PDF, "PDF data", ComputeType.ADVANCE, hash, id);
felix@2259:             facets.add(csv);
raimund@2310:             facets.add(pdf);
sascha@2195:         }
sascha@2195: 
sascha@2195:         if (res.getReport().hasProblems()) {
sascha@2195:             facets.add(new ReportFacet(ComputeType.ADVANCE, hash, id));
sascha@2195:         }
sascha@2195: 
sascha@2195:         return res;
sascha@2195:     }
sascha@2170: }
sascha@2170: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :