فهرست منبع

Allow model_modify to "drop"

Yentl Van Tendeloo 7 سال پیش
والد
کامیت
482d818adc
4فایلهای تغییر یافته به همراه20 افزوده شده و 9 حذف شده
  1. 14 4
      bootstrap/core_algorithm.alc
  2. 4 3
      bootstrap/mini_modify.alc
  3. 1 1
      interface/HUTN/includes/mini_modify.alh
  4. 1 1
      wrappers/modelverse_SCCD.py

+ 14 - 4
bootstrap/core_algorithm.alc

@@ -719,7 +719,12 @@ Element function execute_operation(operation_id : String, input_models : Element
 		model_create(merged_model, model_name, merged_metamodel_id, "Model")
 		model_create(merged_model, model_name, merged_metamodel_id, "Model")
 		output("Operating on: " + cast_string(model_name))
 		output("Operating on: " + cast_string(model_name))
 		// We want to modify, so modify
 		// We want to modify, so modify
-		modify(merged_model, True)
+		if (modify(merged_model, True)):
+			// Overwrite the merged model
+			model_overwrite(merged_model, get_entry_id(model_name), merged_metamodel_id)
+		else:
+			// Reload the merged model
+			merged_model = get_full_model(get_entry_id(model_name), merged_metamodel_id)
 		//model_delete(get_entry_id(model_name))
 		//model_delete(get_entry_id(model_name))
 		result = True
 		result = True
 	elif (exact_type == "ActionLanguage"):
 	elif (exact_type == "ActionLanguage"):
@@ -1686,8 +1691,10 @@ String function transformation_add(source_models : Element, target_models : Elem
 			merged_formalism = model_fuse(formalism_map)
 			merged_formalism = model_fuse(formalism_map)
 			model_create(merged_formalism, "merged/" + operation_name, get_entry_id("formalisms/SimpleClassDiagrams"), "Model")
 			model_create(merged_formalism, "merged/" + operation_name, get_entry_id("formalisms/SimpleClassDiagrams"), "Model")
 			output("Operating on: merged/" + operation_name)
 			output("Operating on: merged/" + operation_name)
-			modify(merged_formalism, True)
-			model_overwrite(merged_formalism, get_entry_id("merged/" + operation_name), get_entry_id("formalisms/SimpleClassDiagrams"))
+			if (modify(merged_formalism, True)):
+				model_overwrite(merged_formalism, get_entry_id("merged/" + operation_name), get_entry_id("formalisms/SimpleClassDiagrams"))
+			else:
+				merged_formalism = get_full_model(get_entry_id("merged/" + operation_name), get_entry_id("formalisms/SimpleClassDiagrams"))
 
 
 		if (operation_type == "manual"):
 		if (operation_type == "manual"):
 			// Finished with all information, now create the model itself!
 			// Finished with all information, now create the model itself!
@@ -1829,7 +1836,10 @@ String function cmd_transformation_add_MT(source_models : Element, target_models
 	merged_formalism = model_fuse(to_ramify)
 	merged_formalism = model_fuse(to_ramify)
 	model_create(merged_formalism, "merged/" + operation_name, get_entry_id("formalisms/SimpleClassDiagrams"), "Model")
 	model_create(merged_formalism, "merged/" + operation_name, get_entry_id("formalisms/SimpleClassDiagrams"), "Model")
 	output("Operating on: merged/" + operation_name)
 	output("Operating on: merged/" + operation_name)
-	modify(merged_formalism, True)
+	if (modify(merged_formalism, True)):
+		model_overwrite(merged_formalism, get_entry_id("merged/" + operation_name), get_entry_id("formalisms/SimpleClassDiagrams"))
+	else:
+		merged_formalism = get_full_model(get_entry_id("merged/" + operation_name), get_entry_id("formalisms/SimpleClassDiagrams"))
 	model_overwrite(merged_formalism, get_entry_id("merged/" + operation_name), get_entry_id("formalisms/SimpleClassDiagrams"))
 	model_overwrite(merged_formalism, get_entry_id("merged/" + operation_name), get_entry_id("formalisms/SimpleClassDiagrams"))
 
 
 	ramified_metamodel = ramify(merged_formalism)
 	ramified_metamodel = ramify(merged_formalism)

+ 4 - 3
bootstrap/mini_modify.alc

@@ -497,7 +497,7 @@ String function cmd_all_instances(model : Element, type : String):
 	else:
 	else:
 		return "Element not found: " + type!
 		return "Element not found: " + type!
 
 
-Element function modify(model : Element, write : Boolean):
+Boolean function modify(model : Element, write : Boolean):
 	String cmd
 	String cmd
 
 
 	output("Model loaded, ready for commands!")
 	output("Model loaded, ready for commands!")
@@ -507,7 +507,9 @@ Element function modify(model : Element, write : Boolean):
 		if (cmd == "help"):
 		if (cmd == "help"):
 			output(cmd_help_m(write))
 			output(cmd_help_m(write))
 		elif (cmd == "exit"):
 		elif (cmd == "exit"):
-			return model!
+			return True!
+		elif (cmd == "drop"):
+			return False!
 		elif (cmd == "upload"):
 		elif (cmd == "upload"):
 			output(cmd_upload(write, model))
 			output(cmd_upload(write, model))
 		elif (cmd == "instantiate_node"):
 		elif (cmd == "instantiate_node"):
@@ -565,7 +567,6 @@ Element function modify(model : Element, write : Boolean):
 		else:
 		else:
 			output("Unknown command while modelling: " + cast_value(cmd))
 			output("Unknown command while modelling: " + cast_value(cmd))
 			output("Use command 'help' to get a list of available commands")
 			output("Use command 'help' to get a list of available commands")
-	return model!
 
 
 String function single_input(prompt : String):
 String function single_input(prompt : String):
 	if (verbose):
 	if (verbose):

+ 1 - 1
interface/HUTN/includes/mini_modify.alh

@@ -1,4 +1,4 @@
-Element function modify(model : Element, write : Boolean)
+Boolean function modify(model : Element, write : Boolean)
 String function pretty_print(model : Element)
 String function pretty_print(model : Element)
 String function single_input(prompt : String)
 String function single_input(prompt : String)
 Element function set_input(prompt : String)
 Element function set_input(prompt : String)

+ 1 - 1
wrappers/modelverse_SCCD.py

@@ -1,7 +1,7 @@
 """
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
 
-Date:   Wed Nov  8 16:39:47 2017
+Date:   Wed Nov  8 16:53:59 2017
 
 
 Model author: Yentl Van Tendeloo
 Model author: Yentl Van Tendeloo
 Model name:   MvK Server
 Model name:   MvK Server