1 package org.bitrepository.integrityservice.cache.database;
2
3 import static org.bitrepository.integrityservice.cache.database.DatabaseConstants.COLLECTIONS_TABLE;
4 import static org.bitrepository.integrityservice.cache.database.DatabaseConstants.COLLECTION_ID;
5 import static org.bitrepository.integrityservice.cache.database.DatabaseConstants.COLLECTION_KEY;
6
7 import java.util.HashMap;
8 import java.util.List;
9 import java.util.Map;
10
11 import org.bitrepository.common.ArgumentValidator;
12 import org.bitrepository.service.database.DBConnector;
13 import org.bitrepository.service.database.DatabaseUtils;
14 import org.slf4j.Logger;
15 import org.slf4j.LoggerFactory;
16
17 public class IntegrityDAOUtils {
18
19 private Logger log = LoggerFactory.getLogger(getClass());
20
21
22 protected final DBConnector dbConnector;
23
24 private final Map<String, Long> collectionKeyCache;
25
26
27 public IntegrityDAOUtils(DBConnector dbConnector) {
28 ArgumentValidator.checkNotNull(dbConnector, "DBConnector dbConnector");
29 this.dbConnector = dbConnector;
30 collectionKeyCache = new HashMap<String, Long>();
31 }
32
33
34
35
36 public List<String> retrieveCollectionsInDatabase() {
37 String selectSql = "SELECT " + COLLECTION_ID + " FROM " + COLLECTIONS_TABLE;
38 return DatabaseUtils.selectStringList(dbConnector, selectSql, new Object[0]);
39 }
40
41
42
43
44
45 protected Long retrieveCollectionKey(String collectionId) {
46 Long key = collectionKeyCache.get(collectionId);
47 if(key == null) {
48 log.trace("Retrieving key for collection '{}'.", collectionId);
49 String sql = "SELECT " + COLLECTION_KEY + " FROM " + COLLECTIONS_TABLE
50 + " WHERE " + COLLECTION_ID + "= ?";
51 key = DatabaseUtils.selectLongValue(dbConnector, sql, collectionId);
52 collectionKeyCache.put(collectionId, key);
53 }
54 return key;
55 }
56 }