blob: d0030519a8fc82290a647069487962877a1611e1 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2016 University of York
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Horacio Hoyos - Initial API and implementation
*******************************************************************************/
pattern packageToSchema
p : uml!Package {
onmatch:
p.name.println()
}
pattern classToTable
p : uml!Package,
c : uml!Class
guard: c.kind == 'persistent' {
match :
c.namespace = p
}
pattern associationToForeignKey
p : Package,
sc : Class
guard: sc.kind = 'persistent',
dc : Class
guard: dc.kind = 'persistent',
a : uml!Association {
match:
sc.namespace = p and
sc.getAllForwards()->includes(a) and
dc.getAllSupers()->includes(a.destination)
}
pattern classPrimitiveAttributes
t : PrimitiveDataType,
c : Class,
a : Attribute {
match:
a.type = t and
c.getAllAttributes()->includes(a)
}
pattern classComplexAttributes
t : Class,
c : Class,
a : Attribute {
match:
a.type = t and
c.getAllAttributes()->includes(a)
}
pattern complexAttributePrimitiveAttributes
t : PrimitiveDataType,
ca : Attribute,
c : Class,
a : Attribute {
match:
a.type = t and
ca.type = c and
c.getAllAttributes()->includes(a)
}
pattern complexAttributeComplexAttributes
ca : Attribute,
t : Class,
c : Class,
a : Attribute {
match:
a.type = t and
ca.type = c and
getAllAttributes(c)->includes(a)
}
function uml!Class getAllSupers() : Set(uml!Class)
{
return self.general.collect(gen | gen.getAllSupers()).flatten().including(self).asSet();
}
function uml!Class getAllAttributes() : Set(uml!Attribute)
{
return self.getAllSupers().collect(c | c.attributes).flatten().asSet();
}
function uml!Class getAllForwards() : Set(uml!Association)
{
return self.getAllSupers().flatten().collect(c | c.forward).asSet();
}