Example #1
0
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]
Example #2
0
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]
Example #3
0
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
Example #4
0
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
Example #5
0
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