FileDocCategorySizeDatePackage
MRUFileManager.javaAPI DocApache log4j 1.2.157849Sat Aug 25 00:09:38 BST 2007org.apache.log4j.lf5.viewer.configure

MRUFileManager

public class MRUFileManager extends Object

MRUFileManager handles the storage and retrival the most recently opened log files.

author
Brad Marlborough
author
Richard Hurst

Fields Summary
private static final String
CONFIG_FILE_NAME
private static final int
DEFAULT_MAX_SIZE
private int
_maxSize
private LinkedList
_mruFileList
Constructors Summary
public MRUFileManager()


  //--------------------------------------------------------------------------
  //   Constructors:
  //--------------------------------------------------------------------------
    
    load();
    setMaxSize(DEFAULT_MAX_SIZE);
  
public MRUFileManager(int maxSize)

    load();
    setMaxSize(maxSize);
  
Methods Summary
public static voidcreateConfigurationDirectory()
Creates the directory where the MRU file list will be written. The "lf5" directory is created in the Documents and Settings directory on Windows 2000 machines and where ever the user.home variable points on all other platforms.

    String home = System.getProperty("user.home");
    String sep = System.getProperty("file.separator");
    File f = new File(home + sep + "lf5");
    if (!f.exists()) {
      try {
        f.mkdir();
      } catch (SecurityException e) {
        e.printStackTrace();
      }
    }

  
public java.lang.ObjectgetFile(int index)
Returns a particular file name stored in a MRU file list based on an index value.

    if (index < size()) {
      return _mruFileList.get(index);
    }

    return null;
  
protected java.lang.StringgetFilename()

    String home = System.getProperty("user.home");
    String sep = System.getProperty("file.separator");

    return home + sep + "lf5" + sep + CONFIG_FILE_NAME;
  
protected java.io.InputStreamgetInputStream(java.io.File file)
Gets an input stream for the corresponding file.

param
file The file to create the input stream from.
return
InputStream

    BufferedInputStream reader =
        new BufferedInputStream(new FileInputStream(file));

    return reader;
  
protected java.io.InputStreamgetInputStream(java.net.URL url)
Gets an input stream for the corresponding URL.

param
url The url to create the input stream from.
return
InputStream

    return url.openStream();
  
public java.io.InputStreamgetInputStream(int index)
Returns a input stream to the resource at the specified index

    if (index < size()) {
      Object o = getFile(index);
      if (o instanceof File) {
        return getInputStream((File) o);
      } else {
        return getInputStream((URL) o);
      }
    }
    return null;
  
public java.lang.String[]getMRUFileList()
Gets the list of files stored in the MRU file list.

    if (size() == 0) {
      return null;
    }

    String[] ss = new String[size()];

    for (int i = 0; i < size(); i++) {
      Object o = getFile(i);
      if (o instanceof File) {
        ss[i] = ((File) o).getAbsolutePath();
      } else // must be a url
      {
        ss[i] = o.toString();
      }

    }

    return ss;
  
protected voidload()
Loads the MRU file list in from a file and stores it in a LinkedList. If no file exists, a new LinkedList is created.

    createConfigurationDirectory();
    File file = new File(getFilename());
    if (file.exists()) {
      try {
        ObjectInputStream ois = new ObjectInputStream(
            new FileInputStream(file));
        _mruFileList = (LinkedList) ois.readObject();
        ois.close();

        // check that only files and url are in linked list
        Iterator it = _mruFileList.iterator();
        while (it.hasNext()) {
          Object o = it.next();
          if (!(o instanceof File) && !(o instanceof URL)) {
            it.remove();
          }
        }
      } catch (Exception e) {
        _mruFileList = new LinkedList();
      }
    } else {
      _mruFileList = new LinkedList();
    }

  
public voidmoveToTop(int index)
Moves the the index to the top of the MRU List

param
index The index to be first in the mru list

    _mruFileList.add(0, _mruFileList.remove(index));
  
public voidsave()
Saves a list of MRU files out to a file.

    File file = new File(getFilename());

    try {
      ObjectOutputStream oos = new ObjectOutputStream(new
          FileOutputStream(file));
      oos.writeObject(_mruFileList);
      oos.flush();
      oos.close();
    } catch (Exception e) {
      // do nothing
      e.printStackTrace();
    }
  
public voidset(java.io.File file)
Adds a file name to the MRU file list.

    setMRU(file);
  
public voidset(java.net.URL url)
Adds a url to the MRU file list.

    setMRU(url);
  
protected voidsetMRU(java.lang.Object o)
Adds an object to the mru.

    int index = _mruFileList.indexOf(o);

    if (index == -1) {
      _mruFileList.add(0, o);
      setMaxSize(_maxSize);
    } else {
      moveToTop(index);
    }
  
protected voidsetMaxSize(int maxSize)
Ensures that the MRU list will have a MaxSize.

    if (maxSize < _mruFileList.size()) {
      for (int i = 0; i < _mruFileList.size() - maxSize; i++) {
        _mruFileList.removeLast();
      }
    }

    _maxSize = maxSize;
  
public intsize()
Gets the size of the MRU file list.

    return _mruFileList.size();