diff --git a/mdg/parse/sparx_db.py b/mdg/parse/sparx_db.py index dc788fa..604b2cf 100644 --- a/mdg/parse/sparx_db.py +++ b/mdg/parse/sparx_db.py @@ -328,7 +328,7 @@ def association_parse(session, tconnector: TConnector, package: UMLPackage, sour association.source_stereotypes = [tconnector.sourcestereotype,] if tconnector.deststereotype is not None: association.destination_stereotypes = [tconnector.deststereotype,] - + logging.debug(f"Created {association.cardinality} {association.association_type.name} from {association.source_name} to {association.destination_name}") return association @@ -362,7 +362,7 @@ def class_parse(session, package: UMLPackage, tobject: TObject) -> UMLClass: cls.is_abstract = True else: cls.is_abstract = False - + if tobject.isactive == 0: cls.is_active = False diff --git a/sample_recipes/drawio/config-drawio-schema.yaml b/sample_recipes/drawio/config-drawio-schema.yaml new file mode 100644 index 0000000..d5e9927 --- /dev/null +++ b/sample_recipes/drawio/config-drawio-schema.yaml @@ -0,0 +1,21 @@ +root_package: SampleDomain +model_package: Model +test_package: Test +source: ./sample_recipes/drawio/sample.xml +parser: drawio +dest_root: ./build/sample_drawio_django +templates_folder: ./mdg/templates +default_dialect: default +generation_artifacts: +# Avro Schema +- dest: "avro/{{cls.package.name}}.{{ cls.name }}.avsc" + level: class + source: "Schema/avro.avsc.jinja" +# OpenAPI Schema +- dest: "openapi/{{ package.name }}.yaml" + level: package + source: Schema/openapi.yaml.jinja + filter: "{% if package.classes %}True{% else %}False{% endif %}" +test_templates: +- dest: ./build/sample_drawio_django/json{{ins.package.path}}/{{ins.stereotype}}.json + format: json diff --git a/sample_recipes/drawio/sample.drawio b/sample_recipes/drawio/sample.drawio index 0620dd9..365ee8b 100644 --- a/sample_recipes/drawio/sample.drawio +++ b/sample_recipes/drawio/sample.drawio @@ -1 +1 @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/sample_recipes/drawio/sample.xml b/sample_recipes/drawio/sample.xml index 20f1726..461c6da 100644 --- a/sample_recipes/drawio/sample.xml +++ b/sample_recipes/drawio/sample.xml @@ -1,300 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +7V1tc6M4Ev41/nJVSSEw2P7ol2SmZjN7uUlmd+++TMlGttnByAc4jufXryQkzIvAwsYxTkhN1RgBEpKefrrV3YiOMV69fvLhevkV28jt6Jr92jEmHV0Hes8i/9GSXVRiDvSoYOE7Nr9oX/Dk/EK8UOOlG8dGQerCEGM3dNbpwhn2PDQLU2XQ9/E2fdkcu+lW13CBcgVPM+jmS/907HDJS4Gm7U98Rs5iyZvum/zEFM5+Lny88Xh7Hd3QBqZpjqLTKyjq4tcHS2jjbaLIuOsYYx/jMPq1eh0jl46tGLbovvuCs/Fz+8gLJTfg6d90uHTNhVMyZeyCJ7hau2iCV9Dxotu/f3143q35UDySHtHRYmdEO8biZjuzUaj9GvrOf7bhbumOb8x+3IH4wYJwJ8aUdJXVuVm59z5ckZ+j7dIJ0dMazmj5lkCJlC3DFX0wQH6ycUS0SY0cxUNFD2Z45cz4b9aXUTzwY+xin5zysEfbCEIf/4xnkVY7x154D1eOS8H5B/Jt6EFezJEIaLXQdRYeOZiRoUSkwhGynRBOWXdoNSv8wo/o1VvRgEmPlgIbBj2yfbx+hv4ChfxWAtuQjDatNeoomm38wHlB31AQPQG9be64rugMwdEITCb3Wtyj5JnhuD8xeBcS5aCv39HpGOVRwYHygvwQvSaK+Ox9QniFQn9HLhFnOWB36cPtXjp00OeFy4RkAFOUQi6Ti7juuLlvBJTQW5DBrNBeLIzJ5vRMY9Alc+fBEI0oNIKkLJAfiY7uixhyxSEXmELh4dR3itT0PqjUgOuTmhLaO0GWujJZ6knA3evVIUqS5hohSh3dckM6784L+bmgP58200gvAXGS1JM4ryp4oAdnU2j2un1kGgNregNqlrlWyg5K2Z6WeCvUcEso0FOlsFdVCnUFsbBkUpgVDDUpVGmumVIoiugMUUER1rr1/w01U0dg/zN7i5MSLHEVregmqmZILhisX6U1ELuUSpDsSEPeZoV8GDqY2KxafDp9a+pRSN+d7OORsqhT6eKpL7lQMiCSoqkoeCDTv2FEFNcwPVRrjszukr1MEtqLOd79/H3368f/vvS+27/rXfxo3OhGOattnZULGe8kmIsxC7+IkdfSce0HuMMbCsAgJNQljkZL7Du/KD3EtBdCX/CSWUYL+zufaI28LZ8xyqMQbRAXPcAgjMnUdeE6cBLcRtjK8UY4DPFKGDm8a/fp5ufsrwn0XEyL0J8l70yzZAV7XqrhqtBhf5AmKF1CUIbMwNf7R9GhlW6ur8iH5hn5MLeclotZlw8tdDexnC5cJ1hG5QmRI0MfZgyFFBA4zpJSw4sEglw0pzXQaXRm0B3y4hBTfguIPeJ4iwd2zaS7L/nGx6tbYLlgUt/cZRKxdGwbeQx5IUzq4zV2vJANsjki/8iwj7Vbs2OSfo3JMdgfk3/0cp9A1SP9I8YDbRsRGd4iKsdHg7qE5ZSQvUtD5hCSdasYyClM7QGkiJheDjH3pJezFjDNBIzwXl4OMP0cYMiEeC3FNBUxQNPPBpmKVnrOyG2S2Q6ndPZYb2q22QsurWi15wbxmcBrGD90aVPVzfuxC4PIYtHiNtiJZ3+T8WD0vvt3xviz/Zv335c/e3/B7dYDN0b3kgZ/12oN/tMN/gXDAO/VTxTOlmKsLrYSsMzDprnMPQnAUY4RK7MSAFq3gUsBuQDm9fRe+K2Y9DYhjghP0EOCEBLy6joFIMyhK6urV0TDumivnJ+p7p7cgJwC1/IKXJMoZiYljzhwmOch0XBaYx9SyjYMljGCxTM/ZOqOn32NfIfMD/KfogcURgJhnE7e6cglNnpSaNv7G9KCUyyIedEpIdkqxkBXYj7K5KVk3axqPcqf2CxEZUofUWyGbKaoOneYldDpjUjdvYm6K6y1R+u0R2uCoCmhUBkEz2+ONsr63IgoCZlPXfNw6Myd6LiJLuQJoty3Ql7S8jzJyiyMhyVyT1rX8ZVakpczGHvH2ovv13OclzAxqgpK2Y4F/3cWfR4yafSpidMq4TdQwgX0eKrPuSYFrGYExj6s8y5NSiD04VYrIL1aOX4dUgP+ZC7st1yDCFyr0B2tqHgF0lJdw6muf5m1xj7TAs94hoTMSFYxh+WLrouaxEZrEl+1SWxkbWJFITnSh3oVNrFczCrYxV5rDTfGJVVZTRjns4hlauLuNUQCwWkF8Al5yCcz+0uSVyfv66BUE5BmhvSVI3I0dTGl4xEpEjRkRYeUS/mUJnBYQJj7l4YkXHfH/vIzeM/+KtFZgDf+DCnMcigShAsv5PSG7NR7VXkwJGdfcJaPXDIVL8kbS/nvEUeWIoed2U1zH4jma19F1E1+1x5EuYqsQxVFw5CrqKa82xxQh0GAZ44qSkF59meWu6Zc4yfhmEAyXjM6ovMp7BlCLUu8wB507/alKf2fxnlCCBqG9UKj9zDONUWcn4jp7DsbRlZRq2LazAZXBdLeAtNAAuon9uBfN/RdTteZOeFOBdvliQ7MzE0ozQSklTR4ud2aNUczevTU141KsFwi5/Grr7zbHb3Cwo2fFaKhjNUC9XuU3QdkQUq9rnmN2e2iU1vVqGre1CoG+7Tb238px6MmxBx1PKbWqtKAdSoN+JGd2fJAEiza7eCSRJBPjj6GCIpm9qMzQW2Tq+SLG5NhY9Uc64qT5+OWL8BaV1zriqvgijNA64uTy1ns1DnKF9fmjjXyXYaBsrxcxlGnkgl1t1q7eIdOe5lWWdu0yqZVNjWlQhmaojABo0Sa3qWuUVc1c8cP2kyoBqmUBmkUNbBVSEYhSqLF2hVjzVRMfDob1vK7A7R5d03KuxsMht3h5IwI7OtqCKwh9U76wBXe/mkz766d7gZvvVjLLasKo9R/WT8+Tb4v1n+PftuCP9ZwqM3/fWDjtTZIXTFIXQaic8eo4+0+xYZBRmZRoRqjNsCBipoWo5Yiu9xt8F5D1MVC3qQw5qEVqrQXshVq9bjUtQaor2NiLxaflg7PyVkq1xmePi9UqgcwC1KqzJSSudG7txkLHM/nATpNw6gxSz2pL1cb8W4aXt7S/i3PYGnt3739KzVtgd4sG1jPbJXTtY61gfsHKjqnDRypx3rM4PLd7D+UGWxdzFoqyAVOK8DsKuvN1J9s06QPblhfDioVlJ9sqXy8sVye0/WxjOXapr8uY1lkZ785NwhXUGsbNwMepySDfsHTz04Q4trzQUG5r61N0WlTdNRTdEzV7ATQ7R6k0XeVogMq5OgwAflhk8eLIorsV5sH2pzIolg5X1HWjvQVsTaVojmpFCVbGNWEQdVsnnPlUoB2G6OPRHnW+bYyUvzwg16ItwTlkVEK99uWtrT37mhPNavnbLRXnMQoSZjlHzpj5Cf57FlLe02nvUH/bLR3niSyNousbCl81LY+pS+PnTuM1s2skXNfvVTe7iT7EbtsRVeRSnbAv/WhgmjgcjlHpVG0t/eMt/loTQLHxeJmp++F9I4CZ/UBoO7IWRxl793ql2KMNs+sWYg5LYn1aTOd4BVZPOjKqayPZFLYYizJKtLPp1sHdjteQlbnZuXe++ztSOmyKYGe/TSz6bx0XAqJL7/w0Bp+SYBerHsA+xBJvOJhgT7bx+tnYScD9vReSCaB1soDebONH5Dp/4b4R27K4oPFuE4DUquEdOmUmr2qiAYg8yaG9CP1lmRl2Mva2WqxMbUGZSvRMwbHlGLb39DipC3H5e/El69r27j2O45rl7Bypa+4Z/c6MvIC1e51RGWt2NPe7nV0pZ7PeC/5JsS4z+P5bPj7Ax7+sqHfzSvj5rrdoKXGz8E3CoSL86AvVIDr3L7Q7I7NxrG+UGtwoKLr8IW+4xcKKq9dG5cmfpxfon0B4Aqmtlmv1oL2dYFzgOXNtn6Wb5nQJvtfxeTKqOCZ2u+neBzNA5s6v1uPI2iKx/FU/2K/AJAUu8zng2wVmGZcgH3rSB+gostRpTUlF2edPgty6GMcJu8m+F5+xTaVt7t/AA== \ No newline at end of file