1
2
3
4
5
6
7
8 package com.atlassian.core.util;
9
10 import alt.java.io.File;
11 import alt.java.io.FileImpl;
12 import org.apache.log4j.Category;
13
14 import java.util.HashMap;
15 import java.util.Map;
16
17 public class FileFactory
18 {
19 private static Map mockFiles;
20 private static transient final Category log = Category.getInstance(FileFactory.class);
21
22
23 public static File getFile(String absoluteFilename)
24 {
25 if (mockFiles == null || mockFiles.get(absoluteFilename) == null)
26 return new FileImpl(absoluteFilename);
27 else
28 return (File) mockFiles.get(absoluteFilename);
29 }
30
31 public static void addMockFile(String filename, File file)
32 {
33 if (mockFiles == null)
34 mockFiles = new HashMap();
35
36 mockFiles.put(filename, file);
37 }
38
39 public static void flushMockFiles()
40 {
41 mockFiles = null;
42 }
43
44 public static void removeDirectory(File directory)
45 {
46 String[] list = directory.list();
47
48 if (list == null)
49 {
50 list = new String[0];
51 }
52
53 for (int i = 0; i < list.length; i++)
54 {
55 String filename = list[i];
56 File f = FileFactory.getFile(directory.getAbsolutePath() + System.getProperty("file.separator") + filename);
57 if (f.isDirectory())
58 {
59 removeDirectory(f);
60 }
61 else
62 {
63 log.debug("Deleting " + f.getAbsolutePath());
64 if (!f.delete())
65 {
66 log.warn("Unable to delete file " + f.getAbsolutePath());
67 }
68 }
69 }
70
71 if (!directory.delete())
72 {
73 log.error("Unable to delete directory " + directory.getAbsolutePath());
74 }
75 }
76 }