001 package org.apache.torque.util; 002 003 import java.io.File; 004 import java.util.List; 005 006 import org.apache.commons.logging.Log; 007 import org.apache.commons.logging.LogFactory; 008 009 public class ChangeDetector { 010 011 private static final Log log = LogFactory.getLog(ChangeDetector.class); 012 File controlFile; 013 List<File> files; 014 015 public ChangeDetector() { 016 this(null, null); 017 } 018 019 public ChangeDetector(File controlFile, List<File> files) { 020 super(); 021 this.controlFile = controlFile; 022 this.files = files; 023 } 024 025 /** 026 * Return true if any file in the list of files has a last modified timestamp newer than the control file or if the 027 * control file does not exist 028 */ 029 public boolean isChanged() { 030 if (!getControlFile().exists()) { 031 log.debug("File " + getControlFile().getAbsolutePath() + " does not exist. Returning true"); 032 return true; 033 } 034 long lastModified = getControlFile().lastModified(); 035 for (File file : getFiles()) { 036 if (file.lastModified() > lastModified) { 037 log.debug("File " + file.getAbsolutePath() + " was modified after " + getControlFile().getAbsolutePath() + " was last modified"); 038 return true; 039 } 040 } 041 log.debug("No files were modified."); 042 return false; 043 } 044 045 public File getControlFile() { 046 return controlFile; 047 } 048 049 public void setControlFile(File controlFile) { 050 this.controlFile = controlFile; 051 } 052 053 public List<File> getFiles() { 054 return files; 055 } 056 057 public void setFiles(List<File> files) { 058 this.files = files; 059 } 060 }