Lines 113-132
Link Here
|
113 |
/** return all subdirectories in an array |
113 |
/** return all subdirectories in an array |
114 |
*/ |
114 |
*/ |
115 |
public CacheDir[] getSubDirs() { |
115 |
public CacheDir[] getSubDirs() { |
116 |
LinkedList col = new LinkedList(); |
116 |
List col = new ArrayList(childDirs.keySet().size()); |
117 |
CacheHandler handler = CacheHandler.getInstance(); |
|
|
118 |
synchronized (CHILD_FILES_LOCK) { |
117 |
synchronized (CHILD_FILES_LOCK) { |
119 |
for (Iterator it = new ArrayList(childDirs.keySet()).iterator(); it.hasNext(); ) { |
118 |
for (Iterator it = new ArrayList(childDirs.keySet()).iterator(); it.hasNext(); ) { |
120 |
String name = (String) it.next(); |
119 |
String name = (String) it.next(); |
121 |
Reference rDir = (Reference) childDirs.get(name); |
120 |
Reference rDir = (Reference) childDirs.get(name); |
122 |
CacheDir cDir = (CacheDir) rDir.get(); |
121 |
CacheDir cDir = (CacheDir) rDir.get(); |
123 |
if (cDir == null) { |
122 |
if (cDir == null) { |
124 |
CacheFile.PersistentData data = handler.getReferencedData(rDir); |
123 |
cDir = readDirFromDisk(name); |
125 |
if (data != null) { |
|
|
126 |
cDir = (CacheDir) createChildFromData(data); |
127 |
} else { |
128 |
cDir = readDirFromDisk(name); |
129 |
} |
130 |
cDir.setParent(this); |
124 |
cDir.setParent(this); |
131 |
childDirs.put(name, createReference(cDir)); |
125 |
childDirs.put(name, createReference(cDir)); |
132 |
} |
126 |
} |
Lines 152-163
Link Here
|
152 |
if (rDir == null) return null; |
146 |
if (rDir == null) return null; |
153 |
CacheDir cDir = (CacheDir) rDir.get(); |
147 |
CacheDir cDir = (CacheDir) rDir.get(); |
154 |
if (cDir == null) { |
148 |
if (cDir == null) { |
155 |
CacheFile.PersistentData data = CacheHandler.getInstance().getReferencedData(rDir); |
149 |
cDir = readDirFromDisk(name); |
156 |
if (data != null) { |
|
|
157 |
cDir = (CacheDir) createChildFromData(data); |
158 |
} else { |
159 |
cDir = readDirFromDisk(name); |
160 |
} |
161 |
cDir.setParent(this); |
150 |
cDir.setParent(this); |
162 |
childDirs.put(name, createReference(cDir)); |
151 |
childDirs.put(name, createReference(cDir)); |
163 |
getCacheObject().registerDir(cDir); |
152 |
getCacheObject().registerDir(cDir); |
Lines 306-313
Link Here
|
306 |
//----- file stuff ------------------------------------------------------- |
295 |
//----- file stuff ------------------------------------------------------- |
307 |
|
296 |
|
308 |
public CacheFile[] getFiles() { |
297 |
public CacheFile[] getFiles() { |
309 |
LinkedList col = new LinkedList(); |
298 |
List col = new ArrayList(childFiles.keySet().size()); |
310 |
CacheHandler handler = CacheHandler.getInstance(); |
|
|
311 |
synchronized (CHILD_FILES_LOCK) { |
299 |
synchronized (CHILD_FILES_LOCK) { |
312 |
String cacheFilePath = getCacheFileName(); |
300 |
String cacheFilePath = getCacheFileName(); |
313 |
BufferedReader in = null; |
301 |
BufferedReader in = null; |
Lines 326-342
Link Here
|
326 |
Reference rFile = (Reference) childFiles.get(name); |
314 |
Reference rFile = (Reference) childFiles.get(name); |
327 |
CacheFile cFile = (CacheFile) rFile.get(); |
315 |
CacheFile cFile = (CacheFile) rFile.get(); |
328 |
if (cFile == null) { |
316 |
if (cFile == null) { |
329 |
CacheFile.PersistentData data = handler.getReferencedData(rFile); |
317 |
if (in != null) { |
330 |
if (data != null) { |
318 |
in.mark( (int)cacheFile.length()); |
331 |
cFile = (CacheFile) createChildFromData(data); |
319 |
} |
332 |
} else { |
320 |
cFile = readFileFromDisk(name, in); |
333 |
if (in != null) { |
321 |
if (in != null) { |
334 |
in.mark( (int)cacheFile.length()); |
322 |
in.reset(); |
335 |
} |
|
|
336 |
cFile = readFileFromDisk(name, in); |
337 |
if (in != null) { |
338 |
in.reset(); |
339 |
} |
340 |
} |
323 |
} |
341 |
cFile.setParent(this); |
324 |
cFile.setParent(this); |
342 |
childFiles.put(name, createReference(cFile)); |
325 |
childFiles.put(name, createReference(cFile)); |
Lines 380-391
Link Here
|
380 |
if (rFile == null) return null; |
363 |
if (rFile == null) return null; |
381 |
CacheFile cFile = (CacheFile) rFile.get(); |
364 |
CacheFile cFile = (CacheFile) rFile.get(); |
382 |
if (cFile == null) { |
365 |
if (cFile == null) { |
383 |
CacheFile.PersistentData data = CacheHandler.getInstance().getReferencedData(rFile); |
366 |
cFile = readFileFromDisk(name); |
384 |
if (data != null) { |
|
|
385 |
cFile = (CacheFile) createChildFromData(data); |
386 |
} else { |
387 |
cFile = readFileFromDisk(name); |
388 |
} |
389 |
cFile.setParent(this); |
367 |
cFile.setParent(this); |
390 |
childFiles.put(name, createReference(cFile)); |
368 |
childFiles.put(name, createReference(cFile)); |
391 |
} |
369 |
} |
Lines 470-477
Link Here
|
470 |
} |
448 |
} |
471 |
|
449 |
|
472 |
|
450 |
|
473 |
protected abstract CacheFile createChildFromData(CacheFile.PersistentData data); |
|
|
474 |
|
475 |
/** sets the strategy level taht this directory resides at. |
451 |
/** sets the strategy level taht this directory resides at. |
476 |
*/ |
452 |
*/ |
477 |
public final void setAppliedLevel(int strat) { |
453 |
public final void setAppliedLevel(int strat) { |
Lines 781-787
Link Here
|
781 |
CacheHandler handler = CacheHandler.getInstance(); |
757 |
CacheHandler handler = CacheHandler.getInstance(); |
782 |
Reference ref = new CacheReference(cFile, handler.getCacheFileReferenceQueue()); |
758 |
Reference ref = new CacheReference(cFile, handler.getCacheFileReferenceQueue()); |
783 |
//new WeakReference(cFile, handler.getCacheFileReferenceQueue()); |
759 |
//new WeakReference(cFile, handler.getCacheFileReferenceQueue()); |
784 |
if (cFile != null) handler.addReferencedData(ref, cFile.getPersistentData()); |
|
|
785 |
return ref; |
760 |
return ref; |
786 |
//return new /*java.lang.ref.WeakReference(cFile);//*/CacheFileReference(cFile); |
761 |
//return new /*java.lang.ref.WeakReference(cFile);//*/CacheFileReference(cFile); |
787 |
} |
762 |
} |