View Javadoc

1   package uk.ac.cam.spectra.spectrasub;
2   
3   import java.io.File;
4   import java.io.IOException;
5   import java.net.MalformedURLException;
6   
7   import org.apache.commons.io.FileUtils;
8   import org.apache.log4j.Logger;
9   
10  /**
11   * Simple component that allows packages that are Deposited to be placed in a
12   * special folder in the filesystem, rather than sent to a repository. For demo
13   * and get going quick purposes.
14   * 
15   * @author ojd20
16   */
17  public class SimpleFSDepositor implements Depositor {
18  
19      private static final Logger LOG = Logger.getLogger(SimpleFSDepositor.class);
20  
21      private DataPackageDAO dataPackageDAO;
22      
23      private String dir;
24  
25      public DataPackageDAO getDataPackageDAO() {
26          return dataPackageDAO;
27      }
28  
29      public void setDataPackageDAO(DataPackageDAO dataPackageDAO) {
30          this.dataPackageDAO = dataPackageDAO;
31      }
32  
33      public String deposit(String packageId) {
34          File storage = new File(dir);
35          File pkgSubmit = new File(storage, packageId);
36          File pkgDir = dataPackageDAO.getPackagingDirectory(packageId, false);
37  
38          try {
39  
40              if (!pkgSubmit.exists()) {
41                  pkgSubmit.mkdirs();
42              }
43              FileUtils.copyDirectory(pkgDir, pkgSubmit);
44              return pkgSubmit.toURL().toString();
45          } catch (MalformedURLException e) {
46              throw new RuntimeException(
47                      "File object unable to generate good URL!: "
48                              + e.getMessage(), e);
49          } catch (IOException e) {
50              throw new RuntimeException("Copy failed on submission: "
51                      + e.getMessage(), e);
52          }
53      }
54  
55      public String getDir() {
56          return dir;
57      }
58  
59      public void setDir(String dir) {
60          this.dir = dir;
61      }
62  }