import sys import argparse import wrappers.modelverse as mv from commons import new_instance_model, new_example_model, all_models from sketchUI.main import run_ui from evolution import upload_ops def upload_graph_MM(): print("Uploading graph metamodel ...") try: mv.model_delete("formalisms/graphMM") except mv.UnknownLocation: pass content = open("models/sketching/graphMM.mvc").read() mv.model_add("formalisms/graphMM", "formalisms/SimpleClassDiagrams", content) def upload_consyn_MM(): print("Uploading Concrete Syntax metamodel ...") try: mv.model_delete("formalisms/consynMM") except mv.UnknownLocation: pass content = open("models/sketching/ConsynMM.mvc").read() mv.model_add("formalisms/consynMM", "formalisms/SimpleClassDiagrams", content) def upload_consyn(): print("Uploading concrete syntax models ...") try: mv.model_delete("models/consyn") except mv.UnknownLocation: pass content = open("models/sketching/cs_router.mvc").read() mv.model_add("models/consyn/Router", "formalisms/consynMM", content) mv.verify("models/consyn/Router", "formalisms/consynMM") def upload_example_models(): print("Uploading example models ...") # clear all example models try: mv.model_delete("models/example") except mv.UnknownLocation: # folder does not exist, ignore pass content = open("models/sketching/example_model_1.mvc").read() mv.model_add("models/example/ex1", "formalisms/graphMM", content) mv.verify("models/example/ex1", "formalisms/graphMM") content = open("models/sketching/example_model_2.mvc").read() mv.model_add("models/example/ex2", "formalisms/graphMM", content) mv.verify("models/example/ex2", "formalisms/graphMM") def upload_instance_model(): print("Uploading instance model ...") # clear all example models try: mv.model_delete("models/instance") except mv.UnknownLocation: # folder does not exist, ignore pass content = open("models/sketching/instance_model.mvc").read() mv.model_add("models/instance/im1", "formalisms/graphMM", content) mv.verify("models/instance/im1", "formalisms/graphMM") if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("-u", action="store_true", default=False, help="Upload metamodels to Modelverse at startup") parser.add_argument("-im", action="store_true", default=False, help="Instance modeling") parser.add_argument("-exm", action="store_true", default=False, help="Example modeling") parser.add_argument("-m", help="Model to open. Omit this argument to create a new, empty model.") parser.add_argument("-c", nargs=2, help="Copy model from one location to another. Useful to resuse example models" "as instance models") args = parser.parse_args() mv.init() mv.login("admin", "admin") # load modelverse with necessary models if args.u: upload_graph_MM() upload_consyn_MM() upload_consyn() upload_example_models() upload_instance_model() print("Uploading evolution transformations ...") upload_ops.upload_evolution_ops() # copy model from src to dest if args.c: if not len(args.c) == 2: print("Please specify source and target location for copy") sys.exit(-1) src = args.c[0] dest = args.c[1] print("Copying model {} to {}".format(src, dest)) mv.model_move(src, dest) sys.exit(0) # determine modeling mode mode = None if args.im and args.exm or (not args.im and not args.exm): print("Choose either im or exm") sys.exit(0) if args.im: mode = "IM" else: mode = "EXM" # open existing model? if args.m: model = args.m print("Checking if model {} exists ...".format(model)) if model not in all_models(): print("No such model: {}".format(model)) sys.exit(-1) else: # no model to open, create an empty one if mode == "IM": model = new_instance_model() else: model = new_example_model() print("Starting UI ...") run_ui(mode, model) print("verify ... ") print(mv.verify(model, "formalisms/graphMM"))