Mercurial > dive4elements > framework
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);