def validateLocation(modelPackage, validateOnly, ignorePack): sterPlace =[] custPlace =[] if validateOnly!=True: gl.log('[FIXES]: for Package, Stereotypes, and Customization Locations') ###Find profile package profilePackage = profilePackCheck(modelPackage) if not profilePackage: return ['No Profile Package'] ###Find infrastructure package infraPack = filter(lambda element: isinstance(element, Package) and "_"==element.getName(), profilePackage.getOwnedElement()) if len(infraPack)>0: infraPack = infraPack[0] elif validateOnly != True: infraPack = ef.createPackageInstance() infraPack.setOwner(profilePackage) infraPack.setName("_") gl.log('[FIX]: Created "_" package') else: return['No "_" Package'] ###Collect other packages stereotypePackage = packageCheck(profilePackage, infraPack, validateOnly, "_Stereotypes") depSterPack = packageCheck(profilePackage, infraPack, validateOnly, "_Deprecated Stereotypes") userscriptsPack = packageCheck(profilePackage, infraPack, validateOnly, "_UserScripts") customPackage = packageCheck(profilePackage, infraPack, validateOnly, "_Customizations") if not isinstance(stereotypePackage, Package) or not isinstance(customPackage, Package): return[stereotypePackage, customPackage, depSterPack] ###Find locations of all stereotypes and customizations allStereotypes = filter(lambda element: isinstance(element, Stereotype), getEverything(profilePackage)) allCustomizations = filter(lambda element: isinstance(element, Class) and StereotypesHelper.hasStereotype(element, StereotypesHelper.getStereotype(project, "Customization")), getEverything(profilePackage)) sterPlace = filter(lambda element: element.getOwner() != stereotypePackage, allStereotypes) sterPlace = filter(lambda element: element.getOwner()!=depSterPack, sterPlace) sterPlace = filter(lambda element: element.getOwner() != userscriptsPack, sterPlace) for p in ignorePack: sterPlace = filter(lambda element: element.getOwner() != p, sterPlace) userscriptPlace = filter(lambda element: element.getOwner()!= userscriptsPack and element.getName().find("opsrev")==0, allStereotypes) custPlace = filter(lambda element: element.getOwner()!=customPackage, allCustomizations) ###Move locations appropriately if set to fix if validateOnly!=True: setSterOwner(sterPlace, stereotypePackage, depSterPack, userscriptsPack) setSterOwner(userscriptPlace, stereotypePackage, depSterPack, userscriptsPack) setSterOwner(custPlace, customPackage, 'cust', 'beh') ###Check for icons sters = filter(lambda element: element.getOwner() != userscriptsPack, allStereotypes) sters = filter(lambda element: 'port' not in element.getName(), sters) sters = filter(lambda element: GeneralizationSet not in StereotypesHelper.getBaseClassesAsClasses(element), sters) sters = filter(lambda element: Dependency not in StereotypesHelper.getBaseClassesAsClasses(element), sters) sters = filter(lambda element: Association not in StereotypesHelper.getBaseClassesAsClasses(element), sters) sters = filter(lambda element: Package not in StereotypesHelper.getBaseClassesAsClasses(element), sters) sters = filter(lambda element: Operation not in StereotypesHelper.getBaseClassesAsClasses(element), sters) sters = filter(lambda element: Interface not in StereotypesHelper.getBaseClassesAsClasses(element), sters) sters = filter(lambda element: Enumeration not in StereotypesHelper.getBaseClassesAsClasses(element), sters) sters = filter(lambda element: Activity not in StereotypesHelper.getBaseClassesAsClasses(element), sters) sters = filter(lambda element: Signal not in StereotypesHelper.getBaseClassesAsClasses(element), sters) sters = filter(lambda element: Reception not in StereotypesHelper.getBaseClassesAsClasses(element), sters) for s in sters: icon = filter(lambda element: isinstance(element, Image), s.getOwnedElement()) if not icon: gl.log('No icon for stereotype: ' + s.getName()) return [stereotypePackage, depSterPack, customPackage, sterPlace, custPlace]
def getMissing(A, B): missing =[] nameMatch = {} metaMismatch=[] applyMismatch=[] for a in A: aName = a.getName() if isinstance(a, Property): aName = propertyCheck(a) elif isinstance(a, Stereotype) and StereotypesHelper.getBaseClassesAsClasses(a)[0] == Property: aGens = filter(lambda element: isinstance(element, Generalization), a.get_directedRelationshipOfSource()) if len(filter(lambda element: element.getGeneral() == StereotypesHelper.getStereotype(project, "ConstraintProperty"), aGens))!=0: if a.getName().find("constraint property")==-1: aName = a.getName() + " constraint property" elif len(filter(lambda element: element.getGeneral() == StereotypesHelper.getStereotype(project, "SharedProperty"), aGens))!=0: if a.getName().find("shared property")==-1: aName = a.getName() + " shared property" elif len(filter(lambda element: element.getGeneral() == StereotypesHelper.getStereotype(project, "DistributedProperty"), aGens))!=0: if a.getName().find("distributed property")==-1: aName = a.getName() + " distributed property" elif len(filter(lambda element: element.getGeneral() == StereotypesHelper.getStereotype(project, "FlowProperty"), aGens))!=0: if a.getName().find("flow property")==-1: aName = a.getName() + " flow property" elif len(filter(lambda element: element.getGeneral() == StereotypesHelper.getStereotype(project, "ValueProperty"), aGens))!=0: if a.getName().find("value property")==-1: aName = a.getName() + " value property" elif len(filter(lambda element: element.getGeneral() == StereotypesHelper.getStereotype(project, "ReferenceProperty"), aGens))!=0: if a.getName().find("reference property")==-1: aName = a.getName() + " reference property" else: if a.getName().find("part property")==-1: aName=a.getName() + " part property" elif isinstance(a, Stereotype) and StereotypesHelper.getBaseClassAsClasses(a)[0] == Port: if a.getName().find("port")==-1: aName = a.getName() + " port" bExist = 0 for b in B: if aName == b.getName(): nameMatch[a]=b bExist = 1 if b not in StereotypesHelper.getAllAssignedStereotypes([a]): noApply[a]=b if bExist == 0: missing.append(a) for n in nameMatch: ###get generalizations of stereotype stereotype = nameMatch[n] nGeneral = filter(lambda element: isinstance(element, Generalization), stereotype.get_directedRelationshipOfSource()) general = [] for g in nGeneral: general.append(g.getGeneral()) ###keep only SysML generalizations gSys = filter(lambda element: StereotypesHelper.getProfileForStereotype(element) == StereotypesHelper.getProfile(project, "SysML"), general) if gSys and not StereotypesHelper.checkForAllDerivedStereotypes(n, gSys[0]): applyMismatch.append(n) ###check if same if n.getName() != "_Unused Stereotypes": if not isinstance(n, StereotypesHelper.getClassOfMetaClass(StereotypesHelper.getBaseClasses(nameMatch[n])[0])): metaMismatch.append(n) return [missing, applyMismatch, metaMismatch]
def createStereotypedElement(stereotype, owner): new = None mclass = StereotypesHelper.getBaseClassesAsClasses(stereotype) for m in mclass: insCreate = str(m) findtrunc = insCreate.split(".") insCreate = findtrunc[len(findtrunc)-1] insCreate = insCreate[:-2] if insCreate != "Property" and insCreate != "Association" and insCreate != "Dependency" and insCreate != "Relationship" and insCreate != "Element" and insCreate != "Operation" and insCreate!= "Property" and insCreate!= "EnumerationLiteral": instanceCreate = 'create'+insCreate+'Instance' new = eval('ef.create'+insCreate+'Instance()') new.setOwner(owner) new.setName(stereotype.getName()) StereotypesHelper.addStereotypeByString(new, stereotype.getName()) return new
def createElement(stereotype, owner,checkEnum): new = None mclass = StereotypesHelper.getBaseClassesAsClasses(stereotype) for m in mclass: insCreate = str(m) findtrunc = insCreate.split(".") insCreate = findtrunc[len(findtrunc)-1] insCreate = insCreate[:-2] if insCreate != "Property" and insCreate != "Association" and insCreate != "Dependency" and insCreate!= "ObjectFlow" and insCreate != "Relationship" and insCreate != "Operation" and insCreate!= "EnumerationLiteral": if insCreate == "Element": new = ef.createClassInstance() gl.log(stereotype.getName() + " Stereotype metaclass was element. Stereotyped Class was created") elif checkEnum==True: new=ef.createEnumerationInstance() gl.log(stereotype.getName() + " Stereotype metaclass was enumeration. Stereotyped Enumeration was created") else: instanceCreate = 'create'+insCreate+'Instance' new = eval('ef.create'+insCreate+'Instance()') new.setOwner(owner) if docStereotypeCheck(stereotype) == 0: new.setName(stereotype.getName()) return new
def createElement(stereotype, owner, checkEnum): new = None mclass = StereotypesHelper.getBaseClassesAsClasses(stereotype) #gl.log("the metaclass string==========>"+str(mclass) +"stereotype name====>"+stereotype.getName()) for m in mclass: insCreate = str(m) findtrunc = insCreate.split(".") insCreate = findtrunc[len(findtrunc)-1] insCreate = insCreate[:-2] ignore = ['InstanceSpecification', 'Property', 'Association', 'Dependency', 'ObjectFlow', 'Relationship', 'Operation', 'EnumerationLiteral', 'Lifeline'] if insCreate not in ignore: if insCreate == "Element" or insCreate =="NamedElement": new = ef.createClassInstance() gl.log(stereotype.getName() + " Stereotype metaclass was element. Stereotyped Class was created") elif checkEnum==True: new=ef.createEnumerationInstance() gl.log(stereotype.getName() + " Stereotype metaclass was enumeration. Stereotyped Enumeration was created") else: instanceCreate = 'create'+insCreate+'Instance' new = eval('ef.create'+insCreate+'Instance()') new.setOwner(owner) if docStereotypeCheck(stereotype) == 0: new.setName(stereotype.getName()) return new