Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save edegula/fa3dbabed395695dbdc9aa1823f08fbb to your computer and use it in GitHub Desktop.
Save edegula/fa3dbabed395695dbdc9aa1823f08fbb to your computer and use it in GitHub Desktop.
Converting a JDBC Lookup DataBaseResult object to an XML
public String executeQuery(Container container) throws StreamTransformation {
AbstractTrace trace = container.getTrace();
trace.addInfo("Starting lookup");
String sqlQuery = "SELECT PICKLIST_NUMBER, ITEMORDER, SAP_MATERIAL, DESCRIPTION, UOM, WEIGHT FROM MACRO_INGREDIENTS WHERE PICKLIST_NUMBER = '256' ORDER BY ITEMORDER";
Map inputParam = new HashMap();
inputParam.put(StreamTransformationConstants.MAPPING_TRACE, container.getTrace());
DataBaseResult resultSet = JDBCLookupAPI.execute(
sqlQuery,
"SYSTEM_D", // Service
"JDBC_Receiver_QueryLookup", // Channel
inputParam
);
StringWriter writer = new StringWriter();
try {
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
// root elements
Document doc = docBuilder.newDocument();
Element rootElement = doc.createElement("ResultSet");
doc.appendChild(rootElement);
for (Iterator rows1 = resultSet.getRows(); rows1.hasNext();) // Iterating over the number of DB Rows
{
Map rowMap = (Map) rows1.next();
// add Record node
Element record = doc.createElement("Record");
rootElement.appendChild(record);
trace.addInfo("----------- ROW -------------");
// looping over keys
for (Object name : rowMap.keySet().toArray())
{
String value = rowMap.get(name.toString()).toString();
trace.addInfo("Key = " + name + ", Value = " + value);
// add Record sub-nodes representing the columns of one result/record
Element element = doc.createElement(name.toString());
element.appendChild(doc.createTextNode(value));
record.appendChild(element);
}
}
TransformerFactory transformerFactory = TransformerFactory.newInstance();
javax.xml.transform.Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
transformer.transform(source, new StreamResult(writer));
trace.addInfo(writer.getBuffer().toString());
} catch (ParserConfigurationException pce) {
pce.printStackTrace();
} catch (TransformerException tfe) {
tfe.printStackTrace();
}
return writer.getBuffer().toString();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment