You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2012/11/26 11:10:43 UTC
svn commit: r1413540 - in /camel/branches/camel-2.10.x: ./
components/camel-flatpack/src/main/java/org/apache/camel/component/flatpack/
components/camel-flatpack/src/test/java/org/apache/camel/component/flatpack/
components/camel-flatpack/src/test/reso...
Author: davsclaus
Date: Mon Nov 26 10:10:42 2012
New Revision: 1413540
URL: http://svn.apache.org/viewvc?rev=1413540&view=rev
Log:
CAMEL-5813 Added support to convert from a Flatpack Dataset to an XML Document with thanks to Chris
Added:
camel/branches/camel-2.10.x/components/camel-flatpack/src/test/java/org/apache/camel/component/flatpack/XMLNoSplitRowsTest.java
- copied unchanged from r1412434, camel/trunk/components/camel-flatpack/src/test/java/org/apache/camel/component/flatpack/XMLNoSplitRowsTest.java
camel/branches/camel-2.10.x/components/camel-flatpack/src/test/java/org/apache/camel/component/flatpack/XMLSplitRowsTest.java
- copied unchanged from r1412434, camel/trunk/components/camel-flatpack/src/test/java/org/apache/camel/component/flatpack/XMLSplitRowsTest.java
camel/branches/camel-2.10.x/components/camel-flatpack/src/test/resources/org/apache/camel/component/flatpack/XMLNoSplitRowsTest-context.xml
- copied unchanged from r1412434, camel/trunk/components/camel-flatpack/src/test/resources/org/apache/camel/component/flatpack/XMLNoSplitRowsTest-context.xml
camel/branches/camel-2.10.x/components/camel-flatpack/src/test/resources/org/apache/camel/component/flatpack/XMLSplitRowsTest-context.xml
- copied unchanged from r1412434, camel/trunk/components/camel-flatpack/src/test/resources/org/apache/camel/component/flatpack/XMLSplitRowsTest-context.xml
Modified:
camel/branches/camel-2.10.x/ (props changed)
camel/branches/camel-2.10.x/components/camel-flatpack/src/main/java/org/apache/camel/component/flatpack/FlatpackConverter.java
Propchange: camel/branches/camel-2.10.x/
------------------------------------------------------------------------------
Merged /camel/trunk:r1412434
Propchange: camel/branches/camel-2.10.x/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: camel/branches/camel-2.10.x/components/camel-flatpack/src/main/java/org/apache/camel/component/flatpack/FlatpackConverter.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/components/camel-flatpack/src/main/java/org/apache/camel/component/flatpack/FlatpackConverter.java?rev=1413540&r1=1413539&r2=1413540&view=diff
==============================================================================
--- camel/branches/camel-2.10.x/components/camel-flatpack/src/main/java/org/apache/camel/component/flatpack/FlatpackConverter.java (original)
+++ camel/branches/camel-2.10.x/components/camel-flatpack/src/main/java/org/apache/camel/component/flatpack/FlatpackConverter.java Mon Nov 26 10:10:42 2012
@@ -21,6 +21,12 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
import net.sf.flatpack.DataSet;
import org.apache.camel.Converter;
@@ -55,26 +61,71 @@ public final class FlatpackConverter {
return answer;
}
+ @Converter
+ public static Document toDocument(DataSet dataSet) throws ParserConfigurationException {
+ Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
+
+ if (dataSet.getIndex() == -1) {
+ Element list = doc.createElement("Dataset");
+
+ dataSet.goTop();
+ while (dataSet.next()) {
+ list.appendChild(createDatasetRecord(dataSet, doc));
+ }
+
+ doc.appendChild(list);
+ } else {
+ doc.appendChild(createDatasetRecord(dataSet, doc));
+ }
+
+ return doc;
+ }
+
/**
* Puts the values of the dataset into the map
*/
private static void putValues(Map<String, Object> map, DataSet dataSet) {
- boolean header = dataSet.isRecordID(FlatpackComponent.HEADER_ID);
- boolean trailer = dataSet.isRecordID(FlatpackComponent.TRAILER_ID);
+ String[] columns = getColumns(dataSet);
- // the columns can vary depending on header, body or trailer
- String[] columns;
- if (header) {
- columns = dataSet.getColumns(FlatpackComponent.HEADER_ID);
- } else if (trailer) {
- columns = dataSet.getColumns(FlatpackComponent.TRAILER_ID);
+ for (String column : columns) {
+ String value = dataSet.getString(column);
+ map.put(column, value);
+ }
+ }
+
+ private static Element createDatasetRecord(DataSet dataSet, Document doc) {
+ Element record;
+ if (dataSet.isRecordID(FlatpackComponent.HEADER_ID)) {
+ record = doc.createElement("DatasetHeader");
+ } else if (dataSet.isRecordID(FlatpackComponent.TRAILER_ID)) {
+ record = doc.createElement("DatasetTrailer");
} else {
- columns = dataSet.getColumns();
+ record = doc.createElement("DatasetRecord");
}
+ String[] columns = getColumns(dataSet);
+
for (String column : columns) {
String value = dataSet.getString(column);
- map.put(column, value);
+
+ Element columnElement = doc.createElement("Column");
+ columnElement.setAttribute("name", column);
+ columnElement.setTextContent(value);
+
+ record.appendChild(columnElement);
+ }
+
+ return record;
+ }
+
+ private static String[] getColumns(DataSet dataSet) {
+ // the columns can vary depending on header, body or trailer
+ if (dataSet.isRecordID(FlatpackComponent.HEADER_ID)) {
+ return dataSet.getColumns(FlatpackComponent.HEADER_ID);
+ } else if (dataSet.isRecordID(FlatpackComponent.TRAILER_ID)) {
+ return dataSet.getColumns(FlatpackComponent.TRAILER_ID);
+ } else {
+ return dataSet.getColumns();
}
}
}