annotate flys-artifacts/src/main/java/de/intevation/flys/artifacts/datacage/Datacage.java @ 992:5b467bc27eda

Datacage: Store facets of outs into datacage db at initial scan. flys-artifacts/trunk@2424 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Fri, 29 Jul 2011 13:29:29 +0000
parents c675b4a87201
children aabcca7aeb6c
rev   line source
982
66b3f2f064de Added the datacage as lifetime listener to the artifact database to create the initial index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.artifacts.datacage;
66b3f2f064de Added the datacage as lifetime listener to the artifact database to create the initial index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
2
990
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
3 import java.util.Collection;
991
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
4 import java.util.List;
990
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
5
984
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
6 import java.sql.SQLException;
991
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
7 import java.sql.PreparedStatement;
990
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
8 import java.sql.Types;
984
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
9
982
66b3f2f064de Added the datacage as lifetime listener to the artifact database to create the initial index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
10 import de.intevation.artifacts.GlobalContext;
66b3f2f064de Added the datacage as lifetime listener to the artifact database to create the initial index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
11
983
4ea5f5a2284e Ajusted datacage to use the SQL infrastructure from the artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 982
diff changeset
12 import de.intevation.artifactdatabase.db.SQL;
4ea5f5a2284e Ajusted datacage to use the SQL infrastructure from the artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 982
diff changeset
13 import de.intevation.artifactdatabase.db.SQLExecutor;
4ea5f5a2284e Ajusted datacage to use the SQL infrastructure from the artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 982
diff changeset
14
982
66b3f2f064de Added the datacage as lifetime listener to the artifact database to create the initial index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
15 import de.intevation.artifactdatabase.LifetimeListener;
66b3f2f064de Added the datacage as lifetime listener to the artifact database to create the initial index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
16
990
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
17 import de.intevation.artifactdatabase.data.StateData;
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
18
991
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
19 import de.intevation.artifactdatabase.state.Output;
992
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
20 import de.intevation.artifactdatabase.state.Facet;
991
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
21
984
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
22 import de.intevation.artifacts.Artifact;
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
23 import de.intevation.artifacts.ArtifactDatabase;
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
24 import de.intevation.artifacts.ArtifactDatabaseException;
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
25
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
26 import de.intevation.flys.artifacts.FLYSArtifact;
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
27
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
28 import de.intevation.artifacts.common.utils.LRUCache;
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
29
982
66b3f2f064de Added the datacage as lifetime listener to the artifact database to create the initial index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
30 import org.apache.log4j.Logger;
66b3f2f064de Added the datacage as lifetime listener to the artifact database to create the initial index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
31
66b3f2f064de Added the datacage as lifetime listener to the artifact database to create the initial index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
32 import org.w3c.dom.Document;
66b3f2f064de Added the datacage as lifetime listener to the artifact database to create the initial index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
33
66b3f2f064de Added the datacage as lifetime listener to the artifact database to create the initial index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
34 public class Datacage
66b3f2f064de Added the datacage as lifetime listener to the artifact database to create the initial index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
35 implements LifetimeListener
66b3f2f064de Added the datacage as lifetime listener to the artifact database to create the initial index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
36 {
66b3f2f064de Added the datacage as lifetime listener to the artifact database to create the initial index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
37 private static Logger log = Logger.getLogger(Datacage.class);
66b3f2f064de Added the datacage as lifetime listener to the artifact database to create the initial index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
38
984
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
39 public static final String ARTEFACT_DATABASE_KEY =
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
40 "global.artifact.database";
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
41
987
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
42 private String SQL_DELETE_ALL_USERS = "delete.all.users";
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
43 private String SQL_USER_ID_NEXTVAL = "user.id.nextval";
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
44 private String SQL_USER_BY_GID = "user.by.gid";
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
45 private String SQL_INSERT_USER = "insert.user";
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
46 private String SQL_COLLECTION_BY_GID = "collection.by.gid";
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
47 private String SQL_COLLECTION_ID_NEXTVAL = "collection.id.nextval";
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
48 private String SQL_INSERT_COLLECTION = "insert.collection";
988
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
49 private String SQL_ARTIFACT_BY_GID = "artifact.by.gid";
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
50 private String SQL_COLLECTION_ITEM_ID_NEXTVAL =
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
51 "collection.item.id.nextval";
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
52 private String SQL_INSERT_COLLECTION_ITEM = "insert.collection.item";
989
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
53 private String SQL_ARTIFACT_ID_NEXTVAL = "artifact.id.nextval";
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
54 private String SQL_INSERT_ARTIFACT = "insert.artifact";
991
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
55 private String SQL_ARTIFACT_DATA_ID_NEXTVAL = "artifact.data.id.nextval";
990
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
56 private String SQL_INSERT_ARTIFACT_DATA = "insert.artifact.data";
991
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
57 private String SQL_OUT_ID_NEXTVALUE = "out.id.nextval";
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
58 private String SQL_INSERT_OUT = "insert.out";
992
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
59 private String SQL_FACET_ID_NEXTVAL = "facet.id.nextval";
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
60 private String SQL_INSERT_FACET = "insert.facet";
984
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
61
983
4ea5f5a2284e Ajusted datacage to use the SQL infrastructure from the artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 982
diff changeset
62 protected SQLExecutor sqlExecutor;
4ea5f5a2284e Ajusted datacage to use the SQL infrastructure from the artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 982
diff changeset
63
984
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
64 public class InitialScan
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
65 implements ArtifactDatabase.ArtifactLoadedCallback
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
66 {
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
67 protected LRUCache<String, Integer> users;
986
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
68 protected LRUCache<String, Integer> collections;
988
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
69 protected LRUCache<String, Integer> artifacts;
984
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
70
991
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
71 protected GlobalContext context;
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
72
984
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
73 public InitialScan() {
986
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
74 users = new LRUCache<String, Integer>();
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
75 collections = new LRUCache<String, Integer>();
988
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
76 artifacts = new LRUCache<String, Integer>();
984
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
77 }
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
78
991
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
79 public InitialScan(GlobalContext context) {
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
80 this();
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
81 this.context = context;
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
82 }
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
83
984
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
84 @Override
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
85 public void artifactLoaded(
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
86 String userId,
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
87 String collectionId,
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
88 String artifactId,
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
89 Artifact artifact
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
90 ) {
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
91 if (!(artifact instanceof FLYSArtifact)) {
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
92 log.warn("ignoring none FLYS artifacts");
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
93 return;
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
94 }
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
95
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
96 FLYSArtifact flysArtifact = (FLYSArtifact)artifact;
986
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
97
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
98 Integer uId = getUserId(userId);
987
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
99 // TODO: We need the name of the collection
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
100 Integer cId = getCollectionId(collectionId, uId, "XXX");
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
101
988
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
102 storeArtifact(artifactId, cId, flysArtifact);
984
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
103 }
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
104
987
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
105 protected Integer getId(
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
106 LRUCache<String, Integer> cache,
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
107 final String idString,
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
108 final String selectById
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
109 ) {
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
110 Integer id = cache.get(idString);
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
111 if (id != null) {
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
112 return id;
986
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
113 }
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
114
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
115 final Integer [] res = new Integer[1];
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
116
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
117 SQLExecutor.Instance exec = sqlExecutor.new Instance() {
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
118 @Override
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
119 public boolean doIt() throws SQLException {
987
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
120 prepareStatement(selectById);
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
121 stmnt.setString(1, idString);
986
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
122 result = stmnt.executeQuery();
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
123 if (!result.next()) {
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
124 return false;
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
125 }
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
126 res[0] = result.getInt(1);
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
127 return true;
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
128 }
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
129 };
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
130
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
131 if (exec.runRead()) {
987
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
132 cache.put(idString, res[0]);
986
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
133 return res[0];
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
134 }
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
135
987
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
136 return null;
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
137 }
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
138
988
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
139 protected void storeArtifact(
989
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
140 final String artifactId,
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
141 Integer collectionId,
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
142 final FLYSArtifact artifact
988
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
143 ) {
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
144 Integer aId = getId(artifacts, artifactId, SQL_ARTIFACT_BY_GID);
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
145
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
146 if (aId != null) {
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
147 // We've already stored it. Just create the collection item.
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
148 storeCollectionItem(collectionId, aId);
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
149 return;
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
150 }
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
151 // We need to write it to database
989
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
152
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
153 final Integer [] res = new Integer[1];
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
154
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
155 SQLExecutor.Instance exec = sqlExecutor.new Instance() {
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
156 @Override
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
157 public boolean doIt() throws SQLException {
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
158 prepareStatement(SQL_ARTIFACT_ID_NEXTVAL);
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
159 result = stmnt.executeQuery();
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
160 if (!result.next()) {
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
161 return false;
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
162 }
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
163 res[0] = result.getInt(1);
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
164 reset();
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
165 prepareStatement(SQL_INSERT_ARTIFACT);
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
166 stmnt.setInt (1, res[0]);
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
167 stmnt.setString(2, artifactId);
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
168 stmnt.setString(3, artifact.getCurrentStateId());
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
169 stmnt.execute();
990
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
170 conn.commit();
989
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
171 return true;
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
172 }
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
173 };
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
174
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
175 if (!exec.runWrite()) {
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
176 log.error("storing of artifact failed.");
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
177 return;
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
178 }
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
179
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
180 artifacts.put(artifactId, aId = res[0]);
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
181
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
182 storeCollectionItem(collectionId, aId);
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
183
990
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
184 storeData(aId, artifact);
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
185
991
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
186 storeOuts(aId, artifact);
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
187 }
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
188
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
189 protected void storeOuts(
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
190 final int artifactId,
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
191 final FLYSArtifact artifact
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
192 ) {
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
193 final List<Output> outs = artifact.getCurrentOutputs(context);
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
194
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
195 if (outs.isEmpty()) {
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
196 return;
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
197 }
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
198
992
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
199 final int [] outIds = new int[outs.size()];
991
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
200
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
201 SQLExecutor.Instance exec = sqlExecutor.new Instance() {
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
202 @Override
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
203 public boolean doIt() throws SQLException {
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
204 prepareStatement(SQL_OUT_ID_NEXTVALUE);
992
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
205 for (int i = 0; i < outIds.length; ++i) {
991
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
206 result = stmnt.executeQuery();
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
207 if (!result.next()) {
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
208 log.error("generation of out ids failed");
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
209 return false;
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
210 }
992
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
211 outIds[i] = result.getInt(1);
991
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
212 result.close(); result = null;
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
213 }
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
214 reset();
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
215 prepareStatement(SQL_INSERT_OUT);
992
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
216 for (int i = 0; i < outIds.length; ++i) {
991
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
217 Output out = outs.get(i);
992
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
218 stmnt.setInt(1, outIds[i]);
991
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
219 stmnt.setInt(2, artifactId);
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
220 stmnt.setString(3, out.getName());
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
221 setString(stmnt, 4, out.getDescription());
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
222 setString(stmnt, 5, out.getType());
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
223 stmnt.execute();
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
224 }
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
225 conn.commit();
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
226 return true;
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
227 }
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
228 };
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
229
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
230 if (!exec.runWrite()) {
992
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
231 log.error("storing artifact outs failed");
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
232 return;
991
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
233 }
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
234
992
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
235 final int FACETS = numFacets(outs);
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
236
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
237 if (FACETS == 0) {
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
238 return;
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
239 }
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
240
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
241 exec = sqlExecutor.new Instance() {
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
242 @Override
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
243 public boolean doIt() throws SQLException {
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
244 int [] facetIds = new int[FACETS];
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
245 prepareStatement(SQL_FACET_ID_NEXTVAL);
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
246 for (int i = 0; i < facetIds.length; ++i) {
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
247 result = stmnt.executeQuery();
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
248 if (!result.next()) {
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
249 log.error("generation of facet ids failed");
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
250 return false;
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
251 }
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
252 facetIds[i] = result.getInt(1);
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
253 result.close(); result = null;
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
254 }
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
255 reset();
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
256 prepareStatement(SQL_INSERT_FACET);
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
257 int index = 0;
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
258 for (int i = 0, N = outs.size(); i < N; ++i) {
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
259 Output out = outs.get(i);
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
260 int outId = outIds[i];
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
261 for (Facet facet: out.getFacets()) {
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
262 stmnt.setInt(1, facetIds[index]);
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
263 stmnt.setInt(2, outId);
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
264 stmnt.setString(3, facet.getName());
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
265 stmnt.setInt(4, facet.getIndex());
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
266 stmnt.setString(5, "XXX"); // TODO: handle states
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
267 setString(stmnt, 6, facet.getDescription());
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
268 stmnt.execute();
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
269 ++index;
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
270 }
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
271 }
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
272 conn.commit();
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
273 return true;
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
274 }
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
275 };
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
276
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
277 if (!exec.runWrite()) {
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
278 log.error("storing facets failed");
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
279 }
988
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
280 }
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
281
990
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
282 protected void storeData(
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
283 final int artifactId,
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
284 FLYSArtifact artifact
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
285 ) {
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
286 final Collection<StateData> data = artifact.getAllData();
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
287
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
288 if (data.isEmpty()) {
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
289 return;
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
290 }
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
291
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
292 SQLExecutor.Instance exec = sqlExecutor.new Instance() {
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
293 @Override
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
294 public boolean doIt() throws SQLException {
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
295 int [] ids = new int[data.size()];
991
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
296 prepareStatement(SQL_ARTIFACT_DATA_ID_NEXTVAL);
990
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
297
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
298 for (int i = 0; i < ids.length; ++i) {
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
299 result = stmnt.executeQuery();
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
300 if (!result.next()) {
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
301 log.error("generating id for artifact data failed");
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
302 return false;
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
303 }
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
304 ids[i] = result.getInt(1);
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
305 result.close(); result = null;
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
306 }
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
307 reset();
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
308 prepareStatement(SQL_INSERT_ARTIFACT_DATA);
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
309
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
310 int i = 0;
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
311 for (StateData sd: data) {
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
312 int id = ids[i++];
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
313 stmnt.setInt(1, id);
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
314 stmnt.setInt(2, artifactId);
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
315 stmnt.setString(3, sd.getType());
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
316 stmnt.setString(4, sd.getName());
991
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
317 setString(stmnt, 5, sd);
990
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
318 stmnt.execute();
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
319 }
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
320
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
321 conn.commit();
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
322 return true;
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
323 }
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
324 };
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
325
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
326 if (!exec.runWrite()) {
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
327 log.error("storing artifact data failed");
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
328 }
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
329 }
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
330
988
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
331 protected void storeCollectionItem(
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
332 final Integer collectionId,
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
333 final Integer artifactId
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
334 ) {
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
335 SQLExecutor.Instance exec = sqlExecutor.new Instance() {
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
336 @Override
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
337 public boolean doIt() throws SQLException {
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
338 prepareStatement(SQL_COLLECTION_ITEM_ID_NEXTVAL);
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
339 result = stmnt.executeQuery();
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
340 if (!result.next()) {
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
341 return false;
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
342 }
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
343 int ciId = result.getInt(1);
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
344 reset();
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
345 prepareStatement(SQL_INSERT_COLLECTION_ITEM);
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
346 stmnt.setInt(1, ciId);
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
347 stmnt.setInt(2, collectionId);
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
348 stmnt.setInt(3, artifactId);
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
349 stmnt.execute();
990
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
350 conn.commit();
988
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
351 return true;
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
352 }
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
353 };
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
354
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
355 if (!exec.runWrite()) {
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
356 log.error("storing of collection item failed.");
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
357 }
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
358 }
987
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
359
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
360 protected Integer getCollectionId(
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
361 final String collectionId,
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
362 final Integer ownerId,
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
363 final String collectionName
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
364 ) {
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
365 Integer c = getId(collections, collectionId, SQL_COLLECTION_BY_GID);
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
366
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
367 if (c != null) {
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
368 return c;
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
369 }
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
370
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
371 final Integer [] res = new Integer[1];
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
372
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
373 SQLExecutor.Instance exec = sqlExecutor.new Instance() {
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
374 @Override
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
375 public boolean doIt() throws SQLException {
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
376 prepareStatement(SQL_COLLECTION_ID_NEXTVAL);
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
377 result = stmnt.executeQuery();
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
378 if (!result.next()) {
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
379 return false;
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
380 }
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
381 res[0] = result.getInt(1);
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
382 reset();
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
383 prepareStatement(SQL_INSERT_COLLECTION);
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
384 stmnt.setInt (1, res[0]);
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
385 stmnt.setString(2, collectionId);
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
386 stmnt.setInt (3, ownerId);
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
387 stmnt.setString(4, collectionName);
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
388 stmnt.execute();
990
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
389 conn.commit();
987
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
390 return true;
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
391 }
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
392 };
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
393
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
394 if (exec.runWrite()) {
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
395 collections.put(collectionId, res[0]);
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
396 return res[0];
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
397 }
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
398
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
399 return null;
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
400 }
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
401
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
402 protected Integer getUserId(final String userId) {
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
403
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
404 Integer u = getId(users, userId, SQL_USER_BY_GID);
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
405
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
406 if (u != null) {
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
407 return u;
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
408 }
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
409
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
410 final Integer [] res = new Integer[1];
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
411
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
412 SQLExecutor.Instance exec = sqlExecutor.new Instance() {
986
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
413 @Override
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
414 public boolean doIt() throws SQLException {
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
415 prepareStatement(SQL_USER_ID_NEXTVAL);
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
416 result = stmnt.executeQuery();
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
417 if (!result.next()) {
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
418 return false;
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
419 }
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
420 res[0] = result.getInt(1);
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
421 reset();
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
422 prepareStatement(SQL_INSERT_USER);
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
423 stmnt.setInt (1, res[0]);
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
424 stmnt.setString(2, userId);
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
425 stmnt.execute();
990
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
426 conn.commit();
986
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
427 return true;
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
428 }
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
429 };
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
430
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
431 if (exec.runWrite()) {
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
432 users.put(userId, res[0]);
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
433 return res[0];
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
434 }
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
435
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
436 return null;
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
437 }
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
438
984
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
439 public boolean scan(ArtifactDatabase adb) {
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
440 try {
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
441 adb.loadAllArtifacts(this);
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
442 }
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
443 catch (ArtifactDatabaseException ade) {
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
444 log.error(ade);
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
445 return false;
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
446 }
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
447 return true;
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
448 }
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
449 } // class InitialScan
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
450
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
451
982
66b3f2f064de Added the datacage as lifetime listener to the artifact database to create the initial index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
452 public Datacage() {
66b3f2f064de Added the datacage as lifetime listener to the artifact database to create the initial index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
453 }
66b3f2f064de Added the datacage as lifetime listener to the artifact database to create the initial index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
454
66b3f2f064de Added the datacage as lifetime listener to the artifact database to create the initial index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
455 @Override
66b3f2f064de Added the datacage as lifetime listener to the artifact database to create the initial index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
456 public void setup(Document document) {
66b3f2f064de Added the datacage as lifetime listener to the artifact database to create the initial index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
457 log.debug("setup");
983
4ea5f5a2284e Ajusted datacage to use the SQL infrastructure from the artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 982
diff changeset
458 DBConfig config = DBConfig.getInstance();
4ea5f5a2284e Ajusted datacage to use the SQL infrastructure from the artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 982
diff changeset
459 setupSQL(config.getSQL());
4ea5f5a2284e Ajusted datacage to use the SQL infrastructure from the artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 982
diff changeset
460 sqlExecutor = new SQLExecutor(config.getDBConnection());
4ea5f5a2284e Ajusted datacage to use the SQL infrastructure from the artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 982
diff changeset
461 }
4ea5f5a2284e Ajusted datacage to use the SQL infrastructure from the artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 982
diff changeset
462
4ea5f5a2284e Ajusted datacage to use the SQL infrastructure from the artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 982
diff changeset
463 protected void setupSQL(SQL sql) {
987
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
464 SQL_DELETE_ALL_USERS = sql.get(SQL_DELETE_ALL_USERS);
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
465 SQL_USER_ID_NEXTVAL = sql.get(SQL_USER_ID_NEXTVAL);
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
466 SQL_USER_BY_GID = sql.get(SQL_USER_BY_GID);
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
467 SQL_INSERT_USER = sql.get(SQL_INSERT_USER);
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
468 SQL_COLLECTION_BY_GID = sql.get(SQL_COLLECTION_BY_GID);
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
469 SQL_COLLECTION_ID_NEXTVAL = sql.get(SQL_COLLECTION_ID_NEXTVAL);
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
470 SQL_INSERT_COLLECTION = sql.get(SQL_INSERT_COLLECTION);
988
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
471 SQL_ARTIFACT_BY_GID = sql.get(SQL_ARTIFACT_BY_GID);
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
472 SQL_COLLECTION_ITEM_ID_NEXTVAL =
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
473 sql.get(SQL_COLLECTION_ITEM_ID_NEXTVAL);
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
474 SQL_INSERT_COLLECTION_ITEM =
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
475 sql.get(SQL_INSERT_COLLECTION_ITEM);
989
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
476 SQL_ARTIFACT_ID_NEXTVAL = sql.get(SQL_ARTIFACT_ID_NEXTVAL);
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
477 SQL_INSERT_ARTIFACT = sql.get(SQL_INSERT_ARTIFACT);
991
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
478 SQL_ARTIFACT_DATA_ID_NEXTVAL = sql.get(SQL_ARTIFACT_DATA_ID_NEXTVAL);
990
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
479 SQL_INSERT_ARTIFACT_DATA = sql.get(SQL_INSERT_ARTIFACT_DATA);
991
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
480 SQL_OUT_ID_NEXTVALUE = sql.get(SQL_OUT_ID_NEXTVALUE);
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
481 SQL_INSERT_OUT = sql.get(SQL_INSERT_OUT);
992
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
482 SQL_FACET_ID_NEXTVAL = sql.get(SQL_FACET_ID_NEXTVAL);
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
483 SQL_INSERT_FACET = sql.get(SQL_INSERT_FACET);
991
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
484 }
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
485
992
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
486 protected static final int numFacets(List<Output> outs) {
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
487 int sum = 0;
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
488 for (Output out: outs) {
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
489 sum += out.getFacets().size();
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
490 }
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
491 return sum;
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
492 }
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
493
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
494 protected static final void setString(
991
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
495 PreparedStatement stmnt,
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
496 int index,
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
497 Object value
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
498 )
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
499 throws SQLException
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
500 {
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
501 if (value == null) {
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
502 stmnt.setNull(index, Types.VARCHAR);
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
503 }
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
504 else {
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
505 stmnt.setString(index, value.toString());
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
506 }
982
66b3f2f064de Added the datacage as lifetime listener to the artifact database to create the initial index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
507 }
66b3f2f064de Added the datacage as lifetime listener to the artifact database to create the initial index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
508
66b3f2f064de Added the datacage as lifetime listener to the artifact database to create the initial index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
509 @Override
66b3f2f064de Added the datacage as lifetime listener to the artifact database to create the initial index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
510 public void systemUp(GlobalContext context) {
66b3f2f064de Added the datacage as lifetime listener to the artifact database to create the initial index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
511 log.debug("systemUp");
984
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
512 initialScan(context);
982
66b3f2f064de Added the datacage as lifetime listener to the artifact database to create the initial index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
513 }
66b3f2f064de Added the datacage as lifetime listener to the artifact database to create the initial index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
514
984
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
515 protected void initialScan(GlobalContext context) {
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
516 log.debug("initialScan");
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
517
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
518 Object adbObject = context.get(ARTEFACT_DATABASE_KEY);
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
519
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
520 if (!(adbObject instanceof ArtifactDatabase)) {
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
521 log.error("missing artefact database. Cannot scan");
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
522 return;
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
523 }
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
524
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
525 ArtifactDatabase adb = (ArtifactDatabase)adbObject;
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
526
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
527 if (!cleanDatabase()) {
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
528 log.error("cleaning database failed");
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
529 return;
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
530 }
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
531
991
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
532 InitialScan is = new InitialScan(context);
984
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
533
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
534 if (!is.scan(adb)) {
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
535 log.error("initial scan failed");
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
536 return;
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
537 }
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
538
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
539 }
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
540
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
541 protected boolean cleanDatabase() {
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
542
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
543 return sqlExecutor.new Instance() {
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
544 @Override
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
545 public boolean doIt() throws SQLException {
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
546 prepareStatement(SQL_DELETE_ALL_USERS);
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
547 stmnt.execute();
990
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
548 conn.commit();
984
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
549 return true;
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
550 }
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
551 }.runWrite();
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
552 }
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
553
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
554
982
66b3f2f064de Added the datacage as lifetime listener to the artifact database to create the initial index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
555 @Override
66b3f2f064de Added the datacage as lifetime listener to the artifact database to create the initial index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
556 public void systemDown(GlobalContext context) {
66b3f2f064de Added the datacage as lifetime listener to the artifact database to create the initial index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
557 log.debug("systemDown");
66b3f2f064de Added the datacage as lifetime listener to the artifact database to create the initial index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
558 }
66b3f2f064de Added the datacage as lifetime listener to the artifact database to create the initial index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
559 }
66b3f2f064de Added the datacage as lifetime listener to the artifact database to create the initial index.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
560 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org