private void updateFilenameHistoryCache() { // TODO [medium] Performance: This throws away the unchanged entries. It should only update new // database version filenameHistoryCache.clear(); for (PartialFileHistory cacheFileHistory : fullDatabaseVersionCache.getFileHistories()) { FileVersion lastVersion = cacheFileHistory.getLastVersion(); String fileName = lastVersion.getPath(); if (lastVersion.getStatus() != FileStatus.DELETED) { filenameHistoryCache.put(fileName, cacheFileHistory); } } }
// TODO [medium] Very inefficient. Always updates whole cache private void updateContentChecksumCache() { contentChecksumFileHistoriesCache.clear(); for (PartialFileHistory fullFileHistory : fullDatabaseVersionCache.getFileHistories()) { FileChecksum lastVersionChecksum = fullFileHistory.getLastVersion().getChecksum(); if (lastVersionChecksum != null) { List<PartialFileHistory> historiesWithVersionsWithSameChecksum = contentChecksumFileHistoriesCache.get(lastVersionChecksum); // Create if it does not exist if (historiesWithVersionsWithSameChecksum == null) { historiesWithVersionsWithSameChecksum = new ArrayList<PartialFileHistory>(); } // Add to cache historiesWithVersionsWithSameChecksum.add(fullFileHistory); contentChecksumFileHistoriesCache.put( lastVersionChecksum, historiesWithVersionsWithSameChecksum); } } }