Mercurial > dive4elements > river
diff flys-backend/src/main/java/de/intevation/flys/importer/ImportAnnotation.java @ 188:003ac16812dd
Store annotations in backend.
flys-backend/trunk@1518 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Fri, 18 Mar 2011 12:10:33 +0000 |
parents | cf8cbcb6a10d |
children | 67fd63e4ef66 |
line wrap: on
line diff
--- a/flys-backend/src/main/java/de/intevation/flys/importer/ImportAnnotation.java Thu Mar 17 18:07:13 2011 +0000 +++ b/flys-backend/src/main/java/de/intevation/flys/importer/ImportAnnotation.java Fri Mar 18 12:10:33 2011 +0000 @@ -1,5 +1,16 @@ package de.intevation.flys.importer; +import de.intevation.flys.model.Annotation; +import de.intevation.flys.model.Range; +import de.intevation.flys.model.Position; +import de.intevation.flys.model.Attribute; +import de.intevation.flys.model.River; + +import org.hibernate.Session; +import org.hibernate.Query; + +import java.util.List; + public class ImportAnnotation implements Comparable<ImportAnnotation> { @@ -7,6 +18,8 @@ protected ImportPosition position; protected ImportRange range; + protected Annotation peer; + public ImportAnnotation() { } @@ -60,5 +73,29 @@ public void setRange(ImportRange range) { this.range = range; } + + public Annotation getPeer(River river) { + if (peer == null) { + Range r = range.getPeer(river); + Attribute a = attribute.getPeer(); + Position p = position.getPeer(); + Session session = Importer.sessionHolder.get(); + Query query = session.createQuery( + "from Annotation where " + + "range=:range and attribute=:attribute and position=:position"); + query.setParameter("range", r); + query.setParameter("attribute", a); + query.setParameter("position", p); + List<Annotation> annotations = query.list(); + if (annotations.isEmpty()) { + peer = new Annotation(r, a, p); + session.save(peer); + } + else { + peer = annotations.get(0); + } + } + return peer; + } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :