B2B Data Exchange
- B2B Data Exchange 10.5.4
- All Products
package com.example; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.ArrayList; import java.util.List; import com.linoma.commons.StringUtilities; import com.linoma.dpa.ExecutionException; import com.linoma.dpa.Message; import com.linoma.ga.projects.CustomTask; import com.linoma.ga.projects.TaskContainer; import com.linoma.dpa.ValidationException; public class CopyTask extends CustomTask { private static final String TAG_NAME = "example:copy"; private static final String ATTR_SOURCE_FILE = "sourceFile"; private static final String ATTR_DESTINATION_DIRECTORY = "destinationDirectory"; private String sourceFileAttribute = null; private String destinationDirectoryAttribute = null; private File sourceFile = null; private File destinationDirectory = null; public CopyTask(TaskContainer parent) { super(parent); label = TAG_NAME; } @Override public String getTagName() { return TAG_NAME; } @Override public String getDisplayString() { return label; } @Override public String getVersion() { return "1.0"; } @Override public String getVendor() { return "Example, Inc."; } public String getSourceFileAttribute() { return sourceFileAttribute; } public void setSourceFileAttribute(String sourceFileAttribute) { this.sourceFileAttribute = sourceFileAttribute; } public String getDestinationDirectoryAttribute() { return destinationDirectoryAttribute; } public void setDestinationDirectoryAttribute( String destinationDirectoryAttribute) { this.destinationDirectoryAttribute = destinationDirectoryAttribute; } @Override public void validateAttributes() throws ValidationException { // A list to hold any validation errors List<Message> errors = new ArrayList<Message>(); // Call the validateAttributes of the super class try { super.validateAttributes(); } catch (ValidationException exp) { // If the attributes on the super class fail to validate, add the // errors to the list. errors.addAll(exp.getMessages()); } // Perform our task-specific validation. if (StringUtilities.isEmpty(sourceFileAttribute)) { errors.add(new Message("Source File is required")); } if (StringUtilities.isEmpty(destinationDirectoryAttribute)) { errors.add(new Message("Destination Directory is required")); } if (!errors.isEmpty()) { throw new ValidationException(errors); } } @Override public void validate() throws ValidationException { // Simply call the validateAttributes to validate all the attributes. validateAttributes(); } public void execute() throws ExecutionException { internalValidate(); try { copy(); } catch (IOException exp) { throw new ExecutionException(exp.getMessage(), exp); } } private void internalValidate() throws ExecutionException { String temp = project.expandVariables(sourceFileAttribute); if (StringUtilities.isEmpty(temp)) { throw new ExecutionException("Source File is required"); } sourceFile = new File(temp); temp = project.expandVariables(destinationDirectoryAttribute); if (StringUtilities.isEmpty(temp)) { throw new ExecutionException("Destination Directory is required"); } destinationDirectory = new File(temp); } private long copy() throws IOException { InputStream in = null; OutputStream out = null; try { final int bufferSize = 4096; in = new BufferedInputStream(new FileInputStream(sourceFile), bufferSize); out = new BufferedOutputStream(new FileOutputStream(new File( destinationDirectory, sourceFile.getName())), bufferSize); byte[] buffer = new byte[bufferSize]; int bytesRead = 0; long bytesCopied = 0L; while ((bytesRead = in.read(buffer)) != -1) { out.write(buffer, 0, bytesRead); bytesCopied += bytesRead; } return bytesCopied; } finally { if (in != null) { try { in.close(); } catch (IOException exp) { exp.printStackTrace(); } } if (out != null) { try { out.close(); } catch (IOException exp) { exp.printStackTrace(); } } } } }