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

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

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

Inheritance diagram for FixedLengthUtil::FixedLengthFileWriter:
[legend]

## Public Member Functions

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

File | m_file ()
| file object

## Protected Attributes

string | file
| file name
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 files.

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", "timezone": "Europe/Prague"},
  },
  };
  hash<auto> global_options = {
  "eol": "\n",
  };
  FixedLengthFileWriter w(file, specs, global_options);
  w.write(data);

See also
  - FixedLengthWriter for a stream-based class providing the same functionality as this class in a more generic way

## Member Function Documentation

## constructor()

FixedLengthUtil::FixedLengthFileWriter::constructor | ( | string | file_name,
|  | hash< auto > | specs,
|  | *hash< auto > | 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

## write() [1/3]

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

virtual

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("filename.txt", 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

Implements FixedLengthUtil::FixedLengthAbstractWriter.

## write() [2/3]

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

virtual

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

  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

Implements FixedLengthUtil::FixedLengthAbstractWriter.

## write() [3/3]

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

virtual

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

Implements FixedLengthUtil::FixedLengthAbstractWriter.