| -- @atlcompiler atl2006 |
| |
| module Assign_NameSim; -- Module Template |
| create OUT : AMW from IN : AMW, left : MOF, right : MOF; |
| |
| |
| helper context MOF!EModelElement def: matches(other : MOF!EModelElement) : Boolean = |
| let left : String = self.name.toLower() in |
| let right : String = other.name.toLower() in |
| left = right; |
| |
| |
| helper context MOF!EModelElement def: similarityName(right : MOF!EModelElement) : Real = |
| if self.matches(right) then |
| 1 |
| else |
| self.name.getSimilarity(right.name) |
| endif; |
| |
| |
| rule UpdateSim { |
| from |
| mmw : AMW!Equivalent |
| using { |
| left : MOF!EModelElement = MOF!EModelElement.getInstanceById('left',mmw.left.element.ref); |
| right : MOF!EModelElement = MOF!EModelElement.getInstanceById('right',mmw.right.element.ref); |
| } |
| to |
| alink : AMW!Equivalent ( |
| name <- mmw.name, |
| model <- mmw.model, |
| left <- mmw.left, |
| right <- mmw.right, |
| similarity <- mmw.similarity + |
| left.similarityName(right) |
| ) |
| } |
| |
| ------------------------------copied rules--------------------------------------------------- |
| |
| rule leftElement { |
| from |
| mmw : AMW!LeftElement |
| to |
| out : AMW!LeftElement ( |
| name <- mmw.name, |
| element <- mmw.element |
| ) |
| } |
| |
| rule rightElement { |
| from |
| mmw : AMW!RightElement |
| to |
| out : AMW!RightElement ( |
| name <- mmw.name, |
| element <- mmw.element |
| ) |
| } |
| |
| rule ElementRefs { |
| from |
| mmw : AMW!ElementRef |
| to |
| out : AMW!ElementRef ( |
| name <- mmw.name, |
| ref <- mmw.ref, |
| modelRef <- mmw.modelRef |
| ) |
| } |
| |
| rule matchmodel { |
| from |
| mmw: AMW!MatchModel |
| to |
| model : AMW!MatchModel ( |
| name <- mmw.name, |
| leftM <- mmw.leftM, |
| rightM <- mmw.rightM, |
| methods <- mmw.methods->union(Sequence{method}) |
| ), |
| method : AMW!Method ( |
| name <- 'string comparison - Levenshtein distance' |
| ) |
| } |
| |
| rule method { |
| from |
| mmw : AMW!Method |
| to |
| method : AMW!Method ( |
| name <- mmw.name |
| ) |
| } |
| |
| rule modelref { |
| from |
| mmw : AMW!ModelRef |
| to |
| out : AMW!ModelRef ( |
| name <- mmw.name, |
| ref <- mmw.ref |
| ) |
| } |