annotate backend/src/main/java/org/dive4elements/river/importer/ImportOfficialLine.java @ 6955:94cb1845c667

(issue1452) Coalesce to zero to avoid NaN arithmetic.
author Andre Heinecke <aheinecke@intevation.de>
date Fri, 30 Aug 2013 15:45:14 +0200
parents 75c483450c96
children 5910ada51a9f
rev   line source
6344
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
2 * Software engineering by Intevation GmbH
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
3 *
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
6 * documentation coming with Dive4Elements River for details.
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
7 */
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
8
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
9 package org.dive4elements.river.importer;
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
10
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
11 import java.util.List;
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
12
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
13 import org.dive4elements.river.model.NamedMainValue;
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
14 import org.dive4elements.river.model.OfficialLine;
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
15 import org.dive4elements.river.model.River;
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
16 import org.dive4elements.river.model.WstColumn;
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
17 import org.hibernate.Query;
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
18 import org.hibernate.Session;
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
19
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
20 public class ImportOfficialLine
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
21 {
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
22 protected String name;
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
23 protected ImportWstColumn wstColumn;
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
24
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
25 protected OfficialLine peer;
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
26
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
27 public ImportOfficialLine() {
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
28 }
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
29
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
30 public ImportOfficialLine(String name, ImportWstColumn wstColumn) {
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
31 this.name = name;
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
32 this.wstColumn = wstColumn;
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
33 }
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
34
6347
75c483450c96 Backend: Store official lines from config if they are any.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6344
diff changeset
35 public String getName() {
75c483450c96 Backend: Store official lines from config if they are any.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6344
diff changeset
36 return name;
75c483450c96 Backend: Store official lines from config if they are any.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6344
diff changeset
37 }
75c483450c96 Backend: Store official lines from config if they are any.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6344
diff changeset
38
75c483450c96 Backend: Store official lines from config if they are any.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6344
diff changeset
39 public void setName(String name) {
75c483450c96 Backend: Store official lines from config if they are any.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6344
diff changeset
40 this.name = name;
75c483450c96 Backend: Store official lines from config if they are any.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6344
diff changeset
41 }
75c483450c96 Backend: Store official lines from config if they are any.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6344
diff changeset
42
6344
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
43 public OfficialLine getPeer(River river) {
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
44 if (peer == null) {
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
45 // XXX: This is a bit odd. We do not have not enough infos here
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
46 // to create a new NamedMainValue. So we just look for existing ones.
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
47 Session session = ImporterSession.getInstance().getDatabaseSession();
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
48 NamedMainValue nmv = NamedMainValue.fetchByName(name, session);
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
49 if (nmv == null) {
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
50 // failed -> failed to create OfficialLine
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
51 return null;
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
52 }
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
53 WstColumn wc = wstColumn.getPeer(river);
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
54 Query query = session.createQuery(
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
55 "from OfficialLine " +
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
56 "where namedMainValue = :nmv and wstColumn = :wc");
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
57 query.setParameter("nmv", nmv);
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
58 query.setParameter("wc", wc);
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
59 List<OfficialLine> lines = query.list();
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
60 if (lines.isEmpty()) {
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
61 peer = new OfficialLine(wc, nmv);
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
62 session.save(peer);
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
63 }
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
64 else {
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
65 peer = lines.get(0);
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
66 }
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
67
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
68 }
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
69 return peer;
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
70 }
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
71 }
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
72 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
73

http://dive4elements.wald.intevation.org