felix@1085: package de.intevation.flys.artifacts.model; felix@1085: ingo@1679: import java.util.ArrayList; ingo@1679: import java.util.List; 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@2163: import de.intevation.flys.exports.DurationCurveGenerator; felix@2163: felix@1085: /** felix@1085: * Facet to show Main Q Values. felix@2161: * TODO Join with W implementation. felix@1085: */ felix@1085: public class MainValuesQFacet 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 MainValuesQFacet(String name, String description, boolean atGauge) { felix@1112: this.description = description; felix@2163: this.name = name; felix@2163: this.index = 0; felix@2163: 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@2163: List qs = mvArtifact.getMainValuesQ(isAtGauge); felix@2161: List xy = new ArrayList(); ingo@1679: felix@2163: // Rather specific case, Q-Annotations at a maybe second yaxis. felix@2163: if (this.name.equals(DURATION_MAINVALUES_Q)) { felix@2163: for (NamedDouble q: qs) { felix@2163: xy.add(new StickyAxisAnnotation( felix@2163: q.getName(), felix@2163: (float) q.getValue(), felix@2163: StickyAxisAnnotation.SimpleAxis.Y_AXIS, felix@2163: DurationCurveGenerator.YAXIS.Q.idx)); felix@2163: } felix@2163: } felix@2163: else { felix@2163: for (NamedDouble q: qs) { felix@2163: xy.add(new StickyAxisAnnotation( felix@2163: q.getName(), felix@2163: (float) q.getValue(), felix@2163: StickyAxisAnnotation.SimpleAxis.X_AXIS)); felix@2163: } 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 MainValuesQFacet deepCopy() { felix@1957: MainValuesQFacet copy = new MainValuesQFacet(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 :