|
Re: Create Tree out of a List [message #1725109 is a reply to message #1723741] |
Mon, 29 February 2016 20:43 |
|
You may use lazy unique rules to create the nodes and and endpoint rule to create the document:
module RowsToDocument;
create OUT : OUTMM from IN : INMM;
rule Leaf {
from
row : INMM!Row
to
node : OUTMM!Leaf (
name <- row.name
)
}
unique lazy rule Level0Node {
from
level0 : Integer
to
node : OUTMM!Node (
id <- level0,
children <- INMM!Row.allInstances()
->collect(r -> r.level1)->asSet()
->collect(level1 -> thisModule.Level1Node(level0, level1))
)
}
unique lazy rule Level1Node {
from
level0 : Integer,
level1 : Integer
to
node : OUTMM!Node (
id <- level1,
children <- INMM!Row.allInstances()
->select(r -> r.level0 = level0 and r.level1 = level1)
)
}
endpoint rule Document() {
to
document : OUTMM!Document (
children <- INMM!Row.allInstances()
->collect(r -> r.level0)->asSet()
->collect(level0 -> thisModule.Level0Node(level0))
)
}
Cheers,
Dennis
|
|
|
Powered by
FUDForum. Page generated in 0.03108 seconds