Mercurial > dive4elements > river
comparison flys-backend/src/main/java/de/intevation/flys/importer/ImportWaterlevelDifferenceColumn.java @ 2850:a1402c16152f
Added a parser and importer classes used to import waterlevel differences.
flys-backend/trunk@4304 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Thu, 26 Apr 2012 09:46:32 +0000 |
parents | |
children | ed13816047b3 |
comparison
equal
deleted
inserted
replaced
2849:c36106f15ac9 | 2850:a1402c16152f |
---|---|
1 package de.intevation.flys.importer; | |
2 | |
3 import java.util.ArrayList; | |
4 import java.util.List; | |
5 | |
6 import org.apache.log4j.Logger; | |
7 | |
8 import org.hibernate.Session; | |
9 import org.hibernate.Query; | |
10 | |
11 import de.intevation.flys.model.River; | |
12 import de.intevation.flys.model.WaterlevelDifference; | |
13 import de.intevation.flys.model.WaterlevelDifferenceColumn; | |
14 | |
15 | |
16 public class ImportWaterlevelDifferenceColumn { | |
17 | |
18 private static final Logger log = | |
19 Logger.getLogger(ImportWaterlevelDifferenceColumn.class); | |
20 | |
21 | |
22 private String description; | |
23 | |
24 private List<ImportWaterlevelDifferenceValue> values; | |
25 | |
26 private WaterlevelDifferenceColumn peer; | |
27 | |
28 | |
29 public ImportWaterlevelDifferenceColumn(String description) { | |
30 this.values = new ArrayList<ImportWaterlevelDifferenceValue>(); | |
31 | |
32 this.description = description; | |
33 } | |
34 | |
35 | |
36 public void addValue(ImportWaterlevelDifferenceValue value) { | |
37 this.values.add(value); | |
38 } | |
39 | |
40 | |
41 public void storeDependencies(WaterlevelDifference difference) { | |
42 log.info("store dependencies"); | |
43 | |
44 WaterlevelDifferenceColumn peer = getPeer(difference); | |
45 | |
46 int i = 0; | |
47 | |
48 for (ImportWaterlevelDifferenceValue value: values) { | |
49 value.storeDependencies(peer); | |
50 i++; | |
51 } | |
52 | |
53 log.info("stored " + i + " waterlevel difference values"); | |
54 } | |
55 | |
56 | |
57 public WaterlevelDifferenceColumn getPeer(WaterlevelDifference diff) { | |
58 if (peer == null) { | |
59 Session session = ImporterSession.getInstance().getDatabaseSession(); | |
60 Query query = session.createQuery( | |
61 "from WaterlevelDifferenceColumn where " + | |
62 " difference=:difference and " + | |
63 " description=:description" | |
64 ); | |
65 | |
66 query.setParameter("difference", diff); | |
67 query.setParameter("description", description); | |
68 | |
69 List<WaterlevelDifferenceColumn> cols = query.list(); | |
70 if (cols.isEmpty()) { | |
71 peer = new WaterlevelDifferenceColumn(diff, description); | |
72 session.save(peer); | |
73 } | |
74 else { | |
75 peer = cols.get(0); | |
76 } | |
77 } | |
78 | |
79 return peer; | |
80 } | |
81 } | |
82 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |