/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.sun.jini.system; import java.lang.Long; import java.lang.String; import java.io.File; import java.util.ArrayList; import java.util.Observable; import java.util.Observer; /** * Observer class that gets notified when a change has been noted, * that is a file has been found, by an Observable object. * This class is normally passed into a class that extends * <code>Observable</code> * * @author Sun Microsystems, Inc. * * @see java.util.Observable * @see java.util.Observer * @see com.sun.jini.system.FileWalker */ public class FileObserver implements Observer { private ArrayList fileList = (new ArrayList()); private ArrayList timeList = (new ArrayList()); private File currentFile = null; private int lcv = 0; private String suffix; /** * Constructor that allows the user to specify interest in a * particular suffix. Only files with the provide suffix * will be saved and returned to the user. All others will fall * through. * <p> * If suffix is an empty string then all files will be matched. */ public FileObserver(String suffix) { this.suffix = suffix; } /** * Called when an Observer monitors a change. * When a change is noted by the item being observed, * in this case the given root build directory, * this method gets called. */ public void update(Observable o,Object arg) { currentFile = (File)arg; if (currentFile.getName().endsWith(suffix)) { //System.out.println("found file:"+currentFile.getName()); fileList.add(lcv,currentFile.getAbsolutePath()); timeList.add(lcv,new Long(currentFile.lastModified())); lcv++; } } /** * Get the complete list of found files. The * list contains String representations of the file names. * * @return ArrayList - List of found files. */ public ArrayList getFileList() { return fileList; } /** * Get the time stamps of the found files. There is a * 1-1 correspondence with the contents of getFileList. * The lit contains Long representations of the file time stamps. * * @see #getFileList * @return ArrayList - List of found files date stamps */ public ArrayList getFileTimeList() { return timeList; } }