/* * This software is distributed under the terms of the FSF * Gnu Lesser General Public License (see lgpl.txt). * * This program is distributed WITHOUT ANY WARRANTY. See the * GNU General Public License for more details. */ package com.scooterframework.admin; import java.io.File; import java.util.Observable; import com.scooterframework.common.logging.LogUtil; /** * FileObservable class is a subclass of <tt>Observable</tt>. * * @author (Fei) John Chen */ public class FileObservable extends Observable { private LogUtil log = LogUtil.getLogger(this.getClass().getName()); private File source = null; private long lastSourceModifiedTime = 0L; public FileObservable(File file) { super(); if (file == null) { throw new IllegalArgumentException("Input file is null."); } else if (!file.isFile()) { throw new IllegalArgumentException("Input file is not file or does not exist: " + file); } source = file; lastSourceModifiedTime = source.lastModified(); } public File getSourceFile() { return source; } void checkChange() { long last = source.lastModified(); if (lastSourceModifiedTime < last) { onChange(); } lastSourceModifiedTime = last; } void onChange() { super.setChanged(); log.debug("File " + source.getName() + " is modified."); notifyObservers(source.getName()); } public String toString() { StringBuilder sb = new StringBuilder(); sb.append(super.toString()); sb.append("source=" + source).append(", "); sb.append("lastSourceModifiedTime=" + lastSourceModifiedTime); return sb.toString(); } }