def property(self, source, target): """Create property. """ if isprofilemember(source): return if source.attributes.get('association', None) is not None: return if 'type' in source.attributes.keys(): typedef = source.refindex[source.attributes['type']] tok = token('sourcetotargetuuidmapping', False) type = target.anchor.node(tok.uuids[typedef.uuid]) else: try: name = source['type'].attributes['href'] except KeyError: raise ValueError,'Property "%s" in class "%s" has no datatype!' % \ (source.element.get('name'),source.parent.element.get('name')) name = name[name.rfind('#') + 1:] tok = token('primitivetypemapping', False) type = target.anchor.node(tok.types[name]) property = Property() assignxmiprops(property,source) property.type = type target.anchor[source.attributes['name']] = property target.finalize(source, property)
def operation(self, source, target): """Create operation. """ operation = Operation() assignxmiprops(operation,source) target.anchor[source.attributes['name']] = operation target.finalize(source, operation)
def ownedend(self, source, target): """Create owned end. """ if isprofilemember(source): return oe_source = source.refindex[source.attributes['association']] tok = token('sourcetotargetuuidmapping', False) associationuuid = tok.uuids[oe_source.uuid] association = target.anchor.node(associationuuid) associationend = AssociationEnd() assignxmiprops(associationend,source) associationend.association = association # XXX: we the private uuid listing pointing to member ends. could # be simlified, read node.ext.uml.classes for details association._memberEnds.append(associationend.uuid) cla_source = source.refindex[source.attributes['type']] classuuid = tok.uuids[cla_source.uuid] associationend.type = target.anchor.node(classuuid) uppervalue = source['upperValue'].attributes['value'] if source.has_key('uppervalue') else '*' if uppervalue == '*': uppervalue = INFINITE else: uppervalue = int(uppervalue) associationend.uppervalue = uppervalue lowervalue = source['lowerValue'].attributes.get('value', '*') if source.has_key('lowervalue') else 1 if lowervalue == '*': lowervalue = INFINITE else: lowervalue = int(lowervalue) associationend.lowervalue = lowervalue association[source.attributes['name']] = associationend target.finalize(source, associationend)
def interface(self, source, target): """Create interfaces. """ interface = Interface() assignxmiprops(interface,source) target.anchor[source.attributes['name']] = interface target.finalize(source, interface)
def class_(self, source, target): """Create classes. """ class_ = Class() assignxmiprops(class_,source) target.anchor[source.attributes['name']] = class_ target.finalize(source, class_)
def package(self, source, target): """Create packages. """ package = Package() assignxmiprops(package,source) target.anchor[source.attributes['name']] = package target.finalize(source, package)
def associationclass(self, source, target): """Create association classes. """ if isprofilemember(source): return association_class = AssociationClass() assignxmiprops(association_class, source) target.anchor[source.attributes['name']] = association_class target.finalize(source, association_class)
def association(self, source, target): """Create associations. """ if isprofilemember(source): return association = Association() assignxmiprops(association, source) target.anchor[str(association.uuid)] = association target.finalize(source, association)
def dependency(self, source, target): if isprofilemember(source): return tok = token('sourcetotargetuuidmapping', False) supplier_source = source.refindex[source.attributes['supplier']] supplieruuid = tok.uuids[supplier_source.uuid] supplier = target.anchor.node(supplieruuid) client_source = source.refindex[source.attributes['client']] clientuuid = tok.uuids[client_source.uuid] client = target.anchor.node(clientuuid) dependency = Dependency() assignxmiprops(dependency,source) dependency.client = client dependency.supplier = supplier target.anchor[str(dependency.uuid)] = dependency target.finalize(source, dependency)