| /******************************************************************************* |
| * 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(); |
| } |