...
The Flatpack component ships with the Flatpack data format that can be used to format between fixed width or delimited text messages to a List
of rows as Map
.
- marshal = from
List<Map<String, Object>>
toOutputStream
(can be converted toString
) - unmarshal = from
java.io.InputStream
(such as aFile
...
- or
String
) to a
...
-
java.util.List
as anorg.apache.camel.component.flatpack.DataSetList
...
- instance.
The result of the operation will contain all the data. If you need to process each row one by one you can split the exchange, using
...
Notice: The Flatpack library does currently not support header and trailers for the marshal operation.
Options
The DataFormat data format has the following options:
Option | Default | Description |
---|---|---|
| | The flatpack pzmap configuration file. Can be omitted in simpler situations, but its preferred to use the pzmap. |
| | Delimited or fixed. |
| | Whether the first line is ignored for delimited files (for the column headers). |
| | if If the text is qualified with a char such as |
| | the The delimiter char (could be |
| | Uses the default Flatpack parser factory. |
| | Camel 2.9.7 and 2.10.5 onwards: Allows for lines to be shorter than expected and ignores the extra characters. |
| | Camel 2.9.7 and 2.10.5 onwards: Allows for lines to be longer than expected and ignores the extra characters. |
Usage
To use the data format, simply instantiate an instance and invoke the marhsal marshal or unmarshl unmarshal operation in the route builder:
...
The sample above will read files from the order/in
folder and unmarshal the input using the Flatpack configuration file INVENTORY-Delimited.pzmap.xml
that configures the structure of the files. The result is a DataSetList
object we store on the seda SEDA queue.
Code Block | ||||
---|---|---|---|---|
| ||||
FlatpackDataFormat df = new FlatpackDataFormat(); df.setDefinition(new ClassPathResource("PEOPLE-FixedLength.pzmap.xml")); df.setFixed(true); df.setIgnoreFirstRecord(false); from("seda:people").marshal(df).convertBodyTo(String.class).to("jms:queue:people"); |
In the code above we marshal the data from a Object representation as a List
of rows as Maps
. The rows as Map
contains the column name as the key, and the the corresponding value. This structure can be created in Java code from e.g. a processor. We marshal the data according to the Flatpack format and converts convert the result as a String
object and store it on a jms queue.JMS queue.
Dependencies
To use Flatpack in your camel routes you need to add the a dependency on camel-flatpack which implements this data format.
If you use maven you could just add the following to your pom.xml, substituting the version number for the latest & greatest release (see the download page for the latest versions).
Code Block |
---|
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-flatpack</artifactId>
<version>x.x.x</version>
</dependency>
|