Mercurial > dive4elements > river
comparison backend/src/main/java/org/dive4elements/river/importer/ImportSedimentLoadLS.java @ 8031:6954ac9b7591
Renamed ImportSedimentYield to ImportSedimentLoadLS.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Fri, 11 Jul 2014 13:10:05 +0200 |
parents | |
children | fd3a24336e6a |
comparison
equal
deleted
inserted
replaced
8030:fac1aa67931b | 8031:6954ac9b7591 |
---|---|
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde | |
2 * Software engineering by Intevation GmbH | |
3 * | |
4 * This file is Free Software under the GNU AGPL (>=v3) | |
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the | |
6 * documentation coming with Dive4Elements River for details. | |
7 */ | |
8 | |
9 package org.dive4elements.river.importer; | |
10 | |
11 import java.util.ArrayList; | |
12 import java.util.List; | |
13 | |
14 import org.apache.log4j.Logger; | |
15 | |
16 import org.hibernate.Session; | |
17 import org.hibernate.Query; | |
18 | |
19 import org.dive4elements.river.model.GrainFraction; | |
20 import org.dive4elements.river.model.River; | |
21 import org.dive4elements.river.model.SedimentLoadLS; | |
22 import org.dive4elements.river.model.TimeInterval; | |
23 import org.dive4elements.river.model.Unit; | |
24 | |
25 | |
26 public class ImportSedimentLoadLS { | |
27 | |
28 private static Logger log = Logger.getLogger(ImportSedimentLoadLS.class); | |
29 | |
30 private ImportGrainFraction grainFraction; | |
31 | |
32 private ImportUnit unit; | |
33 | |
34 private ImportTimeInterval timeInterval; | |
35 | |
36 private String description; | |
37 | |
38 private Integer kind; | |
39 | |
40 private List<ImportSedimentLoadLSValue> values; | |
41 | |
42 private SedimentLoadLS peer; | |
43 | |
44 public ImportSedimentLoadLS(String description) { | |
45 this.values = new ArrayList<ImportSedimentLoadLSValue>(); | |
46 this.description = description; | |
47 } | |
48 | |
49 public void setTimeInterval(ImportTimeInterval timeInterval) { | |
50 this.timeInterval = timeInterval; | |
51 } | |
52 | |
53 public void setUnit(ImportUnit unit) { | |
54 this.unit = unit; | |
55 } | |
56 | |
57 public void setGrainFraction(ImportGrainFraction grainFraction) { | |
58 this.grainFraction = grainFraction; | |
59 } | |
60 | |
61 public void setKind(Integer kind) { | |
62 this.kind = kind; | |
63 } | |
64 | |
65 public void addValue(ImportSedimentLoadLSValue value) { | |
66 this.values.add(value); | |
67 } | |
68 | |
69 public void storeDependencies(River river) { | |
70 log.debug("store dependencies"); | |
71 | |
72 if (grainFraction != null) { | |
73 grainFraction.storeDependencies(); | |
74 } | |
75 | |
76 SedimentLoadLS peer = getPeer(river); | |
77 | |
78 if (peer != null) { | |
79 int i = 0; | |
80 | |
81 for (ImportSedimentLoadLSValue value : values) { | |
82 value.storeDependencies(peer); | |
83 i++; | |
84 } | |
85 | |
86 log.info("stored " + i + " sediment yield values."); | |
87 } | |
88 } | |
89 | |
90 public SedimentLoadLS getPeer(River river) { | |
91 log.debug("get peer"); | |
92 | |
93 GrainFraction gf = grainFraction != null ? grainFraction.getPeer() | |
94 : null; | |
95 | |
96 Unit u = unit != null ? unit.getPeer() : null; | |
97 | |
98 TimeInterval ti = timeInterval != null ? timeInterval.getPeer() : null; | |
99 | |
100 if (ti == null || u == null) { | |
101 log.warn("Skip invalid SedimentYield: time interval or unit null!"); | |
102 return null; | |
103 } | |
104 | |
105 if (peer == null) { | |
106 Session session = ImporterSession.getInstance() | |
107 .getDatabaseSession(); | |
108 Query query = session.createQuery("from SedimentYield where " | |
109 + " river=:river and " | |
110 + " grainFraction=:grainFraction and " + " unit=:unit and " | |
111 + " timeInterval=:timeInterval and " | |
112 + " description=:description"); | |
113 | |
114 query.setParameter("river", river); | |
115 query.setParameter("grainFraction", gf); | |
116 query.setParameter("unit", u); | |
117 query.setParameter("timeInterval", ti); | |
118 query.setParameter("description", description); | |
119 | |
120 List<SedimentLoadLS> yields = query.list(); | |
121 if (yields.isEmpty()) { | |
122 log.debug("create new SedimentYield"); | |
123 | |
124 peer = new SedimentLoadLS(river, u, ti, gf, description); | |
125 peer.setKind(this.kind); | |
126 session.save(peer); | |
127 } | |
128 else { | |
129 peer = yields.get(0); | |
130 } | |
131 } | |
132 | |
133 return peer; | |
134 } | |
135 } | |
136 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |