Gotz uses appenders to append data to output and encoders to encode (alter the output format) the output. At present, it comes with two appenders - FileAppender and DbAppender.

FileAppender

So far, all examples use FileAppender which is defined as follows

<steps name="commonSteps">
   ... other steps ...
   <step name="appender" class="org.codetab.gotz.step.load.DataAppender">
        <nextStep>end</nextStep>
        <appender name="file"
            class="org.codetab.gotz.step.load.appender.FileAppender">
            <encoder name="csv"
                class="org.codetab.gotz.step.load.encoder.CsvEncoder">
                <delimiter>,</delimter>
            </encoder>
            <file>output/data.txt</file>
        </appender>
  </step>
</steps>

To use appenders, first we must define a step that uses class DataAppender and this class is responsible for creation of appenders. Then we can define multiple appenders within it and in the example, we are using FileAppender with <file> element pointing to output/data.txt. To encode the data, it uses CsvEncoder which by default delimits output with | and we can change it with <delimiter> element.

Encoder also handles sort. By default, it sorts on col and then by row axis and we can change this by using <sortOrder> element. For example the following sorts by row and then on col

<encoder name="csv"
class="org.codetab.gotz.step.load.encoder.CsvEncoder">
  <sortOrder>row,col<sortOrder>
</encoder>

The CsvEncoder outputs one member per line and to output in table format use CsvRecordEncoder.

It is possible specify separate appender for each task by overriding the commonSteps. It is also possible to specify multiple appenders either in commonSteps or overridden steps.

 
 

DbAppender

The Example-12 appends data to a database table dataset and the definition is as follows

<step name="appender" class="org.codetab.gotz.step.load.DataAppender">
    <nextStep>end</nextStep>
    <appender name="db" stream="false"
        class="org.codetab.gotz.step.load.appender.DbAppender">
        <encoder name="dataSet"
              class="org.codetab.gotz.step.load.encoder.DataSetEncoder">
        </encoder>
    </appender>
</step>

The encoder DataSetEncoder converts the data to database table format.

In next chapter, we explain how to split job.xml into multiple files when definitions become large and complex.