blob: b64db0b49d045a20c2c3fcde642e1a9d77171cce [file] [log] [blame]
--@atlcompiler atl2006
--/*******************************************************************************
-- * Copyright (c) 2009 Ecole des Mines de Nantes.
-- * 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:
-- * Kelly Garces - initial implementation and/or initial documentation
-- *******************************************************************************/
module AML2PropertiesFile; -- Module Template
create OUT : Properties from IN : Properties, IN1 : AML;
uses AMLLibrary;
helper def : root : Properties!PropertiesFile = OclUndefined;
helper def : properties : Map(String, Properties!Property) =
Properties!Property.allInstances()
->iterate(e ; map : Map(String, Properties!Property) = Map{} |
map.including(e.name, e)
);
helper context String def : notExists : Boolean =
thisModule.properties.get(self).oclIsUndefined();
rule ModelsFlowBlock2PropertyFile {
from
s : AML!ModelsBlock
to
t : Properties!PropertiesFile (
name <- s.matcher.name,
properties <- s.models
->union(s.matcher.mappedModels->collect(c | c.im))
->flatten()
->select(e | e.name.notExists)
->collect(e | thisModule.Model2Property(e))
)
do {
thisModule.root <- t;
}
}
lazy rule Model2Property {
from
s : AML!Model
to
t : Properties!Property (
name <- s.name,
value <- OclUndefined
)
}
rule ReferenceModel2Property {
from
m : AML!Matcher,
s : AML!ReferenceModel (
s.isLoadable(m) and
s.name.notExists
)
to
t : Properties!Property (
name <- s.name,
value <- OclUndefined,
file <- thisModule.root
)
}
rule Property2Property {
from
s : Properties!Property
to
t : Properties!Property (
name <- s.name,
value <- s.value,
file <- thisModule.root
)
}