main.py 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. import sys
  2. import argparse
  3. import wrappers.modelverse as mv
  4. from commons import new_instance_model, new_example_model, all_models
  5. from sketchUI.main import run_ui
  6. from evolution import upload_ops
  7. def upload_graph_MM():
  8. print("Uploading graph metamodel ...")
  9. try:
  10. mv.model_delete("formalisms/graphMM")
  11. except mv.UnknownLocation:
  12. pass
  13. content = open("models/sketching/graphMM.mvc").read()
  14. mv.model_add("formalisms/graphMM", "formalisms/SimpleClassDiagrams", content)
  15. def upload_consyn_MM():
  16. print("Uploading Concrete Syntax metamodel ...")
  17. try:
  18. mv.model_delete("formalisms/consynMM")
  19. except mv.UnknownLocation:
  20. pass
  21. content = open("models/sketching/ConsynMM.mvc").read()
  22. mv.model_add("formalisms/consynMM", "formalisms/SimpleClassDiagrams", content)
  23. def upload_consyn():
  24. print("Uploading concrete syntax models ...")
  25. try:
  26. mv.model_delete("models/consyn")
  27. except mv.UnknownLocation:
  28. pass
  29. content = open("models/sketching/cs_router.mvc").read()
  30. mv.model_add("models/consyn/Router", "formalisms/consynMM", content)
  31. mv.verify("models/consyn/Router", "formalisms/consynMM")
  32. def upload_example_models():
  33. print("Uploading example models ...")
  34. # clear all example models
  35. try:
  36. mv.model_delete("models/example")
  37. except mv.UnknownLocation:
  38. # folder does not exist, ignore
  39. pass
  40. content = open("models/sketching/example_model_1.mvc").read()
  41. mv.model_add("models/example/ex1", "formalisms/graphMM", content)
  42. mv.verify("models/example/ex1", "formalisms/graphMM")
  43. content = open("models/sketching/example_model_2.mvc").read()
  44. mv.model_add("models/example/ex2", "formalisms/graphMM", content)
  45. mv.verify("models/example/ex2", "formalisms/graphMM")
  46. def upload_instance_model():
  47. print("Uploading instance model ...")
  48. # clear all example models
  49. try:
  50. mv.model_delete("models/instance")
  51. except mv.UnknownLocation:
  52. # folder does not exist, ignore
  53. pass
  54. content = open("models/sketching/instance_model.mvc").read()
  55. mv.model_add("models/instance/im1", "formalisms/graphMM", content)
  56. mv.verify("models/instance/im1", "formalisms/graphMM")
  57. if __name__ == "__main__":
  58. parser = argparse.ArgumentParser()
  59. parser.add_argument("-u", action="store_true", default=False, help="Upload metamodels to Modelverse at startup")
  60. parser.add_argument("-im", action="store_true", default=False, help="Instance modeling")
  61. parser.add_argument("-exm", action="store_true", default=False, help="Example modeling")
  62. parser.add_argument("-m", help="Model to open. Not using this argument will create a new, empty model.")
  63. args = parser.parse_args()
  64. mv.init()
  65. mv.login("admin", "admin")
  66. # load modelverse with necessary models
  67. if args.u:
  68. upload_graph_MM()
  69. upload_consyn_MM()
  70. upload_consyn()
  71. upload_example_models()
  72. upload_instance_model()
  73. print("Uploading evolution transformations ...")
  74. upload_ops.upload_evolution_ops()
  75. # determine modeling mode
  76. mode = None
  77. if args.im and args.exm or (not args.im and not args.exm):
  78. print("Choose either im or exm")
  79. sys.exit(0)
  80. if args.im:
  81. mode = "IM"
  82. else:
  83. mode = "EXM"
  84. # open existing model?
  85. if args.m:
  86. model = args.m
  87. print("Checking if model {} exists ...".format(model))
  88. if model not in all_models():
  89. print("No such model: {}".format(model))
  90. sys.exit(-1)
  91. else:
  92. # no model to open, create an empty one
  93. if mode == "IM":
  94. model = new_instance_model()
  95. else:
  96. model = new_example_model()
  97. print("Starting UI ...")
  98. run_ui(mode, model)
  99. print("verify ... ")
  100. print(mv.verify(model, "formalisms/graphMM"))