1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.vfs.cache;
18
19 import org.apache.commons.vfs.FileName;
20 import org.apache.commons.vfs.FileObject;
21 import org.apache.commons.vfs.FileSystem;
22
23 import java.util.HashMap;
24 import java.util.Map;
25 import java.util.TreeMap;
26
27 /***
28 * A {@link org.apache.commons.vfs.FilesCache} implementation.<br>
29 * This implementation caches every file for the complete lifetime of the used {@link org.apache.commons.vfs.FileSystemManager}.
30 *
31 * @author <a href="mailto:imario@apache.org">Mario Ivankovits</a>
32 * @version $Revision: 480428 $ $Date: 2006-11-29 07:15:24 +0100 (Mi, 29 Nov 2006) $
33 */
34 public class DefaultFilesCache extends AbstractFilesCache
35 {
36 private final Map filesystemCache = new HashMap(10);
37
38 public void putFile(final FileObject file)
39 {
40 Map files = getOrCreateFilesystemCache(file.getFileSystem());
41 files.put(file.getName(), file);
42 }
43
44 public FileObject getFile(final FileSystem filesystem, final FileName name)
45 {
46 Map files = getOrCreateFilesystemCache(filesystem);
47 return (FileObject) files.get(name);
48 }
49
50 public void clear(FileSystem filesystem)
51 {
52 Map files = getOrCreateFilesystemCache(filesystem);
53 files.clear();
54 }
55
56 protected Map getOrCreateFilesystemCache(FileSystem filesystem)
57 {
58 Map files = (Map) filesystemCache.get(filesystem);
59 if (files == null)
60 {
61 files = new TreeMap();
62 filesystemCache.put(filesystem, files);
63 }
64
65 return files;
66 }
67
68 public void close()
69 {
70 super.close();
71
72 filesystemCache.clear();
73 }
74
75 public void removeFile(FileSystem filesystem, FileName name)
76 {
77 Map files = getOrCreateFilesystemCache(filesystem);
78 files.remove(name);
79 }
80
81 public void touchFile(FileObject file)
82 {
83 }
84 }