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
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 }