annotate backend/src/main/java/org/dive4elements/river/importer/ImportOfficialLine.java @ 6344:bc28de00e423

Backend: Added importer model for official lines.
author Sascha L. Teichmann <teichmann@intevation.de>
date Fri, 14 Jun 2013 17:56:52 +0200
parents
children 75c483450c96
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
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
35 public OfficialLine getPeer(River river) {
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
36 if (peer == null) {
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
37 // 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
38 // 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
39 Session session = ImporterSession.getInstance().getDatabaseSession();
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
40 NamedMainValue nmv = NamedMainValue.fetchByName(name, session);
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
41 if (nmv == null) {
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
42 // failed -> failed to create OfficialLine
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
43 return null;
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
44 }
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
45 WstColumn wc = wstColumn.getPeer(river);
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
46 Query query = session.createQuery(
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
47 "from OfficialLine " +
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
48 "where namedMainValue = :nmv and wstColumn = :wc");
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
49 query.setParameter("nmv", nmv);
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
50 query.setParameter("wc", wc);
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
51 List<OfficialLine> lines = query.list();
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
52 if (lines.isEmpty()) {
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
53 peer = new OfficialLine(wc, nmv);
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
54 session.save(peer);
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
55 }
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
56 else {
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
57 peer = lines.get(0);
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
58 }
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
59
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
60 }
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
61 return peer;
bc28de00e423 Backend: Added importer model for official lines.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
62 }
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 // 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
65

http://dive4elements.wald.intevation.org