diff artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java @ 313:ddc35c950e97

Backend: Handle forgotten store/create event source. artifacts/trunk@2440 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Mon, 01 Aug 2011 15:43:44 +0000
parents fa056f9c8a0c
children 31ee2b3b5a57
line wrap: on
line diff
--- a/artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java	Mon Aug 01 14:54:34 2011 +0000
+++ b/artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java	Mon Aug 01 15:43:44 2011 +0000
@@ -357,10 +357,12 @@
 
     public void addListener(BackendListener listener) {
         listeners.add(listener);
+        logger.debug("# listeners: " + listeners.size());
     }
 
     public void addAllListeners(List<BackendListener> others) {
         listeners.addAll(others);
+        logger.debug("# listeners: " + listeners.size());
     }
 
     /**
@@ -603,7 +605,8 @@
             throw new RuntimeException("No valid UUID");
         }
 
-        final int [] id = new int[1];
+        final int     [] id     = new int[1];
+        final boolean [] stored = new boolean[1];
 
         SQLExecutor.Instance exec = sqlExecutor.new Instance() {
             public boolean doIt() throws SQLException {
@@ -618,7 +621,7 @@
 
                 reset();
 
-                if (ID != null) { // already in database
+                if (stored[0] = ID != null) { // already in database
                     prepareStatement(SQL_REPLACE);
 
                     if (ttl == null) {
@@ -674,6 +677,13 @@
             throw new RuntimeException("failed insert artifact into database");
         }
 
+        if (stored[0]) {
+            fireStoredArtifact(artifact);
+        }
+        else {
+            fireCreatedArtifact(artifact);
+        }
+
         return id[0];
     }
 
@@ -1738,8 +1748,6 @@
         boolean success = sqlExecutor.new Instance() {
             @Override
             public boolean doIt() throws SQLException {
-                logger.debug("doIt");
-
                 // a little cache to avoid too much deserializations.
                 LRUCache<String, Artifact> alreadyLoaded =
                     new LRUCache<String, Artifact>(200);

http://dive4elements.wald.intevation.org