include "primitives.alh" include "modelling.alh" include "object_operations.alh" include "utils.alh" Boolean function main(model : Element): Element elements String class String elem String name String symbol String label Integer xloc String as_src String as_dest String link Element symbols_dict symbols_dict = dict_create() // Clear model elements = allInstances(model, "rendered/GraphicalElement") while (set_len(elements) > 0): class = set_pop(elements) model_delete_element(model, class) // render symbols xloc = 0 elements = allInstances(model, "abstract/Symbol") while (set_len(elements) > 0): class = set_pop(elements) name = read_attribute(model, class, "typeID") symbol = instantiate_node(model, "rendered/Symbol", "") instantiate_attribute(model, symbol, "x", xloc) instantiate_attribute(model, symbol, "y", 0) instantiate_attribute(model, symbol, "typeID", name) instantiate_attribute(model, symbol, "__asid", list_read(string_split_nr(class, "/", 1), 1)) xloc = xloc + 200 dict_add(symbols_dict, class, symbol) // abstract links between symbols to concrete connecting lines between icons elements = allInstances(model, "abstract/Link") while (set_len(elements) > 0): class = set_pop(elements) as_src = readAssociationSource(model, class) as_dest = readAssociationDestination(model, class) link = instantiate_link(model, "rendered/ConnectingLine", "", symbols_dict[as_src], symbols_dict[as_dest]) // render attributes to text labels xloc = 0 elements = allInstances(model, "abstract/Attribute") while (set_len(elements) > 0): class = set_pop(elements) name = cast_string(read_attribute(model, class, "key")) + "=" + cast_string(read_attribute(model, class, "value")) label = instantiate_node(model, "rendered/TextLabel", "") instantiate_attribute(model, label, "text", name) instantiate_attribute(model, label, "x", xloc) instantiate_attribute(model, label, "y", 80) xloc = xloc + 200 dict_add(symbols_dict, class, label) // abstract SymbolAttribute association to concrete IconTextLabel elements = allInstances(model, "abstract/SymbolAttribute") while (set_len(elements) > 0): class = set_pop(elements) as_src = readAssociationSource(model, class) as_dest = readAssociationDestination(model, class) instantiate_link(model, "rendered/SymbolTextLabel", "", symbols_dict[as_src], symbols_dict[as_dest]) return True!