Example #1
0
 /**
  * Distributes the given file change event among all file change listeners.
  *
  * @param event the file change event to distribute
  */
 protected void distributeFileChangeEvent(FileChangeEvent event) {
   Iterator it = fileListeners.iterator();
   while (it.hasNext()) {
     FileChangeListener listener = (FileChangeListener) it.next();
     listener.fileChanged(event);
   }
 }
Example #2
0
    @Override
    public void run() {
      synchronized (lock) {
        for (Map.Entry<File, Long> entry : files.entrySet()) {
          File file = entry.getKey();
          long lastModifiedTime = entry.getValue().longValue();
          long newModifiedTime = file.exists() ? file.lastModified() : -1;

          // check if file has been changed
          if (newModifiedTime != lastModifiedTime) {

            // store new modified time
            entry.setValue(new Long(newModifiedTime));

            // notify listeners
            for (FileChangeListener listener : listeners) {
              listener.onFileChange(file);
            }
          }
        }
      }
    }
Example #3
0
 protected void fireFileChangeEvent(FileChangeListener listener, String fileName) {
   listener.fileChanged(fileName);
 }
Example #4
0
 /**
  * Remove the listener from the notification list.
  *
  * @param listener the listener to be removed.
  */
 public void removeFileChangeListener(FileChangeListener listener, String fileName) {
   FileMonitorTask task = (FileMonitorTask) timerTasks.remove(fileName + listener.hashCode());
   if (task != null) {
     task.cancel();
   }
 }
Example #5
0
 /**
  * Start monitoring a file.
  *
  * @param listener listener to notify when the file changed.
  * @param fileName name of the file to monitor.
  * @param period polling period in milliseconds.
  */
 public void addFileChangeListener(FileChangeListener listener, String fileName, long period) {
   removeFileChangeListener(listener, fileName);
   FileMonitorTask task = new FileMonitorTask(listener, fileName);
   timerTasks.put(fileName + listener.hashCode(), task);
   timer.schedule(task, period, period);
 }
 private void notifyListeners() {
   final Properties properties = new Properties(this);
   for (FileChangeListener aListener : listeners) {
     aListener.notifyFileChanged(properties);
   }
 }