blob: 6401d6add1c65d6d5358e137b7e5bf8269f98209 [file] [log] [blame]
«IMPORT ecore»
«EXTENSION org::eclipse::xtend::util::uml2ecore::templates::utils»
«DEFINE root FOR List»
«EXPAND root FOREACH (Collection[EPackage])this»
«ENDDEFINE»
«DEFINE root FOR EPackage»
«EXPAND constraintsFile»
«ENDDEFINE»
«DEFINE constraintsFile FOR EPackage»
«FILE name+"Constraints.chk"
import «nsPrefix»;
extension org::eclipse::xtend::util::stdlib::naming;
context «eClassifiers.get(0).name» ERROR "dummy - will hopefully be removed sometime :-)": true;
«EXPAND constraintsForClass FOREACH eAllContents.typeSelect(EClass)-»
«IF needsNamingUtils()»
«FOREACH eClassifiers.typeSelect(EClass) AS c
«IF c.eAttributes.collect(a|a.name).contains("name"
context «c.name» WARNING loc()+" name not specified: ["+metaType.name+"]":
name != null;
«ENDIF»
«ENDFOREACH»
«ENDIF»
«ENDFILE»
«ENDDEFINE»
«DEFINE constraintsForClass FOR EClass
«FOREACH eReferences AS r
«IF r.lowerBound == 1
«IF r.upperBound == 1
context «name» ERROR loc()+" «r.name» must bet set: "+(metaType.getProperty("name") != null ? metaType.getProperty("name").get(this): "") +" ["+metaType.name+"]":
«r.name» != null;
«ENDIF
«IF r.upperBound > 1 || r.upperBound == -1
context «name» ERROR loc()+" «r.name» cannot be empty: "+(metaType.getProperty("name") != null ? metaType.getProperty("name").get(this): "") +" ["+metaType.name+"]":
r.name».isEmpty;
«ENDIF
«ENDIF
«ENDFOREACH
«IF ePackage.needsNamingUtils()-»
«FOREACH eReferences.select(r|r.containment).select(r|r.upperBound > 1 || r.upperBound == -1) AS r
«IF ((EClass)r.eType).eAttributes.collect(a|a.name).contains("name"
context «r.eType.name» ERROR loc()+" «r.name» must have unique names: "+name:
((«name»)eContainer).«r.name».select( c | c.name == name ).size == 1;
«ENDIF»
«ENDFOREACH
«ENDIF
«ENDDEFINE»