def to_data(instance: CdmLocalEntityDeclarationDefinition,
                res_opt: 'ResolveOptions', options: 'CopyOptions'):
        local_entity = LocalEntityDeclaration()

        local_entity.entityName = instance.entity_name
        local_entity.explanation = instance.explanation
        local_entity.entityPath = instance.entity_path
        local_entity.lastFileStatusCheckTime = time_utils._get_formatted_date_string(
            instance.last_file_status_check_time)
        local_entity.lastFileModifiedTime = time_utils._get_formatted_date_string(
            instance.last_file_modified_time)
        local_entity.lastChildFileModifiedTime = time_utils._get_formatted_date_string(
            instance.last_child_file_modified_time)
        local_entity.exhibitsTraits = copy_data_utils._array_copy_data(
            res_opt, instance.exhibits_traits, options)
        local_entity.dataPartitions = copy_data_utils._array_copy_data(
            res_opt, instance.data_partitions, options,
            LocalEntityDeclarationPersistence.ensure_non_incremental(instance))
        local_entity.dataPartitionPatterns = copy_data_utils._array_copy_data(
            res_opt, instance.data_partition_patterns, options,
            LocalEntityDeclarationPersistence.ensure_non_incremental(instance))
        local_entity.incrementalPartitions = copy_data_utils._array_copy_data(
            res_opt, instance.incremental_partitions, options,
            LocalEntityDeclarationPersistence.ensure_incremental(instance))
        local_entity.incrementalPartitionPatterns = copy_data_utils._array_copy_data(
            res_opt, instance.incremental_partition_patterns, options,
            LocalEntityDeclarationPersistence.ensure_incremental(instance))

        return local_entity
Esempio n. 2
0
    def create_database_propertybags(instance: CdmManifestDefinition, res_opt: ResolveOptions, options: CopyOptions):
        properties = {}
        last_file_status_check_time = time_utils._get_formatted_date_string(instance.last_file_status_check_time)
        last_file_modified_time = time_utils._get_formatted_date_string(instance.last_file_modified_time)
        last_child_file_modified_time = time_utils._get_formatted_date_string(instance.last_child_file_modified_time)

        if last_file_status_check_time is not None:
            properties["cdm:lastFileStatusCheckTime"] = last_file_status_check_time

        if last_file_modified_time is not None:
            properties["cdm:lastFileModifiedTime"] = last_file_modified_time

        if last_child_file_modified_time is not None:
            properties["cdm:lastChildFileModifiedTime"] = last_child_file_modified_time

        if instance.schema is not None:
            properties["cdm:schema"] = instance.schema

        if instance.document_version is not None:
            properties["cdm:documentVersion"] = instance.document_version

        if instance.json_schema_semantic_version is not None:
            properties["cdm:jsonSchemaSemanticVersion"] = instance.json_schema_semantic_version

        if instance.imports is not None and len(instance.imports) > 0:
            properties["cdm:imports"] = copy_data_utils._array_copy_data(res_opt, instance.imports, options)

        if instance.exhibits_traits is not None and len(instance.exhibits_traits) > 0:
            properties["cdm:traits"] = copy_data_utils._array_copy_data(res_opt, instance.exhibits_traits, options)

        return properties
Esempio n. 3
0
    def to_data(instance: CdmEntityDefinition, res_opt: ResolveOptions,
                options: CopyOptions) -> Entity:
        exhibits_traits = [
            trait for trait in instance.exhibits_traits
            if not trait.is_from_property
        ]

        data = Entity()
        data.explanation = instance.explanation
        data.entityName = instance.entity_name
        data.extendsEntity = EntityReferencePersistence.to_data(
            instance.extends_entity, res_opt,
            options) if instance.extends_entity else None
        data.ExtendsEntityResolutionGuidance = AttributeResolutionGuidancePersistence.to_data(
            instance.extends_entity_resolution_guidance, res_opt,
            options) if instance.extends_entity_resolution_guidance else None
        data.exhibitsTraits = copy_data_utils._array_copy_data(
            res_opt, exhibits_traits, options)
        data.sourceName = instance._fetch_property('sourceName')
        data.displayName = instance._fetch_property('displayName')
        data.description = instance._fetch_property('description')
        data.version = instance._fetch_property('version')
        data.cdmSchemas = instance._fetch_property('cdmSchemas')
        data.attributeContext = AttributeContextPersistence.to_data(
            instance.attribute_context, res_opt,
            options) if instance.attribute_context else None

        # After the properties so they show up first in doc
        data.hasAttributes = copy_data_utils._array_copy_data(
            res_opt, instance.attributes, options)

        return data
Esempio n. 4
0
    def to_data(instance: CdmAttributeContext, res_opt: ResolveOptions,
                options: CopyOptions) -> AttributeContext:
        result = AttributeContext()

        exhibits_traits = [
            trait for trait in instance.exhibits_traits
            if not trait.is_from_property
        ]

        result.explanation = instance.explanation
        result.name = instance.name
        result.type = map_enum_to_type_name[instance.type]
        result.parent = AttributeContextReferencePersistence.to_data(
            instance.parent, res_opt,
            options) if instance.parent is not None else None
        result.definition = PersistenceLayer.to_data(
            instance.definition, res_opt, options, PersistenceLayer.CDM_FOLDER
        ) if instance.definition is not None else None
        # I know the trait collection names look wrong. but I wanted to use the def baseclass
        result.appliedTraits = copy_data_utils._array_copy_data(
            res_opt, exhibits_traits, options)
        result.contents = copy_data_utils._array_copy_data(
            res_opt, instance.contents, options)

        return result
    def to_data(instance: CdmManifestDefinition, res_opt: ResolveOptions,
                options: CopyOptions) -> ManifestContent:
        manifest = ManifestContent()

        manifest.manifestName = instance.manifest_name
        manifest.schema = instance.schema
        manifest.jsonSchemaSemanticVersion = instance.json_schema_semantic_version
        manifest.documentVersion = instance.document_version
        manifest.lastFileStatusCheckTime = time_utils._get_formatted_date_string(
            instance.last_file_status_check_time)
        manifest.lastFileModifiedTime = time_utils._get_formatted_date_string(
            instance.last_file_modified_time)
        manifest.lastChildFileModifiedTime = time_utils._get_formatted_date_string(
            instance.last_child_file_modified_time)
        manifest.explanation = instance.explanation
        manifest.exhibitsTraits = copy_data_utils._array_copy_data(
            res_opt, instance.exhibits_traits, options)
        manifest.entities = copy_data_utils._array_copy_data(
            res_opt, instance.entities, options)
        manifest.subManifests = copy_data_utils._array_copy_data(
            res_opt, instance.sub_manifests, options)
        manifest.imports = copy_data_utils._array_copy_data(
            res_opt, instance.imports, options)
        manifest.relationships = copy_data_utils._array_copy_data(
            res_opt, instance.relationships, options)

        return manifest
Esempio n. 6
0
 def to_data(instance: CdmDocumentDefinition, res_opt: ResolveOptions, options: CopyOptions) -> DocumentContent:
     result = DocumentContent()
     result.schema = instance.schema
     result.jsonSchemaSemanticVersion = instance.json_schema_semantic_version
     result.imports = copy_data_utils._array_copy_data(res_opt, instance.imports, options)
     result.definitions = copy_data_utils._array_copy_data(res_opt, instance.definitions, options)
     result.documentVersion = instance.document_version
     return result
 def to_data(instance: CdmAttributeGroupDefinition, res_opt: ResolveOptions,
             options: CopyOptions) -> Optional[AttributeGroup]:
     result = AttributeGroup()
     result.explanation = instance.explanation
     result.attributeGroupName = instance.attribute_group_name
     result.exhibitsTraits = copy_data_utils._array_copy_data(
         res_opt, instance.exhibits_traits, options)
     result.attributeContext = AttributeContextReferencePersistence.to_data(
         instance.attribute_context, res_opt,
         options) if instance.attribute_context else None
     result.members = copy_data_utils._array_copy_data(
         res_opt, instance.members, options)
     return result
    async def to_data(instance: 'CdmTypeAttributeDefinition',
                      res_opt: 'ResolveOptions',
                      options: 'CopyOptions') -> 'Attribute':
        applied_traits = \
            [trait for trait in instance.applied_traits if not trait.is_from_property] \
            if instance.applied_traits else None
        result = Attribute()

        result.name = instance.name
        description = instance._fetch_property('description')
        if description:
            result.description = description
        result.dataType = TypeAttributePersistence._data_type_to_data(
            instance.data_format)
        result.traits = copy_data_utils._array_copy_data(
            res_opt, applied_traits, options)

        await utils.process_annotations_to_data(instance.ctx, result,
                                                instance.applied_traits)

        t2pm = TraitToPropertyMap(instance)

        result.isHidden = bool(
            t2pm._fetch_trait_reference('is.hidden')) or None

        return result
Esempio n. 9
0
    def _copy_ref_data(instance: CdmObjectReference, res_opt: ResolveOptions,
                       copy: CdmJsonType, ref_to: CdmJsonType, options: CopyOptions) -> Optional[CdmJsonType]:

        if instance.object_type == CdmObjectType.ATTRIBUTE_GROUP_REF:
            copy = AttributeGroupReference()
            copy.attributeGroupReference = ref_to
            return copy
        elif instance.object_type == CdmObjectType.DATA_TYPE_REF:
            copy = DataTypeReference()
            copy.dataTypeReference = ref_to
            return copy
        elif instance.object_type == CdmObjectType.ENTITY_REF:
            copy = EntityReference()
            copy.entityReference = ref_to
            return copy
        elif instance.object_type == CdmObjectType.PURPOSE_REF:
            copy = PurposeReference()
            copy.purposeReference = ref_to
            return copy
        elif instance.object_type == CdmObjectType.TRAIT_REF:
            copy = TraitReference()
            copy.traitReference = ref_to
            copy.arguments = copy_data_utils._array_copy_data(res_opt, instance.arguments, options)
            return copy
        elif instance.object_type == CdmObjectType.TRAIT_GROUP_REF:
            copy = TraitGroupReference()
            copy.traitGroupReference = ref_to
            return copy
        else:
            return None
Esempio n. 10
0
    def to_data(instance: CdmObjectReference, res_opt: ResolveOptions, options: CopyOptions) -> CdmJsonType:
        # We don't know what object we are creating to initialize to any
        copy = None
        replace = None

        if instance.named_reference:
            identifier = utils.copy_identifier_ref(instance, res_opt, options)
            if instance.simple_named_reference:
                return identifier

            replace = CdmObjectRefPersistence._copy_ref_data(instance, res_opt, copy, identifier, options)

            if replace:
                copy = replace

        elif instance.explicit_reference:
            er_copy = PersistenceLayer.to_data(instance.explicit_reference, res_opt, options, PersistenceLayer.CDM_FOLDER)
            replace = CdmObjectRefPersistence._copy_ref_data(instance, res_opt, copy, er_copy, options)

            if replace:
                copy = replace

        if instance.optional is not None:
            copy.optional = instance.optional

        if instance.applied_traits:
            # We don't know if the object we are copying has applied traits or not and hence use any
            copy.appliedTraits = copy_data_utils._array_copy_data(res_opt, instance.applied_traits, options)

        return copy
