ingo@3227: package de.intevation.flys.artifacts.model;
ingo@3227: 
ingo@3227: import org.apache.log4j.Logger;
ingo@3227: 
ingo@3227: import de.intevation.artifactdatabase.state.Facet;
ingo@3227: import de.intevation.artifacts.Artifact;
ingo@3227: import de.intevation.artifacts.CallContext;
ingo@3227: import de.intevation.flys.artifacts.WINFOArtifact;
ingo@3227: import de.intevation.flys.artifacts.states.DefaultState.ComputeType;
ingo@3227: 
ingo@3227: 
ingo@3227: /**
ingo@3227:  * Facet with the curve of a subtraction of two waterlevel-lines.
ingo@3227:  * TODO inherit directly from DataFacet? Check whether this Facet is obsolete.
ingo@3227:  */
ingo@3227: public class DifferenceCurveFacet extends WaterlevelFacet {
ingo@3227: 
ingo@3227:     private static Logger logger = Logger.getLogger(DifferenceCurveFacet.class);
ingo@3227: 
ingo@3227: 
ingo@3227:     public DifferenceCurveFacet() {
ingo@3227:     }
ingo@3227: 
ingo@3227:     public DifferenceCurveFacet(
ingo@3227:         int         index,
ingo@3227:         String      name,
ingo@3227:         String      description,
ingo@3227:         ComputeType type,
ingo@3227:         String      stateID,
ingo@3227:         String      hash
ingo@3227: 
ingo@3227:     ) {
ingo@3227:         super(index, name, description, type, stateID, hash);
ingo@3227:     }
ingo@3227: 
ingo@3227:     /**
ingo@3227:      * Get difference curve data.
ingo@3227:      * @return a WKms at given index.
ingo@3227:      */
ingo@3227:     @Override
ingo@3227:     public Object getData(Artifact artifact, CallContext context) {
ingo@3227:         WINFOArtifact winfo = (WINFOArtifact)artifact;
ingo@3227: 
ingo@3227:         CalculationResult res = (CalculationResult)
ingo@3227:             winfo.compute(context, hash, stateId, type, false);
ingo@3227: 
ingo@3227:         WKms [] wkms = (WKms [])res.getData();
ingo@3227: 
ingo@3227:         WKms result = wkms[index];
ingo@3227:         logger.debug("Got difference curve data (" + result.getName()
ingo@3227:             + ") at index: " + index);
ingo@3227: 
ingo@3227:         return result;
ingo@3227:     }
ingo@3227: 
ingo@3227: 
ingo@3227:     /** Copy deeply. */
ingo@3227:     @Override
ingo@3227:     public Facet deepCopy() {
ingo@3227:         WaterlevelFacet copy = new DifferenceCurveFacet();
ingo@3227:         copy.set(this);
ingo@3227:         copy.type    = type;
ingo@3227:         copy.stateId = stateId;
ingo@3227:         copy.hash    = hash;
ingo@3227:         return copy;
ingo@3227:     }
ingo@3227: }
ingo@3227: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :