Mapper::Mapper Class Reference

this class is a base class for mapping data; see Mapper Examples for usage examples More...

Inherits AbstractDataProcessor.

## Public Member Functions

| commit ()
| Commits data written to the output data provider if the output data provider supports transaction management. More...
| constructor (hash< auto > mapv, *hash< auto > opts)
| builds the object based on a hash providing field mappings, data constraints, and optionally custom mapping logic More...
| discardOutput ()
| Discards any buffered data in the output data provider in a bulk operation. More...
| flushOutput ()
| Flushes any remaining data to the output data provider in a bulk operation. More...
int | getCount ()
| returns the internal record count More...
string | getFieldName (string fname)
| returns a descriptive name of the given field if possible, otherwise returns the field name itself
*AbstractDataProvider | getInputProvider ()
| returns the input provider
*hash< string, AbstractDataField > | getInputRecord ()
| returns the value of the `"input"` option
hash< auto > | getOptionsFromTemplate (hash< auto > opts, hash< auto > input_rec, *hash< auto > output_rec)
| Returns options from a template hash.
MapperOutputRecordIterator | getOutputIterator ()
| returns an output record iterator that produces mapped data from the input data provider More...
*AbstractDataProvider | getOutputProvider ()
| returns the output provider
*hash< string, AbstractDataField > | getOutputRecord ()
| returns the value of the `"output"` option
auto | getRuntime (string key)
| get current runtime option value for a key More...
hash< string, hash< MapperOptionInfo > > | getUserOptions ()
| returns mapper options useful for users
| logOutput (hash< auto > h)
| calls the output logging closure or call reference (if any) to log the output record
list< hash< auto > > | mapAll (hash< auto > recs)
| maps all input records and returns the mapped data as a list of output records More...
list< hash< auto > > | mapAll (list< auto > recs)
| maps all input records and returns the mapped data as a list of output records More...
auto | mapAuto (auto recs)
| maps all input record(s) automatically and returns the mapped data More...
*softlist< hash< auto > > | mapAutoInput ()
| Runs the input data provider through the mapper and returns the output. More...
*hash< auto > | mapBulk (hash< auto > rec, *hash< auto > crec)
| maps a set of records in hash of lists format; returns mapped data in a hash of lists format More...
hash< auto > | mapData (hash< auto > rec)
| processes the input record and returns a hash of the mapped values where the keys in the hash returned are the target field names; the order of the fields in the hash returned is the same order as the keys in the map hash. More...
hash< auto > | optionKeys ()
| returns a list of valid constructor options for this class (can be overridden in subclasses) More...
| replaceRuntime (*hash< auto > runtime)
| replaces runtime options More...
| resetCount ()
| resets the internal record count More...
| rollback ()
| Rolls back data written to the output data provider. More...
| runAutonomous ()
| Runs the input and output mappers with data providers on each end autonomously. More...
| setNullableOutput ()
| sets all fields in the output record as nullable More...
| setRuntime (hash< auto > runtime)
| adds runtime options to the current runtime option hash More...
| setRuntime (string key, auto value)
| set the runtime option with "key" to value "value" More...
hash< string, bool > | validKeys ()
| returns a list of valid field keys for this class (can be overridden in subclasses) More...

## Static Public Member Functions

static *hash< auto > | getMapperThreadContext ()
| Get mapper thread context.
static Type | recordType ("hash<string, AbstractDataField>")
| the input and output record type

## Public Attributes

const | ConstantConflictList = ("name", "struct", "code", "default")
| field keys that conflict with "constant" and "index"
const | OptionKeys = ...
| constructor option keys (can be extended by subclassing and reimplementing optionKeys())
const | OutputKeys = ...
| output option keys
const | UserOptions = ...
| User options.
const | ValidKeys = ...
| default known mapper hash field keys (can be extended by subclassing and reimplementing validKeys())

## Protected Member Functions

| checkInputField (string k, string name)
| raises an error if an invalid input field name is declared; only call this if "input" is defined
| checkInputProvider ()
| raises an error if no input provider is present
| checkMap ()
| verifies the input map in the constructor
| checkMapField (string k, reference< auto > fh)
| perform per-field pre-processing on the passed map in the constructor More...
| checkOutputBulkOperation ()
| raises an error if no output provider is present More...
| checkOutputProvider ()
| raises an error if no output provider is present More...
| checkTimezoneOption (string rn)
| verifies a timezone constructor option
| constructor ()
| private constructor for subclasses
| convertToHash (int t, string k, reference< auto > fh)
| convert a field definition to a hash if possible
*hash< auto > | doCreateRecordIntern (hash< auto > rec)
| Creates a record with the output data provider.
| error (string fmt)
| throws a `MAP-ERROR` exception; prepends the map name to the description if known More...
| error2 (string ex, string fmt)
| throws the given exception; prepends the map name to the description if known
| fieldLengthError (string k, string val, int ix, int sze, int maxlen, hash< auto > rc)
| called when a field exceeds its maximum length when processing hashes of lists
*AbstractDataProviderType | getExpectedTypeImpl ()
| Returns the expected type of data to be submitted, if available.
*int | getRecListSize (hash< auto > rec)
*AbstractDataProviderType | getReturnTypeImpl ()
| Returns the type of data that will be returned, if available.
hash< auto > | mapDataIntern (hash< auto > rec, *bool do_log_output)
| processes the input record and returns a hash of the mapped values where the keys in the hash returned are the target field names; the order of the fields in the hash returned is the same order as the keys in the map hash. More...
nothing | mapFieldIntern (reference< hash< auto >> h, string key, hash< auto > rec, bool do_list, int list_size)
| maps a single field to the target More...
auto | mapFieldType (string key, hash< auto > mapping, AbstractDataProviderType type, auto value, hash< auto > rec)
| performs type handling
auto | mapSubclass (hash< auto > m, auto v)
| to be overridden as necessary in subclasses
| setup (hash< auto > mapv, *hash< auto > opts)
| sets up the mapper object before checking the mapper hash
| submitImpl (code enqueue, auto _data)
| Submits the data for processing by the mapper. More...
bool | supportsBulkApiImpl ()
| Returns True if the record processor supports bulk operation. More...
string | truncateField (string k, string val, int ix, int sze, int maxlen)
| called to truncate fields when processing hashes of lists

## Static Protected Member Functions

static *hash< auto > | swapMapperThreadContext (*hash< auto > new_ctx)
| Swap the mapper thread context.

## Protected Attributes