Esempio n. 11
0
    def create_table_propertybags(instance: CdmLocalEntityDeclarationDefinition, res_opt: ResolveOptions, options: CopyOptions, properties):
        if properties == None:
            properties = {}

        if instance.entity_path is not None:
            path_tuple = StorageUtils.split_namespace_path(instance.entity_path)
            if path_tuple == None:
                logger.error(instance.ctx, _TAG, LocalEntityDeclarationPersistence.create_table_propertybags.__name__, instance.at_corpus_path, CdmLogCode.ERR_PERSIST_SYMS_ENTITY_PATH_NULL, instance.entity_name)
                return None
            properties['cdm:entityPath'] = path_tuple[1]

        t2pm = TraitToPropertyMap(instance)
        is_hidden_trait = t2pm._fetch_trait_reference('is.hidden')

        if not 'cdm:description' in properties:
            properties['cdm:description'] = instance.explanation

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

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

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

        if is_hidden_trait is not None:
            properties['cdm:isHidden'] = True

        if instance.exhibits_traits is not None and len(instance.exhibits_traits) > 0:
            properties['cdm:entityDecTraits'] = copy_data_utils._array_copy_data(res_opt, instance.exhibits_traits, options)
           
        return properties
Esempio n. 12
0
    def to_data(ctx: CdmCorpusContext, doc: CdmDocumentDefinition,
                current_table_properties: TableProperties,
                res_opt: ResolveOptions, options: CopyOptions) -> TableEntity:
        if current_table_properties == None:
            return None

        if len(doc.definitions) == 0 or len(doc.definitions) > 1:
            logger.error(
                ctx, _TAG, 'to_data', doc.at_corpus_path,
                CdmLogCode.ERR_PERSIST_SYMS_MULTIPLE_OR_ZERO_TABLE_DEFINITION,
                doc.name)
            return None
        if isinstance(doc.definitions[0], CdmEntityDefinition):
            cdm_entity = doc.definitions[0]
            table_entity = EntityPersistence.to_data(cdm_entity, ctx, res_opt,
                                                     options)
            te_properties = table_entity.properties
            if cdm_entity.owner is not None and isinstance(
                    cdm_entity.owner, CdmDocumentDefinition):
                document = cdm_entity.owner
                if len(document.imports) > 0:
                    imports = copy_data_utils._array_copy_data(
                        res_opt, document.imports, options)
                    te_properties.properties["cdm:imports"] = imports

            te_properties.namespace = current_table_properties.namespace
            te_properties.storage_descriptor.source = current_table_properties.storage_descriptor.source
            te_properties.storage_descriptor.format = current_table_properties.storage_descriptor.format
            te_properties.partitioning = current_table_properties.partitioning

            table_entity.properties = te_properties
            return table_entity
        return None
Esempio n. 13
0
    def to_data(instance: 'CdmDataPartitionDefinition',
                res_opt: 'ResolveOptions',
                options: 'CopyOptions') -> 'DataPartition':
        data_partition = DataPartition()

        data_partition.location = instance.location
        data_partition.name = instance.name
        data_partition.specializedSchema = instance.specialized_schema
        data_partition.lastFileStatusCheckTime = time_utils._get_formatted_date_string(
            instance.last_file_status_check_time)
        data_partition.lastFileModifiedTime = time_utils._get_formatted_date_string(
            instance.last_file_modified_time)
        data_partition.exhibitsTraits = copy_data_utils._array_copy_data(
            res_opt, instance.exhibits_traits, options)

        arguments = []
        if instance.arguments:
            for argument_name, argument_list in instance.arguments.items():
                for argument_value in argument_list:
                    argument = Argument()
                    argument.name = argument_name
                    argument.value = argument_value
                    arguments.append(argument)

        if len(arguments) > 0:
            data_partition.arguments = arguments

        return data_partition
Esempio n. 14
0
    def to_data(instance: CdmTraitDefinition, res_opt: ResolveOptions,
                options: CopyOptions) -> Trait:
        from .trait_reference_persistence import TraitReferencePersistence

        result = Trait()
        result.traitName = instance.trait_name
        result.extendsTrait = TraitReferencePersistence.to_data(
            instance.extends_trait, res_opt,
            options) if instance.extends_trait else None
        result.hasParameters = copy_data_utils._array_copy_data(
            res_opt, instance.parameters, options)

        if instance.associated_properties:
            result.associatedProperties = instance.associated_properties

        if instance.elevated:
            result.elevated = instance.elevated

        if instance.explanation:
            result.explanation = instance.explanation

        if instance.ugly:
            result.ugly = instance.ugly

        return result
