main.py 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  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. Omit this argument to create a new, empty model.")
  63. parser.add_argument("-c", nargs=2, help="Copy model from one location to another. Useful to resuse example models"
  64. "as instance models")
  65. args = parser.parse_args()
  66. mv.init()
  67. mv.login("admin", "admin")
  68. # load modelverse with necessary models
  69. if args.u:
  70. upload_graph_MM()
  71. upload_consyn_MM()
  72. upload_consyn()
  73. upload_example_models()
  74. upload_instance_model()
  75. print("Uploading evolution transformations ...")
  76. upload_ops.upload_evolution_ops()
  77. # copy model from src to dest
  78. if args.c:
  79. if not len(args.c) == 2:
  80. print("Please specify source and target location for copy")
  81. sys.exit(-1)
  82. src = args.c[0]
  83. dest = args.c[1]
  84. print("Copying model {} to {}".format(src, dest))
  85. mv.model_move(src, dest)
  86. sys.exit(0)
  87. # determine modeling mode
  88. mode = None
  89. if args.im and args.exm or (not args.im and not args.exm):
  90. print("Choose either im or exm")
  91. sys.exit(0)
  92. if args.im:
  93. mode = "IM"
  94. else:
  95. mode = "EXM"
  96. # open existing model?
  97. if args.m:
  98. model = args.m
  99. print("Checking if model {} exists ...".format(model))
  100. if model not in all_models():
  101. print("No such model: {}".format(model))
  102. sys.exit(-1)
  103. else:
  104. # no model to open, create an empty one
  105. if mode == "IM":
  106. model = new_instance_model()
  107. else:
  108. model = new_example_model()
  109. print("Starting UI ...")
  110. run_ui(mode, model)
  111. print("verify ... ")
  112. print(mv.verify(model, "formalisms/graphMM"))