view flys-backend/src/main/java/de/intevation/flys/importer/ImportRange.java @ 5542:f3b270e5462e

Wst Parser: Another attempt to fix the order of the Q ranges.
author Sascha L. Teichmann <teichmann@intevation.de>
date Wed, 03 Apr 2013 20:16:01 +0200
parents 2c99995395f5
children
line wrap: on
line source
package de.intevation.flys.importer;

import de.intevation.flys.model.Range;
import de.intevation.flys.model.River;

import java.math.BigDecimal;

import org.apache.log4j.Logger;

/** A range that is about to be imported. */
public class ImportRange
implements   Comparable<ImportRange>
{
    /** Private logger. */
    private static Logger log = Logger.getLogger(ImportRange.class);

    protected BigDecimal a;
    protected BigDecimal b;

    protected Range peer;

    public ImportRange() {
    }

    public ImportRange(BigDecimal a, BigDecimal b) {
        this.a = a;
        this.b = b;
    }

    private static final int compare(BigDecimal a, BigDecimal b) {
        if (a == null && b == null) {
            return 0;
        }
        if (a == null && b != null) {
            return -1;
        }
        if (a != null && b == null) {
            return +1;
        }
        return a.compareTo(b);
    }

    public void fixRangesOrder() {
        if (compare(a, b) > 0) {
            BigDecimal t = a; a = b; b = t;
        }
    }

    public int compareTo(ImportRange other) {
        int cmp = compare(a, other.a);
        if (cmp != 0) return cmp;
        return compare(b, other.b);
    }

    public BigDecimal getA() {
        return a;
    }

    public void setA(BigDecimal a) {
        this.a = a;
    }

    public BigDecimal getB() {
        return b;
    }

    public void setB(BigDecimal b) {
        this.b = b;
    }

    public Range getPeer(River river) {
        if (peer == null) {
            peer = ImporterSession.getInstance().getRange(river, a, b);
        }
        return peer;
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org