All Classes Namespaces Functions Variables Groups Pages
FixedLengthUtil::FixedLengthFileWriter Class Reference

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

Inheritance diagram for FixedLengthUtil::FixedLengthFileWriter:
[legend]

## Public Member Functions

| constructor (string file_name, hash specs, *hash opts)
| Instantiates the FixedLengthFileWriter object. More...
string | getFileName ()
| Return the file name.
| write (hash line)
| Renders a single line for a single input record hash to the output file. More...
| write (list lines)
| iterates the input records and writes rendered versions of all input records to the file More...
| write (Qore::AbstractIterator lines)
| iterates the input records and writes rendered versions of all input records to the file More...
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. More...
| constructor (hash specs, *hash opts)
| creates the FixedLengthAbstractWriter object More...
string | formatLine (hash line)
| Formats a single line from a hash describing the record type and its contents. More...
int | linesCount ()
| get processed lines count

## Detailed Description

Writer for fixed-length-line output files.

Example:
  #!/usr/bin/env qore
  %new-style
  %enable-all-warnings
  %require-types
  %strict-args
  %requires FixedLengthUtil
  list 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 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", "timezone" : "Europe/Prague"),
  ),
  );
  hash global_options = (
  "eol" : "\n",
  );
  FixedLengthFileWriter w(file, specs, global_options);
  w.write(data);

See Also
  FixedLengthDataWriter

## Member Function Documentation

FixedLengthUtil::FixedLengthFileWriter::constructor | ( | string | file_name,
|  | hash | specs,
|  | *hash | opts
| ) |  |

Instantiates the FixedLengthFileWriter object.

Parameters

  file_name | the output file path
  specs | Fixed-length line specification; see Specification Hash for more information
  opts | Global options; see Global Options for valid values

FixedLengthUtil::FixedLengthFileWriter::write | ( | hash | line | ) |

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

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,
  ),
  );
  FixedLengthFileWriter w(Spec);
  w.write(hh);

Parameters

  line

  A hash representing input data to be writen to the file; 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

FixedLengthUtil::FixedLengthFileWriter::write | ( | list | lines | ) |

iterates the input records and writes rendered versions of all input records to the file

Example:
  FixedLengthFileWriter w(output_file, 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

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

iterates the input records and writes rendered versions of all input records to the file

Example:
  FixedLengthFileWriter w(output_file, 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