MRUFileManager handles the storage and retrival the most
recently opened log files.
| Method from org.apache.log4j.lf5.viewer.configure.MRUFileManager Detail: |
public static void createConfigurationDirectory() {
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();
}
}
}
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. |
public Object getFile(int index) {
if (index < size()) {
return _mruFileList.get(index);
}
return null;
}
Returns a particular file name stored in a MRU file
list based on an index value. |
protected String getFilename() {
String home = System.getProperty("user.home");
String sep = System.getProperty("file.separator");
return home + sep + "lf5" + sep + CONFIG_FILE_NAME;
}
|
public InputStream getInputStream(int index) throws IOException, FileNotFoundException {
if (index < size()) {
Object o = getFile(index);
if (o instanceof File) {
return getInputStream((File) o);
} else {
return getInputStream((URL) o);
}
}
return null;
}
Returns a input stream to the resource at the specified index |
protected InputStream getInputStream(File file) throws IOException, FileNotFoundException {
BufferedInputStream reader =
new BufferedInputStream(new FileInputStream(file));
return reader;
}
Gets an input stream for the corresponding file. |
protected InputStream getInputStream(URL url) throws IOException {
return url.openStream();
}
Gets an input stream for the corresponding URL. |
public String[] getMRUFileList() {
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;
}
Gets the list of files stored in the MRU file list. |
protected void load() {
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();
}
}
Loads the MRU file list in from a file and stores it in a LinkedList.
If no file exists, a new LinkedList is created. |
public void moveToTop(int index) {
_mruFileList.add(0, _mruFileList.remove(index));
}
Moves the the index to the top of the MRU List |
public void save() {
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();
}
}
Saves a list of MRU files out to a file. |
public void set(File file) {
setMRU(file);
}
Adds a file name to the MRU file list. |
public void set(URL url) {
setMRU(url);
}
Adds a url to the MRU file list. |
protected void setMRU(Object o) {
int index = _mruFileList.indexOf(o);
if (index == -1) {
_mruFileList.add(0, o);
setMaxSize(_maxSize);
} else {
moveToTop(index);
}
}
Adds an object to the mru. |
protected void setMaxSize(int maxSize) {
if (maxSize < _mruFileList.size()) {
for (int i = 0; i < _mruFileList.size() - maxSize; i++) {
_mruFileList.removeLast();
}
}
_maxSize = maxSize;
}
Ensures that the MRU list will have a MaxSize. |
public int size() {
return _mruFileList.size();
}
Gets the size of the MRU file list. |