sascha@185: package de.intevation.flys.importer; sascha@185: sascha@188: import de.intevation.flys.model.Range; sascha@188: import de.intevation.flys.model.River; sascha@188: sascha@188: import org.hibernate.Session; sascha@188: import org.hibernate.Query; sascha@188: sascha@188: import java.util.List; sascha@188: sascha@188: import java.math.BigDecimal; sascha@188: sascha@188: import org.apache.log4j.Logger; sascha@188: sascha@185: public class ImportRange sascha@186: implements Comparable sascha@185: { sascha@188: private static Logger log = Logger.getLogger(ImportRange.class); sascha@188: sascha@189: protected BigDecimal a; sascha@189: protected BigDecimal b; sascha@188: sascha@188: protected Range peer; sascha@185: sascha@185: public ImportRange() { sascha@185: } sascha@185: sascha@189: public ImportRange(BigDecimal a, BigDecimal b) { sascha@189: this.a = a; sascha@189: this.b = b; sascha@186: } sascha@186: sascha@189: private static final int compare(BigDecimal a, BigDecimal b) { sascha@186: if (a == null && b == null) { sascha@186: return 0; sascha@186: } sascha@186: if (a == null && b != null) { sascha@186: return -1; sascha@186: } sascha@186: if (a != null && b == null) { sascha@186: return +1; sascha@186: } sascha@186: return a.compareTo(b); sascha@186: } sascha@186: sascha@186: public int compareTo(ImportRange other) { sascha@189: int cmp = compare(a, other.a); sascha@186: if (cmp != 0) return cmp; sascha@189: return compare(b, other.b); sascha@185: } sascha@185: sascha@189: public BigDecimal getA() { sascha@189: return a; sascha@185: } sascha@185: sascha@189: public void setA(BigDecimal a) { sascha@189: this.a = a; sascha@185: } sascha@185: sascha@189: public BigDecimal getB() { sascha@189: return b; sascha@189: } sascha@189: sascha@189: public void setB(BigDecimal b) { sascha@189: this.b = b; sascha@185: } sascha@188: sascha@188: public Range getPeer(River river) { sascha@188: if (peer == null) { sascha@497: Session session = ImporterSession.getInstance().getDatabaseSession(); sascha@188: Query query = session.createQuery( sascha@201: "from Range where a=:a and b=:b and river=:river"); sascha@188: query.setParameter("a", a); sascha@188: query.setParameter("b", b); sascha@201: query.setParameter("river", river); sascha@499: //log.debug("a: " + a + " b: " + b + " river.id: " + river.getId()); sascha@188: List ranges = query.list(); sascha@188: if (ranges.isEmpty()) { sascha@188: peer = new Range(a, b, river); sascha@188: session.save(peer); sascha@188: } sascha@188: else { sascha@188: peer = ranges.get(0); sascha@188: } sascha@188: } sascha@188: return peer; sascha@188: } sascha@185: } sascha@185: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :