Beispiel #1
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]