+++ /dev/null
-package org.argeo.slc.core.process;\r
-\r
-import java.io.File;\r
-import java.io.FileWriter;\r
-import java.text.SimpleDateFormat;\r
-import java.util.Date;\r
-import java.util.HashMap;\r
-import java.util.List;\r
-import java.util.Map;\r
-\r
-import javax.xml.transform.stream.StreamResult;\r
-\r
-import org.apache.commons.io.IOUtils;\r
-import org.argeo.slc.core.SlcException;\r
-import org.springframework.oxm.Marshaller;\r
-\r
-public class FileSlcExecutionNotifier implements SlcExecutionNotifier {\r
- private final static SimpleDateFormat sdf = new SimpleDateFormat(\r
- "yyyyMMdd-HHmmss");\r
-\r
- private String basePath;\r
- private Marshaller marshaller;\r
-\r
- private Map<String, String> uuidToDir = new HashMap<String, String>();\r
-\r
- public void addSteps(SlcExecution slcExecution,\r
- List<SlcExecutionStep> additionalSteps) {\r
- writeSlcExecution(slcExecution);\r
- }\r
-\r
- public void newExecution(SlcExecution slcExecution) {\r
- String dirPath = basePath + File.separator + sdf.format(new Date())\r
- + '-' + slcExecution.getUuid();\r
- File dir = new File(dirPath);\r
- dir.mkdirs();\r
-\r
- uuidToDir.put(slcExecution.getUuid(), dirPath);\r
-\r
- writeSlcExecution(slcExecution);\r
- }\r
-\r
- public void updateExecution(SlcExecution slcExecution) {\r
- writeSlcExecution(slcExecution);\r
- }\r
-\r
- public void updateStatus(SlcExecution slcExecution, String oldStatus,\r
- String newStatus) {\r
- writeSlcExecution(slcExecution);\r
- }\r
-\r
- protected void writeSlcExecution(SlcExecution slcExecution) {\r
- FileWriter out = null;\r
- try {\r
- out = new FileWriter(getFilePath(slcExecution));\r
- marshaller.marshal(slcExecution, new StreamResult(out));\r
- } catch (Exception e) {\r
- throw new SlcException("Cannot marshall SlcExecution to "\r
- + getFilePath(slcExecution), e);\r
- } finally {\r
- IOUtils.closeQuietly(out);\r
- }\r
- }\r
-\r
- protected String getFileName(SlcExecution slcExecution) {\r
- return "SlcExecution-" + slcExecution.getUuid() + ".xml";\r
- }\r
-\r
- protected String getFilePath(SlcExecution slcExecution) {\r
- String dirPath = uuidToDir.get(slcExecution.getUuid());\r
- return dirPath + File.separator + "SlcExecution-"\r
- + slcExecution.getUuid() + ".xml";\r
- }\r
-\r
- public void setBasePath(String basePath) {\r
- this.basePath = basePath;\r
- }\r
-\r
- public void setMarshaller(Marshaller marshaller) {\r
- this.marshaller = marshaller;\r
- }\r
-\r
-}\r