Beispiel #1
0
    def compare(self, other, with_progress_bar=False):
        '''
        :param other: cts_core.metadata.metadata_container.MetadataContainer
        :param with_progress_bar:
        :return: cts_core.metadata.compare_result.CompareResult
        '''
        if with_progress_bar:
            entities = set(self.entities.keys())
            entities_other = set(other.entities.keys())
            num_entities = len(list(entities.union(entities_other)))

            types = set(self.types.keys())
            types_other = set(other.types.keys())
            num_types = len(list(types.union(types_other)))

            progress_bar = ProgressBar(50, num_steps=num_entities + num_types)
            progress_bar.draw()
        else:
            progress_bar = None

        cmp = Comparator()

        entities_compare_results = self.entities.compare(other.entities, progress_bar)
        types_compare_results = self.types.compare(other.types, progress_bar)

        cmp.merge_result(entities_compare_results, types_compare_results)
        return cmp
Beispiel #2
0
    def compare(self, other, progress_bar):
        '''
        :type other: cts_core.metadata.metadata_container.EntitiesContainer
        :return: int
        '''
        cmp = Comparator(level=0)

        entities = set(self.keys())
        entities_other = set(other.keys())
        all = sorted(list(entities.union(entities_other)))
        both = entities.intersection(entities_other)

        fmt = "Entity: {entity}"
        for entity in all:
            if progress_bar is not None:
                progress_bar.set_label(entity)

            if entity in both:
                cmp.merge_result(self.__getitem__(entity).compare(other.__getitem__(entity)))
            elif entity in entities:
                cmp.set_not_equal()
                cmp.message_left(fmt.format(entity=entity))
                cmp.message_right('?')
                cmp.separator()
            else:
                cmp.set_not_equal()
                cmp.message_left('?')
                cmp.message_right(fmt.format(entity=entity))
                cmp.separator()

            if progress_bar is not None:
                progress_bar.make_progress()
        return cmp
Beispiel #3
0
    def compare(self, other, progress_bar):
        '''
        :type other: cts_core.metadata.metadata_container.EntitiesContainer
        :return: int
        '''
        cmp = Comparator(level=0)

        entities = set(self.keys())
        entities_other = set(other.keys())
        all = sorted(list(entities.union(entities_other)))
        both = entities.intersection(entities_other)

        fmt = "Entity: {entity}"
        for entity in all:
            if progress_bar is not None:
                progress_bar.set_label(entity)

            if entity in both:
                cmp.merge_result(
                    self.__getitem__(entity).compare(
                        other.__getitem__(entity)))
            elif entity in entities:
                cmp.set_not_equal()
                cmp.message_left(fmt.format(entity=entity))
                cmp.message_right('?')
                cmp.separator()
            else:
                cmp.set_not_equal()
                cmp.message_left('?')
                cmp.message_right(fmt.format(entity=entity))
                cmp.separator()

            if progress_bar is not None:
                progress_bar.make_progress()
        return cmp
Beispiel #4
0
    def compare(self, other, progress_bar):
        '''
        :type other: cts_core.metadata.metadata_container.TypesContainer
        :return: cts_core.metadata.compare_result.CompareResult
        '''

        cmp = Comparator(level=0)

        types = set(self.keys())
        types_other = set(other.keys())
        all = sorted(list(types.union(types_other)))
        both = types.intersection(types_other)

        fmt = "Type: {type}"
        for type in all:
            if progress_bar is not None:
                progress_bar.set_label(type)

            if type in both:
                cmp.merge_result(self.__getitem__(type).compare(other.__getitem__(type)))
            elif type in types:
                cmp.set_not_equal()
                cmp.message_left(fmt.format(type=type))
                cmp.message_right('?')
                cmp.separator()
            else:
                cmp.set_not_equal()
                cmp.message_left('?')
                cmp.message_right(fmt.format(type=type))
                cmp.separator()

            if progress_bar is not None:
                progress_bar.make_progress()
        return cmp
Beispiel #5
0
    def compare(self, other, with_progress_bar=False):
        '''
        :param other: cts_core.metadata.metadata_container.MetadataContainer
        :param with_progress_bar:
        :return: cts_core.metadata.compare_result.CompareResult
        '''
        if with_progress_bar:
            entities = set(self.entities.keys())
            entities_other = set(other.entities.keys())
            num_entities = len(list(entities.union(entities_other)))

            types = set(self.types.keys())
            types_other = set(other.types.keys())
            num_types = len(list(types.union(types_other)))

            progress_bar = ProgressBar(50, num_steps=num_entities + num_types)
            progress_bar.draw()
        else:
            progress_bar = None

        cmp = Comparator()

        entities_compare_results = self.entities.compare(
            other.entities, progress_bar)
        types_compare_results = self.types.compare(other.types, progress_bar)

        cmp.merge_result(entities_compare_results, types_compare_results)
        return cmp
