1   package com.atlassian.core.spool;
2   
3   import java.io.File;
4   import java.io.IOException;
5   
6   /**
7    * Default file factory for spooling. Creates a new temporary file via File::createTempFile().
8    * The file is automatically scheduled for deletion via File::deleteOnExit()
9    *
10   * @see java.io.File#createTempFile(String, String, File)
11   * @see File#deleteOnExit()
12   */
13  public class DefaultSpoolFileFactory implements FileFactory
14  {
15      private static final DefaultSpoolFileFactory INSTANCE = new DefaultSpoolFileFactory();
16  
17      private String spoolPrefix = "spool-";
18      private String spoolSuffix = ".tmp";
19      private File spoolDirectory = null;
20  
21      /**
22       * @return a singleton instance of this file factory, using default settings
23       */
24      public static DefaultSpoolFileFactory getInstance()
25      {
26          return INSTANCE;
27      }
28  
29      public void setSpoolPrefix(String spoolPrefix)
30      {
31          this.spoolPrefix = spoolPrefix;
32      }
33  
34      public void setSpoolSuffix(String spoolSuffix)
35      {
36          this.spoolSuffix = spoolSuffix;
37      }
38  
39      public void setSpoolDirectory(File spoolDirectory)
40      {
41          this.spoolDirectory = spoolDirectory;
42      }
43  
44      public File createNewFile() throws IOException
45      {
46          File file = File.createTempFile(spoolPrefix, spoolSuffix, spoolDirectory);
47          file.deleteOnExit();
48          return file;
49      }
50  }