Hi All,
I have a requirement where I need to pick files from multiple source directories and place it to on target file server using one file channel. The interface was passthrough interface so I created dummy structures as I would be needing service interfaces and operation mapping to call JAVA mapping.
To achieve this I prefer to write Adapter Module but sometimes due to BASIS dependency, we have to go for JAVA mapping. Here I am putting up my JAVA code but ADAPTER MODULE code will be shared soon.
Source directories were like
/a/b/c/X
/a/b/c/Y
/a/b/c/Z
and target directories were /X, /Y, /Z
PFB the code:
/*
* Created on May 26, 2015
*
* To change the template for this generated file go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
package global;
/**
* @author ashutosh.a.upadhyay
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Map;
import com.sap.aii.mapping.api.AbstractTransformation;
import com.sap.aii.mapping.api.DynamicConfiguration;
import com.sap.aii.mapping.api.DynamicConfigurationKey;
import com.sap.aii.mapping.api.StreamTransformationConstants;
import com.sap.aii.mapping.api.StreamTransformationException;
import com.sap.aii.mapping.api.TransformationInput;
import com.sap.aii.mapping.api.TransformationOutput;
public class DynamicDirectory extends AbstractTransformation {
public void transform(TransformationInput transformationInput, TransformationOutput transformationOutput)throws StreamTransformationException{
try {
InputStream inputstream = transformationInput.getInputPayload().getInputStream();
OutputStream outputstream = transformationOutput.getOutputPayload().getOutputStream();
Map mapParameters = (Map) transformationInput.getInputHeader().getAll();
// Dynamic Confguration
mapParameters.put(DynamicConfigurationKey.create("
http://sap.com/xi/XI/Dynamic", StreamTransformationConstants.DYNAMIC_CONFIGURATION), "");
DynamicConfiguration conf = (DynamicConfiguration) mapParameters.get(StreamTransformationConstants.DYNAMIC_CONFIGURATION);
DynamicConfigurationKey key = DynamicConfigurationKey.create("
http://sap.com/xi/XI/System/File", "Directory");
//Check the input directory and set the output directory
String inputDir = "";
String outputDir = "";
inputDir = conf.get(key);
if(inputDir.endsWith("X")){
outputDir = "/X/";
}
else if (inputDir.endsWith("Y")){
outputDir = "/Y/";
}
else if(inputDir.endsWith("Z")){
outputDir = "/Z/";
}
//Set the directory parameter
conf.put(key,outputDir);
//copy Input file content to Output file content
byte[] b = new byte[inputstream.available()];
inputstream.read(b);
outputstream.write(b);
}
catch (Exception exception){
getTrace().addDebugMessage(exception.getMessage());
throw new StreamTransformationException(exception.toString());
}
}
}