camel-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From build...@apache.org
Subject svn commit: r909130 [4/6] - in /websites/production/camel/content: ./ cache/
Date Sun, 18 May 2014 04:19:19 GMT
Modified: websites/production/camel/content/book-dataformat-appendix.html
==============================================================================
--- websites/production/camel/content/book-dataformat-appendix.html (original)
+++ websites/production/camel/content/book-dataformat-appendix.html Sun May 18 04:19:18 2014
@@ -1197,213 +1197,82 @@ from("file://site/inbox").unma
 </dependency>
 ]]></script>
 </div></div>
-<h2 id="BookDataFormatAppendix-Bindy">Bindy</h2>
-
-<p>The goal of this component is to allow the parsing/binding of non-structured data (or to be more precise non-XML data)<br clear="none">
-to/from Java Beans that have binding mappings defined with annotations. Using Bindy, you can bind data from sources such as :</p>
-<ul class="alternate"><li>CSV records,</li><li>Fixed-length records,</li><li>FIX messages,</li><li>or almost any other non-structured data</li></ul>
-
-
-<p>to one or many Plain Old Java Object (POJO). Bindy converts the data according to the type of the java property. POJOs can be linked together with one-to-many relationships available in some cases. Moreover, for data type like Date, Double, Float, Integer, Short, Long and BigDecimal, you can provide the pattern to apply during the formatting of the property.</p>
-
-<p>For the BigDecimal numbers, you can also define the precision and the decimal or grouping separators.</p>
-
-<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> Type </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Format Type </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Pattern example </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Link </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> Date </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> DateFormat </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> "dd-MM-yyyy" </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <a shape="rect" class="external-link" href="http://java.sun.com/j2se/1.5.0/docs/api/java/text/SimpleDateFormat.html" rel="nofollow">http://java.sun.com/j2se/1.5.0/docs/api/java/text/SimpleDateFormat.html</a> </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> Decimal* </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Decimalformat </p>
 </td><td colspan="1" rowspan="1" class="confluenceTd"><p> "##.###.###" </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <a shape="rect" class="external-link" href="http://java.sun.com/j2se/1.5.0/docs/api/java/text/DecimalFormat.html" rel="nofollow">http://java.sun.com/j2se/1.5.0/docs/api/java/text/DecimalFormat.html</a> </p></td></tr></tbody></table></div>
-
-<p>Decimal* = Double, Integer, Float, Short, Long</p>
-    <div class="aui-message warning shadowed information-macro">
+<h2 id="BookDataFormatAppendix-Bindy">Bindy</h2><p>The goal of this component is to allow the parsing/binding of non-structured data (or to be more precise non-XML data)<br clear="none"> to/from Java Beans that have binding mappings defined with annotations. Using Bindy, you can bind data from sources such as :</p><ul class="alternate"><li>CSV records,</li><li>Fixed-length records,</li><li>FIX messages,</li><li>or almost any other non-structured data</li></ul><p>to one or many Plain Old Java Object (POJO). Bindy converts the data according to the type of the java property. POJOs can be linked together with one-to-many relationships available in some cases. Moreover, for data type like Date, Double, Float, Integer, Short, Long and BigDecimal, you can provide the pattern to apply during the formatting of the property.</p><p>For the BigDecimal numbers, you can also define the precision and the decimal or grouping separators.</p><div class="table-wrap"><table class="confluenceTable"><tb
 ody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Type</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Format Type</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Pattern example</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Link</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>Date</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>DateFormat</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>"dd-MM-yyyy"</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" class="external-link" href="http://java.sun.com/j2se/1.5.0/docs/api/java/text/SimpleDateFormat.html" rel="nofollow">http://java.sun.com/j2se/1.5.0/docs/api/java/text/SimpleDateFormat.html</a></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>Decimal*</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Decimalformat</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>"##.###.###"</p></td>
 <td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" class="external-link" href="http://java.sun.com/j2se/1.5.0/docs/api/java/text/DecimalFormat.html" rel="nofollow">http://java.sun.com/j2se/1.5.0/docs/api/java/text/DecimalFormat.html</a></p></td></tr></tbody></table></div><p>Decimal* = Double, Integer, Float, Short, Long</p>    <div class="aui-message warning shadowed information-macro">
                     <p class="title">Format supported</p>
                             <span class="aui-icon icon-warning">Icon</span>
                 <div class="message-content">
                             <p>This first release only support comma separated values fields and key value pair fields (e.g. : FIX messages).</p>
                     </div>
     </div>
-
-<p>To work with camel-bindy, you must first define your model in a package (e.g. com.acme.model) and for each model class (e.g. Order, Client, Instrument, ...) add the required annotations (described hereafter) to the Class or field.</p>
-    <div class="aui-message warning shadowed information-macro">
+<p>To work with camel-bindy, you must first define your model in a package (e.g. com.acme.model) and for each model class (e.g. Order, Client, Instrument, ...) add the required annotations (described hereafter) to the Class or field.</p>    <div class="aui-message warning shadowed information-macro">
                     <p class="title">Multiple models</p>
                             <span class="aui-icon icon-warning">Icon</span>
                 <div class="message-content">
                             <p>If you use multiple models, each model has to be placed in it's own package to prevent unpredictable results.</p>
                     </div>
     </div>
-
-
-<h2 id="BookDataFormatAppendix-Annotations">Annotations</h2>
-
-<p>The annotations created allow to map different concept of your model to the POJO like :</p>
-
-<ul class="alternate"><li>Type of record (csv, key value pair (e.g. FIX message), fixed length ...),</li><li>Link (to link object in another object),</li><li>DataField and their properties (int, type, ...),</li><li>KeyValuePairField (for key = value format like we have in FIX financial messages),</li><li>Section (to identify header, body and footer section),</li><li>OneToMany</li></ul>
-
-
-<p>This section will describe them :</p>
-
-<h3 id="BookDataFormatAppendix-1.CsvRecord">1. CsvRecord</h3>
-
-<p>The CsvRecord annotation is used to identified the root class of the model. It represents a record = a line of a CSV file and can be linked to several children model classes.</p>
-
-<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> Annotation name </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Record type </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Level </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>CsvRecord</strong> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> csv </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Class </p></td></tr></tbody></table></div>
-
-
-<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> Parameter name </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> type </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Info </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> separator </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> string </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> mandatory - can be ',' or ';' or 'anything'. This value is interpreted as a regular expression. If you want to use a sign which has a special meaning in regular expressions, e.g. the '|' sign, than you have to mask it, like ' <br clear="none" class="atl-forced-newline">
-|' </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> skipFirstLine </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> boolean </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> optional - default value = false - allow to skip the first line of the CSV file </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> crlf </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> string </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> optional - possible values = WINDOWS,UNIX,MAC, or custom; default value = WINDOWS - allow to define the carriage return character to use. If you specify a value other than the three listed before, the value you enter (custom) will be used as the CRLF character(s) </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> generateHeaderColumns </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> boolean </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> o
 ptional - default value = false - uses to generate the header columns of the CSV generates </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> autospanLine </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> boolean </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Camel 2.13/2.12.2:</strong> optional - default value = false - if enabled then the last column is auto spanned to end of line, for example if its a comment, etc this allows the line to contain all characters, also the delimiter char. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> isOrdered </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> boolean </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> optional - default value = false - allow to change the order of the fields when CSV is generated </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> quote </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>
  String </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Camel 2.8.3/2.9:</strong> option - allow to specify a quote character of the fields when CSV is generated </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> This annotation is associated to the root class of the model and must be declared one time. </p></td></tr></tbody></table></div>
