Flatpack Component
The Flatpack component supports fixed width and delimited file parsing via the FlatPack library.
URI format
flatpack:[delim|fixed]:flatPackConfig.pzmap.xml
or for a delimited file handler with no configuration file just use
flatpack:someName
Examples
- flatpack:fixed:foo.pzmap.xml creates a fixed width endpoint using the foo.pzmap.xml file configuration
- flatpack:delim:bar.pzmap.xml creates a delimited endpoint using the bar.pzmap.xml file configuration
- flatpack:foo creates a delimited endpoint called foo with no file configuration
URI Options
Name |
Default Value |
Description |
---|---|---|
delimiter |
',' |
the default character delimiter for delimited files |
textQualifier |
'"' |
the text qualifier delimited files |
ignoreFirstRecord |
true |
whether the first line is ignored for delimited files (for the column headers) |
Header and Trailer records
In Camel 1.5 onwards the header and trailer notions in Flatpack is supported. However it is required that you must use a fixed record id names
header
for the header record (must be lowercase)trailer
for the trailer record (must be lowercase)
The example below illustrates this fact that we have a header and a trailer. You can omit one or both of them if not needed.
<RECORD id="header" startPosition="1" endPosition="3" indicator="HBT"> <COLUMN name="INDICATOR" length="3"/> <COLUMN name="DATE" length="8"/> </RECORD> <COLUMN name="FIRSTNAME" length="35" /> <COLUMN name="LASTNAME" length="35" /> <COLUMN name="ADDRESS" length="100" /> <COLUMN name="CITY" length="100" /> <COLUMN name="STATE" length="2" /> <COLUMN name="ZIP" length="5" /> <RECORD id="trailer" startPosition="1" endPosition="3" indicator="FBT"> <COLUMN name="INDICATOR" length="3"/> <COLUMN name="STATUS" length="7"/> </RECORD>
Using the endpoint
A common use case is sending a file to this endpoint for further processing in a separate route. For example...
<camelContext xmlns="http://activemq.apache.org/camel/schema/spring"> <route> <from uri="file://someDirectory"/> <to uri="flatpack:foo"/> </route> <route> <from uri="flatpack:foo"/> ... </route> </camelContext>
You can also convert the payload of each message created to a Map for easy Bean Integration