View Javadoc

1   package org.bitrepository.integrityservice.cache.database;
2   
3   import static org.bitrepository.integrityservice.cache.database.DatabaseConstants.COLLECTION_KEY;
4   import static org.bitrepository.integrityservice.cache.database.DatabaseConstants.COLLECTION_STATS_TABLE;
5   import static org.bitrepository.integrityservice.cache.database.DatabaseConstants.CS_CHECKSUM_ERRORS;
6   import static org.bitrepository.integrityservice.cache.database.DatabaseConstants.CS_FILECOUNT;
7   import static org.bitrepository.integrityservice.cache.database.DatabaseConstants.CS_FILESIZE;
8   import static org.bitrepository.integrityservice.cache.database.DatabaseConstants.CS_STAT_KEY;
9   import static org.bitrepository.integrityservice.cache.database.DatabaseConstants.FILES_ID;
10  import static org.bitrepository.integrityservice.cache.database.DatabaseConstants.FILES_KEY;
11  import static org.bitrepository.integrityservice.cache.database.DatabaseConstants.FILES_TABLE;
12  import static org.bitrepository.integrityservice.cache.database.DatabaseConstants.FILE_INFO_TABLE;
13  import static org.bitrepository.integrityservice.cache.database.DatabaseConstants.FI_FILE_KEY;
14  import static org.bitrepository.integrityservice.cache.database.DatabaseConstants.FI_FILE_STATE;
15  import static org.bitrepository.integrityservice.cache.database.DatabaseConstants.FI_PILLAR_KEY;
16  import static org.bitrepository.integrityservice.cache.database.DatabaseConstants.PILLAR_ID;
17  import static org.bitrepository.integrityservice.cache.database.DatabaseConstants.PILLAR_KEY;
18  import static org.bitrepository.integrityservice.cache.database.DatabaseConstants.PILLAR_TABLE;
19  import static org.bitrepository.integrityservice.cache.database.DatabaseConstants.STATS_COLLECTION_KEY;
20  import static org.bitrepository.integrityservice.cache.database.DatabaseConstants.STATS_KEY;
21  import static org.bitrepository.integrityservice.cache.database.DatabaseConstants.STATS_LAST_UPDATE;
22  import static org.bitrepository.integrityservice.cache.database.DatabaseConstants.STATS_TABLE;
23  import static org.bitrepository.integrityservice.cache.database.DatabaseConstants.STATS_TIME;
24  
25  import org.bitrepository.service.database.DatabaseManager;
26  import org.bitrepository.settings.repositorysettings.Collections;
27  
28  /**
29   * DAO class implementing the specifics for a Postgres based backend for the integrityDB 
30   */
31  public class PostgresIntegrityDAO extends IntegrityDAO {
32  
33      public PostgresIntegrityDAO(DatabaseManager databaseManager, Collections collections) {
34          super(databaseManager, collections);
35      }
36  
37      @Override
38      protected String getLatestCollectionStatsSQL() {
39          return "SELECT c." + CS_FILECOUNT +  ", c." + CS_FILESIZE + ", c." + CS_CHECKSUM_ERRORS
40                  + ", s." + STATS_TIME + ", s." + STATS_LAST_UPDATE 
41                  + " FROM " + COLLECTION_STATS_TABLE + " c "
42                  + " JOIN " + STATS_TABLE + " s" 
43                  + " ON  c." + CS_STAT_KEY + " = s." + STATS_KEY
44                  + " WHERE s." + STATS_COLLECTION_KEY + " = ?"
45                  + " ORDER BY s." + STATS_TIME + " DESC "
46                  + " LIMIT ?";
47      }
48  
49      @Override
50      protected String getLatestStatisticsKeySQL() {
51          return "SELECT " + STATS_KEY + " FROM " + STATS_TABLE
52                  + " WHERE " + STATS_COLLECTION_KEY + " = ?"
53                  + " ORDER BY " + STATS_KEY + " DESC"
54                  + " LIMIT 1";
55      }
56  
57      @Override
58      protected String getMissingFilesOnPillarSql() {
59          String selectSql = "SELECT " + FILES_TABLE + "." + FILES_ID + " FROM " + FILES_TABLE 
60                  + " JOIN " + FILE_INFO_TABLE 
61                  + " ON " + FILES_TABLE + "." + FILES_KEY + "=" + FILE_INFO_TABLE + "." + FI_FILE_KEY 
62                  + " WHERE " + FILE_INFO_TABLE + "." + FI_FILE_STATE + " = ?"
63                  + " AND "+ FILES_TABLE + "." + COLLECTION_KEY + "= ?" 
64                  + " AND " + FILE_INFO_TABLE + "." + FI_PILLAR_KEY + " = ("
65                      + " SELECT " + PILLAR_KEY + " FROM " + PILLAR_TABLE 
66                      + " WHERE " + PILLAR_ID + " = ? )"
67                  + " ORDER BY " + FILES_TABLE + "." + FILES_KEY
68                  + " OFFSET ?"
69                  + " LIMIT ?";
70          
71          return selectSql;
72      }
73  
74  }