view flys-backend/src/main/java/de/intevation/flys/model/DischargeTable.java @ 4681:aa718770308e

Less than sceleton for DA66-CrossSection parser added.
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Fri, 14 Dec 2012 10:49:58 +0100
parents 8138a90a674a
children 20b6ebf23916
line wrap: on
line source
package de.intevation.flys.model;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.OrderBy;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

@Entity
@Table(name = "discharge_tables")
public class DischargeTable
implements   Serializable, Comparable<DischargeTable>
{
    private Integer      id;
    private Gauge        gauge;
    private String       description;
    private Integer      kind;
    private TimeInterval timeInterval;

    private List<DischargeTableValue> dischargeTableValues;

    public DischargeTable() {
        kind = 0;
    }

    public DischargeTable(Gauge gauge) {
        this(gauge, null, 0, null);
    }

    public DischargeTable(
        Gauge        gauge,
        String       description,
        Integer      kind,
        TimeInterval timeInterval
    ) {
        this.gauge        = gauge;
        this.description  = description;
        this.kind         = kind;
        this.timeInterval = timeInterval;
    }

    @Id
    @SequenceGenerator(
        name           = "SEQUENCE_DISCHARGE_TABLES_ID_SEQ",
        sequenceName   = "DISCHARGE_TABLES_ID_SEQ",
        allocationSize = 1)
    @GeneratedValue(
        strategy  = GenerationType.SEQUENCE,
        generator = "SEQUENCE_DISCHARGE_TABLES_ID_SEQ")
    @Column(name = "id")
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    @OneToOne
    @JoinColumn(name = "gauge_id" )
    public Gauge getGauge() {
        return gauge;
    }

    public void setGauge(Gauge gauge) {
        this.gauge = gauge;
    }

    @Column(name = "description")
    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    @Column(name = "kind")
    public Integer getKind() {
        return kind;
    }

    public void setKind(Integer kind) {
        this.kind = kind;
    }

    @OneToOne
    @JoinColumn(name = "time_interval_id" )
    public TimeInterval getTimeInterval() {
        return timeInterval;
    }

    public void setTimeInterval(TimeInterval timeInterval) {
        this.timeInterval = timeInterval;
    }

    @OneToMany
    @JoinColumn(name = "table_id")
    @OrderBy("q")
    public List<DischargeTableValue> getDischargeTableValues() {
        return dischargeTableValues;
    }

    public void setDischargeTableValues(
        List<DischargeTableValue> dischargeTableValues
    ) {
        this.dischargeTableValues = dischargeTableValues;
    }

    @Override
    public int compareTo(DischargeTable o) {
        if (getKind() == 0 && o.getKind() != 0) {
            return 1;
        }

        TimeInterval other = o.getTimeInterval();
        if (other == null && timeInterval == null) {
            return 1;
        }
        else if (other == null) {
            return -1;
        }
        else if (timeInterval == null) {
            return 1;
        }

        Date otherStartTime = other.getStartTime();
        Date thisStartTime  = timeInterval.getStartTime();

        if (otherStartTime == null) {
            return -1;
        }
        else if (thisStartTime == null) {
            return 1;
        }

        long otherStart = otherStartTime.getTime();
        long thisStart  = thisStartTime.getTime();

        if (otherStart < thisStart) {
            return 1;
        }
        else if (otherStart > thisStart) {
            return -1;
        }

        Date otherStopTime  = other.getStopTime();
        Date thisStopTime  = timeInterval.getStopTime();

        if (otherStopTime == null) {
            return -1;
        }
        else if (thisStopTime == null) {
            return 1;
        }

        long otherEnd   = otherStopTime.getTime();
        long thisEnd    = thisStopTime.getTime();

        if (otherEnd < thisEnd) {
            return 1;
        }
        else if (otherEnd > thisEnd) {
            return -1;
        }
        else {
            return 0;
        }
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org