blob: 0b347caaf44e0a12674021d21a1973ade66f9430 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2007,2008 Tata Consultancy Services and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v20.html
*
* Contributors:
* TCS - initial implementation for ModelMorf
* E.D.Willink - alignment with evolved specification
*******************************************************************************/
import umlMM : 'ClassMM.ecore'::ClassMM;
transformation org::eclipse::qvtd::xtext::qvtrelation::tests::classmodel2classmodel::ClassModelToClassModel(uml1:umlMM, uml2:umlMM)
{
key umlMM::Class{name};
top relation classToClass {
cn : String;
enforce domain uml1
c1:Class {
name = cn
};
enforce domain uml2
c2:Class {
name = cn
};
}
top relation classToClassHierarchy {
cn : String;
enforce domain uml1
c1:Class {
supers = c1s:Set(Class){}
};
enforce domain uml2
c2:Class {
supers = c2s:Set(Class){}
};
when {
classToClass(c1, c2);
}
where {
classSupersToClassSupers(c1s, c2s);
}
}
relation classSupersToClassSupers {
cn : String;
c1 : umlMM::Class;
c2 : umlMM::Class;
restC1s : Set(umlMM::Class);
restC2s : Set(umlMM::Class);
enforce domain uml1
c1s:Set(Class) {
c1 ++ restC1s
}
default_values {
restC1s = Set{};
};
enforce domain uml2
c2s:Set(Class) {
c2 ++ restC2s
}
default_values {
restC2s = Set{};
};
where {
classToClass(c1, c2);
classSupersToClassSupers(restC1s, restC2s);
}
}
}