Qore FixedLengthUtil Module Reference  1.1
FixedLengthUtil::FixedLengthFileWriter Class Reference

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

Inheritance diagram for FixedLengthUtil::FixedLengthFileWriter:

Public Member Methods

 constructor (string file_name, hash specs, *hash opts)
 Instantiates the FixedLengthFileWriter object. More...
 
string getFileName ()
 Return the file name (including path, if used)
 
 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 Methods 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
 

Private Member Methods

File m_file ()
 file object
 

Private Attributes

string file
 file name
 

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
  • 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  specs,
*hash  opts 
)

Instantiates the FixedLengthFileWriter object.

Parameters
file_namethe output file path
specsFixed-length line specification; see Specification Hash for more information
optsGlobal options; see Global Options for valid values

◆ write() [1/3]

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("filename.txt", Spec);
w.write(hh);
Parameters
lineA 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-RECORDrecord name (type key in the record hash) not recognized
FIELD-INPUT-ERRORthe input value is too large to render into the output field
RECORD-TRANSITION-ERRORa record transition error occurred; an invalid record sequence was given in the input data

◆ write() [2/3]

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
linesA 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-RECORDrecord name (type key in the record hash) not recognized
FIELD-INPUT-ERRORthe input value is too large to render into the output field
RECORD-TRANSITION-ERRORa record transition error occurred; an invalid record sequence was given in the input data

◆ write() [3/3]

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
linesAn 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-RECORDrecord name (type key in the record hash) not recognized
FIELD-INPUT-ERRORthe input value is too large to render into the output field
RECORD-TRANSITION-ERRORa record transition error occurred; an invalid record sequence was given in the input data