const | _Mapper_Thread_Key = "_Mapper_Thread_Key"
| Thread key for mapper thread context while mapping.
bool | allow_dot = False
| DEPRECATED: do not assume struct when field names have a `"."` in them; instead allow input field names to have a `"."` in them. More...
bool | allow_output_dot = False
| DEPRECATED: do not assume structured/hash output when output field names have a `"."` in them; instead allow output field names to have a `"."` in them. More...
hash< auto > | consth
| map of constant fields
int | count = 0
| count of records mapped
const | DeprecatedGlobalTransformOptionMap = ...
| maps deprecated transform options to global tranform options
bool | disable_bulk
| disable bulk operations when there is a hash of lists as input when calling mapAuto
*hash< auto > | global_submappers
| global submapper hash
hash< auto > | global_transform_opts
| global transformation options; can be overridden on a per-field basis
hash< auto > | identh
| map of fields to be mapped 1:1 input -> output
*list< auto > | identl
| list of fields to be mapped 1:1 input -> output
bool | ignore_missing_input
| supresses the output field if the input field is missing and the output is optional
*code | info_log
| an optional info logging callback; must accept a sprintf()-style format specifier and optional arguments
*hash< string, AbstractDataField > | input
| an optional description of possible input hash keys
bool | input_do_request
| indicates that the request/response API should be used for mapper input
*code | input_log
| an optional input data logging callback; must accept a hash giving the input data hash
*AbstractDataProvider | input_provider
| the optional input data provider
*hash< auto > | input_provider_search
| search conditions for the input provider
auto | input_request
| the argument for the request/response API for the input provider
*hash< auto > | input_request_options
| options for the request when using the request/response API for the input provider
bool | input_request_search
| a boolean flag that indicates that an input provider that supports both the record API and the request/response API should use the request search API to provide records
*hash< auto > | input_search_options
| search options for the input provider
*hash< auto > | m_runtime
| current runtime values More...
hash | mapc
| the hash providing output field names and mappings More...
hash< auto > | mapd
| the hash with a subset of the mappings used dynamically
hash< auto > | mapo
| the hash of output records for key order
hash< auto > | mapper_handler_context = {}
| mapper handler context hash; to be passed to handlers
*hash< auto > | mapper_thread_context
| mapper static thread context hash
*string | name
| the optional name for the object (for example a table name); will be prepended to field names in error messages
*hash< string, AbstractDataField > | output
| an optional description of the output data structure
bool | output_create_ignore_duplicates
| flag indicating that duplicate records should be ignored when creating records with an output mapper
bool | output_do_request
| indicates that the request/response API should be used for mapper output
*code | output_log
| an optional output data logging callback; must accept a hash giving the output data hash
bool | output_nullable = False
| set output fields nullable
*AbstractDataProvider | output_provider
| the optional output data provider
*AbstractDataProviderBulkOperation | output_provider_bulk_operation
| bulk output object for an output data provider
bool | output_provider_upsert
| if the upsert operations should be used on the output provider
*hash< auto > | output_request_options
| options for the request when using the request/response API for the output provider
hash< auto > | rconsth
| map of constant runtime fields
hash< string, hash< MapperRuntimeKeyInfo > > | runtime_independent_keys
| hash of runtime keys that provide independent mappings (where there is no "requires_role" = "value")
hash< string, hash< MapperRuntimeKeyInfo > > | runtime_keys
| map of field keys provided by the "runtime_keys" option
hash< string, hash< auto > > | runtime_keys_with_handler
| subset of runtime_keys with handlers
bool | structured_input
| flag if the field descriptions were provided to the constructor More...
bool | structured_output
| flag if the field descriptions were provided to the constructor More...
*code | submapper_get
| an optional callback for retrieving a nested mapper; sig: `(string name, *hash<auto> opts) {}`
*code | template_subst
| an optional callback for substituting templated values
bool | trunc_all = False
| truncate all strings quietly / automatically to their maximum length
const | TypeMap = ...
| maps standard types to auto types to avoid type stripping
hash< string, bool > | valid_keys
| hash of valid keys

## Private Member Functions

AbstractDataProviderRecordIterator | getInputProviderRecordIterator ()
| returns a record iterator for an input provider More...

## Detailed Description

this class is a base class for mapping data; see Mapper Examples for usage examples

## Member Function Documentation

## checkMapField()

Mapper::Mapper::checkMapField | ( | string | k,
|  | reference< auto > | fh
| ) |  |

protected

perform per-field pre-processing on the passed map in the constructor

Parameters

  k | the field name
  fh | a reference to the field's value in the map; will be converted to a hash

## checkOutputBulkOperation()

Mapper::Mapper::checkOutputBulkOperation | ( |  | ) |

protected

raises an error if no output provider is present

Exceptions

  MAPPER-OUTPUT-BULK-ERROR | no output bulk operation is in progress

## checkOutputProvider()

Mapper::Mapper::checkOutputProvider | ( |  | ) |

protected

raises an error if no output provider is present

Exceptions

  MAPPER-OUTPUT-PROVIDER-ERROR | no output provider available in this mapper

## commit()

Mapper::Mapper::commit | ( |  | ) |

Commits data written to the output data provider if the output data provider supports transaction management.

Has no effect if the output data provider does not support transaction management

Exceptions

  MAPPER-OUTPUT-PROVIDER-ERROR | no output provider available in this mapper

Since
  Mapper 1.5

## constructor()

Mapper::Mapper::constructor | ( | hash< auto > | mapv,
|  | *hash< auto > | opts
| ) |  |

builds the object based on a hash providing field mappings, data constraints, and optionally custom mapping logic

Example:
  const DataMap = (
  # output field: "id" mapper from the "Id" element of any "^attributes^" hash in the input record
  "id": "^attributes^.Id",
  # output field: "name": maps from an input field with the same name (no translations are made)
  "name": True,
  # output field: "explicit_count": maps from the input "Count" field, if any value is present then it is converted to an integer
  "explicit_count": ("type": "int", "name": "Count"),
  # output field: "implicit_count": runs the given code on the input record and retuns the result, the code returns the number of "Products" sub-records
  "implicit_count": int sub (any ignored, hash rec) { return rec.Products.size(); },
  # output field: "order_date": converts the "OrderDate" string input field to a date in the specified format
  "order_date": ("name": "OrderDate", "date_format": "DD.MM.YYYY HH:mm:SS.us"),
  );
  Mapper mapv(DataMap);

Parameters

  mapv | a hash providing field mappings; each hash key is the name of the output field; each value is either True (meaning no translations are done; the data is copied 1:1) or a hash describing the mapping; see Mapper Specification Format for detailed documentation for this option
  opts | an optional hash of options for the mapper; see Mapper Options for a description of valid mapper options

Exceptions

  MAP-ERROR | the map hash has a logical error (ex: `"trunc"` key given without `"maxlen"`, invalid map key)

## discardOutput()

Mapper::Mapper::discardOutput | ( |  | ) |

Discards any buffered data in the output data provider in a bulk operation.

This method should always be called if an error occurs in a bulk output operation

Exceptions

  MAPPER-OUTPUT-BULK-ERROR | no output bulk operation is in progress

See also
  flushOutput()

Since
  Mapper 1.5

## error()

Mapper::Mapper::error | ( | string | fmt | ) |

protected

throws a `MAP-ERROR` exception; prepends the map name to the description if known

if this method is subclassed, it must also cause an exception to be thrown

## flushOutput()

Mapper::Mapper::flushOutput | ( |  | ) |

Flushes any remaining data to the output data provider in a bulk operation.

This method should always be called for successful bulk output operations with an output provider

Exceptions

  MAPPER-OUTPUT-BULK-ERROR | no output bulk operation is in progress

See also
  discardOutput()

Since
  Mapper 1.5

## getCount()

int Mapper::Mapper::getCount | ( |  | ) |

returns the internal record count

See also
  resetCount()

## getInputProviderRecordIterator()

AbstractDataProviderRecordIterator Mapper::Mapper::getInputProviderRecordIterator | ( |  | ) |

private

returns a record iterator for an input provider

Since
  Mapper 1.5

## getOutputIterator()

MapperOutputRecordIterator Mapper::Mapper::getOutputIterator | ( |  | ) |

returns an output record iterator that produces mapped data from the input data provider

Returns
  an output record iterator that produces mapped data from the input data provider

Exceptions

  MAPPER-INPUT-PROVIDER-ERROR | if no input_provider option was provided in the constructor or the input provider uses the request/response API

Since
  Mapper 1.5

## getRecListSize()

*int Mapper::Mapper::getRecListSize | ( | hash< auto > | rec | ) |

protected

For a possible hash of lists (bulk data) returns the size of the first list found within the hash. If no list if found, returns NOTHING.

Parameters

  rec | a hash representing (possible) bulk data

Returns
  NOTHING if the hash represents single input record, or the number of records represented (may also be 0)

## getRuntime()

auto Mapper::Mapper::getRuntime | ( | string | key | ) |

get current runtime option value for a key

Parameters

  key | the runtime option key

Returns
  a runtime value if the key exists in the current runtime option hash and is set

