annotate artifacts/src/main/java/org/dive4elements/river/artifacts/datacage/Datacage.java @ 5867:59ff03ff48f1

River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
author Sascha L. Teichmann <teichmann@intevation.de>
date Sun, 28 Apr 2013 15:23:01 +0200
parents 4897a58c8746
children af13ceeba52a
rev   line source
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
2 * Software engineering by Intevation GmbH
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
3 *
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
6 * documentation coming with Dive4Elements River for details.
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
7 */
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
8
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3650
diff changeset
9 package org.dive4elements.river.artifacts.datacage;
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
990
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
11 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
12 import java.util.List;
1024
ba88157c6aa3 Make it compilable again (BackendListener interface changed).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1010
diff changeset
13 import java.util.Date;
990
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
14
984
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
15 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
16 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
17 import java.sql.Types;
1025
02c327ffbad7 Datacage: Extended schema for artifacts and collections
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1024
diff changeset
18 import java.sql.Timestamp;
984
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
19
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3650
diff changeset
20 import org.dive4elements.artifacts.GlobalContext;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3650
diff changeset
21 import org.dive4elements.artifacts.ArtifactCollection;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3650
diff changeset
22 import org.dive4elements.artifacts.User;
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
23
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3650
diff changeset
24 import org.dive4elements.artifactdatabase.db.SQL;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3650
diff changeset
25 import org.dive4elements.artifactdatabase.db.SQLExecutor;
991
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
26
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3650
diff changeset
27 import org.dive4elements.artifactdatabase.LifetimeListener;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3650
diff changeset
28 import org.dive4elements.artifactdatabase.Backend;
984
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
29
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3650
diff changeset
30 import org.dive4elements.artifactdatabase.data.StateData;
984
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
31
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3650
diff changeset
32 import org.dive4elements.artifactdatabase.state.Output;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3650
diff changeset
33 import org.dive4elements.artifactdatabase.state.Facet;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3650
diff changeset
34
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3650
diff changeset
35 import org.dive4elements.artifacts.Artifact;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3650
diff changeset
36 import org.dive4elements.artifacts.ArtifactDatabase;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3650
diff changeset
37 import org.dive4elements.artifacts.ArtifactDatabaseException;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3650
diff changeset
38
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
39 import org.dive4elements.river.artifacts.D4EArtifact;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3650
diff changeset
40
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3650
diff changeset
41 import org.dive4elements.artifacts.common.utils.LRUCache;
984
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
42
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
43 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
44
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
45 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
46
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
47 public class Datacage
1002
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
48 implements LifetimeListener
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
49 {
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
50 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
51
999
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
52 public static final String DATACAGE_KEY =
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
53 "global.datacage.instance";
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
54
984
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
55 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
56 "global.artifact.database";
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
57
987
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
58 private String SQL_DELETE_ALL_USERS = "delete.all.users";
996
f61fe8b561d2 Datacage: delete artifacts at initial scan, too. Fixed problem with writing content of state data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 995
diff changeset
59 private String SQL_DELETE_ALL_ARTIFACTS = "delete.all.artifacts";
987
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
60 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
61 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
62 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
63 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
64 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
65 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
66 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
67 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
68 "collection.item.id.nextval";
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
69 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
70 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
71 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
72 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
73 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
74 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
75 private String SQL_INSERT_OUT = "insert.out";
992
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
76 private String SQL_FACET_ID_NEXTVAL = "facet.id.nextval";
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
77 private String SQL_INSERT_FACET = "insert.facet";
1003
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
78 private String SQL_UPDATE_COLLECTION_NAME = "update.collection.name";
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
79 private String SQL_DELETE_ARTIFACT_FROM_COLLECTION =
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
80 "delete.artifact.from.collection";
1004
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
81 private String SQL_DELETE_COLLECTION_BY_GID =
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
82 "delete.collection.by.gid";
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
83 private String SQL_DELETE_USER_BY_GID = "delete.user.by.gid";
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
84 private String SQL_DELETE_ARTIFACT_DATA_BY_ARTIFACT_ID =
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
85 "delete.artifact.data.by.artifact.id";
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
86 private String SQL_DELETE_OUTS_BY_ARTIFACT_ID =
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
87 "delete.outs.by.artifact.id";
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
88 private String SQL_DELETE_FACETS_BY_ARTIFACT_ID =
1008
6268009e177d Datacage: fixed wrong SQL references
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1007
diff changeset
89 "delete.facets.by.artifact.id";
1006
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
90 private String SQL_DELETE_ARTIFACT_BY_GID =
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
91 "delete.artifact.by.gid";
984
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
92
983
4ea5f5a2284e Ajusted datacage to use the SQL infrastructure from the artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 982
diff changeset
93 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
94
3076
5642a83420f2 FLYS artifacts: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1624
diff changeset
95 public class InitialScan
984
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
96 implements ArtifactDatabase.ArtifactLoadedCallback
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
97 {
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
98 protected LRUCache<String, Integer> users;
986
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
99 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
100 protected LRUCache<String, Integer> artifacts;
984
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
101
991
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
102 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
103
984
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
104 public InitialScan() {
986
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
105 users = new LRUCache<String, Integer>();
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
106 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
107 artifacts = new LRUCache<String, Integer>();
984
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
108 }
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
109
991
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
110 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
111 this();
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
112 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
113 }
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
114
984
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
115 @Override
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
116 public void artifactLoaded(
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
117 String userId,
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
118 String collectionId,
1009
fc5fca0c33b3 Datacage: Set the name of the collections at initial scan, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1008
diff changeset
119 String collectionName,
1024
ba88157c6aa3 Make it compilable again (BackendListener interface changed).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1010
diff changeset
120 Date collectionCreated,
984
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
121 String artifactId,
1024
ba88157c6aa3 Make it compilable again (BackendListener interface changed).
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1010
diff changeset
122 Date artifactCreated,
984
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
123 Artifact artifact
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
124 ) {
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
125 if (!(artifact instanceof D4EArtifact)) {
984
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
126 log.warn("ignoring none FLYS artifacts");
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
127 return;
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
128 }
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
129
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
130 D4EArtifact flysArtifact = (D4EArtifact)artifact;
986
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
131
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
132 Integer uId = getUserId(userId);
1025
02c327ffbad7 Datacage: Extended schema for artifacts and collections
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1024
diff changeset
133 Integer cId = getCollectionId(
02c327ffbad7 Datacage: Extended schema for artifacts and collections
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1024
diff changeset
134 collectionId, uId, collectionName, collectionCreated);
987
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
135
1025
02c327ffbad7 Datacage: Extended schema for artifacts and collections
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1024
diff changeset
136 storeArtifact(artifactId, cId, flysArtifact, artifactCreated);
984
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
137 }
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
138
987
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
139 protected Integer getId(
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
140 LRUCache<String, Integer> cache,
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
141 final String idString,
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
142 final String selectById
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
143 ) {
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
144 Integer id = cache.get(idString);
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
145 if (id != null) {
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
146 return id;
986
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
147 }
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
148
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
149 final Integer [] res = new Integer[1];
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
150
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
151 SQLExecutor.Instance exec = sqlExecutor.new Instance() {
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
152 @Override
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
153 public boolean doIt() throws SQLException {
987
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
154 prepareStatement(selectById);
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
155 stmnt.setString(1, idString);
986
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
156 result = stmnt.executeQuery();
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
157 if (!result.next()) {
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
158 return false;
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
159 }
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
160 res[0] = result.getInt(1);
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
161 return true;
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
162 }
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
163 };
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
164
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
165 if (exec.runRead()) {
987
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
166 cache.put(idString, res[0]);
986
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
167 return res[0];
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
168 }
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
169
987
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
170 return null;
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
171 }
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
172
988
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
173 protected void storeArtifact(
989
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
174 final String artifactId,
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
175 Integer collectionId,
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
176 final D4EArtifact artifact,
1025
02c327ffbad7 Datacage: Extended schema for artifacts and collections
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1024
diff changeset
177 final Date artifactCreated
988
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
178 ) {
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
179 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
180
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
181 if (aId != null) {
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
182 // 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
183 storeCollectionItem(collectionId, aId);
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
184 return;
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
185 }
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
186 // 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
187
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
188 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
189
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
190 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
191 @Override
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
192 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
193 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
194 result = stmnt.executeQuery();
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
195 if (!result.next()) {
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
196 return false;
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
197 }
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
198 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
199 reset();
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
200 prepareStatement(SQL_INSERT_ARTIFACT);
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
201 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
202 stmnt.setString(2, artifactId);
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
203 stmnt.setString(3, artifact.getCurrentStateId());
1025
02c327ffbad7 Datacage: Extended schema for artifacts and collections
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1024
diff changeset
204 Timestamp timestamp = new Timestamp(artifactCreated != null
02c327ffbad7 Datacage: Extended schema for artifacts and collections
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1024
diff changeset
205 ? artifactCreated.getTime()
02c327ffbad7 Datacage: Extended schema for artifacts and collections
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1024
diff changeset
206 : System.currentTimeMillis());
02c327ffbad7 Datacage: Extended schema for artifacts and collections
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1024
diff changeset
207 stmnt.setTimestamp(4, timestamp);
989
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
208 stmnt.execute();
990
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
209 conn.commit();
989
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
210 return true;
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
211 }
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
212 };
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
213
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
214 if (!exec.runWrite()) {
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
215 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
216 return;
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
217 }
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
218
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
219 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
220
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
221 storeCollectionItem(collectionId, aId);
f3be883325ce Add artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 988
diff changeset
222
990
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
223 storeData(aId, artifact);
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
224
1002
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
225 storeOuts(aId, artifact, context);
991
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
226 }
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
227
990
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
228
988
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
229 protected void storeCollectionItem(
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
230 final Integer collectionId,
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
231 final Integer artifactId
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
232 ) {
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
233 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
234 @Override
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
235 public boolean doIt() throws SQLException {
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
236 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
237 result = stmnt.executeQuery();
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
238 if (!result.next()) {
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
239 return false;
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
240 }
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
241 int ciId = result.getInt(1);
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
242 reset();
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
243 prepareStatement(SQL_INSERT_COLLECTION_ITEM);
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
244 stmnt.setInt(1, ciId);
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
245 stmnt.setInt(2, collectionId);
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
246 stmnt.setInt(3, artifactId);
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
247 stmnt.execute();
990
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
248 conn.commit();
988
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
249 return true;
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
250 }
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
251 };
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
252
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
253 if (!exec.runWrite()) {
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
254 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
255 }
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
256 }
987
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
257
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
258 protected Integer getCollectionId(
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
259 final String collectionId,
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
260 final Integer ownerId,
1025
02c327ffbad7 Datacage: Extended schema for artifacts and collections
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1024
diff changeset
261 final String collectionName,
02c327ffbad7 Datacage: Extended schema for artifacts and collections
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1024
diff changeset
262 final Date collectionCreated
987
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
263 ) {
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
264 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
265
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
266 if (c != null) {
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
267 return c;
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
268 }
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
269
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
270 final Integer [] res = new Integer[1];
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
271
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
272 SQLExecutor.Instance exec = sqlExecutor.new Instance() {
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
273 @Override
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
274 public boolean doIt() throws SQLException {
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
275 prepareStatement(SQL_COLLECTION_ID_NEXTVAL);
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
276 result = stmnt.executeQuery();
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
277 if (!result.next()) {
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
278 return false;
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
279 }
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
280 res[0] = result.getInt(1);
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
281 reset();
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
282 prepareStatement(SQL_INSERT_COLLECTION);
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
283 stmnt.setInt (1, res[0]);
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
284 stmnt.setString(2, collectionId);
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
285 stmnt.setInt (3, ownerId);
1009
fc5fca0c33b3 Datacage: Set the name of the collections at initial scan, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1008
diff changeset
286 setString(stmnt, 4, collectionName);
1025
02c327ffbad7 Datacage: Extended schema for artifacts and collections
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1024
diff changeset
287 Timestamp timestamp = new Timestamp(collectionCreated != null
02c327ffbad7 Datacage: Extended schema for artifacts and collections
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1024
diff changeset
288 ? collectionCreated.getTime()
02c327ffbad7 Datacage: Extended schema for artifacts and collections
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1024
diff changeset
289 : System.currentTimeMillis());
02c327ffbad7 Datacage: Extended schema for artifacts and collections
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1024
diff changeset
290 stmnt.setTimestamp(5, timestamp);
987
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
291 stmnt.execute();
990
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
292 conn.commit();
987
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
293 return true;
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
294 }
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
295 };
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
296
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
297 if (exec.runWrite()) {
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
298 collections.put(collectionId, res[0]);
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
299 return res[0];
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
300 }
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
301
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
302 return null;
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
303 }
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
304
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
305 protected Integer getUserId(final String userId) {
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
306
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
307 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
308
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
309 if (u != null) {
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
310 return u;
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
311 }
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
312
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
313 final Integer [] res = new Integer[1];
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
314
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
315 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
316 @Override
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
317 public boolean doIt() throws SQLException {
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
318 prepareStatement(SQL_USER_ID_NEXTVAL);
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
319 result = stmnt.executeQuery();
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
320 if (!result.next()) {
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
321 return false;
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
322 }
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
323 res[0] = result.getInt(1);
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
324 reset();
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
325 prepareStatement(SQL_INSERT_USER);
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
326 stmnt.setInt (1, res[0]);
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
327 stmnt.setString(2, userId);
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
328 stmnt.execute();
990
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
329 conn.commit();
986
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
330 return true;
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
331 }
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
332 };
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
333
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
334 if (exec.runWrite()) {
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
335 users.put(userId, res[0]);
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
336 return res[0];
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
337 }
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
338
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
339 return null;
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
340 }
70545233f8ee Datacage: Add users at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 984
diff changeset
341
984
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
342 public boolean scan(ArtifactDatabase adb) {
993
aabcca7aeb6c Fixed datacage db scheme. add some debug output.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 992
diff changeset
343 log.debug("scan");
984
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
344 try {
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
345 adb.loadAllArtifacts(this);
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
346 }
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
347 catch (ArtifactDatabaseException ade) {
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
348 log.error(ade);
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
349 return false;
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
350 }
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
351 return true;
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
352 }
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
353 } // class InitialScan
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
354
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
355
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
356 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
357 }
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
358
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
359 @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
360 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
361 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
362 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
363 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
364 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
365 }
4ea5f5a2284e Ajusted datacage to use the SQL infrastructure from the artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 982
diff changeset
366
4ea5f5a2284e Ajusted datacage to use the SQL infrastructure from the artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 982
diff changeset
367 protected void setupSQL(SQL sql) {
987
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
368 SQL_DELETE_ALL_USERS = sql.get(SQL_DELETE_ALL_USERS);
996
f61fe8b561d2 Datacage: delete artifacts at initial scan, too. Fixed problem with writing content of state data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 995
diff changeset
369 SQL_DELETE_ALL_ARTIFACTS = sql.get(SQL_DELETE_ALL_ARTIFACTS);
987
82ef338fee91 Datacage: Add collections at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 986
diff changeset
370 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
371 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
372 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
373 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
374 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
375 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
376 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
377 SQL_COLLECTION_ITEM_ID_NEXTVAL =
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
378 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
379 SQL_INSERT_COLLECTION_ITEM =
dbe39e1fb5e7 Datacage: Add collection items at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 987
diff changeset
380 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
381 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
382 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
383 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
384 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
385 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
386 SQL_INSERT_OUT = sql.get(SQL_INSERT_OUT);
992
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
387 SQL_FACET_ID_NEXTVAL = sql.get(SQL_FACET_ID_NEXTVAL);
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
388 SQL_INSERT_FACET = sql.get(SQL_INSERT_FACET);
1003
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
389 SQL_UPDATE_COLLECTION_NAME = sql.get(SQL_UPDATE_COLLECTION_NAME);
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
390 SQL_DELETE_ARTIFACT_FROM_COLLECTION =
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
391 sql.get(SQL_DELETE_ARTIFACT_FROM_COLLECTION);
1004
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
392 SQL_DELETE_COLLECTION_BY_GID = sql.get(SQL_DELETE_COLLECTION_BY_GID);
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
393 SQL_DELETE_USER_BY_GID = sql.get(SQL_DELETE_USER_BY_GID);
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
394 SQL_DELETE_ARTIFACT_DATA_BY_ARTIFACT_ID =
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
395 sql.get(SQL_DELETE_ARTIFACT_DATA_BY_ARTIFACT_ID);
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
396 SQL_DELETE_OUTS_BY_ARTIFACT_ID =
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
397 sql.get(SQL_DELETE_OUTS_BY_ARTIFACT_ID);
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
398 SQL_DELETE_FACETS_BY_ARTIFACT_ID =
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
399 sql.get(SQL_DELETE_FACETS_BY_ARTIFACT_ID);
1010
d419c9904825 Datacage: Forgot to fetch dialect dependent SQL statement for deleting artifacts by uuid.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1009
diff changeset
400 SQL_DELETE_ARTIFACT_BY_GID =
d419c9904825 Datacage: Forgot to fetch dialect dependent SQL statement for deleting artifacts by uuid.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1009
diff changeset
401 sql.get(SQL_DELETE_ARTIFACT_BY_GID);
991
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
402 }
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
403
992
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
404 protected static final int numFacets(List<Output> outs) {
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
405 int sum = 0;
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
406 for (Output out: outs) {
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
407 sum += out.getFacets().size();
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
408 }
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
409 return sum;
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
410 }
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
411
5b467bc27eda Datacage: Store
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 991
diff changeset
412 protected static final void setString(
3076
5642a83420f2 FLYS artifacts: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1624
diff changeset
413 PreparedStatement stmnt,
991
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
414 int index,
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
415 Object value
3076
5642a83420f2 FLYS artifacts: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1624
diff changeset
416 )
991
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
417 throws SQLException
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
418 {
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
419 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
420 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
421 }
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
422 else {
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
423 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
424 }
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
425 }
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
426
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
427 @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
428 public void systemUp(GlobalContext context) {
993
aabcca7aeb6c Fixed datacage db scheme. add some debug output.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 992
diff changeset
429 log.debug("systemUp entered");
984
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
430 initialScan(context);
999
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
431 context.put(DATACAGE_KEY, this);
993
aabcca7aeb6c Fixed datacage db scheme. add some debug output.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 992
diff changeset
432 log.debug("systemUp leaved");
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
433 }
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
434
984
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
435 protected void initialScan(GlobalContext context) {
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
436 log.debug("initialScan");
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
437
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
438 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
439
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
440 if (!(adbObject instanceof ArtifactDatabase)) {
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
441 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
442 return;
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
443 }
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
444
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
445 ArtifactDatabase adb = (ArtifactDatabase)adbObject;
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 if (!cleanDatabase()) {
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
448 log.error("cleaning database failed");
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
449 return;
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
991
c675b4a87201 Store outs of artifacts into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 990
diff changeset
452 InitialScan is = new InitialScan(context);
984
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
453
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
454 if (!is.scan(adb)) {
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
455 log.error("initial scan failed");
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
456 return;
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
457 }
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
458
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
459 }
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
460
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
461 protected boolean cleanDatabase() {
993
aabcca7aeb6c Fixed datacage db scheme. add some debug output.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 992
diff changeset
462 log.debug("cleanDatabase");
aabcca7aeb6c Fixed datacage db scheme. add some debug output.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 992
diff changeset
463
aabcca7aeb6c Fixed datacage db scheme. add some debug output.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 992
diff changeset
464 boolean success = sqlExecutor.new Instance() {
984
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
465 @Override
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
466 public boolean doIt() throws SQLException {
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
467 prepareStatement(SQL_DELETE_ALL_USERS);
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
468 stmnt.execute();
996
f61fe8b561d2 Datacage: delete artifacts at initial scan, too. Fixed problem with writing content of state data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 995
diff changeset
469 prepareStatement(SQL_DELETE_ALL_ARTIFACTS);
f61fe8b561d2 Datacage: delete artifacts at initial scan, too. Fixed problem with writing content of state data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 995
diff changeset
470 stmnt.execute();
990
e573c4715d81 Add artifacts data into datacage db at initial scan.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 989
diff changeset
471 conn.commit();
984
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
472 return true;
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
473 }
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
474 }.runWrite();
993
aabcca7aeb6c Fixed datacage db scheme. add some debug output.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 992
diff changeset
475
aabcca7aeb6c Fixed datacage db scheme. add some debug output.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 992
diff changeset
476 log.debug("after runWrite(): " + success);
aabcca7aeb6c Fixed datacage db scheme. add some debug output.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 992
diff changeset
477
aabcca7aeb6c Fixed datacage db scheme. add some debug output.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 992
diff changeset
478 return success;
984
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
479 }
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
480
2b05c4a0c6fd Datacage: clear database before initial scan
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 983
diff changeset
481
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
482 @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
483 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
484 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
485 }
999
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
486
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
487 public void setup(GlobalContext globalContext) {
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
488 log.debug("setup");
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
489 }
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
490
1002
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
491 public void createdArtifact(
3076
5642a83420f2 FLYS artifacts: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1624
diff changeset
492 Artifact artifact,
1002
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
493 Backend backend,
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
494 GlobalContext context
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
495 ) {
999
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
496 log.debug("createdArtifact");
1002
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
497
1624
238145ef67da Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1050
diff changeset
498 if (artifact == null) {
238145ef67da Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1050
diff changeset
499 log.warn("artifact to create is null");
238145ef67da Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1050
diff changeset
500 return;
238145ef67da Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1050
diff changeset
501 }
238145ef67da Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1050
diff changeset
502
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
503 if (!(artifact instanceof D4EArtifact)) {
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
504 log.warn("need D4EArtifact here (have " + artifact.getClass() + ")");
1002
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
505 return;
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
506 }
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
507
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
508 final D4EArtifact flys = (D4EArtifact)artifact;
1002
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
509
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
510 final int [] res = new int[1];
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
511
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
512 SQLExecutor.Instance exec = sqlExecutor.new Instance() {
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
513 @Override
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
514 public boolean doIt() throws SQLException {
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
515 prepareStatement(SQL_ARTIFACT_ID_NEXTVAL);
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
516 result = stmnt.executeQuery();
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
517 if (!result.next()) {
1004
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
518 log.error("id generation for artifact failed");
1002
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
519 return false;
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
520 }
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
521 res[0] = result.getInt(1);
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
522 reset();
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
523 prepareStatement(SQL_INSERT_ARTIFACT);
1025
02c327ffbad7 Datacage: Extended schema for artifacts and collections
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1024
diff changeset
524 stmnt.setInt (1, res[0]);
02c327ffbad7 Datacage: Extended schema for artifacts and collections
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1024
diff changeset
525 stmnt.setString (2, flys.identifier());
02c327ffbad7 Datacage: Extended schema for artifacts and collections
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1024
diff changeset
526 stmnt.setString (3, flys.getCurrentStateId());
02c327ffbad7 Datacage: Extended schema for artifacts and collections
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1024
diff changeset
527 stmnt.setTimestamp(4,
02c327ffbad7 Datacage: Extended schema for artifacts and collections
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1024
diff changeset
528 new Timestamp(System.currentTimeMillis()));
1002
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
529 stmnt.execute();
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
530 conn.commit();
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
531 return true;
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
532 }
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
533 };
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
534
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
535 if (!exec.runWrite()) {
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
536 log.error("storing of artifact failed.");
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
537 return;
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
538 }
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
539
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
540 storeData(res[0], flys);
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
541 storeOuts(res[0], flys, context);
999
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
542 }
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
543
1002
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
544 public void storedArtifact(
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
545 Artifact artifact,
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
546 Backend backend,
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
547 GlobalContext context
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
548 ) {
999
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
549 log.debug("storedArtifact");
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
550 if (!(artifact instanceof D4EArtifact)) {
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
551 log.warn("need D4EArtifact here but have a " + artifact.getClass());
1004
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
552 return;
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
553 }
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
554
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
555 final D4EArtifact flys = (D4EArtifact)artifact;
1004
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
556
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
557 final Integer [] res = new Integer[1];
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
558
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
559 // check first if artifact already exists
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
560 SQLExecutor.Instance exec = sqlExecutor.new Instance() {
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
561 @Override
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
562 public boolean doIt() throws SQLException {
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
563 prepareStatement(SQL_ARTIFACT_BY_GID);
1007
ed918497873b Datacage: Fixed two NPEs
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1006
diff changeset
564 stmnt.setString(1, flys.identifier());
1004
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
565 result = stmnt.executeQuery();
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
566 if (!result.next()) {
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
567 // new artifact
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
568 return true;
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
569 }
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
570 res[0] = result.getInt(1);
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
571 return true;
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
572 }
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
573 };
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
574
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
575 if (!exec.runRead()) {
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
576 log.error("querying artifact failed");
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
577 return;
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
578 }
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
579
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
580 if (res[0] == null) { // new artifact
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
581 createdArtifact(artifact, backend, context);
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
582 return;
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
583 }
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
584
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
585 // artifact already exists -> delete old data
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
586 exec = sqlExecutor.new Instance() {
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
587 @Override
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
588 public boolean doIt() throws SQLException {
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
589 prepareStatement(SQL_DELETE_ARTIFACT_DATA_BY_ARTIFACT_ID);
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
590 stmnt.setInt(1, res[0]);
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
591 stmnt.execute();
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
592 prepareStatement(SQL_DELETE_FACETS_BY_ARTIFACT_ID);
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
593 stmnt.setInt(1, res[0]);
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
594 stmnt.execute();
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
595 prepareStatement(SQL_DELETE_OUTS_BY_ARTIFACT_ID);
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
596 stmnt.setInt(1, res[0]);
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
597 stmnt.execute();
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
598 conn.commit();
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
599 return true;
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
600 }
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
601 };
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
602
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
603 if (!exec.runWrite()) {
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
604 log.error("deleting old artifact data failed");
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
605 return;
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
606 }
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
607
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
608 // write new data
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
609 storeData(res[0], flys);
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
610 storeOuts(res[0], flys, context);
999
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
611 }
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
612
1002
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
613 public void createdUser(
1004
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
614 final User user,
1002
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
615 Backend backend,
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
616 GlobalContext context
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
617 ) {
999
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
618 log.debug("createdUser");
1004
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
619 SQLExecutor.Instance exec = sqlExecutor.new Instance() {
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
620 @Override
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
621 public boolean doIt() throws SQLException {
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
622 prepareStatement(SQL_USER_ID_NEXTVAL);
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
623 result = stmnt.executeQuery();
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
624 if (!result.next()) {
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
625 log.error("id generation for user failed");
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
626 return false;
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
627 }
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
628 int uId = result.getInt(1);
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
629 reset();
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
630 prepareStatement(SQL_INSERT_USER);
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
631 stmnt.setInt(1, uId);
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
632 stmnt.setString(2, user.identifier());
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
633 stmnt.execute();
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
634 conn.commit();
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
635 return true;
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
636 }
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
637 };
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
638
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
639 if (!exec.runWrite()) {
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
640 log.error("create user failed");
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
641 }
999
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
642 }
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
643
1002
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
644 public void deletedUser(
1004
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
645 final String identifier,
1002
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
646 Backend backend,
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
647 GlobalContext context
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
648 ) {
999
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
649 log.debug("deletedUser");
1004
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
650 SQLExecutor.Instance exec = sqlExecutor.new Instance() {
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
651 @Override
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
652 public boolean doIt() throws SQLException {
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
653 prepareStatement(SQL_DELETE_USER_BY_GID);
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
654 stmnt.setString(1, identifier);
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
655 stmnt.execute();
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
656 conn.commit();
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
657 return true;
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
658 }
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
659 };
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
660
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
661 if (!exec.runWrite()) {
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
662 log.error("delete user failed");
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
663 }
999
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
664 }
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
665
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
666 public void createdCollection(
1004
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
667 final ArtifactCollection collection,
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
668 Backend backend,
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
669 GlobalContext context
999
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
670 ) {
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
671 log.debug("createdCollection");
1004
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
672 SQLExecutor.Instance exec = sqlExecutor.new Instance() {
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
673 @Override
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
674 public boolean doIt() throws SQLException {
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
675 String userId = collection.getUser().identifier();
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
676 prepareStatement(SQL_USER_BY_GID);
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
677 stmnt.setString(1, userId);
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
678 result = stmnt.executeQuery();
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
679 int uId;
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
680 if (result.next()) {
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
681 uId = result.getInt(1);
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
682 reset();
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
683 }
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
684 else {
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
685 // need to create user first
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
686 reset();
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
687 prepareStatement(SQL_USER_ID_NEXTVAL);
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
688 result = stmnt.executeQuery();
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
689 if (!result.next()) {
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
690 log.error("id generation for user failed");
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
691 return false;
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
692 }
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
693 uId = result.getInt(1);
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
694 reset();
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
695 prepareStatement(SQL_INSERT_USER);
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
696 stmnt.setInt(1, uId);
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
697 stmnt.setString(2, userId);
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
698 stmnt.execute();
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
699 conn.commit();
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
700 reset();
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
701 }
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
702
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
703 prepareStatement(SQL_COLLECTION_ID_NEXTVAL);
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
704 result = stmnt.executeQuery();
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
705 if (!result.next()) {
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
706 log.error("id generation for collection failed");
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
707 return false;
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
708 }
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
709 int cId = result.getInt(1);
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
710 reset();
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
711
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
712 String identifier = collection.identifier();
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
713 String name = collection.getName();
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
714
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
715 prepareStatement(SQL_INSERT_COLLECTION);
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
716 stmnt.setInt(1, cId);
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
717 stmnt.setString(2, identifier);
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
718 stmnt.setInt(3, uId);
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
719 setString(stmnt, 4, name);
1025
02c327ffbad7 Datacage: Extended schema for artifacts and collections
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1024
diff changeset
720 stmnt.setTimestamp(5,
02c327ffbad7 Datacage: Extended schema for artifacts and collections
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1024
diff changeset
721 new Timestamp(System.currentTimeMillis()));
1004
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
722 stmnt.execute();
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
723
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
724 conn.commit();
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
725 return true;
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
726 }
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
727 };
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
728
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
729 if (!exec.runWrite()) {
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
730 log.error("create collection failed");
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
731 }
999
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
732 }
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
733
1002
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
734 public void deletedCollection(
1004
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
735 final String identifier,
1002
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
736 Backend backend,
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
737 GlobalContext context
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
738 ) {
999
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
739 log.debug("deletedCollection");
1004
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
740 SQLExecutor.Instance exec = sqlExecutor.new Instance() {
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
741 @Override
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
742 public boolean doIt() throws SQLException {
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
743 prepareStatement(SQL_DELETE_COLLECTION_BY_GID);
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
744 stmnt.setString(1, identifier);
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
745 stmnt.execute();
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
746 conn.commit();
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
747 return true;
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
748 }
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
749 };
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
750
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
751 if (!exec.runWrite()) {
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
752 log.error("delete collection failed");
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
753 }
999
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
754 }
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
755
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
756 public void changedCollectionAttribute(
1002
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
757 String identifier,
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
758 Document document,
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
759 Backend backend,
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
760 GlobalContext context
999
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
761 ) {
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
762 log.debug("changedCollectionAttribute");
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
763 }
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
764
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
765 public void changedCollectionItemAttribute(
1002
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
766 String collectionId,
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
767 String artifactId,
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
768 Document document,
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
769 Backend backend,
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
770 GlobalContext context
999
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
771 ) {
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
772 log.debug("changedCollectionItemAttribute");
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
773 }
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
774
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
775 public void addedArtifactToCollection(
1004
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
776 final String artifactId,
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
777 final String collectionId,
1002
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
778 Backend backend,
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
779 GlobalContext context
999
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
780 ) {
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
781 log.debug("addedArtifactToCollection");
1004
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
782 SQLExecutor.Instance exec = sqlExecutor.new Instance() {
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
783 @Override
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
784 public boolean doIt() throws SQLException {
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
785 prepareStatement(SQL_ARTIFACT_BY_GID);
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
786 stmnt.setString(1, artifactId);
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
787 result = stmnt.executeQuery();
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
788 if (!result.next()) {
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
789 return false;
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
790 }
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
791 int aId = result.getInt(1);
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
792 reset();
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
793
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
794 prepareStatement(SQL_COLLECTION_BY_GID);
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
795 stmnt.setString(1, collectionId);
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
796 result = stmnt.executeQuery();
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
797 if (!result.next()) {
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
798 return false;
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
799 }
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
800 int cId = result.getInt(1);
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
801 reset();
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
802
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
803 prepareStatement(SQL_COLLECTION_ITEM_ID_NEXTVAL);
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
804 result = stmnt.executeQuery();
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
805 if (!result.next()) {
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
806 return false;
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
807 }
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
808 int ciId = result.getInt(1);
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
809 reset();
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
810
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
811 prepareStatement(SQL_INSERT_COLLECTION_ITEM);
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
812 stmnt.setInt(1, ciId);
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
813 stmnt.setInt(2, cId);
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
814 stmnt.setInt(3, aId);
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
815 stmnt.execute();
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
816
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
817 conn.commit();
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
818 return true;
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
819 }
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
820 };
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
821 if (!exec.runWrite()) {
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
822 log.error("added artifact to collection failed");
0e8c03b69627 Datacage: completed backend listener stuff.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1003
diff changeset
823 }
999
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
824 }
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
825
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
826 public void removedArtifactFromCollection(
1003
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
827 final String artifactId,
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
828 final String collectionId,
1002
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
829 Backend backend,
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
830 GlobalContext context
999
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
831 ) {
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
832 log.debug("removedArtifactFromCollection");
1003
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
833 SQLExecutor.Instance exec = sqlExecutor.new Instance() {
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
834 @Override
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
835 public boolean doIt() throws SQLException {
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
836 prepareStatement(SQL_ARTIFACT_BY_GID);
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
837 stmnt.setString(1, artifactId);
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
838 result = stmnt.executeQuery();
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
839 if (!result.next()) {
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
840 return false;
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
841 }
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
842 int aId = result.getInt(1);
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
843 reset();
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
844 prepareStatement(SQL_COLLECTION_BY_GID);
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
845 stmnt.setString(1, collectionId);
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
846 result = stmnt.executeQuery();
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
847 if (!result.next()) {
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
848 return false;
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
849 }
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
850 int cId = result.getInt(1);
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
851 reset();
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
852 prepareStatement(SQL_DELETE_ARTIFACT_FROM_COLLECTION);
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
853 stmnt.setInt(1, cId);
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
854 stmnt.setInt(2, aId);
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
855 stmnt.execute();
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
856 conn.commit();
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
857 return true;
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
858 }
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
859 };
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
860 if (!exec.runWrite()) {
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
861 log.error("removing artifact from collection failed");
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
862 }
999
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
863 }
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
864
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
865 public void setCollectionName(
1003
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
866 final String collectionId,
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
867 final String name,
1002
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
868 GlobalContext context
999
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
869 ) {
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
870 log.debug("setCollectionName");
1003
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
871 SQLExecutor.Instance exec = sqlExecutor.new Instance() {
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
872 @Override
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
873 public boolean doIt() throws SQLException {
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
874 prepareStatement(SQL_UPDATE_COLLECTION_NAME);
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
875 stmnt.setString(1, name);
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
876 stmnt.setString(2, collectionId);
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
877 stmnt.execute();
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
878 conn.commit();
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
879 return true;
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
880 }
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
881 };
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
882 if (!exec.runWrite()) {
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
883 log.error("changing name failed");
c58da6dd15ed Datacage: Update collection names on change. Remove artifacts from collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1002
diff changeset
884 }
999
b0218f21c664 Wire datacage with backend of artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 996
diff changeset
885 }
1002
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
886
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
887 protected void storeData(
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
888 final int artifactId,
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
889 D4EArtifact artifact
1002
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
890 ) {
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
891 final Collection<StateData> data = artifact.getAllData();
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
892
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
893 if (data.isEmpty()) {
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
894 return;
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
895 }
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
896
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
897 SQLExecutor.Instance exec = sqlExecutor.new Instance() {
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
898 @Override
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
899 public boolean doIt() throws SQLException {
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
900 int [] ids = new int[data.size()];
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
901 prepareStatement(SQL_ARTIFACT_DATA_ID_NEXTVAL);
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
902
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
903 for (int i = 0; i < ids.length; ++i) {
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
904 result = stmnt.executeQuery();
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
905 if (!result.next()) {
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
906 log.error("generating id for artifact data failed");
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
907 return false;
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
908 }
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
909 ids[i] = result.getInt(1);
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
910 result.close(); result = null;
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
911 }
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
912 reset();
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
913 prepareStatement(SQL_INSERT_ARTIFACT_DATA);
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
914
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
915 int i = 0;
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
916 for (StateData sd: data) {
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
917 int id = ids[i++];
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
918 stmnt.setInt(1, id);
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
919 stmnt.setInt(2, artifactId);
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
920 // XXX: Where come the nulls from?
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
921 String type = sd.getType();
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
922 if (type == null) type = "String";
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
923 stmnt.setString(3, type);
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
924 stmnt.setString(4, sd.getName());
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
925 setString(stmnt, 5, sd.getValue());
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
926 stmnt.execute();
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
927 }
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
928
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
929 conn.commit();
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
930 return true;
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
931 }
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
932 };
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
933
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
934 if (!exec.runWrite()) {
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
935 log.error("storing artifact data failed");
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
936 }
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
937 }
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
938
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
939 protected void storeOuts(
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
940 final int artifactId,
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
941 final D4EArtifact artifact,
1002
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
942 GlobalContext context
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
943 ) {
1050
eccf966fb677 State engine: Removed CallContext from state validation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1025
diff changeset
944 final List<Output> outs = artifact.getOutputs(context);
1002
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
945
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
946 if (outs.isEmpty()) {
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
947 return;
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
948 }
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
949
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
950 final int [] outIds = new int[outs.size()];
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
951
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
952 SQLExecutor.Instance exec = sqlExecutor.new Instance() {
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
953 @Override
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
954 public boolean doIt() throws SQLException {
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
955 prepareStatement(SQL_OUT_ID_NEXTVALUE);
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
956 for (int i = 0; i < outIds.length; ++i) {
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
957 result = stmnt.executeQuery();
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
958 if (!result.next()) {
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
959 log.error("generation of out ids failed");
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
960 return false;
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
961 }
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
962 outIds[i] = result.getInt(1);
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
963 result.close(); result = null;
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
964 }
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
965 reset();
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
966 prepareStatement(SQL_INSERT_OUT);
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
967 for (int i = 0; i < outIds.length; ++i) {
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
968 Output out = outs.get(i);
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
969 stmnt.setInt(1, outIds[i]);
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
970 stmnt.setInt(2, artifactId);
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
971 stmnt.setString(3, out.getName());
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
972 setString(stmnt, 4, out.getDescription());
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
973 setString(stmnt, 5, out.getType());
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
974 stmnt.execute();
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
975 }
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
976 conn.commit();
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
977 return true;
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
978 }
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
979 };
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
980
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
981 if (!exec.runWrite()) {
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
982 log.error("storing artifact outs failed");
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
983 return;
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
984 }
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
985
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
986 final int FACETS = numFacets(outs);
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
987
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
988 if (FACETS == 0) {
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
989 return;
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
990 }
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
991
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
992 exec = sqlExecutor.new Instance() {
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
993 @Override
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
994 public boolean doIt() throws SQLException {
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
995 int [] facetIds = new int[FACETS];
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
996 prepareStatement(SQL_FACET_ID_NEXTVAL);
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
997 for (int i = 0; i < facetIds.length; ++i) {
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
998 result = stmnt.executeQuery();
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
999 if (!result.next()) {
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
1000 log.error("generation of facet ids failed");
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
1001 return false;
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
1002 }
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
1003 facetIds[i] = result.getInt(1);
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
1004 result.close(); result = null;
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
1005 }
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
1006 reset();
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
1007 prepareStatement(SQL_INSERT_FACET);
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
1008 int index = 0;
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
1009 for (int i = 0, N = outs.size(); i < N; ++i) {
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
1010 Output out = outs.get(i);
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
1011 int outId = outIds[i];
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
1012 for (Facet facet: out.getFacets()) {
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
1013 stmnt.setInt(1, facetIds[index]);
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
1014 stmnt.setInt(2, outId);
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
1015 stmnt.setString(3, facet.getName());
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
1016 stmnt.setInt(4, facet.getIndex());
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
1017 stmnt.setString(5, "XXX"); // TODO: handle states
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
1018 setString(stmnt, 6, facet.getDescription());
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
1019 stmnt.execute();
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
1020 ++index;
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
1021 }
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
1022 }
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
1023 conn.commit();
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
1024 return true;
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
1025 }
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
1026 };
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
1027
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
1028 if (!exec.runWrite()) {
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
1029 log.error("storing facets failed");
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
1030 }
db86c665ab6e Datacage: Pass global context to datacage if calls come from backend listener.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 999
diff changeset
1031 }
1006
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1032
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1033 public void killedCollections(
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1034 final List<String> identifiers,
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1035 GlobalContext context
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1036 ) {
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1037 log.debug("killedCollections");
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1038
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1039 SQLExecutor.Instance exec = sqlExecutor.new Instance() {
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1040 @Override
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1041 public boolean doIt() throws SQLException {
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1042 prepareStatement(SQL_DELETE_COLLECTION_BY_GID);
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1043 for (String identifier: identifiers) {
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1044 stmnt.setString(1, identifier);
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1045 stmnt.execute();
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1046 }
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1047 conn.commit();
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1048 return true;
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1049 }
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1050 };
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1051
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1052 if (!exec.runWrite()) {
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1053 log.error("killing collections failed");
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1054 }
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1055 }
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1056
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1057 public void killedArtifacts(
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1058 final List<String> identifiers,
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1059 GlobalContext context
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1060 ) {
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1061 log.debug("killedArtifacts");
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1062
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1063 SQLExecutor.Instance exec = sqlExecutor.new Instance() {
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1064 @Override
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1065 public boolean doIt() throws SQLException {
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1066 prepareStatement(SQL_DELETE_ARTIFACT_BY_GID);
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1067 for (String identifier: identifiers) {
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1068 stmnt.setString(1, identifier);
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1069 stmnt.execute();
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1070 }
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1071 conn.commit();
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1072 return true;
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1073 }
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1074 };
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1075
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1076 if (!exec.runWrite()) {
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1077 log.error("killing artifacts failed");
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1078 }
1917f32701dc Forwarded kill collections and artifacts events to datacage.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1004
diff changeset
1079 }
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
1080 }
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
1081 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org