diff artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java @ 305:f33401ea2a6c

Artifact database: Refactorized the usage of dialect independent SQL to be reusable. artifacts/trunk@2412 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Thu, 28 Jul 2011 10:19:35 +0000
parents b0a949d3fe09
children 31ee2b3b5a57
line wrap: on
line diff
--- a/artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java	Wed Jul 27 13:51:30 2011 +0000
+++ b/artifact-database/src/main/java/de/intevation/artifactdatabase/DatabaseCleaner.java	Thu Jul 28 10:19:35 2011 +0000
@@ -13,6 +13,9 @@
 
 import de.intevation.artifacts.Artifact;
 
+import de.intevation.artifactdatabase.db.SQL;
+import de.intevation.artifactdatabase.db.DBConnection;
+
 import java.sql.Connection;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
@@ -78,23 +81,16 @@
     /**
      * The SQL statement to select the outdated artifacts.
      */
-    public static final String SQL_OUTDATED =
-        SQL.get("artifacts.outdated");
+    public String SQL_OUTDATED;
 
-    public static final String SQL_OUTDATED_COLLECTIONS =
-        SQL.get("collections.outdated");
-
-    public static final String SQL_DELETE_COLLECTION_ITEMS =
-        SQL.get("delete.collection.items");
-
-    public static final String SQL_DELETE_COLLECTION =
-        SQL.get("delete.collection");
+    public String SQL_OUTDATED_COLLECTIONS;
+    public String SQL_DELETE_COLLECTION_ITEMS;
+    public String SQL_DELETE_COLLECTION;
 
     /**
      * The SQL statement to delete some artifacts from the database.
      */
-    public static final String SQL_DELETE_ARTIFACT =
-        SQL.get("artifacts.delete");
+    public String SQL_DELETE_ARTIFACT;
 
     /**
      * XPath to figure out how long the cleaner should sleep between
@@ -136,6 +132,8 @@
      */
     protected ArtifactReviver reviver;
 
+    protected DBConnection dbConnection;
+
     /**
      * Default constructor.
      */
@@ -148,11 +146,21 @@
      * @param context The global context of the artifact database
      * @param reviver The reviver to awake artifact one last time.
      */
-    public DatabaseCleaner(Object context, ArtifactReviver reviver) {
+    public DatabaseCleaner(Object context, ArtifactReviver reviver, DBConfig config) {
         setDaemon(true);
         sleepTime = getSleepTime();
         this.context = context;
         this.reviver = reviver;
+        this.dbConnection = config.getDBConnection();
+        setupSQL(config.getSQL());
+    }
+
+    protected void setupSQL(SQL sql) {
+        SQL_OUTDATED                = sql.get("artifacts.outdated");
+        SQL_OUTDATED_COLLECTIONS    = sql.get("collections.outdated");
+        SQL_DELETE_COLLECTION_ITEMS = sql.get("delete.collection.items");
+        SQL_DELETE_COLLECTION       = sql.get("delete.collection");
+        SQL_DELETE_ARTIFACT         = sql.get("artifacts.delete");
     }
 
     /**
@@ -231,7 +239,7 @@
         int removedCollections = 0;
         int removedArtifacts   = 0;
 
-        DataSource dataSource = DBConnection.getDataSource();
+        DataSource dataSource = dbConnection.getDataSource();
 
         Set<Integer> lockedIds = lockedIdsProvider != null
             ? lockedIdsProvider.getLockedIds()

http://dive4elements.wald.intevation.org