View Javadoc

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      /** The log.*/
19      private Logger log = LoggerFactory.getLogger(getClass());
20      
21      /** The connector to the database.*/
22      protected final DBConnector dbConnector;
23      /** Caching of CollectionKeys (mapping from ID to Key) */
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       *  @return The list of collections defined in the database.
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       * Method to retrieve the database key for the given collectionId
43       * @param collectionId The ID of the collection 
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  }