Loading...
Searching...
No Matches
FixedLengthUtil::FixedLengthWriter Class Reference

Writer for fixed-length line output data. More...

`#include <FixedLengthWriter.qc.dox.h>`

Inheritance diagram for FixedLengthUtil::FixedLengthWriter:
[legend]

## Public Member Functions

| constructor (Qore::OutputStream output, hash< auto > specs, *hash< auto > opts)
| Instantiates the FixedLengthWriter object.
| write (hash< auto > line)
| Renders a single line for a single input record hash to the output stream.
| write (list< auto > lines)
| iterates the input records and writes rendered versions of all input records to the output stream
| write (Qore::AbstractIterator lines)
| iterates the input records and writes rendered versions of all input records to the output stream
Public Member Functions inherited from FixedLengthUtil::FixedLengthAbstractWriter
bool | checkTransition (*string from, *string to)
| A verification function to be called for each line. This method can be overridden to achieve a begin-to-end validation of the whole input file.
| constructor (hash< auto > specs, *hash< auto > opts)
| creates the FixedLengthAbstractWriter object
string | formatLine (hash< auto > line)
| Formats a single line from a hash describing the record type and its contents.
int | linesCount ()
| get processed lines count
abstract | write (hash< auto > line)
| Renders a single line for a single input record hash to the output.
abstract | write (list< auto > lines)
| iterates the input records and writes rendered versions of all input records to the output
abstract | write (Qore::AbstractIterator lines)
| iterates the input records and writes rendered versions of all input records to the output
Public Member Functions inherited from FixedLengthUtil::FixedLengthBase
| constructor (hash< auto > m_specs, *hash< auto > m_opts)
| Creates the object from the record specifications.
*hash< string, AbstractDataField > | getRecordType ()
| Returns the description of the record type, if any.

## Protected Attributes

StreamWriter | output
| the output stream for the fixed-length data
Protected Attributes inherited from FixedLengthUtil::FixedLengthAbstractWriter
Protected Attributes inherited from FixedLengthUtil::FixedLengthBase
const | GlobalOptionMap = ...
| Translates from global options to data provider options.
*hash< auto > | m_opts
| Global input or output options.
hash< auto > | m_specs
| The record specifications.

## Detailed Description

Writer for fixed-length line output data.

Example:
  #!/usr/bin/env qore
  %new-style
  %enable-all-warnings
  %require-types
  %strict-args
  %requires FixedLengthUtil
  list<auto> data = (
  {"type": "type1", "record": {"col1": 11111, "col2": "bb"}},
  {"type": "type2", "record": {"col3": "c", "col4": "ddd", "col5": "31122014"}},
  {"type": "type1", "record": {"col1": 22222, "col2": "gg"}},
  );
  hash<auto> specs = {
  "type1": {
  "col1": {"length": 5, "type": "int"},
  "col2": {"length": 2, "type": "string"},
  },
  "type2": {
  "col3": {"length": 1, "type": "string"},
  "col4": {"length": 3, "type": "string"},
  "col5": {"length": 8, "type": "date", "format": "DDMMYYYY"},
  },
  };
  hash<auto> global_options = {
  "eol": "\n",
  };
  FileOutputStream output("output.txt");
  FixedLengthWriter w(output, specs, global_options);
  w.write(data);

## Member Function Documentation

## constructor()

FixedLengthUtil::FixedLengthWriter::constructor | ( | Qore::OutputStream | output,
|  | hash< auto > | specs,
|  | *hash< auto > | opts )

Instantiates the FixedLengthWriter object.

Parameters

  output | the OutputStream for the data generated
  specs | Fixed-length line specification; see Specification Hash for more information
  opts | Global options; see Global Options for valid values

## write() [1/3]

FixedLengthUtil::FixedLengthWriter::write | ( | hash< auto > | line | ) |

Renders a single line for a single input record hash to the output stream.

Example:
  const Spec = (
  "header": (
  "flow_type": ("length": 3, "type": "string"),
  "record_type": ("length": 3, "type": "int", "padding_char": "0"),
  "number_of_records": ("length": 8, "type": "int", "padding_char": "0"),
  ),
  );
  hash hh = (
  "type": "header",
  "record": (
  "flow_type": "WTS",
  "record_type": "950",
  "number_of_records": 1,
  ),
  );
  FixedLengthWriter w(output, Spec);
  w.write(hh);

Parameters

  line

  A hash representing input data to be writen to the output stream; the hash must have the following keys:
  - `"type"`: a string giving the record type (must be defined in Specification Hash given in the constructor)
  - `"record"`: a hash giving the input record to be rendered (with keys as defined in the Record Description Hash for the record identified by the type argument)

Exceptions

  INVALID-RECORD | record name (type key in the record hash) not recognized
  FIELD-INPUT-ERROR | the input value is too large to render into the output field
  RECORD-TRANSITION-ERROR | a record transition error occurred; an invalid record sequence was given in the input data

## write() [2/3]

FixedLengthUtil::FixedLengthWriter::write | ( | list< auto > | lines | ) |

iterates the input records and writes rendered versions of all input records to the output stream

Example:
  FixedLengthWriter w(output, Spec);
  w.write(i);

Parameters

  lines

  A list of input records; each list value must be a hash with the following keys:
  - `"type"`: a string giving the record type (must be defined in Specification Hash given in the constructor)
  - `"record"`: a hash giving the input record to be rendered (with keys as defined in the Record Description Hash for the record identified by the type argument)

Exceptions

  INVALID-RECORD | record name (type key in the record hash) not recognized
  FIELD-INPUT-ERROR | the input value is too large to render into the output field
  RECORD-TRANSITION-ERROR | a record transition error occurred; an invalid record sequence was given in the input data

## write() [3/3]

FixedLengthUtil::FixedLengthWriter::write | ( | Qore::AbstractIterator | lines | ) |

iterates the input records and writes rendered versions of all input records to the output stream

Example:
  FixedLengthWriter w(output, Spec);
  w.write(i);

Parameters

  lines

  An iterator to stream input records; each iterator value must be a hash with the following keys:
  - `"type"`: a string giving the record type (must be defined in Specification Hash given in the constructor)
  - `"record"`: a hash giving the input record to be rendered (with keys as defined in the Record Description Hash for the record identified by the type argument)

Exceptions

  INVALID-RECORD | record name (type key in the record hash) not recognized
  FIELD-INPUT-ERROR | the input value is too large to render into the output field
  RECORD-TRANSITION-ERROR | a record transition error occurred; an invalid record sequence was given in the input data