Mercurial > dive4elements > framework
annotate artifact-database/src/main/java/org/dive4elements/artifactdatabase/Backend.java @ 570:584591f8203c 3.2.x
Upgrade to Log4j 2
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Mon, 28 Feb 2022 17:41:14 +0100 |
parents | 68f01f10624e |
children |
rev | line source |
---|---|
100
933bbc9fc11f
Added license file and license headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
93
diff
changeset
|
1 /* |
182
7eebe707a034
Added helper to be return in Backend.listCollectionArtifacts()
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
180
diff
changeset
|
2 * Copyright (c) 2010, 2011 by Intevation GmbH |
100
933bbc9fc11f
Added license file and license headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
93
diff
changeset
|
3 * |
933bbc9fc11f
Added license file and license headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
93
diff
changeset
|
4 * This program is free software under the LGPL (>=v2.1) |
933bbc9fc11f
Added license file and license headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
93
diff
changeset
|
5 * Read the file LGPL.txt coming with the software for details |
933bbc9fc11f
Added license file and license headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
93
diff
changeset
|
6 * or visit http://www.gnu.org/licenses/ if it does not exist. |
933bbc9fc11f
Added license file and license headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
93
diff
changeset
|
7 */ |
475
415df0fc4fa1
Fixed maven group ids
Sascha L. Teichmann <teichmann@intevation.de>
parents:
473
diff
changeset
|
8 package org.dive4elements.artifactdatabase; |
13
0d6badf6af42
Added not yet working backend to artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
9 |
475
415df0fc4fa1
Fixed maven group ids
Sascha L. Teichmann <teichmann@intevation.de>
parents:
473
diff
changeset
|
10 import org.dive4elements.artifacts.Artifact; |
415df0fc4fa1
Fixed maven group ids
Sascha L. Teichmann <teichmann@intevation.de>
parents:
473
diff
changeset
|
11 import org.dive4elements.artifacts.ArtifactCollection; |
415df0fc4fa1
Fixed maven group ids
Sascha L. Teichmann <teichmann@intevation.de>
parents:
473
diff
changeset
|
12 import org.dive4elements.artifacts.ArtifactCollectionFactory; |
415df0fc4fa1
Fixed maven group ids
Sascha L. Teichmann <teichmann@intevation.de>
parents:
473
diff
changeset
|
13 import org.dive4elements.artifacts.ArtifactDatabase.ArtifactLoadedCallback; |
415df0fc4fa1
Fixed maven group ids
Sascha L. Teichmann <teichmann@intevation.de>
parents:
473
diff
changeset
|
14 import org.dive4elements.artifacts.ArtifactFactory; |
415df0fc4fa1
Fixed maven group ids
Sascha L. Teichmann <teichmann@intevation.de>
parents:
473
diff
changeset
|
15 import org.dive4elements.artifacts.ArtifactSerializer; |
415df0fc4fa1
Fixed maven group ids
Sascha L. Teichmann <teichmann@intevation.de>
parents:
473
diff
changeset
|
16 import org.dive4elements.artifacts.CollectionItem; |
415df0fc4fa1
Fixed maven group ids
Sascha L. Teichmann <teichmann@intevation.de>
parents:
473
diff
changeset
|
17 import org.dive4elements.artifacts.User; |
415df0fc4fa1
Fixed maven group ids
Sascha L. Teichmann <teichmann@intevation.de>
parents:
473
diff
changeset
|
18 import org.dive4elements.artifacts.UserFactory; |
13
0d6badf6af42
Added not yet working backend to artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
19 |
475
415df0fc4fa1
Fixed maven group ids
Sascha L. Teichmann <teichmann@intevation.de>
parents:
473
diff
changeset
|
20 import org.dive4elements.artifacts.common.utils.StringUtils; |
415df0fc4fa1
Fixed maven group ids
Sascha L. Teichmann <teichmann@intevation.de>
parents:
473
diff
changeset
|
21 import org.dive4elements.artifacts.common.utils.XMLUtils; |
415df0fc4fa1
Fixed maven group ids
Sascha L. Teichmann <teichmann@intevation.de>
parents:
473
diff
changeset
|
22 import org.dive4elements.artifacts.common.utils.LRUCache; |
138
b90e831d3dfe
Call database to create a new user.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
133
diff
changeset
|
23 |
475
415df0fc4fa1
Fixed maven group ids
Sascha L. Teichmann <teichmann@intevation.de>
parents:
473
diff
changeset
|
24 import org.dive4elements.artifactdatabase.db.SQLExecutor; |
415df0fc4fa1
Fixed maven group ids
Sascha L. Teichmann <teichmann@intevation.de>
parents:
473
diff
changeset
|
25 import org.dive4elements.artifactdatabase.db.SQL; |
305
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
26 |
93
e27cf9c84eb8
Unified imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
90
diff
changeset
|
27 import java.sql.SQLException; |
170
ac0f8bd97277
Fix parameter propagation of creation time ond collection names.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
167
diff
changeset
|
28 import java.sql.Timestamp; |
93
e27cf9c84eb8
Unified imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
90
diff
changeset
|
29 import java.sql.Types; |
e27cf9c84eb8
Unified imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
90
diff
changeset
|
30 |
310
63122b9dee1d
Added interface to listen events in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
309
diff
changeset
|
31 import java.util.List; |
148
101a52d3ad08
Added code to load all users from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
147
diff
changeset
|
32 import java.util.ArrayList; |
170
ac0f8bd97277
Fix parameter propagation of creation time ond collection names.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
167
diff
changeset
|
33 import java.util.Date; |
235
3e29395ebac6
The XML documents stored aside users, collections and collection items are now compressed/decompressed transparently.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
233
diff
changeset
|
34 import java.util.HashMap; |
148
101a52d3ad08
Added code to load all users from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
147
diff
changeset
|
35 |
310
63122b9dee1d
Added interface to listen events in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
309
diff
changeset
|
36 import java.util.concurrent.CopyOnWriteArrayList; |
63122b9dee1d
Added interface to listen events in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
309
diff
changeset
|
37 |
570 | 38 import org.apache.logging.log4j.Logger; |
39 import org.apache.logging.log4j.LogManager; | |
17
5a6b6a3debc7
Integrated logging into artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
15
diff
changeset
|
40 |
133
2950c6011afa
Fixed typo in keys.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
128
diff
changeset
|
41 import org.w3c.dom.Document; |
2950c6011afa
Fixed typo in keys.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
128
diff
changeset
|
42 |
13
0d6badf6af42
Added not yet working backend to artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
43 /** |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
44 * The backend implements the low level layer used to store artifacts |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
45 * in a SQL database. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
46 * |
79
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
47
diff
changeset
|
47 * @author <a href="mailto:sascha.teichmann@intevation.de">Sascha L. Teichmann</a> |
13
0d6badf6af42
Added not yet working backend to artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
48 */ |
0d6badf6af42
Added not yet working backend to artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
49 public class Backend |
41
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
38
diff
changeset
|
50 implements DatabaseCleaner.ArtifactReviver |
13
0d6badf6af42
Added not yet working backend to artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
51 { |
570 | 52 private static Logger logger = LogManager.getLogger(Backend.class); |
17
5a6b6a3debc7
Integrated logging into artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
15
diff
changeset
|
53 |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
54 /** |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
55 * The SQL statement to create new artifact id inside the database. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
56 */ |
305
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
57 public String SQL_NEXT_ID; |
14
0d16d1bb2df0
Initial checkin of artigact persistents back by database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
13
diff
changeset
|
58 |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
59 /** |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
60 * The SQL statement to insert an artifact into the database. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
61 */ |
305
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
62 public String SQL_INSERT; |
14
0d16d1bb2df0
Initial checkin of artigact persistents back by database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
13
diff
changeset
|
63 |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
64 /** |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
65 * The SQL statement to update some columns of an existing |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
66 * artifact in the database. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
67 */ |
305
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
68 public String SQL_UPDATE; |
14
0d16d1bb2df0
Initial checkin of artigact persistents back by database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
13
diff
changeset
|
69 |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
70 /** |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
71 * The SQL statement to touch the access time of an |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
72 * artifact inside the database. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
73 */ |
305
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
74 public String SQL_TOUCH; |
14
0d16d1bb2df0
Initial checkin of artigact persistents back by database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
13
diff
changeset
|
75 |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
76 /** |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
77 * The SQL statement to load an artifact by a given |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
78 * identifier from the database. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
79 */ |
305
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
80 public String SQL_LOAD_BY_GID; |
15
9ad6ec2d09c3
Implemented restoring artifacts from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
14
diff
changeset
|
81 |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
82 /** |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
83 * The SQL statement to get the database id of an artifact |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
84 * identified by the identifier. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
85 */ |
305
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
86 public String SQL_GET_ID; |
80
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
87 |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
88 /** |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
89 * The SQL statement to replace the content of an |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
90 * existing artifact inside the database. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
91 */ |
305
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
92 public String SQL_REPLACE; |
80
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
93 |
133
2950c6011afa
Fixed typo in keys.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
128
diff
changeset
|
94 // USER SQL |
2950c6011afa
Fixed typo in keys.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
128
diff
changeset
|
95 |
305
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
96 public String SQL_USERS_NEXT_ID; |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
97 public String SQL_USERS_INSERT; |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
98 public String SQL_USERS_SELECT_ID_BY_GID; |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
99 public String SQL_USERS_SELECT_GID; |
413
f5ecca16f601
Implement method to find/get a user by its account name
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
410
diff
changeset
|
100 public String SQL_USERS_SELECT_ACCOUNT; |
305
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
101 public String SQL_USERS_DELETE_ID; |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
102 public String SQL_USERS_DELETE_COLLECTIONS; |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
103 public String SQL_USERS_SELECT_ALL; |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
104 public String SQL_USERS_COLLECTIONS; |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
105 public String SQL_USERS_COLLECTION_IDS; |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
106 public String SQL_USERS_DELETE_ALL_COLLECTIONS; |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
107 public String SQL_ARTIFACTS_IN_ONLY_COLLECTION_ONLY; |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
108 public String SQL_OUTDATE_ARTIFACTS_COLLECTION; |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
109 public String SQL_UPDATE_COLLECTION_TTL; |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
110 public String SQL_UPDATE_COLLECTION_NAME; |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
111 public String SQL_OUTDATE_ARTIFACTS_USER; |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
112 public String SQL_DELETE_USER_COLLECTION_ITEMS; |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
113 public String SQL_COLLECTIONS_NEXT_ID; |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
114 public String SQL_COLLECTIONS_INSERT; |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
115 public String SQL_COLLECTIONS_SELECT_USER; |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
116 public String SQL_COLLECTIONS_SELECT_ALL; |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
117 public String SQL_COLLECTIONS_SELECT_GID; |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
118 public String SQL_COLLECTIONS_CREATION_TIME; |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
119 public String SQL_COLLECTIONS_ID_BY_GID; |
343
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
320
diff
changeset
|
120 public String SQL_COLLECTIONS_OLDEST_ARTIFACT; |
305
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
121 public String SQL_DELETE_COLLECTION_ITEMS; |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
122 public String SQL_DELETE_COLLECTION; |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
123 public String SQL_COLLECTION_CHECK_ARTIFACT; |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
124 public String SQL_COLLECTION_ITEMS_ID_NEXTVAL; |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
125 public String SQL_COLLECTION_ITEMS_INSERT; |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
126 public String SQL_COLLECTION_GET_ATTRIBUTE; |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
127 public String SQL_COLLECTION_SET_ATTRIBUTE; |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
128 public String SQL_COLLECTION_ITEM_GET_ATTRIBUTE; |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
129 public String SQL_COLLECTION_ITEM_SET_ATTRIBUTE; |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
130 public String SQL_COLLECTIONS_TOUCH_BY_GID; |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
131 public String SQL_COLLECTION_ITEM_ID_CID_AID; |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
132 public String SQL_COLLECTION_ITEM_OUTDATE_ARTIFACT; |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
133 public String SQL_COLLECTION_ITEM_DELETE; |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
134 public String SQL_COLLECTIONS_TOUCH_BY_ID; |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
135 public String SQL_COLLECTION_ITEMS_LIST_GID; |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
136 public String SQL_ALL_ARTIFACTS; |
550
68f01f10624e
Introduced helper for finding the user name for a given artifact
gernotbelger
parents:
541
diff
changeset
|
137 public String SQL_FIND_USER_BY_ARTIFACT; |
303
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
138 |
128
bfa65a812c7a
Made the backend singleton.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
100
diff
changeset
|
139 /** The singleton.*/ |
bfa65a812c7a
Made the backend singleton.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
100
diff
changeset
|
140 protected static Backend instance; |
bfa65a812c7a
Made the backend singleton.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
100
diff
changeset
|
141 |
305
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
142 protected SQLExecutor sqlExecutor; |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
143 |
310
63122b9dee1d
Added interface to listen events in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
309
diff
changeset
|
144 protected List<BackendListener> listeners; |
63122b9dee1d
Added interface to listen events in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
309
diff
changeset
|
145 |
305
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
146 protected DBConfig config; |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
147 |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
148 /** |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
149 * The database cleaner. Reference is stored here because |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
150 * the cleaner is woken up if the backend finds an outdated |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
151 * artifact. This artifact should be removed as soon as |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
152 * possible. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
153 */ |
30
88972c6daa4f
Added a cleanup thread which periodically removes
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
27
diff
changeset
|
154 protected DatabaseCleaner cleaner; |
88972c6daa4f
Added a cleanup thread which periodically removes
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
27
diff
changeset
|
155 |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
156 /** |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
157 * To revive an artifact from the bytes coming from the database |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
158 * we need the artifact factory which references the artifact |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
159 * serializer which is able to do the reviving job. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
160 */ |
41
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
38
diff
changeset
|
161 protected FactoryLookup factoryLookup; |
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
38
diff
changeset
|
162 |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
163 /** |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
164 * Little helper interface to decouple the ArtifactDatabase |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
165 * from the Backend. A ArtifactDatabase should depend on a |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
166 * Backend but a Backend not from an ArtifactDatabase. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
167 */ |
41
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
38
diff
changeset
|
168 public interface FactoryLookup { |
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
38
diff
changeset
|
169 |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
170 /** |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
171 * Returns an ArtifactFactory which is bound to a given name. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
172 * @param factoryName The name of the artifact factory. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
173 * @return The ArtifactFactory bound to the factory name or |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
174 * null if not matching factory is found. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
175 */ |
41
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
38
diff
changeset
|
176 ArtifactFactory getArtifactFactory(String factoryName); |
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
38
diff
changeset
|
177 |
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
38
diff
changeset
|
178 } // interface FactoryLookup |
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
38
diff
changeset
|
179 |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
180 /** |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
181 * Inner class that brigdes between the persisten form of the |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
182 * artifact and the living one inside the artifact database. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
183 * After the describe(), feed(), advance() and out() operations |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
184 * of the artifact it must be possible to write to modified artifact |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
185 * back into the database. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
186 */ |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
31
diff
changeset
|
187 public final class PersistentArtifact |
14
0d16d1bb2df0
Initial checkin of artigact persistents back by database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
13
diff
changeset
|
188 { |
230
fbd57d2eeaef
Changed semantics of locked artifact ids.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
217
diff
changeset
|
189 private int id; |
41
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
38
diff
changeset
|
190 private Artifact artifact; |
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
38
diff
changeset
|
191 private ArtifactSerializer serializer; |
84
72e2dd4feb31
Added the time to live of an artifact to the CallContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
80
diff
changeset
|
192 private Long ttl; |
14
0d16d1bb2df0
Initial checkin of artigact persistents back by database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
13
diff
changeset
|
193 |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
194 /** |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
195 * Cronstructor to create a persistent artifact. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
196 * @param artifact The living artifact. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
197 * @param serializer The serializer to store the artifact |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
198 * after the operations. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
199 * @param ttl The time to life of the artifact. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
200 * @param id The database id of the artifact. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
201 */ |
41
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
38
diff
changeset
|
202 public PersistentArtifact( |
47
4ae4dc99127d
Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
46
diff
changeset
|
203 Artifact artifact, |
41
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
38
diff
changeset
|
204 ArtifactSerializer serializer, |
84
72e2dd4feb31
Added the time to live of an artifact to the CallContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
80
diff
changeset
|
205 Long ttl, |
41
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
38
diff
changeset
|
206 int id |
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
38
diff
changeset
|
207 ) { |
230
fbd57d2eeaef
Changed semantics of locked artifact ids.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
217
diff
changeset
|
208 this.id = id; |
41
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
38
diff
changeset
|
209 this.artifact = artifact; |
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
38
diff
changeset
|
210 this.serializer = serializer; |
84
72e2dd4feb31
Added the time to live of an artifact to the CallContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
80
diff
changeset
|
211 this.ttl = ttl; |
14
0d16d1bb2df0
Initial checkin of artigact persistents back by database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
13
diff
changeset
|
212 } |
0d16d1bb2df0
Initial checkin of artigact persistents back by database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
13
diff
changeset
|
213 |
230
fbd57d2eeaef
Changed semantics of locked artifact ids.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
217
diff
changeset
|
214 public int getId() { |
fbd57d2eeaef
Changed semantics of locked artifact ids.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
217
diff
changeset
|
215 return id; |
fbd57d2eeaef
Changed semantics of locked artifact ids.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
217
diff
changeset
|
216 } |
fbd57d2eeaef
Changed semantics of locked artifact ids.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
217
diff
changeset
|
217 |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
218 /** |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
219 * Returns the wrapped living artifact. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
220 * @return the living artifact. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
221 */ |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
31
diff
changeset
|
222 public Artifact getArtifact() { |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
31
diff
changeset
|
223 return artifact; |
14
0d16d1bb2df0
Initial checkin of artigact persistents back by database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
13
diff
changeset
|
224 } |
0d16d1bb2df0
Initial checkin of artigact persistents back by database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
13
diff
changeset
|
225 |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
226 /** |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
227 * Returns the serialized which is able to write a |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
228 * modified artifact back into the database. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
229 * @return The serializer. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
230 */ |
41
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
38
diff
changeset
|
231 public ArtifactSerializer getSerializer() { |
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
38
diff
changeset
|
232 return serializer; |
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
38
diff
changeset
|
233 } |
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
38
diff
changeset
|
234 |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
235 /** |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
236 * The time to life of the artifact. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
237 * @return The time to live. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
238 */ |
84
72e2dd4feb31
Added the time to live of an artifact to the CallContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
80
diff
changeset
|
239 public Long getTTL() { |
72e2dd4feb31
Added the time to live of an artifact to the CallContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
80
diff
changeset
|
240 return ttl; |
72e2dd4feb31
Added the time to live of an artifact to the CallContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
80
diff
changeset
|
241 } |
72e2dd4feb31
Added the time to live of an artifact to the CallContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
80
diff
changeset
|
242 |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
243 /** |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
244 * Stores the living artifact back into the database. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
245 */ |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
31
diff
changeset
|
246 public void store() { |
38
93edc04f3a10
Added postgresql support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
34
diff
changeset
|
247 if (logger.isDebugEnabled()) { |
93edc04f3a10
Added postgresql support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
34
diff
changeset
|
248 logger.debug("storing artifact id = " + getId()); |
93edc04f3a10
Added postgresql support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
34
diff
changeset
|
249 } |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
31
diff
changeset
|
250 Backend.this.store(this); |
14
0d16d1bb2df0
Initial checkin of artigact persistents back by database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
13
diff
changeset
|
251 } |
0d16d1bb2df0
Initial checkin of artigact persistents back by database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
13
diff
changeset
|
252 |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
253 /** |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
254 * Only touches the access time of the artifact. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
255 */ |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
31
diff
changeset
|
256 public void touch() { |
38
93edc04f3a10
Added postgresql support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
34
diff
changeset
|
257 if (logger.isDebugEnabled()) { |
93edc04f3a10
Added postgresql support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
34
diff
changeset
|
258 logger.debug("touching artifact id = " + getId()); |
93edc04f3a10
Added postgresql support.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
34
diff
changeset
|
259 } |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
31
diff
changeset
|
260 Backend.this.touch(this); |
14
0d16d1bb2df0
Initial checkin of artigact persistents back by database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
13
diff
changeset
|
261 } |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
31
diff
changeset
|
262 } // class ArtifactWithId |
14
0d16d1bb2df0
Initial checkin of artigact persistents back by database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
13
diff
changeset
|
263 |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
264 /** |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
265 * Default constructor |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
266 */ |
13
0d6badf6af42
Added not yet working backend to artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
267 public Backend() { |
310
63122b9dee1d
Added interface to listen events in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
309
diff
changeset
|
268 listeners = new CopyOnWriteArrayList<BackendListener>(); |
13
0d6badf6af42
Added not yet working backend to artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
269 } |
0d6badf6af42
Added not yet working backend to artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
270 |
305
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
271 public Backend(DBConfig config) { |
312
fa056f9c8a0c
Fixed NPE with list of backend listeners.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
311
diff
changeset
|
272 this(); |
305
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
273 this.config = config; |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
274 sqlExecutor = new SQLExecutor(config.getDBConnection()); |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
275 setupSQL(config.getSQL()); |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
276 } |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
277 |
541
3b1e48d22ce0
Experimentally let database cleaner and backend share the same sql executor.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
481
diff
changeset
|
278 public SQLExecutor getSQLExecutor() { |
3b1e48d22ce0
Experimentally let database cleaner and backend share the same sql executor.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
481
diff
changeset
|
279 return sqlExecutor; |
3b1e48d22ce0
Experimentally let database cleaner and backend share the same sql executor.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
481
diff
changeset
|
280 } |
3b1e48d22ce0
Experimentally let database cleaner and backend share the same sql executor.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
481
diff
changeset
|
281 |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
282 /** |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
283 * Constructor to create a backend with a link to the database cleaner. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
284 * @param cleaner The clean which periodically removes outdated |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
285 * artifacts from the database. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
286 */ |
305
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
287 public Backend(DBConfig config, DatabaseCleaner cleaner) { |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
288 this(config); |
30
88972c6daa4f
Added a cleanup thread which periodically removes
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
27
diff
changeset
|
289 this.cleaner = cleaner; |
88972c6daa4f
Added a cleanup thread which periodically removes
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
27
diff
changeset
|
290 } |
88972c6daa4f
Added a cleanup thread which periodically removes
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
27
diff
changeset
|
291 |
305
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
292 public DBConfig getConfig() { |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
293 return config; |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
294 } |
128
bfa65a812c7a
Made the backend singleton.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
100
diff
changeset
|
295 |
bfa65a812c7a
Made the backend singleton.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
100
diff
changeset
|
296 /** |
bfa65a812c7a
Made the backend singleton.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
100
diff
changeset
|
297 * Returns the singleton of this Backend. |
bfa65a812c7a
Made the backend singleton.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
100
diff
changeset
|
298 * |
bfa65a812c7a
Made the backend singleton.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
100
diff
changeset
|
299 * @return the backend. |
bfa65a812c7a
Made the backend singleton.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
100
diff
changeset
|
300 */ |
bfa65a812c7a
Made the backend singleton.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
100
diff
changeset
|
301 public static synchronized Backend getInstance() { |
bfa65a812c7a
Made the backend singleton.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
100
diff
changeset
|
302 if (instance == null) { |
305
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
303 instance = new Backend(DBConfig.getInstance()); |
128
bfa65a812c7a
Made the backend singleton.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
100
diff
changeset
|
304 } |
bfa65a812c7a
Made the backend singleton.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
100
diff
changeset
|
305 |
bfa65a812c7a
Made the backend singleton.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
100
diff
changeset
|
306 return instance; |
bfa65a812c7a
Made the backend singleton.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
100
diff
changeset
|
307 } |
bfa65a812c7a
Made the backend singleton.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
100
diff
changeset
|
308 |
305
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
309 protected void setupSQL(SQL sql) { |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
310 SQL_NEXT_ID = sql.get("artifacts.id.nextval"); |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
311 SQL_INSERT = sql.get("artifacts.insert"); |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
312 SQL_UPDATE = sql.get("artifacts.update"); |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
313 SQL_TOUCH = sql.get("artifacts.touch"); |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
314 SQL_LOAD_BY_GID = sql.get("artifacts.select.gid"); |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
315 SQL_GET_ID = sql.get("artifacts.get.id"); |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
316 SQL_REPLACE = sql.get("artifacts.replace"); |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
317 SQL_USERS_NEXT_ID = sql.get("users.id.nextval"); |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
318 SQL_USERS_INSERT = sql.get("users.insert"); |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
319 SQL_USERS_SELECT_ID_BY_GID = sql.get("users.select.id.by.gid"); |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
320 SQL_USERS_SELECT_GID = sql.get("users.select.gid"); |
413
f5ecca16f601
Implement method to find/get a user by its account name
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
410
diff
changeset
|
321 SQL_USERS_SELECT_ACCOUNT = sql.get("users.select.account"); |
305
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
322 SQL_USERS_DELETE_ID = sql.get("users.delete.id"); |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
323 SQL_USERS_DELETE_COLLECTIONS = sql.get("users.delete.collections"); |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
324 SQL_USERS_SELECT_ALL = sql.get("users.select.all"); |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
325 SQL_USERS_COLLECTIONS = sql.get("users.collections"); |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
326 SQL_USERS_COLLECTION_IDS = sql.get("users.collection.ids"); |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
327 SQL_USERS_DELETE_ALL_COLLECTIONS = |
307
d96bcb40dbf9
Make artifact server bootable again.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
305
diff
changeset
|
328 sql.get("users.delete.collections"); |
305
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
329 SQL_ARTIFACTS_IN_ONLY_COLLECTION_ONLY = |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
330 sql.get("artifacts.in.one.collection.only"); |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
331 SQL_OUTDATE_ARTIFACTS_COLLECTION = |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
332 sql.get("outdate.artifacts.collection"); |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
333 SQL_UPDATE_COLLECTION_TTL = sql.get("collections.update.ttl"); |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
334 SQL_UPDATE_COLLECTION_NAME = sql.get("collections.update.name"); |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
335 SQL_OUTDATE_ARTIFACTS_USER = sql.get("outdate.artifacts.user"); |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
336 SQL_DELETE_USER_COLLECTION_ITEMS = |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
337 sql.get("delete.user.collection.items"); |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
338 SQL_COLLECTIONS_NEXT_ID = sql.get("collections.id.nextval"); |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
339 SQL_COLLECTIONS_INSERT = sql.get("collections.insert"); |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
340 SQL_COLLECTIONS_SELECT_USER = sql.get("collections.select.user"); |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
341 SQL_COLLECTIONS_SELECT_ALL = sql.get("collections.select.all"); |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
342 SQL_COLLECTIONS_SELECT_GID = sql.get("collections.select.by.gid"); |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
343 SQL_COLLECTIONS_CREATION_TIME = sql.get("collection.creation.time"); |
343
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
320
diff
changeset
|
344 SQL_COLLECTIONS_OLDEST_ARTIFACT = sql.get("collections.artifacts.oldest"); |
344
be883e843539
Fix accidental corruption of key for sql statement.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
343
diff
changeset
|
345 SQL_COLLECTIONS_ID_BY_GID = sql.get("collections.id.by.gid"); |
305
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
346 SQL_DELETE_COLLECTION_ITEMS = sql.get("delete.collection.items"); |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
347 SQL_DELETE_COLLECTION = sql.get("delete.collection"); |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
348 SQL_COLLECTION_CHECK_ARTIFACT = sql.get("collection.check.artifact"); |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
349 SQL_COLLECTION_ITEMS_ID_NEXTVAL = |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
350 sql.get("collection.items.id.nextval"); |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
351 SQL_COLLECTION_ITEMS_INSERT = sql.get("collection.items.insert"); |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
352 SQL_COLLECTION_GET_ATTRIBUTE = sql.get("collection.get.attribute"); |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
353 SQL_COLLECTION_SET_ATTRIBUTE = sql.get("collection.set.attribute"); |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
354 SQL_COLLECTION_ITEM_GET_ATTRIBUTE = |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
355 sql.get("collection.item.get.attribute"); |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
356 SQL_COLLECTION_ITEM_SET_ATTRIBUTE = |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
357 sql.get("collection.item.set.attribute"); |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
358 SQL_COLLECTIONS_TOUCH_BY_GID = sql.get("collections.touch.by.gid"); |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
359 SQL_COLLECTION_ITEM_ID_CID_AID = sql.get("collection.item.id.cid.aid"); |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
360 SQL_COLLECTION_ITEM_OUTDATE_ARTIFACT = |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
361 sql.get("collection.item.outdate.artifact"); |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
362 SQL_COLLECTION_ITEM_DELETE = sql.get("collection.item.delete"); |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
363 SQL_COLLECTIONS_TOUCH_BY_ID = sql.get("collections.touch.by.id"); |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
364 SQL_COLLECTION_ITEMS_LIST_GID = sql.get("collection.items.list.gid"); |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
365 SQL_ALL_ARTIFACTS = sql.get("all.artifacts"); |
550
68f01f10624e
Introduced helper for finding the user name for a given artifact
gernotbelger
parents:
541
diff
changeset
|
366 SQL_FIND_USER_BY_ARTIFACT = sql.get("find.user.by.artifact"); |
305
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
367 } |
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
368 |
310
63122b9dee1d
Added interface to listen events in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
309
diff
changeset
|
369 public void addListener(BackendListener listener) { |
63122b9dee1d
Added interface to listen events in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
309
diff
changeset
|
370 listeners.add(listener); |
313
ddc35c950e97
Backend: Handle forgotten store/create event source.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
312
diff
changeset
|
371 logger.debug("# listeners: " + listeners.size()); |
310
63122b9dee1d
Added interface to listen events in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
309
diff
changeset
|
372 } |
63122b9dee1d
Added interface to listen events in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
309
diff
changeset
|
373 |
311
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
374 public void addAllListeners(List<BackendListener> others) { |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
375 listeners.addAll(others); |
313
ddc35c950e97
Backend: Handle forgotten store/create event source.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
312
diff
changeset
|
376 logger.debug("# listeners: " + listeners.size()); |
311
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
377 } |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
378 |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
379 /** |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
380 * Sets the factory lookup mechanism to decouple ArtifactDatabase |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
381 * and Backend. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
382 * @param factoryLookup |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
383 */ |
41
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
38
diff
changeset
|
384 public void setFactoryLookup(FactoryLookup factoryLookup) { |
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
38
diff
changeset
|
385 this.factoryLookup = factoryLookup; |
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
38
diff
changeset
|
386 } |
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
38
diff
changeset
|
387 |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
388 /** |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
389 * Sets the database cleaner explicitly. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
390 * @param cleaner The database cleaner |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
391 */ |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
31
diff
changeset
|
392 public void setCleaner(DatabaseCleaner cleaner) { |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
31
diff
changeset
|
393 this.cleaner = cleaner; |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
31
diff
changeset
|
394 } |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
31
diff
changeset
|
395 |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
396 /** |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
397 * Returns a new unique identifier to external identify |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
398 * the artifact across the system. This implementation |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
399 * uses random UUIDs v4 to achieve this target. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
400 * @return the new identifier |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
401 */ |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
31
diff
changeset
|
402 public String newIdentifier() { |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
31
diff
changeset
|
403 // TODO: check database for collisions. |
79
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
47
diff
changeset
|
404 return StringUtils.newUUID(); |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
31
diff
changeset
|
405 } |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
31
diff
changeset
|
406 |
177
77cd37a93fca
Backend: isIdentifierValid more symmetric to new newIndentifier
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
176
diff
changeset
|
407 public boolean isValidIdentifier(String identifier) { |
77cd37a93fca
Backend: isIdentifierValid more symmetric to new newIndentifier
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
176
diff
changeset
|
408 return StringUtils.checkUUID(identifier); |
77cd37a93fca
Backend: isIdentifierValid more symmetric to new newIndentifier
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
176
diff
changeset
|
409 } |
77cd37a93fca
Backend: isIdentifierValid more symmetric to new newIndentifier
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
176
diff
changeset
|
410 |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
411 /** |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
412 * Stores a new artifact into the database. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
413 * @param artifact The artifact to be stored |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
414 * @param factory The factory which build the artifact |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
415 * @param ttl The initial time to life of the artifact. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
416 * @return A persistent wrapper around the living |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
417 * artifact to be able to write modification later. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
418 * @throws Exception Thrown if something went wrong with the |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
419 * storage process. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
420 */ |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
31
diff
changeset
|
421 public PersistentArtifact storeInitially( |
41
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
38
diff
changeset
|
422 Artifact artifact, |
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
38
diff
changeset
|
423 ArtifactFactory factory, |
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
38
diff
changeset
|
424 Long ttl |
47
4ae4dc99127d
Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
46
diff
changeset
|
425 ) |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
31
diff
changeset
|
426 throws Exception |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
31
diff
changeset
|
427 { |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
31
diff
changeset
|
428 return new PersistentArtifact( |
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
31
diff
changeset
|
429 artifact, |
41
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
38
diff
changeset
|
430 factory.getSerializer(), |
84
72e2dd4feb31
Added the time to live of an artifact to the CallContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
80
diff
changeset
|
431 ttl, |
41
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
38
diff
changeset
|
432 insertDatabase(artifact, factory, ttl)); |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
31
diff
changeset
|
433 } |
47
4ae4dc99127d
Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
46
diff
changeset
|
434 |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
435 /** |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
436 * Stores an artifact into database if it does not exist there. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
437 * If it exists there it is only updated. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
438 * @param artifact The artifact to store/update. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
439 * @param factory The factory which created the artifact. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
440 * @param ttl The initial time to live of the artifact. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
441 * @return A persistent version of the artifact to be able |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
442 * to store a modification later. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
443 * @throws Exception Thrown if something went wrong during |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
444 * storing/updating. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
445 */ |
80
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
446 public PersistentArtifact storeOrReplace( |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
447 Artifact artifact, |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
448 ArtifactFactory factory, |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
449 Long ttl |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
450 ) |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
451 throws Exception |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
452 { |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
453 return new PersistentArtifact( |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
454 artifact, |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
455 factory.getSerializer(), |
84
72e2dd4feb31
Added the time to live of an artifact to the CallContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
80
diff
changeset
|
456 ttl, |
80
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
457 storeOrReplaceDatabase(artifact, factory, ttl)); |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
458 } |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
459 |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
460 /** |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
461 * Implementors of this interface are able to process the raw |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
462 * artifact data from the database for loading. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
463 */ |
79
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
47
diff
changeset
|
464 public interface ArtifactLoader { |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
47
diff
changeset
|
465 |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
466 /** |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
467 * Creates a custom object from the raw artifact database data. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
468 * @param factory The factory that created this artifact. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
469 * @param ttl The current time to life of the artifact. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
470 * @param bytes The raw artifact bytes from the database. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
471 * @param id The database id of the artifact. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
472 * @return The custom object created by the implementation. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
473 */ |
84
72e2dd4feb31
Added the time to live of an artifact to the CallContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
80
diff
changeset
|
474 Object load(ArtifactFactory factory, Long ttl, byte [] bytes, int id); |
79
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
47
diff
changeset
|
475 |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
47
diff
changeset
|
476 } // interface ArtifactLoader |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
47
diff
changeset
|
477 |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
478 /** |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
479 * Fetches an artifact from the database identified by the |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
480 * given identifier. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
481 * @param identifer The identifier of the artifact. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
482 * @return A persistent wrapper around the found artifact |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
483 * to be able to write back a modifaction later or null |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
484 * if no artifact is found for this identifier. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
485 */ |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
31
diff
changeset
|
486 public PersistentArtifact getArtifact(String identifer) { |
15
9ad6ec2d09c3
Implemented restoring artifacts from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
14
diff
changeset
|
487 |
79
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
47
diff
changeset
|
488 return (PersistentArtifact)loadArtifact( |
86
b2e0cb83631c
Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
84
diff
changeset
|
489 identifer, |
79
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
47
diff
changeset
|
490 new ArtifactLoader() { |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
47
diff
changeset
|
491 |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
47
diff
changeset
|
492 public Object load( |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
47
diff
changeset
|
493 ArtifactFactory factory, |
84
72e2dd4feb31
Added the time to live of an artifact to the CallContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
80
diff
changeset
|
494 Long ttl, |
79
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
47
diff
changeset
|
495 byte [] bytes, |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
47
diff
changeset
|
496 int id |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
47
diff
changeset
|
497 ) { |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
47
diff
changeset
|
498 ArtifactSerializer serializer = factory.getSerializer(); |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
47
diff
changeset
|
499 |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
47
diff
changeset
|
500 Artifact artifact = serializer.fromBytes(bytes); |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
47
diff
changeset
|
501 |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
47
diff
changeset
|
502 return artifact == null |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
47
diff
changeset
|
503 ? null |
84
72e2dd4feb31
Added the time to live of an artifact to the CallContext.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
80
diff
changeset
|
504 : new PersistentArtifact(artifact, serializer, ttl, id); |
79
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
47
diff
changeset
|
505 } |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
47
diff
changeset
|
506 }); |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
47
diff
changeset
|
507 } |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
47
diff
changeset
|
508 |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
509 /** |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
510 * More general loading mechanism for artifacts. The concrete |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
511 * load processing is delegated to the given loader. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
512 * @param identifer The identifier of the artifact. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
513 * @param loader The loader which processes the raw database data. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
514 * @return The object created by the loader. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
515 */ |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
516 public Object loadArtifact( |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
517 final String identifer, |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
518 final ArtifactLoader loader |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
519 ) { |
177
77cd37a93fca
Backend: isIdentifierValid more symmetric to new newIndentifier
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
176
diff
changeset
|
520 if (!isValidIdentifier(identifer)) { |
15
9ad6ec2d09c3
Implemented restoring artifacts from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
14
diff
changeset
|
521 return null; |
9ad6ec2d09c3
Implemented restoring artifacts from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
14
diff
changeset
|
522 } |
9ad6ec2d09c3
Implemented restoring artifacts from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
14
diff
changeset
|
523 |
303
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
524 if (factoryLookup == null) { |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
525 logger.error("factory lookup == null"); |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
526 return false; |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
527 } |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
528 |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
529 final Object [] loaded = new Object[1]; |
15
9ad6ec2d09c3
Implemented restoring artifacts from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
14
diff
changeset
|
530 |
305
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
531 SQLExecutor.Instance exec = sqlExecutor.new Instance() { |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
532 public boolean doIt() throws SQLException { |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
533 prepareStatement(SQL_LOAD_BY_GID); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
534 stmnt.setString(1, identifer); |
41
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
38
diff
changeset
|
535 |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
536 result = stmnt.executeQuery(); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
537 |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
538 if (!result.next()) { |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
539 return false; |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
540 } |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
541 |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
542 int id = result.getInt(1); |
242
b35d32e507b6
Fix for flys/issue9
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
235
diff
changeset
|
543 long ttlX = result.getLong(2); |
b35d32e507b6
Fix for flys/issue9
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
235
diff
changeset
|
544 Long ttl = result.wasNull() ? null : ttlX; |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
545 |
242
b35d32e507b6
Fix for flys/issue9
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
235
diff
changeset
|
546 String factoryName = result.getString(3); |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
547 |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
548 ArtifactFactory factory = factoryLookup |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
549 .getArtifactFactory(factoryName); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
550 |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
551 if (factory == null) { |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
552 logger.error("factory '" + factoryName + "' not found"); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
553 return false; |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
554 } |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
555 |
242
b35d32e507b6
Fix for flys/issue9
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
235
diff
changeset
|
556 byte [] bytes = result.getBytes(4); |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
557 |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
558 loaded[0] = loader.load(factory, ttl, bytes, id); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
559 return true; |
15
9ad6ec2d09c3
Implemented restoring artifacts from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
14
diff
changeset
|
560 } |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
561 }; |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
562 |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
563 return exec.runRead() ? loaded[0] : null; |
15
9ad6ec2d09c3
Implemented restoring artifacts from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
14
diff
changeset
|
564 } |
9ad6ec2d09c3
Implemented restoring artifacts from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
14
diff
changeset
|
565 |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
566 /** |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
567 * Called if the load mechanism found an outdated artifact. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
568 * It wakes up the database cleaner. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
569 * @param id The id of the outdated artifact. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
570 */ |
15
9ad6ec2d09c3
Implemented restoring artifacts from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
14
diff
changeset
|
571 protected void artifactOutdated(int id) { |
79
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
47
diff
changeset
|
572 if (logger.isDebugEnabled()) { |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
47
diff
changeset
|
573 logger.info("artifactOutdated: id = " + id); |
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
47
diff
changeset
|
574 } |
30
88972c6daa4f
Added a cleanup thread which periodically removes
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
27
diff
changeset
|
575 if (cleaner != null) { |
88972c6daa4f
Added a cleanup thread which periodically removes
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
27
diff
changeset
|
576 cleaner.wakeup(); |
88972c6daa4f
Added a cleanup thread which periodically removes
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
27
diff
changeset
|
577 } |
15
9ad6ec2d09c3
Implemented restoring artifacts from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
14
diff
changeset
|
578 } |
9ad6ec2d09c3
Implemented restoring artifacts from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
14
diff
changeset
|
579 |
41
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
38
diff
changeset
|
580 public Artifact reviveArtifact(String factoryName, byte [] bytes) { |
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
38
diff
changeset
|
581 if (factoryLookup == null) { |
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
38
diff
changeset
|
582 logger.error("reviveArtifact: factory lookup == null"); |
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
38
diff
changeset
|
583 return null; |
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
38
diff
changeset
|
584 } |
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
38
diff
changeset
|
585 ArtifactFactory factory = factoryLookup |
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
38
diff
changeset
|
586 .getArtifactFactory(factoryName); |
32
c2d53bd30ab8
Re-factored artifact API for better integration of background processing.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
31
diff
changeset
|
587 |
41
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
38
diff
changeset
|
588 if (factory == null) { |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
589 logger.error( |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
590 "reviveArtifact: no factory '" + factoryName + "' found"); |
41
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
38
diff
changeset
|
591 return null; |
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
38
diff
changeset
|
592 } |
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
38
diff
changeset
|
593 |
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
38
diff
changeset
|
594 ArtifactSerializer serializer = factory.getSerializer(); |
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
38
diff
changeset
|
595 |
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
38
diff
changeset
|
596 return serializer.fromBytes(bytes); |
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
38
diff
changeset
|
597 } |
5e4bc24ea438
Made serilization more flexible. DB update required!!!
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
38
diff
changeset
|
598 |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
599 /** |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
600 * Internal method to store/replace an artifact inside the database. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
601 * If an artifact with the given identifier does not exists it is |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
602 * created else only the content data is updated. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
603 * @param artifact The artifact to be store/update inside the database. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
604 * @param factory The factory that created the artifact. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
605 * @param ttl The initial time to life of the artifact. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
606 * @return The database id of the stored/updated artifact. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
607 */ |
80
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
608 protected int storeOrReplaceDatabase( |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
609 final Artifact artifact, |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
610 final ArtifactFactory factory, |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
611 final Long ttl |
80
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
612 ) { |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
613 final String uuid = artifact.identifier(); |
80
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
614 |
177
77cd37a93fca
Backend: isIdentifierValid more symmetric to new newIndentifier
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
176
diff
changeset
|
615 if (!isValidIdentifier(uuid)) { |
80
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
616 throw new RuntimeException("No valid UUID"); |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
617 } |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
618 |
313
ddc35c950e97
Backend: Handle forgotten store/create event source.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
312
diff
changeset
|
619 final int [] id = new int[1]; |
ddc35c950e97
Backend: Handle forgotten store/create event source.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
312
diff
changeset
|
620 final boolean [] stored = new boolean[1]; |
80
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
621 |
305
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
622 SQLExecutor.Instance exec = sqlExecutor.new Instance() { |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
623 public boolean doIt() throws SQLException { |
80
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
624 |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
625 prepareStatement(SQL_GET_ID); |
80
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
626 stmnt.setString(1, uuid); |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
627 result = stmnt.executeQuery(); |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
628 |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
629 Integer ID = result.next() |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
630 ? Integer.valueOf(result.getInt(1)) |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
631 : null; |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
632 |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
633 reset(); |
80
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
634 |
313
ddc35c950e97
Backend: Handle forgotten store/create event source.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
312
diff
changeset
|
635 if (stored[0] = ID != null) { // already in database |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
636 prepareStatement(SQL_REPLACE); |
80
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
637 |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
638 if (ttl == null) { |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
639 stmnt.setNull(1, Types.BIGINT); |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
640 } |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
641 else { |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
642 stmnt.setLong(1, ttl.longValue()); |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
643 } |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
644 |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
645 stmnt.setString(2, factory.getName()); |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
646 stmnt.setBytes( |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
647 3, |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
648 factory.getSerializer().toBytes(artifact)); |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
649 id[0] = ID.intValue(); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
650 stmnt.setInt(4, id[0]); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
651 } |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
652 else { // new artifact |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
653 prepareStatement(SQL_NEXT_ID); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
654 result = stmnt.executeQuery(); |
80
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
655 |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
656 if (!result.next()) { |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
657 logger.error("No id generated"); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
658 return false; |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
659 } |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
660 |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
661 reset(); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
662 |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
663 prepareStatement(SQL_INSERT); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
664 |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
665 id[0] = result.getInt(1); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
666 stmnt.setInt(1, id[0]); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
667 stmnt.setString(2, uuid); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
668 if (ttl == null) { |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
669 stmnt.setNull(3, Types.BIGINT); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
670 } |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
671 else { |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
672 stmnt.setLong(3, ttl.longValue()); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
673 } |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
674 |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
675 stmnt.setString(4, factory.getName()); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
676 |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
677 stmnt.setBytes( |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
678 5, |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
679 factory.getSerializer().toBytes(artifact)); |
80
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
680 } |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
681 stmnt.execute(); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
682 conn.commit(); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
683 return true; |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
684 } |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
685 }; |
80
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
686 |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
687 if (!exec.runWrite()) { |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
688 throw new RuntimeException("failed insert artifact into database"); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
689 } |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
690 |
313
ddc35c950e97
Backend: Handle forgotten store/create event source.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
312
diff
changeset
|
691 if (stored[0]) { |
ddc35c950e97
Backend: Handle forgotten store/create event source.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
312
diff
changeset
|
692 fireStoredArtifact(artifact); |
ddc35c950e97
Backend: Handle forgotten store/create event source.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
312
diff
changeset
|
693 } |
ddc35c950e97
Backend: Handle forgotten store/create event source.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
312
diff
changeset
|
694 else { |
ddc35c950e97
Backend: Handle forgotten store/create event source.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
312
diff
changeset
|
695 fireCreatedArtifact(artifact); |
ddc35c950e97
Backend: Handle forgotten store/create event source.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
312
diff
changeset
|
696 } |
ddc35c950e97
Backend: Handle forgotten store/create event source.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
312
diff
changeset
|
697 |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
698 return id[0]; |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
699 } |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
700 |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
701 /** |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
702 * Internal method to store an artifact inside the database. |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
703 * @param artifact The artifact to be stored. |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
704 * @param factory The factory which created the artifact. |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
705 * @param ttl The initial time to live of the artifact. |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
706 * @return The database id of the stored artifact. |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
707 */ |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
708 protected int insertDatabase( |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
709 final Artifact artifact, |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
710 final ArtifactFactory factory, |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
711 final Long ttl |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
712 ) { |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
713 final int [] id = new int[1]; |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
714 |
305
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
715 SQLExecutor.Instance exec = sqlExecutor.new Instance() { |
541
3b1e48d22ce0
Experimentally let database cleaner and backend share the same sql executor.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
481
diff
changeset
|
716 @Override |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
717 public boolean doIt() throws SQLException { |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
718 prepareStatement(SQL_NEXT_ID); |
80
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
719 result = stmnt.executeQuery(); |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
720 |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
721 if (!result.next()) { |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
722 logger.error("No id generated"); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
723 return false; |
80
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
724 } |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
725 |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
726 id[0] = result.getInt(1); |
80
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
727 |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
728 reset(); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
729 prepareStatement(SQL_INSERT); |
80
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
730 |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
731 String uuid = artifact.identifier(); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
732 stmnt.setInt(1, id[0]); |
80
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
733 stmnt.setString(2, uuid); |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
734 if (ttl == null) { |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
735 stmnt.setNull(3, Types.BIGINT); |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
736 } |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
737 else { |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
738 stmnt.setLong(3, ttl.longValue()); |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
739 } |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
740 |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
741 stmnt.setString(4, factory.getName()); |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
742 |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
743 stmnt.setBytes( |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
744 5, |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
745 factory.getSerializer().toBytes(artifact)); |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
746 |
8447467cef86
Implementation to import artifacts from incoming xml documents (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
79
diff
changeset
|
747 stmnt.execute(); |
14
0d16d1bb2df0
Initial checkin of artigact persistents back by database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
13
diff
changeset
|
748 |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
749 conn.commit(); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
750 return true; |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
751 } |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
752 }; |
14
0d16d1bb2df0
Initial checkin of artigact persistents back by database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
13
diff
changeset
|
753 |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
754 if (!exec.runWrite()) { |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
755 throw new RuntimeException("failed insert artifact into database"); |
14
0d16d1bb2df0
Initial checkin of artigact persistents back by database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
13
diff
changeset
|
756 } |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
757 |
311
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
758 fireCreatedArtifact(artifact); |
310
63122b9dee1d
Added interface to listen events in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
309
diff
changeset
|
759 |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
760 return id[0]; |
14
0d16d1bb2df0
Initial checkin of artigact persistents back by database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
13
diff
changeset
|
761 } |
0d16d1bb2df0
Initial checkin of artigact persistents back by database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
13
diff
changeset
|
762 |
311
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
763 protected void fireCreatedArtifact(Artifact artifact) { |
310
63122b9dee1d
Added interface to listen events in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
309
diff
changeset
|
764 for (BackendListener listener: listeners) { |
311
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
765 listener.createdArtifact(artifact, this); |
310
63122b9dee1d
Added interface to listen events in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
309
diff
changeset
|
766 } |
63122b9dee1d
Added interface to listen events in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
309
diff
changeset
|
767 } |
63122b9dee1d
Added interface to listen events in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
309
diff
changeset
|
768 |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
769 /** |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
770 * Touches the access timestamp of a given artifact to prevent |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
771 * that it will be removed from the database by the database cleaner. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
772 * @param artifact The persistent wrapper around the living artifact. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
773 */ |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
774 public void touch(final PersistentArtifact artifact) { |
305
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
775 sqlExecutor.new Instance() { |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
776 public boolean doIt() throws SQLException { |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
777 prepareStatement(SQL_TOUCH); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
778 stmnt.setInt(1, artifact.getId()); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
779 stmnt.execute(); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
780 conn.commit(); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
781 return true; |
14
0d16d1bb2df0
Initial checkin of artigact persistents back by database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
13
diff
changeset
|
782 } |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
783 }.runWrite(); |
14
0d16d1bb2df0
Initial checkin of artigact persistents back by database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
13
diff
changeset
|
784 } |
0d16d1bb2df0
Initial checkin of artigact persistents back by database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
13
diff
changeset
|
785 |
90
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
786 /** |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
787 * Writes modification of an artifact back to the database. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
788 * @param artifact The persistent wrapper around a living |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
789 * artifact. |
68285f7bc476
More javadoc.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
86
diff
changeset
|
790 */ |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
791 public void store(final PersistentArtifact artifact) { |
310
63122b9dee1d
Added interface to listen events in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
309
diff
changeset
|
792 boolean success = sqlExecutor.new Instance() { |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
793 public boolean doIt() throws SQLException { |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
794 prepareStatement(SQL_UPDATE); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
795 stmnt.setInt(2, artifact.getId()); |
26
83a059c204f8
Connected /create with artifact db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
24
diff
changeset
|
796 |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
797 byte [] bytes = artifact |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
798 .getSerializer() |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
799 .toBytes(artifact.getArtifact()); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
800 |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
801 stmnt.setBytes(1, bytes); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
802 stmnt.execute(); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
803 conn.commit(); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
804 return true; |
26
83a059c204f8
Connected /create with artifact db.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
24
diff
changeset
|
805 } |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
806 }.runWrite(); |
310
63122b9dee1d
Added interface to listen events in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
309
diff
changeset
|
807 |
63122b9dee1d
Added interface to listen events in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
309
diff
changeset
|
808 if (success) { |
311
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
809 fireStoredArtifact(artifact.getArtifact()); |
310
63122b9dee1d
Added interface to listen events in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
309
diff
changeset
|
810 } |
14
0d16d1bb2df0
Initial checkin of artigact persistents back by database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
13
diff
changeset
|
811 } |
133
2950c6011afa
Fixed typo in keys.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
128
diff
changeset
|
812 |
311
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
813 protected void fireStoredArtifact(Artifact artifact) { |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
814 for (BackendListener listener: listeners) { |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
815 listener.storedArtifact(artifact, this); |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
816 } |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
817 } |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
818 |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
819 |
133
2950c6011afa
Fixed typo in keys.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
128
diff
changeset
|
820 public User createUser( |
233
16cd059945e5
Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
230
diff
changeset
|
821 final String name, |
410
f456d9d55541
Read the account information from the database
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
393
diff
changeset
|
822 final String account, |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
823 final Document role, |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
824 final UserFactory factory, |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
825 final Object context |
133
2950c6011afa
Fixed typo in keys.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
128
diff
changeset
|
826 ) { |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
827 final User [] user = new User[1]; |
138
b90e831d3dfe
Call database to create a new user.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
133
diff
changeset
|
828 |
235
3e29395ebac6
The XML documents stored aside users, collections and collection items are now compressed/decompressed transparently.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
233
diff
changeset
|
829 final byte [] roleData = XMLUtils.toByteArray(role, true); |
3e29395ebac6
The XML documents stored aside users, collections and collection items are now compressed/decompressed transparently.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
233
diff
changeset
|
830 |
305
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
831 SQLExecutor.Instance exec = sqlExecutor.new Instance() { |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
832 public boolean doIt() throws SQLException { |
138
b90e831d3dfe
Call database to create a new user.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
133
diff
changeset
|
833 |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
834 prepareStatement(SQL_USERS_NEXT_ID); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
835 result = stmnt.executeQuery(); |
138
b90e831d3dfe
Call database to create a new user.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
133
diff
changeset
|
836 |
146
967dc552455d
Enable backend to delete users
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
145
diff
changeset
|
837 if (!result.next()) { |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
838 return false; |
138
b90e831d3dfe
Call database to create a new user.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
133
diff
changeset
|
839 } |
b90e831d3dfe
Call database to create a new user.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
133
diff
changeset
|
840 |
145
c0d025df722d
Enable backend to delete users
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
144
diff
changeset
|
841 int id = result.getInt(1); |
138
b90e831d3dfe
Call database to create a new user.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
133
diff
changeset
|
842 |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
843 reset(); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
844 |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
845 String identifier = newIdentifier(); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
846 |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
847 prepareStatement(SQL_USERS_INSERT); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
848 |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
849 stmnt.setInt(1, id); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
850 stmnt.setString(2, identifier); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
851 stmnt.setString(3, name); |
410
f456d9d55541
Read the account information from the database
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
393
diff
changeset
|
852 stmnt.setString(4, account); |
138
b90e831d3dfe
Call database to create a new user.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
133
diff
changeset
|
853 |
b90e831d3dfe
Call database to create a new user.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
133
diff
changeset
|
854 if (roleData == null) { |
481
6f6a5b229a7a
Use correct data type for user role in sql statement.
Raimund Renkert <rrenkert@intevation.de>
parents:
475
diff
changeset
|
855 stmnt.setNull(5, Types.BINARY); |
138
b90e831d3dfe
Call database to create a new user.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
133
diff
changeset
|
856 } |
b90e831d3dfe
Call database to create a new user.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
133
diff
changeset
|
857 else { |
410
f456d9d55541
Read the account information from the database
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
393
diff
changeset
|
858 stmnt.setBytes(5, roleData); |
138
b90e831d3dfe
Call database to create a new user.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
133
diff
changeset
|
859 } |
b90e831d3dfe
Call database to create a new user.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
133
diff
changeset
|
860 |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
861 stmnt.execute(); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
862 conn.commit(); |
138
b90e831d3dfe
Call database to create a new user.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
133
diff
changeset
|
863 |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
864 user[0] = factory.createUser( |
410
f456d9d55541
Read the account information from the database
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
393
diff
changeset
|
865 identifier, name, account, role, context); |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
866 return true; |
138
b90e831d3dfe
Call database to create a new user.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
133
diff
changeset
|
867 } |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
868 }; |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
869 |
311
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
870 boolean success = exec.runWrite(); |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
871 |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
872 if (success) { |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
873 fireCreatedUser(user[0]); |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
874 return user[0]; |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
875 } |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
876 |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
877 return null; |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
878 } |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
879 |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
880 protected void fireCreatedUser(User user) { |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
881 for (BackendListener listener: listeners) { |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
882 listener.createdUser(user, this); |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
883 } |
133
2950c6011afa
Fixed typo in keys.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
128
diff
changeset
|
884 } |
2950c6011afa
Fixed typo in keys.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
128
diff
changeset
|
885 |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
886 public boolean deleteUser(final String identifier) { |
144
5369582d4fbf
Enable backend to delete users
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
138
diff
changeset
|
887 |
177
77cd37a93fca
Backend: isIdentifierValid more symmetric to new newIndentifier
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
176
diff
changeset
|
888 if (!isValidIdentifier(identifier)) { |
154
1a72f08ce8d7
Propagate delete user errors correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
153
diff
changeset
|
889 return false; |
147
9a64e0c1c737
Added code to load user from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
146
diff
changeset
|
890 } |
9a64e0c1c737
Added code to load user from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
146
diff
changeset
|
891 |
305
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
892 SQLExecutor.Instance exec = sqlExecutor.new Instance() { |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
893 public boolean doIt() throws SQLException { |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
894 prepareStatement(SQL_USERS_SELECT_ID_BY_GID); |
144
5369582d4fbf
Enable backend to delete users
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
138
diff
changeset
|
895 |
5369582d4fbf
Enable backend to delete users
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
138
diff
changeset
|
896 stmnt.setString(1, identifier); |
5369582d4fbf
Enable backend to delete users
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
138
diff
changeset
|
897 result = stmnt.executeQuery(); |
5369582d4fbf
Enable backend to delete users
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
138
diff
changeset
|
898 |
5369582d4fbf
Enable backend to delete users
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
138
diff
changeset
|
899 if (!result.next()) { // No such user |
154
1a72f08ce8d7
Propagate delete user errors correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
153
diff
changeset
|
900 return false; |
144
5369582d4fbf
Enable backend to delete users
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
138
diff
changeset
|
901 } |
5369582d4fbf
Enable backend to delete users
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
138
diff
changeset
|
902 |
5369582d4fbf
Enable backend to delete users
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
138
diff
changeset
|
903 int id = result.getInt(1); |
5369582d4fbf
Enable backend to delete users
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
138
diff
changeset
|
904 |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
905 reset(); |
144
5369582d4fbf
Enable backend to delete users
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
138
diff
changeset
|
906 |
5369582d4fbf
Enable backend to delete users
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
138
diff
changeset
|
907 // outdate the artifacts exclusively used by the user |
5369582d4fbf
Enable backend to delete users
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
138
diff
changeset
|
908 |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
909 prepareStatement(SQL_OUTDATE_ARTIFACTS_USER); |
144
5369582d4fbf
Enable backend to delete users
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
138
diff
changeset
|
910 stmnt.setInt(1, id); |
5369582d4fbf
Enable backend to delete users
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
138
diff
changeset
|
911 stmnt.setInt(2, id); |
5369582d4fbf
Enable backend to delete users
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
138
diff
changeset
|
912 stmnt.execute(); |
5369582d4fbf
Enable backend to delete users
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
138
diff
changeset
|
913 |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
914 reset(); |
144
5369582d4fbf
Enable backend to delete users
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
138
diff
changeset
|
915 |
5369582d4fbf
Enable backend to delete users
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
138
diff
changeset
|
916 // delete the collection items of the user |
5369582d4fbf
Enable backend to delete users
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
138
diff
changeset
|
917 |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
918 prepareStatement(SQL_DELETE_USER_COLLECTION_ITEMS); |
144
5369582d4fbf
Enable backend to delete users
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
138
diff
changeset
|
919 stmnt.setInt(1, id); |
5369582d4fbf
Enable backend to delete users
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
138
diff
changeset
|
920 stmnt.execute(); |
233
16cd059945e5
Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
230
diff
changeset
|
921 |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
922 reset(); |
144
5369582d4fbf
Enable backend to delete users
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
138
diff
changeset
|
923 |
5369582d4fbf
Enable backend to delete users
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
138
diff
changeset
|
924 // delete the collections of the user |
5369582d4fbf
Enable backend to delete users
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
138
diff
changeset
|
925 |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
926 prepareStatement(SQL_USERS_DELETE_COLLECTIONS); |
144
5369582d4fbf
Enable backend to delete users
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
138
diff
changeset
|
927 stmnt.setInt(1, id); |
5369582d4fbf
Enable backend to delete users
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
138
diff
changeset
|
928 stmnt.execute(); |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
929 |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
930 reset(); |
144
5369582d4fbf
Enable backend to delete users
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
138
diff
changeset
|
931 |
5369582d4fbf
Enable backend to delete users
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
138
diff
changeset
|
932 // delete the user |
5369582d4fbf
Enable backend to delete users
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
138
diff
changeset
|
933 |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
934 prepareStatement(SQL_USERS_DELETE_ID); |
144
5369582d4fbf
Enable backend to delete users
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
138
diff
changeset
|
935 stmnt.setInt(1, id); |
5369582d4fbf
Enable backend to delete users
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
138
diff
changeset
|
936 stmnt.execute(); |
5369582d4fbf
Enable backend to delete users
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
138
diff
changeset
|
937 |
5369582d4fbf
Enable backend to delete users
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
138
diff
changeset
|
938 conn.commit(); |
154
1a72f08ce8d7
Propagate delete user errors correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
153
diff
changeset
|
939 return true; |
144
5369582d4fbf
Enable backend to delete users
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
138
diff
changeset
|
940 } |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
941 }; |
154
1a72f08ce8d7
Propagate delete user errors correctly.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
153
diff
changeset
|
942 |
311
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
943 boolean success = exec.runWrite(); |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
944 |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
945 if (success) { |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
946 fireDeletedUser(identifier); |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
947 } |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
948 |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
949 return success; |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
950 } |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
951 |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
952 protected void fireDeletedUser(String identifier) { |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
953 for (BackendListener listener: listeners) { |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
954 listener.deletedUser(identifier, this); |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
955 } |
133
2950c6011afa
Fixed typo in keys.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
128
diff
changeset
|
956 } |
2950c6011afa
Fixed typo in keys.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
128
diff
changeset
|
957 |
157
6e6965873a48
Simplified creation of users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
156
diff
changeset
|
958 public User getUser( |
233
16cd059945e5
Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
230
diff
changeset
|
959 final String identifier, |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
960 final UserFactory factory, |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
961 final Object context |
157
6e6965873a48
Simplified creation of users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
156
diff
changeset
|
962 ) { |
177
77cd37a93fca
Backend: isIdentifierValid more symmetric to new newIndentifier
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
176
diff
changeset
|
963 if (!isValidIdentifier(identifier)) { |
147
9a64e0c1c737
Added code to load user from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
146
diff
changeset
|
964 logger.debug("Invalid UUID: '" + identifier + "'"); |
9a64e0c1c737
Added code to load user from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
146
diff
changeset
|
965 return null; |
9a64e0c1c737
Added code to load user from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
146
diff
changeset
|
966 } |
9a64e0c1c737
Added code to load user from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
146
diff
changeset
|
967 |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
968 final User [] user = new User[1]; |
147
9a64e0c1c737
Added code to load user from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
146
diff
changeset
|
969 |
305
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
970 SQLExecutor.Instance exec = sqlExecutor.new Instance() { |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
971 public boolean doIt() throws SQLException { |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
972 prepareStatement(SQL_USERS_SELECT_GID); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
973 stmnt.setString(1, identifier); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
974 result = stmnt.executeQuery(); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
975 if (!result.next()) { // no such user |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
976 return false; |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
977 } |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
978 // omit id |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
979 String name = result.getString(2); |
410
f456d9d55541
Read the account information from the database
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
393
diff
changeset
|
980 String account = result.getString(3); |
f456d9d55541
Read the account information from the database
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
393
diff
changeset
|
981 byte [] roleData = result.getBytes(4); |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
982 |
432
da33275fb765
Check if roleData is null before reading it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
413
diff
changeset
|
983 Document role = null; |
da33275fb765
Check if roleData is null before reading it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
413
diff
changeset
|
984 if (roleData != null) { |
da33275fb765
Check if roleData is null before reading it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
413
diff
changeset
|
985 role = XMLUtils.fromByteArray(roleData, true); |
da33275fb765
Check if roleData is null before reading it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
413
diff
changeset
|
986 } |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
987 |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
988 user[0] = factory.createUser( |
410
f456d9d55541
Read the account information from the database
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
393
diff
changeset
|
989 identifier, name, account, role, context); |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
990 return true; |
147
9a64e0c1c737
Added code to load user from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
146
diff
changeset
|
991 } |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
992 }; |
147
9a64e0c1c737
Added code to load user from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
146
diff
changeset
|
993 |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
994 return exec.runRead() ? user[0] : null; |
133
2950c6011afa
Fixed typo in keys.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
128
diff
changeset
|
995 } |
2950c6011afa
Fixed typo in keys.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
128
diff
changeset
|
996 |
413
f5ecca16f601
Implement method to find/get a user by its account name
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
410
diff
changeset
|
997 /** |
451
e79ad624f94c
Typo fix in log message.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
432
diff
changeset
|
998 * Find/Get user by account. |
413
f5ecca16f601
Implement method to find/get a user by its account name
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
410
diff
changeset
|
999 */ |
f5ecca16f601
Implement method to find/get a user by its account name
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
410
diff
changeset
|
1000 public User findUser( |
f5ecca16f601
Implement method to find/get a user by its account name
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
410
diff
changeset
|
1001 final String account, |
f5ecca16f601
Implement method to find/get a user by its account name
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
410
diff
changeset
|
1002 final UserFactory factory, |
f5ecca16f601
Implement method to find/get a user by its account name
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
410
diff
changeset
|
1003 final Object context |
f5ecca16f601
Implement method to find/get a user by its account name
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
410
diff
changeset
|
1004 ) { |
f5ecca16f601
Implement method to find/get a user by its account name
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
410
diff
changeset
|
1005 |
f5ecca16f601
Implement method to find/get a user by its account name
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
410
diff
changeset
|
1006 final User [] user = new User[1]; |
451
e79ad624f94c
Typo fix in log message.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
432
diff
changeset
|
1007 logger.debug("Trying to find user by account " + account); |
413
f5ecca16f601
Implement method to find/get a user by its account name
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
410
diff
changeset
|
1008 |
f5ecca16f601
Implement method to find/get a user by its account name
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
410
diff
changeset
|
1009 SQLExecutor.Instance exec = sqlExecutor.new Instance() { |
f5ecca16f601
Implement method to find/get a user by its account name
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
410
diff
changeset
|
1010 public boolean doIt() throws SQLException { |
f5ecca16f601
Implement method to find/get a user by its account name
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
410
diff
changeset
|
1011 prepareStatement(SQL_USERS_SELECT_ACCOUNT); |
f5ecca16f601
Implement method to find/get a user by its account name
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
410
diff
changeset
|
1012 stmnt.setString(1, account); |
f5ecca16f601
Implement method to find/get a user by its account name
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
410
diff
changeset
|
1013 result = stmnt.executeQuery(); |
f5ecca16f601
Implement method to find/get a user by its account name
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
410
diff
changeset
|
1014 if (!result.next()) { // no such user |
f5ecca16f601
Implement method to find/get a user by its account name
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
410
diff
changeset
|
1015 logger.debug("No user found."); |
f5ecca16f601
Implement method to find/get a user by its account name
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
410
diff
changeset
|
1016 return false; |
f5ecca16f601
Implement method to find/get a user by its account name
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
410
diff
changeset
|
1017 } |
f5ecca16f601
Implement method to find/get a user by its account name
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
410
diff
changeset
|
1018 String identifier = result.getString(1); |
f5ecca16f601
Implement method to find/get a user by its account name
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
410
diff
changeset
|
1019 String name = result.getString(2); |
f5ecca16f601
Implement method to find/get a user by its account name
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
410
diff
changeset
|
1020 String account = result.getString(3); |
f5ecca16f601
Implement method to find/get a user by its account name
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
410
diff
changeset
|
1021 byte [] roleData = result.getBytes(4); |
f5ecca16f601
Implement method to find/get a user by its account name
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
410
diff
changeset
|
1022 |
432
da33275fb765
Check if roleData is null before reading it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
413
diff
changeset
|
1023 Document role = null; |
da33275fb765
Check if roleData is null before reading it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
413
diff
changeset
|
1024 if (roleData != null) { |
da33275fb765
Check if roleData is null before reading it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
413
diff
changeset
|
1025 role = XMLUtils.fromByteArray(roleData, true); |
da33275fb765
Check if roleData is null before reading it
Björn Ricks <bjoern.ricks@intevation.de>
parents:
413
diff
changeset
|
1026 } |
413
f5ecca16f601
Implement method to find/get a user by its account name
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
410
diff
changeset
|
1027 |
f5ecca16f601
Implement method to find/get a user by its account name
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
410
diff
changeset
|
1028 user[0] = factory.createUser( |
f5ecca16f601
Implement method to find/get a user by its account name
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
410
diff
changeset
|
1029 identifier, name, account, role, context); |
f5ecca16f601
Implement method to find/get a user by its account name
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
410
diff
changeset
|
1030 return true; |
f5ecca16f601
Implement method to find/get a user by its account name
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
410
diff
changeset
|
1031 } |
f5ecca16f601
Implement method to find/get a user by its account name
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
410
diff
changeset
|
1032 }; |
f5ecca16f601
Implement method to find/get a user by its account name
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
410
diff
changeset
|
1033 |
f5ecca16f601
Implement method to find/get a user by its account name
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
410
diff
changeset
|
1034 return exec.runRead() ? user[0] : null; |
f5ecca16f601
Implement method to find/get a user by its account name
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
410
diff
changeset
|
1035 } |
550
68f01f10624e
Introduced helper for finding the user name for a given artifact
gernotbelger
parents:
541
diff
changeset
|
1036 |
68f01f10624e
Introduced helper for finding the user name for a given artifact
gernotbelger
parents:
541
diff
changeset
|
1037 /** Find the owner of a given artifact */ |
68f01f10624e
Introduced helper for finding the user name for a given artifact
gernotbelger
parents:
541
diff
changeset
|
1038 public String findUserName(final String artifactGid) { |
68f01f10624e
Introduced helper for finding the user name for a given artifact
gernotbelger
parents:
541
diff
changeset
|
1039 |
68f01f10624e
Introduced helper for finding the user name for a given artifact
gernotbelger
parents:
541
diff
changeset
|
1040 final String[] returnValue = new String[1]; |
68f01f10624e
Introduced helper for finding the user name for a given artifact
gernotbelger
parents:
541
diff
changeset
|
1041 |
68f01f10624e
Introduced helper for finding the user name for a given artifact
gernotbelger
parents:
541
diff
changeset
|
1042 final SQLExecutor.Instance exec = this.sqlExecutor.new Instance() { |
68f01f10624e
Introduced helper for finding the user name for a given artifact
gernotbelger
parents:
541
diff
changeset
|
1043 |
68f01f10624e
Introduced helper for finding the user name for a given artifact
gernotbelger
parents:
541
diff
changeset
|
1044 @Override |
68f01f10624e
Introduced helper for finding the user name for a given artifact
gernotbelger
parents:
541
diff
changeset
|
1045 public boolean doIt() throws SQLException { |
68f01f10624e
Introduced helper for finding the user name for a given artifact
gernotbelger
parents:
541
diff
changeset
|
1046 |
68f01f10624e
Introduced helper for finding the user name for a given artifact
gernotbelger
parents:
541
diff
changeset
|
1047 prepareStatement(Backend.this.SQL_FIND_USER_BY_ARTIFACT); |
68f01f10624e
Introduced helper for finding the user name for a given artifact
gernotbelger
parents:
541
diff
changeset
|
1048 this.stmnt.setString(1, artifactGid); |
68f01f10624e
Introduced helper for finding the user name for a given artifact
gernotbelger
parents:
541
diff
changeset
|
1049 |
68f01f10624e
Introduced helper for finding the user name for a given artifact
gernotbelger
parents:
541
diff
changeset
|
1050 this.result = this.stmnt.executeQuery(); |
68f01f10624e
Introduced helper for finding the user name for a given artifact
gernotbelger
parents:
541
diff
changeset
|
1051 |
68f01f10624e
Introduced helper for finding the user name for a given artifact
gernotbelger
parents:
541
diff
changeset
|
1052 // final HashMap<String, LazyBackendUser> users = new HashMap<String, LazyBackendUser>(); |
68f01f10624e
Introduced helper for finding the user name for a given artifact
gernotbelger
parents:
541
diff
changeset
|
1053 |
68f01f10624e
Introduced helper for finding the user name for a given artifact
gernotbelger
parents:
541
diff
changeset
|
1054 while (this.result.next()) { |
68f01f10624e
Introduced helper for finding the user name for a given artifact
gernotbelger
parents:
541
diff
changeset
|
1055 // final String userIdentifier = this.result.getString(1); |
68f01f10624e
Introduced helper for finding the user name for a given artifact
gernotbelger
parents:
541
diff
changeset
|
1056 final String userName = this.result.getString(2); |
68f01f10624e
Introduced helper for finding the user name for a given artifact
gernotbelger
parents:
541
diff
changeset
|
1057 |
68f01f10624e
Introduced helper for finding the user name for a given artifact
gernotbelger
parents:
541
diff
changeset
|
1058 // We only need the name at the moment, else we could do this: User user = new LazyBackendUser( |
68f01f10624e
Introduced helper for finding the user name for a given artifact
gernotbelger
parents:
541
diff
changeset
|
1059 // userIdentifier, userFactory, Backend.this, context); |
68f01f10624e
Introduced helper for finding the user name for a given artifact
gernotbelger
parents:
541
diff
changeset
|
1060 returnValue[0] = userName; |
68f01f10624e
Introduced helper for finding the user name for a given artifact
gernotbelger
parents:
541
diff
changeset
|
1061 return true; |
68f01f10624e
Introduced helper for finding the user name for a given artifact
gernotbelger
parents:
541
diff
changeset
|
1062 } |
68f01f10624e
Introduced helper for finding the user name for a given artifact
gernotbelger
parents:
541
diff
changeset
|
1063 |
68f01f10624e
Introduced helper for finding the user name for a given artifact
gernotbelger
parents:
541
diff
changeset
|
1064 return true; |
68f01f10624e
Introduced helper for finding the user name for a given artifact
gernotbelger
parents:
541
diff
changeset
|
1065 } |
68f01f10624e
Introduced helper for finding the user name for a given artifact
gernotbelger
parents:
541
diff
changeset
|
1066 }; |
68f01f10624e
Introduced helper for finding the user name for a given artifact
gernotbelger
parents:
541
diff
changeset
|
1067 |
68f01f10624e
Introduced helper for finding the user name for a given artifact
gernotbelger
parents:
541
diff
changeset
|
1068 if (exec.runRead()) |
68f01f10624e
Introduced helper for finding the user name for a given artifact
gernotbelger
parents:
541
diff
changeset
|
1069 return returnValue[0]; |
68f01f10624e
Introduced helper for finding the user name for a given artifact
gernotbelger
parents:
541
diff
changeset
|
1070 |
68f01f10624e
Introduced helper for finding the user name for a given artifact
gernotbelger
parents:
541
diff
changeset
|
1071 return null; |
68f01f10624e
Introduced helper for finding the user name for a given artifact
gernotbelger
parents:
541
diff
changeset
|
1072 } |
413
f5ecca16f601
Implement method to find/get a user by its account name
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
410
diff
changeset
|
1073 |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1074 public User [] getUsers( |
233
16cd059945e5
Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
230
diff
changeset
|
1075 final UserFactory factory, |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1076 final Object context |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1077 ) { |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1078 final ArrayList<User> users = new ArrayList<User>(); |
148
101a52d3ad08
Added code to load all users from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
147
diff
changeset
|
1079 |
305
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
1080 SQLExecutor.Instance exec = sqlExecutor.new Instance() { |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1081 public boolean doIt() throws SQLException { |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1082 prepareStatement(SQL_USERS_SELECT_ALL); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1083 result = stmnt.executeQuery(); |
148
101a52d3ad08
Added code to load all users from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
147
diff
changeset
|
1084 |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1085 while (result.next()) { |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1086 // omit id |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1087 String identifier = result.getString(2); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1088 String name = result.getString(3); |
410
f456d9d55541
Read the account information from the database
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
393
diff
changeset
|
1089 String account = result.getString(4); |
f456d9d55541
Read the account information from the database
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
393
diff
changeset
|
1090 byte [] roleData = result.getBytes(5); |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1091 |
235
3e29395ebac6
The XML documents stored aside users, collections and collection items are now compressed/decompressed transparently.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
233
diff
changeset
|
1092 Document role = XMLUtils.fromByteArray(roleData, true); |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1093 User user = factory.createUser( |
410
f456d9d55541
Read the account information from the database
Bjoern Ricks <bjoern.ricks@intevation.de>
parents:
393
diff
changeset
|
1094 identifier, name, account, role, context); |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1095 users.add(user); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1096 } |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1097 return true; |
148
101a52d3ad08
Added code to load all users from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
147
diff
changeset
|
1098 } |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1099 }; |
148
101a52d3ad08
Added code to load all users from database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
147
diff
changeset
|
1100 |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1101 return exec.runRead() |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1102 ? users.toArray(new User[users.size()]) |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1103 : null; |
133
2950c6011afa
Fixed typo in keys.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
128
diff
changeset
|
1104 } |
156
a76de72ad6d1
Added stubs for the collection handling in db backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
154
diff
changeset
|
1105 |
159
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1106 public ArtifactCollection createCollection( |
233
16cd059945e5
Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
230
diff
changeset
|
1107 final String ownerIdentifier, |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1108 final String name, |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1109 final ArtifactCollectionFactory factory, |
199
face2302387c
Insert collection attribute into database, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
194
diff
changeset
|
1110 final Document attribute, |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1111 final Object context |
159
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1112 ) { |
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1113 if (name == null) { |
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1114 logger.debug("Name is null"); |
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1115 return null; |
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1116 } |
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1117 |
177
77cd37a93fca
Backend: isIdentifierValid more symmetric to new newIndentifier
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
176
diff
changeset
|
1118 if (!isValidIdentifier(ownerIdentifier)) { |
159
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1119 logger.debug("Invalid owner id: '" + ownerIdentifier + "'"); |
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1120 return null; |
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1121 } |
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1122 |
235
3e29395ebac6
The XML documents stored aside users, collections and collection items are now compressed/decompressed transparently.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
233
diff
changeset
|
1123 final ArtifactCollection [] collection = new ArtifactCollection[1]; |
3e29395ebac6
The XML documents stored aside users, collections and collection items are now compressed/decompressed transparently.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
233
diff
changeset
|
1124 |
3e29395ebac6
The XML documents stored aside users, collections and collection items are now compressed/decompressed transparently.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
233
diff
changeset
|
1125 final byte [] data = XMLUtils.toByteArray(attribute, true); |
159
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1126 |
305
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
1127 SQLExecutor.Instance exec = sqlExecutor.new Instance() { |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1128 public boolean doIt() throws SQLException { |
159
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1129 // fetch owner id |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1130 prepareStatement(SQL_USERS_SELECT_ID_BY_GID); |
159
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1131 stmnt.setString(1, ownerIdentifier); |
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1132 result = stmnt.executeQuery(); |
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1133 |
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1134 if (!result.next()) { // no such user |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1135 return false; |
159
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1136 } |
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1137 |
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1138 int ownerId = result.getInt(1); |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1139 reset(); |
159
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1140 |
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1141 // fetch new collection seq number. |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1142 prepareStatement(SQL_COLLECTIONS_NEXT_ID); |
159
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1143 result = stmnt.executeQuery(); |
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1144 |
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1145 if (!result.next()) { // no identifier generated |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1146 return false; |
159
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1147 } |
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1148 |
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1149 int id = result.getInt(1); |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1150 reset(); |
159
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1151 |
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1152 String identifier = newIdentifier(); |
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1153 |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1154 prepareStatement(SQL_COLLECTIONS_INSERT); |
159
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1155 |
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1156 stmnt.setInt(1, id); |
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1157 stmnt.setString(2, identifier); |
161
e4a1562dfc21
Bugfixed the collection creation in the Backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
159
diff
changeset
|
1158 stmnt.setString(3, name); |
e4a1562dfc21
Bugfixed the collection creation in the Backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
159
diff
changeset
|
1159 stmnt.setInt(4, ownerId); |
159
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1160 |
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1161 // XXX: A bit odd: we don't have a collection, yet. |
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1162 Long ttl = factory.timeToLiveUntouched(null, context); |
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1163 |
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1164 if (ttl == null) { |
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1165 stmnt.setNull(5, Types.BIGINT); |
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1166 } |
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1167 else { |
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1168 stmnt.setLong(5, ttl); |
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1169 } |
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1170 |
199
face2302387c
Insert collection attribute into database, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
194
diff
changeset
|
1171 if (data == null) { |
face2302387c
Insert collection attribute into database, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
194
diff
changeset
|
1172 stmnt.setNull(6, Types.BINARY); |
face2302387c
Insert collection attribute into database, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
194
diff
changeset
|
1173 } |
face2302387c
Insert collection attribute into database, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
194
diff
changeset
|
1174 else { |
face2302387c
Insert collection attribute into database, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
194
diff
changeset
|
1175 stmnt.setBytes(6, data); |
face2302387c
Insert collection attribute into database, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
194
diff
changeset
|
1176 } |
face2302387c
Insert collection attribute into database, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
194
diff
changeset
|
1177 |
159
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1178 stmnt.execute(); |
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1179 conn.commit(); |
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1180 |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1181 reset(); |
170
ac0f8bd97277
Fix parameter propagation of creation time ond collection names.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
167
diff
changeset
|
1182 |
ac0f8bd97277
Fix parameter propagation of creation time ond collection names.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
167
diff
changeset
|
1183 // fetch creation time from database |
ac0f8bd97277
Fix parameter propagation of creation time ond collection names.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
167
diff
changeset
|
1184 // done this way to use the time system |
ac0f8bd97277
Fix parameter propagation of creation time ond collection names.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
167
diff
changeset
|
1185 // of the database. |
ac0f8bd97277
Fix parameter propagation of creation time ond collection names.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
167
diff
changeset
|
1186 |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1187 prepareStatement(SQL_COLLECTIONS_CREATION_TIME); |
170
ac0f8bd97277
Fix parameter propagation of creation time ond collection names.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
167
diff
changeset
|
1188 stmnt.setInt(1, id); |
ac0f8bd97277
Fix parameter propagation of creation time ond collection names.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
167
diff
changeset
|
1189 |
ac0f8bd97277
Fix parameter propagation of creation time ond collection names.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
167
diff
changeset
|
1190 result = stmnt.executeQuery(); |
ac0f8bd97277
Fix parameter propagation of creation time ond collection names.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
167
diff
changeset
|
1191 |
ac0f8bd97277
Fix parameter propagation of creation time ond collection names.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
167
diff
changeset
|
1192 Date creationTime = null; |
ac0f8bd97277
Fix parameter propagation of creation time ond collection names.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
167
diff
changeset
|
1193 |
ac0f8bd97277
Fix parameter propagation of creation time ond collection names.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
167
diff
changeset
|
1194 if (result.next()) { |
ac0f8bd97277
Fix parameter propagation of creation time ond collection names.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
167
diff
changeset
|
1195 Timestamp timestamp = result.getTimestamp(1); |
ac0f8bd97277
Fix parameter propagation of creation time ond collection names.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
167
diff
changeset
|
1196 creationTime = new Date(timestamp.getTime()); |
ac0f8bd97277
Fix parameter propagation of creation time ond collection names.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
167
diff
changeset
|
1197 } |
ac0f8bd97277
Fix parameter propagation of creation time ond collection names.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
167
diff
changeset
|
1198 |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1199 collection[0] = factory.createCollection( |
281
942a54670a72
Made the TTL of a Collection retrievable via getter method.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
275
diff
changeset
|
1200 identifier, name, creationTime, ttl, attribute, context); |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1201 |
316
0ca9b1073ccf
Added dummy user to fresh created collections to have it available in the backend listeners.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
314
diff
changeset
|
1202 if (collection[0] != null) { |
0ca9b1073ccf
Added dummy user to fresh created collections to have it available in the backend listeners.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
314
diff
changeset
|
1203 // XXX: Little hack to make the listeners happy |
0ca9b1073ccf
Added dummy user to fresh created collections to have it available in the backend listeners.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
314
diff
changeset
|
1204 collection[0].setUser(new DefaultUser(ownerIdentifier)); |
0ca9b1073ccf
Added dummy user to fresh created collections to have it available in the backend listeners.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
314
diff
changeset
|
1205 } |
0ca9b1073ccf
Added dummy user to fresh created collections to have it available in the backend listeners.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
314
diff
changeset
|
1206 |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1207 return true; |
159
db0d20440b92
Added code to create collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
158
diff
changeset
|
1208 } |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1209 }; |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1210 |
311
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1211 boolean success = exec.runWrite(); |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1212 |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1213 if (success) { |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1214 fireCreatedCollection(collection[0]); |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1215 return collection[0]; |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1216 } |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1217 return null; |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1218 } |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1219 |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1220 protected void fireCreatedCollection(ArtifactCollection collection) { |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1221 for (BackendListener listener: listeners) { |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1222 listener.createdCollection(collection, this); |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1223 } |
156
a76de72ad6d1
Added stubs for the collection handling in db backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
154
diff
changeset
|
1224 } |
a76de72ad6d1
Added stubs for the collection handling in db backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
154
diff
changeset
|
1225 |
217
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1226 public ArtifactCollection getCollection( |
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1227 final String collectionId, |
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1228 final ArtifactCollectionFactory collectionFactory, |
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1229 final UserFactory userFactory, |
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1230 final Object context |
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1231 ) { |
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1232 if (!isValidIdentifier(collectionId)) { |
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1233 logger.debug("collection id is not valid: " + collectionId); |
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1234 return null; |
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1235 } |
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1236 |
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1237 final ArtifactCollection[] ac = new ArtifactCollection[1]; |
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1238 |
305
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
1239 SQLExecutor.Instance exec = sqlExecutor.new Instance() { |
217
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1240 public boolean doIt() throws SQLException { |
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1241 |
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1242 prepareStatement(SQL_COLLECTIONS_SELECT_GID); |
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1243 stmnt.setString(1, collectionId); |
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1244 |
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1245 result = stmnt.executeQuery(); |
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1246 if (!result.next()) { |
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1247 logger.debug("No such collection"); |
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1248 return false; |
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1249 } |
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1250 |
235
3e29395ebac6
The XML documents stored aside users, collections and collection items are now compressed/decompressed transparently.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
233
diff
changeset
|
1251 String collectionName = result.getString(2); |
3e29395ebac6
The XML documents stored aside users, collections and collection items are now compressed/decompressed transparently.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
233
diff
changeset
|
1252 String ownerId = result.getString(3); |
3e29395ebac6
The XML documents stored aside users, collections and collection items are now compressed/decompressed transparently.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
233
diff
changeset
|
1253 Date creationTime = |
217
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1254 new Date(result.getTimestamp(4).getTime()); |
235
3e29395ebac6
The XML documents stored aside users, collections and collection items are now compressed/decompressed transparently.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
233
diff
changeset
|
1255 Date lastAccess = |
217
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1256 new Date(result.getTimestamp(5).getTime()); |
235
3e29395ebac6
The XML documents stored aside users, collections and collection items are now compressed/decompressed transparently.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
233
diff
changeset
|
1257 Document attr = |
3e29395ebac6
The XML documents stored aside users, collections and collection items are now compressed/decompressed transparently.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
233
diff
changeset
|
1258 XMLUtils.fromByteArray(result.getBytes(6), true); |
281
942a54670a72
Made the TTL of a Collection retrievable via getter method.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
275
diff
changeset
|
1259 long ttl = result.getLong(7); |
217
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1260 |
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1261 ArtifactCollection collection = |
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1262 collectionFactory.createCollection( |
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1263 collectionId, |
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1264 collectionName, |
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1265 creationTime, |
281
942a54670a72
Made the TTL of a Collection retrievable via getter method.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
275
diff
changeset
|
1266 ttl, |
217
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1267 attr, |
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1268 context); |
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1269 |
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1270 if (ownerId != null) { |
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1271 collection.setUser(new LazyBackendUser( |
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1272 ownerId, userFactory, Backend.this, context)); |
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1273 } |
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1274 |
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1275 ac[0] = collection; |
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1276 |
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1277 return true; |
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1278 } |
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1279 }; |
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1280 |
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1281 return exec.runRead() ? ac[0] : null; |
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1282 } |
87a7773030b5
The Backend got a method that retrieves an ArtifactCollection based on its GID.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
206
diff
changeset
|
1283 |
164
268c2972d4a7
Implemented the interface method listCollections() in the artifact database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
161
diff
changeset
|
1284 public ArtifactCollection [] listCollections( |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1285 final String ownerIdentifier, |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1286 final Document data, |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1287 final ArtifactCollectionFactory collectionFactory, |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1288 final UserFactory userFactory, |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1289 final Object context |
167
c9c27aca2f70
Added code to list collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
164
diff
changeset
|
1290 ) { |
233
16cd059945e5
Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
230
diff
changeset
|
1291 if (ownerIdentifier != null |
177
77cd37a93fca
Backend: isIdentifierValid more symmetric to new newIndentifier
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
176
diff
changeset
|
1292 && !isValidIdentifier(ownerIdentifier)) { |
167
c9c27aca2f70
Added code to list collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
164
diff
changeset
|
1293 logger.debug("Invalid owner id: '" + ownerIdentifier + "'"); |
c9c27aca2f70
Added code to list collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
164
diff
changeset
|
1294 return null; |
c9c27aca2f70
Added code to list collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
164
diff
changeset
|
1295 } |
c9c27aca2f70
Added code to list collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
164
diff
changeset
|
1296 |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1297 final ArrayList<ArtifactCollection> collections = |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1298 new ArrayList<ArtifactCollection>(); |
167
c9c27aca2f70
Added code to list collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
164
diff
changeset
|
1299 |
305
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
1300 SQLExecutor.Instance exec = sqlExecutor.new Instance() { |
167
c9c27aca2f70
Added code to list collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
164
diff
changeset
|
1301 |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1302 public boolean doIt() throws SQLException { |
167
c9c27aca2f70
Added code to list collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
164
diff
changeset
|
1303 |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1304 if (ownerIdentifier != null) { |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1305 prepareStatement(SQL_COLLECTIONS_SELECT_USER); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1306 stmnt.setString(1, ownerIdentifier); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1307 } |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1308 else { |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1309 prepareStatement(SQL_COLLECTIONS_SELECT_ALL); |
167
c9c27aca2f70
Added code to list collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
164
diff
changeset
|
1310 } |
c9c27aca2f70
Added code to list collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
164
diff
changeset
|
1311 |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1312 result = stmnt.executeQuery(); |
167
c9c27aca2f70
Added code to list collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
164
diff
changeset
|
1313 |
235
3e29395ebac6
The XML documents stored aside users, collections and collection items are now compressed/decompressed transparently.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
233
diff
changeset
|
1314 HashMap<String, LazyBackendUser> users = |
3e29395ebac6
The XML documents stored aside users, collections and collection items are now compressed/decompressed transparently.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
233
diff
changeset
|
1315 new HashMap<String, LazyBackendUser>(); |
3e29395ebac6
The XML documents stored aside users, collections and collection items are now compressed/decompressed transparently.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
233
diff
changeset
|
1316 |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1317 while (result.next()) { |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1318 String collectionIdentifier = result.getString(1); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1319 String collectionName = result.getString(2); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1320 Date creationTime = |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1321 new Date(result.getTimestamp(3).getTime()); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1322 String userIdentifier = result.getString(4); |
281
942a54670a72
Made the TTL of a Collection retrievable via getter method.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
275
diff
changeset
|
1323 long ttl = result.getLong(5); |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1324 |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1325 ArtifactCollection collection = |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1326 collectionFactory.createCollection( |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1327 collectionIdentifier, |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1328 collectionName, |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1329 creationTime, |
281
942a54670a72
Made the TTL of a Collection retrievable via getter method.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
275
diff
changeset
|
1330 ttl, |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1331 data, |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1332 context); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1333 |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1334 if (userIdentifier != null) { |
235
3e29395ebac6
The XML documents stored aside users, collections and collection items are now compressed/decompressed transparently.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
233
diff
changeset
|
1335 LazyBackendUser user = users.get(userIdentifier); |
3e29395ebac6
The XML documents stored aside users, collections and collection items are now compressed/decompressed transparently.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
233
diff
changeset
|
1336 if (user == null) { |
3e29395ebac6
The XML documents stored aside users, collections and collection items are now compressed/decompressed transparently.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
233
diff
changeset
|
1337 user = new LazyBackendUser( |
3e29395ebac6
The XML documents stored aside users, collections and collection items are now compressed/decompressed transparently.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
233
diff
changeset
|
1338 userIdentifier, userFactory, |
3e29395ebac6
The XML documents stored aside users, collections and collection items are now compressed/decompressed transparently.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
233
diff
changeset
|
1339 Backend.this, context); |
3e29395ebac6
The XML documents stored aside users, collections and collection items are now compressed/decompressed transparently.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
233
diff
changeset
|
1340 users.put(userIdentifier, user); |
3e29395ebac6
The XML documents stored aside users, collections and collection items are now compressed/decompressed transparently.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
233
diff
changeset
|
1341 } |
3e29395ebac6
The XML documents stored aside users, collections and collection items are now compressed/decompressed transparently.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
233
diff
changeset
|
1342 collection.setUser(user); |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1343 } |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1344 |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1345 collections.add(collection); |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1346 } |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1347 return true; |
167
c9c27aca2f70
Added code to list collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
164
diff
changeset
|
1348 } |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1349 }; |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1350 |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1351 return exec.runRead() |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1352 ? collections.toArray(new ArtifactCollection[collections.size()]) |
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1353 : null; |
156
a76de72ad6d1
Added stubs for the collection handling in db backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
154
diff
changeset
|
1354 } |
a76de72ad6d1
Added stubs for the collection handling in db backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
154
diff
changeset
|
1355 |
174
25d472a67a9f
Reduce the code repetition and the complexity of the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
170
diff
changeset
|
1356 |
343
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
320
diff
changeset
|
1357 public String getMasterArtifact(final String collectionId) { |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
320
diff
changeset
|
1358 if (!isValidIdentifier(collectionId)) { |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
320
diff
changeset
|
1359 logger.debug("Invalid collection id: '" + collectionId + "'"); |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
320
diff
changeset
|
1360 return null; |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
320
diff
changeset
|
1361 } |
345
7514fe89efef
Backend.getMasterArtifact: Limit result to one row.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
344
diff
changeset
|
1362 final String [] uuid = new String[1]; |
7514fe89efef
Backend.getMasterArtifact: Limit result to one row.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
344
diff
changeset
|
1363 |
343
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
320
diff
changeset
|
1364 SQLExecutor.Instance exec = sqlExecutor.new Instance() { |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
320
diff
changeset
|
1365 public boolean doIt() throws SQLException { |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
320
diff
changeset
|
1366 // Fetch masters (oldest artifact) id. |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
320
diff
changeset
|
1367 prepareStatement(SQL_COLLECTIONS_OLDEST_ARTIFACT); |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
320
diff
changeset
|
1368 stmnt.setString(1, collectionId); |
345
7514fe89efef
Backend.getMasterArtifact: Limit result to one row.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
344
diff
changeset
|
1369 stmnt.setMaxRows(1); // |
343
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
320
diff
changeset
|
1370 result = stmnt.executeQuery(); |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
320
diff
changeset
|
1371 if (!result.next()) { |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
320
diff
changeset
|
1372 logger.debug("No such collection: " + collectionId); |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
320
diff
changeset
|
1373 return false; |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
320
diff
changeset
|
1374 } |
345
7514fe89efef
Backend.getMasterArtifact: Limit result to one row.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
344
diff
changeset
|
1375 uuid[0] = result.getString(1); |
7514fe89efef
Backend.getMasterArtifact: Limit result to one row.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
344
diff
changeset
|
1376 if (logger.isDebugEnabled()) { |
7514fe89efef
Backend.getMasterArtifact: Limit result to one row.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
344
diff
changeset
|
1377 logger.debug("getMasterArtifact result.getString " + |
7514fe89efef
Backend.getMasterArtifact: Limit result to one row.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
344
diff
changeset
|
1378 uuid[0]); |
7514fe89efef
Backend.getMasterArtifact: Limit result to one row.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
344
diff
changeset
|
1379 } |
343
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
320
diff
changeset
|
1380 return true; |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
320
diff
changeset
|
1381 } |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
320
diff
changeset
|
1382 }; |
345
7514fe89efef
Backend.getMasterArtifact: Limit result to one row.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
344
diff
changeset
|
1383 return exec.runRead() ? uuid[0] : null; |
343
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
320
diff
changeset
|
1384 } |
542caebea773
Add functionality to get 'oldest' artifact of a collection.'
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
320
diff
changeset
|
1385 |
175
16e6e661e6bf
Added code to delete collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
174
diff
changeset
|
1386 public boolean deleteCollection(final String collectionId) { |
177
77cd37a93fca
Backend: isIdentifierValid more symmetric to new newIndentifier
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
176
diff
changeset
|
1387 if (!isValidIdentifier(collectionId)) { |
175
16e6e661e6bf
Added code to delete collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
174
diff
changeset
|
1388 logger.debug("Invalid collection id: '" + collectionId + "'"); |
16e6e661e6bf
Added code to delete collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
174
diff
changeset
|
1389 return false; |
16e6e661e6bf
Added code to delete collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
174
diff
changeset
|
1390 } |
305
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
1391 SQLExecutor.Instance exec = sqlExecutor.new Instance() { |
175
16e6e661e6bf
Added code to delete collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
174
diff
changeset
|
1392 public boolean doIt() throws SQLException { |
16e6e661e6bf
Added code to delete collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
174
diff
changeset
|
1393 // fetch collection id |
16e6e661e6bf
Added code to delete collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
174
diff
changeset
|
1394 prepareStatement(SQL_COLLECTIONS_ID_BY_GID); |
16e6e661e6bf
Added code to delete collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
174
diff
changeset
|
1395 stmnt.setString(1, collectionId); |
16e6e661e6bf
Added code to delete collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
174
diff
changeset
|
1396 result = stmnt.executeQuery(); |
16e6e661e6bf
Added code to delete collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
174
diff
changeset
|
1397 if (!result.next()) { |
16e6e661e6bf
Added code to delete collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
174
diff
changeset
|
1398 logger.debug("No such collection: " + collectionId); |
16e6e661e6bf
Added code to delete collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
174
diff
changeset
|
1399 return false; |
16e6e661e6bf
Added code to delete collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
174
diff
changeset
|
1400 } |
16e6e661e6bf
Added code to delete collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
174
diff
changeset
|
1401 int id = result.getInt(1); |
16e6e661e6bf
Added code to delete collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
174
diff
changeset
|
1402 reset(); |
16e6e661e6bf
Added code to delete collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
174
diff
changeset
|
1403 |
16e6e661e6bf
Added code to delete collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
174
diff
changeset
|
1404 // outdate artifacts that are only in this collection |
393
b7831cefbb62
Added some more debug output during the process of removing Artifacts and Collections by the DatabaseCleaner.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
345
diff
changeset
|
1405 logger.info("Outdate Artifacts that belong to collection: " + id); |
b7831cefbb62
Added some more debug output during the process of removing Artifacts and Collections by the DatabaseCleaner.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
345
diff
changeset
|
1406 |
175
16e6e661e6bf
Added code to delete collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
174
diff
changeset
|
1407 prepareStatement(SQL_OUTDATE_ARTIFACTS_COLLECTION); |
16e6e661e6bf
Added code to delete collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
174
diff
changeset
|
1408 stmnt.setInt(1, id); |
16e6e661e6bf
Added code to delete collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
174
diff
changeset
|
1409 stmnt.setInt(2, id); |
16e6e661e6bf
Added code to delete collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
174
diff
changeset
|
1410 stmnt.execute(); |
16e6e661e6bf
Added code to delete collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
174
diff
changeset
|
1411 reset(); |
16e6e661e6bf
Added code to delete collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
174
diff
changeset
|
1412 |
16e6e661e6bf
Added code to delete collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
174
diff
changeset
|
1413 // delete the collection items |
16e6e661e6bf
Added code to delete collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
174
diff
changeset
|
1414 prepareStatement(SQL_DELETE_COLLECTION_ITEMS); |
16e6e661e6bf
Added code to delete collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
174
diff
changeset
|
1415 stmnt.setInt(1, id); |
16e6e661e6bf
Added code to delete collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
174
diff
changeset
|
1416 stmnt.execute(); |
16e6e661e6bf
Added code to delete collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
174
diff
changeset
|
1417 reset(); |
16e6e661e6bf
Added code to delete collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
174
diff
changeset
|
1418 |
16e6e661e6bf
Added code to delete collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
174
diff
changeset
|
1419 // delete the collection |
16e6e661e6bf
Added code to delete collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
174
diff
changeset
|
1420 prepareStatement(SQL_DELETE_COLLECTION); |
16e6e661e6bf
Added code to delete collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
174
diff
changeset
|
1421 stmnt.setInt(1, id); |
16e6e661e6bf
Added code to delete collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
174
diff
changeset
|
1422 stmnt.execute(); |
16e6e661e6bf
Added code to delete collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
174
diff
changeset
|
1423 conn.commit(); |
16e6e661e6bf
Added code to delete collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
174
diff
changeset
|
1424 return true; |
16e6e661e6bf
Added code to delete collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
174
diff
changeset
|
1425 } |
16e6e661e6bf
Added code to delete collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
174
diff
changeset
|
1426 }; |
311
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1427 boolean success = exec.runWrite(); |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1428 |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1429 if (success) { |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1430 fireDeletedCollection(collectionId); |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1431 } |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1432 |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1433 return success; |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1434 } |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1435 |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1436 protected void fireDeletedCollection(String identifier) { |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1437 for (BackendListener listener: listeners) { |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1438 listener.deletedCollection(identifier, this); |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1439 } |
156
a76de72ad6d1
Added stubs for the collection handling in db backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
154
diff
changeset
|
1440 } |
a76de72ad6d1
Added stubs for the collection handling in db backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
154
diff
changeset
|
1441 |
253
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1442 public Document getCollectionAttribute(final String collectionId) { |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1443 if (!isValidIdentifier(collectionId)) { |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1444 logger.debug("collection id is not valid: " + collectionId); |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1445 } |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1446 |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1447 final byte[][] data = new byte[1][1]; |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1448 |
305
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
1449 SQLExecutor.Instance exec = sqlExecutor.new Instance() { |
253
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1450 public boolean doIt() throws SQLException { |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1451 prepareStatement(SQL_COLLECTION_GET_ATTRIBUTE); |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1452 stmnt.setString(1, collectionId); |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1453 result = stmnt.executeQuery(); |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1454 if (!result.next()) { |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1455 logger.debug("No such collection."); |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1456 return false; |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1457 } |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1458 |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1459 data[0] = result.getBytes(1); |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1460 return true; |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1461 } |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1462 }; |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1463 |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1464 return exec.runRead() |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1465 ? XMLUtils.fromByteArray(data[0], true) |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1466 : null; |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1467 } |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1468 |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1469 public boolean setCollectionAttribute( |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1470 final String collectionId, |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1471 Document attribute |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1472 ) { |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1473 if (!isValidIdentifier(collectionId)) { |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1474 logger.debug("collection id is not valid: " + collectionId); |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1475 return false; |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1476 } |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1477 |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1478 final byte [] data = XMLUtils.toByteArray(attribute, true); |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1479 |
311
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1480 boolean success = sqlExecutor.new Instance() { |
253
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1481 public boolean doIt() throws SQLException { |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1482 |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1483 // set the column in collection items |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1484 prepareStatement(SQL_COLLECTION_SET_ATTRIBUTE); |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1485 if (data == null) { |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1486 stmnt.setNull(1, Types.BINARY); |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1487 } |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1488 else { |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1489 stmnt.setBytes(1, data); |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1490 } |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1491 stmnt.setString(2, collectionId); |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1492 stmnt.execute(); |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1493 reset(); |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1494 |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1495 // touch the collection |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1496 prepareStatement(SQL_COLLECTIONS_TOUCH_BY_GID); |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1497 stmnt.setString(1, collectionId); |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1498 stmnt.execute(); |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1499 |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1500 conn.commit(); |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1501 return true; |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1502 } |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1503 }.runWrite(); |
311
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1504 |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1505 if (success) { |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1506 fireChangedCollectionAttribute(collectionId, attribute); |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1507 } |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1508 |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1509 return success; |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1510 } |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1511 |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1512 protected void fireChangedCollectionAttribute( |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1513 String collectionId, |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1514 Document document |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1515 ) { |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1516 for (BackendListener listener: listeners) { |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1517 listener.changedCollectionAttribute(collectionId, document, this); |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1518 } |
253
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1519 } |
a2df2b48d2aa
Enabled the artifact database to handle requests specific to collection attributes and collection item attributes.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
252
diff
changeset
|
1520 |
252
6de74b0b878e
Changed the method names to get and set the attributes of collection items.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
242
diff
changeset
|
1521 public Document getCollectionItemAttribute( |
178
535e4ea2ef9b
Added code to get the attribute of a collection item
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
177
diff
changeset
|
1522 final String collectionId, |
535e4ea2ef9b
Added code to get the attribute of a collection item
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
177
diff
changeset
|
1523 final String artifactId |
156
a76de72ad6d1
Added stubs for the collection handling in db backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
154
diff
changeset
|
1524 ) { |
178
535e4ea2ef9b
Added code to get the attribute of a collection item
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
177
diff
changeset
|
1525 if (!isValidIdentifier(collectionId)) { |
535e4ea2ef9b
Added code to get the attribute of a collection item
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
177
diff
changeset
|
1526 logger.debug("collection id is not valid: " + collectionId); |
535e4ea2ef9b
Added code to get the attribute of a collection item
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
177
diff
changeset
|
1527 return null; |
535e4ea2ef9b
Added code to get the attribute of a collection item
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
177
diff
changeset
|
1528 } |
535e4ea2ef9b
Added code to get the attribute of a collection item
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
177
diff
changeset
|
1529 if (!isValidIdentifier(artifactId)) { |
535e4ea2ef9b
Added code to get the attribute of a collection item
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
177
diff
changeset
|
1530 logger.debug("artifact id is not valid: " + artifactId); |
179
644fd11ddd9f
Added code to set attribute of a collection item.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
178
diff
changeset
|
1531 return null; |
178
535e4ea2ef9b
Added code to get the attribute of a collection item
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
177
diff
changeset
|
1532 } |
535e4ea2ef9b
Added code to get the attribute of a collection item
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
177
diff
changeset
|
1533 |
235
3e29395ebac6
The XML documents stored aside users, collections and collection items are now compressed/decompressed transparently.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
233
diff
changeset
|
1534 final byte [][] data = new byte[1][1]; |
178
535e4ea2ef9b
Added code to get the attribute of a collection item
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
177
diff
changeset
|
1535 |
305
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
1536 SQLExecutor.Instance exec = sqlExecutor.new Instance() { |
178
535e4ea2ef9b
Added code to get the attribute of a collection item
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
177
diff
changeset
|
1537 public boolean doIt() throws SQLException { |
535e4ea2ef9b
Added code to get the attribute of a collection item
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
177
diff
changeset
|
1538 prepareStatement(SQL_COLLECTION_ITEM_GET_ATTRIBUTE); |
535e4ea2ef9b
Added code to get the attribute of a collection item
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
177
diff
changeset
|
1539 stmnt.setString(1, collectionId); |
535e4ea2ef9b
Added code to get the attribute of a collection item
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
177
diff
changeset
|
1540 stmnt.setString(2, artifactId); |
535e4ea2ef9b
Added code to get the attribute of a collection item
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
177
diff
changeset
|
1541 result = stmnt.executeQuery(); |
535e4ea2ef9b
Added code to get the attribute of a collection item
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
177
diff
changeset
|
1542 if (!result.next()) { |
535e4ea2ef9b
Added code to get the attribute of a collection item
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
177
diff
changeset
|
1543 logger.debug("No such collection item"); |
535e4ea2ef9b
Added code to get the attribute of a collection item
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
177
diff
changeset
|
1544 return false; |
535e4ea2ef9b
Added code to get the attribute of a collection item
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
177
diff
changeset
|
1545 } |
235
3e29395ebac6
The XML documents stored aside users, collections and collection items are now compressed/decompressed transparently.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
233
diff
changeset
|
1546 data[0] = result.getBytes(1); |
178
535e4ea2ef9b
Added code to get the attribute of a collection item
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
177
diff
changeset
|
1547 return true; |
535e4ea2ef9b
Added code to get the attribute of a collection item
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
177
diff
changeset
|
1548 } |
535e4ea2ef9b
Added code to get the attribute of a collection item
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
177
diff
changeset
|
1549 }; |
535e4ea2ef9b
Added code to get the attribute of a collection item
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
177
diff
changeset
|
1550 |
235
3e29395ebac6
The XML documents stored aside users, collections and collection items are now compressed/decompressed transparently.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
233
diff
changeset
|
1551 return exec.runRead() |
3e29395ebac6
The XML documents stored aside users, collections and collection items are now compressed/decompressed transparently.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
233
diff
changeset
|
1552 ? XMLUtils.fromByteArray(data[0], true) |
3e29395ebac6
The XML documents stored aside users, collections and collection items are now compressed/decompressed transparently.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
233
diff
changeset
|
1553 : null; |
156
a76de72ad6d1
Added stubs for the collection handling in db backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
154
diff
changeset
|
1554 } |
a76de72ad6d1
Added stubs for the collection handling in db backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
154
diff
changeset
|
1555 |
252
6de74b0b878e
Changed the method names to get and set the attributes of collection items.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
242
diff
changeset
|
1556 public boolean setCollectionItemAttribute( |
233
16cd059945e5
Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
230
diff
changeset
|
1557 final String collectionId, |
179
644fd11ddd9f
Added code to set attribute of a collection item.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
178
diff
changeset
|
1558 final String artifactId, |
644fd11ddd9f
Added code to set attribute of a collection item.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
178
diff
changeset
|
1559 Document attribute |
156
a76de72ad6d1
Added stubs for the collection handling in db backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
154
diff
changeset
|
1560 ) { |
179
644fd11ddd9f
Added code to set attribute of a collection item.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
178
diff
changeset
|
1561 if (!isValidIdentifier(collectionId)) { |
644fd11ddd9f
Added code to set attribute of a collection item.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
178
diff
changeset
|
1562 logger.debug("collection id is not valid: " + collectionId); |
644fd11ddd9f
Added code to set attribute of a collection item.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
178
diff
changeset
|
1563 return false; |
644fd11ddd9f
Added code to set attribute of a collection item.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
178
diff
changeset
|
1564 } |
644fd11ddd9f
Added code to set attribute of a collection item.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
178
diff
changeset
|
1565 if (!isValidIdentifier(artifactId)) { |
644fd11ddd9f
Added code to set attribute of a collection item.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
178
diff
changeset
|
1566 logger.debug("artifact id is not valid: " + artifactId); |
644fd11ddd9f
Added code to set attribute of a collection item.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
178
diff
changeset
|
1567 return false; |
644fd11ddd9f
Added code to set attribute of a collection item.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
178
diff
changeset
|
1568 } |
644fd11ddd9f
Added code to set attribute of a collection item.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
178
diff
changeset
|
1569 |
235
3e29395ebac6
The XML documents stored aside users, collections and collection items are now compressed/decompressed transparently.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
233
diff
changeset
|
1570 final byte [] data = XMLUtils.toByteArray(attribute, true); |
179
644fd11ddd9f
Added code to set attribute of a collection item.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
178
diff
changeset
|
1571 |
311
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1572 boolean success = sqlExecutor.new Instance() { |
179
644fd11ddd9f
Added code to set attribute of a collection item.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
178
diff
changeset
|
1573 public boolean doIt() throws SQLException { |
644fd11ddd9f
Added code to set attribute of a collection item.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
178
diff
changeset
|
1574 |
644fd11ddd9f
Added code to set attribute of a collection item.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
178
diff
changeset
|
1575 // set the column in collection items |
644fd11ddd9f
Added code to set attribute of a collection item.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
178
diff
changeset
|
1576 prepareStatement(SQL_COLLECTION_ITEM_SET_ATTRIBUTE); |
644fd11ddd9f
Added code to set attribute of a collection item.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
178
diff
changeset
|
1577 if (data == null) { |
644fd11ddd9f
Added code to set attribute of a collection item.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
178
diff
changeset
|
1578 stmnt.setNull(1, Types.BINARY); |
644fd11ddd9f
Added code to set attribute of a collection item.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
178
diff
changeset
|
1579 } |
644fd11ddd9f
Added code to set attribute of a collection item.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
178
diff
changeset
|
1580 else { |
644fd11ddd9f
Added code to set attribute of a collection item.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
178
diff
changeset
|
1581 stmnt.setBytes(1, data); |
644fd11ddd9f
Added code to set attribute of a collection item.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
178
diff
changeset
|
1582 } |
644fd11ddd9f
Added code to set attribute of a collection item.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
178
diff
changeset
|
1583 stmnt.setString(2, collectionId); |
644fd11ddd9f
Added code to set attribute of a collection item.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
178
diff
changeset
|
1584 stmnt.setString(3, artifactId); |
644fd11ddd9f
Added code to set attribute of a collection item.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
178
diff
changeset
|
1585 stmnt.execute(); |
644fd11ddd9f
Added code to set attribute of a collection item.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
178
diff
changeset
|
1586 reset(); |
644fd11ddd9f
Added code to set attribute of a collection item.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
178
diff
changeset
|
1587 |
644fd11ddd9f
Added code to set attribute of a collection item.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
178
diff
changeset
|
1588 // touch the collection |
644fd11ddd9f
Added code to set attribute of a collection item.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
178
diff
changeset
|
1589 prepareStatement(SQL_COLLECTIONS_TOUCH_BY_GID); |
644fd11ddd9f
Added code to set attribute of a collection item.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
178
diff
changeset
|
1590 stmnt.setString(1, collectionId); |
644fd11ddd9f
Added code to set attribute of a collection item.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
178
diff
changeset
|
1591 stmnt.execute(); |
644fd11ddd9f
Added code to set attribute of a collection item.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
178
diff
changeset
|
1592 |
644fd11ddd9f
Added code to set attribute of a collection item.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
178
diff
changeset
|
1593 conn.commit(); |
644fd11ddd9f
Added code to set attribute of a collection item.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
178
diff
changeset
|
1594 return true; |
644fd11ddd9f
Added code to set attribute of a collection item.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
178
diff
changeset
|
1595 } |
644fd11ddd9f
Added code to set attribute of a collection item.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
178
diff
changeset
|
1596 }.runWrite(); |
311
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1597 |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1598 if (success) { |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1599 fireChangedCollectionItemAttribute( |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1600 collectionId, artifactId, attribute); |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1601 } |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1602 |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1603 return success; |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1604 } |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1605 |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1606 protected void fireChangedCollectionItemAttribute( |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1607 String collectionId, |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1608 String artifactId, |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1609 Document document |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1610 ) { |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1611 for (BackendListener listener: listeners) { |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1612 listener.changedCollectionItemAttribute( |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1613 collectionId, artifactId, document, this); |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1614 } |
156
a76de72ad6d1
Added stubs for the collection handling in db backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
154
diff
changeset
|
1615 } |
a76de72ad6d1
Added stubs for the collection handling in db backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
154
diff
changeset
|
1616 |
a76de72ad6d1
Added stubs for the collection handling in db backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
154
diff
changeset
|
1617 public boolean addCollectionArtifact( |
176
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1618 final String collectionId, |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1619 final String artifactId, |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1620 final Document attribute |
156
a76de72ad6d1
Added stubs for the collection handling in db backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
154
diff
changeset
|
1621 ) { |
177
77cd37a93fca
Backend: isIdentifierValid more symmetric to new newIndentifier
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
176
diff
changeset
|
1622 if (!isValidIdentifier(collectionId)) { |
176
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1623 logger.debug("Invalid collection id: '" + collectionId + "'"); |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1624 return false; |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1625 } |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1626 |
177
77cd37a93fca
Backend: isIdentifierValid more symmetric to new newIndentifier
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
176
diff
changeset
|
1627 if (!isValidIdentifier(artifactId)) { |
176
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1628 logger.debug("Invalid artifact id: '" + artifactId + "'"); |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1629 return false; |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1630 } |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1631 |
235
3e29395ebac6
The XML documents stored aside users, collections and collection items are now compressed/decompressed transparently.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
233
diff
changeset
|
1632 final byte [] data = XMLUtils.toByteArray(attribute, true); |
3e29395ebac6
The XML documents stored aside users, collections and collection items are now compressed/decompressed transparently.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
233
diff
changeset
|
1633 |
305
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
1634 SQLExecutor.Instance exec = sqlExecutor.new Instance() { |
176
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1635 public boolean doIt() throws SQLException { |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1636 // fetch artifact id |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1637 prepareStatement(SQL_GET_ID); |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1638 stmnt.setString(1, artifactId); |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1639 result = stmnt.executeQuery(); |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1640 if (!result.next()) { |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1641 logger.debug("No such artifact: " + artifactId); |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1642 return false; |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1643 } |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1644 int aid = result.getInt(1); |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1645 reset(); |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1646 |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1647 // fetch collection id |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1648 prepareStatement(SQL_COLLECTIONS_ID_BY_GID); |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1649 stmnt.setString(1, collectionId); |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1650 result = stmnt.executeQuery(); |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1651 if (!result.next()) { |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1652 logger.debug("No such collection: " + collectionId); |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1653 } |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1654 int cid = result.getInt(1); |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1655 reset(); |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1656 |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1657 // check if artifact is already in collection |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1658 prepareStatement(SQL_COLLECTION_CHECK_ARTIFACT); |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1659 stmnt.setInt(1, aid); |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1660 stmnt.setInt(2, cid); |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1661 result = stmnt.executeQuery(); |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1662 if (result.next()) { |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1663 logger.debug("artifact already in collection"); |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1664 return false; |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1665 } |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1666 reset(); |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1667 |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1668 // fetch fresh id for new collection item |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1669 prepareStatement(SQL_COLLECTION_ITEMS_ID_NEXTVAL); |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1670 result = stmnt.executeQuery(); |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1671 if (!result.next()) { |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1672 logger.debug("no collection item id generated"); |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1673 return false; |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1674 } |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1675 int ci_id = result.getInt(1); |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1676 reset(); |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1677 |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1678 // insert new collection item |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1679 prepareStatement(SQL_COLLECTION_ITEMS_INSERT); |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1680 stmnt.setInt(1, ci_id); |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1681 stmnt.setInt(2, cid); |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1682 stmnt.setInt(3, aid); |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1683 |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1684 if (data == null) { |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1685 stmnt.setNull(4, Types.BINARY); |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1686 } |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1687 else { |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1688 stmnt.setBytes(4, data); |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1689 } |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1690 stmnt.execute(); |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1691 conn.commit(); |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1692 |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1693 return true; |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1694 } |
a0eff2227588
Added code to add artifacts to collections.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
175
diff
changeset
|
1695 }; |
311
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1696 boolean success = exec.runWrite(); |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1697 |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1698 if (success) { |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1699 fireAddedArtifactToCollection(artifactId, collectionId); |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1700 } |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1701 |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1702 return success; |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1703 } |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1704 |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1705 protected void fireAddedArtifactToCollection( |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1706 String artifactId, |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1707 String collectionId |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1708 ) { |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1709 for (BackendListener listener: listeners) { |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1710 listener.addedArtifactToCollection( |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1711 artifactId, collectionId, this); |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1712 } |
156
a76de72ad6d1
Added stubs for the collection handling in db backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
154
diff
changeset
|
1713 } |
a76de72ad6d1
Added stubs for the collection handling in db backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
154
diff
changeset
|
1714 |
a76de72ad6d1
Added stubs for the collection handling in db backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
154
diff
changeset
|
1715 public boolean removeCollectionArtifact( |
180
38fbbeffe8fe
Added code to remove an artifact from a collection
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
179
diff
changeset
|
1716 final String collectionId, |
38fbbeffe8fe
Added code to remove an artifact from a collection
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
179
diff
changeset
|
1717 final String artifactId |
156
a76de72ad6d1
Added stubs for the collection handling in db backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
154
diff
changeset
|
1718 ) { |
180
38fbbeffe8fe
Added code to remove an artifact from a collection
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
179
diff
changeset
|
1719 if (!isValidIdentifier(collectionId)) { |
38fbbeffe8fe
Added code to remove an artifact from a collection
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
179
diff
changeset
|
1720 logger.debug("Invalid collection id: '" + collectionId + "'"); |
38fbbeffe8fe
Added code to remove an artifact from a collection
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
179
diff
changeset
|
1721 return false; |
38fbbeffe8fe
Added code to remove an artifact from a collection
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
179
diff
changeset
|
1722 } |
311
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1723 |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1724 boolean success = sqlExecutor.new Instance() { |
180
38fbbeffe8fe
Added code to remove an artifact from a collection
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
179
diff
changeset
|
1725 public boolean doIt() throws SQLException { |
38fbbeffe8fe
Added code to remove an artifact from a collection
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
179
diff
changeset
|
1726 |
38fbbeffe8fe
Added code to remove an artifact from a collection
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
179
diff
changeset
|
1727 // fetch id, collection id and artitfact id |
38fbbeffe8fe
Added code to remove an artifact from a collection
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
179
diff
changeset
|
1728 prepareStatement(SQL_COLLECTION_ITEM_ID_CID_AID); |
38fbbeffe8fe
Added code to remove an artifact from a collection
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
179
diff
changeset
|
1729 stmnt.setString(1, collectionId); |
38fbbeffe8fe
Added code to remove an artifact from a collection
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
179
diff
changeset
|
1730 stmnt.setString(2, artifactId); |
38fbbeffe8fe
Added code to remove an artifact from a collection
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
179
diff
changeset
|
1731 result = stmnt.executeQuery(); |
38fbbeffe8fe
Added code to remove an artifact from a collection
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
179
diff
changeset
|
1732 if (!result.next()) { |
38fbbeffe8fe
Added code to remove an artifact from a collection
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
179
diff
changeset
|
1733 logger.debug("No such collection item"); |
38fbbeffe8fe
Added code to remove an artifact from a collection
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
179
diff
changeset
|
1734 return false; |
38fbbeffe8fe
Added code to remove an artifact from a collection
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
179
diff
changeset
|
1735 } |
38fbbeffe8fe
Added code to remove an artifact from a collection
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
179
diff
changeset
|
1736 int id = result.getInt(1); |
38fbbeffe8fe
Added code to remove an artifact from a collection
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
179
diff
changeset
|
1737 int cid = result.getInt(2); |
38fbbeffe8fe
Added code to remove an artifact from a collection
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
179
diff
changeset
|
1738 int aid = result.getInt(3); |
38fbbeffe8fe
Added code to remove an artifact from a collection
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
179
diff
changeset
|
1739 reset(); |
38fbbeffe8fe
Added code to remove an artifact from a collection
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
179
diff
changeset
|
1740 |
38fbbeffe8fe
Added code to remove an artifact from a collection
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
179
diff
changeset
|
1741 // outdate artifact iff it is only in this collection |
38fbbeffe8fe
Added code to remove an artifact from a collection
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
179
diff
changeset
|
1742 prepareStatement(SQL_COLLECTION_ITEM_OUTDATE_ARTIFACT); |
38fbbeffe8fe
Added code to remove an artifact from a collection
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
179
diff
changeset
|
1743 stmnt.setInt(1, aid); |
38fbbeffe8fe
Added code to remove an artifact from a collection
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
179
diff
changeset
|
1744 stmnt.setInt(2, cid); |
194
fde2f193e846
Small typo fix
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
193
diff
changeset
|
1745 stmnt.setInt(3, aid); |
180
38fbbeffe8fe
Added code to remove an artifact from a collection
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
179
diff
changeset
|
1746 stmnt.execute(); |
38fbbeffe8fe
Added code to remove an artifact from a collection
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
179
diff
changeset
|
1747 reset(); |
38fbbeffe8fe
Added code to remove an artifact from a collection
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
179
diff
changeset
|
1748 |
38fbbeffe8fe
Added code to remove an artifact from a collection
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
179
diff
changeset
|
1749 // delete collection item |
38fbbeffe8fe
Added code to remove an artifact from a collection
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
179
diff
changeset
|
1750 prepareStatement(SQL_COLLECTION_ITEM_DELETE); |
38fbbeffe8fe
Added code to remove an artifact from a collection
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
179
diff
changeset
|
1751 stmnt.setInt(1, id); |
38fbbeffe8fe
Added code to remove an artifact from a collection
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
179
diff
changeset
|
1752 stmnt.execute(); |
38fbbeffe8fe
Added code to remove an artifact from a collection
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
179
diff
changeset
|
1753 reset(); |
38fbbeffe8fe
Added code to remove an artifact from a collection
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
179
diff
changeset
|
1754 |
38fbbeffe8fe
Added code to remove an artifact from a collection
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
179
diff
changeset
|
1755 // touch collection |
38fbbeffe8fe
Added code to remove an artifact from a collection
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
179
diff
changeset
|
1756 prepareStatement(SQL_COLLECTIONS_TOUCH_BY_ID); |
38fbbeffe8fe
Added code to remove an artifact from a collection
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
179
diff
changeset
|
1757 stmnt.setInt(1, cid); |
38fbbeffe8fe
Added code to remove an artifact from a collection
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
179
diff
changeset
|
1758 stmnt.execute(); |
38fbbeffe8fe
Added code to remove an artifact from a collection
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
179
diff
changeset
|
1759 |
38fbbeffe8fe
Added code to remove an artifact from a collection
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
179
diff
changeset
|
1760 conn.commit(); |
38fbbeffe8fe
Added code to remove an artifact from a collection
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
179
diff
changeset
|
1761 return true; |
38fbbeffe8fe
Added code to remove an artifact from a collection
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
179
diff
changeset
|
1762 } |
38fbbeffe8fe
Added code to remove an artifact from a collection
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
179
diff
changeset
|
1763 }.runWrite(); |
311
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1764 |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1765 if (success) { |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1766 fireRemovedArtifactFromCollection(artifactId, collectionId); |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1767 } |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1768 |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1769 return success; |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1770 } |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1771 |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1772 protected void fireRemovedArtifactFromCollection( |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1773 String artifactId, |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1774 String collectionId |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1775 ) { |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1776 for (BackendListener listener: listeners) { |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1777 listener.removedArtifactFromCollection( |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1778 artifactId, collectionId, this); |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1779 } |
156
a76de72ad6d1
Added stubs for the collection handling in db backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
154
diff
changeset
|
1780 } |
a76de72ad6d1
Added stubs for the collection handling in db backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
154
diff
changeset
|
1781 |
184
a22b7e367b25
Added Backend code to list the collection items in a collection.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
182
diff
changeset
|
1782 public CollectionItem [] listCollectionArtifacts( |
a22b7e367b25
Added Backend code to list the collection items in a collection.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
182
diff
changeset
|
1783 final String collectionId |
a22b7e367b25
Added Backend code to list the collection items in a collection.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
182
diff
changeset
|
1784 ) { |
a22b7e367b25
Added Backend code to list the collection items in a collection.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
182
diff
changeset
|
1785 if (!isValidIdentifier(collectionId)) { |
a22b7e367b25
Added Backend code to list the collection items in a collection.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
182
diff
changeset
|
1786 logger.debug("Invalid collection id: '" + collectionId + "'"); |
a22b7e367b25
Added Backend code to list the collection items in a collection.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
182
diff
changeset
|
1787 return null; |
a22b7e367b25
Added Backend code to list the collection items in a collection.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
182
diff
changeset
|
1788 } |
a22b7e367b25
Added Backend code to list the collection items in a collection.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
182
diff
changeset
|
1789 |
a22b7e367b25
Added Backend code to list the collection items in a collection.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
182
diff
changeset
|
1790 final ArrayList<CollectionItem> collectionItems = |
a22b7e367b25
Added Backend code to list the collection items in a collection.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
182
diff
changeset
|
1791 new ArrayList<CollectionItem>(); |
a22b7e367b25
Added Backend code to list the collection items in a collection.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
182
diff
changeset
|
1792 |
305
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
1793 SQLExecutor.Instance exec = sqlExecutor.new Instance() { |
184
a22b7e367b25
Added Backend code to list the collection items in a collection.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
182
diff
changeset
|
1794 public boolean doIt() throws SQLException { |
a22b7e367b25
Added Backend code to list the collection items in a collection.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
182
diff
changeset
|
1795 prepareStatement(SQL_COLLECTION_ITEMS_LIST_GID); |
a22b7e367b25
Added Backend code to list the collection items in a collection.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
182
diff
changeset
|
1796 stmnt.setString(1, collectionId); |
a22b7e367b25
Added Backend code to list the collection items in a collection.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
182
diff
changeset
|
1797 result = stmnt.executeQuery(); |
a22b7e367b25
Added Backend code to list the collection items in a collection.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
182
diff
changeset
|
1798 while (result.next()) { |
186
15c7638511dc
Added an interface for CollectionItems and renamed the CollectionItem class from the artifact-database package to DefaultCollectionItem - because this is the default implementation of the interface.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
184
diff
changeset
|
1799 CollectionItem item = new DefaultCollectionItem( |
184
a22b7e367b25
Added Backend code to list the collection items in a collection.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
182
diff
changeset
|
1800 result.getString(1), |
a22b7e367b25
Added Backend code to list the collection items in a collection.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
182
diff
changeset
|
1801 result.getBytes(2)); |
a22b7e367b25
Added Backend code to list the collection items in a collection.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
182
diff
changeset
|
1802 collectionItems.add(item); |
a22b7e367b25
Added Backend code to list the collection items in a collection.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
182
diff
changeset
|
1803 } |
a22b7e367b25
Added Backend code to list the collection items in a collection.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
182
diff
changeset
|
1804 return true; |
a22b7e367b25
Added Backend code to list the collection items in a collection.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
182
diff
changeset
|
1805 } |
a22b7e367b25
Added Backend code to list the collection items in a collection.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
182
diff
changeset
|
1806 }; |
a22b7e367b25
Added Backend code to list the collection items in a collection.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
182
diff
changeset
|
1807 |
a22b7e367b25
Added Backend code to list the collection items in a collection.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
182
diff
changeset
|
1808 return exec.runRead() |
a22b7e367b25
Added Backend code to list the collection items in a collection.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
182
diff
changeset
|
1809 ? collectionItems.toArray( |
a22b7e367b25
Added Backend code to list the collection items in a collection.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
182
diff
changeset
|
1810 new CollectionItem[collectionItems.size()]) |
a22b7e367b25
Added Backend code to list the collection items in a collection.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
182
diff
changeset
|
1811 : null; |
156
a76de72ad6d1
Added stubs for the collection handling in db backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
154
diff
changeset
|
1812 } |
273
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
253
diff
changeset
|
1813 |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
253
diff
changeset
|
1814 |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
253
diff
changeset
|
1815 public boolean setCollectionTTL(final String uuid, final Long ttl) { |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
253
diff
changeset
|
1816 if (!isValidIdentifier(uuid)) { |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
253
diff
changeset
|
1817 logger.debug("Invalid collection id: '" + uuid + "'"); |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
253
diff
changeset
|
1818 return false; |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
253
diff
changeset
|
1819 } |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
253
diff
changeset
|
1820 |
305
f33401ea2a6c
Artifact database: Refactorized the usage of dialect independent SQL to be reusable.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
303
diff
changeset
|
1821 return sqlExecutor.new Instance() { |
273
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
253
diff
changeset
|
1822 public boolean doIt() throws SQLException { |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
253
diff
changeset
|
1823 prepareStatement(SQL_UPDATE_COLLECTION_TTL); |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
253
diff
changeset
|
1824 if (ttl == null) { |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
253
diff
changeset
|
1825 stmnt.setNull(1, Types.BIGINT); |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
253
diff
changeset
|
1826 } |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
253
diff
changeset
|
1827 else { |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
253
diff
changeset
|
1828 stmnt.setLong(1, ttl); |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
253
diff
changeset
|
1829 } |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
253
diff
changeset
|
1830 stmnt.setString(2, uuid); |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
253
diff
changeset
|
1831 stmnt.execute(); |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
253
diff
changeset
|
1832 conn.commit(); |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
253
diff
changeset
|
1833 |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
253
diff
changeset
|
1834 return true; |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
253
diff
changeset
|
1835 } |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
253
diff
changeset
|
1836 }.runWrite(); |
22a90706d32d
Enables the artifact server to set the TTL of a specific collection via REST call.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
253
diff
changeset
|
1837 } |
275
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1838 |
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1839 |
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1840 public boolean setCollectionName(final String uuid, final String name) { |
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1841 if (!isValidIdentifier(uuid)) { |
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1842 logger.debug("Invalid collection id: '" + uuid + "'"); |
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1843 return false; |
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1844 } |
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1845 |
311
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1846 boolean success = sqlExecutor.new Instance() { |
275
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1847 public boolean doIt() throws SQLException { |
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1848 prepareStatement(SQL_UPDATE_COLLECTION_NAME); |
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1849 stmnt.setString(1, name); |
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1850 stmnt.setString(2, uuid); |
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1851 stmnt.execute(); |
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1852 conn.commit(); |
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1853 |
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1854 return true; |
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1855 } |
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1856 }.runWrite(); |
311
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1857 |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1858 if (success) { |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1859 fireSetCollectionName(uuid, name); |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1860 } |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1861 |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1862 return success; |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1863 } |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1864 |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1865 protected void fireSetCollectionName(String identifier, String name) { |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1866 for (BackendListener listener: listeners) { |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1867 listener.setCollectionName(identifier, name); |
1d517e051e95
Made backend listeners loadable at boot time.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
310
diff
changeset
|
1868 } |
275
e92d5944fe4b
Enabled the artifact database to retrieve requests to change the name of a specific collection.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
273
diff
changeset
|
1869 } |
303
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1870 |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1871 public boolean loadAllArtifacts(final ArtifactLoadedCallback alc) { |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1872 |
308
a077bb098eb4
Fixed broken SQL statement. Added debug output.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
307
diff
changeset
|
1873 logger.debug("loadAllArtifacts"); |
a077bb098eb4
Fixed broken SQL statement. Added debug output.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
307
diff
changeset
|
1874 |
303
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1875 if (factoryLookup == null) { |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1876 logger.error("factory lookup == null"); |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1877 return false; |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1878 } |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1879 |
308
a077bb098eb4
Fixed broken SQL statement. Added debug output.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
307
diff
changeset
|
1880 boolean success = sqlExecutor.new Instance() { |
a077bb098eb4
Fixed broken SQL statement. Added debug output.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
307
diff
changeset
|
1881 @Override |
303
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1882 public boolean doIt() throws SQLException { |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1883 // a little cache to avoid too much deserializations. |
308
a077bb098eb4
Fixed broken SQL statement. Added debug output.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
307
diff
changeset
|
1884 LRUCache<String, Artifact> alreadyLoaded = |
a077bb098eb4
Fixed broken SQL statement. Added debug output.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
307
diff
changeset
|
1885 new LRUCache<String, Artifact>(200); |
303
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1886 |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1887 prepareStatement(SQL_ALL_ARTIFACTS); |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1888 result = stmnt.executeQuery(); |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1889 while (result.next()) { |
320
b46c5b13ac94
Extract the collection and artifact creation times when doing the initial, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
318
diff
changeset
|
1890 String userId = result.getString("u_gid"); |
b46c5b13ac94
Extract the collection and artifact creation times when doing the initial, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
318
diff
changeset
|
1891 String collectionId = result.getString("c_gid"); |
b46c5b13ac94
Extract the collection and artifact creation times when doing the initial, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
318
diff
changeset
|
1892 String collectionName = result.getString("c_name"); |
b46c5b13ac94
Extract the collection and artifact creation times when doing the initial, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
318
diff
changeset
|
1893 String artifactId = result.getString("a_gid"); |
b46c5b13ac94
Extract the collection and artifact creation times when doing the initial, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
318
diff
changeset
|
1894 String factoryName = result.getString("factory"); |
b46c5b13ac94
Extract the collection and artifact creation times when doing the initial, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
318
diff
changeset
|
1895 Date collectionCreated = |
b46c5b13ac94
Extract the collection and artifact creation times when doing the initial, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
318
diff
changeset
|
1896 new Date(result.getTimestamp("c_creation").getTime()); |
b46c5b13ac94
Extract the collection and artifact creation times when doing the initial, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
318
diff
changeset
|
1897 Date artifactCreated = |
b46c5b13ac94
Extract the collection and artifact creation times when doing the initial, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
318
diff
changeset
|
1898 new Date(result.getTimestamp("a_creation").getTime()); |
303
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1899 |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1900 Artifact artifact = alreadyLoaded.get(artifactId); |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1901 |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1902 if (artifact != null) { |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1903 alc.artifactLoaded( |
317
824051dff018
When loading all artifacts fetch the name of the collections, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
316
diff
changeset
|
1904 userId, |
824051dff018
When loading all artifacts fetch the name of the collections, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
316
diff
changeset
|
1905 collectionId, collectionName, |
320
b46c5b13ac94
Extract the collection and artifact creation times when doing the initial, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
318
diff
changeset
|
1906 collectionCreated, |
b46c5b13ac94
Extract the collection and artifact creation times when doing the initial, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
318
diff
changeset
|
1907 artifactId, artifactCreated, artifact); |
303
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1908 continue; |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1909 } |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1910 |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1911 ArtifactFactory factory = factoryLookup |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1912 .getArtifactFactory(factoryName); |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1913 |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1914 if (factory == null) { |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1915 logger.error("factory '" + factoryName + "' not found"); |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1916 continue; |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1917 } |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1918 |
320
b46c5b13ac94
Extract the collection and artifact creation times when doing the initial, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
318
diff
changeset
|
1919 byte [] bytes = result.getBytes("data"); |
303
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1920 |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1921 artifact = factory.getSerializer().fromBytes(bytes); |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1922 |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1923 if (artifact != null) { |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1924 alc.artifactLoaded( |
317
824051dff018
When loading all artifacts fetch the name of the collections, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
316
diff
changeset
|
1925 userId, |
320
b46c5b13ac94
Extract the collection and artifact creation times when doing the initial, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
318
diff
changeset
|
1926 collectionId, collectionName, collectionCreated, |
b46c5b13ac94
Extract the collection and artifact creation times when doing the initial, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
318
diff
changeset
|
1927 artifactId, artifactCreated, artifact); |
303
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1928 } |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1929 |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1930 alreadyLoaded.put(artifactId, artifact); |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1931 } |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1932 return true; |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1933 } |
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1934 }.runRead(); |
308
a077bb098eb4
Fixed broken SQL statement. Added debug output.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
307
diff
changeset
|
1935 |
a077bb098eb4
Fixed broken SQL statement. Added debug output.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
307
diff
changeset
|
1936 if (logger.isDebugEnabled()) { |
a077bb098eb4
Fixed broken SQL statement. Added debug output.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
307
diff
changeset
|
1937 logger.debug("loadAllArtifacts success: " + success); |
a077bb098eb4
Fixed broken SQL statement. Added debug output.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
307
diff
changeset
|
1938 } |
a077bb098eb4
Fixed broken SQL statement. Added debug output.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
307
diff
changeset
|
1939 |
a077bb098eb4
Fixed broken SQL statement. Added debug output.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
307
diff
changeset
|
1940 return success; |
303
190aa68ae7a8
Added method to artifact database to load all artifacts.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
301
diff
changeset
|
1941 } |
314
31ee2b3b5a57
forward list of deleted collections and artifacts from data cleaner to backend to backend listeners.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
313
diff
changeset
|
1942 |
31ee2b3b5a57
forward list of deleted collections and artifacts from data cleaner to backend to backend listeners.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
313
diff
changeset
|
1943 @Override |
31ee2b3b5a57
forward list of deleted collections and artifacts from data cleaner to backend to backend listeners.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
313
diff
changeset
|
1944 public void killedArtifacts(List<String> identifiers) { |
31ee2b3b5a57
forward list of deleted collections and artifacts from data cleaner to backend to backend listeners.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
313
diff
changeset
|
1945 logger.debug("killedArtifacts"); |
31ee2b3b5a57
forward list of deleted collections and artifacts from data cleaner to backend to backend listeners.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
313
diff
changeset
|
1946 for (BackendListener listener: listeners) { |
31ee2b3b5a57
forward list of deleted collections and artifacts from data cleaner to backend to backend listeners.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
313
diff
changeset
|
1947 listener.killedArtifacts(identifiers, this); |
31ee2b3b5a57
forward list of deleted collections and artifacts from data cleaner to backend to backend listeners.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
313
diff
changeset
|
1948 } |
31ee2b3b5a57
forward list of deleted collections and artifacts from data cleaner to backend to backend listeners.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
313
diff
changeset
|
1949 } |
31ee2b3b5a57
forward list of deleted collections and artifacts from data cleaner to backend to backend listeners.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
313
diff
changeset
|
1950 |
31ee2b3b5a57
forward list of deleted collections and artifacts from data cleaner to backend to backend listeners.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
313
diff
changeset
|
1951 @Override |
31ee2b3b5a57
forward list of deleted collections and artifacts from data cleaner to backend to backend listeners.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
313
diff
changeset
|
1952 public void killedCollections(List<String> identifiers) { |
31ee2b3b5a57
forward list of deleted collections and artifacts from data cleaner to backend to backend listeners.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
313
diff
changeset
|
1953 logger.debug("killedCollections"); |
31ee2b3b5a57
forward list of deleted collections and artifacts from data cleaner to backend to backend listeners.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
313
diff
changeset
|
1954 for (BackendListener listener: listeners) { |
31ee2b3b5a57
forward list of deleted collections and artifacts from data cleaner to backend to backend listeners.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
313
diff
changeset
|
1955 listener.killedCollections(identifiers, this); |
31ee2b3b5a57
forward list of deleted collections and artifacts from data cleaner to backend to backend listeners.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
313
diff
changeset
|
1956 } |
31ee2b3b5a57
forward list of deleted collections and artifacts from data cleaner to backend to backend listeners.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
313
diff
changeset
|
1957 } |
13
0d6badf6af42
Added not yet working backend to artifact database.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1958 } |
79
f69e5b87f05f
Implementation to export artifacts as xml (applied patch from issue208 by SLT).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
47
diff
changeset
|
1959 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |