View Javadoc

1   /**
2    * Created by IntelliJ IDEA.
3    * User: Edwin
4    * Date: Nov 29, 2002
5    * Time: 1:25:34 PM
6    * To change this template use Options | File Templates.
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  }