See also
  - Mapper Runtime Options
  - replaceRuntime()
  - setRuntime()

Since
  Mapper 1.1

## mapAll() [1/2]

list<hash<auto> > Mapper::Mapper::mapAll | ( | hash< auto > | recs | ) |

maps all input records and returns the mapped data as a list of output records

this method applies the mapData() method to all input records and returns the resulting list

Parameters

  recs | a hash of lists of input records

Returns
  the mapped data as a list of output records

Exceptions

  MISSING-INPUT | a field marked mandatory is missing
  STRING-TOO-LONG | a field value exceeds the maximum value and the 'trunc' key is not set
  INVALID-NUMBER | the field is marked as numeric but the input value contains non-numeric data

## mapAll() [2/2]

list<hash<auto> > Mapper::Mapper::mapAll | ( | list< auto > | recs | ) |

maps all input records and returns the mapped data as a list of output records

this method applies the mapData() method to all input records and returns the resulting list

Parameters

  recs | the list of input records

Returns
  the mapped data as a list of output records

Exceptions

  MISSING-INPUT | a field marked mandatory is missing
  STRING-TOO-LONG | a field value exceeds the maximum value and the 'trunc' key is not set
  INVALID-NUMBER | the field is marked as numeric but the input value contains non-numeric data

## mapAuto()

auto Mapper::Mapper::mapAuto | ( | auto | recs | ) |

maps all input record(s) automatically and returns the mapped data

this method applies the mapAll() method if the input records are given as list and the mapBulk() method if the input is a hash of lists. For a simple hash (one record) it calls the mapData() method.

If NOTHING is passed, then NOTHING is returned with no mapping performed

Parameters

  recs | input records (one record or more), can be represented by list or hash

