camel-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From acosent...@apache.org
Subject [1/2] camel git commit: Added camel-flatpack docs to gitbook
Date Fri, 25 Mar 2016 09:25:22 GMT
Repository: camel
Updated Branches:
  refs/heads/master f929278b0 -> ac7662e53


Added camel-flatpack docs to gitbook


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/7f6bd60a
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/7f6bd60a
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/7f6bd60a

Branch: refs/heads/master
Commit: 7f6bd60ab7eb657038461f4daac393e0348d0437
Parents: f929278
Author: Andrea Cosentino <ancosen@gmail.com>
Authored: Fri Mar 25 10:20:44 2016 +0100
Committer: Andrea Cosentino <ancosen@gmail.com>
Committed: Fri Mar 25 10:20:44 2016 +0100

----------------------------------------------------------------------
 .../camel-flatpack/src/main/docs/flatpack.adoc  | 298 +++++++++++++++++++
 docs/user-manual/en/SUMMARY.md                  |   1 +
 2 files changed, 299 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/7f6bd60a/components/camel-flatpack/src/main/docs/flatpack.adoc
----------------------------------------------------------------------
diff --git a/components/camel-flatpack/src/main/docs/flatpack.adoc b/components/camel-flatpack/src/main/docs/flatpack.adoc
new file mode 100644
index 0000000..cd25aa7
--- /dev/null
+++ b/components/camel-flatpack/src/main/docs/flatpack.adoc
@@ -0,0 +1,298 @@
+[[Flatpack-FlatpackComponent]]
+Flatpack Component
+~~~~~~~~~~~~~~~~~~
+
+The Flatpack component supports fixed width and delimited file parsing
+via the http://flatpack.sourceforge.net[FlatPack library]. +
+ *Notice:* This component only supports consuming from flatpack files to
+Object model. You can not (yet) write from Object model to flatpack
+format.
+
+Maven users will need to add the following dependency to their `pom.xml`
+for this component:
+
+[source,xml]
+------------------------------------------------------------
+<dependency>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>camel-flatpack</artifactId>
+    <version>x.x.x</version>
+    <!-- use the same version as your Camel core version -->
+</dependency>
+------------------------------------------------------------
+
+[[Flatpack-URIformat]]
+URI format
+^^^^^^^^^^
+
+[source,java]
+---------------------------------------------------------
+flatpack:[delim|fixed]:flatPackConfig.pzmap.xml[?options]
+---------------------------------------------------------
+
+Or for a delimited file handler with no configuration file just use
+
+[source,java]
+---------------------------
+flatpack:someName[?options]
+---------------------------
+
+You can append query options to the URI in the following format,
+`?option=value&option=value&...`
+
+[[Flatpack-URIOptions]]
+URI Options
+^^^^^^^^^^^
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Name |Default Value |Description
+
+|`delimiter` |`,` |The default character delimiter for delimited files.
+
+|`textQualifier` |`"` |The text qualifier for delimited files.
+
+|`ignoreFirstRecord` |`true` |Whether the first line is ignored for delimited files (for
the column
+headers).
+
+|`splitRows` |`true` |The component can either process each row one by one or the entire
+content at once.
+
+|`allowShortLines` |`false` |*Camel 2.9.7 and 2.10.5 onwards:* Allows for lines to be shorter
than
+expected and ignores the extra characters.
+
+|`ignoreExtraColumns` |`false` |*Camel 2.9.7 and 2.10.5 onwards:* Allows for lines to be
longer than
+expected and ignores the extra characters.
+|=======================================================================
+
+[[Flatpack-Examples]]
+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.
+
+[[Flatpack-MessageHeaders]]
+Message Headers
+^^^^^^^^^^^^^^^
+
+Camel will store the following headers on the IN message:
+
+[width="100%",cols="50%,50%",options="header",]
+|=======================================================================
+|Header |Description
+
+|`camelFlatpackCounter` |The current row index. For `splitRows=false` the counter is the
total
+number of rows.
+|=======================================================================
+
+[[Flatpack-MessageBody]]
+Message Body
+^^^^^^^^^^^^
+
+The component delivers the data in the IN message as a
+`org.apache.camel.component.flatpack.DataSetList` object that has
+converters for `java.util.Map` or `java.util.List`. +
+ Usually you want the `Map` if you process one row at a time
+(`splitRows=true`). Use `List` for the entire content
+(`splitRows=false`), where each element in the list is a `Map`. +
+ Each `Map` contains the key for the column name and its corresponding
+value.
+
+For example to get the firstname from the sample below:
+
+[source,java]
+------------------------------------------------
+  Map row = exchange.getIn().getBody(Map.class);
+  String firstName = row.get("FIRSTNAME");
+------------------------------------------------
+
+However, you can also always get it as a `List` (even for
+`splitRows=true`). The same example:
+
+[source,java]
+---------------------------------------------------
+  List data = exchange.getIn().getBody(List.class);
+  Map row = (Map)data.get(0);
+  String firstName = row.get("FIRSTNAME");
+---------------------------------------------------
+
+[[Flatpack-HeaderandTrailerrecords]]
+Header and Trailer records
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The header and trailer notions in Flatpack are supported. However, you
+*must* use fixed record IDs:
+
+* `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.
+
+[source,xml]
+---------------------------------------------------------------------------
+    <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>
+---------------------------------------------------------------------------
+
+[[Flatpack-Usingtheendpoint]]
+Using the endpoint
+^^^^^^^^^^^^^^^^^^
+
+A common use case is sending a file to this endpoint for further
+processing in a separate route. For example:
+
+[source,xml]
+-----------------------------------------------------------------------
+  <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 link:bean-integration.html[Bean Integration]
+
+[[Flatpack-FlatpackDataFormat]]
+Flatpack DataFormat
+~~~~~~~~~~~~~~~~~~~
+
+The link:flatpack.html[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>>` to `OutputStream` (can be
+converted to `String`)
+* unmarshal = from `java.io.InputStream` (such as a `File` or `String`)
+to a `java.util.List` as an
+`org.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
+link:splitter.html[Splitter].
+
+*Notice:* The Flatpack library does currently not support header and
+trailers for the marshal operation.
+
+[[Flatpack-Options]]
+Options
+^^^^^^^
+
+The data format has the following options:
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Option |Default |Description
+
+|`definition` |`null` |The flatpack pzmap configuration file. Can be omitted in simpler
+situations, but its preferred to use the pzmap.
+
+|`fixed` |`false` |Delimited or fixed.
+
+|`ignoreFirstRecord` |`true` |Whether the first line is ignored for delimited files (for
the column
+headers).
+
+|`textQualifier` |`"` |If the text is qualified with a char such as `"`.
+
+|`delimiter` |`,` |The delimiter char (could be `;` `,` or similar)
+
+|`parserFactory` |`null` |Uses the default Flatpack parser factory.
+
+|`allowShortLines` |`false` |*Camel 2.9.7 and 2.10.5 onwards*: Allows for lines to be shorter
than
+expected and ignores the extra characters.
+
+|`ignoreExtraColumns` |`false` |*Camel 2.9.7 and 2.10.5 onwards*: Allows for lines to be
longer than
+expected and ignores the extra characters.
+|=======================================================================
+
+[[Flatpack-Usage]]
+Usage
+^^^^^
+
+To use the data format, simply instantiate an instance and invoke the
+marshal or unmarshal operation in the route builder:
+
+[source,java]
+---------------------------------------------------------------------------
+  FlatpackDataFormat fp = new FlatpackDataFormat();
+  fp.setDefinition(new ClassPathResource("INVENTORY-Delimited.pzmap.xml"));
+  ...
+  from("file:order/in").unmarshal(df).to("seda:queue:neworder");
+---------------------------------------------------------------------------
+
+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 queue.
+
+[source,java]
+-----------------------------------------------------------------------------------
+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 convert the result as a `String` object and store it
+on a JMS queue.
+
+[[Flatpack-Dependencies]]
+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
+link:download.html[the download page for the latest versions]).
+
+[source,java]
+-----------------------------------------
+<dependency>
+  <groupId>org.apache.camel</groupId>
+  <artifactId>camel-flatpack</artifactId>
+  <version>x.x.x</version>
+</dependency>
+-----------------------------------------
+
+[[Flatpack-SeeAlso]]
+See Also
+^^^^^^^^
+
+* link:configuring-camel.html[Configuring Camel]
+* link:component.html[Component]
+* link:endpoint.html[Endpoint]
+* link:getting-started.html[Getting Started]
+

http://git-wip-us.apache.org/repos/asf/camel/blob/7f6bd60a/docs/user-manual/en/SUMMARY.md
----------------------------------------------------------------------
diff --git a/docs/user-manual/en/SUMMARY.md b/docs/user-manual/en/SUMMARY.md
index 0e254b5..1e94f8e 100644
--- a/docs/user-manual/en/SUMMARY.md
+++ b/docs/user-manual/en/SUMMARY.md
@@ -128,6 +128,7 @@
     * [Eventadmin](eventadmin.adoc)
     * [Exec](exec.adoc)
     * [Facebook](facebook.adoc)
+    * [Flatpack](flatpack.adoc)
     * [Ironmq](ironmq.adoc)
     * [JMS](jms.adoc)
     * [JMX](jmx.adoc)


Mime
View raw message