-
-
-<p><strong>case 1 : separator = ','</strong></p>
-
-<p>The separator used to segregate the fields in the CSV record is ',' :</p>
-
-<p>10, J, Pauline, M, XD12345678, Fortis Dynamic 15/15, 2500, USD,08-01-2009</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
-@CsvRecord( separator = &quot;,&quot; )
+<h2 id="BookDataFormatAppendix-Annotations">Annotations</h2><p>The annotations created allow to map different concept of your model to the POJO like :</p><ul class="alternate"><li>Type of record (csv, key value pair (e.g. FIX message), fixed length ...),</li><li>Link (to link object in another object),</li><li>DataField and their properties (int, type, ...),</li><li>KeyValuePairField (for key = value format like we have in FIX financial messages),</li><li>Section (to identify header, body and footer section),</li><li>OneToMany</li></ul><p>This section will describe them :</p><h3 id="BookDataFormatAppendix-1.CsvRecord">1. CsvRecord</h3><p>The CsvRecord annotation is used to identified the root class of the model. It represents a record = a line of a CSV file and can be linked to several children model classes.</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Annotation name</p></th><th colspan="1" rowspan="1" cla
 ss="confluenceTh"><p>Record type</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Level</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>CsvRecord</strong></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>csv</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Class</p></td></tr></tbody></table></div><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Parameter name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>type</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Info</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>separator</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>string</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>mandatory - can be ',' or ';' or 'anything'. This value is interpreted as a regular expression. If you want to use a sign which has a special meaning in regular express
 ions, e.g. the '|' sign, than you have to mask it, like ' <br clear="none" class="atl-forced-newline"> |'</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>skipFirstLine</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>boolean</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>optional - default value = false - allow to skip the first line of the CSV file</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>crlf</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>string</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>optional - possible values = WINDOWS,UNIX,MAC, or custom; default value = WINDOWS - allow to define the carriage return character to use. If you specify a value other than the three listed before, the value you enter (custom) will be used as the CRLF character(s)</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>generateHeaderColumns</p></td><td colspan="1" rowspan="1" class="c
 onfluenceTd"><p>boolean</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>optional - default value = false - uses to generate the header columns of the CSV generates</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>autospanLine</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>boolean</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.13/2.12.2:</strong> optional - default value = false - if enabled then the last column is auto spanned to end of line, for example if its a comment, etc this allows the line to contain all characters, also the delimiter char.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>isOrdered</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>boolean</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>optional - default value = false - allow to change the order of the fields when CSV is generated</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"
 ><p>quote</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>String</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.8.3/2.9:</strong> option - allow to specify a quote character of the fields when CSV is generated</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>This annotation is associated to the root class of the model and must be declared one time.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">quoting</td><td colspan="1" rowspan="1" class="confluenceTd">boolean</td><td colspan="1" rowspan="1" class="confluenceTd"><strong>Camel 2.11:</strong>optional - default value = false -&#160;Indicate if the values must be quoted when marshaling when CSV is generated.</td></tr></tbody></table></div><p><strong>case 1 : separator = ','</strong></p><p>The separator used to segregate the 
 fields in the CSV record is ',' :</p><p>10, J, Pauline, M, XD12345678, Fortis Dynamic 15/15, 2500, USD,08-01-2009</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[@CsvRecord( separator = &quot;,&quot; )
 public Class Order {
 ...
 }
 ]]></script>
-</div></div>
-
-<p><strong>case 2 : separator = ';'</strong></p>
-
-<p>Compare to the previous case, the separator here is ';' instead of ',' :</p>
-
-<p>10; J; Pauline; M; XD12345678; Fortis Dynamic 15/15; 2500; USD; 08-01-2009</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
-@CsvRecord( separator = &quot;;&quot; )
+</div></div><p><strong>case 2 : separator = ';'</strong></p><p>Compare to the previous case, the separator here is ';' instead of ',' :</p><p>10; J; Pauline; M; XD12345678; Fortis Dynamic 15/15; 2500; USD; 08-01-2009</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[@CsvRecord( separator = &quot;;&quot; )
 public Class Order {
 ...
 }
 ]]></script>
-</div></div>
-
-<p><strong>case 3 : separator = '|'</strong></p>
-
-<p>Compare to the previous case, the separator here is '|' instead of ';' :</p>
-
-<p>10| J| Pauline| M| XD12345678| Fortis Dynamic 15/15| 2500| USD| 08-01-2009</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
-@CsvRecord( separator = &quot;\\|&quot; )
+</div></div><p><strong>case 3 : separator = '|'</strong></p><p>Compare to the previous case, the separator here is '|' instead of ';' :</p><p>10| J| Pauline| M| XD12345678| Fortis Dynamic 15/15| 2500| USD| 08-01-2009</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[@CsvRecord( separator = &quot;\\|&quot; )
 public Class Order {
 ...
 }
 ]]></script>
-</div></div>
-
-<p><strong>case 4 : separator = '\",\"'</strong><br clear="none">
-<strong>Applies for Camel 2.8.2 or older</strong></p>
-
-<p>When the field to be parsed of the CSV record contains ',' or ';' which is also used as separator, we whould find another strategy<br clear="none">
-to tell camel bindy how to handle this case. To define the field containing the data with a comma, you will use simple or double quotes<br clear="none">
-as delimiter (e.g : '10', 'Street 10, NY', 'USA' or "10", "Street 10, NY", "USA").<br clear="none">
-Remark : In this case, the first and last character of the line which are a simple or double quotes will removed by bindy</p>
-
-<p>"10","J","Pauline"," M","XD12345678","Fortis Dynamic 15,15" 2500","USD","08-01-2009"</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
-@CsvRecord( separator = &quot;\&quot;,\&quot;&quot; )
+</div></div><p><strong>case 4 : separator = '\",\"'</strong><br clear="none"> <strong>Applies for Camel 2.8.2 or older</strong></p><p>When the field to be parsed of the CSV record contains ',' or ';' which is also used as separator, we whould find another strategy<br clear="none"> to tell camel bindy how to handle this case. To define the field containing the data with a comma, you will use simple or double quotes<br clear="none"> as delimiter (e.g : '10', 'Street 10, NY', 'USA' or "10", "Street 10, NY", "USA").<br clear="none"> Remark : In this case, the first and last character of the line which are a simple or double quotes will removed by bindy</p><p>"10","J","Pauline"," M","XD12345678","Fortis Dynamic 15,15" 2500","USD","08-01-2009"</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[@CsvRecord( separator = &quot;\&quot;,\&quot;&quot; )
 public Class Order {
 ...
 }
 ]]></script>
