felix@1085: package de.intevation.flys.artifacts.model;
felix@1085: 
ingo@1679: import java.util.ArrayList;
ingo@1679: import java.util.List;
ingo@1679: 
ingo@1679: import org.jfree.chart.annotations.XYTextAnnotation;
ingo@1679: 
felix@1085: import de.intevation.artifacts.Artifact;
felix@1085: import de.intevation.artifacts.CallContext;
ingo@1679: 
felix@1085: import de.intevation.artifactdatabase.state.DefaultFacet;
ingo@1679: 
ingo@1679: import de.intevation.flys.artifacts.MainValuesArtifact;
felix@1085: import de.intevation.flys.artifacts.model.FacetTypes;
ingo@1679: import de.intevation.flys.jfree.FLYSAnnotation;
ingo@1679: import de.intevation.flys.jfree.StickyAxisAnnotation;
felix@1085: 
felix@1085: /**
felix@1085:  * Facet to show Main W Values.
felix@1085:  */
felix@1085: public class MainValuesWFacet
felix@1085: extends      DefaultFacet
felix@1085: implements   FacetTypes {
felix@1085: 
felix@1957:     /** Do we want MainValues at Gauge (not interpolated)? */
felix@1957:     protected boolean isAtGauge;
felix@1957: 
felix@1085:     /** Trivial Constructor. */
felix@1957:     public MainValuesWFacet(String name, String description, boolean atGauge) {
felix@1112:         this.description = description;
felix@1809:         this.name = name;
felix@1957:         this.index = 0;
felix@1957:         this.isAtGauge = atGauge;
felix@1085:     }
felix@1085: 
felix@1085: 
felix@1085:     /**
felix@1085:      * Returns the data this facet requires.
felix@1085:      *
felix@1085:      * @param artifact the owner artifact.
felix@1085:      * @param context  the CallContext (ignored).
felix@1085:      *
felix@1085:      * @return the data.
felix@1085:      */
felix@1085:     @Override
felix@1085:     public Object getData(Artifact artifact, CallContext context) {
felix@1085:         MainValuesArtifact mvArtifact = (MainValuesArtifact) artifact;
ingo@1679: 
felix@1957:         List<NamedDouble>      ws = mvArtifact.getMainValuesW(isAtGauge);
ingo@1679:         List<XYTextAnnotation> xy = new ArrayList<XYTextAnnotation>();
ingo@1679: 
ingo@1679:         for (NamedDouble w: ws) {
ingo@1679:             xy.add(new StickyAxisAnnotation(
ingo@1679:                 w.getName(),
ingo@1679:                 (float) w.getValue(),
ingo@1679:                 StickyAxisAnnotation.SimpleAxis.Y_AXIS));
ingo@1679:         }
ingo@1679: 
ingo@1679:         return new FLYSAnnotation(description, xy);
felix@1085:     }
felix@1085: 
felix@1085: 
felix@1085:     /**
felix@1085:      * Create a deep copy of this Facet.
felix@1085:      * @return a deep copy.
felix@1085:      */
felix@1085:     @Override
felix@1085:     public MainValuesWFacet deepCopy() {
felix@1957:         MainValuesWFacet copy = new MainValuesWFacet(this.name,
felix@1957:             description, this.isAtGauge);
felix@1085:         copy.set(this);
felix@1085:         return copy;
felix@1085:     }
felix@1085: }
felix@1809: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :