Ejemplo n.º 1
0
    def to_data(instance: CdmTypeAttributeDefinition, ctx: CdmCorpusContext, res_opt: ResolveOptions, options: CopyOptions) -> TypeAttribute:
        properties = TypeAttributePersistence.create_properties(instance, res_opt, options)
        origin_data_type_name = TypeInfo(
        type_name = '',
        properties = properties,
        is_complex_type = False,
        is_nullable = instance._get_property('isNullable'),
        type_family = 'cdm')

        t2pm = TraitToPropertyMap(instance)
        numeric_traits = t2pm._fetch_trait_reference('is.data_format.numeric.shaped')
        if numeric_traits is not None:
            for numeric_traits_arg in numeric_traits.argument:
                if numeric_traits_arg.name == 'precision':
                    origin_data_type_name.precision = numeric_traits_arg.value
                if numeric_traits_arg.Name == 'scale':
                    origin_data_type_name.scale = numeric_traits_arg.value

        data_format = instance._get_property('dataFormat')
        origin_data_type_name = utils.cdm_data_format_to_syms_data_type(data_format, origin_data_type_name)
        if origin_data_type_name == None:
            return None
        if origin_data_type_name.type_name == None:
            logger.error(ctx, _TAG, 'toData', instance.at_corpus_path, CdmLogCode.ERR_PERSIST_SYMS_UNKNOWN_DATA_FORMAT,
                             instance.display_name)
            return None

        data_col = DataColumn(
        origin_data_type_name = origin_data_type_name,
        name = instance.name)
        return data_col
Ejemplo n.º 2
0
    def create_properties(instance: CdmTypeAttributeDefinition, res_opt: ResolveOptions, options: CopyOptions):
        properties = {}
    
        display_name = instance._get_property('display_name')
        source_name = instance._get_property('source_name')
        description = instance._get_property('description')
        is_read_only = instance._get_property('isReadOnly')
        maximum_length = instance._get_property('maximum_length')
        maximum_value = instance._get_property('maximum_value')
        minimum_value = instance._get_property('minimum_value')
        source_ordering = instance._get_property('source_ordering')
        value_constrained_to_list = instance._get_property('value_constrained_to_list')
        is_primary_key = instance._get_property('is_primary_key')
        def_value = instance._get_property('defaultValue')

        if display_name is not None:
            properties['cdm:display_name'] = display_name

        if instance.explanation is not None:
            properties['cdm:explanation'] = instance.explanation

        if source_name is not None:
            properties['cdm:source_name'] = source_name

        if description is not None:
            properties['cdm:description'] = description

        if instance.applied_traits is not None and len(instance.applied_traits) > 0:
            applied_traits = \
                [trait for trait in instance.applied_traits
                 if isinstance(trait, CdmTraitGroupReference) or not trait.is_from_property] \
                    if instance.applied_traits else None
            properties['cdm:traits'] = copy_data_utils._array_copy_data(res_opt, applied_traits, options)
                       
        if is_read_only is not None:
            properties['cdm:isReadOnly'] = is_read_only
        
        if maximum_length is not None:
            properties['cdm:maximumLength'] = maximum_length
        
        if maximum_value is not None:
            properties['cdm:maximumValue'] = maximum_value
        
        if minimum_value is not None:
            properties['cdm:minimumValue'] = minimum_value

        if source_ordering is not None and source_ordering != 0:
            properties['cdm:sourceOrdering'] = source_ordering

        if value_constrained_to_list is not None:
            properties['cdm:valueConstrainedToList'] = value_constrained_to_list

        if is_primary_key is not None:
            properties['cdm:isPrimaryKey'] = is_primary_key

        if def_value is not None:
            properties['cdm:defaultValue'] = def_value

        return properties
Ejemplo n.º 3
0
    def to_data(instance: CdmTypeAttributeDefinition, res_opt: ResolveOptions,
                options: CopyOptions) -> TypeAttribute:
        if instance is None:
            return None

        applied_traits = \
            [trait for trait in instance.applied_traits if not trait.is_from_property] \
            if instance.applied_traits else None

        data = TypeAttribute()
        data.explanation = instance.explanation
        data.purpose = PurposeReferencePersistence.to_data(
            instance.purpose, res_opt, options) if instance.purpose else None
        data.dataType = DataTypeReferencePersistence.to_data(
            instance.data_type, res_opt,
            options) if instance.data_type else None
        data.name = instance.name
        data.appliedTraits = copy_data_utils._array_copy_data(
            res_opt, applied_traits, options)
        data.resolutionGuidance = AttributeResolutionGuidancePersistence.to_data(
            instance.resolution_guidance, res_opt,
            options) if instance.resolution_guidance else None
        data.projection = ProjectionPersistence.to_data(
            instance.projection, res_opt, options)
        data.attributeContext = AttributeContextReferencePersistence.to_data(
            instance.attribute_context, res_opt,
            options) if instance.attribute_context else None

        is_read_only = instance._get_property('isReadOnly')
        if is_read_only:
            data.isReadOnly = is_read_only

        is_nullable = instance._get_property('isNullable')
        if is_nullable:
            data.isNullable = is_nullable

        data.sourceName = instance._get_property('sourceName')

        source_ordering = instance._get_property('sourceOrdering')
        if source_ordering:
            data.sourceOrdering = source_ordering

        data.displayName = instance._get_property('displayName')
        data.description = instance._get_property('description')

        value_constrained_to_list = instance._get_property(
            'valueConstrainedToList')
        if value_constrained_to_list:
            data.valueConstrainedToList = value_constrained_to_list

        is_primary_key = instance._get_property('isPrimaryKey')
        if is_primary_key:
            data.isPrimaryKey = is_primary_key

        data.maximumLength = instance._get_property('maximumLength')
        data.maximumValue = instance._get_property('maximumValue')
        data.minimumValue = instance._get_property('minimumValue')

        data_format = instance._get_property('dataFormat')
        if data_format != CdmDataFormat.UNKNOWN:
            data.dataFormat = data_format.value

        default_value = instance._get_property('defaultValue')
        if default_value:
            data.defaultValue = default_value

        return data