-</div></div>
-
-<p>From <strong>Camel 2.8.3/2.9 or never</strong> bindy will automatic detect if the record is enclosed with either single or double quotes and automatic remove those quotes when unmarshalling from CSV to Object. Therefore do <strong>not</strong> include the quotes in the separator, but simple do as below:</p>
-
-<p>"10","J","Pauline"," M","XD12345678","Fortis Dynamic 15,15" 2500","USD","08-01-2009"</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
-@CsvRecord( separator = &quot;,&quot; )
+</div></div><p>From <strong>Camel 2.8.3/2.9 or never</strong> bindy will automatic detect if the record is enclosed with either single or double quotes and automatic remove those quotes when unmarshalling from CSV to Object. Therefore do <strong>not</strong> include the quotes in the separator, but simple do as below:</p><p>"10","J","Pauline"," M","XD12345678","Fortis Dynamic 15,15" 2500","USD","08-01-2009"</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[@CsvRecord( separator = &quot;,&quot; )
 public Class Order {
 ...
 }
 ]]></script>
-</div></div>
-
-<p>Notice that if you want to marshal from Object to CSV and use quotes, then you need to specify which quote character to use, using the <code>quote</code> attribute on the @CsvRecord as shown below:</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
-@CsvRecord( separator = &quot;,&quot;, quote = &quot;\&quot;&quot; )
+</div></div><p>Notice that if you want to marshal from Object to CSV and use quotes, then you need to specify which quote character to use, using the <code>quote</code> attribute on the @CsvRecord as shown below:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[@CsvRecord( separator = &quot;,&quot;, quote = &quot;\&quot;&quot; )
 public Class Order {
 ...
 }
 ]]></script>
-</div></div>
-
-
-<p><strong>case 5 : separator &amp; skipfirstline</strong></p>
-
-<p>The feature is interesting when the client wants to have in the first line of the file, the name of the data fields :</p>
-
-<p>order id, client id, first name, last name, isin code, instrument name, quantity, currency, date</p>
-
-<p>To inform bindy that this first line must be skipped during the parsing process, then we use the attribute :</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
-@CsvRecord(separator = &quot;,&quot;, skipFirstLine = true)
+</div></div><p><strong>case 5 : separator &amp; skipfirstline</strong></p><p>The feature is interesting when the client wants to have in the first line of the file, the name of the data fields :</p><p>order id, client id, first name, last name, isin code, instrument name, quantity, currency, date</p><p>To inform bindy that this first line must be skipped during the parsing process, then we use the attribute :</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[@CsvRecord(separator = &quot;,&quot;, skipFirstLine = true)
 public Class Order {
 ...
 }
 ]]></script>
-</div></div>
-
-<p><strong>case 6 : generateHeaderColumns</strong></p>
-
-<p>To add at the first line of the CSV generated, the attribute generateHeaderColumns must be set to true in the annotation like this :</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
-@CsvRecord( generateHeaderColumns = true )
+</div></div><p><strong>case 6 : generateHeaderColumns</strong></p><p>To add at the first line of the CSV generated, the attribute generateHeaderColumns must be set to true in the annotation like this :</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[@CsvRecord( generateHeaderColumns = true )
 public Class Order {
 ...
 }
 ]]></script>
-</div></div>
-
-<p>As a result, Bindy during the unmarshaling process will generate CSV like this :</p>
-
-<p>order id, client id, first name, last name, isin code, instrument name, quantity, currency, date<br clear="none">
-10, J, Pauline, M, XD12345678, Fortis Dynamic 15/15, 2500, USD,08-01-2009</p>
-
-<p><strong>case 7 : carriage return</strong></p>
-
-<p>If the platform where camel-bindy will run is not Windows but Macintosh or Unix, than you can change the crlf property like this. Three values are available : WINDOWS, UNIX or MAC</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
-@CsvRecord(separator = &quot;,&quot;, crlf=&quot;MAC&quot;)
+</div></div><p>As a result, Bindy during the unmarshaling process will generate CSV like this :</p><p>order id, client id, first name, last name, isin code, instrument name, quantity, currency, date<br clear="none"> 10, J, Pauline, M, XD12345678, Fortis Dynamic 15/15, 2500, USD,08-01-2009</p><p><strong>case 7 : carriage return</strong></p><p>If the platform where camel-bindy will run is not Windows but Macintosh or Unix, than you can change the crlf property like this. Three values are available : WINDOWS, UNIX or MAC</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[@CsvRecord(separator = &quot;,&quot;, crlf=&quot;MAC&quot;)
 public Class Order {
 ...
 }
 ]]></script>
-</div></div>
-
-<p>Additionally, if for some reason you need to add a different line ending character, you can opt to specify it using the crlf parameter. In the following example, we can end the line with a comma followed by the newline character:</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
-@CsvRecord(separator = &quot;,&quot;, crlf=&quot;,\n&quot;)
+</div></div><p>Additionally, if for some reason you need to add a different line ending character, you can opt to specify it using the crlf parameter. In the following example, we can end the line with a comma followed by the newline character:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[@CsvRecord(separator = &quot;,&quot;, crlf=&quot;,\n&quot;)
 public Class Order {
 ...
 }
 ]]></script>
-</div></div>
-
-<p><strong>case 8 : isOrdered</strong></p>
-
-<p>Sometimes, the order to follow during the creation of the CSV record from the model is different from the order used during the parsing. Then, in this case, we can use the attribute isOrdered = true to indicate this in combination with attribute 'position' of the DataField annotation.</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
-@CsvRecord(isOrdered = true)
+</div></div><p><strong>case 8 : isOrdered</strong></p><p>Sometimes, the order to follow during the creation of the CSV record from the model is different from the order used during the parsing. Then, in this case, we can use the attribute isOrdered = true to indicate this in combination with attribute 'position' of the DataField annotation.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[@CsvRecord(isOrdered = true)
 public Class Order {
 
    @DataField(pos = 1, position = 11)
@@ -1415,26 +1284,8 @@ public Class Order {
 ...
 }
 ]]></script>
