Mercurial > dive4elements > river
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 : |