Esempio n. 15
0
    def to_data(instance: CdmEntityAttributeDefinition,
                res_opt: ResolveOptions,
                options: CopyOptions) -> EntityAttribute:
        entity = EntityReferencePersistence.to_data(
            instance.entity, res_opt, options) if instance.entity else None

        applied_traits = [
            trait for trait in instance.applied_traits
            if isinstance(trait, CdmTraitGroupReference)
            or not trait.is_from_property
        ]

        entity_attribute = EntityAttribute()
        entity_attribute.name = instance.name
        entity_attribute.description = instance.description
        entity_attribute.displayName = instance.display_name
        entity_attribute.explanation = instance.explanation
        entity_attribute.isPolymorphicSource = instance.is_polymorphic_source
        entity_attribute.purpose = PurposeReferencePersistence.to_data(
            instance.purpose, res_opt, options) if instance.purpose else None
        entity_attribute.entity = entity
        entity_attribute.appliedTraits = copy_data_utils._array_copy_data(
            res_opt, applied_traits, options)
        entity_attribute.resolutionGuidance = AttributeResolutionGuidancePersistence.to_data(
            instance.resolution_guidance, res_opt,
            options) if instance.resolution_guidance else None

        return entity_attribute
Esempio n. 16
0
 def to_data(instance: CdmDataTypeDefinition, res_opt: ResolveOptions, options: CopyOptions) -> DataType:
     result = DataType()
     result.explanation = instance.explanation
     result.dataTypeName = instance.data_type_name
     result.extendsDataType = DataTypeReferencePersistence.to_data(instance.extends_data_type, res_opt, options) if instance.extends_data_type else None
     result.exhibitsTraits = copy_data_utils._array_copy_data(res_opt, instance.exhibits_traits, options)
     return result
Esempio n. 17
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
Esempio n. 18
0
    def to_data(instance: CdmPurposeDefinition, res_opt: ResolveOptions, options: CopyOptions) -> Purpose:
        from .purpose_reference_persistence import PurposeReferencePersistence

        result = Purpose()
        result.explanation = instance.explanation
        result.purposeName = instance.purpose_name
        result.extendsPurpose = PurposeReferencePersistence.to_data(instance.extends_purpose, res_opt, options) if instance.extends_purpose else None
        result.exhibitsTraits = copy_data_utils._array_copy_data(res_opt, instance.exhibits_traits, options)
        return result
