|
@@ -176,18 +176,20 @@ Element function model_join(models : Element, metamodel : Element, tracability_m
|
|
|
key = set_pop(keys)
|
|
|
type = read_type(model, key)
|
|
|
|
|
|
+ new_name = retyping_key + key
|
|
|
+
|
|
|
if (is_edge(model["model"][key])):
|
|
|
src = cast_id2s(read_edge_src(model["model"][key]))
|
|
|
dst = cast_id2s(read_edge_dst(model["model"][key]))
|
|
|
if (bool_and(dict_in(elem_map, src), dict_in(elem_map, dst))):
|
|
|
- new_name = instantiate_link(new_model, retyping_key + type, "", elem_map[src], elem_map[dst])
|
|
|
+ new_name = instantiate_link(new_model, retyping_key + type, new_name, elem_map[src], elem_map[dst])
|
|
|
else:
|
|
|
set_add(second_keys, key)
|
|
|
new_name = ""
|
|
|
elif (has_value(model["model"][key])):
|
|
|
- new_name = instantiate_value(new_model, retyping_key + type, "", model["model"][key])
|
|
|
+ new_name = instantiate_value(new_model, retyping_key + type, new_name, model["model"][key])
|
|
|
else:
|
|
|
- new_name = instantiate_node(new_model, retyping_key + type, "")
|
|
|
+ new_name = instantiate_node(new_model, retyping_key + type, new_name)
|
|
|
|
|
|
if (new_name != ""):
|
|
|
// Add the new name to a map which registers the mapping to the new name
|
|
@@ -253,6 +255,7 @@ Element function model_split(merged_model : Element, models : Element, tracabili
|
|
|
String link
|
|
|
String src_name
|
|
|
String dst_name
|
|
|
+ String new_name
|
|
|
|
|
|
result = create_node()
|
|
|
tracability_model = instantiate_model(import_node("models/Tracability"))
|
|
@@ -306,6 +309,11 @@ Element function model_split(merged_model : Element, models : Element, tracabili
|
|
|
set_add(second_keys, key)
|
|
|
else:
|
|
|
retyping_key = splitted[0]
|
|
|
+ if (read_nr_out(string_split(key, "/")) > 1):
|
|
|
+ new_name = list_read(string_split(key, "/"), 1)
|
|
|
+ else:
|
|
|
+ new_name = key
|
|
|
+ log("Create element " + new_name)
|
|
|
|
|
|
if (dict_in(result, retyping_key)):
|
|
|
original_type = splitted[1]
|
|
@@ -320,7 +328,7 @@ Element function model_split(merged_model : Element, models : Element, tracabili
|
|
|
// Though we first check the model to which it was mapped, as this should be the same as we have now
|
|
|
if (bool_and(dict_in(result[retyping_key]["model"], mapping[src]), dict_in(result[retyping_key]["model"], mapping[dst]))):
|
|
|
// The matching worked fine
|
|
|
- dict_add_fast(mapping, key, instantiate_link(result[retyping_key], original_type, key, mapping[src], mapping[dst]))
|
|
|
+ dict_add_fast(mapping, key, instantiate_link(result[retyping_key], original_type, new_name, mapping[src], mapping[dst]))
|
|
|
else:
|
|
|
log("ERROR mapping: source/target mapped to model, but not found in expected model; ignoring")
|
|
|
else:
|
|
@@ -329,11 +337,11 @@ Element function model_split(merged_model : Element, models : Element, tracabili
|
|
|
|
|
|
elif (has_value(elem)):
|
|
|
// Has a value, so copy that as well
|
|
|
- dict_add_fast(mapping, key, instantiate_value(result[retyping_key], original_type, key, elem))
|
|
|
+ dict_add_fast(mapping, key, instantiate_value(result[retyping_key], original_type, new_name, elem))
|
|
|
|
|
|
else:
|
|
|
// Is a node
|
|
|
- dict_add_fast(mapping, key, instantiate_node(result[retyping_key], original_type, key))
|
|
|
+ dict_add_fast(mapping, key, instantiate_node(result[retyping_key], original_type, new_name))
|
|
|
|
|
|
if (read_nr_out(keys) == 0):
|
|
|
keys = second_keys
|