]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - org.argeo.slc.spring/src/org/argeo/slc/core/execution/FileExecutionResources.java
Clarify SLC project structure.
[gpl/argeo-slc.git] / org.argeo.slc.spring / src / org / argeo / slc / core / execution / FileExecutionResources.java
diff --git a/org.argeo.slc.spring/src/org/argeo/slc/core/execution/FileExecutionResources.java b/org.argeo.slc.spring/src/org/argeo/slc/core/execution/FileExecutionResources.java
deleted file mode 100644 (file)
index 41fb694..0000000
+++ /dev/null
@@ -1,209 +0,0 @@
-package org.argeo.slc.core.execution;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.argeo.slc.SlcException;
-import org.argeo.slc.execution.ExecutionContext;
-import org.springframework.core.io.FileSystemResource;
-import org.springframework.core.io.Resource;
-import org.springframework.util.Assert;
-
-/** Implements write access to resources based on standard Java {@link File} */
-public class FileExecutionResources implements ExecutionResources {
-       private final static Log log = LogFactory
-                       .getLog(FileExecutionResources.class);
-       protected final static String DEFAULT_EXECUTION_RESOURCES_DIRNAME = "executionResources";
-       public final static String DEFAULT_EXECUTION_RESOURCES_TMP_PATH = System
-                       .getProperty("java.io.tmpdir")
-                       + File.separator
-                       + System.getProperty("user.name")
-                       + File.separator
-                       + "slc"
-                       + File.separator + DEFAULT_EXECUTION_RESOURCES_DIRNAME;
-
-       private File baseDir;
-       private ExecutionContext executionContext;
-       private String prefixDatePattern = "yyMMdd_HHmmss_SSS";
-       private SimpleDateFormat sdf = null;
-
-       private Boolean withExecutionSubdirectory = true;
-
-       public FileExecutionResources() {
-               // Default base directory
-               String osgiInstanceArea = System.getProperty("osgi.instance.area");
-               String osgiInstanceAreaDefault = System
-                               .getProperty("osgi.instance.area.default");
-
-               if (osgiInstanceArea != null) {
-                       // within OSGi with -data specified
-                       osgiInstanceArea = removeFilePrefix(osgiInstanceArea);
-                       baseDir = new File(osgiInstanceArea + File.separator
-                                       + DEFAULT_EXECUTION_RESOURCES_DIRNAME);
-               } else if (osgiInstanceAreaDefault != null) {
-                       // within OSGi without -data specified
-                       osgiInstanceAreaDefault = removeFilePrefix(osgiInstanceAreaDefault);
-                       baseDir = new File(osgiInstanceAreaDefault + File.separator
-                                       + DEFAULT_EXECUTION_RESOURCES_DIRNAME);
-               } else {// outside OSGi
-                       baseDir = new File(DEFAULT_EXECUTION_RESOURCES_TMP_PATH);
-               }
-       }
-
-       protected SimpleDateFormat sdf() {
-               // Lazy init in case prefix has been externally set
-               if (sdf == null)
-                       sdf = new SimpleDateFormat(prefixDatePattern);
-               return sdf;
-       }
-
-       public Resource getWritableResource(String relativePath) {
-               File file = getFile(relativePath);
-               File parentDir = file.getParentFile();
-
-               if (!parentDir.exists()) {
-                       // Creates if necessary
-                       if (log.isTraceEnabled())
-                               log.trace("Creating parent directory " + parentDir);
-                       parentDir.mkdirs();
-               }
-               Resource resource = new FileSystemResource(file);
-
-               if (log.isTraceEnabled())
-                       log.trace("Returns writable resource " + resource);
-               return resource;
-       }
-
-       public String getWritableOsPath(String relativePath) {
-               try {
-                       return getFile(relativePath).getCanonicalPath();
-               } catch (IOException e) {
-                       throw new SlcException("Cannot find canonical path", e);
-               }
-       }
-
-       public File getWritableOsFile(String relativePath) {
-               return getFile(relativePath);
-       }
-
-       public String getAsOsPath(Resource resource, Boolean overwrite) {
-               File file = fileFromResource(resource);
-               if (file != null)
-                       try {
-                               if (log.isTraceEnabled())
-                                       log.debug("Directly interpret " + resource + " as OS file "
-                                                       + file);
-                               return file.getCanonicalPath();
-                       } catch (IOException e1) {
-                               // silent
-                       }
-
-               if (log.isTraceEnabled())
-                       log.trace("Resource " + resource
-                                       + " is not available on the file system. Retrieving it...");
-
-               InputStream in = null;
-               OutputStream out = null;
-               try {
-                       String path = resource.getURL().getPath();
-                       file = getFile(path);
-                       if (file.exists() && !overwrite)
-                               return file.getCanonicalPath();
-
-                       file.getParentFile().mkdirs();
-                       in = resource.getInputStream();
-                       out = new FileOutputStream(file);
-                       IOUtils.copy(in, out);
-                       if (log.isDebugEnabled())
-                               log.debug("Retrieved " + resource + " to OS file " + file);
-                       return file.getCanonicalPath();
-               } catch (IOException e) {
-                       throw new SlcException("Could not make resource " + resource
-                                       + " an OS file.", e);
-               } finally {
-                       IOUtils.closeQuietly(in);
-                       IOUtils.closeQuietly(out);
-               }
-       }
-
-       /**
-        * Extract the underlying file from the resource.
-        * 
-        * @return the file or null if no files support this resource.
-        */
-       protected File fileFromResource(Resource resource) {
-               try {
-                       return resource.getFile();
-               } catch (IOException e) {
-                       return null;
-               }
-
-       }
-
-       protected File getFile(String relativePath) {
-               File writableBaseDir = getWritableBaseDir();
-               return new File(writableBaseDir.getPath() + File.separator
-                               + relativePath.replace('/', File.separatorChar));
-       }
-
-       public File getWritableBaseDir() {
-               if (withExecutionSubdirectory) {
-                       Date executionContextCreationDate = (Date) executionContext
-                                       .getVariable(ExecutionContext.VAR_EXECUTION_CONTEXT_CREATION_DATE);
-                       Assert.notNull(executionContext, "execution context is null");
-                       String path = baseDir.getPath() + File.separator
-                                       + sdf().format(executionContextCreationDate);
-                       // TODO write execution id somewhere? like in a txt file
-                       return new File(path);
-               } else {
-                       return baseDir;
-               }
-       }
-
-       protected String removeFilePrefix(String url) {
-               if (url.startsWith("file:"))
-                       return url.substring("file:".length());
-               else if (url.startsWith("reference:file:"))
-                       return url.substring("reference:file:".length());
-               else
-                       return url;
-       }
-
-       public void setBaseDir(File baseDir) {
-               this.baseDir = baseDir;
-       }
-
-       public void setExecutionContext(ExecutionContext executionContext) {
-               this.executionContext = executionContext;
-       }
-
-       public void setPrefixDatePattern(String prefixDatePattern) {
-               this.prefixDatePattern = prefixDatePattern;
-       }
-
-       public File getBaseDir() {
-               return baseDir;
-       }
-
-       public ExecutionContext getExecutionContext() {
-               return executionContext;
-       }
-
-       public String getPrefixDatePattern() {
-               return prefixDatePattern;
-       }
-
-       /** Default is true. */
-       public void setWithExecutionSubdirectory(Boolean withExecutionSubdirectory) {
-               this.withExecutionSubdirectory = withExecutionSubdirectory;
-       }
-
-}