/*
* © Copyright IBM Corp. 2013
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
* implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
package com.ibm.sbt.services.client.base.transformers;
import java.io.InputStream;
import java.util.Map;
import org.apache.commons.io.IOUtils;
/**
* AbstractBaseTransformer provides helper methods for reading and updating template files
* <p>
* @author Manish Kataria
*/
public abstract class AbstractBaseTransformer {
public abstract String transform(Map<String,Object> fieldmap) throws TransformerException;
protected String getTemplateContent(String templatepath) throws TransformerException{
try {
InputStream fisTargetFile = AbstractBaseTransformer.class.getResourceAsStream(templatepath);
String targetFileStr = IOUtils.toString(fisTargetFile);
return targetFileStr;
} catch (Exception e) {
throw new TransformerException(e);
}
}
protected String getXMLRep(InputStream templatefile, String placeholder, String value) throws TransformerException{
try {
String targetFileStr = IOUtils.toString(templatefile);
return getXMLRep(targetFileStr,placeholder,value);
} catch (Exception e) {
throw new TransformerException(e);
}
}
protected String getXMLRep(String xml, String placeholder, String value){
placeholder = "${"+placeholder+"}";
xml = xml.replace(placeholder, value);
return xml;
}
protected String removeExtraPlaceholders(String xmlbody){
while(xmlbody.contains("${")){
int startIndex = xmlbody.indexOf("${");
int endIndex = xmlbody.indexOf("}", startIndex);
String tempStart = xmlbody.substring(0,startIndex);
String tempEnd = xmlbody.substring(endIndex+1,xmlbody.length());
xmlbody = tempStart+tempEnd;
}
return xmlbody;
}
protected InputStream getStream(String templatepath){
InputStream fisTargetFile = AbstractBaseTransformer.class.getResourceAsStream(templatepath);
return fisTargetFile;
}
}