Beispiel #6
0
    def compare(self, other, progress_bar):
        '''
        :type other: cts_core.metadata.metadata_container.TypesContainer
        :return: cts_core.metadata.compare_result.CompareResult
        '''

        cmp = Comparator(level=0)

        types = set(self.keys())
        types_other = set(other.keys())
        all = sorted(list(types.union(types_other)))
        both = types.intersection(types_other)

        fmt = "Type: {type}"
        for type in all:
            if progress_bar is not None:
                progress_bar.set_label(type)

            if type in both:
                cmp.merge_result(
                    self.__getitem__(type).compare(other.__getitem__(type)))
            elif type in types:
                cmp.set_not_equal()
                cmp.message_left(fmt.format(type=type))
                cmp.message_right('?')
                cmp.separator()
            else:
                cmp.set_not_equal()
                cmp.message_left('?')
                cmp.message_right(fmt.format(type=type))
                cmp.separator()

            if progress_bar is not None:
                progress_bar.make_progress()
        return cmp
Beispiel #7
0
    def compare_annotations(self, other, level):
        """
        :type other: cts_core.metadata.model.metadata_model.MetadataModel
        :rtype: int
        """
        cmp = Comparator(level)

        annotations = set(self.annotations.keys())
        annotations_other = set(other.annotations.keys())
        all = sorted(list(annotations.union(annotations_other)))
        both = annotations.intersection(annotations_other)

        fmt = "Annotation: {name}"
        for annotation in all:
            if annotation in both:
                cmp.merge_result(self.annotations[annotation].compare(other.annotations[annotation], level))
            elif annotation in annotations:
                cmp.set_not_equal()
                cmp.message_left(fmt.format(name=annotation))
                cmp.message_right('?')
            else:
                cmp.set_not_equal()
                cmp.message_left('?')
                cmp.message_right(fmt.format(name=annotation))

        return cmp
Beispiel #8
0
    def compare_properties(self, other, level):
        """
        :type other: cts_core.metadata.model.metadata_model.MetadataModel
        :rtype: int
        """
        cmp = Comparator(level)

        properties = set(self.properties.keys())
        properties_other = set(other.properties.keys())
        all = sorted(list(properties.union(properties_other)))
        both = properties.intersection(properties_other)
        fmt = "Property: {name}"

        for property in all:
            if property in both:
                cmp.merge_result(self.properties[property].compare(other.properties[property], level))
            elif property in properties:
                cmp.set_not_equal()
                cmp.message_left(fmt.format(name=property))
                cmp.message_right('?')
            else:
                cmp.set_not_equal()
                cmp.message_left('?')
                cmp.message_right(fmt.format(name=property))
        return cmp
Beispiel #9
0
 def compare(self, other):
     """
     :type other: cts_core.metadata.model.metadata_types.complex_type.ComplexType
     :rtype: int
     """
     cmp = Comparator()
     cmp.message_both("Type: {type}".format(type=self.name))
     cmp.merge_result(
         self.compare_base_type(other, level=1),
         self.compare_properties(other, level=1),
         self.compare_annotations(other, level=1),
         self.compare_dynamic_property_patterns(other, level=1))
     cmp.separator()
     return cmp
Beispiel #10
0
 def compare(self, other):
     """
     :type other: cts_core.metadata.model.entity.Entity
     :rtype: int
     """
     cmp = Comparator(level=0)
     cmp.message_both("Entity: {entity}".format(entity=self.name))
     cmp.merge_result(
         self.compare_base_type(other, level=1),
         self.compare_properties(other, level=1),
         self.compare_annotations(other, level=1),
         self.compare_dynamic_property_patterns(other, level=1))
     cmp.separator()
     return cmp
Beispiel #11
0
 def compare(self, other):
     """
     :type other: cts_core.metadata.model.entity.Entity
     :rtype: int
     """
     cmp = Comparator(level=0)
     cmp.message_both("Entity: {entity}".format(entity=self.name))
     cmp.merge_result(
         self.compare_base_type(other, level=1),
         self.compare_properties(other, level=1),
         self.compare_annotations(other, level=1),
         self.compare_dynamic_property_patterns(other, level=1))
     cmp.separator()
     return cmp
Beispiel #12
0
 def compare(self, other, level):
     """
     :type other: cts_core.metadata.model.property.Property
     :rtype: int
     """
     cmp = Comparator(level)
     cmp.message_both("Property: {name}".format(name=self.name))
     return cmp.merge_result(self.compare_type(other, level + 1),
                             self.compare_nullable(other, level + 1),
                             self.compare_is_required(other, level + 1),
                             self.compare_patch_status(other, level + 1),
                             self.compare_annotations(other, level + 1))