-</div></div>
-
-<p>Remark : pos is used to parse the file, stream while positions is used to generate the CSV</p>
-
-
-<h3 id="BookDataFormatAppendix-2.Link">2. Link</h3>
-
-<p>The link annotation will allow to link objects together.</p>
-
-<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> Annotation name </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Record type </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Level </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Link</strong> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> all </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Class &amp; Property </p></td></tr></tbody></table></div>
-
-
-<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> Parameter name </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> type </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Info </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> linkType </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> LinkType </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> optional - by default the value is LinkType.oneToOne - so you are not obliged to mention it </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Only one-to-one relation is allowed. </p></td></tr></tbody></table></div>
-
-
-<p>e.g : If the model Class Client is linked to the Order class, then use annotation Link in the Order class like this :</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Property Link</b></div><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
-@CsvRecord(separator = &quot;,&quot;)
+</div></div><p>Remark : pos is used to parse the file, stream while positions is used to generate the CSV</p><h3 id="BookDataFormatAppendix-2.Link">2. Link</h3><p>The link annotation will allow to link objects together.</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Annotation name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Record type</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Level</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Link</strong></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>all</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Class &amp; Property</p></td></tr></tbody></table></div><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Parameter name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>type</p></th><th colspan="1" rowspan="
 1" class="confluenceTh"><p>Info</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>linkType</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>LinkType</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>optional - by default the value is LinkType.oneToOne - so you are not obliged to mention it</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Only one-to-one relation is allowed.</p></td></tr></tbody></table></div><p>e.g : If the model Class Client is linked to the Order class, then use annotation Link in the Order class like this :</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Property Link</b></div><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[@CsvRecord(separator = &quot;,&quot;)
 public class Order {
 
     @DataField(pos = 1)
@@ -1444,37 +1295,14 @@ public class Order {
     private Client client;
 ...
 ]]></script>
-</div></div>
-
-<p>AND for the class Client :</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Class Link</b></div><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
-@Link
+</div></div><p>AND for the class Client :</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Class Link</b></div><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[@Link
 public class Client {
 ...
 }
 ]]></script>
-</div></div>
-
-
-<h3 id="BookDataFormatAppendix-3.DataField">3. DataField</h3>
-
-<p>The DataField annotation defines the property of the field. Each datafield is identified by its position in the record, a type (string, int, date, ...) and optionally of a pattern</p>
-
-<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> Annotation name </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Record type </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Level </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>DataField</strong> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> all </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Property </p></td></tr></tbody></table></div>
-
-
-<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> Parameter name </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> type </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Info </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> pos </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> int </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> mandatory - digit number starting from 1 to ... </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> pattern </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> string </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> optional - default value = "" - will be used to format Decimal, Date, ... </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> length </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> int </p></td><td colspan="1" rowspan="1" class="conflu
 enceTd"><p> optional - represents the length of the field for fixed length format </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> precision </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> int </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> optional - represents the precision to be used when the Decimal number will be formatted/parsed </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> pattern </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> string </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> optional - default value = "" - is used by the Java Formater (SimpleDateFormat by example) to format/validate data </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> position </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> int </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> optional - must be used when the position of the field in the CSV generated m
 ust be different compare to pos </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> required </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> boolean </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> optional - default value = "false" </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> trim </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> boolean </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> optional - default value = "false" </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> defaultValue </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> string </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> optional - default value = "" - defines the field's default value when the respective CSV field is empty/not available </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> impliedDecimalSeparator </p></td><td colspan="1" rowspan="1" class="co
 nfluenceTd"><p> boolean </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Camel 2.11:</strong> optional - default value = "false" - Indicates if there is a decimal point implied at a specified location </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> lengthPos </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> int </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Camel 2.11</strong>: optional - can be used to identify&#160;a data field in a fixed-length record that defines the fixed length for this field </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> delimiter </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> string </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Camel 2.11:</strong> optional - can be used to demarcate the end of a variable-length field within a fixed-length record </p></td></tr></tbody></table></div>
-
-
-<p><strong>case 1 : pos</strong></p>
-
-<p>This parameter/attribute represents the position of the field in the csv record</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Position</b></div><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
-@CsvRecord(separator = &quot;,&quot;)
+</div></div><h3 id="BookDataFormatAppendix-3.DataField">3. DataField</h3><p>The DataField annotation defines the property of the field. Each datafield is identified by its position in the record, a type (string, int, date, ...) and optionally of a pattern</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Annotation name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Record type</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Level</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>DataField</strong></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>all</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Property</p></td></tr></tbody></table></div><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Parameter name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>type</p><
 /th><th colspan="1" rowspan="1" class="confluenceTh"><p>Info</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>pos</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>int</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>mandatory - digit number starting from 1 to ...</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>pattern</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>string</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>optional - default value = "" - will be used to format Decimal, Date, ...</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>length</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>int</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>optional - represents the length of the field for fixed length format</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>precision</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>int<
 /p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>optional - represents the precision to be used when the Decimal number will be formatted/parsed</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>pattern</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>string</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>optional - default value = "" - is used by the Java Formater (SimpleDateFormat by example) to format/validate data</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>position</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>int</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>optional - must be used when the position of the field in the CSV generated must be different compare to pos</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>required</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>boolean</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>optio
 nal - default value = "false"</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>trim</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>boolean</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>optional - default value = "false"</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>defaultValue</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>string</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>optional - default value = "" - defines the field's default value when the respective CSV field is empty/not available</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>impliedDecimalSeparator</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>boolean</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.11:</strong> optional - default value = "false" - Indicates if there is a decimal point implied at a specified location</p></td></tr><tr><td colspan="1" rowspan="1" 
 class="confluenceTd"><p>lengthPos</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>int</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.11</strong>: optional - can be used to identify&#160;a data field in a fixed-length record that defines the fixed length for this field</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>delimiter</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>string</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.11:</strong> optional - can be used to demarcate the end of a variable-length field within a fixed-length record</p></td></tr></tbody></table></div><p><strong>case 1 : pos</strong></p><p>This parameter/attribute represents the position of the field in the csv record</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Position</b></div><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[@CsvRecord(separator = &quot;,&quot;)
 public class Order {
 
     @DataField(pos = 1)
@@ -1486,13 +1314,8 @@ public class Order {
 ...
 }
 ]]></script>