Returns
  the mapped data as of output records (type depends on the given records' type)

Exceptions

  MISSING-INPUT | a field marked mandatory is missing
  STRING-TOO-LONG | a field value exceeds the maximum value and the 'trunc' key is not set
  INVALID-NUMBER | the field is marked as numeric but the input value contains non-numeric data
  MAPPER-INPUT-TYPE-ERROR | records input type is not acceptable

Since
  Mapper 1.6

## mapAutoInput()

*softlist<hash<auto> > Mapper::Mapper::mapAutoInput | ( |  | ) |

Runs the input data provider through the mapper and returns the output.

Exceptions

  MAPPER-INPUT-PROVIDER-ERROR | no input provider available in this mapper

Since
  Mapper 1.5.2

## mapBulk()

*hash<auto> Mapper::Mapper::mapBulk | ( | hash< auto > | rec,
|  | *hash< auto > | crec
| ) |  |

maps a set of records in hash of lists format; returns mapped data in a hash of lists format

Example:
  hash<auto> output = mapper.mapBulk(h);

Parameters

  rec | the input record or record set in case a hash of lists is passed
  crec | an optional simple hash of data to be added to each input row before mapping

Returns
  returns a hash of lists of mapped data

Note
  - using a hash of lists in rec; note that this provides very high performance when used with data provider output that support bulk write operations
  - in case a hash of empty lists is passed, Qore::NOTHING is returned
  - 'crec' does not affect the number of output lines; in particular, if 'rec' is a batch with `N` rows of a column `C` and 'crec = {"C": "mystring"}' then the output will be as if there was 'N' rows with `C` = "mystring" on the input.

See also
  - flushOutput()
  - discardOutput()

Exceptions

  MISSING-INPUT | a field marked mandatory is missing
  STRING-TOO-LONG | a field value exceeds the maximum value and the 'trunc' key is not set
  INVALID-NUMBER | the field is marked as numeric but the input value contains non-numeric data

## mapData()

hash<auto> Mapper::Mapper::mapData | ( | hash< auto > | rec | ) |

processes the input record and returns a hash of the mapped values where the keys in the hash returned are the target field names; the order of the fields in the hash returned is the same order as the keys in the map hash.

Parameters

  rec | the record to translate

Returns
  a hash of field values in the target format based on the input data and processed according to the logic in the map hash

Exceptions

  MISSING-INPUT | a field marked mandatory is missing
  STRING-TOO-LONG | a field value exceeds the maximum value and the 'trunc' key is not set
  INVALID-NUMBER | the field is marked as numeric but the input value contains non-numeric data

Note
  - each time this method is executed successfully, the record count is updated (see getCount() and resetCount())
  - uses mapDataIntern() to map the data, then logOutput() is called for each output row

## mapDataIntern()

hash<auto> Mapper::Mapper::mapDataIntern | ( | hash< auto > | rec,
|  | *bool | do_log_output
| ) |  |

protected

processes the input record and returns a hash of the mapped values where the keys in the hash returned are the target field names; the order of the fields in the hash returned is the same order as the keys in the map hash.

Parameters

  rec | the record to translate

Returns
  a hash of field values in the target format based on the input data and processed according to the logic in the map hash

Exceptions

  MISSING-INPUT | a field marked mandatory is missing
  STRING-TOO-LONG | a field value exceeds the maximum value and the 'trunc' key is not set
  INVALID-NUMBER | the field is marked as numeric but the input value contains non-numeric data

Note
  - each time this method is executed successfully, the record count is updated (see getCount() and resetCount())
  - this is the same as mapData() except no output logging is performed

## mapFieldIntern()

nothing Mapper::Mapper::mapFieldIntern | ( | reference< hash< auto >> | h,
|  | string | key,
|  | hash< auto > | rec,
|  | bool | do_list,
|  | int | list_size
| ) |  |

protected

maps a single field to the target

Performs the actual mapping

Parameters

  h | the hash to be updated with the mapped key/value pair; Depending on the mapper specification and the input, it can contain a bulk record (hash of lists) or a hash of both list and non-list keys (these are considered a "constants" in the output record.
  key | the column name (hash key) to be mapped (target field)
  rec | input record - either single record of hash of lists (batch); to increase performance, the input type (single record vs. batch) is determined by the do_list parameter. In case of bulk input, all the lists are supposed to have the same length list_size
  do_list | - whether the input record rec is single record or bulk format (hash of lists)
  list_size | - size of the lists in case the input is in bulk format (all lists must have the same length, asserted inside the method).

Note
  it is assumed that list_size > 0 whenever do_list is Qore::True
  if do_list == Qore::True, the 'rec' can contain a mix of lists and non-list values - the non-list values are used as constants in the mapping - as if expanded to lists with all values identical.

## optionKeys()

hash<auto> Mapper::Mapper::optionKeys | ( |  | ) |

returns a list of valid constructor options for this class (can be overridden in subclasses)

Returns
  a list of valid constructor options for this class (can be overridden in subclasses)

## replaceRuntime()

Mapper::Mapper::replaceRuntime | ( | *hash< auto > | runtime | ) |

replaces runtime options

Parameters

  runtime | a hash of runtime options to use to replace the current runtime option hash

Note
  this method cannot be called once data has been supplied to the Mapper; this method can only be used to initialize the Mapper with constant mappings before the Mapper processes any data

See also
  - Mapper Runtime Options
  - getRuntime()
  - setRuntime()

Since
  Mapper 1.1

Deprecated:
  use Mapper construction options to set the runtime options.

Exceptions

  RUNTIME-OPTION-CHANGED | the option has changed during while already processing the data.

## resetCount()

Mapper::Mapper::resetCount | ( |  | ) |

resets the internal record count

See also
  getCount()

## rollback()

Mapper::Mapper::rollback | ( |  | ) |

Rolls back data written to the output data provider.

Has no effect if the output data provider does not support transaction management

Exceptions

  MAPPER-OUTPUT-PROVIDER-ERROR | no output provider available in this mapper

Since
  Mapper 1.5

## runAutonomous()

Mapper::Mapper::runAutonomous | ( |  | ) |

Runs the input and output mappers with data providers on each end autonomously.

Exceptions

  MAPPER-INPUT-PROVIDER-ERROR | no input provider available in this mapper
  MAPPER-OUTPUT-PROVIDER-ERROR | no output provider available in this mapper

Since
  Mapper 1.5

## setNullableOutput()

Mapper::Mapper::setNullableOutput | ( |  | ) |

sets all fields in the output record as nullable

Since
  Mapper 1.5.1

## setRuntime() [1/2]

Mapper::Mapper::setRuntime | ( | hash< auto > | runtime | ) |

adds runtime options to the current runtime option hash

Parameters

  runtime | a hash of runtime options to add to the current runtime option hash

Note
  this method cannot be called once data has been supplied to the Mapper; this method can only be used to initialize the Mapper with constant mappings before the Mapper processes any data

See also
  - Mapper Runtime Options
  - replaceRuntime()
  - setRuntime()

Since
  Mapper 1.1

Deprecated:
  use Mapper construction options to set the runtime options.

Exceptions

  RUNTIME-OPTION-CHANGED | the option has changed during while already processing the data.

## setRuntime() [2/2]

Mapper::Mapper::setRuntime | ( | string | key,
|  | auto | value
| ) |  |

set the runtime option with "key" to value "value"

Parameters

  key | a string with valid runtime key
  value | anything passed to the current runtime `key`

Note
  this method cannot be called once data has been supplied to the Mapper; this method can only be used to initialize the Mapper with constant mappings before the Mapper processes any data

See also
  - Mapper Runtime Options
  - replaceRuntime()
  - setRuntime()

Since
  Mapper 1.1

Deprecated:
  use Mapper construction options to set the runtime options.

Exceptions

  RUNTIME-OPTION-CHANGED | the option has changed during while already processing the data.

## submitImpl()

Mapper::Mapper::submitImpl | ( | code | enqueue,
|  | auto | _data
| ) |  |

protected

Submits the data for processing by the mapper.

Parameters

  enqueue

  s closure taking a single arugment that enqueues the processed data for the next step in the pipeline; if no data should be processed onwards, do not call enqueue; if only one record should be processed onwards, then enqueue should be called only once; if multiple records are generated from the input data, then call it once for each generated record; prototype:
  code enqueue = sub (auto qdata) {}

  _data | the data to process

## supportsBulkApiImpl()

bool Mapper::Mapper::supportsBulkApiImpl | ( |  | ) |

protected

Returns True if the record processor supports bulk operation.

Returns
  True if the record processor supports bulk operation

## validKeys()

hash<string, bool> Mapper::Mapper::validKeys | ( |  | ) |

returns a list of valid field keys for this class (can be overridden in subclasses)

Returns
  a list of valid field keys for this class (can be overridden in subclasses)

## Member Data Documentation

## allow_dot

bool Mapper::Mapper::allow_dot = False

protected

DEPRECATED: do not assume struct when field names have a `"."` in them; instead allow input field names to have a `"."` in them.

only used when a plain hash is provided for input

Deprecated:
  use a field description for input instead

## allow_output_dot

bool Mapper::Mapper::allow_output_dot = False

protected

DEPRECATED: do not assume structured/hash output when output field names have a `"."` in them; instead allow output field names to have a `"."` in them.

only used when a plain hash is provided for output

Deprecated:
  use a field description for output instead

## m_runtime

*hash<auto> Mapper::Mapper::m_runtime

protected

current runtime values

Since
  Mapper 1.1

## mapc

hash Mapper::Mapper::mapc

protected

the hash providing output field names and mappings

note that we must strip types here

## structured_input

bool Mapper::Mapper::structured_input

protected

flag if the field descriptions were provided to the constructor

if so then allow_dot cannot be set

## structured_output

bool Mapper::Mapper::structured_output

protected

flag if the field descriptions were provided to the constructor

if so then allow_output_dot cannot be set