Esempio n. 19
0
    def to_data(instance: CdmTraitGroupDefinition, res_opt: ResolveOptions,
                options: CopyOptions) -> TraitGroup:
        result = TraitGroup()
        result.traitName = instance.trait_group_name

        if instance.explanation:
            result.explanation = instance.explanation

        result.exhibitsTraits = copy_data_utils._array_copy_data(
            res_opt, instance.exhibits_traits, options)

        return result
    def to_data(instance: 'CdmE2ERelationship', res_opt: ResolveOptions,
                options: CopyOptions) -> E2ERelationship:
        relationship = E2ERelationship()
        if not StringUtils.is_null_or_white_space(instance.relationship_name):
            relationship.name = instance.relationship_name
        relationship.fromEntity = instance.from_entity
        relationship.fromEntityAttribute = instance.from_entity_attribute
        relationship.toEntity = instance.to_entity
        relationship.toEntityAttribute = instance.to_entity_attribute
        relationship.exhibitsTraits = copy_data_utils._array_copy_data(
            res_opt, instance.exhibits_traits, options)

        return relationship
    def to_data(instance: CdmReferencedEntityDeclarationDefinition,
                res_opt: ResolveOptions,
                options: CopyOptions) -> ReferencedEntityDeclaration:
        data = ReferencedEntityDeclaration()

        data.entityName = instance.entity_name
        data.explanation = instance.explanation
        data.lastFileStatusCheckTime = time_utils._get_formatted_date_string(
            instance.last_file_status_check_time)
        data.lastFileModifiedTime = time_utils._get_formatted_date_string(
            instance.last_file_modified_time)
        data.entityPath = instance.entity_path
        data.exhibitsTraits = copy_data_utils._array_copy_data(
            res_opt, instance.exhibits_traits, options)

        return data
    def to_data(instance: 'CdmDataPartitionDefinition',
                obj: 'StorageDescriptor', res_opt: 'ResolveOptions',
                options: 'CopyOptions') -> 'StorageDescriptor':
        obj.properties = {}

        if instance.name is not None:
            obj.properties['cdm:name'] = instance.name
        if instance.last_file_status_check_time is not None:
            obj.properties[
                'cdm:lastFileStatusCheckTime'] = time_utils._get_formatted_date_string(
                    instance.last_file_status_check_time)
        if instance.last_file_modified_time is not None:
            obj.properties[
                'cdm:lastFileModifiedTime'] = time_utils._get_formatted_date_string(
                    instance.last_file_modified_time)
        if instance.exhibits_traits is not None:
            tpm = TraitToPropertyMap(instance)
            csv_trait = tpm._fetch_trait_reference('is.partition.format.CSV')
            if csv_trait is not None:
                instance.exhibits_traits.remove('is.partition.format.CSV')
            if len(instance.exhibits_traits) > 0:
                obj.properties[
                    'cdm:traits'] = copy_data_utils._array_copy_data(
                        res_opt, instance.exhibits_traits, options)
            if csv_trait is not None:
                instance.exhibits_traits.append(csv_trait)

        properties = DataPartitionPersistence.fill_property_bag_from_csv_trait(
            instance)

        if properties is not None:
            obj.format = FormatInfo(
                input_format=InputFormat.
                orgapachehadoopmapred_sequence_file_input_format,
                output_format=OutputFormat.
                orgapachehadoophiveqlio_hive_sequence_file_output_format,
                serialize_lib=SerializeLib.
                orgapachehadoophiveserde2lazy_lazy_simple_ser_de,
                format_type=FormatType.csv,
                properties=properties)
        else:
            #error
            return None

        return obj
Esempio n. 23
0
    def to_data(instance: CdmDataPartitionPatternDefinition,
                res_opt: ResolveOptions,
                options: CopyOptions) -> DataPartitionPattern:
        data = DataPartitionPattern()

        data.name = instance.name
        data.lastFileStatusCheckTime = time_utils._get_formatted_date_string(
            instance.last_file_status_check_time)
        data.lastFileModifiedTime = time_utils._get_formatted_date_string(
            instance.last_file_modified_time)
        data.explanation = instance.explanation
        data.rootLocation = instance.root_location
        data.regularExpression = instance.regular_expression
        data.parameters = instance.parameters
        data.specializedSchema = instance.specialized_schema
        data.exhibitsTraits = copy_data_utils._array_copy_data(
            res_opt, instance.exhibits_traits, options)

        return data
    def to_data(instance: CdmEntityAttributeDefinition,
                res_opt: ResolveOptions,
                options: CopyOptions) -> EntityAttribute:
        entity = EntityReferencePersistence.to_data(
            instance.entity, res_opt, options) if instance.entity else None

        entity_attribute = EntityAttribute()
        entity_attribute.explanation = instance.explanation
        entity_attribute.name = instance.name
        entity_attribute.purpose = PurposeReferencePersistence.to_data(
            instance.purpose, res_opt, options) if instance.purpose else None
        entity_attribute.entity = entity
        entity_attribute.appliedTraits = copy_data_utils._array_copy_data(
            res_opt, instance.applied_traits, options)
        entity_attribute.resolutionGuidance = AttributeResolutionGuidancePersistence.to_data(
            instance.resolution_guidance, res_opt,
            options) if instance.resolution_guidance else None

        return entity_attribute
Esempio n. 25
0
    def create_table_propertybags(instance: CdmEntityDefinition, res_opt: ResolveOptions, options: CopyOptions):
        properties = {}

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

        if instance.source_name is not None:
            properties["cdm:sourceName"] = instance.source_name

        if instance.display_name is not None:
            properties["cdm:displayName"] = instance.display_name

        if instance.description is not None:
            properties["cdm:description"] = instance.description

        if instance.exhibits_traits is not None and len(instance.exhibits_traits) > 0:
            properties["cdm:traits"] = copy_data_utils._array_copy_data(res_opt, instance.exhibits_traits, options)

        return properties
Esempio n. 26
0
    def to_data(instance: 'CdmE2ERelationship',
                dbname: str,
                res_opt: ResolveOptions,
                options: CopyOptions,
                relationship=None) -> RelationshipEntity:
        properties = {}
        if instance.exhibits_traits is not None and len(
                instance.exhibits_traits) > 0:
            properties[
                "cdm:exhibitsTraits"] = copy_data_utils._array_copy_data(
                    res_opt, instance.exhibits_traits, options)

        ns = Namespace(dbname)
        column_relationship_informations = []
        col_info = ColumnRelationshipInformation(
            from_column_name=instance.from_entity_attribute,
            to_column_name=instance.to_entity_attribute)
        column_relationship_informations.append(col_info)

        relationship_properties = RelationshipProperties(
            namespace=ns,
            from_table_name=utils.extract_table_name_from_entity_path(
                instance.from_entity),
            to_table_name=utils.extract_table_name_from_entity_path(
                instance.to_entity),
            properties=properties,
            publish_status=PublishStatus.published,
            relationship_type=RelationshipType.manytoone,
            column_relationship_informations=column_relationship_informations)

        relationship_name = instance.name
        if StringUtils.is_blank_by_cdm_standard(instance.name):
            relationship_name = "{}_{}_relationship".format(
                relationship_properties.from_table_name,
                relationship_properties.to_table_name)

        rel = RelationshipEntity(name=relationship_name,
                                 properties=relationship_properties,
                                 type=SASEntityType.relationship)
        return rel
Esempio n. 27
0
    async def to_data_async(document_object_or_path,
                            manifest: CdmManifestDefinition,
                            ctx: CdmCorpusContext, res_opt: ResolveOptions,
                            options: CopyOptions) -> TableEntity:
        if isinstance(document_object_or_path, str):
            obje = await ctx.corpus.fetch_object_async(document_object_or_path,
                                                       manifest)
            if isinstance(obje, CdmEntityDefinition):
                cdm_entity = obje
                table_entity = EntityPersistence.to_data(
                    cdm_entity, ctx, res_opt, options)
                te_properties = table_entity.properties
                te_properties.namespace = TableNamespace(
                    manifest.manifest_name)

                if cdm_entity.owner is not None and isinstance(
                        cdm_entity.owner, CdmDocumentDefinition):
                    document = cdm_entity.owner
                    if len(document.imports) > 0:
                        imports = copy_data_utils._array_copy_data(
                            res_opt, document.imports, options)
                        te_properties.properties["cdm:imports"] = imports
                else:
                    logger.warning(ctx, _TAG, 'to_data_async',
                                   manifest.at_corpus_path,
                                   CdmLogCode.WARN_PERSIST_SYMS_ENTITY_MISIING,
                                   cdm_entity.name)

                return table_entity
            else:
                logger.error(ctx, _TAG, 'to_data_async',
                             manifest.at_corpus_path,
                             CdmLogCode.ERR_PERSIST_SYMS_ENTITY_FETCH_ERROR,
                             document_object_or_path)
                return None
        return None
Esempio n. 28
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