@Override public CloseableIterator<MFile> getFileIterator() throws IOException { return new MFileIterator(org.getFileIterator(), filter); } }
private boolean needsUpdate(CollectionUpdateType ff, File collectionIndexFile) throws IOException { long collectionLastModified = collectionIndexFile.lastModified(); Set<String> newFileSet = new HashSet<>(); CollectionManager.ChangeChecker cc = GribIndex.getChangeChecker(); try (CloseableIterator<MFile> iter = dcm.getFileIterator()) { while (iter != null && iter.hasNext()) { MFile memberOfCollection = iter.next(); if (cc.hasChangedSince(memberOfCollection, collectionLastModified)) return true; // checks both data and gbx9 file newFileSet.add(memberOfCollection.getPath()); } } if (ff == CollectionUpdateType.testIndexOnly) return false; // now see if any files were deleted, by reading the index and comparing to the files there GribCdmIndex reader = new GribCdmIndex(logger); List<MFile> oldFiles = new ArrayList<>(); reader.readMFiles(collectionIndexFile.toPath(), oldFiles); Set<String> oldFileSet = new HashSet<>(); for (MFile oldFile : oldFiles) { if (!newFileSet.contains(oldFile.getPath())) return true; // got deleted - must recreate the index oldFileSet.add(oldFile.getPath()); } // now see if any files were added for (String newFilename : newFileSet) { if (!oldFileSet.contains(newFilename)) return true; // got added - must recreate the index } return false; }
try (CloseableIterator<MFile> iter = dcm.getFileIterator()) { // not sorted if (iter == null) return new ArrayList<>(); // empty
try (CloseableIterator<MFile> iter = dcm.getFileIterator()) { // not sorted if (iter == null) return new ArrayList<>(); // empty