ingo@2217: package de.intevation.flys.artifacts.model;
ingo@2217:
ingo@2217: import java.util.ArrayList;
ingo@4171: import java.util.Collections;
ingo@2217: import java.util.List;
ingo@2217:
ingo@2217:
ingo@2217: /**
felix@5343: * A collection of triples W,Q,Timerange.
ingo@2217: * @author Ingo Weinzierl
ingo@2217: */
ingo@2217: public class WQTimerange extends WQ {
ingo@2217:
felix@5343: /** Used to sort <w,q,timerange> triples. */
ingo@4171: public static class TimerangeItem implements Comparable {
ingo@4171: public double q;
ingo@4171: public double w;
ingo@4171: public Timerange timerange;
ingo@4171:
ingo@4171: public TimerangeItem (Timerange timerange, double q, double w) {
ingo@4171: this.timerange = timerange;
ingo@4171: this.q = q;
ingo@4171: this.w = w;
ingo@4171: }
ingo@4171:
felix@5335: /** Sets [w,q] in wq. */
ingo@4171: public double[] get(double[] wq) {
ingo@4171: if (wq.length >= 2) {
ingo@4171: wq[0] = w;
ingo@4171: wq[1] = q;
ingo@4171: }
ingo@4171:
ingo@4171: return wq;
ingo@4171: }
ingo@4171:
ingo@4171: @Override
ingo@4171: public int compareTo(TimerangeItem other) {
ingo@4171: if (other.timerange.getStart() < timerange.getStart()) {
ingo@4171: return 1;
ingo@4171: }
ingo@4171: else if (other.timerange.getStart() > timerange.getStart()) {
ingo@4171: return -1;
ingo@4171: }
ingo@4171: else if (other.timerange.getEnd() < timerange.getEnd()) {
ingo@4171: return 1;
ingo@4171: }
ingo@4171: else if (other.timerange.getEnd() > timerange.getEnd()){
ingo@4171: return -1;
ingo@4171: }
ingo@4171: else {
ingo@4171: return 0;
ingo@4171: }
ingo@4171: }
ingo@4171: }
ingo@4171:
felix@5335: protected List timeranges;
ingo@2217:
ingo@2217:
ingo@2217: public WQTimerange() {
ingo@2217: super("");
ingo@2217: }
ingo@2217:
ingo@2217:
ingo@2217: public WQTimerange(String name) {
ingo@2217: super(name);
felix@5335: timeranges = new ArrayList();
ingo@2217: }
ingo@2217:
ingo@2217:
ingo@2217: public void add(double w, double q, Timerange t) {
ingo@2217: ws.add(w);
ingo@2217: qs.add(q);
felix@5335: timeranges.add(t);
ingo@2217: }
ingo@2217:
ingo@2217:
ingo@2239: public Timerange getTimerange(int idx) {
felix@5335: return timeranges.get(idx);
ingo@2239: }
ingo@2239:
ingo@2239:
ingo@2217: public Timerange[] getTimeranges() {
felix@5335: return timeranges.toArray(new Timerange[timeranges.size()]);
ingo@2217: }
ingo@4171:
ingo@4171: public List sort() {
felix@5335: ArrayList items = new ArrayList(timeranges.size());
ingo@4171: for (int i = 0, n = size(); i < n; i++) {
ingo@4171: items.add(new TimerangeItem(getTimerange(i), getQ(i), getW(i)));
ingo@4171: }
ingo@4171:
ingo@4171: Collections.sort(items);
ingo@4171: return items;
ingo@4171: }
ingo@2217: }
ingo@2217: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :