package org.archive.wayback.util; import java.io.File; import java.util.Date; import java.util.HashMap; import java.util.List; public class MonitoredFileSet { List<String> files; public MonitoredFileSet(List<String> files) { this.files = files; } public boolean isChanged(FileState fileState) { FileState currentFileState = getFileState(); return currentFileState.isChanged(fileState); } public FileState getFileState() { FileState fileState = new FileState(); for(String path : files) { File file = new File(path); if(file.isFile()) { fileState.put(path, new Date(file.lastModified())); } else { fileState.put(path, null); } } return fileState; } public class FileState extends HashMap<String,Date> { public boolean isChanged(FileState other) { for(String path : keySet()) { if(other.containsKey(path)) { Date otherDate = other.get(path); Date thisDate = get(path); if((otherDate == null) && (thisDate == null)) { // treat both missing as the same.. continue; } if(!otherDate.equals(thisDate)) { return true; } } } return false; } } }