Mercurial > dive4elements > river
diff flys-backend/src/main/java/de/intevation/flys/importer/ImportEdge.java @ 759:9f2204ed79ed
Import edges to database.
flys-backend/trunk@2107 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Tue, 14 Jun 2011 13:13:58 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-backend/src/main/java/de/intevation/flys/importer/ImportEdge.java Tue Jun 14 13:13:58 2011 +0000 @@ -0,0 +1,75 @@ +package de.intevation.flys.importer; + +import de.intevation.flys.model.Edge; + +import org.hibernate.Session; +import org.hibernate.Query; + +import java.util.List; + +import java.math.BigDecimal; + +public class ImportEdge +implements Comparable<ImportEdge> +{ + protected BigDecimal top; + protected BigDecimal bottom; + + protected Edge peer; + + public ImportEdge() { + } + + public ImportEdge(BigDecimal top, BigDecimal bottom) { + this.top = top; + this.bottom = bottom; + } + + public BigDecimal getTop() { + return top; + } + + public void setTop(BigDecimal top) { + this.top = top; + } + + public BigDecimal getBottom() { + return bottom; + } + + public void setBottom(BigDecimal bottom) { + this.bottom = bottom; + } + + private static final int compare(BigDecimal a, BigDecimal b) { + if (a == null && b != null) return -1; + if (a != null && b == null) return +1; + if (a == null && b == null) return 0; + return a.compareTo(b); + } + + public int compareTo(ImportEdge other) { + int cmp = compare(top, other.top); + return cmp != 0 ? cmp : compare(bottom, other.bottom); + } + + public Edge getPeer() { + if (peer == null) { + Session session = ImporterSession.getInstance().getDatabaseSession(); + Query query = session.createQuery( + "from Edge where top=:top and bottom=:bottom"); + query.setParameter("top", top); + query.setParameter("bottom", bottom); + List<Edge> edges = query.list(); + if (edges.isEmpty()) { + peer = new Edge(top, bottom); + session.save(peer); + } + else { + peer = edges.get(0); + } + } + return peer; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :