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
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
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
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
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
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
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
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
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
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
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
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))