Mercurial > dive4elements > river
view 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 source
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> { protected ImportAttribute attribute; protected ImportPosition position; protected ImportRange range; protected Annotation peer; public ImportAnnotation() { } public ImportAnnotation( ImportAttribute attribute, ImportPosition position, ImportRange range ) { this.attribute = attribute; this.position = position; this.range = range; } public int compareTo(ImportAnnotation other) { int d = attribute.compareTo(other.attribute); if (d != 0) { return d; } if ((d = position.compareTo(other.position)) != 0) { return d; } if ((d = range.compareTo(other.range)) != 0) { return d; } return 0; } public ImportAttribute getAttribute() { return attribute; } public void setAttribute(ImportAttribute attribute) { this.attribute = attribute; } public ImportPosition getPosition() { return position; } public void setPosition(ImportPosition position) { this.position = position; } public ImportRange getRange() { return range; } 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 :