Mercurial > dive4elements > framework
diff artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java @ 230:fbd57d2eeaef
Changed semantics of locked artifact ids.
artifacts/trunk@1634 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Thu, 31 Mar 2011 14:48:28 +0000 |
parents | dd977fb7552e |
children | 16cd059945e5 |
line wrap: on
line diff
--- a/artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java Thu Mar 31 08:58:42 2011 +0000 +++ b/artifact-database/src/main/java/de/intevation/artifactdatabase/ArtifactDatabaseImpl.java Thu Mar 31 14:48:28 2011 +0000 @@ -34,12 +34,11 @@ import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; -import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.HashMap; import java.util.HashSet; -import java.util.List; +import java.util.Set; import javax.xml.xpath.XPathConstants; @@ -60,7 +59,9 @@ * @author <a href="mailto:sascha.teichmann@intevation.de">Sascha L. Teichmann</a> */ public class ArtifactDatabaseImpl -implements ArtifactDatabase, Id.Filter, Backend.FactoryLookup +implements ArtifactDatabase, + DatabaseCleaner.LockedIdsProvider, + Backend.FactoryLookup { private static Logger logger = Logger.getLogger(ArtifactDatabaseImpl.class); @@ -396,7 +397,7 @@ * This artifacts should not be removed from the database by the * database cleaner. */ - protected HashSet backgroundIds; + protected HashSet<Integer> backgroundIds; /** * Default constructor. @@ -423,7 +424,7 @@ */ public ArtifactDatabaseImpl(FactoryBootstrap bootstrap, Backend backend) { - backgroundIds = new HashSet(); + backgroundIds = new HashSet<Integer>(); setupArtifactCollectionFactory(bootstrap); setupArtifactFactories(bootstrap); @@ -555,7 +556,7 @@ */ protected void removeIdFromBackground(int id) { synchronized (backgroundIds) { - backgroundIds.remove(Integer.valueOf(id)); + backgroundIds.remove(id); } } @@ -572,19 +573,10 @@ } } - public List filterIds(List ids) { - int N = ids.size(); - ArrayList out = new ArrayList(N); + public Set<Integer> getLockedIds() { synchronized (backgroundIds) { - for (int i = 0; i < N; ++i) { - Id id = (Id)ids.get(i); - // only delete artifact if its not in background. - if (!backgroundIds.contains(Integer.valueOf(id.getId()))) { - out.add(id); - } - } + return new HashSet<Integer>(backgroundIds); } - return out; } public String [][] artifactFactoryNamesAndDescriptions() {