blob: 5e98eaa477bd0c99129ad0623086561bd224e478 [file] [log] [blame]
pre{
"pre: Running Baseline2Arg ETL ".println();
//creates a global case which will contains all the elements that will be
//transformed with the current transformation
var c:= new Arg!Case;
//var kk:= new Arg!Claim;
//kk.~id:="ttt";
//kk.name:="zzzz";
//kk.description:="yyy";
//kk.public = false;
//kk.assumed = false;
//kk.toBeSupported = false;
//kk.toBeInstantiated =false;
//"kk created ".println();
//c.argument.add(kk);
var reff : Baseline!BaseFramework;
reff = Baseline!BaseFramework.allInstances().first;
var str = "pre: reff = " + reff.toString();
str.println();
for (z in reff.ownedActivities) {
if(z.name <> null) {
var str2 = "pre: ownedActivities name = " + z.name;
str2.println();
}
}
}
post{
// crear relaciones entre Activity y sus subactivities
var colaAuxiliar : Sequence;
for (z in reff.ownedActivities) {
if(z.isSelected )
{
/*
for(v in z.subActivity)
{
v.BaseActivity2subActivity();
}
*/
colaAuxiliar.clear();
z.busquedaAnchuraSubActivities();
}
}
// crear relaciones entre Requirement y sus subrequirements
for (z in reff.ownedRequirement) {
if(z.isSelected )
{
/*
for(v in z.subRequirement)
{
v.BaseRequirement2SubBaseRequirement();
}
*/
colaAuxiliar.clear();
z.busquedaAnchuraSubsubRequirements();
}
}
// crear relaciones entre activities y sus requirements
for (z in Baseline!BaseActivity.allInstances()) {
if(z.isSelected)
{
for(y in z.ownedRequirement)
{
if(y.isSelected)
{
z.BaseActivity2OwnedRequirement(y);
}
}
}
}
// crear relaciones entre artefacts y sus requirements
for (z in Baseline!BaseArtefact.allInstances()) {
if(z.isSelected)
{
for(y in z.constrainingRequirement)
{
if(y.isSelected)
{
z.BaseArtefact2constrainingRequirement(y);
}
}
}
}
// Store traceability links in custom model
/*
var trace : new Trace!Trace;
for (z in transTrace.transformations) {
var link : new Trace!TraceLink;
link.sources.add(z.source);
link.targets = z.targets;
link.description = "Transformed by " + z.getRule().name;
trace.links.add(link);
"post: Transformed by " + z.getRule().name;
}
*/
"post: Finished Baseline2Arg ETL ".println();
}
//Transform RefActivity to Claim
rule BaseActivity2Claim
transform s : Baseline!BaseActivity
to t : Arg!Claim
{
guard : s.isSelected
"BaseActivity2Claim: Initializing Claim ".println();
t.id:=s.id;
t.name:=s.name;
t.description:=s.description;
//s.objective;
//t.content;
t.public = false;
t.assumed = false;
t.toBeSupported = false;
t.toBeInstantiated =false;
c.argument.add(t);
("BaseActivity2Claim: Claim " + t.name + " (id = " + t.id + ") associated to the Case").println();
}
//Transform RefRequirement to Claim
rule BaseRequirement2Claim
transform s : Baseline!BaseRequirement
to t : Arg!Claim
{
guard : s.isSelected
"BaseRequirement2Claim: Initializing Claim ".println();
t.id:=s.id;
t.name:=s.name;
t.description:=s.description;
//s.reference;
//t.content;
t.public = false;
t.assumed = false;
t.toBeSupported = false;
t.toBeInstantiated =false;
c.argument.add(t);
("BaseRequirement2Claim: Claim " + t.name + " (id = " + t.id + ") associated to the Case").println();
}
//Transform RefArtefact to InformationElementCitation
rule BaseArtefact2InformationElementCitation
transform s : Baseline!BaseArtefact
to t : Arg!InformationElementCitation
{
guard : s.isSelected
"BaseArtefact2InformationElementCitation: Initializing InformationElementCitation ".println();
t.id:=s.id;
t.name:=s.name;
t.description:=s.description;
//s.reference;
//t.content;
t.type = Arg!InformationElementType#Solution;
t.toBeInstantiated =false;
c.argument.add(t);
("BaseArtefact2InformationElementCitation: InformationElementCitation " + t.name + " (id = " + t.id + ") associated to the Case").println();
}
//Create links between a RefActivity and one subActivity
operation Baseline!BaseActivity BaseActivity2SubActivity(z : Baseline!BaseActivity)
{
("BaseActivity2SubActivity(): Initializing AssertedInference for " + self.name).println();
("BaseActivity2SubActivity(): Source claim ="+ self.equivalent()).println();
if(z.isSelected )
{
("BaseActivity2SubActivity(): Target claim ="+ z.equivalent()).println();
//("BaseActivity2subActivity(): self=" + self.equivalent()).println();
//("BaseActivity2subActivity(): z=" + z.equivalent()).println();
var y = new Arg!AssertedInference;
//attr AssertedByMultiplicityExtension multiextension;
//attr String cardinality="";
y.name = '';
//NO!!!y.source[0] = self.equivalent();
//NO!!!y.target[0] = z.equivalent();
y.source.add(self.equivalent());
y.target.add(z.equivalent());
c.argument.add(y);
("BaseActivity2SubActivity(): AssertedInference " + y.name + "(s=" + y.source[0].name + ", t=" + y.target[0].name + ") associated to the Case").println();
}
}
operation Baseline!BaseActivity busquedaAnchuraSubActivities()
{
for(hijo : Baseline!BaseActivity in self.subActivity)
{
colaAuxiliar.add(hijo); // annadir al final de la Queue
// crear link
self.BaseActivity2SubActivity(hijo);
}
// seguir buscando....
if(colaAuxiliar.size() > 1)
{
var cabeza = colaAuxiliar.first(); colaAuxiliar.removeAt(0); // obtener primer elemento de la Queue
cabeza.busquedaAnchuraSubActivities();
}
}
//Create links between a RefRequirement and its subRequirements
operation Baseline!BaseRequirement BaseRequirement2subBaseRequirement(z : Baseline!BaseRequirement)
{
("BaseRequirement2SubBaseRequirement(): Initializing AssertedInference for " + self.name).println();
("BaseRequirement2SubBaseRequirement(): Source requirement ="+ self.equivalent()).println();
if(z.isSelected )
{
("BaseRequirement2SubBaseRequirement(): Target requirement ="+ z.equivalent()).println();
var y = new Arg!AssertedInference;
//attr AssertedByMultiplicityExtension multiextension;
//attr String cardinality="";
y.name = '';
y.source.add(self.equivalent());
y.target.add(z.equivalent());
c.argument.add(y);
("BaseRequirement2SubBaseRequirement(): AssertedInference " + y.name + "(s=" + y.source[0].name + ", t=" + y.target[0].name + ") associated to the Case").println();
}
}
operation Baseline!BaseRequirement busquedaAnchuraSubRequirements()
{
for(hijo : Baseline!BaseRequirement in self.subRequirement)
{
colaAuxiliar.add(hijo); // annadir al final de la Queue
// crear link
self.BaseRequirement2SubBaseRequirement(hijo);
}
// seguir buscando....
if(colaAuxiliar.size() > 1)
{
var cabeza = colaAuxiliar.first(); colaAuxiliar.removeAt(0); // obtener primer elemento de la Queue
cabeza.busquedaAnchuraSubRequirements();
}
}
//Create links between a RefActivity and its RefRequirements
operation Baseline!BaseActivity BaseActivity2OwnedRequirement(z : Baseline!BaseRequirement)
{
("BaseActivity2OwnedRequirement(): Initializing AssertedInference for " + self.name).println();
("BaseActivity2OwnedRequirement(): Source claim ="+ self.equivalent()).println();
if(z.isSelected )
{
("BaseActivity2OwnedRequirement(): Target claim ="+ z.equivalent()).println();
//("BaseActivity2OwnedRequirement(): self=" + self.equivalent()).println();
//("BaseActivity2OwnedRequirement(): z=" + z.equivalent()).println();
var y = new Arg!AssertedInference;
//attr AssertedByMultiplicityExtension multiextension;
//attr String cardinality="";
y.name = '';
//NO!!!y.source[0] = self.equivalent();
//NO!!!y.target[0] = z.equivalent();
y.source.add(self.equivalent());
y.target.add(z.equivalent());
c.argument.add(y);
("BaseActivity2OwnedRequirement(): AssertedInference " + y.name + "(s=" + y.source[0].name + ", t=" + y.target[0].name + ") associated to the Case").println();
}
}
//Create links between a RefArtefact and its RefRequirements
operation Baseline!BaseArtefact BaseArtefact2constrainingRequirement(z : Baseline!BaseRequirement)
{
("BaseArtefact2constrainingRequirement(): Initializing AssertedInference for " + self.name).println();
("BaseArtefact2constrainingRequirement(): Target InformationElementCitation ="+ self.equivalent()).println();
if(z.isSelected )
{
("BaseArtefact2constrainingRequirement(): Source claim ="+ z.equivalent()).println();
//("BaseActivity2OwnedRequirement(): self=" + self.equivalent()).println();
//("BaseActivity2OwnedRequirement(): z=" + z.equivalent()).println();
var y = new Arg!AssertedInference;
//attr AssertedByMultiplicityExtension multiextension;
//attr String cardinality="";
y.name = '';
//NO!!!y.source[0] = self.equivalent();
//NO!!!y.target[0] = z.equivalent();
y.source.add(self.equivalent());
y.target.add(z.equivalent());
c.argument.add(y);
("BaseArtefact2constrainingRequirement(): AssertedInference " + y.name + "(s=" + y.source[0].name + ", t=" + y.target[0].name + ") associated to the Case").println();
}
}