-</div></div>
-
-<p>As you can see in this example the position starts at '1' but continues at '5' in the class Order. The numbers from '2' to '4' are defined in the class Client (see here after).</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Position continues in another model class</b></div><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
-public class Client {
+</div></div><p>As you can see in this example the position starts at '1' but continues at '5' in the class Order. The numbers from '2' to '4' are defined in the class Client (see here after).</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Position continues in another model class</b></div><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[public class Client {
 
     @DataField(pos = 2)
     private String clientNr;
@@ -1505,15 +1328,8 @@ public class Client {
 ...
 }
 ]]></script>
-</div></div>
-
-<p><strong>case 2 : pattern</strong></p>
-
-<p>The pattern allows to enrich or validates the format of your data</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Pattern</b></div><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
-@CsvRecord(separator = &quot;,&quot;)
+</div></div><p><strong>case 2 : pattern</strong></p><p>The pattern allows to enrich or validates the format of your data</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Pattern</b></div><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[@CsvRecord(separator = &quot;,&quot;)
 public class Order {
 
     @DataField(pos = 1)
@@ -1536,15 +1352,8 @@ public class Order {
 ...
 }
 ]]></script>
-</div></div>
-
-<p><strong>case 3 : precision</strong></p>
-
-<p>The precision is helpful when you want to define the decimal part of your number</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Precision</b></div><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
-@CsvRecord(separator = &quot;,&quot;)
+</div></div><p><strong>case 3 : precision</strong></p><p>The precision is helpful when you want to define the decimal part of your number</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Precision</b></div><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[@CsvRecord(separator = &quot;,&quot;)
 public class Order {
 
     @DataField(pos = 1)
@@ -1570,17 +1379,8 @@ public class Order {
 ...
 }
 ]]></script>
-</div></div>
-
-<p><strong>case 4 : Position is different in output</strong></p>
-
-<p>The position attribute will inform bindy how to place the field in the CSV record generated. By default, the position used corresponds to the position defined with the attribute 'pos'. If the position is different (that means that we have an asymetric processus comparing marshaling from unmarshaling) than we can use 'position' to indicate this.</p>
-
-<p>Here is an example</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Position is different in output</b></div><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
-@CsvRecord(separator = &quot;,&quot;)
+</div></div><p><strong>case 4 : Position is different in output</strong></p><p>The position attribute will inform bindy how to place the field in the CSV record generated. By default, the position used corresponds to the position defined with the attribute 'pos'. If the position is different (that means that we have an asymetric processus comparing marshaling from unmarshaling) than we can use 'position' to indicate this.</p><p>Here is an example</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Position is different in output</b></div><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[@CsvRecord(separator = &quot;,&quot;)
 public class Order {
 @CsvRecord(separator = &quot;,&quot;, isOrdered = true)
 public class Order {
@@ -1607,25 +1407,14 @@ public class Order {
 ...
 }
 ]]></script>
-</div></div>
-
-    <div class="aui-message warning shadowed information-macro">
+</div></div>    <div class="aui-message warning shadowed information-macro">
                             <span class="aui-icon icon-warning">Icon</span>
                 <div class="message-content">
-                            
-<p>This attribute of the annotation @DataField must be used in combination with attribute isOrdered = true of the annotation @CsvRecord</p>
+                            <p>This attribute of the annotation @DataField must be used in combination with attribute isOrdered = true of the annotation @CsvRecord</p>
                     </div>
     </div>
-
-
-
-<p><strong>case 5 : required</strong></p>
-
-<p>If a field is mandatory, simply use the attribute 'required' setted to true</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Required</b></div><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
-@CsvRecord(separator = &quot;,&quot;)
+<p><strong>case 5 : required</strong></p><p>If a field is mandatory, simply use the attribute 'required' setted to true</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Required</b></div><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[@CsvRecord(separator = &quot;,&quot;)
 public class Order {
 
     @DataField(pos = 1)
@@ -1642,20 +1431,8 @@ public class Order {
 ...
 }
 ]]></script>
-</div></div>
-
-<p>If this field is not present in the record, than an error will be raised by the parser with the following information :</p>
-
-<p>Some fields are missing (optional or mandatory), line :</p>
-
-
-<p><strong>case 6 : trim</strong></p>
-
-<p>If a field has leading and/or trailing spaces which should be removed before they are processed, simply use the attribute 'trim' setted to true</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Trim</b></div><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
-@CsvRecord(separator = &quot;,&quot;)
+</div></div><p>If this field is not present in the record, than an error will be raised by the parser with the following information :</p><p>Some fields are missing (optional or mandatory), line :</p><p><strong>case 6 : trim</strong></p><p>If a field has leading and/or trailing spaces which should be removed before they are processed, simply use the attribute 'trim' setted to true</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Trim</b></div><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[@CsvRecord(separator = &quot;,&quot;)
 public class Order {
 
     @DataField(pos = 1, trim = true)
@@ -1672,15 +1449,8 @@ public class Order {
 ...
 }
 ]]></script>
-</div></div>
-
-<p><strong>case 7 : defaultValue</strong></p>
-
-<p>If a field is not defined then uses the value indicated by the defaultValue attribute</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Default value</b></div><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
-@CsvRecord(separator = &quot;,&quot;)
+</div></div><p><strong>case 7 : defaultValue</strong></p><p>If a field is not defined then uses the value indicated by the defaultValue attribute</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Default value</b></div><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[@CsvRecord(separator = &quot;,&quot;)
 public class Order {
 
     @DataField(pos = 1)
@@ -1697,47 +1467,20 @@ public class Order {
 ...
 }
 ]]></script>
-</div></div>
-    <div class="aui-message warning shadowed information-macro">
+</div></div>    <div class="aui-message warning shadowed information-macro">
                             <span class="aui-icon icon-warning">Icon</span>
                 <div class="message-content">
-                            
-<p>This attribute is only applicable to optional fields.</p>
+                            <p>This attribute is only applicable to optional fields.</p>
                     </div>
     </div>
-
-
-
-
-<h3 id="BookDataFormatAppendix-4.FixedLengthRecord">4. FixedLengthRecord</h3>
-
-<p>The FixedLengthRecord annotation is used to identified the root class of the model. It represents a record = a line of a file/message containing data fixed length formatted and can be linked to several children model classes. This format is a bit particular beause data of a field can be aligned to the right or to the left.<br clear="none">
-When the size of the data does not fill completely the length of the field, we can then add 'padd' characters.</p>
-
-<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> Annotation name </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Record type </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Level </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>FixedLengthRecord</strong> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> fixed </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Class </p></td></tr></tbody></table></div>
-
-
-<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> Parameter name </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> type </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Info </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> crlf </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> string </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> optional - possible values = WINDOWS,UNIX,MAC, or custom; default value = WINDOWS - allow to define the carriage return character to use. If you specify a value other than the three listed before, the value you enter (custom) will be used as the CRLF character(s)</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> paddingChar </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> char </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> mandatory - default value = '  ' </p></td></tr>
 <tr><td colspan="1" rowspan="1" class="confluenceTd"><p> length </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> int </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> mandatory = size of the fixed length record </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> hasHeader </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> boolean </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Camel 2.11</strong> - optional - Indicates that the record(s) of this type may be preceded by a single header record at the beginning of the file / stream </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> hasFooter </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> boolean </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Camel 2.11</strong> - optional -  Indicates that the record(s) of this type may be followed by a single footer record at the end of the file / stream </p></td></tr>
 <tr><td colspan="1" rowspan="1" class="confluenceTd"><p> skipHeader </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> boolean </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Camel 2.11</strong> - optional - Configures the data format to skip marshalling / unmarshalling of the header record.  Configure this parameter on the primary record (e.g., not the header or footer). </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> skipFooter </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> boolean </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Camel 2.11</strong> - optional - Configures the data format to skip marshalling / unmarshalling of the footer record Configure this parameter on the primary record (e.g., not the header or footer).. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> isHeader </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> boolean </p></td><td colsp
 an="1" rowspan="1" class="confluenceTd"><p> <strong>Camel 2.11</strong> - optional - Identifies this FixedLengthRecord as a header record </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> isFooter </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> boolean </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Camel 2.11</strong> - optional - Identifies this FixedLengthRecords as a footer record </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> ignoreTrailingChars </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> boolean </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Camel 2.11.1</strong> - optional - Indicates that characters beyond the last mapped filed can be ignored when unmarshalling / parsing.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" class="
 confluenceTd"><p> This annotation is associated to the root class of the model and must be declared one time. </p></td></tr></tbody></table></div>
-
-
-    <div class="aui-message warning shadowed information-macro">
+<h3 id="BookDataFormatAppendix-4.FixedLengthRecord">4. FixedLengthRecord</h3><p>The FixedLengthRecord annotation is used to identified the root class of the model. It represents a record = a line of a file/message containing data fixed length formatted and can be linked to several children model classes. This format is a bit particular beause data of a field can be aligned to the right or to the left.<br clear="none"> When the size of the data does not fill completely the length of the field, we can then add 'padd' characters.</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Annotation name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Record type</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Level</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>FixedLengthRecord</strong></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>fixed</p></td><td colspan
 ="1" rowspan="1" class="confluenceTd"><p>Class</p></td></tr></tbody></table></div><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Parameter name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>type</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Info</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>crlf</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>string</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>optional - possible values = WINDOWS,UNIX,MAC, or custom; default value = WINDOWS - allow to define the carriage return character to use. If you specify a value other than the three listed before, the value you enter (custom) will be used as the CRLF character(s)</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>paddingChar</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>char</p></td><td colspan="1" rowspan="1" class
 ="confluenceTd"><p>mandatory - default value = ' '</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>length</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>int</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>mandatory = size of the fixed length record</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>hasHeader</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>boolean</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.11</strong> - optional - Indicates that the record(s) of this type may be preceded by a single header record at the beginning of the file / stream</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>hasFooter</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>boolean</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.11</strong> - optional - Indicates that the record(s) of this type may be followed by a single footer record 
 at the end of the file / stream</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>skipHeader</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>boolean</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.11</strong> - optional - Configures the data format to skip marshalling / unmarshalling of the header record. Configure this parameter on the primary record (e.g., not the header or footer).</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>skipFooter</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>boolean</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.11</strong> - optional - Configures the data format to skip marshalling / unmarshalling of the footer record Configure this parameter on the primary record (e.g., not the header or footer)..</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>isHeader</p></td><td colspan="1" rowspan="1" class="confluenceTd">
 <p>boolean</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.11</strong> - optional - Identifies this FixedLengthRecord as a header record</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>isFooter</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>boolean</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.11</strong> - optional - Identifies this FixedLengthRecords as a footer record</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>ignoreTrailingChars</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>boolean</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.11.1</strong> - optional - Indicates that characters beyond the last mapped filed can be ignored when unmarshalling / parsing.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rows
 pan="1" class="confluenceTd"><p>This annotation is associated to the root class of the model and must be declared one time.</p></td></tr></tbody></table></div>    <div class="aui-message warning shadowed information-macro">
                             <span class="aui-icon icon-warning">Icon</span>
                 <div class="message-content">
-                            
-<p>The hasHeader/hasFooter parameters are mutually exclusive with isHeader/isFooter.  A record may not be both a header/footer and a primary fixed-length record.</p>
+                            <p>The hasHeader/hasFooter parameters are mutually exclusive with isHeader/isFooter. A record may not be both a header/footer and a primary fixed-length record.</p>
                     </div>
     </div>
-
-
-<p><strong>case 1 : Simple fixed length record</strong></p>
-
-<p>This simple example shows how to design the model to parse/format a fixed message</p>
-
-<p>10A9PaulineMISINXD12345678BUYShare2500.45USD01-08-2009</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Fixed-simple</b></div><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
-   @FixedLengthRecord(length=54, paddingChar=&#39; &#39;)
+<p><strong>case 1 : Simple fixed length record</strong></p><p>This simple example shows how to design the model to parse/format a fixed message</p><p>10A9PaulineMISINXD12345678BUYShare2500.45USD01-08-2009</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Fixed-simple</b></div><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[   @FixedLengthRecord(length=54, paddingChar=&#39; &#39;)
     public static class Order {
 
         @DataField(pos = 1, length=2)
@@ -1774,17 +1517,8 @@ When the size of the data does not fill 
         private Date orderDate;
         ...
 ]]></script>
-</div></div>
-
-<p><strong>case 2 : Fixed length record with alignment and padding</strong></p>
-
-<p>This more elaborated example show how to define the alignment for a field and how to assign a padding character which is ' ' here''</p>
-
-<p>10A9  PaulineM    ISINXD12345678BUYShare2500.45USD01-08-2009</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Fixed-padding-align</b></div><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
-   @FixedLengthRecord(length=60, paddingChar=&#39; &#39;)
+</div></div><p><strong>case 2 : Fixed length record with alignment and padding</strong></p><p>This more elaborated example show how to define the alignment for a field and how to assign a padding character which is ' ' here''</p><p>10A9 PaulineM ISINXD12345678BUYShare2500.45USD01-08-2009</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Fixed-padding-align</b></div><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[   @FixedLengthRecord(length=60, paddingChar=&#39; &#39;)
     public static class Order {
 
         @DataField(pos = 1, length=2)
@@ -1821,17 +1555,8 @@ When the size of the data does not fill 
         private Date orderDate;
         ...
 ]]></script>
-</div></div>
-
-<p><strong>case 3 : Field padding</strong></p>
-
-<p>Sometimes, the default padding defined for record cannnot be applied to the field as we have a number format where we would like to padd with '0' instead of ' '. In this case, you can use in the model the attribute paddingField to set this value.</p>
-
-<p>10A9  PaulineM    ISINXD12345678BUYShare000002500.45USD01-08-2009</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Fixed-padding-field</b></div><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
-    @FixedLengthRecord(length = 65, paddingChar = &#39; &#39;)
+</div></div><p><strong>case 3 : Field padding</strong></p><p>Sometimes, the default padding defined for record cannnot be applied to the field as we have a number format where we would like to padd with '0' instead of ' '. In this case, you can use in the model the attribute paddingField to set this value.</p><p>10A9 PaulineM ISINXD12345678BUYShare000002500.45USD01-08-2009</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Fixed-padding-field</b></div><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[    @FixedLengthRecord(length = 65, paddingChar = &#39; &#39;)
     public static class Order {
 
         @DataField(pos = 1, length = 2)
@@ -1868,17 +1593,8 @@ When the size of the data does not fill 
         private Date orderDate;
         ...
 ]]></script>
-</div></div>
-
-<p><strong>case 4: Fixed length record with delimiter</strong></p>
-
-<p>Fixed-length records sometimes have delimited content within the record. The firstName and lastName fields are delimited with the '^' character in the following example:</p>
-
-<p>10A9Pauline^M^ISINXD12345678BUYShare000002500.45USD01-08-2009</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Fixed-delimited</b></div><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
-    @FixedLengthRecord()
+</div></div><p><strong>case 4: Fixed length record with delimiter</strong></p><p>Fixed-length records sometimes have delimited content within the record. The firstName and lastName fields are delimited with the '^' character in the following example:</p><p>10A9Pauline^M^ISINXD12345678BUYShare000002500.45USD01-08-2009</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Fixed-delimited</b></div><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[    @FixedLengthRecord()
     public static class Order {
 
         @DataField(pos = 1, length = 2)
@@ -1914,26 +1630,14 @@ When the size of the data does not fill 
         @DataField(pos = 11, length = 10, pattern = &quot;dd-MM-yyyy&quot;)
         private Date orderDate;
 ]]></script>
-</div></div>
-
-    <div class="aui-message warning shadowed information-macro">
+</div></div>    <div class="aui-message warning shadowed information-macro">
                             <span class="aui-icon icon-warning">Icon</span>
                 <div class="message-content">
-                            
-<p>As of <strong>Camel 2.11</strong> the 'pos' value(s) in a fixed-length record may optionally be defined using ordinal, sequential values instead of precise column numbers.</p>
+                            <p>As of <strong>Camel 2.11</strong> the 'pos' value(s) in a fixed-length record may optionally be defined using ordinal, sequential values instead of precise column numbers.</p>
                     </div>
     </div>
-
-
-<p><strong>case 5 : Fixed length record with record-defined field length</strong></p>
-
-<p>Occasionally a fixed-length record may contain a field that define the expected length of another field within the same record.  In the following example the length of the instrumentNumber field value is defined by the value of instrumentNumberLen field in the record.</p>
-
-<p>10A9Pauline^M^ISIN10XD12345678BUYShare000002500.45USD01-08-2009</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Fixed-delimited</b></div><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
-    @FixedLengthRecord()
+<p><strong>case 5 : Fixed length record with record-defined field length</strong></p><p>Occasionally a fixed-length record may contain a field that define the expected length of another field within the same record. In the following example the length of the instrumentNumber field value is defined by the value of instrumentNumberLen field in the record.</p><p>10A9Pauline^M^ISIN10XD12345678BUYShare000002500.45USD01-08-2009</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Fixed-delimited</b></div><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[    @FixedLengthRecord()
     public static class Order {
 
         @DataField(pos = 1, length = 2)
@@ -1972,21 +1676,8 @@ When the size of the data does not fill 
         @DataField(pos = 12, length = 10, pattern = &quot;dd-MM-yyyy&quot;)
         private Date orderDate;
 ]]></script>
-</div></div>
-
-
-<p><strong>case 6 : Fixed length record with header and footer</strong></p>
-
-<p>Bindy will discover fixed-length header and footer records that are configured as part of the model &#8211; provided that the annotated classes exist either in the same package as the primary @FixedLengthRecord class, or within one of the configured scan packages. The following text illustrates two fixed-length records that are bracketed by a header record and footer record.</p>
-
-<p>101-08-2009<br clear="none">
-10A9  PaulineM    ISINXD12345678BUYShare000002500.45USD01-08-2009<br clear="none">
-10A9     RichN    ISINXD12345678BUYShare000002700.45USD01-08-2009<br clear="none">
-9000000002</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Fixed-header-and-footer-main-class</b></div><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
-@FixedLengthRecord(hasHeader = true, hasFooter = true)
+</div></div><p><strong>case 6 : Fixed length record with header and footer</strong></p><p>Bindy will discover fixed-length header and footer records that are configured as part of the model &#8211; provided that the annotated classes exist either in the same package as the primary @FixedLengthRecord class, or within one of the configured scan packages. The following text illustrates two fixed-length records that are bracketed by a header record and footer record.</p><p>101-08-2009<br clear="none"> 10A9 PaulineM ISINXD12345678BUYShare000002500.45USD01-08-2009<br clear="none"> 10A9 RichN ISINXD12345678BUYShare000002700.45USD01-08-2009<br clear="none"> 9000000002</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Fixed-header-and-footer-main-class</b></div><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[@FixedLengthRecord(hasHeader = true, hasFooter = true)
 public class Order {
 
     @DataField(pos = 1, length = 2)
@@ -2050,18 +1741,8 @@ public class OrderFooter {
 }
 
 ]]></script>
-</div></div>
-
-<p><strong>case 7 : Skipping content when parsing a fixed length record.  (Camel 2.11.1)</strong></p>
-
-<p>It is common to integrate with systems that provide fixed-length records containing more information than needed for the target use case. It is useful in this situation to skip the declaration and parsing of those fields that we do not need. To accomodate this, Bindy will skip forward to the next mapped field within a record if the 'pos' value of the next declared field is beyond the cursor position of the last parsed field. Using absolute 'pos' locations for the fields of interest (instead of ordinal values) causes Bindy to skip content between two fields.</p>
-
-<p>Similarly, it is possible that none of the content beyond some field is of interest. In this case, you can tell Bindy to skip parsing of everything beyond the last mapped field by setting the <strong>ignoreTrailingChars</strong> property on the @FixedLengthRecord declaration.</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
-
-@FixedLengthRecord(ignoreTrailingChars = true)
+</div></div><p><strong>case 7 : Skipping content when parsing a fixed length record. (Camel 2.11.1)</strong></p><p>It is common to integrate with systems that provide fixed-length records containing more information than needed for the target use case. It is useful in this situation to skip the declaration and parsing of those fields that we do not need. To accomodate this, Bindy will skip forward to the next mapped field within a record if the 'pos' value of the next declared field is beyond the cursor position of the last parsed field. Using absolute 'pos' locations for the fields of interest (instead of ordinal values) causes Bindy to skip content between two fields.</p><p>Similarly, it is possible that none of the content beyond some field is of interest. In this case, you can tell Bindy to skip parsing of everything beyond the last mapped field by setting the <strong>ignoreTrailingChars</strong> property on the @FixedLengthRecord declaration.</p><div class="code panel pdl" styl
 e="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[@FixedLengthRecord(ignoreTrailingChars = true)
 public static class Order {
 
         @DataField(pos = 1, length = 2)
@@ -2074,73 +1755,28 @@ public static class Order {
 
 }
 ]]></script>
-</div></div>
-
-
-<h3 id="BookDataFormatAppendix-5.Message">5. Message</h3>
-
-<p>The Message annotation is used to identified the class of your model who will contain key value pairs fields. This kind of format is used mainly in Financial Exchange Protocol Messages (FIX). Nevertheless, this annotation can be used for any other format where data are identified by keys. The key pair values are separated each other by a separator which can be a special character like a tab delimitor (unicode representation : \u0009) or a start of heading (unicode representation : \u0001)</p>
-
-    <div class="aui-message warning shadowed information-macro">
+</div></div><h3 id="BookDataFormatAppendix-5.Message">5. Message</h3><p>The Message annotation is used to identified the class of your model who will contain key value pairs fields. This kind of format is used mainly in Financial Exchange Protocol Messages (FIX). Nevertheless, this annotation can be used for any other format where data are identified by keys. The key pair values are separated each other by a separator which can be a special character like a tab delimitor (unicode representation : \u0009) or a start of heading (unicode representation : \u0001)</p>    <div class="aui-message warning shadowed information-macro">
                     <p class="title">"FIX information"</p>
                             <span class="aui-icon icon-warning">Icon</span>
                 <div class="message-content">
                             <p>More information about FIX can be found on this web site : <a shape="rect" class="external-link" href="http://www.fixprotocol.org/" rel="nofollow">http://www.fixprotocol.org/</a>. To work with FIX messages, the model must contain a Header and Trailer classes linked to the root message class which could be a Order class. This is not mandatory but will be very helpful when you will use camel-bindy in combination with camel-fix which is a Fix gateway based on quickFix project <a shape="rect" class="external-link" href="http://www.quickfixj.org/" rel="nofollow">http://www.quickfixj.org/</a>.</p>
                     </div>
     </div>
-
-
-
-<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> Annotation name </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Record type </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Level </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Message</strong> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> key value pair </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Class </p></td></tr></tbody></table></div>
-
-
-<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> Parameter name </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> type </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Info </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> pairSeparator </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> string </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> mandatory - can be '=' or ';' or 'anything' </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> keyValuePairSeparair </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> string </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> mandatory - can be '\u0001', '\u0009', '#' or 'anything' </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> crlf </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> string </p></td><td colspan="1" rowspan="1" class="
 confluenceTd"><p> optional - possible values = WINDOWS,UNIX,MAC, or custom; default value = WINDOWS - allow to define the carriage return character to use. If you specify a value other than the three listed before, the value you enter (custom) will be used as the CRLF character(s) </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> type </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> string </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> optional - define the type of message (e.g. FIX, EMX, ...) </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> version </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> string </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> optional - version of the message (e.g. 4.1) </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> isOrdered </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> boolean </p></td><td colspan="1" rowspan="1" class=
 "confluenceTd"><p> optional - default value = false - allow to change the order of the fields when FIX message is generated </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> This annotation is associated to the message class of the model and must be declared one time. </p></td></tr></tbody></table></div>
-
-
-<p><strong>case 1 : separator = 'u0001'</strong></p>
-
-<p>The separator used to segregate the key value pair fields in a FIX message is the ASCII '01' character or in unicode format '\u0001'. This character must be escaped a second time to avoid a java runtime error. Here is an example :</p>
-
-<p>8=FIX.4.1 9=20 34=1 35=0 49=INVMGR 56=BRKR 1=BE.CHM.001 11=CHM0001-01 22=4 ...</p>
-
-<p>and how to use the annotation</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>FIX - message</b></div><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
-@Message(keyValuePairSeparator = &quot;=&quot;, pairSeparator = &quot;\u0001&quot;, type=&quot;FIX&quot;, version=&quot;4.1&quot;)
+<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Annotation name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Record type</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Level</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Message</strong></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>key value pair</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Class</p></td></tr></tbody></table></div><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Parameter name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>type</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Info</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>pairSeparator</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>string</p></td><td colspan="1" rowspan="1" class=
 "confluenceTd"><p>mandatory - can be '=' or ';' or 'anything'</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>keyValuePairSeparair</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>string</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>mandatory - can be '\u0001', '\u0009', '#' or 'anything'</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>crlf</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>string</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>optional - possible values = WINDOWS,UNIX,MAC, or custom; default value = WINDOWS - allow to define the carriage return character to use. If you specify a value other than the three listed before, the value you enter (custom) will be used as the CRLF character(s)</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>type</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>string</p></td><td colspan="1" rowspan="1" class="confluenceTd
 "><p>optional - define the type of message (e.g. FIX, EMX, ...)</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>version</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>string</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>optional - version of the message (e.g. 4.1)</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>isOrdered</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>boolean</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>optional - default value = false - allow to change the order of the fields when FIX message is generated</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>This annotation is associated to the message class of the model and must be declared one time.</p></td></tr></tbody></table></div><p><strong>case 1 : separator = 'u0001'
 </strong></p><p>The separator used to segregate the key value pair fields in a FIX message is the ASCII '01' character or in unicode format '\u0001'. This character must be escaped a second time to avoid a java runtime error. Here is an example :</p><p>8=FIX.4.1 9=20 34=1 35=0 49=INVMGR 56=BRKR 1=BE.CHM.001 11=CHM0001-01 22=4 ...</p><p>and how to use the annotation</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>FIX - message</b></div><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[@Message(keyValuePairSeparator = &quot;=&quot;, pairSeparator = &quot;\u0001&quot;, type=&quot;FIX&quot;, version=&quot;4.1&quot;)
 public class Order {
 ...
 }
 ]]></script>
-</div></div>
-
-    <div class="aui-message warning shadowed information-macro">
+</div></div>    <div class="aui-message warning shadowed information-macro">
                     <p class="title">Look at test cases</p>
                             <span class="aui-icon icon-warning">Icon</span>

[... 377 lines stripped ...]


Mime
View raw message