|
@@ -216,7 +216,7 @@ Void function user_function_skip_init(user_id : String):
|
|
|
output("")
|
|
|
output("Transformation-specific operations")
|
|
|
output(" transformation_add_MT_language -- Create a RAMified metamodel")
|
|
|
- output(" transformation_reRAMify -- TODO")
|
|
|
+ output(" transformation_reRAMify -- RAMify a merged metamodel again")
|
|
|
output(" transformation_add_MT -- TODO")
|
|
|
output(" transformation_add_AL -- TODO")
|
|
|
output(" transformation_source_add -- TODO")
|
|
@@ -473,6 +473,45 @@ Void function user_function_skip_init(user_id : String):
|
|
|
else:
|
|
|
output("At least one source formalism is required")
|
|
|
|
|
|
+ elif (cmd == "transformation_reRAMify"):
|
|
|
+ String model_id
|
|
|
+ String source_id
|
|
|
+ Element trace_links
|
|
|
+ String trace_link
|
|
|
+ String merged_model_id
|
|
|
+ Element new_model
|
|
|
+ String location
|
|
|
+
|
|
|
+ output("Merged metamodel to RAMify again?")
|
|
|
+ model_id = get_model_id(input())
|
|
|
+
|
|
|
+ if (model_id != ""):
|
|
|
+ if (allow_write(user_id, model_id)):
|
|
|
+ // We must be able to write the RAMification model, as we will update it in-place
|
|
|
+ trace_links = allOutgoingAssociationInstances(core, model_id, "tracability")
|
|
|
+ merged_model_id = ""
|
|
|
+ while (read_nr_out(trace_links) > 0):
|
|
|
+ trace_link = set_pop(trace_links)
|
|
|
+ if (value_eq(read_attribute(core, trace_link, "type"), "RAMified")):
|
|
|
+ // Found a RAMification link, so redo it on the original model
|
|
|
+ merged_model_id = readAssociationDestination(core, trace_link)
|
|
|
+
|
|
|
+ if (merged_model_id != ""):
|
|
|
+ new_model = ramify(core["model"][merged_model_id])
|
|
|
+
|
|
|
+ location = "/models/" + cast_id2s(new_model)
|
|
|
+ export_node(new_model, location)
|
|
|
+
|
|
|
+ // Update meta-info
|
|
|
+ unset_attribute(core, model_id, "location")
|
|
|
+ instantiate_attribute(core, model_id, "location", location)
|
|
|
+ else:
|
|
|
+ output("Could not determine original model of RAMified metamodel!")
|
|
|
+ else:
|
|
|
+ output("Permission denied")
|
|
|
+ else:
|
|
|
+ output("No such model")
|
|
|
+
|
|
|
elif (cmd == "permission_modify"):
|
|
|
String permissions
|
|
|
Integer permission
|