Difference between revisions of "Data source/VIES/data model/record/mapping/CDQ/ES/transformation"

From CDQ
Jump to navigation Jump to search
(Template parameters updated.)
 
(Template parameters updated.)
 
Line 1: Line 1:
 
{{Data model transformation
 
{{Data model transformation
 
  | data source = Data source/VIES
 
  | data source = Data source/VIES
  | transformation type = CUSTOM
+
  | transformation type = CUSTOM_TRANSFORMATION
 
  | transformation code = import json
 
  | transformation code = import json
  
Line 9: Line 9:
 
     result = {}
 
     result = {}
  
     add_if_valid(json_object, 'traderStreet', 'address.thoroughfares[0]', 'STREET', result)
+
     if 'response' in json_object:
    add_if_valid(json_object, 'traderPostcode', 'address.postCodes[0]', 'REGULAR', result)
+
        response = json_object.get('response')
    add_if_valid(json_object, 'traderCity', 'address.localities[0]', 'CITY', result)
+
        add_if_valid_for_rest_response(response, 'traderStreet', 'addresses[0].thoroughfares[0]', 'STREET', result)
 
+
        add_if_valid_for_rest_response(response, 'traderPostalCode', 'addresses[0].postCodes[0]', 'REGULAR', result)
 +
        add_if_valid_for_rest_response(response, 'traderCity', 'addresses[0].localities[0]', 'CITY', result)
 +
    else:
 +
        add_if_valid(json_object, 'traderStreet', 'addresses[0].thoroughfares[0]', 'STREET', result)
 +
        add_if_valid(json_object, 'traderPostcode', 'addresses[0].postCodes[0]', 'REGULAR', result)
 +
        add_if_valid(json_object, 'traderCity', 'addresses[0].localities[0]', 'CITY', result)
 
     return result
 
     return result
  
  
 
def add_if_valid(json_object, param, prefix, type, result):
 
def add_if_valid(json_object, param, prefix, type, result):
     if json_object['countryCode']['value'] != 'ES' or json_object[param + 'Match']['value'] == '1':
+
     if json_object.get('countryCode', {}).get('value', {}) != 'ES' or json_object.get(param + 'Match', {}).get('value', {}) == '1':
         value = json_object[param]['value']
+
         value = json_object.get(param, {}).get('value', {})
 +
        if value:
 +
            result.update({
 +
                prefix + '.type.technicalKey': type,
 +
                prefix + '.value': value
 +
            })
 +
 
 +
 
 +
def add_if_valid_for_rest_response(json_object, param, prefix, type, result):
 +
    if json_object.get(param + 'Match', {}) == 'VALID':
 +
        value = json_object.get(param, {})
 
         if value:
 
         if value:
 
             result.update({
 
             result.update({
                 prefix + '.type': type,
+
                 prefix + '.type.technicalKey': type,
 
                 prefix + '.value': value
 
                 prefix + '.value': value
 
             })
 
             })
 +
 
  | sources = Data source/VIES/data model/record/mapping/CDQ/ES
 
  | sources = Data source/VIES/data model/record/mapping/CDQ/ES
 
}}
 
}}

Latest revision as of 09:04, 23 April 2025


Part of Hierarchical relation between two concepts of the CDQ Data Model. Data source VIES
Mapping source The source of a data model mapping. VIES recordTHOROUGHFARE_VALUE, THOROUGHFARE_TYPE, POST_CODE_VALUE, POST_CODE_TYPE, LOCALITY_VALUE, LOCALITY_TYPE
Transformation type A type of a transformation applied to a data model mapping. CUSTOM_TRANSFORMATION"CUSTOM_TRANSFORMATION" is not in the list (UPPER_CASE, LOWER_CASE, CUSTOM) of allowed values for the "Has transformation type" property.
Transformation parameter A transformation parameter is an action proccessed by a data model transformation. n/a
Description Informal and comprehensive human-readable definition of a concept. n/a

Transformation code Any code (in Python, JAVA or other) that will transform values for a given data source attributes.

import json


def transform(raw_data):
    json_object = json.loads(raw_data)
    result = {}

    if 'response' in json_object:
        response = json_object.get('response')
        add_if_valid_for_rest_response(response, 'traderStreet', 'addresses[0].thoroughfares[0]', 'STREET', result)
        add_if_valid_for_rest_response(response, 'traderPostalCode', 'addresses[0].postCodes[0]', 'REGULAR', result)
        add_if_valid_for_rest_response(response, 'traderCity', 'addresses[0].localities[0]', 'CITY', result)
    else:
        add_if_valid(json_object, 'traderStreet', 'addresses[0].thoroughfares[0]', 'STREET', result)
        add_if_valid(json_object, 'traderPostcode', 'addresses[0].postCodes[0]', 'REGULAR', result)
        add_if_valid(json_object, 'traderCity', 'addresses[0].localities[0]', 'CITY', result)
    return result


def add_if_valid(json_object, param, prefix, type, result):
    if json_object.get('countryCode', {}).get('value', {}) != 'ES' or json_object.get(param + 'Match', {}).get('value', {}) == '1':
        value = json_object.get(param, {}).get('value', {})
        if value:
            result.update({
                prefix + '.type.technicalKey': type,
                prefix + '.value': value
            })


def add_if_valid_for_rest_response(json_object, param, prefix, type, result):
    if json_object.get(param + 'Match', {}) == 'VALID':
        value = json_object.get(param, {})
        if value:
            result.update({
                prefix + '.type.technicalKey': type,
                prefix + '.value': value
            })