comparison 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
comparison
equal deleted inserted replaced
187:ecf90018563b 188:003ac16812dd
1 package de.intevation.flys.importer; 1 package de.intevation.flys.importer;
2
3 import de.intevation.flys.model.Annotation;
4 import de.intevation.flys.model.Range;
5 import de.intevation.flys.model.Position;
6 import de.intevation.flys.model.Attribute;
7 import de.intevation.flys.model.River;
8
9 import org.hibernate.Session;
10 import org.hibernate.Query;
11
12 import java.util.List;
2 13
3 public class ImportAnnotation 14 public class ImportAnnotation
4 implements Comparable<ImportAnnotation> 15 implements Comparable<ImportAnnotation>
5 { 16 {
6 protected ImportAttribute attribute; 17 protected ImportAttribute attribute;
7 protected ImportPosition position; 18 protected ImportPosition position;
8 protected ImportRange range; 19 protected ImportRange range;
20
21 protected Annotation peer;
9 22
10 public ImportAnnotation() { 23 public ImportAnnotation() {
11 } 24 }
12 25
13 public ImportAnnotation( 26 public ImportAnnotation(
58 } 71 }
59 72
60 public void setRange(ImportRange range) { 73 public void setRange(ImportRange range) {
61 this.range = range; 74 this.range = range;
62 } 75 }
76
77 public Annotation getPeer(River river) {
78 if (peer == null) {
79 Range r = range.getPeer(river);
80 Attribute a = attribute.getPeer();
81 Position p = position.getPeer();
82 Session session = Importer.sessionHolder.get();
83 Query query = session.createQuery(
84 "from Annotation where " +
85 "range=:range and attribute=:attribute and position=:position");
86 query.setParameter("range", r);
87 query.setParameter("attribute", a);
88 query.setParameter("position", p);
89 List<Annotation> annotations = query.list();
90 if (annotations.isEmpty()) {
91 peer = new Annotation(r, a, p);
92 session.save(peer);
93 }
94 else {
95 peer = annotations.get(0);
96 }
97 }
98 return peer;
99 }
63 } 100 }
64 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : 101 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org