diff --git a/.gitattributes b/.gitattributes old mode 100755 new mode 100644 diff --git a/.gitignore b/.gitignore old mode 100755 new mode 100644 diff --git a/.lfsconfig b/.lfsconfig old mode 100755 new mode 100644 diff --git a/Compiled Plugins/V2.0/PiacereIDEIntegration.KR03_1.0.0.202206131844.jar b/Compiled Plugins/V2.0/PiacereIDEIntegration.KR03_1.0.0.202206131844.jar new file mode 100644 index 0000000000000000000000000000000000000000..1b1aab8d74f5dd5c88a17569996261df84831b00 Binary files /dev/null and b/Compiled Plugins/V2.0/PiacereIDEIntegration.KR03_1.0.0.202206131844.jar differ diff --git a/Compiled Plugins/V2.0/PiacereIDEIntegration.KR05_1.0.0.202206131844.jar b/Compiled Plugins/V2.0/PiacereIDEIntegration.KR05_1.0.0.202206131844.jar new file mode 100644 index 0000000000000000000000000000000000000000..b34e5b50b5eb9cc9b1d7e982341efcd5923c3e85 Binary files /dev/null and b/Compiled Plugins/V2.0/PiacereIDEIntegration.KR05_1.0.0.202206131844.jar differ diff --git a/Compiled Plugins/V2.0/PiacereIDEIntegration.KR06And07_1.0.0.202206131844.jar b/Compiled Plugins/V2.0/PiacereIDEIntegration.KR06And07_1.0.0.202206131844.jar new file mode 100644 index 0000000000000000000000000000000000000000..342e9552be6bd636c65e2d3dd1f653f250d4af52 Binary files /dev/null and b/Compiled Plugins/V2.0/PiacereIDEIntegration.KR06And07_1.0.0.202206131844.jar differ diff --git a/Compiled Plugins/V2.0/PiacereIDEIntegration.KR08_1.0.0.202206131844.jar b/Compiled Plugins/V2.0/PiacereIDEIntegration.KR08_1.0.0.202206131844.jar new file mode 100644 index 0000000000000000000000000000000000000000..e2b5a2d11ab0647616d371cb7a9a9a8cec7c1757 Binary files /dev/null and b/Compiled Plugins/V2.0/PiacereIDEIntegration.KR08_1.0.0.202206131844.jar differ diff --git a/Compiled Plugins/V2.0/PiacereIDEIntegration.KR09_1.0.0.202206131844.jar b/Compiled Plugins/V2.0/PiacereIDEIntegration.KR09_1.0.0.202206131844.jar new file mode 100644 index 0000000000000000000000000000000000000000..264c4d9a10b18239b72e998c556b72f31938342e Binary files /dev/null and b/Compiled Plugins/V2.0/PiacereIDEIntegration.KR09_1.0.0.202206131844.jar differ diff --git a/Compiled Plugins/V2.0/PiacereIDEIntegration.KR10_KR11_KR12_1.0.0.202206131844.jar b/Compiled Plugins/V2.0/PiacereIDEIntegration.KR10_KR11_KR12_1.0.0.202206131844.jar new file mode 100644 index 0000000000000000000000000000000000000000..267ab28bed6356b99490c386cbeadf6560027073 Binary files /dev/null and b/Compiled Plugins/V2.0/PiacereIDEIntegration.KR10_KR11_KR12_1.0.0.202206131844.jar differ diff --git a/Compiled Plugins/V2.0/PiacereIDEIntegration.KRIEC_1.0.0.202206131844.jar b/Compiled Plugins/V2.0/PiacereIDEIntegration.KRIEC_1.0.0.202206131844.jar new file mode 100644 index 0000000000000000000000000000000000000000..b7522575221db9eb2a730a53c2787023ce1c408a Binary files /dev/null and b/Compiled Plugins/V2.0/PiacereIDEIntegration.KRIEC_1.0.0.202206131844.jar differ diff --git a/Compiled Plugins/V2.0/PiacereToolCustomization_1.0.0.202206131844.jar b/Compiled Plugins/V2.0/PiacereToolCustomization_1.0.0.202206131844.jar new file mode 100644 index 0000000000000000000000000000000000000000..709c15b05f804111e3fa32a23a1dc802888c12b5 Binary files /dev/null and b/Compiled Plugins/V2.0/PiacereToolCustomization_1.0.0.202206131844.jar differ diff --git a/Compiled Plugins/V2.0/PiacereToolExtensions_1.0.0.202206131844.jar b/Compiled Plugins/V2.0/PiacereToolExtensions_1.0.0.202206131844.jar new file mode 100644 index 0000000000000000000000000000000000000000..e71dd5b4a0909dc875b5048e6a8f4a44329d6ad2 Binary files /dev/null and b/Compiled Plugins/V2.0/PiacereToolExtensions_1.0.0.202206131844.jar differ diff --git a/Compiled Plugins/V2.0/eu.piacere.doml.edit_1.0.0.202206131844.jar b/Compiled Plugins/V2.0/eu.piacere.doml.edit_1.0.0.202206131844.jar new file mode 100644 index 0000000000000000000000000000000000000000..fe0041aaf942d93cdb8812cc4ae30d0c2120d174 Binary files /dev/null and b/Compiled Plugins/V2.0/eu.piacere.doml.edit_1.0.0.202206131844.jar differ diff --git a/Compiled Plugins/V2.0/eu.piacere.doml.editor_1.0.0.202206131844.jar b/Compiled Plugins/V2.0/eu.piacere.doml.editor_1.0.0.202206131844.jar new file mode 100644 index 0000000000000000000000000000000000000000..d2ab78243f8585c23fec6c9c05093bc0e28ecc9c Binary files /dev/null and b/Compiled Plugins/V2.0/eu.piacere.doml.editor_1.0.0.202206131844.jar differ diff --git a/Compiled Plugins/V2.0/eu.piacere.doml.grammar.ide_1.0.0.202206131844.jar b/Compiled Plugins/V2.0/eu.piacere.doml.grammar.ide_1.0.0.202206131844.jar new file mode 100644 index 0000000000000000000000000000000000000000..1ed9611dffd8d4094db5e97087fc5eb32299e8c0 Binary files /dev/null and b/Compiled Plugins/V2.0/eu.piacere.doml.grammar.ide_1.0.0.202206131844.jar differ diff --git a/Compiled Plugins/V2.0/eu.piacere.doml.grammar.ui_1.0.0.202206131844.jar b/Compiled Plugins/V2.0/eu.piacere.doml.grammar.ui_1.0.0.202206131844.jar new file mode 100644 index 0000000000000000000000000000000000000000..747c11348cb8f347a95855754bfe17cfda863b62 Binary files /dev/null and b/Compiled Plugins/V2.0/eu.piacere.doml.grammar.ui_1.0.0.202206131844.jar differ diff --git a/Compiled Plugins/V2.0/eu.piacere.doml.grammar_1.0.0.202206131844.jar b/Compiled Plugins/V2.0/eu.piacere.doml.grammar_1.0.0.202206131844.jar new file mode 100644 index 0000000000000000000000000000000000000000..0c2f8718422d8a2887cac640ff354787c8619595 Binary files /dev/null and b/Compiled Plugins/V2.0/eu.piacere.doml.grammar_1.0.0.202206131844.jar differ diff --git a/Compiled Plugins/V2.0/eu.piacere.doml_0.1.0.202206131844.jar b/Compiled Plugins/V2.0/eu.piacere.doml_0.1.0.202206131844.jar new file mode 100644 index 0000000000000000000000000000000000000000..f7f56311c45e4a8a49111685520932638885b498 Binary files /dev/null and b/Compiled Plugins/V2.0/eu.piacere.doml_0.1.0.202206131844.jar differ diff --git a/Compiled Plugins/V2.1/PiacereIDEIntegration.KR03_1.0.0.202210191821.jar b/Compiled Plugins/V2.1/PiacereIDEIntegration.KR03_1.0.0.202210191821.jar new file mode 100644 index 0000000000000000000000000000000000000000..1f938c8a5e207007a30f0357126b791e0e5bc855 Binary files /dev/null and b/Compiled Plugins/V2.1/PiacereIDEIntegration.KR03_1.0.0.202210191821.jar differ diff --git a/Compiled Plugins/V2.1/PiacereIDEIntegration.KR05_1.0.0.202210191821.jar b/Compiled Plugins/V2.1/PiacereIDEIntegration.KR05_1.0.0.202210191821.jar new file mode 100644 index 0000000000000000000000000000000000000000..3e677b9e9c1703c0c8b2430f8220bd288c4922ad Binary files /dev/null and b/Compiled Plugins/V2.1/PiacereIDEIntegration.KR05_1.0.0.202210191821.jar differ diff --git a/Compiled Plugins/V2.1/PiacereIDEIntegration.KR06And07_1.0.0.202210191821.jar b/Compiled Plugins/V2.1/PiacereIDEIntegration.KR06And07_1.0.0.202210191821.jar new file mode 100644 index 0000000000000000000000000000000000000000..b7c842b224d4f4b7cc3e49d68ff1496d9dc7ca29 Binary files /dev/null and b/Compiled Plugins/V2.1/PiacereIDEIntegration.KR06And07_1.0.0.202210191821.jar differ diff --git a/Compiled Plugins/V2.1/PiacereIDEIntegration.KR08_1.0.0.202210191821.jar b/Compiled Plugins/V2.1/PiacereIDEIntegration.KR08_1.0.0.202210191821.jar new file mode 100644 index 0000000000000000000000000000000000000000..70d33a5a60c6acc304e04ca3ce530e6adb185524 Binary files /dev/null and b/Compiled Plugins/V2.1/PiacereIDEIntegration.KR08_1.0.0.202210191821.jar differ diff --git a/Compiled Plugins/V2.1/PiacereIDEIntegration.KR09_1.0.0.202210191821.jar b/Compiled Plugins/V2.1/PiacereIDEIntegration.KR09_1.0.0.202210191821.jar new file mode 100644 index 0000000000000000000000000000000000000000..5ab004999675404d62634e28d615c073b5c2f6b8 Binary files /dev/null and b/Compiled Plugins/V2.1/PiacereIDEIntegration.KR09_1.0.0.202210191821.jar differ diff --git a/Compiled Plugins/V2.1/PiacereIDEIntegration.KR10_KR11_KR12_1.0.0.202210191821.jar b/Compiled Plugins/V2.1/PiacereIDEIntegration.KR10_KR11_KR12_1.0.0.202210191821.jar new file mode 100644 index 0000000000000000000000000000000000000000..332f555e35e9b6c155cfea2730311c1143c22c1c Binary files /dev/null and b/Compiled Plugins/V2.1/PiacereIDEIntegration.KR10_KR11_KR12_1.0.0.202210191821.jar differ diff --git a/Compiled Plugins/V2.1/PiacereIDEIntegration.KRIEC_1.0.0.202210191821.jar b/Compiled Plugins/V2.1/PiacereIDEIntegration.KRIEC_1.0.0.202210191821.jar new file mode 100644 index 0000000000000000000000000000000000000000..39b6fa66449d4fbac0fa9ae1d6aca2e4b08231b1 Binary files /dev/null and b/Compiled Plugins/V2.1/PiacereIDEIntegration.KRIEC_1.0.0.202210191821.jar differ diff --git a/Compiled Plugins/V2.1/PiacereToolCustomization_1.0.0.202210191821.jar b/Compiled Plugins/V2.1/PiacereToolCustomization_1.0.0.202210191821.jar new file mode 100644 index 0000000000000000000000000000000000000000..22ee9ca92497e30ae1f502779f418cdd861c6209 Binary files /dev/null and b/Compiled Plugins/V2.1/PiacereToolCustomization_1.0.0.202210191821.jar differ diff --git a/Compiled Plugins/V2.1/PiacereToolExtensions_1.0.0.202210191821.jar b/Compiled Plugins/V2.1/PiacereToolExtensions_1.0.0.202210191821.jar new file mode 100644 index 0000000000000000000000000000000000000000..a3f6494c6f5d228111b2313f15a38e714313bdec Binary files /dev/null and b/Compiled Plugins/V2.1/PiacereToolExtensions_1.0.0.202210191821.jar differ diff --git a/Compiled Plugins/V2.1/eu.piacere.doml.edit_1.0.0.202210191821.jar b/Compiled Plugins/V2.1/eu.piacere.doml.edit_1.0.0.202210191821.jar new file mode 100644 index 0000000000000000000000000000000000000000..74b71c71b3226f180c796433d5f8b5354747a0eb Binary files /dev/null and b/Compiled Plugins/V2.1/eu.piacere.doml.edit_1.0.0.202210191821.jar differ diff --git a/Compiled Plugins/V2.1/eu.piacere.doml.editor_1.0.0.202210191821.jar b/Compiled Plugins/V2.1/eu.piacere.doml.editor_1.0.0.202210191821.jar new file mode 100644 index 0000000000000000000000000000000000000000..cdb71ea0e500782dcd1e8bdd9afaf2dd66be1b1a Binary files /dev/null and b/Compiled Plugins/V2.1/eu.piacere.doml.editor_1.0.0.202210191821.jar differ diff --git a/Compiled Plugins/V2.1/eu.piacere.doml.grammar.ide_1.0.0.202210191821.jar b/Compiled Plugins/V2.1/eu.piacere.doml.grammar.ide_1.0.0.202210191821.jar new file mode 100644 index 0000000000000000000000000000000000000000..ac16895d51c8f47c2b4de748362d01090cd26286 Binary files /dev/null and b/Compiled Plugins/V2.1/eu.piacere.doml.grammar.ide_1.0.0.202210191821.jar differ diff --git a/Compiled Plugins/V2.1/eu.piacere.doml.grammar.ui_1.0.0.202210191821.jar b/Compiled Plugins/V2.1/eu.piacere.doml.grammar.ui_1.0.0.202210191821.jar new file mode 100644 index 0000000000000000000000000000000000000000..e6eac68ac0532756b8b945429db726e3d9c939a6 Binary files /dev/null and b/Compiled Plugins/V2.1/eu.piacere.doml.grammar.ui_1.0.0.202210191821.jar differ diff --git a/Compiled Plugins/V2.1/eu.piacere.doml.grammar_1.0.0.202210191821.jar b/Compiled Plugins/V2.1/eu.piacere.doml.grammar_1.0.0.202210191821.jar new file mode 100644 index 0000000000000000000000000000000000000000..11266ee19369c152157f694ce75aab69b952dc85 Binary files /dev/null and b/Compiled Plugins/V2.1/eu.piacere.doml.grammar_1.0.0.202210191821.jar differ diff --git a/Compiled Plugins/V2.1/eu.piacere.doml_0.1.0.202210191821.jar b/Compiled Plugins/V2.1/eu.piacere.doml_0.1.0.202210191821.jar new file mode 100644 index 0000000000000000000000000000000000000000..6c137a31107cf31eb5e868938aa3f744fb27eea2 Binary files /dev/null and b/Compiled Plugins/V2.1/eu.piacere.doml_0.1.0.202210191821.jar differ diff --git a/ECLIPSE_BASED_IDE/DOML 1.0/OSX/.gitkeep b/ECLIPSE_BASED_IDE/DOML 1.0/OSX/.gitkeep old mode 100755 new mode 100644 diff --git a/ECLIPSE_BASED_IDE/DOML 1.0/OSX/Piacere.zip b/ECLIPSE_BASED_IDE/DOML 1.0/OSX/Piacere.zip old mode 100755 new mode 100644 diff --git a/ECLIPSE_BASED_IDE/DOML 1.0/UBUNTU ARM/.gitkeep b/ECLIPSE_BASED_IDE/DOML 1.0/UBUNTU ARM/.gitkeep old mode 100755 new mode 100644 diff --git a/ECLIPSE_BASED_IDE/DOML 1.0/UBUNTU ARM/Piacere.zip b/ECLIPSE_BASED_IDE/DOML 1.0/UBUNTU ARM/Piacere.zip old mode 100755 new mode 100644 diff --git a/ECLIPSE_BASED_IDE/DOML 1.0/UBUNTU x86-64/.gitkeep b/ECLIPSE_BASED_IDE/DOML 1.0/UBUNTU x86-64/.gitkeep old mode 100755 new mode 100644 diff --git a/ECLIPSE_BASED_IDE/DOML 1.0/UBUNTU x86-64/Piacere.zip b/ECLIPSE_BASED_IDE/DOML 1.0/UBUNTU x86-64/Piacere.zip old mode 100755 new mode 100644 diff --git a/ECLIPSE_BASED_IDE/DOML 1.0/WIN/Piacere.zip b/ECLIPSE_BASED_IDE/DOML 1.0/WIN/Piacere.zip old mode 100755 new mode 100644 diff --git a/ECLIPSE_BASED_IDE/DOML 2.0/OSX/Piacere.zip b/ECLIPSE_BASED_IDE/DOML 2.0/OSX/Piacere.zip old mode 100755 new mode 100644 diff --git a/ECLIPSE_BASED_IDE/DOML 2.0/OSX/dummy b/ECLIPSE_BASED_IDE/DOML 2.0/OSX/dummy old mode 100755 new mode 100644 diff --git a/ECLIPSE_BASED_IDE/DOML 2.0/UBUNTU ARM/Piacere.zip b/ECLIPSE_BASED_IDE/DOML 2.0/UBUNTU ARM/Piacere.zip old mode 100755 new mode 100644 diff --git a/ECLIPSE_BASED_IDE/DOML 2.0/UBUNTU ARM/dummy b/ECLIPSE_BASED_IDE/DOML 2.0/UBUNTU ARM/dummy old mode 100755 new mode 100644 diff --git a/ECLIPSE_BASED_IDE/DOML 2.0/UBUNTU x86-64/PIACERE.zip b/ECLIPSE_BASED_IDE/DOML 2.0/UBUNTU x86-64/PIACERE.zip old mode 100755 new mode 100644 diff --git a/ECLIPSE_BASED_IDE/DOML 2.0/UBUNTU x86-64/dummy b/ECLIPSE_BASED_IDE/DOML 2.0/UBUNTU x86-64/dummy old mode 100755 new mode 100644 diff --git a/ECLIPSE_BASED_IDE/DOML 2.0/WIN/Piacere.zip b/ECLIPSE_BASED_IDE/DOML 2.0/WIN/Piacere.zip old mode 100755 new mode 100644 diff --git a/ECLIPSE_BASED_IDE/DOML 2.0/WIN/dummy b/ECLIPSE_BASED_IDE/DOML 2.0/WIN/dummy old mode 100755 new mode 100644 diff --git a/ECLIPSE_BASED_IDE/DOML 2.1/OSX/Piacere.zip b/ECLIPSE_BASED_IDE/DOML 2.1/OSX/Piacere.zip new file mode 100644 index 0000000000000000000000000000000000000000..1cb11a59fca5d9312aff8c7ed32c09b351f783e7 --- /dev/null +++ b/ECLIPSE_BASED_IDE/DOML 2.1/OSX/Piacere.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:965bcbacd17b00fd1f964cfe17c617ab2bb823690a7e1f948bab2abeb734c21a +size 605928102 diff --git a/ECLIPSE_BASED_IDE/DOML 2.1/OSX/dummy b/ECLIPSE_BASED_IDE/DOML 2.1/OSX/dummy new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/ECLIPSE_BASED_IDE/DOML 2.1/UBUNTU ARM/Piacere.zip b/ECLIPSE_BASED_IDE/DOML 2.1/UBUNTU ARM/Piacere.zip new file mode 100644 index 0000000000000000000000000000000000000000..81b69d6236249c1693ef75371ee7b209359f0f19 --- /dev/null +++ b/ECLIPSE_BASED_IDE/DOML 2.1/UBUNTU ARM/Piacere.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:22edfa35c7c1ef8d7e2d8f17087ae284bc152eeb123d23f49d28d401aa95e3ce +size 470222437 diff --git a/ECLIPSE_BASED_IDE/DOML 2.1/UBUNTU ARM/dummy b/ECLIPSE_BASED_IDE/DOML 2.1/UBUNTU ARM/dummy new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/ECLIPSE_BASED_IDE/DOML 2.1/UBUNTU x86-64/Piacere.zip b/ECLIPSE_BASED_IDE/DOML 2.1/UBUNTU x86-64/Piacere.zip new file mode 100644 index 0000000000000000000000000000000000000000..8862a7e0cc297dbf774904ad61a9e55f183c67e0 --- /dev/null +++ b/ECLIPSE_BASED_IDE/DOML 2.1/UBUNTU x86-64/Piacere.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fbdbeb6cd29e6339466830b96a2686a00c788cdcf95688203917df3eedcaa5f1 +size 622675584 diff --git a/ECLIPSE_BASED_IDE/DOML 2.1/UBUNTU x86-64/dummy b/ECLIPSE_BASED_IDE/DOML 2.1/UBUNTU x86-64/dummy new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/ECLIPSE_BASED_IDE/DOML 2.1/WIN/Piacere.zip b/ECLIPSE_BASED_IDE/DOML 2.1/WIN/Piacere.zip new file mode 100644 index 0000000000000000000000000000000000000000..999e9da511ddc223ff77a85ab91341a8d034cedc --- /dev/null +++ b/ECLIPSE_BASED_IDE/DOML 2.1/WIN/Piacere.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7f3a2b447be8167c24ce697b2ea1fcd161d345889790ecbb52adb4d7434aa7a +size 602680391 diff --git a/ECLIPSE_BASED_IDE/DOML 2.1/WIN/dummy b/ECLIPSE_BASED_IDE/DOML 2.1/WIN/dummy new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/README.md b/README.md old mode 100755 new mode 100644 index 2b1dbde73c51cc3f3bd7f00a9358d66868ca0b8a..35791398e8d336d2be68b4c7139ee62d2e131ba5 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ echo you require lfs, the following command must report the installed version ot git lfs version echo this is something that I have done to be able to migrate the repo to lfs and avoid timeout problems git config lfs.activitytimeout 120 -git clone https://git.code.tecnalia.com/piacere/public/the-platform/ide.git +git clone https://git.code.tecnalia.com/piacere/private/ide_tool.git cd ide_tool echo choose your IDE ls -l "ECLIPSE_BASED_IDE/DOML 1.0/WIN/Piacere.zip" @@ -45,7 +45,7 @@ echo you require lfs, the following command must report the installed version ot git lfs version echo this is something that I have done to be able to migrate the repo to lfs and avoid timeout problems git config lfs.activitytimeout 120 -git clone https://git.code.tecnalia.com/piacere/public/the-platform/ide.git +git clone https://git.code.tecnalia.com/piacere/private/ide_tool.git cd ide_tool echo choose your IDE cp Somewhere/Piacere.zip "ECLIPSE_BASED_IDE/DOML 1.0/WIN/Piacere.zip" diff --git a/Source Code/.gitkeep b/Source Code/.gitkeep old mode 100755 new mode 100644 diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR03/.classpath b/Source Code/V2.0/PiacereIDEIntegration.KR03/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..81fe078c20c05db46a8281fbb1a72875a5322b45 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR03/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="src" path="src"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR03/.gitignore b/Source Code/V2.0/PiacereIDEIntegration.KR03/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..ae3c1726048cd06b9a143e0376ed46dd9b9a8d53 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR03/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR03/.project b/Source Code/V2.0/PiacereIDEIntegration.KR03/.project new file mode 100644 index 0000000000000000000000000000000000000000..851c45bf6199b05e81499352e11341bc20f790bf --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR03/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>PiacereIDEIntegration.KR03</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR03/.settings/org.eclipse.jdt.core.prefs b/Source Code/V2.0/PiacereIDEIntegration.KR03/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000000000000000000000000000000000000..62ef3488cc0468ee9c2d4440dfbbbd5877cd0c28 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR03/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,9 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 +org.eclipse.jdt.core.compiler.compliance=17 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=17 diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR03/META-INF/MANIFEST.MF b/Source Code/V2.0/PiacereIDEIntegration.KR03/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..951134b9c2629f1cf0c780e37603ec5633340c8c --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR03/META-INF/MANIFEST.MF @@ -0,0 +1,23 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: KR03 +Bundle-SymbolicName: PiacereIDEIntegration.KR03;singleton:=true +Bundle-Version: 1.0.0.qualifier +Automatic-Module-Name: PiacereIDEIntegration.KR03 +Require-Bundle: org.eclipse.ui, + org.eclipse.core.runtime, + org.apache.httpcomponents.httpcore +Import-Package: eu.piacere.doml.doml.commons, + eu.piacere.piacereTool.utils, + org.apache.commons.io, + org.apache.http.client;version="4.5.13", + org.apache.http.client.methods;version="4.5.13", + org.apache.http.impl.client;version="4.5.13", + org.eclipse.core.resources, + org.eclipse.core.runtime.preferences;version="3.4.0", + org.eclipse.emf.common.util, + org.eclipse.emf.ecore, + org.eclipse.emf.ecore.resource, + org.eclipse.emf.ecore.resource.impl, + org.eclipse.emf.ecore.util, + org.json diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR03/Piacere/PiacereIcon_16x16.png b/Source Code/V2.0/PiacereIDEIntegration.KR03/Piacere/PiacereIcon_16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..444de54d6cfe2958fac1bbb89dd8619b4c537c47 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR03/Piacere/PiacereIcon_16x16.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR03/build.properties b/Source Code/V2.0/PiacereIDEIntegration.KR03/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..52086a7c305694aa678bde0640768488a5cf8e4f --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR03/build.properties @@ -0,0 +1,6 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + .,\ + plugin.xml,\ + Piacere/ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR03/plugin.xml b/Source Code/V2.0/PiacereIDEIntegration.KR03/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..1ecca739d4a205cd2489cf76d9dcc1783c3b0b29 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR03/plugin.xml @@ -0,0 +1,49 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.4"?> +<plugin> + <extension + point="org.eclipse.ui.preferencePages"> + <page + category="PiacereToolCustomization.preferences.page1" + class="eu.piacere.ide.toolIntegration.kr03.preferencePage.KR03PreferencePage" + id="PiacereIDEIntegration.KR03.preferences.page1" + name="Infrastructural Code Generator Preferences"> + </page> + </extension> + <extension + point="org.eclipse.core.runtime.preferences"> + <initializer + class="eu.piacere.ide.toolIntegration.kr03.preferencePage.KR03PreferenceInitializer"> + </initializer> + </extension> + <extension + point="org.eclipse.ui.commands"> + <command + categoryId="eu.piacere.piacereModelsCommands.category.id" + defaultHandler="eu.piacere.ide.toolIntegration.kr03.commandHandlers.CodeGeneratorCommandHandler" + id="eu.piacere.piacereModelsCommands.codeGeneratorCommand.id" + name="Generate Code"> + </command> + </extension> + <extension + point="org.eclipse.ui.menus"> + <menuContribution + allPopups="false" + locationURI="popup:eu.piacere.eclipsePopupMenu.id"> + <command + commandId="eu.piacere.piacereModelsCommands.codeGeneratorCommand.id" + icon="Piacere/PiacereIcon_16x16.png" + label="Generate IaC Code" + style="push" + tooltip="Generate IaC code using DOML"> + <visibleWhen + checkEnabled="false"> + <reference + definitionId="eu.piacere.piacereTool.propertyTesters.extensionPropertyTester.isDOMLXModel.id"> + </reference> + </visibleWhen> + </command> + </menuContribution> + </extension> + +</plugin> diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR03/src/eu/piacere/ide/toolIntegration/kr03/commandHandlers/CodeGeneratorCommandHandler.java b/Source Code/V2.0/PiacereIDEIntegration.KR03/src/eu/piacere/ide/toolIntegration/kr03/commandHandlers/CodeGeneratorCommandHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..8c4e12287bab59afaf15913c2b7b606a1a8b43d7 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR03/src/eu/piacere/ide/toolIntegration/kr03/commandHandlers/CodeGeneratorCommandHandler.java @@ -0,0 +1,84 @@ +package eu.piacere.ide.toolIntegration.kr03.commandHandlers; + +import java.io.FileOutputStream; +import java.io.IOException; + +import org.apache.http.client.ClientProtocolException; +import org.apache.http.client.HttpClient; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.HttpClientBuilder; +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.ui.handlers.HandlerUtil; +import org.json.JSONException; + +import eu.piacere.piacereTool.utils.FileUtils; +import eu.piacere.piacereTool.utils.ToolCustomizationUtils; + +public class CodeGeneratorCommandHandler extends AbstractHandler{ + + private void doPostRequestToValidator(String fileContent, String path, String defaultFileName) throws ClientProtocolException, IOException, JSONException { + HttpClient httpClient = HttpClientBuilder.create().build(); + + String url=ToolCustomizationUtils.getPreference(this.getClass(), "KR03.protocol")+"://"+ToolCustomizationUtils.getPreference(this.getClass(), "KR03.host")+":"+ToolCustomizationUtils.getPreference(this.getClass(), "KR03.port")+"/iac/files"; + + HttpPost httpPost = new HttpPost(url); + + StringEntity entity = new StringEntity(fileContent); + httpPost.setEntity(entity); + + httpPost.setHeader("Accept", "application/json"); + httpPost.setHeader("Content-type", "application/xml"); + + CloseableHttpResponse response = (CloseableHttpResponse) httpClient.execute(httpPost); + if(response.getStatusLine().getStatusCode()==200) { + + String generationFileName=ToolCustomizationUtils.doDialogAsk("IaC Code Generator", "Enter the IaC Code File Name", defaultFileName); + + FileOutputStream fos = new FileOutputStream(path + "//" + generationFileName+"_"+FileUtils.getTimestamp()+".tar.gz"); + int br = -1; + byte[] buffer = new byte[4096]; + while ((br = response.getEntity().getContent().read(buffer)) != -1 ) { + fos.write(buffer, 0, br); + } + fos.close(); + } + + else { + ToolCustomizationUtils.showErrorDialog("Code Generator", "Error: " + response.getStatusLine().getStatusCode() + ".\n\nCan not generate the IaC code."); + } + } + + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + ToolCustomizationUtils.saveWorkbench(); + ISelection selection = HandlerUtil.getCurrentSelection(event); + if (selection instanceof StructuredSelection) { + if(((StructuredSelection)selection).getFirstElement() instanceof IFile){ + IFile res = (IFile)((StructuredSelection) selection).getFirstElement(); + + String fileContent=FileUtils.getIFileContents(res); + if(fileContent==null) { + return null; + } + + String path = res.getLocation().removeLastSegments(1).toString(); + try { + doPostRequestToValidator(fileContent, path, res.getFullPath().lastSegment().replace(".domlx", "")); + res.getParent().refreshLocal(IResource.DEPTH_INFINITE, null); + } catch (IOException | JSONException | CoreException e2) { + e2.printStackTrace(); + } + } + } + return null; + } +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR03/src/eu/piacere/ide/toolIntegration/kr03/preferencePage/KR03PreferenceInitializer.java b/Source Code/V2.0/PiacereIDEIntegration.KR03/src/eu/piacere/ide/toolIntegration/kr03/preferencePage/KR03PreferenceInitializer.java new file mode 100644 index 0000000000000000000000000000000000000000..7a5e270927f78167e5a913e7e4052ba7ecf74343 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR03/src/eu/piacere/ide/toolIntegration/kr03/preferencePage/KR03PreferenceInitializer.java @@ -0,0 +1,22 @@ +package eu.piacere.ide.toolIntegration.kr03.preferencePage; + +import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer; +import org.eclipse.core.runtime.preferences.ConfigurationScope; +import org.eclipse.ui.preferences.ScopedPreferenceStore; +import org.osgi.framework.FrameworkUtil; + +import eu.piacere.ide.toolIntegration.kr03.preferencePage.KR03PreferenceInitializer; + +public class KR03PreferenceInitializer extends AbstractPreferenceInitializer { + + @Override + public void initializeDefaultPreferences() { + + ScopedPreferenceStore scopedPreferenceStore = new ScopedPreferenceStore(ConfigurationScope.INSTANCE,(FrameworkUtil.getBundle(KR03PreferenceInitializer.class)).getSymbolicName()); + scopedPreferenceStore.setDefault("KR03.host", "icg.ci.piacere.digital.tecnalia.dev"); + scopedPreferenceStore.setDefault("KR03.port", 443); + scopedPreferenceStore.setDefault("KR03.protocol", "https"); + + } + +} \ No newline at end of file diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR03/src/eu/piacere/ide/toolIntegration/kr03/preferencePage/KR03PreferencePage.java b/Source Code/V2.0/PiacereIDEIntegration.KR03/src/eu/piacere/ide/toolIntegration/kr03/preferencePage/KR03PreferencePage.java new file mode 100644 index 0000000000000000000000000000000000000000..4c26e99bc5da8a16575ff91146258190919ecb52 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR03/src/eu/piacere/ide/toolIntegration/kr03/preferencePage/KR03PreferencePage.java @@ -0,0 +1,36 @@ +package eu.piacere.ide.toolIntegration.kr03.preferencePage; + +import org.eclipse.core.runtime.preferences.ConfigurationScope; +import org.eclipse.jface.preference.FieldEditorPreferencePage; +import org.eclipse.jface.preference.IntegerFieldEditor; +import org.eclipse.jface.preference.RadioGroupFieldEditor; +import org.eclipse.jface.preference.StringFieldEditor; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchPreferencePage; +import org.eclipse.ui.preferences.ScopedPreferenceStore; +import org.osgi.framework.FrameworkUtil; + +public class KR03PreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage { + + public KR03PreferencePage() { + super(GRID); + } + + @Override + public void init(IWorkbench workbench) { + //WHICH SCOPE SHOULD I SELECT: https://wiki.eclipse.org/FAQ_What_is_a_preference_scope%3F + + setPreferenceStore(new ScopedPreferenceStore(ConfigurationScope.INSTANCE, (FrameworkUtil.getBundle(KR03PreferenceInitializer.class)).getSymbolicName())); + setDescription("These Are The Infrastructural Code Generator Preferences"); + + } + + @Override + protected void createFieldEditors() { + addField(new StringFieldEditor("KR03.host", "Endpoint Host", getFieldEditorParent())); + addField(new IntegerFieldEditor("KR03.port", "Endpoint Port", getFieldEditorParent())); + addField(new RadioGroupFieldEditor("KR03.protocol", "Protocol", 1, new String[][] {{"HTTP","http"},{"HTTPS","https"}}, getFieldEditorParent())); + + } + +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR05/.classpath b/Source Code/V2.0/PiacereIDEIntegration.KR05/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..1fa3e6803d3b22e055b735220510616c4e35f2fc --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR05/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="src" path="src"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR05/.gitignore b/Source Code/V2.0/PiacereIDEIntegration.KR05/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..ae3c1726048cd06b9a143e0376ed46dd9b9a8d53 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR05/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR05/.project b/Source Code/V2.0/PiacereIDEIntegration.KR05/.project new file mode 100644 index 0000000000000000000000000000000000000000..1ae7a77bc897917bd4e7579cdbc86ebfaa189192 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR05/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>PiacereIDEIntegration.KR05</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR05/META-INF/MANIFEST.MF b/Source Code/V2.0/PiacereIDEIntegration.KR05/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..1e759f6bd6a99befc22c64b4edac3a95f3b81664 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR05/META-INF/MANIFEST.MF @@ -0,0 +1,23 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: KR05 +Bundle-SymbolicName: PiacereIDEIntegration.KR05;singleton:=true +Bundle-Version: 1.0.0.qualifier +Automatic-Module-Name: PiacereIDEIntegration.KR05 +Require-Bundle: org.eclipse.ui, + org.eclipse.core.runtime, + org.apache.httpcomponents.httpcore +Import-Package: eu.piacere.doml.doml.commons, + eu.piacere.piacereTool.utils, + org.apache.commons.io, + org.apache.http.client;version="4.5.13", + org.apache.http.client.methods;version="4.5.13", + org.apache.http.impl.client;version="4.5.13", + org.eclipse.core.resources, + org.eclipse.core.runtime.preferences;version="3.4.0", + org.eclipse.emf.common.util, + org.eclipse.emf.ecore, + org.eclipse.emf.ecore.resource, + org.eclipse.emf.ecore.resource.impl, + org.eclipse.emf.ecore.util, + org.json diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR05/Piacere/PiacereIcon_16x16.png b/Source Code/V2.0/PiacereIDEIntegration.KR05/Piacere/PiacereIcon_16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..444de54d6cfe2958fac1bbb89dd8619b4c537c47 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR05/Piacere/PiacereIcon_16x16.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR05/build.properties b/Source Code/V2.0/PiacereIDEIntegration.KR05/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..52086a7c305694aa678bde0640768488a5cf8e4f --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR05/build.properties @@ -0,0 +1,6 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + .,\ + plugin.xml,\ + Piacere/ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR05/plugin.xml b/Source Code/V2.0/PiacereIDEIntegration.KR05/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..21081ccf6ff1a358ecdb9681735807feae18b862 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR05/plugin.xml @@ -0,0 +1,50 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.4"?> +<plugin> + <extension + point="org.eclipse.ui.preferencePages"> + <page + category="PiacereToolCustomization.preferences.page1" + class="eu.piacere.ide.toolIntegration.kr05.preferencePage.KR05PreferencePage" + id="PiacereIDEIntegration.KR05.preferences.page1" + name="Model Checker Preferences"> + </page> + </extension> + <extension + point="org.eclipse.core.runtime.preferences"> + <initializer + class="eu.piacere.ide.toolIntegration.kr05.preferencePage.KR05PreferenceInitializer"> + </initializer> + </extension> + + <extension + point="org.eclipse.ui.commands"> + <command + categoryId="eu.piacere.piacereModelsCommands.category.id" + defaultHandler="eu.piacere.ide.toolIntegration.kr05.commandHandlers.ValidateDOMLCommandHandler" + id="eu.piacere.piacereModelsCommands.validateDOMLCommand.id" + name="Validate DOML"> + </command> + </extension> + <extension + point="org.eclipse.ui.menus"> + <menuContribution + allPopups="false" + locationURI="popup:eu.piacere.eclipsePopupMenu.id"> + <command + commandId="eu.piacere.piacereModelsCommands.validateDOMLCommand.id" + icon="Piacere/PiacereIcon_16x16.png" + label="Validate DOML" + style="push" + tooltip="Validate the DOML Specification"> + <visibleWhen + checkEnabled="false"> + <reference + definitionId="eu.piacere.piacereTool.propertyTesters.extensionPropertyTester.isDOMLXModel.id"> + </reference> + </visibleWhen> + </command> + </menuContribution> + </extension> + +</plugin> diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR05/src/eu/piacere/ide/toolIntegration/kr05/commandHandlers/ValidateDOMLCommandHandler.java b/Source Code/V2.0/PiacereIDEIntegration.KR05/src/eu/piacere/ide/toolIntegration/kr05/commandHandlers/ValidateDOMLCommandHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..07576ffcc1b75f671b34a3bc5240b0d1767fa92f --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR05/src/eu/piacere/ide/toolIntegration/kr05/commandHandlers/ValidateDOMLCommandHandler.java @@ -0,0 +1,149 @@ +package eu.piacere.ide.toolIntegration.kr05.commandHandlers; + +import java.io.IOException; + +import org.apache.http.client.ClientProtocolException; +import org.apache.http.client.HttpClient; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.util.EntityUtils; +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.jface.dialogs.ProgressMonitorDialog; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.ui.handlers.HandlerUtil; +import org.json.JSONException; +import org.json.JSONObject; + +import eu.piacere.piacereTool.utils.FileUtils; +import eu.piacere.piacereTool.utils.ToolCustomizationUtils; + + +public class ValidateDOMLCommandHandler extends AbstractHandler { + + private JSONObject doPostRequestToValidator(String fileContent) throws ClientProtocolException, IOException, JSONException { + HttpClient httpClient = HttpClientBuilder.create().build(); + + String url=ToolCustomizationUtils.getPreference(this.getClass(), "KR05.protocol")+"://"+ToolCustomizationUtils.getPreference(this.getClass(), "KR05.host"); + if(ToolCustomizationUtils.getPreference(this.getClass(), "KR05.port")!=null) { + if(!ToolCustomizationUtils.getPreference(this.getClass(), "KR05.port").equals("")) { + url=url+":"+ToolCustomizationUtils.getPreference(this.getClass(), "KR05.port"); + } + } + + url=url+"/modelcheck"; + + HttpPost httpPost = new HttpPost(url); + + StringEntity entity = new StringEntity(fileContent); + httpPost.setEntity(entity); + + httpPost.setHeader("Accept", "application/json"); + httpPost.setHeader("Content-type", "application/xml"); + + CloseableHttpResponse response = (CloseableHttpResponse) httpClient.execute(httpPost); + if(response.getStatusLine().getStatusCode()==200) { + String content = EntityUtils.toString(response.getEntity()); + JSONObject responseAsJSON=new JSONObject(content); + return responseAsJSON; + } + + else if(response.getStatusLine().getStatusCode()==400) { + String content = EntityUtils.toString(response.getEntity()); + JSONObject responseAsJSON =new JSONObject(content); + ToolCustomizationUtils.showErrorDialog("Model Checking Result","Model Checker Raised an Error HTTP-400:\n Message:" + responseAsJSON.getString("message") + "\n Debug Message:" + responseAsJSON.getString("debug_message")); + return null; + } + + else { + String content = EntityUtils.toString(response.getEntity()); + ToolCustomizationUtils.showErrorDialog("Model Checking Result","Unknown error" + content); + return null; + } + } + + private void saveFileInWorkspace(IContainer container, String fileContent, String defaultFileName) { + + + String domlModelName=ToolCustomizationUtils.doDialogAsk("DOML Model Validation", "Enter the DOML Model Validation Results File Name", defaultFileName); + + ProgressMonitorDialog pd=new ProgressMonitorDialog(ToolCustomizationUtils.getActiveShell()); + pd.open(); + try { + FileUtils.createFile(domlModelName+"_"+FileUtils.getTimestamp()+".validation" , container, fileContent, pd); + } catch (Exception e1) { + e1.printStackTrace(); + } + pd.close(); + try { + container.refreshLocal(IResource.DEPTH_INFINITE, null); + } catch (CoreException e) { + e.printStackTrace(); + } + } + + private void interpretResult(JSONObject responseFromValidator) { + try { + if(responseFromValidator.getString("result").equals("sat")) { + ToolCustomizationUtils.showInformationDialog("Model Checking Result", "Your Requirements are SATISFIED"); + } + else if(responseFromValidator.getString("result").equals("unsat")) { + ToolCustomizationUtils.showErrorDialog("Model Checking Result", "Your Requirements are UNSATISFIED:\n\n"+responseFromValidator.getString("description")); + } + } catch (JSONException e) { + e.printStackTrace(); + } + + + } + + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + ToolCustomizationUtils.saveWorkbench(); + ISelection selection = HandlerUtil.getCurrentSelection(event); + if (selection instanceof StructuredSelection) { + if(((StructuredSelection)selection).getFirstElement() instanceof IFile){ + IFile res = (IFile)((StructuredSelection) selection).getFirstElement(); + + + String fileContent=FileUtils.getIFileContents(res); + if(fileContent==null) { + //ARROJAR ERROR + return null; + } + JSONObject responseFromValidator=null; + try { + responseFromValidator=doPostRequestToValidator(fileContent); + } catch (IOException | JSONException e2) { + e2.printStackTrace(); + } + + if(responseFromValidator==null) { + //ARROJAR ERROR + return null; + } + + + interpretResult(responseFromValidator); + + if(ToolCustomizationUtils.showQuestionDialog("Save Result", "Do you want to save the validation result on workspace?")) { + try { + saveFileInWorkspace(res.getParent(), responseFromValidator.toString(4), res.getFullPath().lastSegment().replace(".domlx", "")); + } catch (JSONException e) { + e.printStackTrace(); + } + } + } + } + return null; + } + +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR05/src/eu/piacere/ide/toolIntegration/kr05/preferencePage/KR05PreferenceInitializer.java b/Source Code/V2.0/PiacereIDEIntegration.KR05/src/eu/piacere/ide/toolIntegration/kr05/preferencePage/KR05PreferenceInitializer.java new file mode 100644 index 0000000000000000000000000000000000000000..9d00e7ad8a2c6fec4e8eb8b6ffc22e20520a353e --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR05/src/eu/piacere/ide/toolIntegration/kr05/preferencePage/KR05PreferenceInitializer.java @@ -0,0 +1,20 @@ +package eu.piacere.ide.toolIntegration.kr05.preferencePage; + +import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer; +import org.eclipse.core.runtime.preferences.ConfigurationScope; +import org.eclipse.ui.preferences.ScopedPreferenceStore; +import org.osgi.framework.FrameworkUtil; + +public class KR05PreferenceInitializer extends AbstractPreferenceInitializer { + + @Override + public void initializeDefaultPreferences() { + + ScopedPreferenceStore scopedPreferenceStore = new ScopedPreferenceStore(ConfigurationScope.INSTANCE,(FrameworkUtil.getBundle(KR05PreferenceInitializer.class)).getSymbolicName()); + scopedPreferenceStore.setDefault("KR05.host", "dmc.ci.piacere.digital.tecnalia.dev"); + scopedPreferenceStore.setDefault("KR05.port", 443); + scopedPreferenceStore.setDefault("KR05.protocol", "https"); + + } + +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR05/src/eu/piacere/ide/toolIntegration/kr05/preferencePage/KR05PreferencePage.java b/Source Code/V2.0/PiacereIDEIntegration.KR05/src/eu/piacere/ide/toolIntegration/kr05/preferencePage/KR05PreferencePage.java new file mode 100644 index 0000000000000000000000000000000000000000..7e41b210d65be8031fe4a25bdd0b201deca1a1b3 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR05/src/eu/piacere/ide/toolIntegration/kr05/preferencePage/KR05PreferencePage.java @@ -0,0 +1,42 @@ +package eu.piacere.ide.toolIntegration.kr05.preferencePage; + +import org.eclipse.core.runtime.preferences.ConfigurationScope; +import org.eclipse.jface.preference.FieldEditorPreferencePage; +import org.eclipse.jface.preference.IntegerFieldEditor; +import org.eclipse.jface.preference.RadioGroupFieldEditor; +import org.eclipse.jface.preference.StringFieldEditor; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchPreferencePage; +import org.eclipse.ui.preferences.ScopedPreferenceStore; +import org.osgi.framework.FrameworkUtil; + +public class KR05PreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage { + + public KR05PreferencePage() { + super(GRID); + } + + @Override + public void init(IWorkbench workbench) { + //WHICH SCOPE SHOULD I SELECT: https://wiki.eclipse.org/FAQ_What_is_a_preference_scope%3F + + setPreferenceStore(new ScopedPreferenceStore(ConfigurationScope.INSTANCE, (FrameworkUtil.getBundle(KR05PreferenceInitializer.class)).getSymbolicName())); + setDescription("Model Checker Preferences"); + + } + + @Override + protected void createFieldEditors() { + + StringFieldEditor hostFieldEditor = new StringFieldEditor("KR05.host", "Endpoint Host", getFieldEditorParent()); + addField(hostFieldEditor); + + IntegerFieldEditor portfieldeditor= new IntegerFieldEditor("KR05.port", "Endpoint Port", getFieldEditorParent()); + addField(portfieldeditor); + + RadioGroupFieldEditor protocolFieldEditor = new RadioGroupFieldEditor("KR05.protocol", "Protocol", 1, new String[][] {{"HTTP","http"},{"HTTPS","https"}}, getFieldEditorParent()); + addField(protocolFieldEditor); + + } + +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR06And07/.classpath b/Source Code/V2.0/PiacereIDEIntegration.KR06And07/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..1fa3e6803d3b22e055b735220510616c4e35f2fc --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR06And07/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="src" path="src"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR06And07/.gitignore b/Source Code/V2.0/PiacereIDEIntegration.KR06And07/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..ae3c1726048cd06b9a143e0376ed46dd9b9a8d53 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR06And07/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR06And07/.project b/Source Code/V2.0/PiacereIDEIntegration.KR06And07/.project new file mode 100644 index 0000000000000000000000000000000000000000..176ccaf78998f00709a2c2a5cd42472fd2e62ba4 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR06And07/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>PiacereIDEIntegration.KR06And07</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR06And07/META-INF/MANIFEST.MF b/Source Code/V2.0/PiacereIDEIntegration.KR06And07/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..aad93834a06a887e25130bc9847c35bd5386925a --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR06And07/META-INF/MANIFEST.MF @@ -0,0 +1,27 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: KR06And07 +Bundle-SymbolicName: PiacereIDEIntegration.KR06And07;singleton:=true +Bundle-Version: 1.0.0.qualifier +Bundle-Vendor: VRAIN +Automatic-Module-Name: PiacereIDEIntegration.KR06And07 +Require-Bundle: org.eclipse.ui, + org.eclipse.core.runtime, + org.apache.httpcomponents.httpcore +Import-Package: eu.piacere.doml.doml.commons, + eu.piacere.piacereTool.utils, + org.apache.commons.io, + org.apache.http.client;version="4.5.13", + org.apache.http.client.methods;version="4.5.13", + org.apache.http.entity.mime;version="4.5.13", + org.apache.http.entity.mime.content;version="4.5.13", + org.apache.http.impl.client;version="4.5.13", + org.eclipse.core.resources, + org.eclipse.core.runtime.preferences;version="3.4.0", + org.eclipse.emf.common.util, + org.eclipse.emf.ecore, + org.eclipse.emf.ecore.resource, + org.eclipse.emf.ecore.resource.impl, + org.eclipse.emf.ecore.util, + org.json + diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR06And07/Piacere/PiacereIcon_16x16.png b/Source Code/V2.0/PiacereIDEIntegration.KR06And07/Piacere/PiacereIcon_16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..444de54d6cfe2958fac1bbb89dd8619b4c537c47 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR06And07/Piacere/PiacereIcon_16x16.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR06And07/build.properties b/Source Code/V2.0/PiacereIDEIntegration.KR06And07/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..52086a7c305694aa678bde0640768488a5cf8e4f --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR06And07/build.properties @@ -0,0 +1,6 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + .,\ + plugin.xml,\ + Piacere/ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR06And07/plugin.xml b/Source Code/V2.0/PiacereIDEIntegration.KR06And07/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..4dd9e6b4c87c745d369694c6ee6ff0531be6eac8 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR06And07/plugin.xml @@ -0,0 +1,104 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.4"?> +<plugin> + <extension + point="org.eclipse.ui.preferencePages"> + <page + category="PiacereToolCustomization.preferences.page1" + class="eu.piacere.ide.toolIntegration.kr06And07.preferencePage.KR06And07PreferencePage" + id="PiacereIDEIntegration.KR06And07.preferences.page1" + name="IaC Security Inspector Preferences"> + </page> + </extension> + <extension + point="org.eclipse.core.runtime.preferences"> + <initializer + class="eu.piacere.ide.toolIntegration.kr06And07.preferencePage.KR06And07PreferenceInitializer"> + </initializer> + </extension> + <extension + point="org.eclipse.ui.commands"> + <command + categoryId="eu.piacere.piacereModelsCommands.category.id" + defaultHandler="eu.piacere.ide.toolIntegration.kr06And07.commandHandlers.IaCSecurityInspectorCommandHandler" + id="eu.piacere.piacereModelsCommands.IaCSecurityInspectorCommand.id" + name="Security Inspector"> + </command> + <!-- <command + categoryId="eu.piacere.piacereModelsCommands.category.id" + defaultHandler="eu.piacere.ide.toolIntegration.kr06And07.commandHandlers.IaCSecurityEnableCommandHandler" + id="eu.piacere.piacereModelsCommands.IaCSecurityEnableCommand.id" + name="Security Enable"> + </command> + <command + categoryId="eu.piacere.piacereModelsCommands.category.id" + defaultHandler="eu.piacere.ide.toolIntegration.kr06And07.commandHandlers.IaCSecurityConfCommandHandlers" + id="eu.piacere.piacereModelsCommands.IaCSecurityConfCommand.id" + name="Security configuration"> + </command> --> + <command + categoryId="eu.piacere.piacereModelsCommands.category.id" + defaultHandler="eu.piacere.ide.toolIntegration.kr06And07.commandHandlers.IaCSecurityScanCommandHandler" + id="eu.piacere.piacereModelsCommands.IaCSecurityScanCommand.id" + name="Security Scanner"> + </command> + </extension> + <extension + point="org.eclipse.ui.menus"> + <menuContribution + allPopups="false" + locationURI="menu:org.eclipse.ui.main.menu"> + <menu + id="piacereMenu" + label="Piacere"> + <menu + label="Security Inspector"> + <command + commandId="eu.piacere.piacereModelsCommands.IaCSecurityInspectorCommand.id" + label="Get Security Inspector Configuration" + style="push" + tooltip="Checks your IaC for security vulnerabilities"> + </command> + <!--<command + commandId="eu.piacere.piacereModelsCommands.IaCSecurityConfCommand.id" + label="Set Security Configuration" + style="push" + tooltip="Set Security Configuration"> + </command> + <command + commandId="eu.piacere.piacereModelsCommands.IaCSecurityEnableCommand.id" + label="Enable/Disable Security Checks" + style="push" + tooltip="Enable/Disable your IaC or Components"> + </command>--> + </menu> + </menu> + </menuContribution> + <menuContribution + allPopups="false" + locationURI="popup:eu.piacere.eclipsePopupMenu.id"> + <command + commandId="eu.piacere.piacereModelsCommands.IaCSecurityScanCommand.id" + icon="Piacere/PiacereIcon_16x16.png" + label="Perform Security Scan" + style="push" + tooltip="Scan IaC for security vulnerabilities"> + <visibleWhen + checkEnabled="false"> + <or> + <reference + definitionId="eu.piacere.piacereTool.propertyTesters.extensionPropertyTester.isTarGz.id"> + </reference> + <reference + definitionId="eu.piacere.piacereTool.propertyTesters.extensionPropertyTester.isZip.id"> + </reference> + <reference + definitionId="eu.piacere.piacereTool.propertyTesters.extensionPropertyTester.isCSAR.id"> + </reference> + </or> + </visibleWhen> + </command> + </menuContribution> + </extension> + +</plugin> diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR06And07/src/eu/piacere/ide/toolIntegration/kr06And07/commandHandlers/IaCSecurityConfCommandHandler.java b/Source Code/V2.0/PiacereIDEIntegration.KR06And07/src/eu/piacere/ide/toolIntegration/kr06And07/commandHandlers/IaCSecurityConfCommandHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..2a4021adc97021b48d800569afd1a27a073d9971 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR06And07/src/eu/piacere/ide/toolIntegration/kr06And07/commandHandlers/IaCSecurityConfCommandHandler.java @@ -0,0 +1,141 @@ +package eu.piacere.ide.toolIntegration.kr06And07.commandHandlers; + +import java.io.File; +import java.io.IOException; + +import javax.swing.JFrame; +import javax.swing.JOptionPane; + +import org.apache.http.HttpEntity; +import org.apache.http.client.ClientProtocolException; +import org.apache.http.client.HttpClient; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpPatch; +import org.apache.http.entity.ContentType; +import org.apache.http.entity.mime.HttpMultipartMode; +import org.apache.http.entity.mime.MultipartEntityBuilder; +import org.apache.http.entity.mime.content.FileBody; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.util.EntityUtils; +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.preferences.ConfigurationScope; +import org.eclipse.emf.common.util.URI; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.ui.handlers.HandlerUtil; +import org.eclipse.ui.preferences.ScopedPreferenceStore; +import org.json.JSONException; +import org.json.JSONObject; +import org.osgi.framework.FrameworkUtil; + +import eu.piacere.piacereTool.utils.FileUtils; +import eu.piacere.piacereTool.utils.ToolCustomizationUtils; + +public class IaCSecurityConfCommandHandler extends AbstractHandler { + + private String getPreference(String preferenceID) { + ScopedPreferenceStore scopedPreferenceStore = new ScopedPreferenceStore(ConfigurationScope.INSTANCE,(FrameworkUtil.getBundle(IaCSecurityConfCommandHandler.class)).getSymbolicName()); + return scopedPreferenceStore.getString(preferenceID); + } + + private JSONObject showDialog(IPath fileuri) throws ClientProtocolException, IOException, JSONException { + + JFrame frame = new JFrame("Security Options"); + + String result = (String)JOptionPane.showInputDialog( + frame, + "Configure IaC/Component", + "Check Name", + JOptionPane.PLAIN_MESSAGE, + null, + null, + "" + ); + if(result == null) return null; + String result2 = (String)JOptionPane.showInputDialog( + frame, + "Configure IaC/Component", + "Secret", + JOptionPane.PLAIN_MESSAGE, + null, + null, + "" + ); + + if(result2 == null) return null; + return doPostRequestTochecker(fileuri, result, result2); + + } + private JSONObject doPostRequestTochecker(IPath fileuri, String chk_name, String secret) throws ClientProtocolException, IOException, JSONException { + HttpClient httpClient = HttpClientBuilder.create().build(); + + String url=getPreference("KR06.protocol")+"://"+getPreference("KR06.host")+":"+getPreference("KR06.port")+"/checks/"; + + MultipartEntityBuilder builder = MultipartEntityBuilder.create(); + builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); + if(!chk_name.equals("")) { + url+= chk_name + "/configure?"; + } + if(!secret.equals("")) { + builder.addTextBody("secret", secret); + } + + if(!fileuri.equals("")) { + builder.addPart("config_file", new FileBody(new File(fileuri.toString()), ContentType.DEFAULT_BINARY)); + } + + HttpPatch httpPatch = new HttpPatch(url); + HttpEntity entity = builder.build(); + httpPatch.setEntity(entity); + + CloseableHttpResponse response = (CloseableHttpResponse) httpClient.execute(httpPatch); + if(response.getStatusLine().getStatusCode()==200) { + String content = EntityUtils.toString(response.getEntity()); + ToolCustomizationUtils.showInformationDialog("Security Configure Result", content); + } else { + String content = EntityUtils.toString(response.getEntity()); + ToolCustomizationUtils.showErrorDialog("Security Configure Error", content); + } + return null; + } + + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + ToolCustomizationUtils.saveWorkbench(); + ISelection selection = HandlerUtil.getCurrentSelection(event); + if (selection instanceof StructuredSelection) { + if(((StructuredSelection)selection).getFirstElement() instanceof IFile){ + IFile res = (IFile)((StructuredSelection) selection).getFirstElement(); + IProject project = ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(ToolCustomizationUtils.getFullPath(URI.createURI(res.getLocationURI().toString()))).getProject(); + + //DOMLModel theDOMLModel = (DOMLModel) ModelUtils.loadEMFModelRoot(res); + + String fileContent=FileUtils.getIFileContents(res); + IPath path = res.getLocation(); + if(fileContent==null) { + //ARROJAR ERROR + return null; + } + JSONObject responseFromChecker=null; + try { + // Escollir 1 desde la finestra emergent + responseFromChecker=showDialog(path); + + + } catch (IOException | JSONException e2) { + e2.printStackTrace(); + } + + return null; + } + } + return null; + } + +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR06And07/src/eu/piacere/ide/toolIntegration/kr06And07/commandHandlers/IaCSecurityEnableCommandHandler.java b/Source Code/V2.0/PiacereIDEIntegration.KR06And07/src/eu/piacere/ide/toolIntegration/kr06And07/commandHandlers/IaCSecurityEnableCommandHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..ace26413e52a5ec74430783cdc877691535ce311 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR06And07/src/eu/piacere/ide/toolIntegration/kr06And07/commandHandlers/IaCSecurityEnableCommandHandler.java @@ -0,0 +1,106 @@ +package eu.piacere.ide.toolIntegration.kr06And07.commandHandlers; + +import java.io.IOException; + +import javax.swing.JFrame; +import javax.swing.JOptionPane; + +import org.apache.http.client.ClientProtocolException; +import org.apache.http.client.HttpClient; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpPatch; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.util.EntityUtils; +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.runtime.preferences.ConfigurationScope; +import org.eclipse.ui.preferences.ScopedPreferenceStore; +import org.json.JSONException; +import org.osgi.framework.FrameworkUtil; + +import eu.piacere.piacereTool.utils.ToolCustomizationUtils; + +public class IaCSecurityEnableCommandHandler extends AbstractHandler{ + + + String url = ""; + private String getPreference(String preferenceID) { + ScopedPreferenceStore scopedPreferenceStore = new ScopedPreferenceStore(ConfigurationScope.INSTANCE,(FrameworkUtil.getBundle(IaCSecurityInspectorCommandHandler.class)).getSymbolicName()); + return scopedPreferenceStore.getString(preferenceID); + } + + private String showDialog() throws ClientProtocolException, IOException, JSONException { + + String[] options = {"true", "false"}; + JFrame frame = new JFrame("Security Options"); + + String result = (String)JOptionPane.showInputDialog( + frame, + "Enable IaC/Component", + "Check Name", + JOptionPane.PLAIN_MESSAGE, + null, + null, + "" + ); + if(result == null) return null; + String result2 = (String)JOptionPane.showInputDialog( + frame, + "Select one option", + "Enable IaC/Component", + JOptionPane.PLAIN_MESSAGE, + null, + options, + options[0] + ); + + if(result2 == null) return null; + return doPatchRequestToChecker(result, result2); + + } + + private String doPatchRequestToChecker(String chk_name, String enable) throws ClientProtocolException, IOException, JSONException { + HttpClient httpClient = HttpClientBuilder.create().build(); + + url=getPreference("KR06.protocol")+"://"+getPreference("KR06.host")+":"+getPreference("KR06.port")+"/checks/"; + if(!chk_name.equals("")) { + url+= chk_name + "/"; + } + if(enable.equals("true")) { + url+= "enable"; + } else { + url+= "disable"; + } + + HttpPatch httpPatch = new HttpPatch(url); + + httpPatch.setHeader("Accept", "application/json"); + + CloseableHttpResponse response = (CloseableHttpResponse) httpClient.execute(httpPatch); + if(response.getStatusLine().getStatusCode()==200) { + String content = EntityUtils.toString(response.getEntity()); + ToolCustomizationUtils.showInformationDialog("Security Enable Result", content); + } else { + String content = EntityUtils.toString(response.getEntity()); + ToolCustomizationUtils.showErrorDialog("Security Enable Error", content); + } + + return null; + } + + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + + /*try { + // Escollir 1 desde la finestra emergent + String responseFromChecker=showDialog(); + + + } catch (IOException | JSONException e2) { + e2.printStackTrace(); + }*/ + + return null; + } +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR06And07/src/eu/piacere/ide/toolIntegration/kr06And07/commandHandlers/IaCSecurityInspectorCommandHandler.java b/Source Code/V2.0/PiacereIDEIntegration.KR06And07/src/eu/piacere/ide/toolIntegration/kr06And07/commandHandlers/IaCSecurityInspectorCommandHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..e9106185c5cb84855b7897f6f6358bd53fd1397a --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR06And07/src/eu/piacere/ide/toolIntegration/kr06And07/commandHandlers/IaCSecurityInspectorCommandHandler.java @@ -0,0 +1,214 @@ +package eu.piacere.ide.toolIntegration.kr06And07.commandHandlers; + +import java.io.IOException; + +import org.apache.http.client.ClientProtocolException; +import org.apache.http.client.HttpClient; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.util.EntityUtils; +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import eu.piacere.piacereTool.utils.ToolCustomizationUtils; + +public class IaCSecurityInspectorCommandHandler extends AbstractHandler { + + private JSONArray showDialog() throws ClientProtocolException, IOException, JSONException { + + String keyword=ToolCustomizationUtils.doDialogAskWithoutPostProcess("Keyword","Keyword",""); + + if(keyword==null) { + return null; + } + return doGetRequestToChecker(keyword); + + } + + private JSONArray doGetRequestToChecker(String keyword/*, String configured, String enabled, String target_entity*/) throws ClientProtocolException, IOException, JSONException { + + String url=ToolCustomizationUtils.getPreference(this.getClass(), "KR06_07.protocol")+"://"+ToolCustomizationUtils.getPreference(this.getClass(), "KR06_07.host")+":"+ToolCustomizationUtils.getPreference(this.getClass(), "KR06_07.port")+"/checks?"; + + String target_entity=ToolCustomizationUtils.getPreference(this.getClass(), "KR06_07.entityType"); + if(!target_entity.equals("both")) { + url+= "target_entity_type=" + target_entity+"&"; + } + + if(!keyword.equals("")) { + url+= "keyword=" + keyword+"&"; + } + + String enabled=ToolCustomizationUtils.getPreference(this.getClass(), "KR06_07.enableStatus"); + if(!enabled.equals("both")) { + url+= "enabled=" + enabled+"&"; + } + String configured=ToolCustomizationUtils.getPreference(this.getClass(), "KR06_07.confStatus"); + if(!configured.equals("both")) { + url+= "configured=" + configured; + } + + HttpGet httpGet = new HttpGet(url); + + HttpClient httpClient = HttpClientBuilder.create().build(); + CloseableHttpResponse response = (CloseableHttpResponse) httpClient.execute(httpGet); + + if(response.getStatusLine().getStatusCode()==200) { + String content = EntityUtils.toString(response.getEntity()); + JSONArray responseAsJSON=new JSONArray(content); + return responseAsJSON; + } + + + return null; + + } + + private String capitalize(String str) { + if(str == null || str.isEmpty()) { + return str; + } + + return str.substring(0, 1).toUpperCase() + str.substring(1); + } + + /* + private JSONObject doPostRequestToScanner(String fileContent, List<String> checks) throws ClientProtocolException, IOException, JSONException { + HttpClient httpClient = HttpClientBuilder.create().build(); + + url=getPreference("KR06.protocol")+"://"+getPreference("KR06.host")+":"+getPreference("KR06.port")+"/scan?checks=" + checks + "&iac=" + fileContent; + + HttpPost httpPost = new HttpPost(); + + StringEntity entity = new StringEntity(fileContent); + httpPost.setEntity(entity); + + httpPost.setHeader("Accept", "application/json"); + httpPost.setHeader("Content-type","multipart/form-data"); + + CloseableHttpResponse response = (CloseableHttpResponse) httpClient.execute(httpPost); + if(response.getStatusLine().getStatusCode()==200) { + String content = EntityUtils.toString(response.getEntity()); + JSONObject responseAsJSON = new JSONObject(content); + return responseAsJSON; + } + return null; + + } + + private JSONObject doPatchEnableRequestToChecker(String check_name) throws ClientProtocolException, IOException, JSONException { + HttpClient httpClient = HttpClientBuilder.create().build(); + + url=getPreference("KR06.protocol")+"://"+getPreference("KR06.host")+":"+getPreference("KR06.port")+"/checks/"+ check_name + "/enable"; + + HttpPatch httpPatch = new HttpPatch(); + + httpPatch.setHeader("Accept", "application/json"); + + CloseableHttpResponse response = (CloseableHttpResponse) httpClient.execute(httpPatch); + if(response.getStatusLine().getStatusCode()==200) { + String content = EntityUtils.toString(response.getEntity()); + JSONObject responseAsJSON = new JSONObject(content); + return responseAsJSON; + } + return null; + + } + + private JSONObject doPatchDisableRequestToChecker(String check_name) throws ClientProtocolException, IOException, JSONException { + HttpClient httpClient = HttpClientBuilder.create().build(); + + url=getPreference("KR06.protocol")+"://"+getPreference("KR06.host")+":"+getPreference("KR06.port")+"/checks/"+ check_name + "/disable"; + + HttpPatch httpPatch = new HttpPatch(); + + httpPatch.setHeader("Accept", "application/json"); + + CloseableHttpResponse response = (CloseableHttpResponse) httpClient.execute(httpPatch); + if(response.getStatusLine().getStatusCode()==200) { + String content = EntityUtils.toString(response.getEntity()); + JSONObject responseAsJSON = new JSONObject(content); + return responseAsJSON; + } + return null; + + } + + private JSONObject doPatchConfigureRequestToChecker(String fileContent, String check_name, String secret) throws ClientProtocolException, IOException, JSONException { + HttpClient httpClient = HttpClientBuilder.create().build(); + + url=getPreference("KR06.protocol")+"://"+getPreference("KR06.host")+":"+getPreference("KR06.port")+"/checks/" + check_name + "/configure?config_file=" + fileContent + "&secret=" + secret; + + HttpPatch httpPatch = new HttpPatch(); + + StringEntity entity = new StringEntity(fileContent); + httpPatch.setEntity(entity); + + httpPatch.setHeader("Accept", "application/json"); + httpPatch.setHeader("Content-type","multipart/form-data"); + + CloseableHttpResponse response = (CloseableHttpResponse) httpClient.execute(httpPatch); + if(response.getStatusLine().getStatusCode()==200) { + String content = EntityUtils.toString(response.getEntity()); + JSONObject responseAsJSON = new JSONObject(content); + return responseAsJSON; + } + return null; + + } + */ + + private void interpretResult(JSONArray responseFromSchecker) { + + String response = ""; + + try { + + for (int i= 0; i < responseFromSchecker.length(); i++) { + JSONObject jsonobj = responseFromSchecker.getJSONObject(i); + String name = jsonobj.getString("name"); + if(jsonobj.getBoolean("enabled")) { + response += "- "+capitalize(jsonobj.getString("target_entity_type"))+" "+ name + " IS enabled. \n"; + } + else { + response += "- "+capitalize(jsonobj.getString("target_entity_type"))+" "+ name + " IS NOT enabled. \n"; + } + if(jsonobj.getBoolean("configured")) { + response += "- "+capitalize(jsonobj.getString("target_entity_type"))+" "+ name + " IS configured. \n"; + } + else { + response += "- "+capitalize(jsonobj.getString("target_entity_type"))+" "+ name + " IS NOT configured. \n"; + } + } + } catch (JSONException e) { + e.printStackTrace(); + } + + ToolCustomizationUtils.showInformationDialog("Security Inspector Configuration", response); + } + + + + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + + JSONArray responseFromChecker = null; + try { + responseFromChecker=showDialog(); + } catch (IOException | JSONException e2) { + e2.printStackTrace(); + } + + if(responseFromChecker==null) { + //ARROJAR ERROR + return null; + }else { + interpretResult(responseFromChecker); + } + return null; + } +} \ No newline at end of file diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR06And07/src/eu/piacere/ide/toolIntegration/kr06And07/commandHandlers/IaCSecurityScanCommandHandler.java b/Source Code/V2.0/PiacereIDEIntegration.KR06And07/src/eu/piacere/ide/toolIntegration/kr06And07/commandHandlers/IaCSecurityScanCommandHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..95052bc75c5836e06369cc2d35b8720da6ee4990 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR06And07/src/eu/piacere/ide/toolIntegration/kr06And07/commandHandlers/IaCSecurityScanCommandHandler.java @@ -0,0 +1,127 @@ +package eu.piacere.ide.toolIntegration.kr06And07.commandHandlers; + +import java.io.File; +import java.io.IOException; + +import org.apache.http.HttpEntity; +import org.apache.http.client.ClientProtocolException; +import org.apache.http.client.HttpClient; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.ContentType; +import org.apache.http.entity.mime.HttpMultipartMode; +import org.apache.http.entity.mime.MultipartEntityBuilder; +import org.apache.http.entity.mime.content.FileBody; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.util.EntityUtils; +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; +import org.eclipse.jface.dialogs.ProgressMonitorDialog; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.ui.handlers.HandlerUtil; +import org.json.JSONException; +import org.json.JSONObject; + +import eu.piacere.piacereTool.utils.FileUtils; +import eu.piacere.piacereTool.utils.ToolCustomizationUtils; + +public class IaCSecurityScanCommandHandler extends AbstractHandler { + + private String showDialog() throws ClientProtocolException, IOException, JSONException { + String checks=ToolCustomizationUtils.doDialogAskWithoutPostProcess("Perform Security Scan","Provide a comma-separated list of the Components/IaC you want to scan (leave blank for a whole scan)",""); + return checks; + } + + + private JSONObject doPostRequestTochecker(IPath fileuri, String checks) throws ClientProtocolException, IOException, JSONException { + HttpClient httpClient = HttpClientBuilder.create().build(); + + String url=ToolCustomizationUtils.getPreference(this.getClass(), "KR06_07.protocol")+"://"+ToolCustomizationUtils.getPreference(this.getClass(), "KR06_07.host")+":"+ToolCustomizationUtils.getPreference(this.getClass(), "KR06_07.port")+"/scan"; + + MultipartEntityBuilder builder = MultipartEntityBuilder.create(); + + builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); + if(!checks.equals("")) { + String aux = checks.replace(" ", ","); + while(aux.contains(",,")) { + aux = aux.replace(",,", ","); + + } + builder.addTextBody("checks", aux); + } + + builder.addPart("iac", new FileBody(new File(fileuri.toString()), ContentType.DEFAULT_BINARY)); + + HttpPost httpPost = new HttpPost(url); + HttpEntity entity = builder.build(); + httpPost.setEntity(entity); + + CloseableHttpResponse response = (CloseableHttpResponse) httpClient.execute(httpPost); + if(response.getStatusLine().getStatusCode()==200) { + String content = EntityUtils.toString(response.getEntity()); + JSONObject reponseResult = new JSONObject(content); + ToolCustomizationUtils.showInformationDialog("Model Scanned", "Your Model was Scanned successfully"); + return reponseResult; + } else { + String content = EntityUtils.toString(response.getEntity()); + ToolCustomizationUtils.showErrorDialog("Security Scan Error", content); + } + + return null; + } + + + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + ToolCustomizationUtils.saveWorkbench(); + ISelection selection = HandlerUtil.getCurrentSelection(event); + if (selection instanceof StructuredSelection) { + if(((StructuredSelection)selection).getFirstElement() instanceof IFile){ + IFile res = (IFile)((StructuredSelection) selection).getFirstElement(); + + IPath path = res.getLocation(); + + JSONObject responseFromScaner=null; + try { + + String checks=showDialog(); + if(checks!=null) { + responseFromScaner=doPostRequestTochecker(path, checks); + if(responseFromScaner!=null) { + saveFileInWorkspace(res.getParent(), path ,responseFromScaner.toString(4)); + } + } + } + catch (JSONException|IOException e) { + e.printStackTrace(); + } + } + } + return null; + } + + + private void saveFileInWorkspace(IContainer container, IPath path, String fileContent) { + + ProgressMonitorDialog pd=new ProgressMonitorDialog(ToolCustomizationUtils.getActiveShell()); + pd.open(); + try { + FileUtils.createFile(path.lastSegment().split(".tar")[0]+".scannresult_"+FileUtils.getTimestamp()+".json", container, fileContent, pd); + } catch (Exception e1) { + e1.printStackTrace(); + } + pd.close(); + try { + container.refreshLocal(IResource.DEPTH_INFINITE, null); + } catch (CoreException e) { + e.printStackTrace(); + } + } +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR06And07/src/eu/piacere/ide/toolIntegration/kr06And07/preferencePage/KR06And07PreferenceInitializer.java b/Source Code/V2.0/PiacereIDEIntegration.KR06And07/src/eu/piacere/ide/toolIntegration/kr06And07/preferencePage/KR06And07PreferenceInitializer.java new file mode 100644 index 0000000000000000000000000000000000000000..d3a7ea17c56892d9d716dc649c78f567c6f592f8 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR06And07/src/eu/piacere/ide/toolIntegration/kr06And07/preferencePage/KR06And07PreferenceInitializer.java @@ -0,0 +1,23 @@ +package eu.piacere.ide.toolIntegration.kr06And07.preferencePage; + +import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer; +import org.eclipse.core.runtime.preferences.ConfigurationScope; +import org.eclipse.ui.preferences.ScopedPreferenceStore; +import org.osgi.framework.FrameworkUtil; + +public class KR06And07PreferenceInitializer extends AbstractPreferenceInitializer { + + @Override + public void initializeDefaultPreferences() { + + ScopedPreferenceStore scopedPreferenceStore = new ScopedPreferenceStore(ConfigurationScope.INSTANCE,(FrameworkUtil.getBundle(KR06And07PreferenceInitializer.class)).getSymbolicName()); + scopedPreferenceStore.setDefault("KR06_07.host", "isr.ci.piacere.digital.tecnalia.dev"); + scopedPreferenceStore.setDefault("KR06_07.port", 443); + scopedPreferenceStore.setDefault("KR06_07.protocol", "https"); + scopedPreferenceStore.setDefault("KR06_07.enableStatus", "both"); + scopedPreferenceStore.setDefault("KR06_07.confStatus", "both"); + scopedPreferenceStore.setDefault("KR06_07.entityType", "both"); + + } + +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR06And07/src/eu/piacere/ide/toolIntegration/kr06And07/preferencePage/KR06And07PreferencePage.java b/Source Code/V2.0/PiacereIDEIntegration.KR06And07/src/eu/piacere/ide/toolIntegration/kr06And07/preferencePage/KR06And07PreferencePage.java new file mode 100644 index 0000000000000000000000000000000000000000..1501f019606e23a9691278672ccc51c7836c94b4 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR06And07/src/eu/piacere/ide/toolIntegration/kr06And07/preferencePage/KR06And07PreferencePage.java @@ -0,0 +1,40 @@ +package eu.piacere.ide.toolIntegration.kr06And07.preferencePage; + +import org.eclipse.core.runtime.preferences.ConfigurationScope; +import org.eclipse.jface.preference.FieldEditorPreferencePage; +import org.eclipse.jface.preference.IntegerFieldEditor; +import org.eclipse.jface.preference.RadioGroupFieldEditor; +import org.eclipse.jface.preference.StringFieldEditor; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchPreferencePage; +import org.eclipse.ui.preferences.ScopedPreferenceStore; +import org.osgi.framework.FrameworkUtil; + +public class KR06And07PreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage { + + public KR06And07PreferencePage() { + super(GRID); + } + + @Override + public void init(IWorkbench workbench) { + //WHICH SCOPE SHOULD I SELECT: https://wiki.eclipse.org/FAQ_What_is_a_preference_scope%3F + + setPreferenceStore(new ScopedPreferenceStore(ConfigurationScope.INSTANCE, (FrameworkUtil.getBundle(KR06And07PreferenceInitializer.class)).getSymbolicName())); + setDescription("These Are The IaC Security Inspector Preferences"); + + } + + @Override + protected void createFieldEditors() { + addField(new StringFieldEditor("KR06_07.host", "Endpoint Host:", getFieldEditorParent())); + addField(new IntegerFieldEditor("KR06_07.port", "Endpoint Port:", getFieldEditorParent())); + addField(new RadioGroupFieldEditor("KR06_07.protocol", "Protocol:", 1, new String[][] {{"HTTP","http"},{"HTTPS","https"}}, getFieldEditorParent())); + + addField(new RadioGroupFieldEditor("KR06_07.enableStatus", "Enabled:", 1, new String[][] {{"Both Enabled and Disabled Checks","both"}, {"Only Enabled Checks","true"}, {"Only Disabled Checks","false"}}, getFieldEditorParent())); + addField(new RadioGroupFieldEditor("KR06_07.confStatus", "Configured:", 1, new String[][] {{"Both Configured and Not Configured Checks","both"}, {"Only Configured Checks","true"}, {"Only Not Configured Checks","false"}}, getFieldEditorParent())); + addField(new RadioGroupFieldEditor("KR06_07.entityType", "Entity Type:", 1, new String[][] {{"Both IaC and Component Checks","both"}, {"Only IaC","IaC"}, {"Only Component","component"}}, getFieldEditorParent())); + + } + +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/.classpath b/Source Code/V2.0/PiacereIDEIntegration.KR08/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..81fe078c20c05db46a8281fbb1a72875a5322b45 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR08/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="src" path="src"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/.gitignore b/Source Code/V2.0/PiacereIDEIntegration.KR08/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..ae3c1726048cd06b9a143e0376ed46dd9b9a8d53 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR08/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/.project b/Source Code/V2.0/PiacereIDEIntegration.KR08/.project new file mode 100644 index 0000000000000000000000000000000000000000..9992dcf91ea39ba0923e8ec0765c648bffa25d1a --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR08/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>PiacereIDEIntegration.KR08</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/.settings/org.eclipse.jdt.core.prefs b/Source Code/V2.0/PiacereIDEIntegration.KR08/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000000000000000000000000000000000000..62ef3488cc0468ee9c2d4440dfbbbd5877cd0c28 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR08/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,9 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 +org.eclipse.jdt.core.compiler.compliance=17 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=17 diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/META-INF/MANIFEST.MF b/Source Code/V2.0/PiacereIDEIntegration.KR08/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..5f9ac6df7e573580a0e348acb5b281a38f89d198 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR08/META-INF/MANIFEST.MF @@ -0,0 +1,33 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: KR08 +Bundle-SymbolicName: PiacereIDEIntegration.KR08;singleton:=true +Bundle-Version: 1.0.0.qualifier +Automatic-Module-Name: PiacereIDEIntegration.KR08 +Require-Bundle: org.eclipse.ui, + org.eclipse.core.runtime, + org.apache.httpcomponents.httpcore +Import-Package: eu.piacere.doml.doml.commons, + eu.piacere.piacereTool.utils, + org.apache.commons.io, + org.apache.http.client;version="4.5.13", + org.apache.http.client.methods;version="4.5.13", + org.apache.http.impl.client;version="4.5.13", + org.eclipse.core.resources, + org.eclipse.core.runtime.preferences;version="3.4.0", + org.eclipse.emf.common.notify, + org.eclipse.emf.common.util, + org.eclipse.emf.ecore, + org.eclipse.emf.ecore.resource, + org.eclipse.emf.ecore.resource.impl, + org.eclipse.emf.ecore.util, + org.eclipse.emf.edit.provider.resource, + org.eclipse.emf.edit.ui.provider, + org.eclipse.ui.dialogs, + org.eclipse.ui.navigator, + org.eclipse.ui.views.properties, + org.json, + org.restlet, + org.restlet.data, + org.restlet.representation, + org.restlet.resource diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/Piacere/PiacereIcon_16x16.png b/Source Code/V2.0/PiacereIDEIntegration.KR08/Piacere/PiacereIcon_16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..444de54d6cfe2958fac1bbb89dd8619b4c537c47 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/Piacere/PiacereIcon_16x16.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/build.properties b/Source Code/V2.0/PiacereIDEIntegration.KR08/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..d3bb3b52a4b4e6918a27ed9328f514e80b23ccc0 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR08/build.properties @@ -0,0 +1,7 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + .,\ + Piacere/,\ + plugin.xml,\ + icons/ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/ComponentsModel.png b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/ComponentsModel.png new file mode 100644 index 0000000000000000000000000000000000000000..9ee76accc89ff76934fe746a3af1a853843e1209 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/ComponentsModel.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/FAdAIcon_24.png b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/FAdAIcon_24.png new file mode 100644 index 0000000000000000000000000000000000000000..f4259625230e2b11b98a14aa6b75b52edad25dd8 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/FAdAIcon_24.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/FadaModelRepositoriesView.png b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/FadaModelRepositoriesView.png new file mode 100644 index 0000000000000000000000000000000000000000..4db27dd10ecbbcf29062e8cc7b7b3c22bf72c5a3 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/FadaModelRepositoriesView.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/FadaModelRepositoriesView_old.png b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/FadaModelRepositoriesView_old.png new file mode 100644 index 0000000000000000000000000000000000000000..d4f2feef7f465a95b720ec2a24aa4429b5a64aab Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/FadaModelRepositoriesView_old.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/RepoConnected.png b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/RepoConnected.png new file mode 100644 index 0000000000000000000000000000000000000000..bd178d026ebd3aa22573ca74e985f306d64a59c1 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/RepoConnected.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/RepoDisconnected.png b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/RepoDisconnected.png new file mode 100644 index 0000000000000000000000000000000000000000..0c78354020ea586917e7ec598e357c739b031aa0 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/RepoDisconnected.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/SystemConfigurationModel.png b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/SystemConfigurationModel.png new file mode 100644 index 0000000000000000000000000000000000000000..d4561b60458f1b50d06bfd23d7f8308af08688ef Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/SystemConfigurationModel.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/addRepository.png b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/addRepository.png new file mode 100644 index 0000000000000000000000000000000000000000..fe03f37202ca955983c42397173fb12faca9d187 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/addRepository.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/bundle.png b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/bundle.png new file mode 100644 index 0000000000000000000000000000000000000000..1f41d9b1bfcf6db40272453364a446ad457ec50f Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/bundle.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/collapseAll.gif b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/collapseAll.gif new file mode 100644 index 0000000000000000000000000000000000000000..a2d80a9044f38833cb728a69c88294ce3fd007c7 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/collapseAll.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/deleteRepository.png b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/deleteRepository.png new file mode 100644 index 0000000000000000000000000000000000000000..807f97450c23a784814393f55a16ff75688ec15b Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/deleteRepository.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/download.png b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/download.png new file mode 100644 index 0000000000000000000000000000000000000000..236f4a77ea9131d404b0efb5e7bddd72098181f9 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/download.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/expandAll.gif b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/expandAll.gif new file mode 100644 index 0000000000000000000000000000000000000000..0205b29176d4e60307639b6ac80ebfc40be61c3b Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/expandAll.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/export.png b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/export.png new file mode 100644 index 0000000000000000000000000000000000000000..670042c62ce6b5cb200fa3807c57d18511275f39 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/export.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/elcl16/addrepositorylocation.gif b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/elcl16/addrepositorylocation.gif new file mode 100644 index 0000000000000000000000000000000000000000..6237766393fcc7a602d4695d151c3e546abeab6a Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/elcl16/addrepositorylocation.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/elcl16/copy.gif b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/elcl16/copy.gif new file mode 100644 index 0000000000000000000000000000000000000000..71d7c95aa8caa2e8f139d262a4e5e08aba2b88e5 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/elcl16/copy.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/elcl16/integrateconceptualfragment.gif b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/elcl16/integrateconceptualfragment.gif new file mode 100644 index 0000000000000000000000000000000000000000..07164754e5ca231666d9daf7fa4a9d12e378a52a Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/elcl16/integrateconceptualfragment.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/elcl16/integratetechnicalfragment.gif b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/elcl16/integratetechnicalfragment.gif new file mode 100644 index 0000000000000000000000000000000000000000..e7035189cd8dd45b6afba27b8cbccd75df5000e1 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/elcl16/integratetechnicalfragment.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/elcl16/paste.gif b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/elcl16/paste.gif new file mode 100644 index 0000000000000000000000000000000000000000..39dd4d9d38aa85f9c4c9ff652c453c555b850980 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/elcl16/paste.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/elcl16/search.gif b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/elcl16/search.gif new file mode 100644 index 0000000000000000000000000000000000000000..d540a01f4d9eeb9d2951f30cee165c7370e9fc6a Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/elcl16/search.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/CapabilityPattern.gif b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/CapabilityPattern.gif new file mode 100644 index 0000000000000000000000000000000000000000..15ffbb0795fbdc2a0add02f0a07bcea02f034ab4 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/CapabilityPattern.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/CapabilityPatterns.gif b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/CapabilityPatterns.gif new file mode 100644 index 0000000000000000000000000000000000000000..37147654e68f964a947278cb954e47633809c5c4 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/CapabilityPatterns.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/ConceptualFragment.gif b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/ConceptualFragment.gif new file mode 100644 index 0000000000000000000000000000000000000000..49ab538b6c432e7eb280793484e555df7ba2761d Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/ConceptualFragment.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/Delete.gif b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/Delete.gif new file mode 100644 index 0000000000000000000000000000000000000000..b6922ac11cf64e16a15cf2976cdaa1e40118abed Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/Delete.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/DeliveryProcess.gif b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/DeliveryProcess.gif new file mode 100644 index 0000000000000000000000000000000000000000..7b40362c2f54cebce43f5511342df015c4f52feb Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/DeliveryProcess.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/Description.gif b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/Description.gif new file mode 100644 index 0000000000000000000000000000000000000000..75f33c24fa441d09729e7adcbc78a4e55d84b443 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/Description.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/Descriptor.gif b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/Descriptor.gif new file mode 100644 index 0000000000000000000000000000000000000000..04032a915a0d9eace79a7aec3c573ca07eb7f4ac Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/Descriptor.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/Input.gif b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/Input.gif new file mode 100644 index 0000000000000000000000000000000000000000..d8d7d974fa596ee7a8d06b1d8b110ee7336850af Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/Input.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/Interface.gif b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/Interface.gif new file mode 100644 index 0000000000000000000000000000000000000000..7c7d39ef65b96d71b7b2e1e576c3677bbf7757f1 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/Interface.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/MethodPlugin.gif b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/MethodPlugin.gif new file mode 100644 index 0000000000000000000000000000000000000000..bb82c391ed462f0f01e988e00b07f8de262278e7 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/MethodPlugin.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/Name.gif b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/Name.gif new file mode 100644 index 0000000000000000000000000000000000000000..75f33c24fa441d09729e7adcbc78a4e55d84b443 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/Name.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/Objective.gif b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/Objective.gif new file mode 100644 index 0000000000000000000000000000000000000000..75f33c24fa441d09729e7adcbc78a4e55d84b443 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/Objective.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/Origin.gif b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/Origin.gif new file mode 100644 index 0000000000000000000000000000000000000000..c79bf78956a277d98343ab949be3efe08411f37f Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/Origin.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/Output.gif b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/Output.gif new file mode 100644 index 0000000000000000000000000000000000000000..b4fe2c84ecd2cb1ce8a4fb03a091ba76cad78916 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/Output.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/Package.gif b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/Package.gif new file mode 100644 index 0000000000000000000000000000000000000000..00a311efa25ac538073fb14e59efbb9a968a94e3 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/Package.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/Processes.gif b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/Processes.gif new file mode 100644 index 0000000000000000000000000000000000000000..08d8c2d5d1a7a70f5af53200633a7ba92aab1788 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/Processes.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/Repositories.gif b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/Repositories.gif new file mode 100644 index 0000000000000000000000000000000000000000..16eda8a78a63bfe5874e2e92a29f20a644241bba Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/Repositories.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/RoleSetCategory.gif b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/RoleSetCategory.gif new file mode 100644 index 0000000000000000000000000000000000000000..54a3f677a3efc25358bb4f637de6166d1425a486 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/RoleSetCategory.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/Task.gif b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/Task.gif new file mode 100644 index 0000000000000000000000000000000000000000..5c3b2b89a47caa2cbec35a9e9c3fe2efef4b2895 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/Task.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/Tasks.gif b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/Tasks.gif new file mode 100644 index 0000000000000000000000000000000000000000..638bd83009d2d7bf881dab9dbc07c176edd23060 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/Tasks.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/TechnicalFragment.gif b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/TechnicalFragment.gif new file mode 100644 index 0000000000000000000000000000000000000000..4f1b85a7801922060d6b5a968a76be30eb5326c9 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/TechnicalFragment.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/TechnicalFragmentError.gif b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/TechnicalFragmentError.gif new file mode 100644 index 0000000000000000000000000000000000000000..50b162dbdfc4a7f0eabd5d7119871e378efe6940 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/TechnicalFragmentError.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/TechnicalFragmentImported.gif b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/TechnicalFragmentImported.gif new file mode 100644 index 0000000000000000000000000000000000000000..3260ab2872cfcc35cc75b3501dd05bb23bd6f333 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/TechnicalFragmentImported.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/Type.gif b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/Type.gif new file mode 100644 index 0000000000000000000000000000000000000000..358cbcb83d800352e59d672771057f3156f27491 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/Type.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/WorkProduct.gif b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/WorkProduct.gif new file mode 100644 index 0000000000000000000000000000000000000000..1540f3d3c95605a8d7f641f8c93b098e356c40c3 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/WorkProduct.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/WorkProducts.gif b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/WorkProducts.gif new file mode 100644 index 0000000000000000000000000000000000000000..cf289263e15224bfd984e2145ddc6c6eb415f50c Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/WorkProducts.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/activity16.gif b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/activity16.gif new file mode 100644 index 0000000000000000000000000000000000000000..cf20deb439ab39a63162c93396060706051569b0 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/activity16.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/role.gif b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/role.gif new file mode 100644 index 0000000000000000000000000000000000000000..69ebdf2959ed859952751f3f377d581671045873 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/full/obj16/role.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/import.png b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/import.png new file mode 100644 index 0000000000000000000000000000000000000000..bb6ff06b7bcf18590deb1f93a519d5264b6a067f Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/import.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/jar.png b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/jar.png new file mode 100644 index 0000000000000000000000000000000000000000..660f8ea5131c2f9f59a5fa2491993cfa71a1ac57 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/jar.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/ref.png b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/ref.png new file mode 100644 index 0000000000000000000000000000000000000000..2839c60a42f8a79067981fd7b3a26f4b81a69231 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/ref.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/refresh.gif b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/refresh.gif new file mode 100644 index 0000000000000000000000000000000000000000..e3831471a6592da14f53b1e7c5a2f7d6a92d9937 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/refresh.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/repository.png b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/repository.png new file mode 100644 index 0000000000000000000000000000000000000000..92794f126f846474fafef14aac6fccb82faaf4f8 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR08/icons/repository.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/plugin.xml b/Source Code/V2.0/PiacereIDEIntegration.KR08/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..4562af168139bfe1d6d21ed78591496fcbf1f69d --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR08/plugin.xml @@ -0,0 +1,57 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.4"?> +<plugin> + <extension + point="org.eclipse.ui.preferencePages"> + <page + category="PiacereToolCustomization.preferences.page1" + class="eu.piacere.ide.toolIntegration.kr08.preferencePage.KR08PreferencePage" + id="PiacereIDEIntegration.KR08.preferences.page1" + name="Canary SandBox Environment Provisioner Preferences"> + </page> + </extension> + <extension + point="org.eclipse.core.runtime.preferences"> + <initializer + class="eu.piacere.ide.toolIntegration.kr08.preferencePage.KR08PreferenceInitializer"> + </initializer> + </extension> + <extension point = "org.eclipse.ui.views"> + <view + id = "PiacereIDEIntegration.KR08.CanarySandboxViewPart" + name = "Canary SandBox Environment" + category = "org.eclipse.ui" + class = "eu.piacere.ide.toolIntegration.kr08.viewPart.CanarySandboxViewPart" + icon = "Piacere/PiacereIcon_16x16.png" /> + </extension> + <extension + point="org.eclipse.ui.commands"> + <command + categoryId="eu.piacere.piacereModelsCommands.category.id" + defaultHandler="eu.piacere.ide.toolIntegration.kr08.commandHandlers.CreateCanarySandBoxDeploymentCommandHandler" + id="eu.piacere.piacereModelsCommands.createCanarySandBoxDeploymentCommand.id" + name="Create Canary SandBox Deployment"> + </command> + </extension> + <extension + point="org.eclipse.ui.menus"> + <menuContribution + allPopups="false" + locationURI="popup:eu.piacere.eclipsePopupMenu.id"> + <command + commandId="eu.piacere.piacereModelsCommands.createCanarySandBoxDeploymentCommand.id" + icon="Piacere/PiacereIcon_16x16.png" + label="Create Canary SandBox Deployment" + style="push" + tooltip="Create Canary SandBox Deployment"> + <visibleWhen + checkEnabled="false"> + <reference + definitionId="eu.piacere.piacereTool.propertyTesters.extensionPropertyTester.isJSON.id"> + </reference> + </visibleWhen> + </command> + </menuContribution> + </extension> + +</plugin> diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/commandHandlers/CreateCanarySandBoxDeploymentCommandHandler.java b/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/commandHandlers/CreateCanarySandBoxDeploymentCommandHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..727230978eeced93f43b1f674b9b101f94c331bc --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/commandHandlers/CreateCanarySandBoxDeploymentCommandHandler.java @@ -0,0 +1,67 @@ +package eu.piacere.ide.toolIntegration.kr08.commandHandlers; + +import java.io.OutputStream; +import java.net.HttpURLConnection; +import java.net.URL; +import java.net.URLConnection; +import java.nio.charset.StandardCharsets; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.resources.IFile; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.ui.handlers.HandlerUtil; + +import eu.piacere.ide.toolIntegration.kr08.viewPart.util.CSEDeploymentClientUtil; +import eu.piacere.piacereTool.utils.FileUtils; +import eu.piacere.piacereTool.utils.ToolCustomizationUtils; + +public class CreateCanarySandBoxDeploymentCommandHandler extends AbstractHandler{ + + private void doPostToCreateCSEDeployment(String filecontent) throws Exception { + String protocol=ToolCustomizationUtils.getPreference(this.getClass(), "KR08.protocol"); + String host=ToolCustomizationUtils.getPreference(this.getClass(), "KR08.host"); + String port=ToolCustomizationUtils.getPreference(this.getClass(), "KR08.port"); + URL url = new URL(protocol+"://"+host+":"+port+"/deployments/"); + URLConnection con = url.openConnection(); + HttpURLConnection http = (HttpURLConnection)con; + http.setRequestMethod("POST"); + http.setDoOutput(true); + byte[] out = filecontent.getBytes(StandardCharsets.UTF_8); + int length = out.length; + + http.setFixedLengthStreamingMode(length); + http.setRequestProperty("Content-Type", "application/json; charset=UTF-8"); + http.connect(); + try(OutputStream os = http.getOutputStream()) { + os.write(out); + } + } + + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + ToolCustomizationUtils.saveWorkbench(); + ISelection selection = HandlerUtil.getCurrentSelection(event); + if (selection instanceof StructuredSelection) { + if(((StructuredSelection)selection).getFirstElement() instanceof IFile){ + IFile res = (IFile)((StructuredSelection) selection).getFirstElement(); + + String fileContent=FileUtils.getIFileContents(res); + if(fileContent==null) { + return null; + } + try { + doPostToCreateCSEDeployment(fileContent); + CSEDeploymentClientUtil.getRuntimeControllerView().getCanarySandboxController().reloadContent(); + CSEDeploymentClientUtil.getRuntimeControllerView().refreshViewer(); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + return null; + } + +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/preferencePage/KR08PreferenceInitializer.java b/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/preferencePage/KR08PreferenceInitializer.java new file mode 100644 index 0000000000000000000000000000000000000000..fc9e443d023218d01342dc0e6933131d8ddf3539 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/preferencePage/KR08PreferenceInitializer.java @@ -0,0 +1,20 @@ +package eu.piacere.ide.toolIntegration.kr08.preferencePage; + +import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer; +import org.eclipse.core.runtime.preferences.ConfigurationScope; +import org.eclipse.ui.preferences.ScopedPreferenceStore; +import org.osgi.framework.FrameworkUtil; + +public class KR08PreferenceInitializer extends AbstractPreferenceInitializer { + + @Override + public void initializeDefaultPreferences() { + + ScopedPreferenceStore scopedPreferenceStore = new ScopedPreferenceStore(ConfigurationScope.INSTANCE,(FrameworkUtil.getBundle(KR08PreferenceInitializer.class)).getSymbolicName()); + scopedPreferenceStore.setDefault("KR08.host", "csep.ci.piacere.digital.tecnalia.dev"); + scopedPreferenceStore.setDefault("KR08.port", 443); + scopedPreferenceStore.setDefault("KR08.protocol", "https"); + + } + +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/preferencePage/KR08PreferencePage.java b/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/preferencePage/KR08PreferencePage.java new file mode 100644 index 0000000000000000000000000000000000000000..328434b33c03ed6e502b1719692a7aac520c07a2 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/preferencePage/KR08PreferencePage.java @@ -0,0 +1,36 @@ +package eu.piacere.ide.toolIntegration.kr08.preferencePage; + +import org.eclipse.core.runtime.preferences.ConfigurationScope; +import org.eclipse.jface.preference.FieldEditorPreferencePage; +import org.eclipse.jface.preference.IntegerFieldEditor; +import org.eclipse.jface.preference.RadioGroupFieldEditor; +import org.eclipse.jface.preference.StringFieldEditor; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchPreferencePage; +import org.eclipse.ui.preferences.ScopedPreferenceStore; +import org.osgi.framework.FrameworkUtil; + +public class KR08PreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage { + + public KR08PreferencePage() { + super(GRID); + } + + @Override + public void init(IWorkbench workbench) { + //WHICH SCOPE SHOULD I SELECT: https://wiki.eclipse.org/FAQ_What_is_a_preference_scope%3F + + setPreferenceStore(new ScopedPreferenceStore(ConfigurationScope.INSTANCE, (FrameworkUtil.getBundle(KR08PreferenceInitializer.class)).getSymbolicName())); + setDescription("These are the Canary SandBox Environment Provisioner preferences"); + + } + + @Override + protected void createFieldEditors() { + addField(new StringFieldEditor("KR08.host", "Endpoint Host", getFieldEditorParent())); + addField(new IntegerFieldEditor("KR08.port", "Endpoint Port", getFieldEditorParent())); + addField(new RadioGroupFieldEditor("KR08.protocol", "Protocol", 1, new String[][] {{"HTTP","http"},{"HTTPS","https"}}, getFieldEditorParent())); + + } + +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/CanarySandboxViewPart.java b/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/CanarySandboxViewPart.java new file mode 100644 index 0000000000000000000000000000000000000000..2e71295cb623e99e7f82cbe354e56ec36d1124f8 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/CanarySandboxViewPart.java @@ -0,0 +1,198 @@ +package eu.piacere.ide.toolIntegration.kr08.viewPart; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; +import org.eclipse.jface.resource.FontDescriptor; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.jface.resource.JFaceResources; +import org.eclipse.jface.resource.LocalResourceManager; +import org.eclipse.jface.resource.ResourceManager; +import org.eclipse.jface.viewers.IBaseLabelProvider; +import org.eclipse.jface.viewers.IContentProvider; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Menu; +import org.eclipse.ui.IMemento; +import org.eclipse.ui.IViewSite; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.actions.ActionGroup; +import org.eclipse.ui.navigator.CommonNavigator; +import org.eclipse.ui.navigator.CommonViewer; +import org.eclipse.ui.plugin.AbstractUIPlugin; + +import eu.piacere.ide.toolIntegration.kr08.viewPart.actions.CanarySandboxViewActionGroup; +import eu.piacere.ide.toolIntegration.kr08.viewPart.actions.DeleteDeploymentAction; +import eu.piacere.ide.toolIntegration.kr08.viewPart.actions.DownloadDeploymentInfoAction; +import eu.piacere.ide.toolIntegration.kr08.viewPart.actions.LoadDeploymentInfoAction; +import eu.piacere.ide.toolIntegration.kr08.viewPart.actions.RedeployDeploymentAction; +import eu.piacere.ide.toolIntegration.kr08.viewPart.actions.RefreshAction; +import eu.piacere.ide.toolIntegration.kr08.viewPart.providers.CSEContentProvider; +import eu.piacere.ide.toolIntegration.kr08.viewPart.providers.CSELabelProvider; +import eu.piacere.ide.toolIntegration.kr08.viewPart.util.CSEDeployment; +import eu.piacere.ide.toolIntegration.kr08.viewPart.util.CanarySandboxEnvironmentProvisioner; + + +public class CanarySandboxViewPart extends CommonNavigator implements IMenuListener { + + private static CanarySandboxEnvironmentProvisioner canarySandboxEnvironmentProvisioner = new CanarySandboxEnvironmentProvisioner(); + + public CanarySandboxEnvironmentProvisioner getCanarySandboxController() { + return canarySandboxEnvironmentProvisioner; + } + @Override + public void createPartControl(Composite parent) { + super.createPartControl(parent); + + if (getCommonViewer() != null) { + + getCommonViewer().setContentProvider((IContentProvider)new CSEContentProvider((AdapterFactory)new ResourceItemProviderAdapterFactory())); + getCommonViewer().setInput(canarySandboxEnvironmentProvisioner); + getCommonViewer().setLabelProvider((IBaseLabelProvider)new CSELabelProvider()); + ResourceManager resourceManager = new LocalResourceManager(JFaceResources.getResources(), parent); + getCommonViewer().getTree().setFont(resourceManager.createFont(FontDescriptor.createFrom(getCommonViewer().getTree().getFont()).setHeight(14))); + getCommonViewer().setSorter(null); + getCommonViewer().addSelectionChangedListener(new SelectionChangedListener()); + createContextMenuForViewer(getCommonViewer()); + refreshViewer(); + } + } + + public void init(IViewSite aSite, IMemento aMemento) throws PartInitException { + super.init(aSite, aMemento); + + if (aMemento != null && this.getCanarySandboxController().getDeployments().size() == 0) { + /*int i = 0; + while (aMemento.getString("host" + i) != null) { + RepositoryLocation rp = new RepositoryLocation(); + rp.setHost(aMemento.getString("host" + i)); + rp.setRepositoryPath(aMemento.getString("repositorypath" + i)); + rp.setName(aMemento.getString("name" + i)); + if(DeploymentClientUtil.testConnection(rp, false)) { + rp.reloadContent(); + } + locations.add(rp); + i++; + } */ + } + } + + protected CommonViewer createCommonViewerObject(Composite aParent) { + return new CommonViewer(getViewSite().getId(), aParent, 768); + } + + private class SelectionChangedListener implements ISelectionChangedListener { + @SuppressWarnings("unused") + public void selectionChanged(SelectionChangedEvent event) { + if (event.getSelection() instanceof StructuredSelection) { + Object selected = ((StructuredSelection)event.getSelection()).getFirstElement(); + } + } + } + + protected ActionGroup createCommonActionGroup() { + return (ActionGroup)new CanarySandboxViewActionGroup(getCommonViewer()); + } + + public void refreshViewer() { + CommonViewer viewer = getCommonViewer(); + if (viewer != null && !viewer.getTree().isDisposed()) + viewer.refresh(); + } + + public void saveState(IMemento aMemento) { + super.saveState(aMemento);/* + int size = locations.size(); + for (int i = 0; i < size; i++) { + RepositoryLocation rp = locations.get(i); + aMemento.putString("host" + i, rp.getHost()); + aMemento.putString("repositorypath" + i, rp.getRepositoryPath()); + aMemento.putString("name" + i, rp.getName()); + } */ + } + + private void createContextMenuForViewer(CommonViewer viewer) { + MenuManager contextMenu = new MenuManager("Popup", getImageDescriptor("icons/FadaModelRepositoriesView.png"), null); + contextMenu.setRemoveAllWhenShown(true); + contextMenu.addMenuListener(this); + + Menu menu = contextMenu.createContextMenu(viewer.getControl()); + viewer.getControl().setMenu(menu); + this.getSite().registerContextMenu(contextMenu, (ISelectionProvider)viewer); + } + + public void menuAboutToShow(IMenuManager manager) { + ISelection selection = getCommonViewer().getSelection(); + if (selection instanceof StructuredSelection) { + StructuredSelection sel = (StructuredSelection)selection; + Object selectedObject = sel.getFirstElement(); + if (selectedObject instanceof CSEDeployment) { + + + RefreshAction ra = new RefreshAction(); + ra.setText("Refresh All"); + ra.setImageDescriptor(getImageDescriptor("icons/refresh.gif")); + + LoadDeploymentInfoAction ldia = new LoadDeploymentInfoAction(); + ldia.setText("Load Info"); + ldia.setImageDescriptor(getImageDescriptor("icons/repository.png")); + + DownloadDeploymentInfoAction ddia = new DownloadDeploymentInfoAction(); + ddia.setText("Download Info"); + ddia.setImageDescriptor(getImageDescriptor("icons/repository.png")); + + /*GetDeploymentInfoAction gdia = new GetDeploymentInfoAction(); + gdia.setText("Get Deployment Details"); + gdia.setImageDescriptor(getImageDescriptor("icons/repository.png")); + + OpenPerformanceMonitoringAction opma = new OpenPerformanceMonitoringAction(); + opma.setText("Open Performance Monitor"); + opma.setImageDescriptor(getImageDescriptor("icons/ref.png")); +*/ + RedeployDeploymentAction rdda = new RedeployDeploymentAction (); + rdda.setText("Redeploy Deployment"); + rdda.setImageDescriptor(getImageDescriptor("icons/refresh.gif")); + + DeleteDeploymentAction dda = new DeleteDeploymentAction (); + dda.setText("Delete Deployment"); + dda.setImageDescriptor(getImageDescriptor("icons/deleteRepository.png")); + + + + + manager.add((IAction)ra); + manager.add(new Separator("additions")); + manager.add((IAction)ldia); + manager.add((IAction)ddia); + manager.add(new Separator("additions")); + manager.add((IAction)rdda); + /*manager.add((IAction)opma);*/ + manager.add(new Separator("additions")); + manager.add((IAction)dda); + } + /*if (selectedObject instanceof AppComponentsModelVersion || selectedObject instanceof AppSystemConfigurationModelVersion) { + DownloadModelAction dma = new DownloadModelAction(); + dma.setText("Download Model"); + dma.setImageDescriptor(getImageDescriptor("icons/download.png")); + manager.add((IAction)dma); + + DeleteModelAction dma2 = new DeleteModelAction(); + dma2.setText("Delete Model from Repository"); + dma2.setImageDescriptor(getImageDescriptor("icons/deleteRepository.png")); + manager.add((IAction)dma2); + }*/ + } + } + + protected final ImageDescriptor getImageDescriptor(String relativePath) { + return AbstractUIPlugin.imageDescriptorFromPlugin("PiacereIDEIntegration.KR08", relativePath); + } +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/CanarySandboxViewActionGroup.java b/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/CanarySandboxViewActionGroup.java new file mode 100644 index 0000000000000000000000000000000000000000..f4905c20f12e671e7e43e166b7e30e8bed3fc55e --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/CanarySandboxViewActionGroup.java @@ -0,0 +1,53 @@ +package eu.piacere.ide.toolIntegration.kr08.viewPart.actions; + +import org.eclipse.jface.action.Separator; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.ui.IActionBars; +import org.eclipse.ui.actions.ActionGroup; +import org.eclipse.ui.navigator.CommonViewer; +import org.eclipse.ui.plugin.AbstractUIPlugin; + + +public class CanarySandboxViewActionGroup extends ActionGroup +{ + private final CommonViewer commonViewer; + + public CanarySandboxViewActionGroup(CommonViewer viewer) { + this.commonViewer = viewer; + } + + protected final ImageDescriptor getImageDescriptor(String relativePath) { + return AbstractUIPlugin.imageDescriptorFromPlugin("PiacereIDEIntegration.KR10_KR11_KR12", relativePath); + } + + public void fillActionBars(IActionBars actionBars) { + + RefreshAction ra = new RefreshAction(); + ra.setText("Refresh All"); + ra.setImageDescriptor(getImageDescriptor("icons/refresh.gif")); + + /*CreateDeploymentAction cda = new CreateDeploymentAction(); + cda.setText("Create Deployment"); + cda.setImageDescriptor(getImageDescriptor("icons/addRepository.png")); +*/ + CollapseAllAction ca = new CollapseAllAction(this.commonViewer); + ca.setText("Collapse All"); + ca.setImageDescriptor(getImageDescriptor("icons/collapseAll.gif")); + + ExpandAllAction ea = new ExpandAllAction(this.commonViewer); + ea.setText("Expand All"); + ea.setImageDescriptor(getImageDescriptor("icons/expandAll.gif")); + + actionBars.getMenuManager().add(ra); + //actionBars.getMenuManager().add(new Separator("additions")); + //actionBars.getMenuManager().add(cda); + actionBars.getMenuManager().add(new Separator("additions")); + actionBars.getMenuManager().add(ca); + actionBars.getMenuManager().add(ea); + } +} + + + + + diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/CollapseAllAction.java b/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/CollapseAllAction.java new file mode 100644 index 0000000000000000000000000000000000000000..98ff044ee02492c02f4fe00b949a3ee6051518d3 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/CollapseAllAction.java @@ -0,0 +1,24 @@ +package eu.piacere.ide.toolIntegration.kr08.viewPart.actions; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.ui.IWorkbenchCommandConstants; +import org.eclipse.ui.navigator.CommonViewer; + +public class CollapseAllAction extends Action implements IAction +{ + private final CommonViewer commonViewer; + + public CollapseAllAction(CommonViewer aViewer) { + super("Collapse all"); + setToolTipText("Collapse all"); + setActionDefinitionId(IWorkbenchCommandConstants.NAVIGATE_COLLAPSE_ALL); + this.commonViewer = aViewer; + } + + public void run() { + if (this.commonViewer != null) + this.commonViewer.collapseAll(); + } +} + diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/DeleteDeploymentAction.java b/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/DeleteDeploymentAction.java new file mode 100644 index 0000000000000000000000000000000000000000..a13df3631f7bbad24b6293d8758e60d84179b3b6 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/DeleteDeploymentAction.java @@ -0,0 +1,47 @@ +package eu.piacere.ide.toolIntegration.kr08.viewPart.actions; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.restlet.data.Protocol; + +import eu.piacere.ide.toolIntegration.kr08.viewPart.CanarySandboxViewPart; +import eu.piacere.ide.toolIntegration.kr08.viewPart.util.CSEDeployment; +import eu.piacere.ide.toolIntegration.kr08.viewPart.util.CSEDeploymentClientUtil; +import eu.piacere.piacereTool.utils.ToolCustomizationUtils; + + +public class DeleteDeploymentAction extends Action implements IAction +{ + + public void run() { + CanarySandboxViewPart repositoriesView = CSEDeploymentClientUtil.getRuntimeControllerView(); + ISelection selection = repositoriesView.getCommonViewer().getSelection(); + if (selection instanceof StructuredSelection) { + StructuredSelection sel = (StructuredSelection)selection; + Object selectedObject = sel.getFirstElement(); + if (selectedObject instanceof CSEDeployment) { + CSEDeployment deployment = (CSEDeployment)selectedObject; + + String protocol = ToolCustomizationUtils.getPreference(this.getClass(), "KR08.protocol"); + String host = ToolCustomizationUtils.getPreference(this.getClass(), "KR08.host"); + String port = ToolCustomizationUtils.getPreference(this.getClass(), "KR08.port"); + Protocol p = null; + if(protocol.equals("http")) { + p=Protocol.HTTP; + } + else if(protocol.equals("https")) { + p=Protocol.HTTPS; + } + if(CSEDeploymentClientUtil.deleteDeployment(protocol+"://"+host+":"+port+"/", p, deployment)){ + CanarySandboxViewPart csView = CSEDeploymentClientUtil.getRuntimeControllerView(); + if (csView != null) { + csView.getCanarySandboxController().reloadContent(); + csView.refreshViewer(); + } + } + } + } + } +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/DownloadDeploymentInfoAction.java b/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/DownloadDeploymentInfoAction.java new file mode 100644 index 0000000000000000000000000000000000000000..b8f845f72f01667e73c1a39e257aadb321cbd7a1 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/DownloadDeploymentInfoAction.java @@ -0,0 +1,104 @@ +package eu.piacere.ide.toolIntegration.kr08.viewPart.actions; + +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IWorkspace; +import org.eclipse.core.resources.IWorkspaceRoot; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.Path; +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.dialogs.ProgressMonitorDialog; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.ui.dialogs.ContainerSelectionDialog; +import org.json.JSONException; +import org.json.JSONObject; +import org.restlet.data.Protocol; + +import eu.piacere.ide.toolIntegration.kr08.viewPart.CanarySandboxViewPart; +import eu.piacere.ide.toolIntegration.kr08.viewPart.util.CSEDeployment; +import eu.piacere.ide.toolIntegration.kr08.viewPart.util.CSEDeploymentClientUtil; +import eu.piacere.piacereTool.utils.FileUtils; +import eu.piacere.piacereTool.utils.ToolCustomizationUtils; + + +public class DownloadDeploymentInfoAction extends Action implements IAction +{ + + public void run() { + CanarySandboxViewPart repositoriesView = CSEDeploymentClientUtil.getRuntimeControllerView(); + ISelection selection = repositoriesView.getCommonViewer().getSelection(); + if (selection instanceof StructuredSelection) { + StructuredSelection sel = (StructuredSelection)selection; + Object selectedObject = sel.getFirstElement(); + if (selectedObject instanceof CSEDeployment) { + CSEDeployment deployment = (CSEDeployment)selectedObject; + + String protocol = ToolCustomizationUtils.getPreference(this.getClass(), "KR08.protocol"); + String host = ToolCustomizationUtils.getPreference(this.getClass(), "KR08.host"); + String port = ToolCustomizationUtils.getPreference(this.getClass(), "KR08.port"); + Protocol p = null; + if(protocol.equals("http")) { + p=Protocol.HTTP; + } + else if(protocol.equals("https")) { + p=Protocol.HTTPS; + } + JSONObject deploymentInfo=CSEDeploymentClientUtil.retrieveDeploymentGet(protocol+"://"+host+":"+port+"/", p, deployment); + if(ToolCustomizationUtils.showQuestionDialog("Save Result", "Do you want to save the validation result on workspace?")) { + try { + String destinationPath=handleBrowse(); + if(destinationPath!=null) { + IContainer cont=ResourcesPlugin.getWorkspace().getRoot().getContainerForLocation(new Path(ResourcesPlugin.getWorkspace().getRoot().getLocation().toString()+destinationPath)); + saveFileInWorkspace(cont, deploymentInfo.toString(4), deployment.getDeploymentName()+"_DeploymentInfo.json"); + } + } catch (JSONException e) { + e.printStackTrace(); + } + } + } + } + } + + + private void saveFileInWorkspace(IContainer container, String fileContent, String defaultFileName) { + + + String domlModelName=ToolCustomizationUtils.doDialogAsk("Deployment Info", "Enter the Deployment Info File Name", defaultFileName); + + ProgressMonitorDialog pd=new ProgressMonitorDialog(ToolCustomizationUtils.getActiveShell()); + pd.open(); + try { + FileUtils.createFile(domlModelName , container, fileContent, pd); + } catch (Exception e1) { + e1.printStackTrace(); + } + pd.close(); + try { + container.refreshLocal(IResource.DEPTH_INFINITE, null); + } catch (CoreException e) { + e.printStackTrace(); + } + } + + public String handleBrowse() { + IWorkspace _workspace = ResourcesPlugin.getWorkspace(); + IWorkspaceRoot _root = _workspace.getRoot(); + ContainerSelectionDialog _containerSelectionDialog = new ContainerSelectionDialog(ToolCustomizationUtils.getActiveShell(), _root, false, "Select new file container"); + final ContainerSelectionDialog dialog = _containerSelectionDialog; + int _open = dialog.open(); + if (_open == ContainerSelectionDialog.OK) { + final Object[] result = dialog.getResult(); + int _length = result.length; + if (_length == 1) { + Object _get = result[0]; + String _string = ((Path) _get).toString(); + return _string; + } + } + return null; + } +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/ExpandAllAction.java b/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/ExpandAllAction.java new file mode 100644 index 0000000000000000000000000000000000000000..b3d50050b322558542a08a76cab72dc56800df96 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/ExpandAllAction.java @@ -0,0 +1,25 @@ +package eu.piacere.ide.toolIntegration.kr08.viewPart.actions; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.ui.IWorkbenchCommandConstants; +import org.eclipse.ui.navigator.CommonViewer; + +public class ExpandAllAction extends Action implements IAction +{ + private final CommonViewer commonViewer; + + public ExpandAllAction(CommonViewer aViewer) { + super("Expand All"); + setToolTipText("Expand All"); + setActionDefinitionId(IWorkbenchCommandConstants.NAVIGATE_EXPAND_ALL); + + this.commonViewer = aViewer; + } + + public void run() { + if (this.commonViewer != null) + this.commonViewer.expandAll(); + } +} + diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/LoadDeploymentInfoAction.java b/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/LoadDeploymentInfoAction.java new file mode 100644 index 0000000000000000000000000000000000000000..3e04fcba0de2d219821528d26f9447b03c79b0c4 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/LoadDeploymentInfoAction.java @@ -0,0 +1,48 @@ +package eu.piacere.ide.toolIntegration.kr08.viewPart.actions; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.json.JSONException; +import org.json.JSONObject; +import org.restlet.data.Protocol; + +import eu.piacere.ide.toolIntegration.kr08.viewPart.CanarySandboxViewPart; +import eu.piacere.ide.toolIntegration.kr08.viewPart.util.CSEDeployment; +import eu.piacere.ide.toolIntegration.kr08.viewPart.util.CSEDeploymentClientUtil; +import eu.piacere.piacereTool.utils.ToolCustomizationUtils; + + +public class LoadDeploymentInfoAction extends Action implements IAction +{ + + public void run() { + CanarySandboxViewPart repositoriesView = CSEDeploymentClientUtil.getRuntimeControllerView(); + ISelection selection = repositoriesView.getCommonViewer().getSelection(); + if (selection instanceof StructuredSelection) { + StructuredSelection sel = (StructuredSelection)selection; + Object selectedObject = sel.getFirstElement(); + if (selectedObject instanceof CSEDeployment) { + CSEDeployment deployment = (CSEDeployment)selectedObject; + + String protocol = ToolCustomizationUtils.getPreference(this.getClass(), "KR08.protocol"); + String host = ToolCustomizationUtils.getPreference(this.getClass(), "KR08.host"); + String port = ToolCustomizationUtils.getPreference(this.getClass(), "KR08.port"); + Protocol p = null; + if(protocol.equals("http")) { + p=Protocol.HTTP; + } + else if(protocol.equals("https")) { + p=Protocol.HTTPS; + } + JSONObject res=CSEDeploymentClientUtil.retrieveDeploymentGet(protocol+"://"+host+":"+port+"/", p, deployment); + try { + ToolCustomizationUtils.showInformationDialog(deployment.getDeploymentName()+" INFO", res.toString(4)); + } catch (JSONException e) { + e.printStackTrace(); + } + } + } + } +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/RedeployDeploymentAction.java b/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/RedeployDeploymentAction.java new file mode 100644 index 0000000000000000000000000000000000000000..39b7124f53b0aea956b9f3bda95ac170b7c441f0 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/RedeployDeploymentAction.java @@ -0,0 +1,47 @@ +package eu.piacere.ide.toolIntegration.kr08.viewPart.actions; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.restlet.data.Protocol; + +import eu.piacere.ide.toolIntegration.kr08.viewPart.CanarySandboxViewPart; +import eu.piacere.ide.toolIntegration.kr08.viewPart.util.CSEDeployment; +import eu.piacere.ide.toolIntegration.kr08.viewPart.util.CSEDeploymentClientUtil; +import eu.piacere.piacereTool.utils.ToolCustomizationUtils; + + +public class RedeployDeploymentAction extends Action implements IAction +{ + + public void run() { + CanarySandboxViewPart repositoriesView = CSEDeploymentClientUtil.getRuntimeControllerView(); + ISelection selection = repositoriesView.getCommonViewer().getSelection(); + if (selection instanceof StructuredSelection) { + StructuredSelection sel = (StructuredSelection)selection; + Object selectedObject = sel.getFirstElement(); + if (selectedObject instanceof CSEDeployment) { + CSEDeployment deployment = (CSEDeployment)selectedObject; + + String protocol = ToolCustomizationUtils.getPreference(this.getClass(), "KR08.protocol"); + String host = ToolCustomizationUtils.getPreference(this.getClass(), "KR08.host"); + String port = ToolCustomizationUtils.getPreference(this.getClass(), "KR08.port"); + Protocol p = null; + if(protocol.equals("http")) { + p=Protocol.HTTP; + } + else if(protocol.equals("https")) { + p=Protocol.HTTPS; + } + if(CSEDeploymentClientUtil.redeployDeployment(protocol+"://"+host+":"+port+"/", p, deployment)){ + CanarySandboxViewPart csView = CSEDeploymentClientUtil.getRuntimeControllerView(); + if (csView != null) { + csView.getCanarySandboxController().reloadContent(); + csView.refreshViewer(); + } + } + } + } + } +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/RefreshAction.java b/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/RefreshAction.java new file mode 100644 index 0000000000000000000000000000000000000000..98904b179246c3574c75d0996ecb32799083eabe --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/RefreshAction.java @@ -0,0 +1,18 @@ +package eu.piacere.ide.toolIntegration.kr08.viewPart.actions; + +import org.eclipse.jface.action.Action; + +import eu.piacere.ide.toolIntegration.kr08.viewPart.CanarySandboxViewPart; +import eu.piacere.ide.toolIntegration.kr08.viewPart.util.CSEDeploymentClientUtil; + +public class RefreshAction extends Action +{ + public void run() { + super.run(); + CanarySandboxViewPart csView = CSEDeploymentClientUtil.getRuntimeControllerView(); + if (csView != null) { + csView.getCanarySandboxController().reloadContent(); + csView.refreshViewer(); + } + } +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/providers/CSEContentProvider.java b/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/providers/CSEContentProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..ad670c58d7927ee6e5d07804cb55599591ac2b7f --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/providers/CSEContentProvider.java @@ -0,0 +1,60 @@ +package eu.piacere.ide.toolIntegration.kr08.viewPart.providers; + +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider; + +import eu.piacere.ide.toolIntegration.kr08.viewPart.util.CSEDeployment; +import eu.piacere.ide.toolIntegration.kr08.viewPart.util.CanarySandboxEnvironmentProvisioner; + +public class CSEContentProvider extends AdapterFactoryContentProvider +{ + public CSEContentProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + + } + + @SuppressWarnings("unchecked") + public Object[] getElements(Object object) { + if (object instanceof List) { + List<CanarySandboxEnvironmentProvisioner> elements = (List<CanarySandboxEnvironmentProvisioner>)object; + return elements.toArray(); + } + if (object instanceof CanarySandboxEnvironmentProvisioner) { + return ((CanarySandboxEnvironmentProvisioner)object).getDeployments().values().toArray(); + + } + + return super.getElements(object); + } + + + + public boolean hasChildren(Object object) { + if (object instanceof CanarySandboxEnvironmentProvisioner) { + return ((CanarySandboxEnvironmentProvisioner)object).getDeployments().size()>0; + } + else if(object instanceof CSEDeployment) { + return false; + } + return super.hasChildren(object); + } + + + + public Object[] getChildren(Object object) { + if (object instanceof CanarySandboxEnvironmentProvisioner) { + CanarySandboxEnvironmentProvisioner csep = (CanarySandboxEnvironmentProvisioner)object; + ArrayList<Object> assets = new ArrayList<Object>(); + for(CSEDeployment dep : csep.getDeployments().values()) { + assets.add(dep); + } + return assets.toArray(); + } + return null; + } + +} + diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/providers/CSELabelProvider.java b/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/providers/CSELabelProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..0221834c739a3ec466d05fc6ee7f37925fa0693b --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/providers/CSELabelProvider.java @@ -0,0 +1,94 @@ +package eu.piacere.ide.toolIntegration.kr08.viewPart.providers; + +import java.io.IOException; + +import org.eclipse.core.runtime.FileLocator; +import org.eclipse.core.runtime.Platform; +import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.swt.graphics.Device; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.widgets.Display; + +import eu.piacere.ide.toolIntegration.kr08.viewPart.util.CSEDeployment; +import eu.piacere.ide.toolIntegration.kr08.viewPart.util.CanarySandboxEnvironmentProvisioner; + +public class CSELabelProvider extends LabelProvider +{ + + public String getText(Object element) { + if (element instanceof CanarySandboxEnvironmentProvisioner) { + return getCanarySandboxEnvironmentProvisionerLabel((CanarySandboxEnvironmentProvisioner)element); + } + else if(element instanceof CSEDeployment) { + return "Deployment ID: "+((CSEDeployment)element).getDeploymentName(); + } + return super.getText(element); + } + + public Image getImage(Object element) { + try { + String imagePath = FileLocator.toFileURL(Platform.getBundle("PiacereIDEIntegration.KR08").getResource("icons/")).getPath(); + /*if (element instanceof PiacereRuntimeController) { + Image image = null; + if(((PiacereRuntimeController)element).isConnected()) { + image = new Image((Device)Display.getCurrent(), String.valueOf(imagePath) + "RepoConnected.png"); + } + else { + image = new Image((Device)Display.getCurrent(), String.valueOf(imagePath) + "RepoDisconnected.png"); + } + return image; + } + else */ + if (element instanceof CSEDeployment) { + Image image = new Image((Device)Display.getCurrent(), String.valueOf(imagePath) + "repository.png"); + return image; + } + /*else if (element instanceof AppComponentsModel) { + Image image = new Image((Device)Display.getCurrent(), String.valueOf(imagePath) + "ComponentsModel.png"); + return image; + } + else if (element instanceof AppSystemConfigurationModel) { + Image image = new Image((Device)Display.getCurrent(), String.valueOf(imagePath) + "SystemConfigurationModel.png"); + return image; + } + + else if (element instanceof AppComponentsModelVersion) { + Image image = new Image((Device)Display.getCurrent(), String.valueOf(imagePath) + "bundle.png"); + return image; + } + else if (element instanceof AppSystemConfigurationModelVersion) { + Image image = new Image((Device)Display.getCurrent(), String.valueOf(imagePath) + "bundle.png"); + return image; + } + + else if (element instanceof AppComponentsModelReference) { + Image image = new Image((Device)Display.getCurrent(), String.valueOf(imagePath) + "ref.png"); + return image; + } */ + } catch (IOException iOException) { + return null; + } + return super.getImage(element); + } + + + private String getCanarySandboxEnvironmentProvisionerLabel(CanarySandboxEnvironmentProvisioner cse) { + String res=cse.getCanarySandboxEnvironmentProvisionerURL(); + + /*if(location.getName()!=null && location.getName()!="") { + res = location.getName()+": "; + } + + String host = (location.getHost() == null) ? "" : location.getHost(); + String repositoryPath = (location.getRepositoryPath() == null) ? "" : location.getRepositoryPath(); + + return res+host + "/" + repositoryPath;*/ + return res; + } + +} + + + + + diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/util/CSEDeployment.java b/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/util/CSEDeployment.java new file mode 100644 index 0000000000000000000000000000000000000000..cd98a545f952b1578582d90f354a0f9bb532264c --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/util/CSEDeployment.java @@ -0,0 +1,20 @@ +package eu.piacere.ide.toolIntegration.kr08.viewPart.util; + +public class CSEDeployment { + private String deploymentName; + + + public CSEDeployment(String name) { + this.setDeploymentName(name); + } + + + public String getDeploymentName() { + return deploymentName; + } + + + public void setDeploymentName(String deploymentName) { + this.deploymentName = deploymentName; + } +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/util/CSEDeploymentClientUtil.java b/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/util/CSEDeploymentClientUtil.java new file mode 100644 index 0000000000000000000000000000000000000000..ade9913f7dbd2689b99784a474c05161626de169 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/util/CSEDeploymentClientUtil.java @@ -0,0 +1,97 @@ +package eu.piacere.ide.toolIntegration.kr08.viewPart.util; + +import org.eclipse.ui.IViewPart; +import org.eclipse.ui.PlatformUI; +import org.json.JSONObject; +import org.restlet.Client; +import org.restlet.Context; +import org.restlet.data.MediaType; +import org.restlet.data.Protocol; +import org.restlet.resource.ClientResource; + +import eu.piacere.ide.toolIntegration.kr08.viewPart.CanarySandboxViewPart; + +public class CSEDeploymentClientUtil { + + + + public static boolean testConnection(CanarySandboxEnvironmentProvisioner csep, boolean showErrors) { + return csep.isConnected(); + + } + + public static CanarySandboxViewPart getRuntimeControllerView() { + try { + IViewPart viewPart = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView("PiacereIDEIntegration.KR08.CanarySandboxViewPart"); + if (viewPart instanceof CanarySandboxViewPart) + return (CanarySandboxViewPart)viewPart; + } catch (Exception exception) { + return null; + } + return null; + } + + public static JSONObject retrieveDeploymentGet(String getURL, Protocol proto, CSEDeployment deployment) { + Client client = new Client(new Context(), proto); + + ClientResource service = new ClientResource(getURL); + service.setNext(client); + ClientResource resource = service.getChild("deployments/"+deployment.getDeploymentName()); + String respuesta=""; + try { + respuesta=resource.get().getText(); + return new JSONObject(respuesta); + } + catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + public static boolean deleteDeployment(String deleteURL, Protocol proto, CSEDeployment deployment) { + + Client client = new Client(new Context(), proto); + + ClientResource service = new ClientResource(deleteURL); + service.setNext(client); + try { + ClientResource resource = service.getChild("deployments/"+deployment.getDeploymentName()); + resource.delete(); + return resource.getResponse().getStatus().getCode()/100==2; + } + catch (Exception e) { + e.printStackTrace(); + } + + return false; + } + + public static boolean redeployDeployment(String postURL, Protocol proto, CSEDeployment deployment) { + //DEVUELVE SIEMPRE UN ERROR 400 + Client client = new Client(new Context(), proto); + + ClientResource service = new ClientResource(postURL); + service.setNext(client); + try { + JSONObject objectToPost=new JSONObject(); + objectToPost.put("type", "dummy"); + objectToPost.put("time_to_start", 0); + objectToPost.put("time_to_complete", 0); + objectToPost.put("should_succeed", true); + + ClientResource resource = service.getChild("deployments/"+deployment.getDeploymentName()+"/redeploy"); + resource.post(resource.toRepresentation(objectToPost.toString(), MediaType.APPLICATION_JSON)); + return resource.getResponse().getStatus().getCode()/100==2; + } + catch (Exception e) { + e.printStackTrace(); + } + + return false; + } + + + + + +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/util/CSEPClientUtil.java b/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/util/CSEPClientUtil.java new file mode 100644 index 0000000000000000000000000000000000000000..269715f3b4ed40b41ccd5864b407304c17c6ad73 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/util/CSEPClientUtil.java @@ -0,0 +1,31 @@ +package eu.piacere.ide.toolIntegration.kr08.viewPart.util; + +import org.json.JSONArray; +import org.restlet.Client; +import org.restlet.Context; +import org.restlet.data.Protocol; +import org.restlet.resource.ClientResource; + +public class CSEPClientUtil { + + public static JSONArray retrieveAllDeploymentsGet(String getURL, Protocol proto) { + Client client = new Client(new Context(), proto); + + ClientResource service = new ClientResource(getURL); + service.setNext(client); + ClientResource resource = service.getChild("deployments"); + String respuesta=""; + try { + respuesta=resource.get().getText(); + if(respuesta.equals("[]")) { + //respuesta="[{\"name\": \"test_os\"}]"; + } + return new JSONArray(respuesta); + } + catch (Exception e) { + e.printStackTrace(); + } + return null; + } + +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/util/CanarySandboxEnvironmentProvisioner.java b/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/util/CanarySandboxEnvironmentProvisioner.java new file mode 100644 index 0000000000000000000000000000000000000000..0e993299ba05c5d422581ab06c5a42a42af9977f --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/util/CanarySandboxEnvironmentProvisioner.java @@ -0,0 +1,134 @@ +package eu.piacere.ide.toolIntegration.kr08.viewPart.util; + +import java.util.TreeMap; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; +import org.restlet.Client; +import org.restlet.Context; +import org.restlet.data.Protocol; +import org.restlet.data.Status; +import org.restlet.resource.ClientResource; + +import eu.piacere.piacereTool.utils.ToolCustomizationUtils; + +public class CanarySandboxEnvironmentProvisioner { + + + private String protocol; + private String host; + private String port; + + + public static String DEPLOYMENTS_PATH = "deployments"; + + private TreeMap<String, CSEDeployment> rpcDeployments; + private Boolean isConnected; + + public CanarySandboxEnvironmentProvisioner() { + this.setProtocol(ToolCustomizationUtils.getPreference(this.getClass(), "KR08.protocol")); + this.setHost(ToolCustomizationUtils.getPreference(this.getClass(), "KR08.host")); + this.setPort(ToolCustomizationUtils.getPreference(this.getClass(), "KR08.port")); + this.setDeployments(new TreeMap<String,CSEDeployment>()); + reloadContent(); + + } + + public String getProtocol() { + return protocol; + } + + public void setProtocol(String protocol) { + this.protocol = protocol; + } + + public String getHost() { + return host; + } + + public void setHost(String host) { + this.host = host; + } + + public String getPort() { + return port; + } + + public void setPort(String port) { + this.port = port; + } + + public TreeMap<String, CSEDeployment> getDeployments() { + return rpcDeployments; + } + + public void setDeployments(TreeMap<String, CSEDeployment> rpcDeployments) { + this.rpcDeployments = rpcDeployments; + } + + @Override + public String toString() { + return "Canary SandBox Environment Provisioner"; + } + + public void reloadContent() { + if(this.testConnection()) { + this.setDeployments(new TreeMap<String,CSEDeployment>()); + + Protocol p = loadProtocol(); + JSONArray res=CSEPClientUtil.retrieveAllDeploymentsGet(getCanarySandboxEnvironmentProvisionerURL(), p); + for(int i = 0; i < res.length(); i++) { + try { + JSONObject obj = res.getJSONObject(i); + this.getDeployments().put(obj.getString("name"), new CSEDeployment(obj.getString("name"))); + } catch (JSONException e) { + e.printStackTrace(); + } + } + } + } + + private Protocol loadProtocol() { + Protocol p = null; + if(this.getProtocol().equals("http")) { + p=Protocol.HTTP; + } + else if(this.getProtocol().equals("https")) { + p=Protocol.HTTPS; + } + return p; + } + + public String getCanarySandboxEnvironmentProvisionerURL() { + String res = this.getProtocol()+"://"+this.getHost()+":"+this.getPort()+"/"; + return res; + } + + public boolean testConnection() { + Protocol p = loadProtocol(); + if(p!=null) { + Client client = new Client(new Context(), p); + ClientResource service = new ClientResource(getCanarySandboxEnvironmentProvisionerURL()); + service.setNext(client); + ClientResource resource = service.getChild("/"+DEPLOYMENTS_PATH); + try { + resource.get().getText(); + Status s=resource.getStatus(); + if(s.getCode()==200) { + return true; + } + } + catch (Exception e) { + } + } + return false; + } + + public boolean isConnected() { + if(this.isConnected==null) { + isConnected=testConnection(); + } + return isConnected.booleanValue(); + } +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR09/.classpath b/Source Code/V2.0/PiacereIDEIntegration.KR09/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..81fe078c20c05db46a8281fbb1a72875a5322b45 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR09/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="src" path="src"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR09/.gitignore b/Source Code/V2.0/PiacereIDEIntegration.KR09/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..ae3c1726048cd06b9a143e0376ed46dd9b9a8d53 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR09/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR09/.project b/Source Code/V2.0/PiacereIDEIntegration.KR09/.project new file mode 100644 index 0000000000000000000000000000000000000000..4d3c8d95c5cdf8f7400e0b9b81f3b00d97a0ceb9 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR09/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>PiacereIDEIntegration.KR09</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR09/.settings/org.eclipse.jdt.core.prefs b/Source Code/V2.0/PiacereIDEIntegration.KR09/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000000000000000000000000000000000000..62ef3488cc0468ee9c2d4440dfbbbd5877cd0c28 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR09/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,9 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 +org.eclipse.jdt.core.compiler.compliance=17 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=17 diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR09/META-INF/MANIFEST.MF b/Source Code/V2.0/PiacereIDEIntegration.KR09/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..afc02e72e13c3c6f34bae98fcc5f98dc68fae7a6 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR09/META-INF/MANIFEST.MF @@ -0,0 +1,23 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: KR09 +Bundle-SymbolicName: PiacereIDEIntegration.KR09;singleton:=true +Bundle-Version: 1.0.0.qualifier +Automatic-Module-Name: PiacereIDEIntegration.KR09 +Require-Bundle: org.eclipse.ui, + org.eclipse.core.runtime, + org.apache.httpcomponents.httpcore +Import-Package: eu.piacere.doml.doml.commons, + eu.piacere.piacereTool.utils, + org.apache.commons.io, + org.apache.http.client;version="4.5.13", + org.apache.http.client.methods;version="4.5.13", + org.apache.http.impl.client;version="4.5.13", + org.eclipse.core.resources, + org.eclipse.core.runtime.preferences;version="3.4.0", + org.eclipse.emf.common.util, + org.eclipse.emf.ecore, + org.eclipse.emf.ecore.resource, + org.eclipse.emf.ecore.resource.impl, + org.eclipse.emf.ecore.util, + org.json diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR09/Piacere/PiacereIcon_16x16.png b/Source Code/V2.0/PiacereIDEIntegration.KR09/Piacere/PiacereIcon_16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..444de54d6cfe2958fac1bbb89dd8619b4c537c47 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR09/Piacere/PiacereIcon_16x16.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR09/build.properties b/Source Code/V2.0/PiacereIDEIntegration.KR09/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..52086a7c305694aa678bde0640768488a5cf8e4f --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR09/build.properties @@ -0,0 +1,6 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + .,\ + plugin.xml,\ + Piacere/ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR09/plugin.xml b/Source Code/V2.0/PiacereIDEIntegration.KR09/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..905c4578b32a57513839287c5b6e9859647cb9c0 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR09/plugin.xml @@ -0,0 +1,50 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.4"?> +<plugin> + <extension + point="org.eclipse.ui.preferencePages"> + <page + category="PiacereToolCustomization.preferences.page1" + class="eu.piacere.ide.toolIntegration.kr09.preferencePage.KR09PreferencePage" + id="PiacereIDEIntegration.KR09.preferences.page1" + name="IaC Optimizer Platform Preferences"> + </page> + </extension> + <extension + point="org.eclipse.core.runtime.preferences"> + <initializer + class="eu.piacere.ide.toolIntegration.kr09.preferencePage.KR09PreferenceInitializer"> + </initializer> + </extension> + + <extension + point="org.eclipse.ui.commands"> + <command + categoryId="eu.piacere.piacereModelsCommands.category.id" + defaultHandler="eu.piacere.ide.toolIntegration.kr09.commandHandlers.OptimizerCommandHandler" + id="eu.piacere.piacereModelsCommands.OptimizerCommand.id" + name="Optimize DOML"> + </command> + </extension> + <extension + point="org.eclipse.ui.menus"> + <menuContribution + allPopups="false" + locationURI="popup:eu.piacere.eclipsePopupMenu.id"> + <command + commandId="eu.piacere.piacereModelsCommands.OptimizerCommand.id" + icon="Piacere/PiacereIcon_16x16.png" + label="Optimize DOML" + style="push" + tooltip="Optimize the DOML Specification"> + <visibleWhen + checkEnabled="false"> + <reference + definitionId="eu.piacere.piacereTool.propertyTesters.extensionPropertyTester.isDOMLModel.id"> + </reference> + </visibleWhen> + </command> + </menuContribution> + </extension> + +</plugin> diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR09/src/eu/piacere/ide/toolIntegration/kr09/commandHandlers/OptimizerCommandHandler.java b/Source Code/V2.0/PiacereIDEIntegration.KR09/src/eu/piacere/ide/toolIntegration/kr09/commandHandlers/OptimizerCommandHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..4150eb73b2505302392ad16dadd42b888e32824c --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR09/src/eu/piacere/ide/toolIntegration/kr09/commandHandlers/OptimizerCommandHandler.java @@ -0,0 +1,107 @@ +package eu.piacere.ide.toolIntegration.kr09.commandHandlers; + +import java.io.IOException; + +import org.apache.http.client.ClientProtocolException; +import org.apache.http.client.HttpClient; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.util.EntityUtils; +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.jface.dialogs.ProgressMonitorDialog; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.ui.handlers.HandlerUtil; +import org.json.JSONException; + +import eu.piacere.piacereTool.utils.FileUtils; +import eu.piacere.piacereTool.utils.ToolCustomizationUtils; + +public class OptimizerCommandHandler extends AbstractHandler { + + private String doPostRequestToValidator(String fileContent) throws ClientProtocolException, IOException, JSONException { + HttpClient httpClient = HttpClientBuilder.create().build(); + + String url=ToolCustomizationUtils.getPreference(this.getClass(), "KR09.protocol")+"://"+ToolCustomizationUtils.getPreference(this.getClass(), "KR09.host")+":"+ToolCustomizationUtils.getPreference(this.getClass(), "KR09.port")+"/api/optimize"; + + HttpPost httpPost = new HttpPost(url); + + StringEntity entity = new StringEntity(fileContent); + httpPost.setEntity(entity); + + httpPost.setHeader("Accept", "application/json"); + + CloseableHttpResponse response = (CloseableHttpResponse) httpClient.execute(httpPost); + if(response.getStatusLine().getStatusCode()==200) { + String content = EntityUtils.toString(response.getEntity()); + ToolCustomizationUtils.showInformationDialog("Model Optimized", "Your Model has been optimized successfull"); + return content; + } + else { + ToolCustomizationUtils.showErrorDialog("Model Optimized", "Your model can not be optimized"); + + } + return null; + } + + private void saveFileInWorkspace(IContainer container, String fileContent, String defaultFileName) { + String domlModelName=ToolCustomizationUtils.doDialogAsk("DOML Optimizer", "Enter the DOML Optimizer Results File Name", defaultFileName); + + + ProgressMonitorDialog pd=new ProgressMonitorDialog(ToolCustomizationUtils.getActiveShell()); + pd.open(); + try { + FileUtils.createFile(domlModelName+".optimized_"+ FileUtils.getTimestamp() +".doml", container, fileContent, pd); + } catch (Exception e1) { + e1.printStackTrace(); + } + pd.close(); + try { + container.refreshLocal(IResource.DEPTH_INFINITE, null); + } catch (CoreException e) { + e.printStackTrace(); + } + } + + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + ToolCustomizationUtils.saveWorkbench(); + ISelection selection = HandlerUtil.getCurrentSelection(event); + if (selection instanceof StructuredSelection) { + if(((StructuredSelection)selection).getFirstElement() instanceof IFile){ + IFile res = (IFile)((StructuredSelection) selection).getFirstElement(); + + + String fileContent=FileUtils.getIFileContents(res); + if(fileContent==null) { + //ARROJAR ERROR + return null; + } + String responseFromValidator=null; + try { + responseFromValidator=doPostRequestToValidator(fileContent); + } catch (IOException | JSONException e2) { + e2.printStackTrace(); + } + + if(responseFromValidator==null) { + //ARROJAR ERROR + return null; + } + + if(ToolCustomizationUtils.showQuestionDialog("Save Result", "Do you want to save the result on workspace?")) { + saveFileInWorkspace(res.getParent(), responseFromValidator, res.getFullPath().lastSegment().replace(".doml", "")); + } + } + } + return null; + } +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR09/src/eu/piacere/ide/toolIntegration/kr09/preferencePage/KR09PreferenceInitializer.java b/Source Code/V2.0/PiacereIDEIntegration.KR09/src/eu/piacere/ide/toolIntegration/kr09/preferencePage/KR09PreferenceInitializer.java new file mode 100644 index 0000000000000000000000000000000000000000..408f2a60fc4b7f06544c2586ae1bec90addcf166 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR09/src/eu/piacere/ide/toolIntegration/kr09/preferencePage/KR09PreferenceInitializer.java @@ -0,0 +1,20 @@ +package eu.piacere.ide.toolIntegration.kr09.preferencePage; + +import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer; +import org.eclipse.core.runtime.preferences.ConfigurationScope; +import org.eclipse.ui.preferences.ScopedPreferenceStore; +import org.osgi.framework.FrameworkUtil; + +public class KR09PreferenceInitializer extends AbstractPreferenceInitializer { + + @Override + public void initializeDefaultPreferences() { + + ScopedPreferenceStore scopedPreferenceStore = new ScopedPreferenceStore(ConfigurationScope.INSTANCE,(FrameworkUtil.getBundle(KR09PreferenceInitializer.class)).getSymbolicName()); + scopedPreferenceStore.setDefault("KR09.host", "iop.ci.piacere.digital.tecnalia.dev"); + scopedPreferenceStore.setDefault("KR09.port", 443); + scopedPreferenceStore.setDefault("KR09.protocol", "https"); + + } + +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR09/src/eu/piacere/ide/toolIntegration/kr09/preferencePage/KR09PreferencePage.java b/Source Code/V2.0/PiacereIDEIntegration.KR09/src/eu/piacere/ide/toolIntegration/kr09/preferencePage/KR09PreferencePage.java new file mode 100644 index 0000000000000000000000000000000000000000..e98558ce9be2cfd0bfb09a7ebc4cccf65f75cdb2 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR09/src/eu/piacere/ide/toolIntegration/kr09/preferencePage/KR09PreferencePage.java @@ -0,0 +1,37 @@ +package eu.piacere.ide.toolIntegration.kr09.preferencePage; + +import org.eclipse.core.runtime.preferences.ConfigurationScope; +import org.eclipse.jface.preference.FieldEditorPreferencePage; +import org.eclipse.jface.preference.IntegerFieldEditor; +import org.eclipse.jface.preference.RadioGroupFieldEditor; +import org.eclipse.jface.preference.StringFieldEditor; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchPreferencePage; +import org.eclipse.ui.preferences.ScopedPreferenceStore; +import org.osgi.framework.FrameworkUtil; + +public class KR09PreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage{ + + + public KR09PreferencePage() { + super(GRID); + } + + @Override + public void init(IWorkbench workbench) { + //WHICH SCOPE SHOULD I SELECT: https://wiki.eclipse.org/FAQ_What_is_a_preference_scope%3F + + setPreferenceStore(new ScopedPreferenceStore(ConfigurationScope.INSTANCE, (FrameworkUtil.getBundle(KR09PreferenceInitializer.class)).getSymbolicName())); + setDescription("These Are The IaC Optimizer Platform Preferences"); + + } + + @Override + protected void createFieldEditors() { + addField(new StringFieldEditor("KR09.host", "Endpoint Host", getFieldEditorParent())); + addField(new IntegerFieldEditor("KR09.port", "Endpoint Port", getFieldEditorParent())); + addField(new RadioGroupFieldEditor("KR09.protocol", "Protocol", 1, new String[][] {{"HTTP","http"},{"HTTPS","https"}}, getFieldEditorParent())); + + } + +} \ No newline at end of file diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/.classpath b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..81fe078c20c05db46a8281fbb1a72875a5322b45 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="src" path="src"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/.gitignore b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..ae3c1726048cd06b9a143e0376ed46dd9b9a8d53 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/.project b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/.project new file mode 100644 index 0000000000000000000000000000000000000000..7e947e928fdf4cac658a6ed315d4efaea5c5ea72 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>PiacereIDEIntegration.KR10_KR11_KR12</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/.settings/org.eclipse.jdt.core.prefs b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000000000000000000000000000000000000..62ef3488cc0468ee9c2d4440dfbbbd5877cd0c28 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,9 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 +org.eclipse.jdt.core.compiler.compliance=17 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=17 diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/META-INF/MANIFEST.MF b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..56e829ea880caec250bb2f05ad815dafc4f30dfa --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/META-INF/MANIFEST.MF @@ -0,0 +1,33 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: PiacereIDEIntegration.KR10_KR11_KR12 +Bundle-SymbolicName: PiacereIDEIntegration.KR10_KR11_KR12;singleton:=true +Bundle-Version: 1.0.0.qualifier +Automatic-Module-Name: PiacereIDEIntegration.KR10_KR11_KR12 +Require-Bundle: org.eclipse.ui, + org.eclipse.core.runtime, + org.apache.httpcomponents.httpcore +Import-Package: eu.piacere.doml.doml.commons, + eu.piacere.piacereTool.utils, + org.apache.commons.io, + org.apache.http.client;version="4.5.13", + org.apache.http.client.methods;version="4.5.13", + org.apache.http.impl.client;version="4.5.13", + org.eclipse.core.resources, + org.eclipse.core.runtime.preferences;version="3.4.0", + org.eclipse.emf.common.notify, + org.eclipse.emf.common.util, + org.eclipse.emf.ecore, + org.eclipse.emf.ecore.resource, + org.eclipse.emf.ecore.resource.impl, + org.eclipse.emf.ecore.util, + org.eclipse.emf.edit.provider.resource, + org.eclipse.emf.edit.ui.provider, + org.eclipse.ui.dialogs, + org.eclipse.ui.navigator, + org.eclipse.ui.views.properties, + org.json, + org.restlet, + org.restlet.data, + org.restlet.representation, + org.restlet.resource diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/Piacere/PiacereIcon_16x16.png b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/Piacere/PiacereIcon_16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..444de54d6cfe2958fac1bbb89dd8619b4c537c47 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/Piacere/PiacereIcon_16x16.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/build.properties b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..d3bb3b52a4b4e6918a27ed9328f514e80b23ccc0 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/build.properties @@ -0,0 +1,7 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + .,\ + Piacere/,\ + plugin.xml,\ + icons/ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/ComponentsModel.png b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/ComponentsModel.png new file mode 100644 index 0000000000000000000000000000000000000000..9ee76accc89ff76934fe746a3af1a853843e1209 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/ComponentsModel.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/FAdAIcon_24.png b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/FAdAIcon_24.png new file mode 100644 index 0000000000000000000000000000000000000000..f4259625230e2b11b98a14aa6b75b52edad25dd8 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/FAdAIcon_24.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/FadaModelRepositoriesView.png b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/FadaModelRepositoriesView.png new file mode 100644 index 0000000000000000000000000000000000000000..4db27dd10ecbbcf29062e8cc7b7b3c22bf72c5a3 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/FadaModelRepositoriesView.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/FadaModelRepositoriesView_old.png b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/FadaModelRepositoriesView_old.png new file mode 100644 index 0000000000000000000000000000000000000000..d4f2feef7f465a95b720ec2a24aa4429b5a64aab Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/FadaModelRepositoriesView_old.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/RepoConnected.png b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/RepoConnected.png new file mode 100644 index 0000000000000000000000000000000000000000..bd178d026ebd3aa22573ca74e985f306d64a59c1 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/RepoConnected.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/RepoDisconnected.png b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/RepoDisconnected.png new file mode 100644 index 0000000000000000000000000000000000000000..0c78354020ea586917e7ec598e357c739b031aa0 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/RepoDisconnected.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/SystemConfigurationModel.png b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/SystemConfigurationModel.png new file mode 100644 index 0000000000000000000000000000000000000000..d4561b60458f1b50d06bfd23d7f8308af08688ef Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/SystemConfigurationModel.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/addRepository.png b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/addRepository.png new file mode 100644 index 0000000000000000000000000000000000000000..fe03f37202ca955983c42397173fb12faca9d187 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/addRepository.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/bundle.png b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/bundle.png new file mode 100644 index 0000000000000000000000000000000000000000..1f41d9b1bfcf6db40272453364a446ad457ec50f Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/bundle.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/collapseAll.gif b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/collapseAll.gif new file mode 100644 index 0000000000000000000000000000000000000000..a2d80a9044f38833cb728a69c88294ce3fd007c7 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/collapseAll.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/deleteRepository.png b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/deleteRepository.png new file mode 100644 index 0000000000000000000000000000000000000000..807f97450c23a784814393f55a16ff75688ec15b Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/deleteRepository.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/download.png b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/download.png new file mode 100644 index 0000000000000000000000000000000000000000..236f4a77ea9131d404b0efb5e7bddd72098181f9 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/download.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/expandAll.gif b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/expandAll.gif new file mode 100644 index 0000000000000000000000000000000000000000..0205b29176d4e60307639b6ac80ebfc40be61c3b Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/expandAll.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/export.png b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/export.png new file mode 100644 index 0000000000000000000000000000000000000000..670042c62ce6b5cb200fa3807c57d18511275f39 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/export.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/elcl16/addrepositorylocation.gif b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/elcl16/addrepositorylocation.gif new file mode 100644 index 0000000000000000000000000000000000000000..6237766393fcc7a602d4695d151c3e546abeab6a Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/elcl16/addrepositorylocation.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/elcl16/copy.gif b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/elcl16/copy.gif new file mode 100644 index 0000000000000000000000000000000000000000..71d7c95aa8caa2e8f139d262a4e5e08aba2b88e5 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/elcl16/copy.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/elcl16/integrateconceptualfragment.gif b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/elcl16/integrateconceptualfragment.gif new file mode 100644 index 0000000000000000000000000000000000000000..07164754e5ca231666d9daf7fa4a9d12e378a52a Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/elcl16/integrateconceptualfragment.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/elcl16/integratetechnicalfragment.gif b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/elcl16/integratetechnicalfragment.gif new file mode 100644 index 0000000000000000000000000000000000000000..e7035189cd8dd45b6afba27b8cbccd75df5000e1 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/elcl16/integratetechnicalfragment.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/elcl16/paste.gif b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/elcl16/paste.gif new file mode 100644 index 0000000000000000000000000000000000000000..39dd4d9d38aa85f9c4c9ff652c453c555b850980 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/elcl16/paste.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/elcl16/search.gif b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/elcl16/search.gif new file mode 100644 index 0000000000000000000000000000000000000000..d540a01f4d9eeb9d2951f30cee165c7370e9fc6a Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/elcl16/search.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/CapabilityPattern.gif b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/CapabilityPattern.gif new file mode 100644 index 0000000000000000000000000000000000000000..15ffbb0795fbdc2a0add02f0a07bcea02f034ab4 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/CapabilityPattern.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/CapabilityPatterns.gif b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/CapabilityPatterns.gif new file mode 100644 index 0000000000000000000000000000000000000000..37147654e68f964a947278cb954e47633809c5c4 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/CapabilityPatterns.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/ConceptualFragment.gif b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/ConceptualFragment.gif new file mode 100644 index 0000000000000000000000000000000000000000..49ab538b6c432e7eb280793484e555df7ba2761d Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/ConceptualFragment.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Delete.gif b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Delete.gif new file mode 100644 index 0000000000000000000000000000000000000000..b6922ac11cf64e16a15cf2976cdaa1e40118abed Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Delete.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/DeliveryProcess.gif b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/DeliveryProcess.gif new file mode 100644 index 0000000000000000000000000000000000000000..7b40362c2f54cebce43f5511342df015c4f52feb Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/DeliveryProcess.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Description.gif b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Description.gif new file mode 100644 index 0000000000000000000000000000000000000000..75f33c24fa441d09729e7adcbc78a4e55d84b443 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Description.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Descriptor.gif b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Descriptor.gif new file mode 100644 index 0000000000000000000000000000000000000000..04032a915a0d9eace79a7aec3c573ca07eb7f4ac Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Descriptor.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Input.gif b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Input.gif new file mode 100644 index 0000000000000000000000000000000000000000..d8d7d974fa596ee7a8d06b1d8b110ee7336850af Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Input.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Interface.gif b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Interface.gif new file mode 100644 index 0000000000000000000000000000000000000000..7c7d39ef65b96d71b7b2e1e576c3677bbf7757f1 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Interface.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/MethodPlugin.gif b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/MethodPlugin.gif new file mode 100644 index 0000000000000000000000000000000000000000..bb82c391ed462f0f01e988e00b07f8de262278e7 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/MethodPlugin.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Name.gif b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Name.gif new file mode 100644 index 0000000000000000000000000000000000000000..75f33c24fa441d09729e7adcbc78a4e55d84b443 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Name.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Objective.gif b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Objective.gif new file mode 100644 index 0000000000000000000000000000000000000000..75f33c24fa441d09729e7adcbc78a4e55d84b443 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Objective.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Origin.gif b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Origin.gif new file mode 100644 index 0000000000000000000000000000000000000000..c79bf78956a277d98343ab949be3efe08411f37f Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Origin.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Output.gif b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Output.gif new file mode 100644 index 0000000000000000000000000000000000000000..b4fe2c84ecd2cb1ce8a4fb03a091ba76cad78916 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Output.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Package.gif b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Package.gif new file mode 100644 index 0000000000000000000000000000000000000000..00a311efa25ac538073fb14e59efbb9a968a94e3 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Package.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Processes.gif b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Processes.gif new file mode 100644 index 0000000000000000000000000000000000000000..08d8c2d5d1a7a70f5af53200633a7ba92aab1788 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Processes.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Repositories.gif b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Repositories.gif new file mode 100644 index 0000000000000000000000000000000000000000..16eda8a78a63bfe5874e2e92a29f20a644241bba Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Repositories.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/RoleSetCategory.gif b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/RoleSetCategory.gif new file mode 100644 index 0000000000000000000000000000000000000000..54a3f677a3efc25358bb4f637de6166d1425a486 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/RoleSetCategory.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Task.gif b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Task.gif new file mode 100644 index 0000000000000000000000000000000000000000..5c3b2b89a47caa2cbec35a9e9c3fe2efef4b2895 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Task.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Tasks.gif b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Tasks.gif new file mode 100644 index 0000000000000000000000000000000000000000..638bd83009d2d7bf881dab9dbc07c176edd23060 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Tasks.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/TechnicalFragment.gif b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/TechnicalFragment.gif new file mode 100644 index 0000000000000000000000000000000000000000..4f1b85a7801922060d6b5a968a76be30eb5326c9 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/TechnicalFragment.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/TechnicalFragmentError.gif b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/TechnicalFragmentError.gif new file mode 100644 index 0000000000000000000000000000000000000000..50b162dbdfc4a7f0eabd5d7119871e378efe6940 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/TechnicalFragmentError.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/TechnicalFragmentImported.gif b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/TechnicalFragmentImported.gif new file mode 100644 index 0000000000000000000000000000000000000000..3260ab2872cfcc35cc75b3501dd05bb23bd6f333 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/TechnicalFragmentImported.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Type.gif b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Type.gif new file mode 100644 index 0000000000000000000000000000000000000000..358cbcb83d800352e59d672771057f3156f27491 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Type.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/WorkProduct.gif b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/WorkProduct.gif new file mode 100644 index 0000000000000000000000000000000000000000..1540f3d3c95605a8d7f641f8c93b098e356c40c3 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/WorkProduct.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/WorkProducts.gif b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/WorkProducts.gif new file mode 100644 index 0000000000000000000000000000000000000000..cf289263e15224bfd984e2145ddc6c6eb415f50c Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/WorkProducts.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/activity16.gif b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/activity16.gif new file mode 100644 index 0000000000000000000000000000000000000000..cf20deb439ab39a63162c93396060706051569b0 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/activity16.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/role.gif b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/role.gif new file mode 100644 index 0000000000000000000000000000000000000000..69ebdf2959ed859952751f3f377d581671045873 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/role.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/import.png b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/import.png new file mode 100644 index 0000000000000000000000000000000000000000..bb6ff06b7bcf18590deb1f93a519d5264b6a067f Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/import.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/jar.png b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/jar.png new file mode 100644 index 0000000000000000000000000000000000000000..660f8ea5131c2f9f59a5fa2491993cfa71a1ac57 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/jar.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/ref.png b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/ref.png new file mode 100644 index 0000000000000000000000000000000000000000..2839c60a42f8a79067981fd7b3a26f4b81a69231 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/ref.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/refresh.gif b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/refresh.gif new file mode 100644 index 0000000000000000000000000000000000000000..e3831471a6592da14f53b1e7c5a2f7d6a92d9937 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/refresh.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/repository.png b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/repository.png new file mode 100644 index 0000000000000000000000000000000000000000..92794f126f846474fafef14aac6fccb82faaf4f8 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/icons/repository.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/plugin.xml b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..ee80c57ce364d3f1cade833ba0bfab316f59d2c6 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/plugin.xml @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.4"?> +<plugin> + <extension + point="org.eclipse.ui.preferencePages"> + <page + category="PiacereToolCustomization.preferences.page1" + class="eu.piacere.ide.toolIntegration.kr10kr11kr12.preferencePage.KR10PreferencePage" + id="PiacereIDEIntegration.KR10KR11KR12.preferences.page1" + name="PIACERE Runtime Controller Preferences"> + </page> + <page + category="PiacereToolCustomization.preferences.page1" + class="eu.piacere.ide.toolIntegration.kr10kr11kr12.preferencePage.KR11_12PreferencePage" + id="PiacereIDEIntegration.KR10KR11KR12.preferences.page2" + name="PIACERE Performance Monitoring Controller Preferences"> + </page> + </extension> + <extension + point="org.eclipse.core.runtime.preferences"> + <initializer + class="eu.piacere.ide.toolIntegration.kr10kr11kr12.preferencePage.KR10PreferenceInitializer"> + </initializer> + <initializer + class="eu.piacere.ide.toolIntegration.kr10kr11kr12.preferencePage.KR11_12PreferenceInitializer"> + </initializer> + </extension> + <extension point = "org.eclipse.ui.views"> + <view + id = "PiacereIDEIntegration.KR10KR11KR12.PiacereRuntimeControllerViewPart" + name = "PIACERE Runtime Controller" + category = "org.eclipse.ui" + class = "eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.PiacereRuntimeControllerViewPart" + icon = "Piacere/PiacereIcon_16x16.png" /> + </extension> + +</plugin> diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/preferencePage/KR10PreferenceInitializer.java b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/preferencePage/KR10PreferenceInitializer.java new file mode 100644 index 0000000000000000000000000000000000000000..66b9b24ccbad705c696b06a5cb7858158ebbdf1b --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/preferencePage/KR10PreferenceInitializer.java @@ -0,0 +1,20 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.preferencePage; + +import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer; +import org.eclipse.core.runtime.preferences.ConfigurationScope; +import org.eclipse.ui.preferences.ScopedPreferenceStore; +import org.osgi.framework.FrameworkUtil; + +public class KR10PreferenceInitializer extends AbstractPreferenceInitializer { + + @Override + public void initializeDefaultPreferences() { + + ScopedPreferenceStore scopedPreferenceStore = new ScopedPreferenceStore(ConfigurationScope.INSTANCE,(FrameworkUtil.getBundle(KR10PreferenceInitializer.class)).getSymbolicName()); + scopedPreferenceStore.setDefault("KR10.host", "prc.ci.piacere.digital.tecnalia.dev"); + scopedPreferenceStore.setDefault("KR10.port", 443); + scopedPreferenceStore.setDefault("KR10.protocol", "https"); + + } + +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/preferencePage/KR10PreferencePage.java b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/preferencePage/KR10PreferencePage.java new file mode 100644 index 0000000000000000000000000000000000000000..6449ac6e8874a3a08f1c32794883f36551898091 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/preferencePage/KR10PreferencePage.java @@ -0,0 +1,37 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.preferencePage; + +import org.eclipse.core.runtime.preferences.ConfigurationScope; +import org.eclipse.jface.preference.FieldEditorPreferencePage; +import org.eclipse.jface.preference.IntegerFieldEditor; +import org.eclipse.jface.preference.RadioGroupFieldEditor; +import org.eclipse.jface.preference.StringFieldEditor; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchPreferencePage; +import org.eclipse.ui.preferences.ScopedPreferenceStore; +import org.osgi.framework.FrameworkUtil; + +public class KR10PreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage{ + + + public KR10PreferencePage() { + super(GRID); + } + + @Override + public void init(IWorkbench workbench) { + //WHICH SCOPE SHOULD I SELECT: https://wiki.eclipse.org/FAQ_What_is_a_preference_scope%3F + + setPreferenceStore(new ScopedPreferenceStore(ConfigurationScope.INSTANCE, (FrameworkUtil.getBundle(KR10PreferenceInitializer.class)).getSymbolicName())); + setDescription("These Are The PIACERE Runtime Controller Preferences"); + + } + + @Override + protected void createFieldEditors() { + addField(new StringFieldEditor("KR10.host", "Endpoint Host", getFieldEditorParent())); + addField(new IntegerFieldEditor("KR10.port", "Endpoint Port", getFieldEditorParent())); + addField(new RadioGroupFieldEditor("KR10.protocol", "Protocol", 1, new String[][] {{"HTTP","http"},{"HTTPS","https"}}, getFieldEditorParent())); + + } + +} \ No newline at end of file diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/preferencePage/KR11_12PreferenceInitializer.java b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/preferencePage/KR11_12PreferenceInitializer.java new file mode 100644 index 0000000000000000000000000000000000000000..2922929768aeaeacbf535ff70ba1a37a2fc6d436 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/preferencePage/KR11_12PreferenceInitializer.java @@ -0,0 +1,20 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.preferencePage; + +import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer; +import org.eclipse.core.runtime.preferences.ConfigurationScope; +import org.eclipse.ui.preferences.ScopedPreferenceStore; +import org.osgi.framework.FrameworkUtil; + +public class KR11_12PreferenceInitializer extends AbstractPreferenceInitializer { + + @Override + public void initializeDefaultPreferences() { + + ScopedPreferenceStore scopedPreferenceStore = new ScopedPreferenceStore(ConfigurationScope.INSTANCE,(FrameworkUtil.getBundle(KR11_12PreferenceInitializer.class)).getSymbolicName()); + scopedPreferenceStore.setDefault("KR11_12.host", "c.pm.ci.piacere.digital.tecnalia.dev"); + scopedPreferenceStore.setDefault("KR11_12.port", 443); + scopedPreferenceStore.setDefault("KR11_12.protocol", "https"); + + } + +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/preferencePage/KR11_12PreferencePage.java b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/preferencePage/KR11_12PreferencePage.java new file mode 100644 index 0000000000000000000000000000000000000000..fc54757eae5f7b70a3605be2f1b94e9097e314ff --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/preferencePage/KR11_12PreferencePage.java @@ -0,0 +1,37 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.preferencePage; + +import org.eclipse.core.runtime.preferences.ConfigurationScope; +import org.eclipse.jface.preference.FieldEditorPreferencePage; +import org.eclipse.jface.preference.IntegerFieldEditor; +import org.eclipse.jface.preference.RadioGroupFieldEditor; +import org.eclipse.jface.preference.StringFieldEditor; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchPreferencePage; +import org.eclipse.ui.preferences.ScopedPreferenceStore; +import org.osgi.framework.FrameworkUtil; + +public class KR11_12PreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage{ + + + public KR11_12PreferencePage() { + super(GRID); + } + + @Override + public void init(IWorkbench workbench) { + //WHICH SCOPE SHOULD I SELECT: https://wiki.eclipse.org/FAQ_What_is_a_preference_scope%3F + + setPreferenceStore(new ScopedPreferenceStore(ConfigurationScope.INSTANCE, (FrameworkUtil.getBundle(KR10PreferenceInitializer.class)).getSymbolicName())); + setDescription("These Are The Piacere Performance Monitoring Controller Preferences"); + + } + + @Override + protected void createFieldEditors() { + addField(new StringFieldEditor("KR11_12.host", "Endpoint Host", getFieldEditorParent())); + addField(new IntegerFieldEditor("KR11_12.port", "Endpoint Port", getFieldEditorParent())); + addField(new RadioGroupFieldEditor("KR11_12.protocol", "Protocol", 1, new String[][] {{"HTTP","http"},{"HTTPS","https"}}, getFieldEditorParent())); + + } + +} \ No newline at end of file diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/PiacereRuntimeControllerViewPart.java b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/PiacereRuntimeControllerViewPart.java new file mode 100644 index 0000000000000000000000000000000000000000..a00819d6190a1f6d3265625f0bde6de051f3f047 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/PiacereRuntimeControllerViewPart.java @@ -0,0 +1,207 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; +import org.eclipse.jface.resource.FontDescriptor; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.jface.resource.JFaceResources; +import org.eclipse.jface.resource.LocalResourceManager; +import org.eclipse.jface.resource.ResourceManager; +import org.eclipse.jface.viewers.IBaseLabelProvider; +import org.eclipse.jface.viewers.IContentProvider; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Menu; +import org.eclipse.ui.IMemento; +import org.eclipse.ui.IViewSite; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.actions.ActionGroup; +import org.eclipse.ui.navigator.CommonNavigator; +import org.eclipse.ui.navigator.CommonViewer; +import org.eclipse.ui.plugin.AbstractUIPlugin; + +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions.FinishDeploymentAction; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions.GetDeploymentInfoAction; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions.OpenPerformanceMonitoringAction; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions.OpenPerformanceSelfLearningMonitoringAction; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions.OpenSecurityMonitoringAction; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions.OpenSecuritySelfLearningMonitoringAction; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions.OpenSelfHealingAction; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions.PiacereRuntimeControllerViewActionGroup; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions.RefreshAction; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.providers.PRCContentProvider; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.providers.PRCLabelProvider; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.PiacereDeployment; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.PiacereRuntimeController; + + +public class PiacereRuntimeControllerViewPart extends CommonNavigator implements IMenuListener { + + private static PiacereRuntimeController piacereRuntimeController = new PiacereRuntimeController(); + + public PiacereRuntimeController getPiacereRuntimeController() { + return piacereRuntimeController; + } + + @Override + public void createPartControl(Composite parent) { + super.createPartControl(parent); + + if (getCommonViewer() != null) { + + getCommonViewer().setContentProvider((IContentProvider)new PRCContentProvider((AdapterFactory)new ResourceItemProviderAdapterFactory())); + getCommonViewer().setInput(piacereRuntimeController); + getCommonViewer().setLabelProvider((IBaseLabelProvider)new PRCLabelProvider()); + ResourceManager resourceManager = new LocalResourceManager(JFaceResources.getResources(), parent); + getCommonViewer().getTree().setFont(resourceManager.createFont(FontDescriptor.createFrom(getCommonViewer().getTree().getFont()).setHeight(14))); + getCommonViewer().setSorter(null); + getCommonViewer().addSelectionChangedListener(new SelectionChangedListener()); + createContextMenuForViewer(getCommonViewer()); + refreshViewer(); + } + } + + public void init(IViewSite aSite, IMemento aMemento) throws PartInitException { + super.init(aSite, aMemento); + + if (aMemento != null && this.getPiacereRuntimeController().getDeployments().size() == 0) { + /*int i = 0; + while (aMemento.getString("host" + i) != null) { + RepositoryLocation rp = new RepositoryLocation(); + rp.setHost(aMemento.getString("host" + i)); + rp.setRepositoryPath(aMemento.getString("repositorypath" + i)); + rp.setName(aMemento.getString("name" + i)); + if(DeploymentClientUtil.testConnection(rp, false)) { + rp.reloadContent(); + } + locations.add(rp); + i++; + } */ + } + } + + protected CommonViewer createCommonViewerObject(Composite aParent) { + return new CommonViewer(getViewSite().getId(), aParent, 768); + } + + private class SelectionChangedListener implements ISelectionChangedListener { + @SuppressWarnings("unused") + public void selectionChanged(SelectionChangedEvent event) { + if (event.getSelection() instanceof StructuredSelection) { + Object selected = ((StructuredSelection)event.getSelection()).getFirstElement(); + } + } + } + + protected ActionGroup createCommonActionGroup() { + return (ActionGroup)new PiacereRuntimeControllerViewActionGroup(getCommonViewer()); + } + + public void refreshViewer() { + CommonViewer viewer = getCommonViewer(); + if (viewer != null && !viewer.getTree().isDisposed()) + viewer.refresh(); + } + + public void saveState(IMemento aMemento) { + super.saveState(aMemento);/* + int size = locations.size(); + for (int i = 0; i < size; i++) { + RepositoryLocation rp = locations.get(i); + aMemento.putString("host" + i, rp.getHost()); + aMemento.putString("repositorypath" + i, rp.getRepositoryPath()); + aMemento.putString("name" + i, rp.getName()); + } */ + } + + private void createContextMenuForViewer(CommonViewer viewer) { + MenuManager contextMenu = new MenuManager("Popup", getImageDescriptor("icons/FadaModelRepositoriesView.png"), null); + contextMenu.setRemoveAllWhenShown(true); + contextMenu.addMenuListener(this); + + Menu menu = contextMenu.createContextMenu(viewer.getControl()); + viewer.getControl().setMenu(menu); + this.getSite().registerContextMenu(contextMenu, (ISelectionProvider)viewer); + } + + public void menuAboutToShow(IMenuManager manager) { + ISelection selection = getCommonViewer().getSelection(); + if (selection instanceof StructuredSelection) { + StructuredSelection sel = (StructuredSelection)selection; + Object selectedObject = sel.getFirstElement(); + if (selectedObject instanceof PiacereDeployment) { + + + RefreshAction ra = new RefreshAction(); + ra.setText("Refresh All"); + ra.setImageDescriptor(getImageDescriptor("icons/refresh.gif")); + + GetDeploymentInfoAction gdia = new GetDeploymentInfoAction(); + gdia.setText("Get Deployment Details"); + gdia.setImageDescriptor(getImageDescriptor("icons/repository.png")); + + OpenPerformanceMonitoringAction opma = new OpenPerformanceMonitoringAction(); + opma.setText("Open Performance Monitor"); + opma.setImageDescriptor(getImageDescriptor("icons/ref.png")); + + OpenPerformanceSelfLearningMonitoringAction opslma = new OpenPerformanceSelfLearningMonitoringAction(); + opslma.setText("Open Performance Self Learning Monitor"); + opslma.setImageDescriptor(getImageDescriptor("icons/ref.png")); + + OpenSecurityMonitoringAction osma = new OpenSecurityMonitoringAction(); + osma.setText("Open Security Monitor"); + osma.setImageDescriptor(getImageDescriptor("icons/ref.png")); + + OpenSecuritySelfLearningMonitoringAction osslma = new OpenSecuritySelfLearningMonitoringAction(); + osslma.setText("Open Security Self Learning Monitor"); + osslma.setImageDescriptor(getImageDescriptor("icons/ref.png")); + + OpenSelfHealingAction osha = new OpenSelfHealingAction(); + osha.setText("Open Self Healing Events"); + osha.setImageDescriptor(getImageDescriptor("icons/ref.png")); + + FinishDeploymentAction fda = new FinishDeploymentAction (); + fda.setText("Finish Deployment"); + fda.setImageDescriptor(getImageDescriptor("icons/deleteRepository.png")); + + + + + manager.add((IAction)ra); + manager.add(new Separator("additions")); + manager.add((IAction)gdia); + manager.add((IAction)opma); + manager.add((IAction)opslma); + manager.add((IAction)osma); + manager.add((IAction)osslma); + manager.add((IAction)osha); + manager.add(new Separator("additions")); + manager.add((IAction)fda); + } + /*if (selectedObject instanceof AppComponentsModelVersion || selectedObject instanceof AppSystemConfigurationModelVersion) { + DownloadModelAction dma = new DownloadModelAction(); + dma.setText("Download Model"); + dma.setImageDescriptor(getImageDescriptor("icons/download.png")); + manager.add((IAction)dma); + + DeleteModelAction dma2 = new DeleteModelAction(); + dma2.setText("Delete Model from Repository"); + dma2.setImageDescriptor(getImageDescriptor("icons/deleteRepository.png")); + manager.add((IAction)dma2); + }*/ + } + } + + protected final ImageDescriptor getImageDescriptor(String relativePath) { + return AbstractUIPlugin.imageDescriptorFromPlugin("PiacereIDEIntegration.KR10_KR11_KR12", relativePath); + } +} \ No newline at end of file diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/CollapseAllAction.java b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/CollapseAllAction.java new file mode 100644 index 0000000000000000000000000000000000000000..b8da9d62e89dc6765c0be850f536125486688df9 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/CollapseAllAction.java @@ -0,0 +1,24 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.ui.IWorkbenchCommandConstants; +import org.eclipse.ui.navigator.CommonViewer; + +public class CollapseAllAction extends Action implements IAction +{ + private final CommonViewer commonViewer; + + public CollapseAllAction(CommonViewer aViewer) { + super("Collapse all"); + setToolTipText("Collapse all"); + setActionDefinitionId(IWorkbenchCommandConstants.NAVIGATE_COLLAPSE_ALL); + this.commonViewer = aViewer; + } + + public void run() { + if (this.commonViewer != null) + this.commonViewer.collapseAll(); + } +} + diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/CreateDeploymentAction.java b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/CreateDeploymentAction.java new file mode 100644 index 0000000000000000000000000000000000000000..eb56f536535e87b84d2c53db17acd89e07eaedfb --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/CreateDeploymentAction.java @@ -0,0 +1,46 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.restlet.data.Protocol; + +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.PiacereRuntimeControllerViewPart; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.DeploymentClientUtil; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.PRCClientUtil; +import eu.piacere.piacereTool.utils.ToolCustomizationUtils; + + +public class CreateDeploymentAction extends Action implements IAction +{ + + public void run() { + + String repositoryURL=ToolCustomizationUtils.doDialogAskWithoutPostProcess("Repository URL", "Provide the respository URL of the deployment", ""); + if(repositoryURL==null) { + return; + } + String deploymentID=ToolCustomizationUtils.doDialogAskWithoutPostProcess("Deployment ID", "Provide the new Deployment ID", ""); + if(deploymentID==null) { + return; + } + + String protocol = ToolCustomizationUtils.getPreference(this.getClass(), "KR10.protocol"); + String host = ToolCustomizationUtils.getPreference(this.getClass(), "KR10.host"); + String port = ToolCustomizationUtils.getPreference(this.getClass(), "KR10.port"); + Protocol p = null; + if(protocol.equals("http")) { + p=Protocol.HTTP; + } + else if(protocol.equals("https")) { + p=Protocol.HTTPS; + } + + PRCClientUtil.createDeploymentPOST(protocol+"://"+host+":"+port+"/", p, repositoryURL, deploymentID); + PiacereRuntimeControllerViewPart prcView = DeploymentClientUtil.getRuntimeControllerView(); + if (prcView != null) { + prcView.getPiacereRuntimeController().reloadContent(); + prcView.refreshViewer(); + } + + } +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/ExpandAllAction.java b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/ExpandAllAction.java new file mode 100644 index 0000000000000000000000000000000000000000..a1facb6cf0b9934a90aea59e8f1f1bcaedb6dca7 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/ExpandAllAction.java @@ -0,0 +1,25 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.ui.IWorkbenchCommandConstants; +import org.eclipse.ui.navigator.CommonViewer; + +public class ExpandAllAction extends Action implements IAction +{ + private final CommonViewer commonViewer; + + public ExpandAllAction(CommonViewer aViewer) { + super("Expand All"); + setToolTipText("Expand All"); + setActionDefinitionId(IWorkbenchCommandConstants.NAVIGATE_EXPAND_ALL); + + this.commonViewer = aViewer; + } + + public void run() { + if (this.commonViewer != null) + this.commonViewer.expandAll(); + } +} + diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/FinishDeploymentAction.java b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/FinishDeploymentAction.java new file mode 100644 index 0000000000000000000000000000000000000000..b7367f40a60f12ad60d0b8840229622581e2cf6e --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/FinishDeploymentAction.java @@ -0,0 +1,48 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.restlet.data.Protocol; + +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.PiacereRuntimeControllerViewPart; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.DeploymentClientUtil; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.PRCClientUtil; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.PiacereDeployment; +import eu.piacere.piacereTool.utils.ToolCustomizationUtils; + + +public class FinishDeploymentAction extends Action implements IAction +{ + + public void run() { + PiacereRuntimeControllerViewPart repositoriesView = DeploymentClientUtil.getRuntimeControllerView(); + ISelection selection = repositoriesView.getCommonViewer().getSelection(); + if (selection instanceof StructuredSelection) { + StructuredSelection sel = (StructuredSelection)selection; + Object selectedObject = sel.getFirstElement(); + if (selectedObject instanceof PiacereDeployment) { + PiacereDeployment deployment = (PiacereDeployment)selectedObject; + + String protocol = ToolCustomizationUtils.getPreference(this.getClass(), "KR10.protocol"); + String host = ToolCustomizationUtils.getPreference(this.getClass(), "KR10.host"); + String port = ToolCustomizationUtils.getPreference(this.getClass(), "KR10.port"); + Protocol p = null; + if(protocol.equals("http")) { + p=Protocol.HTTP; + } + else if(protocol.equals("https")) { + p=Protocol.HTTPS; + } + if(PRCClientUtil.finishDeploymentPOST(protocol+"://"+host+":"+port+"/", p, deployment)){ + PiacereRuntimeControllerViewPart prcView = DeploymentClientUtil.getRuntimeControllerView(); + if (prcView != null) { + prcView.getPiacereRuntimeController().reloadContent(); + prcView.refreshViewer(); + } + } + } + } + } +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/GetDeploymentInfoAction.java b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/GetDeploymentInfoAction.java new file mode 100644 index 0000000000000000000000000000000000000000..19f4b950161df89704bd01a07096773833a81b19 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/GetDeploymentInfoAction.java @@ -0,0 +1,49 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.json.JSONException; +import org.json.JSONObject; +import org.restlet.data.Protocol; + +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.PiacereRuntimeControllerViewPart; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.DeploymentClientUtil; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.PRCClientUtil; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.PiacereDeployment; +import eu.piacere.piacereTool.utils.ToolCustomizationUtils; + + +public class GetDeploymentInfoAction extends Action implements IAction +{ + public void run() { + PiacereRuntimeControllerViewPart repositoriesView = DeploymentClientUtil.getRuntimeControllerView(); + ISelection selection = repositoriesView.getCommonViewer().getSelection(); + if (selection instanceof StructuredSelection) { + StructuredSelection sel = (StructuredSelection)selection; + Object selectedObject = sel.getFirstElement(); + if (selectedObject instanceof PiacereDeployment) { + PiacereDeployment deployment = (PiacereDeployment)selectedObject; + + String protocol = ToolCustomizationUtils.getPreference(this.getClass(), "KR10.protocol"); + String host = ToolCustomizationUtils.getPreference(this.getClass(), "KR10.host"); + String port = ToolCustomizationUtils.getPreference(this.getClass(), "KR10.port"); + Protocol p = null; + if(protocol.equals("http")) { + p=Protocol.HTTP; + } + else if(protocol.equals("https")) { + p=Protocol.HTTPS; + } + JSONObject res=PRCClientUtil.retrieveDeploymentGet(protocol+"://"+host+":"+port+"/", p, deployment); + + try { + ToolCustomizationUtils.showInformationDialog("Deployment Information", res.toString(4)); + } catch (JSONException e) { + e.printStackTrace(); + } + } + } + } +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/OpenPerformanceMonitoringAction.java b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/OpenPerformanceMonitoringAction.java new file mode 100644 index 0000000000000000000000000000000000000000..5e04bbfebbdaef6a45c9f2155c2ab38968a0fa78 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/OpenPerformanceMonitoringAction.java @@ -0,0 +1,43 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions; + +import java.net.URL; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.browser.IWebBrowser; + +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.PiacereRuntimeControllerViewPart; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.DeploymentClientUtil; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.PiacereDeployment; + + +public class OpenPerformanceMonitoringAction extends Action implements IAction +{ + public void run() { + PiacereRuntimeControllerViewPart repositoriesView = DeploymentClientUtil.getRuntimeControllerView(); + ISelection selection = repositoriesView.getCommonViewer().getSelection(); + if (selection instanceof StructuredSelection) { + StructuredSelection sel = (StructuredSelection)selection; + Object selectedObject = sel.getFirstElement(); + if (selectedObject instanceof PiacereDeployment) { + String url=DeploymentClientUtil.getPerformanceMonitoringURL((PiacereDeployment)selectedObject, "performance"); + if(url==null) url="https://grafana.pm.ci.piacere.digital.tecnalia.dev/d/m69joqMVk/performance?orgId=1"; + try { + openWeb(url, ((PiacereDeployment)selectedObject).getDeploymentID()); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + } + + + private void openWeb(String webURL, String deploymentID) throws Exception { + final IWebBrowser browser = PlatformUI.getWorkbench().getBrowserSupport().createBrowser(deploymentID); + browser.openURL(new URL(webURL)); + } +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/OpenPerformanceSelfLearningMonitoringAction.java b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/OpenPerformanceSelfLearningMonitoringAction.java new file mode 100644 index 0000000000000000000000000000000000000000..193fd10aa9b17903fd2ec0c7c254d971afa19f7c --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/OpenPerformanceSelfLearningMonitoringAction.java @@ -0,0 +1,43 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions; + +import java.net.URL; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.browser.IWebBrowser; + +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.PiacereRuntimeControllerViewPart; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.DeploymentClientUtil; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.PiacereDeployment; + + +public class OpenPerformanceSelfLearningMonitoringAction extends Action implements IAction +{ + public void run() { + PiacereRuntimeControllerViewPart repositoriesView = DeploymentClientUtil.getRuntimeControllerView(); + ISelection selection = repositoriesView.getCommonViewer().getSelection(); + if (selection instanceof StructuredSelection) { + StructuredSelection sel = (StructuredSelection)selection; + Object selectedObject = sel.getFirstElement(); + if (selectedObject instanceof PiacereDeployment) { + String url=DeploymentClientUtil.getPerformanceMonitoringURL((PiacereDeployment)selectedObject, "performance-self-learning"); + if(url==null) url="https://grafana.pm.ci.piacere.digital.tecnalia.dev/d/G39CTqMVk/performance-self-learning?orgId=1"; + try { + openWeb(url, ((PiacereDeployment)selectedObject).getDeploymentID()); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + } + + + private void openWeb(String webURL, String deploymentID) throws Exception { + final IWebBrowser browser = PlatformUI.getWorkbench().getBrowserSupport().createBrowser(deploymentID); + browser.openURL(new URL(webURL)); + } +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/OpenSecurityMonitoringAction.java b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/OpenSecurityMonitoringAction.java new file mode 100644 index 0000000000000000000000000000000000000000..c85adde209fc651d0424923e4a3808eeff850a8f --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/OpenSecurityMonitoringAction.java @@ -0,0 +1,43 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions; + +import java.net.URL; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.browser.IWebBrowser; + +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.PiacereRuntimeControllerViewPart; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.DeploymentClientUtil; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.PiacereDeployment; + + +public class OpenSecurityMonitoringAction extends Action implements IAction +{ + public void run() { + PiacereRuntimeControllerViewPart repositoriesView = DeploymentClientUtil.getRuntimeControllerView(); + ISelection selection = repositoriesView.getCommonViewer().getSelection(); + if (selection instanceof StructuredSelection) { + StructuredSelection sel = (StructuredSelection)selection; + Object selectedObject = sel.getFirstElement(); + if (selectedObject instanceof PiacereDeployment) { + String url=DeploymentClientUtil.getSecurityMonitoringURL((PiacereDeployment)selectedObject); + if(url==null) url="https://sm-wazuh-kibana.ci.piacere.digital.tecnalia.dev/"; + try { + openWeb(url, ((PiacereDeployment)selectedObject).getDeploymentID()); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + } + + + private void openWeb(String webURL, String deploymentID) throws Exception { + final IWebBrowser browser = PlatformUI.getWorkbench().getBrowserSupport().createBrowser(deploymentID); + browser.openURL(new URL(webURL)); + } +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/OpenSecuritySelfLearningMonitoringAction.java b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/OpenSecuritySelfLearningMonitoringAction.java new file mode 100644 index 0000000000000000000000000000000000000000..62c8824b78fa6bc87eab55f593e2a844386eb0ec --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/OpenSecuritySelfLearningMonitoringAction.java @@ -0,0 +1,43 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions; + +import java.net.URL; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.browser.IWebBrowser; + +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.PiacereRuntimeControllerViewPart; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.DeploymentClientUtil; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.PiacereDeployment; + + +public class OpenSecuritySelfLearningMonitoringAction extends Action implements IAction +{ + public void run() { + PiacereRuntimeControllerViewPart repositoriesView = DeploymentClientUtil.getRuntimeControllerView(); + ISelection selection = repositoriesView.getCommonViewer().getSelection(); + if (selection instanceof StructuredSelection) { + StructuredSelection sel = (StructuredSelection)selection; + Object selectedObject = sel.getFirstElement(); + if (selectedObject instanceof PiacereDeployment) { + String url=DeploymentClientUtil.getSecuritySelfLearningMonitoringURL((PiacereDeployment)selectedObject); + if(url==null) url="https://piacere-security-monitoring.xlab.si/grafana/"; + try { + openWeb(url, ((PiacereDeployment)selectedObject).getDeploymentID()); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + } + + + private void openWeb(String webURL, String deploymentID) throws Exception { + final IWebBrowser browser = PlatformUI.getWorkbench().getBrowserSupport().createBrowser(deploymentID); + browser.openURL(new URL(webURL)); + } +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/OpenSelfHealingAction.java b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/OpenSelfHealingAction.java new file mode 100644 index 0000000000000000000000000000000000000000..218abab1f15ee72371eb422e95fbd1b74f232b59 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/OpenSelfHealingAction.java @@ -0,0 +1,43 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions; + +import java.net.URL; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.browser.IWebBrowser; + +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.PiacereRuntimeControllerViewPart; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.DeploymentClientUtil; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.PiacereDeployment; + + +public class OpenSelfHealingAction extends Action implements IAction +{ + public void run() { + PiacereRuntimeControllerViewPart repositoriesView = DeploymentClientUtil.getRuntimeControllerView(); + ISelection selection = repositoriesView.getCommonViewer().getSelection(); + if (selection instanceof StructuredSelection) { + StructuredSelection sel = (StructuredSelection)selection; + Object selectedObject = sel.getFirstElement(); + if (selectedObject instanceof PiacereDeployment) { + String url=DeploymentClientUtil.getSelfHealingURL((PiacereDeployment)selectedObject); + if(url==null) url="https://sh.ci.piacere.digital.tecnalia.dev/"; + try { + openWeb(url, ((PiacereDeployment)selectedObject).getDeploymentID()); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + } + + + private void openWeb(String webURL, String deploymentID) throws Exception { + final IWebBrowser browser = PlatformUI.getWorkbench().getBrowserSupport().createBrowser(deploymentID); + browser.openURL(new URL(webURL)); + } +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/PiacereRuntimeControllerViewActionGroup.java b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/PiacereRuntimeControllerViewActionGroup.java new file mode 100644 index 0000000000000000000000000000000000000000..e1f771256ad6f4a5810847baec329213a70e30ff --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/PiacereRuntimeControllerViewActionGroup.java @@ -0,0 +1,53 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions; + +import org.eclipse.jface.action.Separator; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.ui.IActionBars; +import org.eclipse.ui.actions.ActionGroup; +import org.eclipse.ui.navigator.CommonViewer; +import org.eclipse.ui.plugin.AbstractUIPlugin; + + +public class PiacereRuntimeControllerViewActionGroup extends ActionGroup +{ + private final CommonViewer commonViewer; + + public PiacereRuntimeControllerViewActionGroup(CommonViewer viewer) { + this.commonViewer = viewer; + } + + protected final ImageDescriptor getImageDescriptor(String relativePath) { + return AbstractUIPlugin.imageDescriptorFromPlugin("PiacereIDEIntegration.KR10_KR11_KR12", relativePath); + } + + public void fillActionBars(IActionBars actionBars) { + + RefreshAction ra = new RefreshAction(); + ra.setText("Refresh All"); + ra.setImageDescriptor(getImageDescriptor("icons/refresh.gif")); + + CreateDeploymentAction cda = new CreateDeploymentAction(); + cda.setText("Create Deployment"); + cda.setImageDescriptor(getImageDescriptor("icons/addRepository.png")); + + CollapseAllAction ca = new CollapseAllAction(this.commonViewer); + ca.setText("Collapse All"); + ca.setImageDescriptor(getImageDescriptor("icons/collapseAll.gif")); + + ExpandAllAction ea = new ExpandAllAction(this.commonViewer); + ea.setText("Expand All"); + ea.setImageDescriptor(getImageDescriptor("icons/expandAll.gif")); + + actionBars.getMenuManager().add(ra); + actionBars.getMenuManager().add(new Separator("additions")); + actionBars.getMenuManager().add(cda); + //actionBars.getMenuManager().add(new Separator("additions")); + //actionBars.getMenuManager().add(ca); + //actionBars.getMenuManager().add(ea); + } +} + + + + + diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/RefreshAction.java b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/RefreshAction.java new file mode 100644 index 0000000000000000000000000000000000000000..8d6f0d08758856fdb9f6aa217e4287056352ddd7 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/RefreshAction.java @@ -0,0 +1,18 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions; + +import org.eclipse.jface.action.Action; + +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.PiacereRuntimeControllerViewPart; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.DeploymentClientUtil; + +public class RefreshAction extends Action +{ + public void run() { + super.run(); + PiacereRuntimeControllerViewPart prcView = DeploymentClientUtil.getRuntimeControllerView(); + if (prcView != null) { + prcView.getPiacereRuntimeController().reloadContent(); + prcView.refreshViewer(); + } + } +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/old/AddRepositoryLocationAction.java b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/old/AddRepositoryLocationAction.java new file mode 100644 index 0000000000000000000000000000000000000000..c72dbb36bcd47feae0ae0916fba50de4a3c15a5c --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/old/AddRepositoryLocationAction.java @@ -0,0 +1,53 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions.old; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; + + +public class AddRepositoryLocationAction extends Action implements IAction +{ + public void run() { + /*PiacereRuntimeControllerViewPart repositoriesView = DeploymentClientUtil.getModelRepositoriesView(); + if (repositoriesView != null) { + + AddRepositoryLocationDialog dialog = new AddRepositoryLocationDialog(repositoriesView.getSite().getShell()); + + if (dialog.open() == 0) { + String host = dialog.getHost(); + String repositoryPath = dialog.getRepositoryPath(); + String repositoryName = dialog.getRepositoryName(); + + + if (existingLocation(repositoriesView, host, repositoryPath)) { + MessageDialog.openError(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), "Repository Already Exists", "The repository location already exists"); + } + else { + + RepositoryLocation location = new RepositoryLocation(host, repositoryPath, repositoryName); + + if(DeploymentClientUtil.testConnection(location, true)) { + location.reloadContent(); + repositoriesView.getLocations().add(location); + repositoriesView.getCommonViewer().setInput(repositoriesView.getLocations()); + + } + } + } + } */ + } + + + + /*private boolean existingLocation(PiacereRuntimeControllerViewPart repositoriesView, String host, String repositoryPath) { + List<RepositoryLocation> locations = repositoriesView.getLocations(); + + for (RepositoryLocation location : locations) { + if (location.getHost().equals(host) && + location.getRepositoryPath().equals(repositoryPath)) + { + return true; + } + } + return false; + }*/ +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/old/DeleteModelAction.java b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/old/DeleteModelAction.java new file mode 100644 index 0000000000000000000000000000000000000000..f1b05f706b5c41482e07ab378256bd0510581245 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/old/DeleteModelAction.java @@ -0,0 +1,64 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions.old; + +import org.eclipse.jface.action.Action; + +public class DeleteModelAction extends Action +{ + public void run() { + super.run(); + + /*boolean result = MessageDialog.openConfirm(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), "Delete Model From Repository", "Are you sure you want to delete the selected model from the repository location?"); + + if (result) { + + IWorkbenchPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActivePart(); + + if (part instanceof FadaModelRepositoriesPart) { + FadaModelRepositoriesPart rv = (FadaModelRepositoriesPart)part; + ISelection selection = rv.getCommonViewer().getSelection(); + if (selection instanceof StructuredSelection) { + StructuredSelection sel = (StructuredSelection)selection; + Object selectedObject = sel.getFirstElement(); + if (selectedObject instanceof AppComponentsModelVersion) { + AppComponentsModelVersion theModelToDownload = (AppComponentsModelVersion)selectedObject; + String theURL="/modelsRepository/" + theModelToDownload.getModel().getApp().getAppName() + "/cm/" + theModelToDownload.getModel().getAppComponentsModelName() + "/" + theModelToDownload.getVersion(); + boolean respuesta=DeploymentClientUtil.doDelete(theURL, theModelToDownload.getModel().getApp().getAppLocation()); + if(!respuesta) { + ErrorDialog.openError(null, "Error", "Error deleting Components Model",null, IStatus.ERROR); + } + else { + theModelToDownload.getModel().getAppComponentsModelVersions().remove(theModelToDownload.getVersion()); + if(theModelToDownload.getModel().getAppComponentsModelVersions().size()==0) { + theModelToDownload.getModel().getApp().getAppComponentsModels().remove(theModelToDownload.getModel().getAppComponentsModelName()); + } + if(theModelToDownload.getModel().getApp().getAppComponentsModels().size()+theModelToDownload.getModel().getApp().getAppSystemConfigurationModels().size()==0) { + theModelToDownload.getModel().getApp().getAppLocation().getRepositoryApps().remove(theModelToDownload.getModel().getApp().getAppName()); + } + + } + } + else if (selectedObject instanceof AppSystemConfigurationModelVersion) { + AppSystemConfigurationModelVersion theModelToDownload = (AppSystemConfigurationModelVersion)selectedObject; + String theURL="/modelsRepository/" + theModelToDownload.getModel().getApp().getAppName() + "/scm/" + theModelToDownload.getModel().getAppSystemConfigurationModelName() + "/" + theModelToDownload.getVersion(); + boolean respuesta=DeploymentClientUtil.doDelete(theURL, theModelToDownload.getModel().getApp().getAppLocation()); + if(!respuesta) { + ErrorDialog.openError(null, "Error", "Error deleting System Configuration Model",null, IStatus.ERROR); + } + else { + theModelToDownload.getModel().getAppSystemConfigurationModelVersions().remove(theModelToDownload.getVersion()); + if(theModelToDownload.getModel().getAppSystemConfigurationModelVersions().size()==0) { + theModelToDownload.getModel().getApp().getAppSystemConfigurationModels().remove(theModelToDownload.getModel().getAppSystemConfigurationModelName()); + } + if(theModelToDownload.getModel().getApp().getAppComponentsModels().size()+theModelToDownload.getModel().getApp().getAppSystemConfigurationModels().size()==0) { + theModelToDownload.getModel().getApp().getAppLocation().getRepositoryApps().remove(theModelToDownload.getModel().getApp().getAppName()); + } + + } + } + rv.refreshViewer(); + } + } + }*/ + } +} + diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/old/DiscardLocationAction.java b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/old/DiscardLocationAction.java new file mode 100644 index 0000000000000000000000000000000000000000..c5af3facb16a9e80d684e75a7b1faeb5c7724bc1 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/old/DiscardLocationAction.java @@ -0,0 +1,37 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions.old; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.PlatformUI; + +public class DiscardLocationAction extends Action +{ + public void run() { + super.run(); + + boolean result = MessageDialog.openConfirm(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), "Discard Repository", "Are you sure you want to discard the selected repository location?"); + + if (result) { + + IWorkbenchPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActivePart(); + + /*if (part instanceof FadaModelRepositoriesPart) { + FadaModelRepositoriesPart rv = (FadaModelRepositoriesPart)part; + ISelection selection = rv.getCommonViewer().getSelection(); + if (selection instanceof StructuredSelection) { + StructuredSelection sel = (StructuredSelection)selection; + Object selectedobject = sel.getFirstElement(); + if (selectedobject instanceof RepositoryLocation) { + RepositoryLocation rp = (RepositoryLocation)selectedobject; + rv.getLocations().remove(rp); + rv.refreshViewer(); + } + } + } */ + } + } +} + diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/old/DownloadModelAction.java b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/old/DownloadModelAction.java new file mode 100644 index 0000000000000000000000000000000000000000..4396288f8c2167b625ff853e3da3d940c5c0cc6d --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/old/DownloadModelAction.java @@ -0,0 +1,121 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions.old; + + + + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; + +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.core.runtime.Path; +import org.eclipse.jface.action.Action; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.dialogs.ContainerSelectionDialog; +import org.json.JSONException; +import org.json.JSONObject; + +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.DeploymentClientUtil; + +public class DownloadModelAction extends Action +{ + public void run() { + super.run(); + + /*IWorkbenchPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActivePart(); + + if (part instanceof FadaModelRepositoriesPart) { + FadaModelRepositoriesPart rv = (FadaModelRepositoriesPart)part; + ISelection selection = rv.getCommonViewer().getSelection(); + if (selection instanceof StructuredSelection) { + StructuredSelection sel = (StructuredSelection)selection; + Object selectedObject = sel.getFirstElement(); + if (selectedObject instanceof AppComponentsModelVersion) { + AppComponentsModelVersion theModelToDownload = (AppComponentsModelVersion)selectedObject; + String destDirectory = getDestDirectory(); + if(destDirectory!=null) { + + String theURL="/modelsRepository/" + theModelToDownload.getModel().getApp().getAppName() + "/cm/" + theModelToDownload.getModel().getAppComponentsModelName() + "/" + theModelToDownload.getVersion(); + JSONObject respuesta=DeploymentClientUtil.doGet(theURL, theModelToDownload.getModel().getApp().getAppLocation()); + if(respuesta!=null) { + try { + String fileName=theModelToDownload.getAppCMFileName(); + createFile(destDirectory+File.separator+fileName, respuesta.getString("CM")); + ResourcesPlugin.getWorkspace().getRoot().refreshLocal(IResource.DEPTH_INFINITE, new NullProgressMonitor()); + } catch (IOException | JSONException | CoreException e) { + e.printStackTrace(); + } + } + } + } + else if (selectedObject instanceof AppSystemConfigurationModelVersion) { + AppSystemConfigurationModelVersion theModelToDownload = (AppSystemConfigurationModelVersion)selectedObject; + String destDirectory = getDestDirectory(); + if(destDirectory!=null) { + String theURL="/modelsRepository/" + theModelToDownload.getModel().getApp().getAppName() + "/scm/" + theModelToDownload.getModel().getAppSystemConfigurationModelName() + "/" + theModelToDownload.getVersion(); + JSONObject respuesta=DeploymentClientUtil.doGet(theURL, theModelToDownload.getModel().getApp().getAppLocation()); + if(respuesta!=null) { + try { + String scmFileName=theModelToDownload.getAppSCMFileName(); + String cmFileName=theModelToDownload.getModel().getApp().getAppComponentsModels().get(theModelToDownload.getAppComponentsModelReference().getAppComponentsModelReferenceName()).getAppComponentsModelVersions().get(theModelToDownload.getAppComponentsModelReference().getAppComponentsModelReferenceVersion()).getAppCMFileName(); + createFile(destDirectory+File.separator+cmFileName, respuesta.getString("CM")); + createFile(destDirectory+File.separator+scmFileName, changeReference(respuesta.getString("SCM"), cmFileName)); + ResourcesPlugin.getWorkspace().getRoot().refreshLocal(IResource.DEPTH_INFINITE, new NullProgressMonitor()); + + } catch (IOException | JSONException | CoreException e) { + e.printStackTrace(); + } + } + } + } + } + } */ + } + + + + private void createFile(String fileURI, String fileContent) throws IOException { + File f = new File(fileURI); + f.getParentFile().mkdirs(); + if(!f.exists()) { + f.createNewFile(); + } + FileWriter fw = new FileWriter(f); + fw.write(fileContent); + fw.flush(); + fw.close(); + } + + + private String changeReference(String scmAsString, String cmFileName) { + String toReplace = scmAsString.split("<componentsModel href=\"")[1].split("#")[0]; + String scmAsString2 = scmAsString.replace(toReplace, cmFileName); + return scmAsString2; + } + + private String getDestDirectory() { + + ContainerSelectionDialog csd = new ContainerSelectionDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), ResourcesPlugin.getWorkspace().getRoot(), true, "Select the destination directory"); + String dir=null; + if(csd.open()==ContainerSelectionDialog.OK) { + Object[] result = csd.getResult(); + if (result.length == 1) { + dir=((Path)result[0]).toOSString(); + String s = ResourcesPlugin.getWorkspace().getRoot().getLocationURI().toString(); + if(s.startsWith("file:")) { + s=s.substring(5); + } + return s+dir; + } + } + return dir == null ? null : dir; + + } +} + diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/providers/PRCContentProvider.java b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/providers/PRCContentProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..4c3d5b8e32c8c5f44f98bcaf07bcf2f9b0d09745 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/providers/PRCContentProvider.java @@ -0,0 +1,60 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.providers; + +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider; + +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.PiacereDeployment; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.PiacereRuntimeController; + +public class PRCContentProvider extends AdapterFactoryContentProvider +{ + public PRCContentProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + + } + + @SuppressWarnings("unchecked") + public Object[] getElements(Object object) { + if (object instanceof List) { + List<PiacereRuntimeController> elements = (List<PiacereRuntimeController>)object; + return elements.toArray(); + } + if (object instanceof PiacereRuntimeController) { + return ((PiacereRuntimeController)object).getDeployments().values().toArray(); + + } + + return super.getElements(object); + } + + + + public boolean hasChildren(Object object) { + if (object instanceof PiacereRuntimeController) { + return ((PiacereRuntimeController)object).getDeployments().size()>0; + } + else if(object instanceof PiacereDeployment) { + return false; + } + return super.hasChildren(object); + } + + + + public Object[] getChildren(Object object) { + if (object instanceof PiacereRuntimeController) { + PiacereRuntimeController prc = (PiacereRuntimeController)object; + ArrayList<Object> assets = new ArrayList<Object>(); + for(PiacereDeployment dep : prc.getDeployments().values()) { + assets.add(dep); + } + return assets.toArray(); + } + return null; + } + +} + diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/providers/PRCLabelProvider.java b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/providers/PRCLabelProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..a447236af07b5ab093b5565b7e46335668854a47 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/providers/PRCLabelProvider.java @@ -0,0 +1,94 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.providers; + +import java.io.IOException; + +import org.eclipse.core.runtime.FileLocator; +import org.eclipse.core.runtime.Platform; +import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.swt.graphics.Device; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.widgets.Display; + +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.PiacereDeployment; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.PiacereRuntimeController; + +public class PRCLabelProvider extends LabelProvider +{ + + public String getText(Object element) { + if (element instanceof PiacereRuntimeController) { + return getPiacereRuntimeControllerLabel((PiacereRuntimeController)element); + } + else if(element instanceof PiacereDeployment) { + return "Deployment ID: "+((PiacereDeployment)element).getDeploymentID(); + } + return super.getText(element); + } + + public Image getImage(Object element) { + try { + String imagePath = FileLocator.toFileURL(Platform.getBundle("PiacereIDEIntegration.KR10_KR11_KR12").getResource("icons/")).getPath(); + /*if (element instanceof PiacereRuntimeController) { + Image image = null; + if(((PiacereRuntimeController)element).isConnected()) { + image = new Image((Device)Display.getCurrent(), String.valueOf(imagePath) + "RepoConnected.png"); + } + else { + image = new Image((Device)Display.getCurrent(), String.valueOf(imagePath) + "RepoDisconnected.png"); + } + return image; + } + else */ + if (element instanceof PiacereDeployment) { + Image image = new Image((Device)Display.getCurrent(), String.valueOf(imagePath) + "repository.png"); + return image; + } + /*else if (element instanceof AppComponentsModel) { + Image image = new Image((Device)Display.getCurrent(), String.valueOf(imagePath) + "ComponentsModel.png"); + return image; + } + else if (element instanceof AppSystemConfigurationModel) { + Image image = new Image((Device)Display.getCurrent(), String.valueOf(imagePath) + "SystemConfigurationModel.png"); + return image; + } + + else if (element instanceof AppComponentsModelVersion) { + Image image = new Image((Device)Display.getCurrent(), String.valueOf(imagePath) + "bundle.png"); + return image; + } + else if (element instanceof AppSystemConfigurationModelVersion) { + Image image = new Image((Device)Display.getCurrent(), String.valueOf(imagePath) + "bundle.png"); + return image; + } + + else if (element instanceof AppComponentsModelReference) { + Image image = new Image((Device)Display.getCurrent(), String.valueOf(imagePath) + "ref.png"); + return image; + } */ + } catch (IOException iOException) { + return null; + } + return super.getImage(element); + } + + + private String getPiacereRuntimeControllerLabel(PiacereRuntimeController prc) { + String res=prc.getPiacereRuntimeControllerURL(); + + /*if(location.getName()!=null && location.getName()!="") { + res = location.getName()+": "; + } + + String host = (location.getHost() == null) ? "" : location.getHost(); + String repositoryPath = (location.getRepositoryPath() == null) ? "" : location.getRepositoryPath(); + + return res+host + "/" + repositoryPath;*/ + return res; + } + +} + + + + + diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/util/DeploymentClientUtil.java b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/util/DeploymentClientUtil.java new file mode 100644 index 0000000000000000000000000000000000000000..0c1ce410d7f74995eebe06b29be06db5abdc7e8f --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/util/DeploymentClientUtil.java @@ -0,0 +1,171 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util; + +import org.eclipse.ui.IViewPart; +import org.eclipse.ui.PlatformUI; +import org.json.JSONObject; +import org.restlet.Client; +import org.restlet.Context; +import org.restlet.data.Protocol; +import org.restlet.resource.ClientResource; + +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.PiacereRuntimeControllerViewPart; +import eu.piacere.piacereTool.utils.ToolCustomizationUtils; + +public class DeploymentClientUtil { + + public static String getPerformanceMonitoringURL(PiacereDeployment deployment, String dashboardTitle) { + + String protocol = ToolCustomizationUtils.getPreference(DeploymentClientUtil.class, "KR11_12.protocol"); + String host = ToolCustomizationUtils.getPreference(DeploymentClientUtil.class, "KR11_12.host"); + String port = ToolCustomizationUtils.getPreference(DeploymentClientUtil.class, "KR11_12.port"); + String epURL = protocol+"://"+host+":"+port+"/"; + Protocol p = null; + if(protocol.equals("http")) { + p=Protocol.HTTP; + } + else { + p=Protocol.HTTPS; + } + Client client = new Client(new Context(), p); + + ClientResource service = new ClientResource(epURL); + service.setNext(client); + try { + ClientResource resource = service.getChild("pmc/api/v1/deployments/"+deployment.getDeploymentID()+"/"+dashboardTitle); + + if(resource.getStatus().getCode()==200){ + JSONObject respuesta= new JSONObject(resource.get().getText()); + if(respuesta.has("dashboard_url")) { + return respuesta.getString("dashboard_url"); + } + } + } + catch (Exception e) { + e.printStackTrace(); + } + + return null; + + //return "https://grafana.pm.ci.piacere.digital.tecnalia.dev/d/ADRVbdL7z/piacere-monitoring-dashboard-influx-v1?orgId=1"; + } + + + /*public static JSONObject doGet(String getURL, RepositoryLocation modelLocation) { + + if(modelLocation.isConnected()) { + + Protocol p = null; + if(modelLocation.getHost().split("://")[0].equals("http")) { + p=Protocol.HTTP; + } + else { + p=Protocol.HTTPS; + } + Client client = new Client(new Context(), p); + + ClientResource service = new ClientResource(modelLocation.getRepositoryURL()); + service.setNext(client); + ClientResource resource = service.getChild(getURL); + String respuesta=""; + try { + respuesta=resource.get().getText(); + return new JSONObject(respuesta); + } + catch (Exception e) { + e.printStackTrace(); + } + } + return null; + } + + public static boolean doDelete(String deleteURL, RepositoryLocation modelLocation) { + + if(modelLocation.isConnected()) { + + Protocol p = null; + if(modelLocation.getHost().split("://")[0].equals("http")) { + p=Protocol.HTTP; + } + else { + p=Protocol.HTTPS; + } + Client client = new Client(new Context(), p); + + ClientResource service = new ClientResource(modelLocation.getRepositoryURL()); + service.setNext(client); + ClientResource resource = service.getChild(deleteURL); + try { + resource.delete(); + return resource.getResponse().getStatus().getCode()/100==2; + } + catch (Exception e) { + e.printStackTrace(); + } + } + return false; + } + + public static boolean doPut(String putURL, Object objectToPut, RepositoryLocation modelLocation) { + + if(modelLocation.isConnected()) { + + Protocol p = null; + if(modelLocation.getHost().split("://")[0].equals("http")) { + p=Protocol.HTTP; + } + else { + p=Protocol.HTTPS; + } + Client client = new Client(new Context(), p); + + ClientResource service = new ClientResource(modelLocation.getRepositoryURL()); + service.setNext(client); + ClientResource resource = service.getChild(putURL); + try { + resource.put(resource.toRepresentation(objectToPut.toString(), MediaType.APPLICATION_JSON)); + return resource.getResponse().getStatus().getCode()/100==2; + } + catch (Exception e) { + e.printStackTrace(); + } + } + return false; + }*/ + + public static boolean testConnection(PiacereRuntimeController prc, boolean showErrors) { + return prc.isConnected(); + + } + + public static PiacereRuntimeControllerViewPart getRuntimeControllerView() { + try { + IViewPart viewPart = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView("PiacereIDEIntegration.KR10KR11KR12.PiacereRuntimeControllerViewPart"); + if (viewPart instanceof PiacereRuntimeControllerViewPart) + return (PiacereRuntimeControllerViewPart)viewPart; + } catch (Exception exception) { + return null; + } + return null; + } + + + public static String getSelfHealingURL(PiacereDeployment selectedObject) { + // TODO Auto-generated method stub + return null; + } + + + public static String getSecuritySelfLearningMonitoringURL(PiacereDeployment selectedObject) { + // TODO Auto-generated method stub + return null; + } + + + public static String getSecurityMonitoringURL(PiacereDeployment selectedObject) { + // TODO Auto-generated method stub + return null; + } + + + +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/util/PRCClientUtil.java b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/util/PRCClientUtil.java new file mode 100644 index 0000000000000000000000000000000000000000..7392e3b824f98be654bdfcac2457b245dcc50eae --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/util/PRCClientUtil.java @@ -0,0 +1,98 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util; + +import org.json.JSONArray; +import org.json.JSONObject; +import org.restlet.Client; +import org.restlet.Context; +import org.restlet.data.MediaType; +import org.restlet.data.Protocol; +import org.restlet.representation.EmptyRepresentation; +import org.restlet.resource.ClientResource; + +public class PRCClientUtil { + + public static JSONArray retrieveAllDeploymentsGet(String getURL, Protocol proto) { + + Client client = new Client(new Context(), proto); + + ClientResource service = new ClientResource(getURL); + service.setNext(client); + ClientResource resource = service.getChild("deployments"); + String respuesta=""; + try { + respuesta=resource.get().getText(); + if(respuesta.equals("[]")) { + //respuesta="[{\"deploymentId\": \"123e4567-e89b-12d3-a456-426614174000\"}]"; + } + return new JSONArray(respuesta); + } + catch (Exception e) { + e.printStackTrace(); + } + return null; + + } + + public static JSONObject retrieveDeploymentGet(String getURL, Protocol proto, PiacereDeployment deployment) { + + Client client = new Client(new Context(), proto); + + ClientResource service = new ClientResource(getURL); + service.setNext(client); + ClientResource resource = service.getChild("deployments/"+deployment.getDeploymentID()); + String respuesta=""; + try { + respuesta=resource.get().getText(); + return new JSONObject(respuesta); + } + catch (Exception e) { + e.printStackTrace(); + } + return null; + + } + + + + public static boolean createDeploymentPOST(String postURL, Protocol proto, String repositoryURL, String deploymentID) { + + Client client = new Client(new Context(), proto); + + ClientResource service = new ClientResource(postURL); + service.setNext(client); + try { + ClientResource resource = service.getChild("deployments"); + JSONObject objectToPost=new JSONObject(); + objectToPost.put("repository_url", repositoryURL); + objectToPost.put("deployment_id", deploymentID); + + resource.post(resource.toRepresentation(objectToPost.toString(), MediaType.APPLICATION_JSON)); + return resource.getResponse().getStatus().getCode()/100==2; + } + catch (Exception e) { + e.printStackTrace(); + } + + return false; + } + + + + public static boolean finishDeploymentPOST(String postURL, Protocol proto, PiacereDeployment deployment) { + + Client client = new Client(new Context(), proto); + + ClientResource service = new ClientResource(postURL); + service.setNext(client); + try { + ClientResource resource = service.getChild("deployments/"+deployment.getDeploymentID()+"/finish"); + resource.post(new EmptyRepresentation()); + return resource.getResponse().getStatus().getCode()/100==2; + } + catch (Exception e) { + e.printStackTrace(); + } + + return false; + } +} \ No newline at end of file diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/util/PiacereDeployment.java b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/util/PiacereDeployment.java new file mode 100644 index 0000000000000000000000000000000000000000..462857fbd9f4367d55c006f27adeb6248a7a6d96 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/util/PiacereDeployment.java @@ -0,0 +1,20 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util; + +public class PiacereDeployment { + private String deploymentID; + + + public PiacereDeployment(String id) { + this.setDeploymentID(id); + } + + + public String getDeploymentID() { + return deploymentID; + } + + + public void setDeploymentID(String deploymentID) { + this.deploymentID = deploymentID; + } +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/util/PiacereRuntimeController.java b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/util/PiacereRuntimeController.java new file mode 100644 index 0000000000000000000000000000000000000000..87ee56f70b45171eb34e68cbb9e834e8890754d4 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/util/PiacereRuntimeController.java @@ -0,0 +1,141 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util; + +import java.util.TreeMap; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; +import org.restlet.Client; +import org.restlet.Context; +import org.restlet.data.Protocol; +import org.restlet.data.Status; +import org.restlet.resource.ClientResource; + +import eu.piacere.piacereTool.utils.ToolCustomizationUtils; + +public class PiacereRuntimeController { + + private String protocol; + private String host; + private String port; + + + public static String DEPLOYMENTS_PATH = "deployments"; + + private TreeMap<String, PiacereDeployment> rpcDeployments; + private Boolean isConnected; + + public PiacereRuntimeController() { + this.setProtocol(ToolCustomizationUtils.getPreference(this.getClass(), "KR10.protocol")); + this.setHost(ToolCustomizationUtils.getPreference(this.getClass(), "KR10.host")); + this.setPort(ToolCustomizationUtils.getPreference(this.getClass(), "KR10.port")); + this.setDeployments(new TreeMap<String,PiacereDeployment>()); + reloadContent(); + + } + + public String getProtocol() { + return protocol; + } + + public void setProtocol(String protocol) { + this.protocol = protocol; + } + + public String getHost() { + return host; + } + + public void setHost(String host) { + this.host = host; + } + + public String getPort() { + return port; + } + + public void setPort(String port) { + this.port = port; + } + + public TreeMap<String, PiacereDeployment> getDeployments() { + return rpcDeployments; + } + + public void setDeployments(TreeMap<String, PiacereDeployment> rpcDeployments) { + this.rpcDeployments = rpcDeployments; + } + + @Override + public String toString() { + return "PIACERE Runtime Controller"; + } + + public void reloadContent() { + if(this.testConnection()) { + this.setDeployments(new TreeMap<String,PiacereDeployment>()); + + Protocol p = null; + if(this.getProtocol().equals("http")) { + p=Protocol.HTTP; + } + else if(this.getProtocol().equals("https")) { + p=Protocol.HTTPS; + } + JSONArray res=PRCClientUtil.retrieveAllDeploymentsGet(getPiacereRuntimeControllerURL(), p); + for(int i = 0; i < res.length(); i++) { + try { + JSONObject obj = res.getJSONObject(i); + this.getDeployments().put(obj.getString("deploymentId"), new PiacereDeployment(obj.getString("deploymentId"))); + } catch (JSONException e) { + e.printStackTrace(); + } + } + } + } + + + + + public String getPiacereRuntimeControllerURL() { + String res = this.getProtocol()+"://"+this.getHost()+":"+this.getPort()+"/"; + return res; + } + + + public boolean testConnection() { + Protocol p = null; + if(this.getProtocol().equals("http")) { + p=Protocol.HTTP; + } + else if(this.getProtocol().equals("https")) { + p=Protocol.HTTPS; + } + if(p!=null) { + Client client = new Client(new Context(), p); + ClientResource service = new ClientResource(getPiacereRuntimeControllerURL()); + service.setNext(client); + ClientResource resource = service.getChild("/"+DEPLOYMENTS_PATH); + try { + resource.get().getText(); + Status s=resource.getStatus(); + if(s.getCode()==200) { + return true; + } + } + catch (Exception e) { + } + } + return false; + } + + public boolean isConnected() { + if(this.isConnected==null) { + isConnected=testConnection(); + } + return isConnected.booleanValue(); + } + + + +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/.classpath b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..1fa3e6803d3b22e055b735220510616c4e35f2fc --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="src" path="src"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/.gitignore b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..ae3c1726048cd06b9a143e0376ed46dd9b9a8d53 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/.project b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/.project new file mode 100644 index 0000000000000000000000000000000000000000..3f4326f10b37100d2495485a3e38f9cc84a6824d --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>PiacereIDEIntegration.KRIEC</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/META-INF/MANIFEST.MF b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..d87ae05bc6d391f5a433f5c9916e202c087af35b --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/META-INF/MANIFEST.MF @@ -0,0 +1,34 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: PiacereIDEIntegration.KRIEC +Bundle-SymbolicName: PiacereIDEIntegration.KRIEC;singleton:=true +Bundle-Version: 1.0.0.qualifier +Automatic-Module-Name: PiacereIDEIntegration.KRIEC +Require-Bundle: org.eclipse.ui, + org.eclipse.core.runtime, + org.apache.httpcomponents.httpcore +Import-Package: eu.piacere.doml.doml.commons, + eu.piacere.piacereTool.utils, + org.apache.commons.io, + org.apache.http.client;version="4.5.13", + org.apache.http.client.methods;version="4.5.13", + org.apache.http.impl.client;version="4.5.13", + org.eclipse.core.resources, + org.eclipse.core.runtime.preferences;version="3.4.0", + org.eclipse.emf.common.notify, + org.eclipse.emf.common.util, + org.eclipse.emf.ecore, + org.eclipse.emf.ecore.resource, + org.eclipse.emf.ecore.resource.impl, + org.eclipse.emf.ecore.util, + org.eclipse.emf.edit.provider.resource, + org.eclipse.emf.edit.ui.provider, + org.eclipse.ui.dialogs, + org.eclipse.ui.navigator, + org.eclipse.ui.views.properties, + org.json, + org.restlet, + org.restlet.data, + org.restlet.representation, + org.restlet.resource, + org.restlet.util diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/Piacere/PiacereIcon_16x16.png b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/Piacere/PiacereIcon_16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..444de54d6cfe2958fac1bbb89dd8619b4c537c47 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/Piacere/PiacereIcon_16x16.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/build.properties b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..243224fe60916a29037bb69158cadf01892d797f --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/build.properties @@ -0,0 +1,7 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + .,\ + plugin.xml,\ + icons/,\ + Piacere/ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/ComponentsModel.png b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/ComponentsModel.png new file mode 100644 index 0000000000000000000000000000000000000000..9ee76accc89ff76934fe746a3af1a853843e1209 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/ComponentsModel.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/FAdAIcon_24.png b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/FAdAIcon_24.png new file mode 100644 index 0000000000000000000000000000000000000000..f4259625230e2b11b98a14aa6b75b52edad25dd8 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/FAdAIcon_24.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/FadaModelRepositoriesView.png b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/FadaModelRepositoriesView.png new file mode 100644 index 0000000000000000000000000000000000000000..4db27dd10ecbbcf29062e8cc7b7b3c22bf72c5a3 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/FadaModelRepositoriesView.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/FadaModelRepositoriesView_old.png b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/FadaModelRepositoriesView_old.png new file mode 100644 index 0000000000000000000000000000000000000000..d4f2feef7f465a95b720ec2a24aa4429b5a64aab Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/FadaModelRepositoriesView_old.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/RepoConnected.png b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/RepoConnected.png new file mode 100644 index 0000000000000000000000000000000000000000..bd178d026ebd3aa22573ca74e985f306d64a59c1 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/RepoConnected.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/RepoDisconnected.png b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/RepoDisconnected.png new file mode 100644 index 0000000000000000000000000000000000000000..0c78354020ea586917e7ec598e357c739b031aa0 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/RepoDisconnected.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/SystemConfigurationModel.png b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/SystemConfigurationModel.png new file mode 100644 index 0000000000000000000000000000000000000000..d4561b60458f1b50d06bfd23d7f8308af08688ef Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/SystemConfigurationModel.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/Task.gif b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/Task.gif new file mode 100644 index 0000000000000000000000000000000000000000..5c3b2b89a47caa2cbec35a9e9c3fe2efef4b2895 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/Task.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/addRepository.png b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/addRepository.png new file mode 100644 index 0000000000000000000000000000000000000000..fe03f37202ca955983c42397173fb12faca9d187 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/addRepository.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/bundle.png b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/bundle.png new file mode 100644 index 0000000000000000000000000000000000000000..1f41d9b1bfcf6db40272453364a446ad457ec50f Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/bundle.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/collapseAll.gif b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/collapseAll.gif new file mode 100644 index 0000000000000000000000000000000000000000..a2d80a9044f38833cb728a69c88294ce3fd007c7 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/collapseAll.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/deleteRepository.png b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/deleteRepository.png new file mode 100644 index 0000000000000000000000000000000000000000..807f97450c23a784814393f55a16ff75688ec15b Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/deleteRepository.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/download.png b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/download.png new file mode 100644 index 0000000000000000000000000000000000000000..236f4a77ea9131d404b0efb5e7bddd72098181f9 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/download.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/expandAll.gif b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/expandAll.gif new file mode 100644 index 0000000000000000000000000000000000000000..0205b29176d4e60307639b6ac80ebfc40be61c3b Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/expandAll.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/export.png b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/export.png new file mode 100644 index 0000000000000000000000000000000000000000..670042c62ce6b5cb200fa3807c57d18511275f39 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/export.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/elcl16/addrepositorylocation.gif b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/elcl16/addrepositorylocation.gif new file mode 100644 index 0000000000000000000000000000000000000000..6237766393fcc7a602d4695d151c3e546abeab6a Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/elcl16/addrepositorylocation.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/elcl16/copy.gif b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/elcl16/copy.gif new file mode 100644 index 0000000000000000000000000000000000000000..71d7c95aa8caa2e8f139d262a4e5e08aba2b88e5 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/elcl16/copy.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/elcl16/integrateconceptualfragment.gif b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/elcl16/integrateconceptualfragment.gif new file mode 100644 index 0000000000000000000000000000000000000000..07164754e5ca231666d9daf7fa4a9d12e378a52a Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/elcl16/integrateconceptualfragment.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/elcl16/integratetechnicalfragment.gif b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/elcl16/integratetechnicalfragment.gif new file mode 100644 index 0000000000000000000000000000000000000000..e7035189cd8dd45b6afba27b8cbccd75df5000e1 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/elcl16/integratetechnicalfragment.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/elcl16/paste.gif b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/elcl16/paste.gif new file mode 100644 index 0000000000000000000000000000000000000000..39dd4d9d38aa85f9c4c9ff652c453c555b850980 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/elcl16/paste.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/elcl16/search.gif b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/elcl16/search.gif new file mode 100644 index 0000000000000000000000000000000000000000..d540a01f4d9eeb9d2951f30cee165c7370e9fc6a Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/elcl16/search.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/CapabilityPattern.gif b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/CapabilityPattern.gif new file mode 100644 index 0000000000000000000000000000000000000000..15ffbb0795fbdc2a0add02f0a07bcea02f034ab4 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/CapabilityPattern.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/CapabilityPatterns.gif b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/CapabilityPatterns.gif new file mode 100644 index 0000000000000000000000000000000000000000..37147654e68f964a947278cb954e47633809c5c4 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/CapabilityPatterns.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/ConceptualFragment.gif b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/ConceptualFragment.gif new file mode 100644 index 0000000000000000000000000000000000000000..49ab538b6c432e7eb280793484e555df7ba2761d Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/ConceptualFragment.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/Delete.gif b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/Delete.gif new file mode 100644 index 0000000000000000000000000000000000000000..b6922ac11cf64e16a15cf2976cdaa1e40118abed Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/Delete.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/DeliveryProcess.gif b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/DeliveryProcess.gif new file mode 100644 index 0000000000000000000000000000000000000000..7b40362c2f54cebce43f5511342df015c4f52feb Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/DeliveryProcess.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/Description.gif b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/Description.gif new file mode 100644 index 0000000000000000000000000000000000000000..75f33c24fa441d09729e7adcbc78a4e55d84b443 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/Description.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/Descriptor.gif b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/Descriptor.gif new file mode 100644 index 0000000000000000000000000000000000000000..04032a915a0d9eace79a7aec3c573ca07eb7f4ac Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/Descriptor.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/Input.gif b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/Input.gif new file mode 100644 index 0000000000000000000000000000000000000000..d8d7d974fa596ee7a8d06b1d8b110ee7336850af Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/Input.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/Interface.gif b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/Interface.gif new file mode 100644 index 0000000000000000000000000000000000000000..7c7d39ef65b96d71b7b2e1e576c3677bbf7757f1 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/Interface.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/MethodPlugin.gif b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/MethodPlugin.gif new file mode 100644 index 0000000000000000000000000000000000000000..bb82c391ed462f0f01e988e00b07f8de262278e7 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/MethodPlugin.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/Name.gif b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/Name.gif new file mode 100644 index 0000000000000000000000000000000000000000..75f33c24fa441d09729e7adcbc78a4e55d84b443 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/Name.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/Objective.gif b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/Objective.gif new file mode 100644 index 0000000000000000000000000000000000000000..75f33c24fa441d09729e7adcbc78a4e55d84b443 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/Objective.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/Origin.gif b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/Origin.gif new file mode 100644 index 0000000000000000000000000000000000000000..c79bf78956a277d98343ab949be3efe08411f37f Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/Origin.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/Output.gif b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/Output.gif new file mode 100644 index 0000000000000000000000000000000000000000..b4fe2c84ecd2cb1ce8a4fb03a091ba76cad78916 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/Output.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/Package.gif b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/Package.gif new file mode 100644 index 0000000000000000000000000000000000000000..00a311efa25ac538073fb14e59efbb9a968a94e3 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/Package.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/Processes.gif b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/Processes.gif new file mode 100644 index 0000000000000000000000000000000000000000..08d8c2d5d1a7a70f5af53200633a7ba92aab1788 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/Processes.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/Repositories.gif b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/Repositories.gif new file mode 100644 index 0000000000000000000000000000000000000000..16eda8a78a63bfe5874e2e92a29f20a644241bba Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/Repositories.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/RoleSetCategory.gif b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/RoleSetCategory.gif new file mode 100644 index 0000000000000000000000000000000000000000..54a3f677a3efc25358bb4f637de6166d1425a486 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/RoleSetCategory.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/Task.gif b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/Task.gif new file mode 100644 index 0000000000000000000000000000000000000000..5c3b2b89a47caa2cbec35a9e9c3fe2efef4b2895 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/Task.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/Tasks.gif b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/Tasks.gif new file mode 100644 index 0000000000000000000000000000000000000000..638bd83009d2d7bf881dab9dbc07c176edd23060 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/Tasks.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/TechnicalFragment.gif b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/TechnicalFragment.gif new file mode 100644 index 0000000000000000000000000000000000000000..4f1b85a7801922060d6b5a968a76be30eb5326c9 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/TechnicalFragment.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/TechnicalFragmentError.gif b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/TechnicalFragmentError.gif new file mode 100644 index 0000000000000000000000000000000000000000..50b162dbdfc4a7f0eabd5d7119871e378efe6940 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/TechnicalFragmentError.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/TechnicalFragmentImported.gif b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/TechnicalFragmentImported.gif new file mode 100644 index 0000000000000000000000000000000000000000..3260ab2872cfcc35cc75b3501dd05bb23bd6f333 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/TechnicalFragmentImported.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/Type.gif b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/Type.gif new file mode 100644 index 0000000000000000000000000000000000000000..358cbcb83d800352e59d672771057f3156f27491 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/Type.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/WorkProduct.gif b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/WorkProduct.gif new file mode 100644 index 0000000000000000000000000000000000000000..1540f3d3c95605a8d7f641f8c93b098e356c40c3 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/WorkProduct.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/WorkProducts.gif b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/WorkProducts.gif new file mode 100644 index 0000000000000000000000000000000000000000..cf289263e15224bfd984e2145ddc6c6eb415f50c Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/WorkProducts.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/activity16.gif b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/activity16.gif new file mode 100644 index 0000000000000000000000000000000000000000..cf20deb439ab39a63162c93396060706051569b0 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/activity16.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/role.gif b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/role.gif new file mode 100644 index 0000000000000000000000000000000000000000..69ebdf2959ed859952751f3f377d581671045873 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/full/obj16/role.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/import.png b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/import.png new file mode 100644 index 0000000000000000000000000000000000000000..bb6ff06b7bcf18590deb1f93a519d5264b6a067f Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/import.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/jar.png b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/jar.png new file mode 100644 index 0000000000000000000000000000000000000000..660f8ea5131c2f9f59a5fa2491993cfa71a1ac57 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/jar.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/ref.png b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/ref.png new file mode 100644 index 0000000000000000000000000000000000000000..2839c60a42f8a79067981fd7b3a26f4b81a69231 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/ref.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/refresh.gif b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/refresh.gif new file mode 100644 index 0000000000000000000000000000000000000000..e3831471a6592da14f53b1e7c5a2f7d6a92d9937 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/refresh.gif differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/repository.png b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/repository.png new file mode 100644 index 0000000000000000000000000000000000000000..92794f126f846474fafef14aac6fccb82faaf4f8 Binary files /dev/null and b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/icons/repository.png differ diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/plugin.xml b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..8013924ee5945bc4ddaf313ca5c7c8ff8d95a373 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/plugin.xml @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.4"?> +<plugin> + <extension + point="org.eclipse.ui.preferencePages"> + <page + category="PiacereToolCustomization.preferences.page1" + class="eu.piacere.ide.toolIntegration.kriec.preferencePage.KRIECPreferencePage" + id="PiacereIDEIntegration.KRIEC.preferences.page1" + name="PIACERE Infrastructure Elements Catalog Preferences"> + </page> + </extension> + <extension + point="org.eclipse.core.runtime.preferences"> + <initializer + class="eu.piacere.ide.toolIntegration.kriec.preferencePage.KRIECPreferenceInitializer"> + </initializer> + </extension> + <extension point = "org.eclipse.ui.views"> + <view + id = "PiacereIDEIntegration.KRIEC.PiacereIECViewPart" + name = "PIACERE Infrastructure Elements Catalog" + category = "org.eclipse.ui" + class = "eu.piacere.ide.toolIntegration.kriec.viewPart.InfrastructureElementsCatalogViewPart" + icon = "Piacere/PiacereIcon_16x16.png" /> + </extension> + <extension + point="org.eclipse.core.runtime.adapters"> + <factory + adaptableType="eu.piacere.ide.toolIntegration.kriec.util.IECServiceAttribute" + class="eu.piacere.ide.toolIntegration.kriec.viewPart.properties.IECServiceAttributeAdapterFactory"> + <adapter + type="org.eclipse.ui.views.properties.IPropertySource"> + </adapter> + </factory> + </extension> + +</plugin> diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/preferencePage/KRIECPreferenceInitializer.java b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/preferencePage/KRIECPreferenceInitializer.java new file mode 100644 index 0000000000000000000000000000000000000000..07229925ac6ff4c43c4cec7d90e8c6ac5da0aea1 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/preferencePage/KRIECPreferenceInitializer.java @@ -0,0 +1,22 @@ +package eu.piacere.ide.toolIntegration.kriec.preferencePage; + +import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer; +import org.eclipse.core.runtime.preferences.ConfigurationScope; +import org.eclipse.ui.preferences.ScopedPreferenceStore; +import org.osgi.framework.FrameworkUtil; + +public class KRIECPreferenceInitializer extends AbstractPreferenceInitializer { + + @Override + public void initializeDefaultPreferences() { + + ScopedPreferenceStore scopedPreferenceStore = new ScopedPreferenceStore(ConfigurationScope.INSTANCE,(FrameworkUtil.getBundle(KRIECPreferenceInitializer.class)).getSymbolicName()); + scopedPreferenceStore.setDefault("KRIEC.host", "iec.ci.piacere.digital.tecnalia.dev"); + scopedPreferenceStore.setDefault("KRIEC.port", 443); + scopedPreferenceStore.setDefault("KRIEC.protocol", "https"); + + + + } + +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/preferencePage/KRIECPreferencePage.java b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/preferencePage/KRIECPreferencePage.java new file mode 100644 index 0000000000000000000000000000000000000000..840dbee6500a8016cd0c3d5627b26094c344ef37 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/preferencePage/KRIECPreferencePage.java @@ -0,0 +1,37 @@ +package eu.piacere.ide.toolIntegration.kriec.preferencePage; + +import org.eclipse.core.runtime.preferences.ConfigurationScope; +import org.eclipse.jface.preference.FieldEditorPreferencePage; +import org.eclipse.jface.preference.IntegerFieldEditor; +import org.eclipse.jface.preference.RadioGroupFieldEditor; +import org.eclipse.jface.preference.StringFieldEditor; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchPreferencePage; +import org.eclipse.ui.preferences.ScopedPreferenceStore; +import org.osgi.framework.FrameworkUtil; + +public class KRIECPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage{ + + + public KRIECPreferencePage() { + super(GRID); + } + + @Override + public void init(IWorkbench workbench) { + //WHICH SCOPE SHOULD I SELECT: https://wiki.eclipse.org/FAQ_What_is_a_preference_scope%3F + + setPreferenceStore(new ScopedPreferenceStore(ConfigurationScope.INSTANCE, (FrameworkUtil.getBundle(KRIECPreferenceInitializer.class)).getSymbolicName())); + setDescription("These Are The PIACERE Infrastructure Elements Catalog Preferences"); + + } + + @Override + protected void createFieldEditors() { + addField(new StringFieldEditor("KRIEC.host", "Endpoint Host", getFieldEditorParent())); + addField(new IntegerFieldEditor("KRIEC.port", "Endpoint Port", getFieldEditorParent())); + addField(new RadioGroupFieldEditor("KRIEC.protocol", "Protocol", 1, new String[][] {{"HTTP","http"},{"HTTPS","https"}}, getFieldEditorParent())); + + } + +} \ No newline at end of file diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECAbstractElement.java b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECAbstractElement.java new file mode 100644 index 0000000000000000000000000000000000000000..2c7b2c69bd28cabcc6c7a9b0433726e9f793e07d --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECAbstractElement.java @@ -0,0 +1,67 @@ +package eu.piacere.ide.toolIntegration.kriec.util; + +import java.util.TreeMap; + +import org.json.JSONException; +import org.json.JSONObject; + +public abstract class IECAbstractElement { + + private String serviceName; + private int serviceID; + private int serviceClass; + + private TreeMap<String, IECServiceAttribute> attributes; + + public IECAbstractElement(String name, int id, int serviceClass) { + this.setServiceName(name); + this.setServiceID(id); + this.setServiceClass(serviceClass); + this.setAttributes(new TreeMap<String, IECServiceAttribute>()); + } + + public String getServiceName() { + return serviceName; + } + + public void setServiceName(String serviceName) { + this.serviceName = serviceName; + } + + public int getServiceID() { + return serviceID; + } + + public void setServiceID(int serviceID) { + this.serviceID = serviceID; + } + + public int getServiceClass() { + return serviceClass; + } + + public void setServiceClass(int serviceClass) { + this.serviceClass = serviceClass; + } + + public TreeMap<String, IECServiceAttribute> getAttributes() { + return attributes; + } + + public void setAttributes(TreeMap<String, IECServiceAttribute> attributes) { + this.attributes = attributes; + } + + public void addAttribute(IECServiceAttribute attribute) { + this.attributes.put(attribute.getType().getName(), attribute); + } + + public static IECAbstractElement fromJSON(JSONObject representation, IECAbstractElement theElement) throws JSONException { + for(int i=0; i<representation.getJSONArray("serviceAttributeValues").length(); i++) { + theElement.addAttribute(IECServiceAttribute.fromJSON(representation.getJSONArray("serviceAttributeValues").getJSONObject(i))); + } + return theElement; + } + + +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECCatalog.java b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECCatalog.java new file mode 100644 index 0000000000000000000000000000000000000000..78ad87c72f42cdc4daf7c8b54d11aa9bd21a774b --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECCatalog.java @@ -0,0 +1,97 @@ +package eu.piacere.ide.toolIntegration.kriec.util; + +import java.util.ArrayList; + +import org.json.JSONArray; + + +public class IECCatalog { + + private IECDatabasesContainer databasesContainer; + private IECStoragesContainer storagesContainer; + private IECVirtualMachinesContainer virtualMachinesContainer; + + public IECCatalog() { + this.setDatabasesContainer(new IECDatabasesContainer()); + this.setStoragesContainer(new IECStoragesContainer()); + this.setVirtualMachinesContainer(new IECVirtualMachinesContainer()); + + } + + @SuppressWarnings({ "rawtypes", "unchecked" }) + public Object[] getContainers() { + ArrayList l = new ArrayList(); + l.add(this.getDatabasesContainer()); + l.add(this.getStoragesContainer()); + l.add(this.getVirtualMachinesContainer()); + return l.toArray(); + } + + public IECDatabasesContainer getDatabasesContainer() { + return databasesContainer; + } + + public void setDatabasesContainer(IECDatabasesContainer databasesContainer) { + this.databasesContainer = databasesContainer; + } + + public void addDatabase(IECDatabase database) { + this.getDatabasesContainer().getCatalogDatabases().put(database.getServiceName(), database); + } + public IECStoragesContainer getStoragesContainer() { + return storagesContainer; + } + + public void setStoragesContainer(IECStoragesContainer storagesContainer) { + this.storagesContainer = storagesContainer; + } + + public void addStorage(IECStorage storage) { + this.getStoragesContainer().getCatalogStorages().put(storage.getServiceName(), storage); + } + + public IECVirtualMachinesContainer getVirtualMachinesContainer() { + return virtualMachinesContainer; + } + + public void setVirtualMachinesContainer(IECVirtualMachinesContainer virtualMachinesContainer) { + this.virtualMachinesContainer = virtualMachinesContainer; + } + + public void addVirtualMachine(IECVirtualMachine virtualMachine) { + this.getVirtualMachinesContainer().getCatalogVirtualMachines().put(virtualMachine.getServiceName(), virtualMachine); + } + + public static IECCatalog fromJSON(JSONArray representation) { + + IECCatalog catalog = new IECCatalog(); + try { + for(int i=0; i<representation.length(); i++) { + int serviceClassID=representation.getJSONObject(i).getJSONObject("serviceClass").getInt("id"); + if(serviceClassID==IECDatabase.IEC_SERVICE_CLASS) { + catalog.addDatabase(IECDatabase.fromJSON(representation.getJSONObject(i))); + } + else if(serviceClassID==IECStorage.IEC_SERVICE_CLASS) { + catalog.addStorage(IECStorage.fromJSON(representation.getJSONObject(i))); + } + else if(serviceClassID==IECVirtualMachine.IEC_SERVICE_CLASS) { + catalog.addVirtualMachine(IECVirtualMachine.fromJSON(representation.getJSONObject(i))); + } + + } + } + catch (Exception e) { + e.printStackTrace(); + } + return catalog; + } + + public void reloadContent() { + IECCatalog temp = IECCatalogUtil.loadCatalogFromServer(); + this.setDatabasesContainer(temp.getDatabasesContainer()); + this.setStoragesContainer(temp.getStoragesContainer()); + this.setVirtualMachinesContainer(temp.getVirtualMachinesContainer()); + temp=null; + } + +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECCatalogUtil.java b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECCatalogUtil.java new file mode 100644 index 0000000000000000000000000000000000000000..f8ab76e71d275dc6baca50e24ab0e8607df596a3 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECCatalogUtil.java @@ -0,0 +1,79 @@ +package eu.piacere.ide.toolIntegration.kriec.util; + +import org.eclipse.ui.IViewPart; +import org.eclipse.ui.PlatformUI; +import org.json.JSONArray; +import org.restlet.Client; +import org.restlet.Context; +import org.restlet.data.Header; +import org.restlet.data.Protocol; +import org.restlet.resource.ClientResource; +import org.restlet.util.Series; + +import eu.piacere.ide.toolIntegration.kriec.viewPart.InfrastructureElementsCatalogViewPart; +import eu.piacere.piacereTool.utils.ToolCustomizationUtils; + +public class IECCatalogUtil { + + + private static String catalogAPIAuth="Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsImF1dGgiOiJST0xFX0FETUlOLFJPTEVfVVNFUiIsImV4cCI6MTY1NDI0MTQ3OH0.HXSkmE4DLyuxqNQCOxZ7SuNMUNSsA_WV9H3BdTx7W7-gbRBpKPRcQN3nGbHHMDfffkqYITWW1YeiXVckBx9RqA"; + + + + + public static InfrastructureElementsCatalogViewPart getRuntimeControllerView() { + try { + IViewPart viewPart = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView("PiacereIDEIntegration.KRIEC.PiacereIECViewPart"); + if (viewPart instanceof InfrastructureElementsCatalogViewPart) + return (InfrastructureElementsCatalogViewPart)viewPart; + } catch (Exception exception) { + return null; + } + return null; + } + + public static IECCatalog loadCatalogFromServer() { + + String protocol = ToolCustomizationUtils.getPreference(IECCatalogUtil.class, "KRIEC.protocol"); + String host = ToolCustomizationUtils.getPreference(IECCatalogUtil.class, "KRIEC.host"); + String port = ToolCustomizationUtils.getPreference(IECCatalogUtil.class, "KRIEC.port"); + String epURL = protocol+"://"+host+":"+port+"/"; + Protocol p = null; + if(protocol.equals("http")) { + p=Protocol.HTTP; + } + else { + p=Protocol.HTTPS; + } + Client client = new Client(new Context(), p); + + ClientResource service = new ClientResource(epURL); + + /*@SuppressWarnings("unchecked") + Series<Header> headers = (Series<Header>) service.getRequestAttributes().get("org.restlet.http.headers"); + if(headers!=null) { + headers.set("Authorization", catalogAPIAuth); + } + else { + headers=new Series<>(Header.class); + headers.set("Authorization", catalogAPIAuth); + } + service.getRequestAttributes().put("org.restlet.http.headers", headers); + */ + service.setNext(client); + try { + ClientResource resource = service.getChild("services/iecbackend/api/root-services/catalogue"); + if(resource.getStatus().getCode()==200){ + JSONArray respuesta= new JSONArray(resource.get().getText()); + return IECCatalog.fromJSON(respuesta); + } + } + catch (Exception e) { + e.printStackTrace(); + } + + return null; + } + + +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECDatabase.java b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECDatabase.java new file mode 100644 index 0000000000000000000000000000000000000000..2743a446354607d6596a652dc61334a1d34dafba --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECDatabase.java @@ -0,0 +1,17 @@ +package eu.piacere.ide.toolIntegration.kriec.util; + +import org.json.JSONException; +import org.json.JSONObject; + +public class IECDatabase extends IECAbstractElement{ + + public static int IEC_SERVICE_CLASS = 1; + + public IECDatabase(String name, int id) { + super(name, id, IECDatabase.IEC_SERVICE_CLASS); + } + + public static IECDatabase fromJSON(JSONObject representation) throws JSONException { + return (IECDatabase) IECAbstractElement.fromJSON(representation, new IECDatabase(representation.getString("serviceName"), representation.getInt("id"))); + } +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECDatabasesContainer.java b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECDatabasesContainer.java new file mode 100644 index 0000000000000000000000000000000000000000..b012e4a9556f4072209e72e5357368248333404d --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECDatabasesContainer.java @@ -0,0 +1,21 @@ +package eu.piacere.ide.toolIntegration.kriec.util; + +import java.util.TreeMap; + +public class IECDatabasesContainer { + + private TreeMap<String, IECDatabase> catalogDatabases; + + public IECDatabasesContainer() { + this.setCatalogDatabases(new TreeMap<String, IECDatabase>()); + } + + public TreeMap<String, IECDatabase> getCatalogDatabases() { + return catalogDatabases; + } + + public void setCatalogDatabases(TreeMap<String, IECDatabase> catalogDatabases) { + this.catalogDatabases = catalogDatabases; + } + +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECServiceAttribute.java b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECServiceAttribute.java new file mode 100644 index 0000000000000000000000000000000000000000..01af67720ab83b4de9849ade1d45c6e9fc4bcaca --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECServiceAttribute.java @@ -0,0 +1,56 @@ +package eu.piacere.ide.toolIntegration.kriec.util; + +import org.json.JSONException; +import org.json.JSONObject; + +public class IECServiceAttribute { + private int id; + private String serviceAttributeValue; + private String unitValue; + + private IECServiceAttributeType type; + + public IECServiceAttribute(int id, String value, String unitValue) { + this.setId(id); + this.setServiceAttributeValue(value); + this.setUnitValue(unitValue); + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getServiceAttributeValue() { + return serviceAttributeValue; + } + + public void setServiceAttributeValue(String serviceAttributeValue) { + this.serviceAttributeValue = serviceAttributeValue; + } + + public String getUnitValue() { + return unitValue; + } + + public void setUnitValue(String unitValue) { + this.unitValue = unitValue; + } + + public IECServiceAttributeType getType() { + return type; + } + + public void setType(IECServiceAttributeType type) { + this.type = type; + } + + public static IECServiceAttribute fromJSON(JSONObject representation) throws JSONException { + IECServiceAttribute res = new IECServiceAttribute(representation.getInt("id"), representation.getString("serviceAttributeValue"), representation.getString("unitValue")); + res.setType(IECServiceAttributeType.fromJSON(representation.getJSONObject("serviceAttributeType"))); + return res; + } +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECServiceAttributeType.java b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECServiceAttributeType.java new file mode 100644 index 0000000000000000000000000000000000000000..fd1bbaee89da7e6ba1227fce8a470255fc92f008 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECServiceAttributeType.java @@ -0,0 +1,126 @@ +package eu.piacere.ide.toolIntegration.kriec.util; + +import org.json.JSONException; +import org.json.JSONObject; + +public class IECServiceAttributeType { + + private int id; + private String name; + private String nfrName; + private boolean isEnumeration; + private boolean isForm; + private boolean isCommon; + private boolean isFunctionalRequirement; + private String units; + private String unitFactor; + private String unitRule; + private String evalRule; + + public IECServiceAttributeType(int id, String name) { + this.setId(id); + this.setName(name); + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getNfrName() { + return nfrName; + } + + public void setNfrName(String nfrName) { + this.nfrName = nfrName; + } + + public boolean isEnumeration() { + return isEnumeration; + } + + public void setEnumeration(boolean isEnumeration) { + this.isEnumeration = isEnumeration; + } + + public boolean isForm() { + return isForm; + } + + public void setForm(boolean isForm) { + this.isForm = isForm; + } + + public boolean isCommon() { + return isCommon; + } + + public void setCommon(boolean isCommon) { + this.isCommon = isCommon; + } + + public boolean isFunctionalRequirement() { + return isFunctionalRequirement; + } + + public void setFunctionalRequirement(boolean isFunctionalRequirement) { + this.isFunctionalRequirement = isFunctionalRequirement; + } + + public String getUnits() { + return units; + } + + public void setUnits(String units) { + this.units = units; + } + + public String getUnitFactor() { + return unitFactor; + } + + public void setUnitFactor(String unitFactor) { + this.unitFactor = unitFactor; + } + + public String getUnitRule() { + return unitRule; + } + + public void setUnitRule(String unitRule) { + this.unitRule = unitRule; + } + + public String getEvalRule() { + return evalRule; + } + + public void setEvalRule(String evalRule) { + this.evalRule = evalRule; + } + + public static IECServiceAttributeType fromJSON(JSONObject representation) throws JSONException { + IECServiceAttributeType res = new IECServiceAttributeType(representation.getInt("id"), representation.getString("name")); + res.setNfrName(representation.getString("nfrName")); + res.setEnumeration(representation.getBoolean("isEnumeration")); + res.setForm(representation.getBoolean("isForm")); + res.setCommon(representation.getBoolean("isCommon")); + res.setFunctionalRequirement(representation.getBoolean("isFunctionalRequirement")); + res.setUnits(representation.getString("units")); + res.setUnitFactor(representation.getString("unitFactor")); + res.setUnitRule(representation.getString("unitRule")); + res.setEvalRule(representation.getString("evalRule")); + return res; + } +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECStorage.java b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECStorage.java new file mode 100644 index 0000000000000000000000000000000000000000..ce5ab07e88d24057f8bb375270b3737a90e1f09d --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECStorage.java @@ -0,0 +1,18 @@ +package eu.piacere.ide.toolIntegration.kriec.util; + +import org.json.JSONException; +import org.json.JSONObject; + +public class IECStorage extends IECAbstractElement{ + + public static int IEC_SERVICE_CLASS = 2; + + public IECStorage(String name, int id) { + super(name, id, IECStorage.IEC_SERVICE_CLASS); + } + + public static IECStorage fromJSON(JSONObject representation) throws JSONException { + return (IECStorage) IECAbstractElement.fromJSON(representation, new IECStorage(representation.getString("serviceName"), representation.getInt("id"))); + } + +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECStoragesContainer.java b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECStoragesContainer.java new file mode 100644 index 0000000000000000000000000000000000000000..3df20660b15ec99da10b94d2116fde4e8b4c1921 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECStoragesContainer.java @@ -0,0 +1,20 @@ +package eu.piacere.ide.toolIntegration.kriec.util; + +import java.util.TreeMap; + +public class IECStoragesContainer { + + private TreeMap<String, IECStorage> catalogStorages; + + public IECStoragesContainer() { + this.setCatalogStorages(new TreeMap<String, IECStorage>()); + } + + public TreeMap<String, IECStorage> getCatalogStorages() { + return catalogStorages; + } + + public void setCatalogStorages(TreeMap<String, IECStorage> catalogStorages) { + this.catalogStorages = catalogStorages; + } +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECVirtualMachine.java b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECVirtualMachine.java new file mode 100644 index 0000000000000000000000000000000000000000..82822bb07bcb75f8da106a85019149986023ed8f --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECVirtualMachine.java @@ -0,0 +1,18 @@ +package eu.piacere.ide.toolIntegration.kriec.util; + +import org.json.JSONException; +import org.json.JSONObject; + +public class IECVirtualMachine extends IECAbstractElement{ + + public static int IEC_SERVICE_CLASS = 3; + + public IECVirtualMachine(String name, int id) { + super(name, id, IECVirtualMachine.IEC_SERVICE_CLASS); + } + + public static IECVirtualMachine fromJSON(JSONObject representation) throws JSONException { + return (IECVirtualMachine) IECAbstractElement.fromJSON(representation, new IECVirtualMachine(representation.getString("serviceName"), representation.getInt("id"))); + } + +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECVirtualMachinesContainer.java b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECVirtualMachinesContainer.java new file mode 100644 index 0000000000000000000000000000000000000000..135247e2de1d21d588258f891a13b9e3fe482287 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECVirtualMachinesContainer.java @@ -0,0 +1,20 @@ +package eu.piacere.ide.toolIntegration.kriec.util; + +import java.util.TreeMap; + +public class IECVirtualMachinesContainer { + + private TreeMap<String, IECVirtualMachine> catalogVirtualMachines; + + public IECVirtualMachinesContainer() { + this.setCatalogVirtualMachines(new TreeMap<String, IECVirtualMachine>()); + } + + public TreeMap<String, IECVirtualMachine> getCatalogVirtualMachines() { + return catalogVirtualMachines; + } + + public void setCatalogVirtualMachines(TreeMap<String, IECVirtualMachine> catalogVirtualMachines) { + this.catalogVirtualMachines = catalogVirtualMachines; + } +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/InfrastructureElementsCatalogViewPart.java b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/InfrastructureElementsCatalogViewPart.java new file mode 100644 index 0000000000000000000000000000000000000000..da93998dff2200a41af97b8a55adf44047aeea1e --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/InfrastructureElementsCatalogViewPart.java @@ -0,0 +1,143 @@ +package eu.piacere.ide.toolIntegration.kriec.viewPart; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; +import org.eclipse.jface.resource.FontDescriptor; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.jface.resource.JFaceResources; +import org.eclipse.jface.resource.LocalResourceManager; +import org.eclipse.jface.resource.ResourceManager; +import org.eclipse.jface.viewers.IBaseLabelProvider; +import org.eclipse.jface.viewers.IContentProvider; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Menu; +import org.eclipse.ui.IMemento; +import org.eclipse.ui.IViewSite; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.actions.ActionGroup; +import org.eclipse.ui.navigator.CommonNavigator; +import org.eclipse.ui.navigator.CommonViewer; +import org.eclipse.ui.plugin.AbstractUIPlugin; + +import eu.piacere.ide.toolIntegration.kriec.util.IECCatalog; +import eu.piacere.ide.toolIntegration.kriec.viewPart.actions.CollapseAllAction; +import eu.piacere.ide.toolIntegration.kriec.viewPart.actions.ExpandAllAction; +import eu.piacere.ide.toolIntegration.kriec.viewPart.actions.InfrastructureElementsCatalogViewActionGroup; +import eu.piacere.ide.toolIntegration.kriec.viewPart.actions.RefreshAction; +import eu.piacere.ide.toolIntegration.kriec.viewPart.providers.IECContentProvider; +import eu.piacere.ide.toolIntegration.kriec.viewPart.providers.IECLabelProvider; + + +public class InfrastructureElementsCatalogViewPart extends CommonNavigator implements IMenuListener { + + private static IECCatalog catalog = new IECCatalog(); + + public IECCatalog getIECCatalog() { + return catalog; + } + + + @Override + public void createPartControl(Composite parent) { + super.createPartControl(parent); + + if (getCommonViewer() != null) { + + getCommonViewer().setContentProvider((IContentProvider)new IECContentProvider((AdapterFactory)new ResourceItemProviderAdapterFactory())); + getCommonViewer().setInput(getIECCatalog()); + getCommonViewer().setLabelProvider((IBaseLabelProvider)new IECLabelProvider()); + ResourceManager resourceManager = new LocalResourceManager(JFaceResources.getResources(), parent); + getCommonViewer().getTree().setFont(resourceManager.createFont(FontDescriptor.createFrom(getCommonViewer().getTree().getFont()).setHeight(14))); + getCommonViewer().setSorter(null); + getCommonViewer().addSelectionChangedListener(new SelectionChangedListener()); + createContextMenuForViewer(getCommonViewer()); + getIECCatalog().reloadContent(); + refreshViewer(); + } + } + + public void init(IViewSite aSite, IMemento aMemento) throws PartInitException { + super.init(aSite, aMemento); + } + + + + protected CommonViewer createCommonViewerObject(Composite aParent) { + return new CommonViewer(getViewSite().getId(), aParent, 768); + } + + private class SelectionChangedListener implements ISelectionChangedListener { + @SuppressWarnings("unused") + public void selectionChanged(SelectionChangedEvent event) { + if (event.getSelection() instanceof StructuredSelection) { + Object selected = ((StructuredSelection)event.getSelection()).getFirstElement(); + } + } + } + + protected ActionGroup createCommonActionGroup() { + return (ActionGroup)new InfrastructureElementsCatalogViewActionGroup(getCommonViewer()); + } + + public void refreshViewer() { + CommonViewer viewer = getCommonViewer(); + if (viewer != null && !viewer.getTree().isDisposed()) + viewer.refresh(); + } + + public void saveState(IMemento aMemento) { + super.saveState(aMemento); + } + + private void createContextMenuForViewer(CommonViewer viewer) { + MenuManager contextMenu = new MenuManager("Popup", getImageDescriptor("icons/FadaModelRepositoriesView.png"), null); + contextMenu.setRemoveAllWhenShown(true); + contextMenu.addMenuListener(this); + + Menu menu = contextMenu.createContextMenu(viewer.getControl()); + viewer.getControl().setMenu(menu); + this.getSite().registerContextMenu(contextMenu, (ISelectionProvider)viewer); + } + + public void menuAboutToShow(IMenuManager manager) { + ISelection selection = getCommonViewer().getSelection(); + if (selection instanceof StructuredSelection) { + StructuredSelection sel = (StructuredSelection)selection; + Object selectedObject = sel.getFirstElement(); + if (selectedObject instanceof IECCatalog) { + + RefreshAction ra = new RefreshAction(); + ra.setText("Refresh All"); + ra.setImageDescriptor(getImageDescriptor("icons/refresh.gif")); + + ExpandAllAction eaa = new ExpandAllAction(getCommonViewer()); + eaa.setText("Expand All"); + eaa.setImageDescriptor(getImageDescriptor("icons/expandAll.gif")); + + CollapseAllAction caa = new CollapseAllAction(getCommonViewer()); + caa.setText("Collapse All"); + caa.setImageDescriptor(getImageDescriptor("icons/collapseAll.gif")); + + manager.add((IAction)ra); + manager.add(new Separator("additions")); + manager.add((IAction)eaa); + manager.add((IAction)caa); + } + } + } + + protected final ImageDescriptor getImageDescriptor(String relativePath) { + return AbstractUIPlugin.imageDescriptorFromPlugin("PiacereIDEIntegration.KRIEC", relativePath); + } + +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/actions/CollapseAllAction.java b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/actions/CollapseAllAction.java new file mode 100644 index 0000000000000000000000000000000000000000..c75a2aad2b2c93ad6686c288295a1ec154e3773c --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/actions/CollapseAllAction.java @@ -0,0 +1,24 @@ +package eu.piacere.ide.toolIntegration.kriec.viewPart.actions; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.ui.IWorkbenchCommandConstants; +import org.eclipse.ui.navigator.CommonViewer; + +public class CollapseAllAction extends Action implements IAction +{ + private final CommonViewer commonViewer; + + public CollapseAllAction(CommonViewer aViewer) { + super("Collapse all"); + setToolTipText("Collapse all"); + setActionDefinitionId(IWorkbenchCommandConstants.NAVIGATE_COLLAPSE_ALL); + this.commonViewer = aViewer; + } + + public void run() { + if (this.commonViewer != null) + this.commonViewer.collapseAll(); + } +} + diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/actions/ExpandAllAction.java b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/actions/ExpandAllAction.java new file mode 100644 index 0000000000000000000000000000000000000000..f5c102752b00e3706d176307bb80b3900fde5c8f --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/actions/ExpandAllAction.java @@ -0,0 +1,25 @@ +package eu.piacere.ide.toolIntegration.kriec.viewPart.actions; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.ui.IWorkbenchCommandConstants; +import org.eclipse.ui.navigator.CommonViewer; + +public class ExpandAllAction extends Action implements IAction +{ + private final CommonViewer commonViewer; + + public ExpandAllAction(CommonViewer aViewer) { + super("Expand All"); + setToolTipText("Expand All"); + setActionDefinitionId(IWorkbenchCommandConstants.NAVIGATE_EXPAND_ALL); + + this.commonViewer = aViewer; + } + + public void run() { + if (this.commonViewer != null) + this.commonViewer.expandAll(); + } +} + diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/actions/InfrastructureElementsCatalogViewActionGroup.java b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/actions/InfrastructureElementsCatalogViewActionGroup.java new file mode 100644 index 0000000000000000000000000000000000000000..69af78d9a5ce205747ca88def74c52274dcab6ff --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/actions/InfrastructureElementsCatalogViewActionGroup.java @@ -0,0 +1,53 @@ +package eu.piacere.ide.toolIntegration.kriec.viewPart.actions; + +import org.eclipse.jface.action.Separator; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.ui.IActionBars; +import org.eclipse.ui.actions.ActionGroup; +import org.eclipse.ui.navigator.CommonViewer; +import org.eclipse.ui.plugin.AbstractUIPlugin; + + +public class InfrastructureElementsCatalogViewActionGroup extends ActionGroup +{ + private final CommonViewer commonViewer; + + public InfrastructureElementsCatalogViewActionGroup(CommonViewer viewer) { + this.commonViewer = viewer; + } + + protected final ImageDescriptor getImageDescriptor(String relativePath) { + return AbstractUIPlugin.imageDescriptorFromPlugin("PiacereIDEIntegration.KRIEC", relativePath); + } + + public void fillActionBars(IActionBars actionBars) { + + RefreshAction ra = new RefreshAction(); + ra.setText("Refresh All"); + ra.setImageDescriptor(getImageDescriptor("icons/refresh.gif")); + + /*CreateDeploymentAction cda = new CreateDeploymentAction(); + cda.setText("Create Deployment"); + cda.setImageDescriptor(getImageDescriptor("icons/addRepository.png"));*/ + + CollapseAllAction caa = new CollapseAllAction(this.commonViewer); + caa.setText("Collapse All"); + caa.setImageDescriptor(getImageDescriptor("icons/collapseAll.gif")); + + ExpandAllAction eaa = new ExpandAllAction(this.commonViewer); + eaa.setText("Expand All"); + eaa.setImageDescriptor(getImageDescriptor("icons/expandAll.gif")); + + actionBars.getMenuManager().add(ra); + /*actionBars.getMenuManager().add(new Separator("additions")); + actionBars.getMenuManager().add(cda);*/ + actionBars.getMenuManager().add(new Separator("additions")); + actionBars.getMenuManager().add(caa); + actionBars.getMenuManager().add(eaa); + } +} + + + + + diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/actions/RefreshAction.java b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/actions/RefreshAction.java new file mode 100644 index 0000000000000000000000000000000000000000..98c73c2b02c29c3b8b4de56102e0bf2d2afa72d0 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/actions/RefreshAction.java @@ -0,0 +1,19 @@ +package eu.piacere.ide.toolIntegration.kriec.viewPart.actions; + +import org.eclipse.jface.action.Action; + +import eu.piacere.ide.toolIntegration.kriec.util.IECCatalogUtil; +import eu.piacere.ide.toolIntegration.kriec.viewPart.InfrastructureElementsCatalogViewPart; + + +public class RefreshAction extends Action +{ + public void run() { + super.run(); + InfrastructureElementsCatalogViewPart prcView = IECCatalogUtil.getRuntimeControllerView(); + if (prcView != null) { + prcView.getIECCatalog().reloadContent(); + prcView.refreshViewer(); + } + } +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/properties/IECServiceAttributeAdapterFactory.java b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/properties/IECServiceAttributeAdapterFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..7477547c240fd4a97bec06e43a39d558839256ac --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/properties/IECServiceAttributeAdapterFactory.java @@ -0,0 +1,25 @@ +package eu.piacere.ide.toolIntegration.kriec.viewPart.properties; + +import org.eclipse.core.runtime.IAdapterFactory; +import org.eclipse.ui.views.properties.IPropertySource; + +import eu.piacere.ide.toolIntegration.kriec.util.IECServiceAttribute; + +public class IECServiceAttributeAdapterFactory implements IAdapterFactory { + + private static final Class<?>[] adapterList = new Class<?>[] { IPropertySource.class }; + + @Override + public <T> T getAdapter(Object adaptableObject, Class<T> adapterType) { + if (adapterType== IPropertySource.class && adaptableObject instanceof IECServiceAttribute){ + return adapterType.cast(new IECServiceAttributePropertySource((IECServiceAttribute) adaptableObject)); + } + return null; + } + + @Override + public Class<?>[] getAdapterList() { + return adapterList; + } + +} diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/properties/IECServiceAttributePropertySource.java b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/properties/IECServiceAttributePropertySource.java new file mode 100644 index 0000000000000000000000000000000000000000..32ef319e235352ea9bd066a1fcb3b7bcafe8e203 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/properties/IECServiceAttributePropertySource.java @@ -0,0 +1,100 @@ +package eu.piacere.ide.toolIntegration.kriec.viewPart.properties; + +import org.eclipse.ui.views.properties.IPropertyDescriptor; +import org.eclipse.ui.views.properties.IPropertySource; +import org.eclipse.ui.views.properties.PropertyDescriptor; + +import eu.piacere.ide.toolIntegration.kriec.util.IECServiceAttribute; + +public class IECServiceAttributePropertySource implements IPropertySource { + + private final IECServiceAttribute serviceAttribute; + + public IECServiceAttributePropertySource(IECServiceAttribute serviceAttribute) { + this.serviceAttribute = serviceAttribute; + } + + @Override + public boolean isPropertySet(Object id) { + return false; + } + + @Override + public Object getEditableValue() { + return this; + } + + @Override + public IPropertyDescriptor[] getPropertyDescriptors() { + + return new IPropertyDescriptor[] { + new PropertyDescriptor("id", "ID"), + new PropertyDescriptor("name", "Name"), + new PropertyDescriptor("value", "Value"), + new PropertyDescriptor("unitValue", "Unit Value"), + new PropertyDescriptor("evalRule", "Eval Rule"), + new PropertyDescriptor("nfrName", "NFR Name"), + new PropertyDescriptor("unitFactor", "Unit Factor"), + new PropertyDescriptor("unitRule", "Unit Rule"), + new PropertyDescriptor("units", "Units"), + new PropertyDescriptor("isCommon", "Is Common"), + new PropertyDescriptor("isEnumeration", "Is Enumeration"), + new PropertyDescriptor("isForm", "Is Form"), + new PropertyDescriptor("isFunctionalRequirement", "Is Functional Requirement")}; + } + + @Override + public Object getPropertyValue(Object id) { + if (id.equals("id")) { + return serviceAttribute.getId(); + } + else if (id.equals("name")) { + return serviceAttribute.getType().getName(); + } + else if (id.equals("value")) { + return serviceAttribute.getServiceAttributeValue(); + } + else if (id.equals("unitValue")) { + return serviceAttribute.getUnitValue(); + } + else if (id.equals("evalRule")) { + return serviceAttribute.getType().getEvalRule(); + } + else if (id.equals("nfrName")) { + return serviceAttribute.getType().getNfrName(); + } + else if (id.equals("unitFactor")) { + return serviceAttribute.getType().getUnitFactor(); + } + else if (id.equals("unitRule")) { + return serviceAttribute.getType().getUnitRule(); + } + else if (id.equals("units")) { + return serviceAttribute.getType().getUnits(); + } + else if (id.equals("isCommon")) { + return serviceAttribute.getType().isCommon(); + } + else if (id.equals("isEnumeration")) { + return serviceAttribute.getType().isEnumeration(); + } + else if (id.equals("isForm")) { + return serviceAttribute.getType().isForm(); + } + else if (id.equals("isFunctionalRequirement")) { + return serviceAttribute.getType().isFunctionalRequirement(); + } + return null; + } + + @Override + public void resetPropertyValue(Object id) { + + } + + @Override + public void setPropertyValue(Object id, Object value) { + + } + +} \ No newline at end of file diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/providers/IECContentProvider.java b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/providers/IECContentProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..d7ce05e85c62a5a33ac79ca1bc01dfe73a20dce5 --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/providers/IECContentProvider.java @@ -0,0 +1,129 @@ +package eu.piacere.ide.toolIntegration.kriec.viewPart.providers; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider; + +import eu.piacere.ide.toolIntegration.kriec.util.IECCatalog; +import eu.piacere.ide.toolIntegration.kriec.util.IECDatabase; +import eu.piacere.ide.toolIntegration.kriec.util.IECDatabasesContainer; +import eu.piacere.ide.toolIntegration.kriec.util.IECServiceAttribute; +import eu.piacere.ide.toolIntegration.kriec.util.IECStorage; +import eu.piacere.ide.toolIntegration.kriec.util.IECStoragesContainer; +import eu.piacere.ide.toolIntegration.kriec.util.IECVirtualMachine; +import eu.piacere.ide.toolIntegration.kriec.util.IECVirtualMachinesContainer; + + +public class IECContentProvider extends AdapterFactoryContentProvider +{ + public IECContentProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + + } + + + public Object[] getElements(Object object) { + if (object instanceof IECCatalog) { + return ((IECCatalog)object).getContainers(); + } + + else if (object instanceof IECDatabasesContainer) { + return ((IECDatabasesContainer)object).getCatalogDatabases().values().toArray(); + } + + else if (object instanceof IECStoragesContainer) { + return ((IECStoragesContainer)object).getCatalogStorages().values().toArray(); + } + + else if (object instanceof IECVirtualMachinesContainer) { + return ((IECVirtualMachinesContainer)object).getCatalogVirtualMachines().values().toArray(); + } + + else if (object instanceof IECDatabase) { + return ((IECDatabase)object).getAttributes().values().toArray(); + } + + else if (object instanceof IECStorage) { + return ((IECStorage)object).getAttributes().values().toArray(); + } + + else if (object instanceof IECVirtualMachine) { + return ((IECVirtualMachine)object).getAttributes().values().toArray(); + } + + return super.getElements(object); + } + + + + public boolean hasChildren(Object object) { + if (object instanceof IECCatalog) { + return true; + } + + else if (object instanceof IECDatabasesContainer) { + return ((IECDatabasesContainer)object).getCatalogDatabases().values().size()>0; + } + + else if (object instanceof IECStoragesContainer) { + return ((IECStoragesContainer)object).getCatalogStorages().values().size()>0; + } + + else if (object instanceof IECVirtualMachinesContainer) { + return ((IECVirtualMachinesContainer)object).getCatalogVirtualMachines().values().size()>0; + } + + else if (object instanceof IECDatabase) { + return ((IECDatabase)object).getAttributes().size()>0; + } + + else if (object instanceof IECStorage) { + return ((IECStorage)object).getAttributes().size()>0; + } + + else if (object instanceof IECVirtualMachine) { + return ((IECVirtualMachine)object).getAttributes().size()>0; + } + + else if (object instanceof IECServiceAttribute) { + return false; + } + + return super.hasChildren(object); + } + + + + public Object[] getChildren(Object object) { + if (object instanceof IECCatalog) { + ((IECCatalog)object).getContainers(); + } + + else if (object instanceof IECDatabasesContainer) { + return ((IECDatabasesContainer)object).getCatalogDatabases().values().toArray(); + } + + else if (object instanceof IECStoragesContainer) { + return ((IECStoragesContainer)object).getCatalogStorages().values().toArray(); + } + + else if (object instanceof IECVirtualMachinesContainer) { + return ((IECVirtualMachinesContainer)object).getCatalogVirtualMachines().values().toArray(); + } + + else if (object instanceof IECDatabase) { + return ((IECDatabase)object).getAttributes().values().toArray(); + } + + else if (object instanceof IECStorage) { + return ((IECStorage)object).getAttributes().values().toArray(); + } + + else if (object instanceof IECVirtualMachine) { + return ((IECVirtualMachine)object).getAttributes().values().toArray(); + } + + return null; + } + +} + diff --git a/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/providers/IECLabelProvider.java b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/providers/IECLabelProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..e4ff06ad9bb0f3e5c4f877b1cf2406afc337b0ed --- /dev/null +++ b/Source Code/V2.0/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/providers/IECLabelProvider.java @@ -0,0 +1,92 @@ +package eu.piacere.ide.toolIntegration.kriec.viewPart.providers; + +import java.io.IOException; + +import org.eclipse.core.runtime.FileLocator; +import org.eclipse.core.runtime.Platform; +import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.swt.graphics.Device; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.widgets.Display; + +import eu.piacere.ide.toolIntegration.kriec.util.IECDatabase; +import eu.piacere.ide.toolIntegration.kriec.util.IECDatabasesContainer; +import eu.piacere.ide.toolIntegration.kriec.util.IECServiceAttribute; +import eu.piacere.ide.toolIntegration.kriec.util.IECStorage; +import eu.piacere.ide.toolIntegration.kriec.util.IECStoragesContainer; +import eu.piacere.ide.toolIntegration.kriec.util.IECVirtualMachine; +import eu.piacere.ide.toolIntegration.kriec.util.IECVirtualMachinesContainer; + +public class IECLabelProvider extends LabelProvider +{ + + public String getText(Object element) { + if (element instanceof IECDatabasesContainer) { + return "Databases"; + } + else if (element instanceof IECStoragesContainer) { + + return "Storages"; + } + else if (element instanceof IECVirtualMachinesContainer) { + return "Virtual Machines"; + } + else if (element instanceof IECDatabase) { + return ((IECDatabase)element).getServiceName(); + } + else if (element instanceof IECStorage) { + return ((IECStorage)element).getServiceName(); + } + else if (element instanceof IECVirtualMachine) { + return ((IECVirtualMachine)element).getServiceName(); + } + else if (element instanceof IECServiceAttribute) { + return ((IECServiceAttribute)element).getType().getName()+": "+((IECServiceAttribute)element).getServiceAttributeValue(); + } + return super.getText(element); + } + + public Image getImage(Object element) { + try { + String imagePath = FileLocator.toFileURL(Platform.getBundle("PiacereIDEIntegration.KRIEC").getResource("icons/")).getPath(); + + if (element instanceof IECDatabasesContainer) { + Image image = new Image((Device)Display.getCurrent(), String.valueOf(imagePath) + "bundle.png"); + return image; + } + else if (element instanceof IECStoragesContainer) { + Image image = new Image((Device)Display.getCurrent(), String.valueOf(imagePath) + "bundle.png"); + return image; + } + else if (element instanceof IECVirtualMachinesContainer) { + Image image = new Image((Device)Display.getCurrent(), String.valueOf(imagePath) + "bundle.png"); + return image; + } + else if (element instanceof IECDatabase) { + Image image = new Image((Device)Display.getCurrent(), String.valueOf(imagePath) + "repository.png"); + return image; + } + else if (element instanceof IECStorage) { + Image image = new Image((Device)Display.getCurrent(), String.valueOf(imagePath) + "jar.png"); + return image; + } + else if (element instanceof IECVirtualMachine) { + Image image = new Image((Device)Display.getCurrent(), String.valueOf(imagePath) + "ref.png"); + return image; + } + else if (element instanceof IECServiceAttribute) { + Image image = new Image((Device)Display.getCurrent(), String.valueOf(imagePath) + "Task.gif"); + return image; + } + } catch (IOException iOException) { + return null; + } + return super.getImage(element); + } + +} + + + + + diff --git a/Source Code/V2.0/PiacereToolCustomization/.classpath b/Source Code/V2.0/PiacereToolCustomization/.classpath new file mode 100755 index 0000000000000000000000000000000000000000..1fa3e6803d3b22e055b735220510616c4e35f2fc --- /dev/null +++ b/Source Code/V2.0/PiacereToolCustomization/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="src" path="src"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/Source Code/V2.0/PiacereToolCustomization/.project b/Source Code/V2.0/PiacereToolCustomization/.project new file mode 100755 index 0000000000000000000000000000000000000000..f8c1892e4ab3a4a3df9dcb7c8b2d9657268a676a --- /dev/null +++ b/Source Code/V2.0/PiacereToolCustomization/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>PiacereToolCustomization</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/Source Code/V2.0/PiacereToolCustomization/FAdAIcons/ConvertToFAdAProject.png b/Source Code/V2.0/PiacereToolCustomization/FAdAIcons/ConvertToFAdAProject.png new file mode 100644 index 0000000000000000000000000000000000000000..ce012c20e3848f2d0c8a2f08c79ed39ce929e206 Binary files /dev/null and b/Source Code/V2.0/PiacereToolCustomization/FAdAIcons/ConvertToFAdAProject.png differ diff --git a/Source Code/V2.0/PiacereToolCustomization/FAdAIcons/ConvertToFAdAProject_old.png b/Source Code/V2.0/PiacereToolCustomization/FAdAIcons/ConvertToFAdAProject_old.png new file mode 100644 index 0000000000000000000000000000000000000000..56108deeb219042fc8da6b8e1ec22cbfe1db1d3d Binary files /dev/null and b/Source Code/V2.0/PiacereToolCustomization/FAdAIcons/ConvertToFAdAProject_old.png differ diff --git a/Source Code/V2.0/PiacereToolCustomization/FAdAIcons/FAdAIcon_16.png b/Source Code/V2.0/PiacereToolCustomization/FAdAIcons/FAdAIcon_16.png new file mode 100644 index 0000000000000000000000000000000000000000..b4078db8573c6315207b6362fbc752336dfff5c4 Binary files /dev/null and b/Source Code/V2.0/PiacereToolCustomization/FAdAIcons/FAdAIcon_16.png differ diff --git a/Source Code/V2.0/PiacereToolCustomization/FAdAIcons/FAdAIcon_24.png b/Source Code/V2.0/PiacereToolCustomization/FAdAIcons/FAdAIcon_24.png new file mode 100644 index 0000000000000000000000000000000000000000..f4259625230e2b11b98a14aa6b75b52edad25dd8 Binary files /dev/null and b/Source Code/V2.0/PiacereToolCustomization/FAdAIcons/FAdAIcon_24.png differ diff --git a/Source Code/V2.0/PiacereToolCustomization/FAdAIcons/FAdAIcon_32.png b/Source Code/V2.0/PiacereToolCustomization/FAdAIcons/FAdAIcon_32.png new file mode 100644 index 0000000000000000000000000000000000000000..2672c3891b01f3ce5be893b404d727263244cd6d Binary files /dev/null and b/Source Code/V2.0/PiacereToolCustomization/FAdAIcons/FAdAIcon_32.png differ diff --git a/Source Code/V2.0/PiacereToolCustomization/FAdAIcons/FAdAIcon_8.png b/Source Code/V2.0/PiacereToolCustomization/FAdAIcons/FAdAIcon_8.png new file mode 100644 index 0000000000000000000000000000000000000000..41fc8b997c629493aec4979e02aa5bfd59a37204 Binary files /dev/null and b/Source Code/V2.0/PiacereToolCustomization/FAdAIcons/FAdAIcon_8.png differ diff --git a/Source Code/V2.0/PiacereToolCustomization/FAdAIcons/old/FAdAIcon_16.png b/Source Code/V2.0/PiacereToolCustomization/FAdAIcons/old/FAdAIcon_16.png new file mode 100644 index 0000000000000000000000000000000000000000..08e6b6036ad0e360db3020dde7df28a87d04a84a Binary files /dev/null and b/Source Code/V2.0/PiacereToolCustomization/FAdAIcons/old/FAdAIcon_16.png differ diff --git a/Source Code/V2.0/PiacereToolCustomization/FAdAIcons/old/FAdAIcon_24.png b/Source Code/V2.0/PiacereToolCustomization/FAdAIcons/old/FAdAIcon_24.png new file mode 100644 index 0000000000000000000000000000000000000000..07bd601d63b754c1e89e11c9496a2ee882105fef Binary files /dev/null and b/Source Code/V2.0/PiacereToolCustomization/FAdAIcons/old/FAdAIcon_24.png differ diff --git a/Source Code/V2.0/PiacereToolCustomization/FAdAIcons/old/FAdAIcon_32.png b/Source Code/V2.0/PiacereToolCustomization/FAdAIcons/old/FAdAIcon_32.png new file mode 100644 index 0000000000000000000000000000000000000000..c0813f81135515bc5b9a21770152855ecf1e45b6 Binary files /dev/null and b/Source Code/V2.0/PiacereToolCustomization/FAdAIcons/old/FAdAIcon_32.png differ diff --git a/Source Code/V2.0/PiacereToolCustomization/FAdAIcons/old/FAdAIcon_8.png b/Source Code/V2.0/PiacereToolCustomization/FAdAIcons/old/FAdAIcon_8.png new file mode 100644 index 0000000000000000000000000000000000000000..934b971eb6e91c6f3efd8e0b9b441ba741dbeb85 Binary files /dev/null and b/Source Code/V2.0/PiacereToolCustomization/FAdAIcons/old/FAdAIcon_8.png differ diff --git a/Source Code/V2.0/PiacereToolCustomization/META-INF/MANIFEST.MF b/Source Code/V2.0/PiacereToolCustomization/META-INF/MANIFEST.MF new file mode 100755 index 0000000000000000000000000000000000000000..81fbc68a202aceaffa32c73d8fd9fab1a9b3d938 --- /dev/null +++ b/Source Code/V2.0/PiacereToolCustomization/META-INF/MANIFEST.MF @@ -0,0 +1,32 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: PiacereToolCustomization +Bundle-SymbolicName: PiacereToolCustomization;singleton:=true +Bundle-Version: 1.0.0.qualifier +Bundle-Vendor: TaTAmI +Import-Package: eu.piacere.doml, + eu.piacere.doml.generator, + eu.piacere.doml.grammar.ui.internal, + eu.piacere.doml.ide.contentassist.antlr, + eu.piacere.doml.ide.contentassist.antlr.internal, + eu.piacere.doml.parser.antlr, + eu.piacere.doml.parser.antlr.internal, + eu.piacere.doml.scoping, + eu.piacere.doml.serializer, + eu.piacere.doml.services, + eu.piacere.doml.ui.contentassist, + eu.piacere.doml.ui.quickfix, + eu.piacere.doml.validation, + org.eclipse.core.commands, + org.eclipse.core.resources, + org.eclipse.core.runtime, + org.eclipse.jface.viewers, + org.eclipse.jface.wizard, + org.eclipse.swt.graphics, + org.eclipse.ui, + org.eclipse.ui.dialogs, + org.eclipse.ui.handlers +Export-Package: eu.piacere.piacereTool.piacereProjectNature +Require-Bundle: eu.piacere.doml.editor, + eu.piacere.doml, + eu.piacere.doml.edit diff --git a/Source Code/V2.0/PiacereToolCustomization/PiacereIcons/PiacereIcon_128x128.png b/Source Code/V2.0/PiacereToolCustomization/PiacereIcons/PiacereIcon_128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..515cef7760b8362f3c33ae438a648256dae149b0 Binary files /dev/null and b/Source Code/V2.0/PiacereToolCustomization/PiacereIcons/PiacereIcon_128x128.png differ diff --git a/Source Code/V2.0/PiacereToolCustomization/PiacereIcons/PiacereIcon_16x16.png b/Source Code/V2.0/PiacereToolCustomization/PiacereIcons/PiacereIcon_16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..444de54d6cfe2958fac1bbb89dd8619b4c537c47 Binary files /dev/null and b/Source Code/V2.0/PiacereToolCustomization/PiacereIcons/PiacereIcon_16x16.png differ diff --git a/Source Code/V2.0/PiacereToolCustomization/PiacereIcons/PiacereIcon_24x24.png b/Source Code/V2.0/PiacereToolCustomization/PiacereIcons/PiacereIcon_24x24.png new file mode 100644 index 0000000000000000000000000000000000000000..15a6cd0966080e5292e1ab99a96df89bd694e5b9 Binary files /dev/null and b/Source Code/V2.0/PiacereToolCustomization/PiacereIcons/PiacereIcon_24x24.png differ diff --git a/Source Code/V2.0/PiacereToolCustomization/PiacereIcons/PiacereIcon_256x256.png b/Source Code/V2.0/PiacereToolCustomization/PiacereIcons/PiacereIcon_256x256.png new file mode 100644 index 0000000000000000000000000000000000000000..6db52fe2c2ed0dd9f75163214b094476416e341a Binary files /dev/null and b/Source Code/V2.0/PiacereToolCustomization/PiacereIcons/PiacereIcon_256x256.png differ diff --git a/Source Code/V2.0/PiacereToolCustomization/PiacereIcons/PiacereIcon_32x32.png b/Source Code/V2.0/PiacereToolCustomization/PiacereIcons/PiacereIcon_32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..bb51b447d7bc3b9b0c866b35cc9c65917508e0f7 Binary files /dev/null and b/Source Code/V2.0/PiacereToolCustomization/PiacereIcons/PiacereIcon_32x32.png differ diff --git a/Source Code/V2.0/PiacereToolCustomization/PiacereIcons/PiacereIcon_48x48.png b/Source Code/V2.0/PiacereToolCustomization/PiacereIcons/PiacereIcon_48x48.png new file mode 100644 index 0000000000000000000000000000000000000000..b610e19f8483d4592b5bd75e3f1f31631fe7d74e Binary files /dev/null and b/Source Code/V2.0/PiacereToolCustomization/PiacereIcons/PiacereIcon_48x48.png differ diff --git a/Source Code/V2.0/PiacereToolCustomization/PiacereIcons/PiacereIcon_64x64.png b/Source Code/V2.0/PiacereToolCustomization/PiacereIcons/PiacereIcon_64x64.png new file mode 100644 index 0000000000000000000000000000000000000000..35e591d0b099c68a688d1f1e8524effa1f20e54a Binary files /dev/null and b/Source Code/V2.0/PiacereToolCustomization/PiacereIcons/PiacereIcon_64x64.png differ diff --git a/Source Code/V2.0/PiacereToolCustomization/PiacereIcons/PiacereIcon_8x8.png b/Source Code/V2.0/PiacereToolCustomization/PiacereIcons/PiacereIcon_8x8.png new file mode 100644 index 0000000000000000000000000000000000000000..7ef08d6c3d1f9db2becf7d9be4f4b63f920aa6af Binary files /dev/null and b/Source Code/V2.0/PiacereToolCustomization/PiacereIcons/PiacereIcon_8x8.png differ diff --git a/Source Code/V2.0/PiacereToolCustomization/PiacereIcons/icon16.bmp b/Source Code/V2.0/PiacereToolCustomization/PiacereIcons/icon16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..b7e20845b6a19075baedbeeb6e08187ae431ab07 Binary files /dev/null and b/Source Code/V2.0/PiacereToolCustomization/PiacereIcons/icon16.bmp differ diff --git a/Source Code/V2.0/PiacereToolCustomization/PiacereIcons/icon24.bmp b/Source Code/V2.0/PiacereToolCustomization/PiacereIcons/icon24.bmp new file mode 100644 index 0000000000000000000000000000000000000000..154b047c5c3c053248e49297824a7dbc7ff87291 Binary files /dev/null and b/Source Code/V2.0/PiacereToolCustomization/PiacereIcons/icon24.bmp differ diff --git a/Source Code/V2.0/PiacereToolCustomization/PiacereIcons/icon256.bmp b/Source Code/V2.0/PiacereToolCustomization/PiacereIcons/icon256.bmp new file mode 100644 index 0000000000000000000000000000000000000000..8de86f74ca5f55d3394e9adad417fb05fe698688 Binary files /dev/null and b/Source Code/V2.0/PiacereToolCustomization/PiacereIcons/icon256.bmp differ diff --git a/Source Code/V2.0/PiacereToolCustomization/PiacereIcons/icon32.bmp b/Source Code/V2.0/PiacereToolCustomization/PiacereIcons/icon32.bmp new file mode 100644 index 0000000000000000000000000000000000000000..bbcafe4d4b1147ac7abbfa3a57da08834f1978d5 Binary files /dev/null and b/Source Code/V2.0/PiacereToolCustomization/PiacereIcons/icon32.bmp differ diff --git a/Source Code/V2.0/PiacereToolCustomization/PiacereIcons/icon48.bmp b/Source Code/V2.0/PiacereToolCustomization/PiacereIcons/icon48.bmp new file mode 100644 index 0000000000000000000000000000000000000000..b18d23b7018576501facd65545f0b909fa3ab2e9 Binary files /dev/null and b/Source Code/V2.0/PiacereToolCustomization/PiacereIcons/icon48.bmp differ diff --git a/Source Code/V2.0/PiacereToolCustomization/PiacereIcons/icon8.bmp b/Source Code/V2.0/PiacereToolCustomization/PiacereIcons/icon8.bmp new file mode 100644 index 0000000000000000000000000000000000000000..55eada3418ba1f8edd55d3a419415cc59fb618f4 Binary files /dev/null and b/Source Code/V2.0/PiacereToolCustomization/PiacereIcons/icon8.bmp differ diff --git a/Source Code/V2.0/PiacereToolCustomization/bin/eu/piacere/piacereTool/domlSpec/NewDOMLSpecWizard.class b/Source Code/V2.0/PiacereToolCustomization/bin/eu/piacere/piacereTool/domlSpec/NewDOMLSpecWizard.class new file mode 100644 index 0000000000000000000000000000000000000000..9f85a4ec64a525e4b166676201011794860c5b3e Binary files /dev/null and b/Source Code/V2.0/PiacereToolCustomization/bin/eu/piacere/piacereTool/domlSpec/NewDOMLSpecWizard.class differ diff --git a/Source Code/V2.0/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacerePerspective/PiacerePerspectiveFactory.class b/Source Code/V2.0/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacerePerspective/PiacerePerspectiveFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..220a4d0ec441a204c7981c5845090a503dbb41d2 Binary files /dev/null and b/Source Code/V2.0/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacerePerspective/PiacerePerspectiveFactory.class differ diff --git a/Source Code/V2.0/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacereProject/NewPiacereProjectWizard.class b/Source Code/V2.0/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacereProject/NewPiacereProjectWizard.class new file mode 100644 index 0000000000000000000000000000000000000000..35fc1337e185767701711d94e933dd43a51bac6c Binary files /dev/null and b/Source Code/V2.0/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacereProject/NewPiacereProjectWizard.class differ diff --git a/Source Code/V2.0/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacereProjectNature/AddRemovePiacereProjectNatureHandler.class b/Source Code/V2.0/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacereProjectNature/AddRemovePiacereProjectNatureHandler.class new file mode 100644 index 0000000000000000000000000000000000000000..49d6347bb0e592da7a5b5aca6513b55e30d1bc4c Binary files /dev/null and b/Source Code/V2.0/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacereProjectNature/AddRemovePiacereProjectNatureHandler.class differ diff --git a/Source Code/V2.0/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacereProjectNature/PiacereNature.class b/Source Code/V2.0/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacereProjectNature/PiacereNature.class new file mode 100644 index 0000000000000000000000000000000000000000..e4300d1cbd9c301b9dbaa19caff19d3befcd0bf6 Binary files /dev/null and b/Source Code/V2.0/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacereProjectNature/PiacereNature.class differ diff --git a/Source Code/V2.0/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacereProjectNature/PiacereNatureBuilder$SampleDeltaVisitor.class b/Source Code/V2.0/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacereProjectNature/PiacereNatureBuilder$SampleDeltaVisitor.class new file mode 100644 index 0000000000000000000000000000000000000000..afb4ce480f1401527c1b177b926ac33282e4cac8 Binary files /dev/null and b/Source Code/V2.0/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacereProjectNature/PiacereNatureBuilder$SampleDeltaVisitor.class differ diff --git a/Source Code/V2.0/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacereProjectNature/PiacereNatureBuilder$SampleResourceVisitor.class b/Source Code/V2.0/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacereProjectNature/PiacereNatureBuilder$SampleResourceVisitor.class new file mode 100644 index 0000000000000000000000000000000000000000..42d2928b5bc7ce44ce1cfdba3f4d5158acab8e26 Binary files /dev/null and b/Source Code/V2.0/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacereProjectNature/PiacereNatureBuilder$SampleResourceVisitor.class differ diff --git a/Source Code/V2.0/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacereProjectNature/PiacereNatureBuilder$XMLErrorHandler.class b/Source Code/V2.0/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacereProjectNature/PiacereNatureBuilder$XMLErrorHandler.class new file mode 100644 index 0000000000000000000000000000000000000000..2c553ed802a7b56b86cf9ec053449bf73c3ac2cb Binary files /dev/null and b/Source Code/V2.0/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacereProjectNature/PiacereNatureBuilder$XMLErrorHandler.class differ diff --git a/Source Code/V2.0/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacereProjectNature/PiacereNatureBuilder.class b/Source Code/V2.0/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacereProjectNature/PiacereNatureBuilder.class new file mode 100644 index 0000000000000000000000000000000000000000..cf64b38670872a59194e697914bb88e55e3e9fac Binary files /dev/null and b/Source Code/V2.0/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacereProjectNature/PiacereNatureBuilder.class differ diff --git a/Source Code/V2.0/PiacereToolCustomization/bin/eu/piacere/piacereTool/prefPage/PreferencePage.class b/Source Code/V2.0/PiacereToolCustomization/bin/eu/piacere/piacereTool/prefPage/PreferencePage.class new file mode 100644 index 0000000000000000000000000000000000000000..1b60b4d3ee2ea46b1e024943e2382f5d786d0d92 Binary files /dev/null and b/Source Code/V2.0/PiacereToolCustomization/bin/eu/piacere/piacereTool/prefPage/PreferencePage.class differ diff --git a/Source Code/V2.0/PiacereToolCustomization/build.properties b/Source Code/V2.0/PiacereToolCustomization/build.properties new file mode 100755 index 0000000000000000000000000000000000000000..3a3619a3a37df30c3f43ec59d12b40c67d1b1b91 --- /dev/null +++ b/Source Code/V2.0/PiacereToolCustomization/build.properties @@ -0,0 +1,7 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + .,\ + plugin.xml,\ + icons/,\ + PiacereIcons/ diff --git a/Source Code/V2.0/PiacereToolCustomization/plugin.xml b/Source Code/V2.0/PiacereToolCustomization/plugin.xml new file mode 100755 index 0000000000000000000000000000000000000000..58c7858e1d643721dd809aa64498fba1b1cdd0fe --- /dev/null +++ b/Source Code/V2.0/PiacereToolCustomization/plugin.xml @@ -0,0 +1,180 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.4"?> +<plugin> + +<extension point="org.eclipse.ui.newWizards"> + <wizard + category="eu.piacere.category.id" + class="eu.piacere.piacereTool.piacereProject.NewPiacereProjectWizard" + finalPerspective="eu.piacere.piacerePerspective.id" + icon="PiacereIcons/PiacereIcon_16x16.png" + id="eu.piacere.piacereProject.id" + name="New Piacere Project" + preferredPerspectives="eu.piacere.piacerePerspective.id" + project="true"> + </wizard> + <category + id="eu.piacere.category.id" + name="Piacere"> + </category> + <category + id="eu.piacere.modelsCategory.id" + name="Piacere Models" + parentCategory="eu.piacere.category.id"> + </category> + <category + id="eu.piacere.diagramsCategory.id" + name="Piacere Diagrams" + parentCategory="eu.piacere.category.id"> + </category> + <category + id="eu.piacere.piacereModelsCommands.category.id" + name="Piacere Diagrams" + parentCategory="eu.piacere.category.id"> + </category> + <wizard + category="eu.piacere.category.id" + class="eu.piacere.piacereTool.domlSpec.NewDOMLSpecWizard" + finalPerspective="eu.piacere.piacerePerspective.id" + icon="PiacereIcons/PiacereIcon_16x16.png" + id="eu.piacere.domlSpec.id" + name="New DOML Spec" + preferredPerspectives="eu.piacere.piacerePerspective.id"> + </wizard> +</extension> +<extension + point="org.eclipse.ui.perspectives"> + <perspective + class="eu.piacere.piacereTool.piacerePerspective.PiacerePerspectiveFactory" + icon="PiacereIcons/PiacereIcon_16x16.png" + id="eu.piacere.piacerePerspective.id" + name="Piacere"> + </perspective> + </extension> +<extension + point="org.eclipse.ui.perspectiveExtensions"> + <perspectiveExtension + targetID="eu.piacere.piacerePerspective.id"> + <newWizardShortcut + id="eu.piacere.piacereProject.id"> + </newWizardShortcut> + <newWizardShortcut + id="eu.piacere.doml.doml.application.presentation.ApplicationModelWizardID"> + </newWizardShortcut> + <newWizardShortcut + id="eu.piacere.doml.doml.commons.presentation.CommonsModelWizardID"> + </newWizardShortcut> + <newWizardShortcut + id="eu.piacere.doml.doml.concrete.presentation.ConcreteModelWizardID"> + </newWizardShortcut> + <newWizardShortcut + id="eu.piacere.doml.doml.infrastructure.presentation.InfrastructureModelWizardID"> + </newWizardShortcut> + <newWizardShortcut + id="eu.piacere.doml.doml.optimization.presentation.OptimizationModelWizardID"> + </newWizardShortcut> + <newWizardShortcut + id="eu.piacere.domlSpec.id"> + </newWizardShortcut> + </perspectiveExtension> + </extension> + <extension + id="eu.piacere.piacereProjectNatureBuilder.id" + name="Piacere Project Builder" + point="org.eclipse.core.resources.builders"> + <builder + hasNature="true"> + <run + class="eu.piacere.piacereTool.piacereProjectNature.PiacereNatureBuilder"> + </run> + </builder> + </extension> + <extension + id="eu.piacere.piacereProjectNature.id" + name="Piacere Project Nature" + point="org.eclipse.core.resources.natures"> + <runtime> + <run + class="eu.piacere.piacereTool.piacereProjectNature.PiacereNature"> + </run> + </runtime> + <builder + id="eu.piacere.piacereProjectNatureBuilder.id"> + </builder> + </extension> + <extension + id="xmlProblem" + name="XML Problem" + point="org.eclipse.core.resources.markers"> + <super + type="org.eclipse.core.resources.problemmarker"> + </super> + <persistent + value="true"> + </persistent> + </extension> + <extension + point="org.eclipse.ui.ide.projectNatureImages"> + <image + icon="PiacereIcons/PiacereIcon_16x16.png" + id="eu.piacerepiacereProjectNature.piacereProjectNatureImage.id" + natureId="eu.piacere.piacereProjectNature.id"> + </image> + </extension> + <extension + point="org.eclipse.ui.commands"> + <category + id="eu.piacere.piacereModelsCommands.category.id" + name="Piacere Models Commands"> + </category> + <category + id="eu.piacere.eclipseProjectNature.piacereNature.category.id" + name="Piacere Nature commands"> + </category> + <command + categoryId="eu.piacere.eclipseProjectNature.piacereNature.category.id" + defaultHandler="eu.piacere.piacereTool.piacereProjectNature.AddRemovePiacereProjectNatureHandler" + id="eu.piacere.eclipseProjectNature.piacereNature.addRemovePiacereProjectNatureCommand.id" + name="Add Piacere Project Nature"> + </command> + </extension> + + <extension point="org.eclipse.ui.menus"> + <menuContribution allPopups="false" locationURI="popup:org.eclipse.ui.popup.any?after=additions"> + <menu icon="PiacereIcons/PiacereIcon_16x16.png" id="eu.piacere.eclipsePopupMenu.id" label="Piacere"> + </menu> + </menuContribution> + <menuContribution allPopups="false" locationURI="popup:eu.piacere.eclipsePopupMenu.id"> + + <command + commandId="eu.piacere.eclipseProjectNature.piacereNature.addRemovePiacereProjectNatureCommand.id" + icon="PiacereIcons/PiacereIcon_24x24.png" + label="Convert To Piacere Project" + style="push" + tooltip="Converts the current project into a Piacere Project"> + <visibleWhen checkEnabled="false"> + <with variable="selection"> + <count value="1"> + </count> + <iterate> + <adapt type="org.eclipse.core.resources.IProject"> + <not> + <test property="org.eclipse.core.resources.projectNature" value="eu.piacere.piacereProjectNature.id"> + </test> + </not> + </adapt> + </iterate> + </with> + </visibleWhen> + </command> + </menuContribution> + </extension> + <extension + point="org.eclipse.ui.preferencePages"> + <page + class="eu.piacere.piacereTool.prefPage.PreferencePage" + id="PiacereToolCustomization.preferences.page1" + name="Piacere"> + </page> + </extension> +</plugin> diff --git a/Source Code/V2.0/PiacereToolCustomization/src/eu/piacere/piacereTool/domlSpec/NewDOMLSpecWizard.java b/Source Code/V2.0/PiacereToolCustomization/src/eu/piacere/piacereTool/domlSpec/NewDOMLSpecWizard.java new file mode 100644 index 0000000000000000000000000000000000000000..ceb6ba8c95d15bfe0d7aa00060206a42e34a96b8 --- /dev/null +++ b/Source Code/V2.0/PiacereToolCustomization/src/eu/piacere/piacereTool/domlSpec/NewDOMLSpecWizard.java @@ -0,0 +1,58 @@ +package eu.piacere.piacereTool.domlSpec; + +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.ui.INewWizard; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.dialogs.WizardNewFileCreationPage; + +public class NewDOMLSpecWizard extends Wizard implements INewWizard { + + private WizardNewFileCreationPage _pageOne; + private IStructuredSelection sel; + public NewDOMLSpecWizard() { + setWindowTitle("New DOML Specification"); + } + + @Override + public void init(IWorkbench workbench, IStructuredSelection selection) { + this.sel=selection; + + } + + @Override + public boolean performFinish() { + _pageOne.createNewFile(); + return true; + } + + + @Override + public void addPages() { + super.addPages(); + + _pageOne = new WizardNewFileCreationPage("New DOML Specification", this.sel); + _pageOne.setTitle("New DOML Specification"); + _pageOne.setDescription("Create a new DOML Specification."); + _pageOne.setFileExtension("doml"); + + addPage(_pageOne); + } + + /** + * @generated + */ + public String isValid(String newText) { + IStatus status = ResourcesPlugin.getWorkspace().validateName(newText, IResource.FILE); + if (!status.isOK()) { + return status.getMessage(); + } + return null; + } + + + +} diff --git a/Source Code/V2.0/PiacereToolCustomization/src/eu/piacere/piacereTool/piacerePerspective/PiacerePerspectiveFactory.java b/Source Code/V2.0/PiacereToolCustomization/src/eu/piacere/piacereTool/piacerePerspective/PiacerePerspectiveFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..d1facf44c97df7bd9dd24940013efdfee0b80055 --- /dev/null +++ b/Source Code/V2.0/PiacereToolCustomization/src/eu/piacere/piacereTool/piacerePerspective/PiacerePerspectiveFactory.java @@ -0,0 +1,38 @@ +package eu.piacere.piacereTool.piacerePerspective; + +import org.eclipse.ui.IFolderLayout; +import org.eclipse.ui.IPageLayout; +import org.eclipse.ui.IPerspectiveFactory; + +public class PiacerePerspectiveFactory implements IPerspectiveFactory { + + public static final String PIACERE_PERSPECTIVE_ID="eu.piacere.piacerePerspective.id"; + + @Override + public void createInitialLayout(IPageLayout layout) { + + String editorArea = layout.getEditorArea(); + + IFolderLayout leftTop = layout.createFolder("leftTop", IPageLayout.LEFT, (float) 0.2, editorArea); + leftTop.addView(IPageLayout.ID_PROJECT_EXPLORER); + + IFolderLayout leftBottom = layout.createFolder("leftBottom", IPageLayout.BOTTOM, (float) 0.7, "leftTop"); + leftBottom.addView(IPageLayout.ID_OUTLINE); + + IFolderLayout rightBottom = layout.createFolder("bottom", IPageLayout.BOTTOM, (float)0.7, editorArea); + //rightBottom.addView("TaTAmIAdaptationFramework.Tool.DashboardPart"); + //rightBottom.addView("TaTAmIAdaptationFramework.Tool.FadaModelRepositoriesViewPart"); + //rightBottom.addView("TaTAmIAdaptationFramework.Tool.FadaRuntimeInstancesRepositoriesViewPart"); + rightBottom.addView(IPageLayout.ID_PROP_SHEET); + + layout.addActionSet("org.eclipse.debug.ui.launchActionSet"); + + layout.addPerspectiveShortcut("org.eclipse.pde.ui.PDEPerspective"); + + layout.addShowViewShortcut("org.eclipse.ui.navigator.ProjectExplorer"); + layout.addShowViewShortcut("org.eclipse.ui.views.ContentOutline"); + layout.addShowViewShortcut("org.eclipse.ui.views.PropertySheet"); + + } + +} diff --git a/Source Code/V2.0/PiacereToolCustomization/src/eu/piacere/piacereTool/piacereProject/NewPiacereProjectWizard.java b/Source Code/V2.0/PiacereToolCustomization/src/eu/piacere/piacereTool/piacereProject/NewPiacereProjectWizard.java new file mode 100755 index 0000000000000000000000000000000000000000..5f5d9b2bde6164fb8735cc3e2e898ce0c1e6d1ee --- /dev/null +++ b/Source Code/V2.0/PiacereToolCustomization/src/eu/piacere/piacereTool/piacereProject/NewPiacereProjectWizard.java @@ -0,0 +1,73 @@ +package eu.piacere.piacereTool.piacereProject; + +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IProjectDescription; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.ui.INewWizard; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.WorkbenchException; +import org.eclipse.ui.dialogs.WizardNewProjectCreationPage; + +import eu.piacere.piacereTool.piacerePerspective.PiacerePerspectiveFactory; +import eu.piacere.piacereTool.piacereProjectNature.PiacereNature; + +public class NewPiacereProjectWizard extends Wizard implements INewWizard { + + private WizardNewProjectCreationPage _pageOne; + + + public NewPiacereProjectWizard() { + setWindowTitle("New Piacere Project"); + } + + @Override + public void init(IWorkbench workbench, IStructuredSelection selection) { + + } + + @Override + public boolean performFinish() { + IProject p =ResourcesPlugin.getWorkspace().getRoot().getProject(_pageOne.getProjectName()); + try { + IProgressMonitor pm=new NullProgressMonitor(); + p.create(pm); + p.open(pm); + IProjectDescription description = p.getDescription(); + String[] natures = description.getNatureIds(); + String[] newNatures = new String[natures.length + 1]; + System.arraycopy(natures, 0, newNatures, 0, natures.length); + newNatures[natures.length] = PiacereNature.NATURE_ID; + description.setNatureIds(newNatures); + p.setDescription(description, null); + try + { + PlatformUI.getWorkbench().showPerspective(PiacerePerspectiveFactory.PIACERE_PERSPECTIVE_ID,PlatformUI.getWorkbench().getActiveWorkbenchWindow()); + } + catch (WorkbenchException e) + { + e.printStackTrace(); + } + } catch (CoreException e) { + e.printStackTrace(); + } + return true; + } + + @Override + public void addPages() { + super.addPages(); + + _pageOne = new WizardNewProjectCreationPage("New Piacere Project"); + _pageOne.setTitle("New Piacere Project"); + _pageOne.setDescription("Create a new Piacere Project."); + + addPage(_pageOne); + } + +} diff --git a/Source Code/V2.0/PiacereToolCustomization/src/eu/piacere/piacereTool/piacereProjectNature/AddRemovePiacereProjectNatureHandler.java b/Source Code/V2.0/PiacereToolCustomization/src/eu/piacere/piacereTool/piacereProjectNature/AddRemovePiacereProjectNatureHandler.java new file mode 100755 index 0000000000000000000000000000000000000000..eb223d797f43aef0c8dd77cb89e373e3220483aa --- /dev/null +++ b/Source Code/V2.0/PiacereToolCustomization/src/eu/piacere/piacereTool/piacereProjectNature/AddRemovePiacereProjectNatureHandler.java @@ -0,0 +1,76 @@ +package eu.piacere.piacereTool.piacereProjectNature; + +import java.util.Iterator; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IProjectDescription; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IAdaptable; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.ui.handlers.HandlerUtil; + +public class AddRemovePiacereProjectNatureHandler extends AbstractHandler { + + + public Object execute(ExecutionEvent event) throws ExecutionException { + ISelection selection = HandlerUtil.getCurrentSelection(event); + if (selection instanceof IStructuredSelection) { + for (Iterator<?> it = ((IStructuredSelection) selection).iterator(); it + .hasNext();) { + Object element = it.next(); + IProject project = null; + if (element instanceof IProject) { + project = (IProject) element; + } else if (element instanceof IAdaptable) { + project = (IProject) ((IAdaptable) element) + .getAdapter(IProject.class); + } + if (project != null) { + try { + toggleNature(project); + } catch (CoreException e) { + throw new ExecutionException("Failed to toggle nature", + e); + } + } + } + } + + return null; + } + + /** + * Toggles sample nature on a project + * + * @param project + * to have sample nature added or removed + */ + private void toggleNature(IProject project) throws CoreException { + IProjectDescription description = project.getDescription(); + String[] natures = description.getNatureIds(); + + for (int i = 0; i < natures.length; ++i) { + if (PiacereNature.NATURE_ID.equals(natures[i])) { + // Remove the nature + String[] newNatures = new String[natures.length - 1]; + System.arraycopy(natures, 0, newNatures, 0, i); + System.arraycopy(natures, i + 1, newNatures, i, natures.length - i - 1); + description.setNatureIds(newNatures); + project.setDescription(description, null); + return; + } + } + + // Add the nature + String[] newNatures = new String[natures.length + 1]; + System.arraycopy(natures, 0, newNatures, 0, natures.length); + newNatures[natures.length] = PiacereNature.NATURE_ID; + description.setNatureIds(newNatures); + project.setDescription(description, null); + } + +} \ No newline at end of file diff --git a/Source Code/V2.0/PiacereToolCustomization/src/eu/piacere/piacereTool/piacereProjectNature/PiacereNature.java b/Source Code/V2.0/PiacereToolCustomization/src/eu/piacere/piacereTool/piacereProjectNature/PiacereNature.java new file mode 100755 index 0000000000000000000000000000000000000000..b87c114202d5e5265f23ff28464a10ece1a33728 --- /dev/null +++ b/Source Code/V2.0/PiacereToolCustomization/src/eu/piacere/piacereTool/piacereProjectNature/PiacereNature.java @@ -0,0 +1,65 @@ +package eu.piacere.piacereTool.piacereProjectNature; + +import org.eclipse.core.resources.ICommand; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IProjectDescription; +import org.eclipse.core.resources.IProjectNature; +import org.eclipse.core.runtime.CoreException; + +public class PiacereNature implements IProjectNature { + + /** + * ID of this project nature + */ + public static final String NATURE_ID = "eu.piacere.piacereProjectNature.id"; + + private IProject project; + + @Override + public void configure() throws CoreException { + IProjectDescription desc = project.getDescription(); + ICommand[] commands = desc.getBuildSpec(); + + for (int i = 0; i < commands.length; ++i) { + if (commands[i].getBuilderName().equals(PiacereNatureBuilder.BUILDER_ID)) { + return; + } + } + + ICommand[] newCommands = new ICommand[commands.length + 1]; + System.arraycopy(commands, 0, newCommands, 0, commands.length); + ICommand command = desc.newCommand(); + command.setBuilderName(PiacereNatureBuilder.BUILDER_ID); + newCommands[newCommands.length - 1] = command; + desc.setBuildSpec(newCommands); + project.setDescription(desc, null); + } + + @Override + public void deconfigure() throws CoreException { + IProjectDescription description = getProject().getDescription(); + ICommand[] commands = description.getBuildSpec(); + for (int i = 0; i < commands.length; ++i) { + if (commands[i].getBuilderName().equals(PiacereNatureBuilder.BUILDER_ID)) { + ICommand[] newCommands = new ICommand[commands.length - 1]; + System.arraycopy(commands, 0, newCommands, 0, i); + System.arraycopy(commands, i + 1, newCommands, i, + commands.length - i - 1); + description.setBuildSpec(newCommands); + project.setDescription(description, null); + return; + } + } + } + + @Override + public IProject getProject() { + return project; + } + + @Override + public void setProject(IProject project) { + this.project = project; + } + +} diff --git a/Source Code/V2.0/PiacereToolCustomization/src/eu/piacere/piacereTool/piacereProjectNature/PiacereNatureBuilder.java b/Source Code/V2.0/PiacereToolCustomization/src/eu/piacere/piacereTool/piacereProjectNature/PiacereNatureBuilder.java new file mode 100755 index 0000000000000000000000000000000000000000..8f93065f24ead0c3cb24e9b25cfd8fcbf8969af8 --- /dev/null +++ b/Source Code/V2.0/PiacereToolCustomization/src/eu/piacere/piacereTool/piacereProjectNature/PiacereNatureBuilder.java @@ -0,0 +1,158 @@ +package eu.piacere.piacereTool.piacereProjectNature; + +import java.util.Map; + +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.parsers.SAXParser; +import javax.xml.parsers.SAXParserFactory; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IMarker; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IResourceDelta; +import org.eclipse.core.resources.IResourceDeltaVisitor; +import org.eclipse.core.resources.IResourceVisitor; +import org.eclipse.core.resources.IncrementalProjectBuilder; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.xml.sax.SAXException; +import org.xml.sax.SAXParseException; +import org.xml.sax.helpers.DefaultHandler; + +public class PiacereNatureBuilder extends IncrementalProjectBuilder { + + class SampleDeltaVisitor implements IResourceDeltaVisitor { + @Override + public boolean visit(IResourceDelta delta) throws CoreException { + IResource resource = delta.getResource(); + switch (delta.getKind()) { + case IResourceDelta.ADDED: + checkXML(resource); + break; + case IResourceDelta.REMOVED: + break; + case IResourceDelta.CHANGED: + checkXML(resource); + break; + } + return true; + } + } + + class SampleResourceVisitor implements IResourceVisitor { + public boolean visit(IResource resource) { + checkXML(resource); + return true; + } + } + + class XMLErrorHandler extends DefaultHandler { + + private IFile file; + + public XMLErrorHandler(IFile file) { + this.file = file; + } + + private void addMarker(SAXParseException e, int severity) { + PiacereNatureBuilder.this.addMarker(file, e.getMessage(), e + .getLineNumber(), severity); + } + + public void error(SAXParseException exception) throws SAXException { + addMarker(exception, IMarker.SEVERITY_ERROR); + } + + public void fatalError(SAXParseException exception) throws SAXException { + addMarker(exception, IMarker.SEVERITY_ERROR); + } + + public void warning(SAXParseException exception) throws SAXException { + addMarker(exception, IMarker.SEVERITY_WARNING); + } + } + + public static final String BUILDER_ID = "es.upv.pros.tatami.autonomic.adaptation.tatamiProjectNatureBuilder.id"; + + private static final String MARKER_TYPE = "test.xmlProblem"; + + private SAXParserFactory parserFactory; + + private void addMarker(IFile file, String message, int lineNumber, + int severity) { + try { + IMarker marker = file.createMarker(MARKER_TYPE); + marker.setAttribute(IMarker.MESSAGE, message); + marker.setAttribute(IMarker.SEVERITY, severity); + if (lineNumber == -1) { + lineNumber = 1; + } + marker.setAttribute(IMarker.LINE_NUMBER, lineNumber); + } catch (CoreException e) { + } + } + + @Override + @SuppressWarnings("rawtypes") + protected IProject[] build(int kind, Map args, IProgressMonitor monitor) + throws CoreException { + if (kind == FULL_BUILD) { + fullBuild(monitor); + } else { + IResourceDelta delta = getDelta(getProject()); + if (delta == null) { + fullBuild(monitor); + } else { + incrementalBuild(delta, monitor); + } + } + return null; + } + + protected void clean(IProgressMonitor monitor) throws CoreException { + // delete markers set and files created + getProject().deleteMarkers(MARKER_TYPE, true, IResource.DEPTH_INFINITE); + } + + void checkXML(IResource resource) { + if (resource instanceof IFile && resource.getName().endsWith(".xml")) { + IFile file = (IFile) resource; + deleteMarkers(file); + XMLErrorHandler reporter = new XMLErrorHandler(file); + try { + getParser().parse(file.getContents(), reporter); + } catch (Exception e1) { + } + } + } + + private void deleteMarkers(IFile file) { + try { + file.deleteMarkers(MARKER_TYPE, false, IResource.DEPTH_ZERO); + } catch (CoreException ce) { + } + } + + protected void fullBuild(final IProgressMonitor monitor) + throws CoreException { + try { + getProject().accept(new SampleResourceVisitor()); + } catch (CoreException e) { + } + } + + private SAXParser getParser() throws ParserConfigurationException, + SAXException { + if (parserFactory == null) { + parserFactory = SAXParserFactory.newInstance(); + } + return parserFactory.newSAXParser(); + } + + protected void incrementalBuild(IResourceDelta delta, + IProgressMonitor monitor) throws CoreException { + // the visitor does the work. + delta.accept(new SampleDeltaVisitor()); + } +} diff --git a/Source Code/V2.0/PiacereToolCustomization/src/eu/piacere/piacereTool/prefPage/PreferencePage.java b/Source Code/V2.0/PiacereToolCustomization/src/eu/piacere/piacereTool/prefPage/PreferencePage.java new file mode 100644 index 0000000000000000000000000000000000000000..80fe2e42437a08f0af9c39861124dd72b873ec99 --- /dev/null +++ b/Source Code/V2.0/PiacereToolCustomization/src/eu/piacere/piacereTool/prefPage/PreferencePage.java @@ -0,0 +1,41 @@ +package eu.piacere.piacereTool.prefPage; + +import org.eclipse.jface.preference.FieldEditorPreferencePage; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchPreferencePage; + +public class PreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage { + + public PreferencePage() { + // TODO Auto-generated constructor stub + } + + public PreferencePage(int style) { + super(style); + // TODO Auto-generated constructor stub + } + + public PreferencePage(String title, int style) { + super(title, style); + // TODO Auto-generated constructor stub + } + + public PreferencePage(String title, ImageDescriptor image, int style) { + super(title, image, style); + // TODO Auto-generated constructor stub + } + + @Override + public void init(IWorkbench workbench) { + // TODO Auto-generated method stub + + } + + @Override + protected void createFieldEditors() { + // TODO Auto-generated method stub + + } + +} diff --git a/Source Code/V2.0/PiacereToolExtensions/.classpath b/Source Code/V2.0/PiacereToolExtensions/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..e801ebfb4680123285c15553dc70584276fe0057 --- /dev/null +++ b/Source Code/V2.0/PiacereToolExtensions/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="src" path="src"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/Source Code/V2.0/PiacereToolExtensions/.project b/Source Code/V2.0/PiacereToolExtensions/.project new file mode 100644 index 0000000000000000000000000000000000000000..b32ede71e198c52fec6408d5ae56f73e66df600d --- /dev/null +++ b/Source Code/V2.0/PiacereToolExtensions/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>PiacereToolExtensions</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/Source Code/V2.0/PiacereToolExtensions/.settings/org.eclipse.jdt.core.prefs b/Source Code/V2.0/PiacereToolExtensions/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000000000000000000000000000000000000..c9545f06a4120d5b4a1228fb19f67a1171bc0f5b --- /dev/null +++ b/Source Code/V2.0/PiacereToolExtensions/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,9 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=11 +org.eclipse.jdt.core.compiler.compliance=11 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=11 diff --git a/Source Code/V2.0/PiacereToolExtensions/META-INF/MANIFEST.MF b/Source Code/V2.0/PiacereToolExtensions/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..7a28d1010fee04b7da2e2a3dcdedbb5519c0eb42 --- /dev/null +++ b/Source Code/V2.0/PiacereToolExtensions/META-INF/MANIFEST.MF @@ -0,0 +1,57 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: PiacereToolExtensions +Bundle-SymbolicName: PiacereToolExtensions;singleton:=true +Bundle-Version: 1.0.0.qualifier +Bundle-Vendor: TaTAmI +Automatic-Module-Name: PiacereToolExtensions +Import-Package: eu.piacere.doml.doml.commons, + org.apache.commons.io;version="2.8.0", + org.apache.logging.log4j, + org.eclipse.core.internal.resources, + org.eclipse.core.resources, + org.eclipse.core.runtime, + org.eclipse.core.runtime.preferences, + org.eclipse.emf.common.command, + org.eclipse.emf.common.util, + org.eclipse.emf.compare, + org.eclipse.emf.ecore, + org.eclipse.emf.ecore.resource, + org.eclipse.emf.ecore.resource.impl, + org.eclipse.emf.ecore.util, + org.eclipse.emf.ecore.xmi, + org.eclipse.emf.ecore.xmi.impl, + org.eclipse.emf.edit.command, + org.eclipse.emf.edit.domain, + org.eclipse.emf.transaction, + org.eclipse.emf.transaction.util, + org.eclipse.gef, + org.eclipse.gef.editparts, + org.eclipse.gmf.runtime.diagram.ui.editparts, + org.eclipse.gmf.runtime.diagram.ui.editpolicies, + org.eclipse.gmf.runtime.emf.core, + org.eclipse.gmf.runtime.notation, + org.eclipse.gmf.runtime.notation.impl, + org.eclipse.jdt.core, + org.eclipse.jdt.launching, + org.eclipse.jface.action, + org.eclipse.jface.dialogs, + org.eclipse.jface.viewers, + org.eclipse.jface.window, + org.eclipse.jface.wizard, + org.eclipse.osgi.util, + org.eclipse.swt.widgets, + org.eclipse.ui, + org.eclipse.ui.dialogs, + org.eclipse.ui.internal.navigator.actions, + org.eclipse.ui.internal.navigator.resources.actions, + org.eclipse.ui.internal.navigator.workingsets, + org.eclipse.ui.navigator, + org.eclipse.ui.navigator.resources, + org.json, + org.osgi.framework;version="1.8.0" +Require-Bundle: org.eclipse.ui, + org.eclipse.ui.workbench, + org.eclipse.equinox.app, + org.eclipse.core.expressions +Export-Package: eu.piacere.piacereTool.utils diff --git a/Source Code/V2.0/PiacereToolExtensions/Piacere/PiacereIcon_16x16.png b/Source Code/V2.0/PiacereToolExtensions/Piacere/PiacereIcon_16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..444de54d6cfe2958fac1bbb89dd8619b4c537c47 Binary files /dev/null and b/Source Code/V2.0/PiacereToolExtensions/Piacere/PiacereIcon_16x16.png differ diff --git a/Source Code/V2.0/PiacereToolExtensions/bin/eu/piacere/piacereTool/commandHandlers/GenerateDOMLXfromDOMLCommandHandler.class b/Source Code/V2.0/PiacereToolExtensions/bin/eu/piacere/piacereTool/commandHandlers/GenerateDOMLXfromDOMLCommandHandler.class new file mode 100644 index 0000000000000000000000000000000000000000..52b12215a1be55effc52c9ffd73baeaef8e0e39b Binary files /dev/null and b/Source Code/V2.0/PiacereToolExtensions/bin/eu/piacere/piacereTool/commandHandlers/GenerateDOMLXfromDOMLCommandHandler.class differ diff --git a/Source Code/V2.0/PiacereToolExtensions/bin/eu/piacere/piacereTool/commandHandlers/GenerateDOMLfromDOMLXCommandHandler.class b/Source Code/V2.0/PiacereToolExtensions/bin/eu/piacere/piacereTool/commandHandlers/GenerateDOMLfromDOMLXCommandHandler.class new file mode 100644 index 0000000000000000000000000000000000000000..ec4bbbc0d9d78cb5cf31f1a3a5fa05d983bfbbbd Binary files /dev/null and b/Source Code/V2.0/PiacereToolExtensions/bin/eu/piacere/piacereTool/commandHandlers/GenerateDOMLfromDOMLXCommandHandler.class differ diff --git a/Source Code/V2.0/PiacereToolExtensions/bin/eu/piacere/piacereTool/dialogs/GetAppDialog$1.class b/Source Code/V2.0/PiacereToolExtensions/bin/eu/piacere/piacereTool/dialogs/GetAppDialog$1.class new file mode 100644 index 0000000000000000000000000000000000000000..c333d34ab25085abf9d204a4a2276956a7e53cd4 Binary files /dev/null and b/Source Code/V2.0/PiacereToolExtensions/bin/eu/piacere/piacereTool/dialogs/GetAppDialog$1.class differ diff --git a/Source Code/V2.0/PiacereToolExtensions/bin/eu/piacere/piacereTool/dialogs/GetAppDialog$2.class b/Source Code/V2.0/PiacereToolExtensions/bin/eu/piacere/piacereTool/dialogs/GetAppDialog$2.class new file mode 100644 index 0000000000000000000000000000000000000000..e2cf587d8706212268473d0e3b4abb7c699e8811 Binary files /dev/null and b/Source Code/V2.0/PiacereToolExtensions/bin/eu/piacere/piacereTool/dialogs/GetAppDialog$2.class differ diff --git a/Source Code/V2.0/PiacereToolExtensions/bin/eu/piacere/piacereTool/dialogs/GetAppDialog.class b/Source Code/V2.0/PiacereToolExtensions/bin/eu/piacere/piacereTool/dialogs/GetAppDialog.class new file mode 100644 index 0000000000000000000000000000000000000000..e8e96efcf5457e319b4fe92899338e0522fb2f4c Binary files /dev/null and b/Source Code/V2.0/PiacereToolExtensions/bin/eu/piacere/piacereTool/dialogs/GetAppDialog.class differ diff --git a/Source Code/V2.0/PiacereToolExtensions/bin/eu/piacere/piacereTool/dialogs/GetNameVersionDialog$1.class b/Source Code/V2.0/PiacereToolExtensions/bin/eu/piacere/piacereTool/dialogs/GetNameVersionDialog$1.class new file mode 100644 index 0000000000000000000000000000000000000000..b78d762ac82766e99bdae52c4e307d8213ff16bc Binary files /dev/null and b/Source Code/V2.0/PiacereToolExtensions/bin/eu/piacere/piacereTool/dialogs/GetNameVersionDialog$1.class differ diff --git a/Source Code/V2.0/PiacereToolExtensions/bin/eu/piacere/piacereTool/dialogs/GetNameVersionDialog.class b/Source Code/V2.0/PiacereToolExtensions/bin/eu/piacere/piacereTool/dialogs/GetNameVersionDialog.class new file mode 100644 index 0000000000000000000000000000000000000000..18ca9a8c247a4a38ba345facdbffcaf19a577e57 Binary files /dev/null and b/Source Code/V2.0/PiacereToolExtensions/bin/eu/piacere/piacereTool/dialogs/GetNameVersionDialog.class differ diff --git a/Source Code/V2.0/PiacereToolExtensions/bin/eu/piacere/piacereTool/propertyTesters/ExtensionPropertyTester.class b/Source Code/V2.0/PiacereToolExtensions/bin/eu/piacere/piacereTool/propertyTesters/ExtensionPropertyTester.class new file mode 100644 index 0000000000000000000000000000000000000000..a1b420407fda8a93a8e5e174efecfaba757334c0 Binary files /dev/null and b/Source Code/V2.0/PiacereToolExtensions/bin/eu/piacere/piacereTool/propertyTesters/ExtensionPropertyTester.class differ diff --git a/Source Code/V2.0/PiacereToolExtensions/bin/eu/piacere/piacereTool/utils/FileUtils.class b/Source Code/V2.0/PiacereToolExtensions/bin/eu/piacere/piacereTool/utils/FileUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..6507777d314837051fa55104c27d8d69eed22826 Binary files /dev/null and b/Source Code/V2.0/PiacereToolExtensions/bin/eu/piacere/piacereTool/utils/FileUtils.class differ diff --git a/Source Code/V2.0/PiacereToolExtensions/bin/eu/piacere/piacereTool/utils/ModelUtils.class b/Source Code/V2.0/PiacereToolExtensions/bin/eu/piacere/piacereTool/utils/ModelUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..a4a29ef2bef3efa7894ba5643cce01faf91648c3 Binary files /dev/null and b/Source Code/V2.0/PiacereToolExtensions/bin/eu/piacere/piacereTool/utils/ModelUtils.class differ diff --git a/Source Code/V2.0/PiacereToolExtensions/bin/eu/piacere/piacereTool/utils/PluginUtils.class b/Source Code/V2.0/PiacereToolExtensions/bin/eu/piacere/piacereTool/utils/PluginUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..5b767fc5781de398f161b911b8d5bc17117ad54f Binary files /dev/null and b/Source Code/V2.0/PiacereToolExtensions/bin/eu/piacere/piacereTool/utils/PluginUtils.class differ diff --git a/Source Code/V2.0/PiacereToolExtensions/bin/eu/piacere/piacereTool/utils/ResourceUtils.class b/Source Code/V2.0/PiacereToolExtensions/bin/eu/piacere/piacereTool/utils/ResourceUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..02ad75718d0c11fb86eeb49b523284e0b4c3ef4f Binary files /dev/null and b/Source Code/V2.0/PiacereToolExtensions/bin/eu/piacere/piacereTool/utils/ResourceUtils.class differ diff --git a/Source Code/V2.0/PiacereToolExtensions/bin/eu/piacere/piacereTool/utils/ToolCustomizationUtils.class b/Source Code/V2.0/PiacereToolExtensions/bin/eu/piacere/piacereTool/utils/ToolCustomizationUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..49ba8f421fa8da56b970ce3e40cd7ef4ece9989a Binary files /dev/null and b/Source Code/V2.0/PiacereToolExtensions/bin/eu/piacere/piacereTool/utils/ToolCustomizationUtils.class differ diff --git a/Source Code/V2.0/PiacereToolExtensions/build.properties b/Source Code/V2.0/PiacereToolExtensions/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..52086a7c305694aa678bde0640768488a5cf8e4f --- /dev/null +++ b/Source Code/V2.0/PiacereToolExtensions/build.properties @@ -0,0 +1,6 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + .,\ + plugin.xml,\ + Piacere/ diff --git a/Source Code/V2.0/PiacereToolExtensions/plugin.xml b/Source Code/V2.0/PiacereToolExtensions/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..3a52c6e51b984214292a65ffe155c765878a422f --- /dev/null +++ b/Source Code/V2.0/PiacereToolExtensions/plugin.xml @@ -0,0 +1,162 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.4"?> +<plugin> + <extension + point="org.eclipse.ui.commands"> + <command + categoryId="eu.piacere.piacereModelsCommands.category.id" + defaultHandler="eu.piacere.piacereTool.commandHandlers.GenerateDOMLXfromDOMLCommandHandler" + id="eu.piacere.piacereModelsCommands.generateDOMLXCommand.id" + name="Generate DOMLX Model"> + </command> + <command + categoryId="eu.piacere.piacereModelsCommands.category.id" + defaultHandler="eu.piacere.piacereTool.commandHandlers.GenerateDOMLfromDOMLXCommandHandler" + id="eu.piacere.piacereModelsCommands.generateDOMLCommand.id" + name="Generate DOML Model"> + </command> + </extension> + + <extension point="org.eclipse.ui.menus"> + <menuContribution allPopups="false" locationURI="popup:eu.piacere.eclipsePopupMenu.id"> + <command + commandId="eu.piacere.piacereModelsCommands.generateDOMLXCommand.id" + icon="Piacere/PiacereIcon_16x16.png" + label="Generate DOMLX Model" + style="push" + tooltip="Generates a DOMLX Model From a DOML specification"> + <visibleWhen checkEnabled="false"> + <reference + definitionId="eu.piacere.piacereTool.propertyTesters.extensionPropertyTester.isDOMLModel.id"> + </reference> + </visibleWhen> + </command> + </menuContribution> + <menuContribution allPopups="false" locationURI="popup:eu.piacere.eclipsePopupMenu.id"> + <command + commandId="eu.piacere.piacereModelsCommands.generateDOMLCommand.id" + icon="Piacere/PiacereIcon_16x16.png" + label="Generate DOML Model" + style="push" + tooltip="Generates a DOML Specification From a DOMLX model"> + <visibleWhen checkEnabled="false"> + <reference + definitionId="eu.piacere.piacereTool.propertyTesters.extensionPropertyTester.isDOMLXModel.id"> + </reference> + </visibleWhen> + </command> + </menuContribution> + </extension> + + <extension point="org.eclipse.core.expressions.propertyTesters"> + <propertyTester + class="eu.piacere.piacereTool.propertyTesters.ExtensionPropertyTester" + id="eu.piacere.piacereTool.propertyTesters.ExtensionPropertyTester.id" + namespace="eu.piacere.piacereTool.propertyTesters.extensionPropertyTester" + properties="isDOMLModel, isDOMLXModel, isDOMLJModel, isTarGz" + type="java.lang.Object"> + </propertyTester> + </extension> + + <extension point="org.eclipse.core.expressions.definitions"> + <definition id="eu.piacere.piacereTool.propertyTesters.extensionPropertyTester.isDOMLModel.id"> + <with variable="activeMenuSelection"> + <iterate ifEmpty="false"> + <adapt type="org.eclipse.core.resources.IResource"> + <test property="org.eclipse.core.resources.extension" value="doml" /> + </adapt> + </iterate> + </with> + </definition> + <definition id="eu.piacere.piacereTool.propertyTesters.extensionPropertyTester.isDOMLXModel.id"> + <with variable="activeMenuSelection"> + <iterate ifEmpty="false"> + <adapt type="org.eclipse.core.resources.IResource"> + <test property="org.eclipse.core.resources.extension" value="domlx" /> + </adapt> + </iterate> + </with> + </definition> + <definition + id="eu.piacere.piacereTool.propertyTesters.extensionPropertyTester.isDOMLJModel.id"> + <with + variable="activeMenuSelection"> + <iterate + ifEmpty="false"> + <adapt + type="org.eclipse.core.resources.IResource"> + <test + property="org.eclipse.core.resources.extension" + value="domlj"> + </test> + </adapt> + </iterate> + </with> + </definition> + <definition + id="eu.piacere.piacereTool.propertyTesters.extensionPropertyTester.isTarGz.id"> + <with + variable="activeMenuSelection"> + <iterate + ifEmpty="false"> + <adapt + type="org.eclipse.core.resources.IResource"> + <test + property="org.eclipse.core.resources.extension" + value="gz"> + </test> + </adapt> + </iterate> + </with> + </definition> + <definition + id="eu.piacere.piacereTool.propertyTesters.extensionPropertyTester.isZip.id"> + <with + variable="activeMenuSelection"> + <iterate + ifEmpty="false"> + <adapt + type="org.eclipse.core.resources.IResource"> + <test + property="org.eclipse.core.resources.extension" + value="zip"> + </test> + </adapt> + </iterate> + </with> + </definition> + <definition + id="eu.piacere.piacereTool.propertyTesters.extensionPropertyTester.isCSAR.id"> + <with + variable="activeMenuSelection"> + <iterate + ifEmpty="false"> + <adapt + type="org.eclipse.core.resources.IResource"> + <test + property="org.eclipse.core.resources.extension" + value="casr"> + </test> + </adapt> + </iterate> + </with> + </definition> + + <definition + id="eu.piacere.piacereTool.propertyTesters.extensionPropertyTester.isJSON.id"> + <with + variable="activeMenuSelection"> + <iterate + ifEmpty="false"> + <adapt + type="org.eclipse.core.resources.IResource"> + <test + property="org.eclipse.core.resources.extension" + value="json"> + </test> + </adapt> + </iterate> + </with> + </definition> + </extension> +</plugin> diff --git a/Source Code/V2.0/PiacereToolExtensions/src/eu/piacere/piacereTool/commandHandlers/GenerateDOMLXfromDOMLCommandHandler.java b/Source Code/V2.0/PiacereToolExtensions/src/eu/piacere/piacereTool/commandHandlers/GenerateDOMLXfromDOMLCommandHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..91217e9c0de2f8447a783e445d0daafa1485d497 --- /dev/null +++ b/Source Code/V2.0/PiacereToolExtensions/src/eu/piacere/piacereTool/commandHandlers/GenerateDOMLXfromDOMLCommandHandler.java @@ -0,0 +1,84 @@ +package eu.piacere.piacereTool.commandHandlers; + +import java.io.IOException; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.Path; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; +import org.eclipse.emf.ecore.util.EcoreUtil; +import org.eclipse.jface.dialogs.ProgressMonitorDialog; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.ui.handlers.HandlerUtil; + +import eu.piacere.doml.doml.commons.DOMLModel; +import eu.piacere.piacereTool.utils.ToolCustomizationUtils; + +public class GenerateDOMLXfromDOMLCommandHandler extends AbstractHandler{ + + + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + ToolCustomizationUtils.saveWorkbench(); + ISelection selection = HandlerUtil.getCurrentSelection(event); + if (selection instanceof StructuredSelection) { + if(((StructuredSelection)selection).getFirstElement() instanceof IFile){ + IFile res = (IFile)((StructuredSelection) selection).getFirstElement(); + ResourceSet rs = new ResourceSetImpl(); + Resource r = rs.getResource(URI.createURI(res.getLocationURI().toString()), true); + try { + r.load(null); + } catch (IOException e) { + e.printStackTrace(); + } + DOMLModel theDOMLModel = (DOMLModel) r.getContents().get(0); + String domlModelName=ToolCustomizationUtils.getDOMLModelName(); + try { + save(theDOMLModel, domlModelName, rs, res); + } catch (IOException | CoreException e) { + e.printStackTrace(); + } + } + } + return null; + } + + private void save(DOMLModel theDOMLModel, String domlModelName, ResourceSet rs, IFile modelFile) throws IOException, CoreException { + IContainer project = modelFile.getParent(); + if(project.findMember(domlModelName+".domlx")!=null){ + if(ToolCustomizationUtils.showQuestionDialog("Overwrite", "\""+domlModelName+"\" DOML Model already exists.\nDou you want to overwrite it?")){ + + project.getFile(new Path(domlModelName+".domlx")).delete(true, null); + + } + else{ + return; + } + } + ProgressMonitorDialog pd=new ProgressMonitorDialog(ToolCustomizationUtils.getActiveShell()); + try { + pd.open(); + IFile target = project.getFile(new Path(domlModelName+".domlx")); + Resource targetRes = rs.createResource(URI.createURI(target.getLocationURI().toString())); + targetRes.getContents().add(EcoreUtil.copy(theDOMLModel)); + targetRes.save(null); + pd.close(); + ToolCustomizationUtils.showInformationDialog("Generator Result", "Your \""+domlModelName+"\" DOML Model has been generated succesfully."); + + project.refreshLocal(IResource.DEPTH_INFINITE, null); + } catch (Exception e) { + pd.close(); + ToolCustomizationUtils.showErrorDialog("Error Generating DOMLX Model", "There was an error generating the DOMLX model:\n\n"+e.getMessage()); + e.printStackTrace(); + } + } +} diff --git a/Source Code/V2.0/PiacereToolExtensions/src/eu/piacere/piacereTool/commandHandlers/GenerateDOMLfromDOMLXCommandHandler.java b/Source Code/V2.0/PiacereToolExtensions/src/eu/piacere/piacereTool/commandHandlers/GenerateDOMLfromDOMLXCommandHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..ed2119dcf8969b0d657b040699a4ece54b49b670 --- /dev/null +++ b/Source Code/V2.0/PiacereToolExtensions/src/eu/piacere/piacereTool/commandHandlers/GenerateDOMLfromDOMLXCommandHandler.java @@ -0,0 +1,84 @@ +package eu.piacere.piacereTool.commandHandlers; + +import java.io.IOException; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.Path; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; +import org.eclipse.emf.ecore.util.EcoreUtil; +import org.eclipse.jface.dialogs.ProgressMonitorDialog; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.ui.handlers.HandlerUtil; + +import eu.piacere.doml.doml.commons.DOMLModel; +import eu.piacere.piacereTool.utils.ToolCustomizationUtils; + +public class GenerateDOMLfromDOMLXCommandHandler extends AbstractHandler{ + + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + ToolCustomizationUtils.saveWorkbench(); + ISelection selection = HandlerUtil.getCurrentSelection(event); + if (selection instanceof StructuredSelection) { + if(((StructuredSelection)selection).getFirstElement() instanceof IFile){ + IFile res = (IFile)((StructuredSelection) selection).getFirstElement(); + ResourceSet rs = new ResourceSetImpl(); + Resource r = rs.getResource(URI.createURI(res.getLocationURI().toString()), true); + try { + r.load(null); + } catch (IOException e) { + e.printStackTrace(); + } + DOMLModel theDOMLModel = (DOMLModel) r.getContents().get(0); + String domlModelName=ToolCustomizationUtils.getDOMLModelName(); + try { + save(theDOMLModel, domlModelName, rs, res); + } catch (IOException | CoreException e) { + e.printStackTrace(); + } + } + } + return null; + } + + private void save(DOMLModel theDOMLModel, String domlModelName, ResourceSet rs, IFile modelFile) throws IOException, CoreException { + IContainer modelFileContainer=modelFile.getParent(); + if(modelFile.getParent().findMember(domlModelName+".doml")!=null){ + if(ToolCustomizationUtils.showQuestionDialog("Overwrite", "\""+domlModelName+"\" DOML Specification already exists.\nDou you want to overwrite it?")){ + modelFile.delete(true, null); + } + else{ + return; + } + } + ProgressMonitorDialog pd=new ProgressMonitorDialog(ToolCustomizationUtils.getActiveShell()); + try { + + pd.open(); + IFile target = modelFileContainer.getFile(new Path(domlModelName+".doml")); + Resource targetRes = rs.createResource(URI.createURI(target.getLocationURI().toString())); + targetRes.getContents().add(EcoreUtil.copy(theDOMLModel)); + targetRes.save(null); + pd.close(); + ToolCustomizationUtils.showInformationDialog("Generator Result", "Your \""+domlModelName+"\" DOML Specification has been generated succesfully."); + + modelFileContainer.refreshLocal(IResource.DEPTH_INFINITE, null); + } catch (Exception e) { + pd.close(); + ToolCustomizationUtils.showErrorDialog("Error Generating DOML", "There was ana error generating the .doml file:\n\n"+e.getMessage()); + e.printStackTrace(); + } + } +} diff --git a/Source Code/V2.0/PiacereToolExtensions/src/eu/piacere/piacereTool/dialogs/GetAppDialog.java b/Source Code/V2.0/PiacereToolExtensions/src/eu/piacere/piacereTool/dialogs/GetAppDialog.java new file mode 100644 index 0000000000000000000000000000000000000000..48bb543ef2ae92d8b2c52106ee2eb5451ff0d428 --- /dev/null +++ b/Source Code/V2.0/PiacereToolExtensions/src/eu/piacere/piacereTool/dialogs/GetAppDialog.java @@ -0,0 +1,157 @@ +package eu.piacere.piacereTool.dialogs; + +import java.util.ArrayList; + +import org.eclipse.jface.dialogs.IDialogConstants; +import org.eclipse.jface.dialogs.IMessageProvider; +import org.eclipse.jface.dialogs.TitleAreaDialog; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.ModifyEvent; +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.swt.widgets.Text; + + +public class GetAppDialog extends TitleAreaDialog { + + private Combo comboSelectExistant; + private Text textProvideNew; + + private String selection; + private String newProvided; + private ArrayList<String>elementsToSelect; + private String newItemMessage; + private String title; + private String message; + private Label lblText; + + public GetAppDialog(Shell parentShell, String title, String message, ArrayList<String> elementsToSelect, String newItemMessage) { + super(parentShell); + this.newItemMessage = newItemMessage; + this.title = title; + this.message = message; + this.elementsToSelect = elementsToSelect; + this.elementsToSelect.add("- " + newItemMessage+" -"); + + } + + @Override + public void create() { + super.create(); + setTitle(title); + setMessage(message, IMessageProvider.INFORMATION); + getButton(IDialogConstants.OK_ID).setEnabled(false); + } + + @Override + protected Control createDialogArea(Composite parent) { + Composite area = (Composite) super.createDialogArea(parent); + Composite container = new Composite(area, SWT.NONE); + container.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); + GridLayout layout = new GridLayout(2, false); + container.setLayout(layout); + + + createCombo(container); + CreateNewText(container); + + return area; + } + + private void createCombo(Composite container) { + Label lblCombo = new Label(container, SWT.NONE); + lblCombo.setText("Select: "); + + GridData dataFirstName = new GridData(); + dataFirstName.grabExcessHorizontalSpace = true; + dataFirstName.horizontalAlignment = GridData.FILL; + + comboSelectExistant = new Combo(container, SWT.BORDER| SWT.DROP_DOWN | SWT.READ_ONLY); + + String items[] = new String[this.elementsToSelect.size()]; + for(int i=0; i<this.elementsToSelect.size(); i++) { + items[i]=this.elementsToSelect.get(i); + } + comboSelectExistant.setItems(items); + comboSelectExistant.setLayoutData(dataFirstName); + comboSelectExistant.addModifyListener(new ModifyListener() { + + @Override + public void modifyText(ModifyEvent e) { + + if(e.getSource() instanceof Combo) { + Combo o = (Combo) e.getSource(); + if(elementsToSelect.get(o.getSelectionIndex()).equals("- " + newItemMessage+" -")) { + lblText.setVisible(true); + textProvideNew.setVisible(true); + getButton(IDialogConstants.OK_ID).setEnabled(false); + } + else { + lblText.setVisible(false); + textProvideNew.setVisible(false); + getButton(IDialogConstants.OK_ID).setEnabled(true); + } + } + } + }); + } + + private void CreateNewText(Composite container) { + lblText = new Label(container, SWT.NONE); + lblText.setText(newItemMessage+": "); + lblText.setVisible(false); + + GridData dataLastName = new GridData(); + dataLastName.grabExcessHorizontalSpace = true; + dataLastName.horizontalAlignment = GridData.FILL; + textProvideNew = new Text(container, SWT.BORDER); + textProvideNew.setLayoutData(dataLastName); + textProvideNew.setVisible(false); + textProvideNew.addModifyListener(new ModifyListener() { + + @Override + public void modifyText(ModifyEvent e) { + Text t = (Text)e.getSource(); + if(elementsToSelect.get(comboSelectExistant.getSelectionIndex()).equals("- " + newItemMessage+" -")){ + if(t.getText().trim().length()>0) { + getButton(IDialogConstants.OK_ID).setEnabled(true); + } + else { + getButton(IDialogConstants.OK_ID).setEnabled(false); + } + } + } + }); + } + + @Override + protected boolean isResizable() { + return false; + } + + private void saveInput() { + selection = comboSelectExistant.getText(); + newProvided = textProvideNew.getText(); + + } + + @Override + protected void okPressed() { + saveInput(); + super.okPressed(); + } + + public String getSelection() { + return selection; + } + + public String getNewProvided() { + return newProvided; + } +} diff --git a/Source Code/V2.0/PiacereToolExtensions/src/eu/piacere/piacereTool/dialogs/GetNameVersionDialog.java b/Source Code/V2.0/PiacereToolExtensions/src/eu/piacere/piacereTool/dialogs/GetNameVersionDialog.java new file mode 100644 index 0000000000000000000000000000000000000000..315cd84d4729c7bcc9c9cc5244e3ddbfece706f6 --- /dev/null +++ b/Source Code/V2.0/PiacereToolExtensions/src/eu/piacere/piacereTool/dialogs/GetNameVersionDialog.java @@ -0,0 +1,120 @@ +package eu.piacere.piacereTool.dialogs; + +import org.eclipse.jface.dialogs.IDialogConstants; +import org.eclipse.jface.dialogs.IMessageProvider; +import org.eclipse.jface.dialogs.TitleAreaDialog; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.ModifyEvent; +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.swt.widgets.Text; + + +public class GetNameVersionDialog extends TitleAreaDialog { + + private Text textProvideNew; + + private String newProvided; + private String title; + private String message; + + private String initialValue; + + private String newItemMessage; + + public GetNameVersionDialog(Shell parentShell, String title, String message, String initialValue, String newItemMessage) { + super(parentShell); + + this.title = title; + this.message = message; + this.newProvided=initialValue; + this.initialValue=initialValue; + + this.newItemMessage = newItemMessage; + + } + + @Override + public void create() { + super.create(); + setTitle(title); + setMessage(message, IMessageProvider.INFORMATION); + if(this.initialValue.trim().length()>0) { + getButton(IDialogConstants.OK_ID).setEnabled(true); + } + else { + getButton(IDialogConstants.OK_ID).setEnabled(false); + } + } + + @Override + protected Control createDialogArea(Composite parent) { + Composite area = (Composite) super.createDialogArea(parent); + Composite container = new Composite(area, SWT.NONE); + container.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); + GridLayout layout = new GridLayout(2, false); + container.setLayout(layout); + + + createText(container); + + return area; + } + + + + private void createText(Composite container) { + Label lblText = new Label(container, SWT.NONE); + lblText.setText(newItemMessage+": "); + lblText.setVisible(true); + + GridData dataLastName = new GridData(); + dataLastName.grabExcessHorizontalSpace = true; + dataLastName.horizontalAlignment = GridData.FILL; + textProvideNew = new Text(container, SWT.BORDER); + textProvideNew.setLayoutData(dataLastName); + textProvideNew.setVisible(true); + textProvideNew.setText(initialValue); + textProvideNew.addModifyListener(new ModifyListener() { + + + @Override + public void modifyText(ModifyEvent e) { + Text t = (Text)e.getSource(); + + if(t.getText().trim().length()>0) { + getButton(IDialogConstants.OK_ID).setEnabled(true); + } + else { + getButton(IDialogConstants.OK_ID).setEnabled(false); + } + + } + }); + } + + @Override + protected boolean isResizable() { + return false; + } + + private void saveInput() { + newProvided = textProvideNew.getText(); + + } + + @Override + protected void okPressed() { + saveInput(); + super.okPressed(); + } + + public String getNewProvided() { + return newProvided; + } +} diff --git a/Source Code/V2.0/PiacereToolExtensions/src/eu/piacere/piacereTool/propertyTesters/ExtensionPropertyTester.java b/Source Code/V2.0/PiacereToolExtensions/src/eu/piacere/piacereTool/propertyTesters/ExtensionPropertyTester.java new file mode 100755 index 0000000000000000000000000000000000000000..22d4492e9b1d6ed6fb110e45786c96f896278836 --- /dev/null +++ b/Source Code/V2.0/PiacereToolExtensions/src/eu/piacere/piacereTool/propertyTesters/ExtensionPropertyTester.java @@ -0,0 +1,18 @@ +package eu.piacere.piacereTool.propertyTesters; + +import org.eclipse.core.expressions.PropertyTester; +import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl; +import org.eclipse.jface.viewers.StructuredSelection; + +public class ExtensionPropertyTester extends PropertyTester { + + @Override + public boolean test(Object receiver, String property, Object[] args, Object expectedValue) { + if(receiver instanceof StructuredSelection) + if(((StructuredSelection)receiver).getFirstElement() instanceof XMIResourceImpl){ + return ((XMIResourceImpl)((StructuredSelection)receiver).getFirstElement()).getURI().fileExtension().equals(expectedValue.toString()); + } + return false; + } + +} diff --git a/Source Code/V2.0/PiacereToolExtensions/src/eu/piacere/piacereTool/utils/FileUtils.java b/Source Code/V2.0/PiacereToolExtensions/src/eu/piacere/piacereTool/utils/FileUtils.java new file mode 100644 index 0000000000000000000000000000000000000000..5f1e9dca05db5ef0d010aa7768db7928a8a4dc04 --- /dev/null +++ b/Source Code/V2.0/PiacereToolExtensions/src/eu/piacere/piacereTool/utils/FileUtils.java @@ -0,0 +1,109 @@ +package eu.piacere.piacereTool.utils; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Date; + +import org.apache.commons.io.IOUtils; +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IFolder; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.core.runtime.Path; +import org.eclipse.jface.dialogs.ProgressMonitorDialog; + +public final class FileUtils { + + + + public static String getTimestamp() { + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss"); + return sdf.format(new Date()); + } + + public static String getIFileContents(IFile theFileToRead) { + String content=null; + try { + content = IOUtils.toString(theFileToRead.getContents(), theFileToRead.getCharset()); + } catch (IOException | CoreException e2) { + e2.printStackTrace(); + } + return content; + } + + public static String autoIndentFileContent(String codeString){ + String[] lines=codeString.split("\n"); + StringBuilder res=new StringBuilder(); + int identation=0; + for(int i=0; i<lines.length;i++){ + if(lines[i].contains("}")) + identation--; + for(int j=0; j<identation; j++){ + res.append("\t"); + } + res.append(lines[i]); + res.append("\n"); + if(lines[i].contains("{")) + identation++; + } + return res.toString(); + } + + public static IFile createFile(String name, IContainer container) { + return FileUtils.createFile(name, container, new NullProgressMonitor()); + } + + public static IFile createFile(String name, IContainer container, IProgressMonitor progressMonitor) { + return FileUtils.createFile(name, container, "", progressMonitor); + } + + public static IFile createFile(String name, IContainer container, ProgressMonitorDialog progressMonitorDialog) { + return FileUtils.createFile(name, container, "", progressMonitorDialog.getProgressMonitor()); + } + + public static IFile createFile(String name, IContainer container, String content, ProgressMonitorDialog progressMonitorDialog) { + return FileUtils.createFile(name, container, content, progressMonitorDialog.getProgressMonitor()); + } + + public static IFile createFile(String name, IContainer container, String content, IProgressMonitor progressMonitor) { + IFile file = container.getFile(new Path(name)); + FileUtils.assertExist(file.getParent(), progressMonitor); + try { + InputStream stream = new ByteArrayInputStream(content.getBytes(file.getCharset())); + if (file.exists()) { + file.setContents(stream, true, true, progressMonitor); + } + else { + file.create(stream, true, progressMonitor); + } + stream.close(); + } + catch (Exception e) { + e.printStackTrace(); + } + progressMonitor.worked(1); + return file; + } + + + public static void assertExist(IContainer c, IProgressMonitor progressMonitor) { + if (!c.exists()) { + if (!c.getParent().exists()) { + assertExist(c.getParent(),progressMonitor); + } + if (c instanceof IFolder) { + try { + ((IFolder) c).create(false, true, progressMonitor); + } + catch (final CoreException e) { + e.printStackTrace(); + } + } + } + } +} diff --git a/Source Code/V2.0/PiacereToolExtensions/src/eu/piacere/piacereTool/utils/ModelUtils.java b/Source Code/V2.0/PiacereToolExtensions/src/eu/piacere/piacereTool/utils/ModelUtils.java new file mode 100644 index 0000000000000000000000000000000000000000..e23117442eae3d6dfcbbfb6c7c761fa62488c58d --- /dev/null +++ b/Source Code/V2.0/PiacereToolExtensions/src/eu/piacere/piacereTool/utils/ModelUtils.java @@ -0,0 +1,44 @@ +package eu.piacere.piacereTool.utils; + +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; +import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl; + +public class ModelUtils { + + public static EObject loadEMFModelRoot(IFile modelFile){ + String str = ResourcesPlugin.getWorkspace().getRoot().getLocation().toString(); + String inputModelPath = str + ((IFile)modelFile).getFullPath().toString(); + return loadEMFModelRoot(inputModelPath); + } + + public static EObject loadEMFModelRoot(String modelPath){ + XMIResourceFactoryImpl _xmiFac = new XMIResourceFactoryImpl(); + ResourceSet rSet = new ResourceSetImpl(); + rSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("*", _xmiFac); + URI uri = null; + if(modelPath.startsWith("platform:/plugin")) + uri=URI.createPlatformPluginURI(modelPath.replace("platform:/plugin", ""), false); + else{ + uri=URI.createFileURI(modelPath); + } + Resource res = rSet.getResource(uri, true); + return res.getContents().get(0); + } + + + public static void setupAndSaveEMFInstanceResource(String newModelFileName, IContainer newModelFileContainer, EObject modelRoot, String extension) { + IFile f=FileUtils.createFile(newModelFileName+"."+extension, newModelFileContainer); + ResourceSet rs = new ResourceSetImpl(); + Resource resource = ResourceUtils.createResource(f.getLocation().toString(), new String[] {extension, "xml"}, rs); + resource.getContents().add(modelRoot); + ResourceUtils.saveResource(resource); + } + +} diff --git a/Source Code/V2.0/PiacereToolExtensions/src/eu/piacere/piacereTool/utils/PluginUtils.java b/Source Code/V2.0/PiacereToolExtensions/src/eu/piacere/piacereTool/utils/PluginUtils.java new file mode 100644 index 0000000000000000000000000000000000000000..d0ebcc01742f22de17b1371487a1a9dd56940f81 --- /dev/null +++ b/Source Code/V2.0/PiacereToolExtensions/src/eu/piacere/piacereTool/utils/PluginUtils.java @@ -0,0 +1,114 @@ +package eu.piacere.piacereTool.utils; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import org.eclipse.core.resources.IFolder; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IProjectDescription; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.Path; +import org.eclipse.jdt.core.IClasspathEntry; +import org.eclipse.jdt.core.IJavaProject; +import org.eclipse.jdt.core.JavaCore; +import org.eclipse.jdt.launching.JavaRuntime; + +public final class PluginUtils { + + public static IProject createPluginProject(IProject baseProject, List<String> sourceFoldersNames, List<String> extraFolders, IProgressMonitor progressMonitor) throws CoreException{ + + if(!baseProject.exists()) + baseProject.create(progressMonitor); + if(!baseProject.isOpen()) + baseProject.open(progressMonitor); + + IProjectDescription projectDescription=ResourcesPlugin.getWorkspace().newProjectDescription(baseProject.getName()); + //projectDescription.setLocation(null); + projectDescription.setNatureIds(new String[]{"org.eclipse.pde.PluginNature", JavaCore.NATURE_ID}); + baseProject.setDescription(projectDescription, null); + + + IJavaProject javaProject = JavaCore.create(baseProject); + IFolder binFolder = baseProject.getFolder("bin"); + if(!binFolder.exists()) + binFolder.create(true, true, null); + javaProject.setOutputLocation(binFolder.getFullPath(), null); + + + for(String extraFolderName : extraFolders){ + IFolder temp = baseProject.getFolder(extraFolderName); + temp.create(false, true, progressMonitor); + } + + List<IClasspathEntry> classpathEntries = new ArrayList<IClasspathEntry>(); + + classpathEntries.add(JavaCore.newContainerEntry(JavaRuntime.newDefaultJREContainerPath())); + classpathEntries.add(JavaCore.newContainerEntry(new Path("org.eclipse.pde.core.requiredPlugins"))); + + for(String sourceFolderName: sourceFoldersNames){ + IFolder sourceFolder = baseProject.getFolder(sourceFolderName); + sourceFolder.create(false, true, null); + classpathEntries.add(JavaCore.newSourceEntry(sourceFolder.getFullPath())); + } + + javaProject.setRawClasspath(classpathEntries.toArray(new IClasspathEntry[classpathEntries.size()]), null); + FileUtils.createFile("plugin.xml", baseProject, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<?eclipse version=\"3.4\"?>\n<plugin/>", progressMonitor); + PluginUtils.createBuildProps(baseProject, sourceFoldersNames, extraFolders, progressMonitor); + + return baseProject; + } + + public static void createBuildProps(IProject project, List<String> srcFolders, List<String> extraFolders, IProgressMonitor progressMonitor) { + StringBuilder bpContent = new StringBuilder("source.. = "); + for (Iterator<String> iterator = srcFolders.iterator(); iterator.hasNext();) { + bpContent.append(iterator.next()).append('/'); + if (iterator.hasNext()) { + bpContent.append(","); + } + } + bpContent.append("\n"); + bpContent.append("bin.includes = META-INF/,\\\n"); + //bpContent.append("plugin.xml,\\\n"); + for(String extraFolderName:extraFolders) + bpContent.append(extraFolderName+"/,\\\n"); + bpContent.append(".\n"); + FileUtils.createFile("build.properties", project, bpContent.toString(), progressMonitor); + } + + + //public static void createManifest(IProject project,String rootPackageName ,List<String> importedPackages, List<String> exportedPackages, IProgressMonitor progressMonitor)throws CoreException { + public static void createManifest(IProject project, String rootPackageName ,List<String> importedPackages, List<String> exportedPackages, String version, IProgressMonitor progressMonitor)throws CoreException { + StringBuilder maniContent = new StringBuilder("Manifest-Version: 1.0\n"); + maniContent.append("Bundle-ManifestVersion: 2\n"); + //maniContent.append("Bundle-RequiredExecutionEnvironment: JavaSE-1.8\n"); + maniContent.append("Bundle-Name: " + project.getName() + "\n"); + maniContent.append("Bundle-SymbolicName: " + project.getName() + "; singleton:=true\n"); + maniContent.append("Bundle-Version: "+version+"\n"); + maniContent.append("Bundle-Vendor: TaTAmI-ProS\n"); + maniContent.append("Bundle-Activator: "+rootPackageName+".activator.Activator\n"); + maniContent.append("Import-Package: "); + + if(importedPackages!=null){ + for (String entry : importedPackages) { + maniContent.append(" " + entry + ",\n"); + } + } + + maniContent.append(" org.osgi.framework\n"); + + if (exportedPackages != null && !exportedPackages.isEmpty()) { + maniContent.append("Export-Package: " + exportedPackages.get(0)); + for (int i = 1, x = exportedPackages.size(); i < x; i++) { + maniContent.append(",\n " + exportedPackages.get(i)); + } + maniContent.append("\n"); + } + + IFolder metaInf = project.getFolder("META-INF"); + metaInf.create(false, true, progressMonitor); + FileUtils.createFile("MANIFEST.MF", metaInf, maniContent.toString(), progressMonitor); + } +} diff --git a/Source Code/V2.0/PiacereToolExtensions/src/eu/piacere/piacereTool/utils/ResourceUtils.java b/Source Code/V2.0/PiacereToolExtensions/src/eu/piacere/piacereTool/utils/ResourceUtils.java new file mode 100644 index 0000000000000000000000000000000000000000..0d820a62c8c1c9e80d492792199cc57bf3e0ce8a --- /dev/null +++ b/Source Code/V2.0/PiacereToolExtensions/src/eu/piacere/piacereTool/utils/ResourceUtils.java @@ -0,0 +1,46 @@ +package eu.piacere.piacereTool.utils; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Hashtable; +import java.util.Map; + +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.ecore.resource.impl.ResourceImpl; +import org.eclipse.emf.ecore.xmi.XMLResource; +import org.eclipse.emf.ecore.xmi.impl.XMLResourceFactoryImpl; + + +public class ResourceUtils { + + public static Resource createResource(String outputFileURI, String[] fileExtensions, ResourceSet rs) { + for (String fileExt : fileExtensions) { + rs.getResourceFactoryRegistry().getExtensionToFactoryMap().put(fileExt, new XMLResourceFactoryImpl()); + } + URI uri = URI.createFileURI(outputFileURI); + + Resource resource = rs.createResource(uri); + ((ResourceImpl)resource).setIntrinsicIDToEObjectMap(new Hashtable<String, EObject>()); + return resource; + } + + public static void saveResource(Resource resource) { + Map<Object, Object> saveOptions = ((XMLResource)resource).getDefaultSaveOptions(); + saveOptions.put(XMLResource.OPTION_CONFIGURATION_CACHE, Boolean.TRUE); + saveOptions.put(XMLResource.OPTION_USE_CACHED_LOOKUP_TABLE, new ArrayList<Object>()); + try { + resource.save(saveOptions); + } catch (IOException e) { + e.printStackTrace(); + throw new RuntimeException(e); + } + } + + + + + +} \ No newline at end of file diff --git a/Source Code/V2.0/PiacereToolExtensions/src/eu/piacere/piacereTool/utils/ToolCustomizationUtils.java b/Source Code/V2.0/PiacereToolExtensions/src/eu/piacere/piacereTool/utils/ToolCustomizationUtils.java new file mode 100755 index 0000000000000000000000000000000000000000..2b628896bfa06c735eea5fa02a599ac343e88a48 --- /dev/null +++ b/Source Code/V2.0/PiacereToolExtensions/src/eu/piacere/piacereTool/utils/ToolCustomizationUtils.java @@ -0,0 +1,157 @@ +package eu.piacere.piacereTool.utils; + +import java.util.ArrayList; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.Path; +import org.eclipse.core.runtime.preferences.ConfigurationScope; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.xmi.XMIResource; +import org.eclipse.gef.EditPart; +import org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart; +import org.eclipse.gmf.runtime.notation.impl.DiagramImpl; +import org.eclipse.gmf.runtime.notation.impl.ViewImpl; +import org.eclipse.jface.dialogs.InputDialog; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.viewers.TreePath; +import org.eclipse.jface.window.Window; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.preferences.ScopedPreferenceStore; +import org.osgi.framework.FrameworkUtil; + + + + +public class ToolCustomizationUtils { + + public static String getPreference(Class<?> theClass, String preferenceID) { + ScopedPreferenceStore scopedPreferenceStore = new ScopedPreferenceStore(ConfigurationScope.INSTANCE,(FrameworkUtil.getBundle(theClass)).getSymbolicName()); + return scopedPreferenceStore.getString(preferenceID); + } + + protected static Logger logger = LogManager.getLogger(ToolCustomizationUtils.class); + + public static Path getFullPath(URI uri){ + if(uri.toString().startsWith("platform:/resource")){ + return new Path(ResourcesPlugin.getWorkspace().getRoot().getLocation().toString() + uri.toString().replace("platform:/resource", "")); + } + else if(uri.toString().startsWith("file:")){ + return new Path(uri.toString().replace("file:", "")); + } + return null; + } + + public static void saveWorkbench(){ + IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); + if(page!=null){ + IEditorPart editor = page.getActiveEditor(); + if(editor!=null){ + page.saveEditor(editor, true); + } + } + } + + public static EObject getRootEObjectFromResource(ISelection selection){ + return getRootEObjectFromResource((XMIResource)((StructuredSelection)selection).getFirstElement()); + } + + public static EObject getRootEObjectFromResource(XMIResource resource){ + return resource.getContents().get(0); + } + + public static EObject getEObjectFromDiagramSelection(ISelection selection){ + EditPart ep = (EditPart) ((StructuredSelection)selection).getFirstElement(); + if(ep instanceof DiagramEditPart){ + return ((DiagramImpl) ep.getModel()).getElement(); + } + return ((ViewImpl)ep.getModel()).getElement(); + } + + public static String getInputModelPathFromSelection(ISelection selection){ + return ResourcesPlugin.getWorkspace().getRoot().getLocation().toString() + ((IFile)((StructuredSelection) selection).getFirstElement()).getFullPath().toString(); + } + + public static String getInputModelPathFromTreePath(TreePath path){ + return ResourcesPlugin.getWorkspace().getRoot().getLocation().toString() + ((IFile) path.getSegment(path.getSegmentCount()-1)).getFullPath().toString(); + } + + public static void showErrors(String modelType, ArrayList<String> validationResults){ + String errors="There are ERRORS in your "+modelType+":\n\n"; + for(String error:validationResults){ + errors+="\t- "+error+"\n"; + logger.error("\t- "+error); + } + showErrorDialog("Validation Result",errors); + } + + public static String doDialogAsk(String title, String questionText, String providedExample){ + String s=doDialogAskWithoutPostProcess(title, questionText,providedExample); + if ((s != null) && (s.length() > 0)) { + if(s.endsWith(".")){ + s=s.substring(0, s.length()-1); + } + return s.replace(" ", "_"); + } + return null; + } + + + + public static String doDialogAskWithoutPostProcess(String title, String questionText, String providedExample){ + InputDialog dialogAsk=new InputDialog(getActiveShell(), title, questionText+":", providedExample, null); + if(dialogAsk.open()==Window.OK){ + return dialogAsk.getValue(); + } + return null; + } + + + public static Shell getActiveShell() { + Display display = Display.getDefault(); + Shell result = display.getActiveShell(); + + if (result == null) { + Shell[] shells = display.getShells(); + for (Shell shell : shells) { + if (shell.getShells().length == 0) { + if (result != null) + try { + //throw new Exception(); + } catch (Exception e) { + e.printStackTrace(); + } + result = shell; + } + } + } + + return result; + } + + public static void showErrorDialog(String title, String message){ + MessageDialog.openError(getActiveShell(), title, message); + } + + public static boolean showQuestionDialog(String title, String message){ + return MessageDialog.openQuestion(getActiveShell(), title, message); + } + + public static void showInformationDialog(String title, String message){ + MessageDialog.openInformation(getActiveShell(), title, message); + } + + public static String getDOMLModelName() { + return ToolCustomizationUtils.doDialogAsk("DOML Model Name", "Enter the DOML Model Name", "GeneratedDOML"); + } + +} diff --git a/Source Code/V2.0/PiacereToolProduct/.classpath b/Source Code/V2.0/PiacereToolProduct/.classpath new file mode 100755 index 0000000000000000000000000000000000000000..791f73318fb4e40a3caac6d9bd1eabd9d6b1c626 --- /dev/null +++ b/Source Code/V2.0/PiacereToolProduct/.classpath @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"> + <attributes> + <attribute name="module" value="true"/> + </attributes> + </classpathentry> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/Source Code/V2.0/PiacereToolProduct/.gitignore b/Source Code/V2.0/PiacereToolProduct/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..ae3c1726048cd06b9a143e0376ed46dd9b9a8d53 --- /dev/null +++ b/Source Code/V2.0/PiacereToolProduct/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/Source Code/V2.0/PiacereToolProduct/.project b/Source Code/V2.0/PiacereToolProduct/.project new file mode 100644 index 0000000000000000000000000000000000000000..bc48142ea60cb987ff9ac3d90cf88d574fc742f7 --- /dev/null +++ b/Source Code/V2.0/PiacereToolProduct/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>PiacereToolProduct</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/Source Code/V2.0/PiacereToolProduct/META-INF/MANIFEST.MF b/Source Code/V2.0/PiacereToolProduct/META-INF/MANIFEST.MF new file mode 100755 index 0000000000000000000000000000000000000000..23c4dc35d10f9768ae1271d89323f5bed65476c2 --- /dev/null +++ b/Source Code/V2.0/PiacereToolProduct/META-INF/MANIFEST.MF @@ -0,0 +1,6 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: PiacereToolProduct +Bundle-SymbolicName: PiacereToolProduct;singleton:=true +Bundle-Version: 1.0.0.qualifier +Bundle-Vendor: TaTAmI diff --git a/Source Code/V2.0/PiacereToolProduct/Piacere/PiacereIcon.icns b/Source Code/V2.0/PiacereToolProduct/Piacere/PiacereIcon.icns new file mode 100644 index 0000000000000000000000000000000000000000..dc85bd35fdb471de2d3e2bb6385b0e2ea53ffa9d Binary files /dev/null and b/Source Code/V2.0/PiacereToolProduct/Piacere/PiacereIcon.icns differ diff --git a/Source Code/V2.0/PiacereToolProduct/Piacere/PiacereIcon.ico b/Source Code/V2.0/PiacereToolProduct/Piacere/PiacereIcon.ico new file mode 100644 index 0000000000000000000000000000000000000000..955b5c0d349d28067df94598efa145a65192806b Binary files /dev/null and b/Source Code/V2.0/PiacereToolProduct/Piacere/PiacereIcon.ico differ diff --git a/Source Code/V2.0/PiacereToolProduct/Piacere/PiacereIcon.xpm b/Source Code/V2.0/PiacereToolProduct/Piacere/PiacereIcon.xpm new file mode 100644 index 0000000000000000000000000000000000000000..7000c4a32e578bfea5036948d7979f19bfe1d1a5 --- /dev/null +++ b/Source Code/V2.0/PiacereToolProduct/Piacere/PiacereIcon.xpm @@ -0,0 +1,478 @@ +/* XPM */ +static char *e536e75a96154664d52eafc12d0b7d5bUyTTPc7n3PFFgmmI[] = { +/* columns rows colors chars-per-pixel */ +"277 320 152 2 ", +" c None", +". c #07AE78", +"X c #07AF7A", +"o c #09AE78", +"O c #08AF78", +"+ c #09AF78", +"@ c #08AF79", +"# c #09AF79", +"$ c #08AF7A", +"% c #07B078", +"& c #08B079", +"* c #09B079", +"= c #08B07A", +"- c #09B07A", +"; c #0EB079", +": c #08B57B", +"> c #0FB57B", +", c #12B475", +"< c #12B476", +"1 c #1AB373", +"2 c #19B779", +"3 c #10BB7E", +"4 c #19BC7C", +"5 c #32B66D", +"6 c #3CB96E", +"7 c #21B573", +"8 c #21B574", +"9 c #22B574", +"0 c #21B674", +"q c #21B675", +"w c #29B573", +"e c #24B679", +"r c #21BE7B", +"t c #29BC79", +"y c #31B473", +"u c #3BB672", +"i c #30BC74", +"p c #3ABC73", +"a c #37BC79", +"s c #41B66D", +"d c #4ABA6E", +"f c #4ABB6E", +"g c #4ABC6E", +"h c #52BD6A", +"j c #5ABC6C", +"k c #5ABD6C", +"l c #5ABD6D", +"z c #5ABE6C", +"x c #42BD73", +"c c #4BBE72", +"v c #50BB72", +"b c #59BF72", +"n c #6DBF64", +"m c #63BE6B", +"M c #63BE6C", +"N c #6BBB6B", +"B c #73BF68", +"V c #2FC079", +"C c #3CC377", +"Z c #54C16C", +"A c #42C477", +"S c #4AC575", +"D c #52C574", +"F c #5AC673", +"G c #6EC565", +"H c #63C36D", +"J c #6BC56C", +"K c #73C564", +"L c #7BC562", +"P c #7BC463", +"I c #7AC563", +"U c #7BC563", +"Y c #7BC663", +"T c #7CC563", +"R c #7BC664", +"E c #74C66A", +"W c #7CC769", +"Q c #75CC6D", +"! c #7BCE6C", +"~ c #62C872", +"^ c #6DCC71", +"/ c #8BC55A", +"( c #8BC65A", +") c #9DCE54", +"_ c #92C65A", +"` c #96CD5A", +"' c #9BCE59", +"] c #9DCF58", +"[ c #9CCE59", +"{ c #9CCF59", +"} c #9DD35D", +"| c #B5D54B", +" . c #BCD549", +".. c #BCD54A", +"X. c #BCD64A", +"o. c #BCD74B", +"O. c #BEDB4A", +"+. c #BFDB4A", +"@. c #A5CE53", +"#. c #A5CF53", +"$. c #ACCE52", +"%. c #ADCE53", +"&. c #A5CC59", +"*. c #A5CD59", +"=. c #A5D053", +"-. c #ADD651", +";. c #ADD751", +":. c #ADD552", +">. c #A6D65B", +",. c #ABD759", +"<. c #A8DB5F", +"1. c #B2D151", +"2. c #B5D753", +"3. c #BBD650", +"4. c #B6DD55", +"5. c #BDDF52", +"6. c #B0DD5A", +"7. c #83C562", +"8. c #83C662", +"9. c #84C562", +"0. c #8DC663", +"q. c #85CC65", +"w. c #8CCE63", +"e. c #83CF6A", +"r. c #93CD62", +"t. c #8ED366", +"y. c #95D564", +"u. c #9DD662", +"i. c #A3D961", +"p. c #C4D744", +"a. c #C7DD42", +"s. c #C8DD42", +"d. c #CDDD41", +"f. c #CCDE41", +"g. c #CDDE41", +"h. c #CEDF41", +"j. c #CCDD42", +"k. c #CDDD42", +"l. c #CCDE42", +"z. c #CDDE42", +"x. c #CDDF42", +"c. c #CDDE43", +"v. c #CEDE42", +"b. c #CEDF42", +"n. c #CEDE43", +"m. c #C6DE4A", +"M. c #C4E04F", +"N. c #CCE149", +"B. c #CEE64B", +"V. c #C8E34D", +"C. c #D7E743", +"Z. c #D2E749", +/* pixels */ +" ", +" T P q.8.T ", +" 8.7.q.7.7.q.9. ", +" R 8.q.7.7.7.7.8.q.q.P ", +" P 8.w.8.7.7.7.7.7.8.Y P e.P P ", +" 9.w.q.8.7.7.7.7.7.7.8.P Y Y P e.P T ", +" 8.q.q.7.7.7.7.7.7.7.8.8.8.P Y P P Y W e.Y ", +" _ ( t.8.7.7.7.7.7.7.7.8.8.8.8.P P Y Y P P Y W Y R ", +" 9.9.t.q.8.7.7.7.7.7.7.7.7.7.7.7.8.P P P P Y P Y P Y e.P P ", +" 8.t.w.7.7.8.7.7.7.7.7.7.7.7.7.7.7.8.P P Y Y P Y P Y P Y W ! Y Y ", +" ( w.t.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P Y P P Y P Y P Y P Y Y ! E Y ", +" _ w.y.w.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.Y P Y Y P Y P Y P Y P P K E ! E R ", +" 9.` r.w.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.P Y P P Y P Y P Y P Y R K K K E ! E T ", +" 8.w.r.0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P P Y P Y P Y P Y P R K K K K K Q E m ", +" ` r.r.w.( 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P P P Y P Y P P P P P K K K K K K E Q E P ", +" _ _ r.r.0.( ( 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.P P P Y P Y P P P P P R K K K K K B B E E E E z ", +" _ r.r.r.0.0.( ( 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.Y P Y P Y P Y P Y P Y P K K K K K E B B B n E J K T ", +" ` r.r.r._ 0.0.0.( ( 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.P Y P Y P Y P Y P Y P Y K K K K K B B B B n n G E G m ", +" ` r.r.r._ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.8.P P Y P Y P Y P Y P Y P K K K K K B B B B n n n n J J J m ", +" [ ` } r._ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.8.P Y P Y P Y P Y P Y P Y K K K K K B B B B n n n n n n J J m P ", +" ` u.` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P Y P Y P Y P Y P Y P K K K K K B B B B n n n n n n G N J J m j ", +" ` } } ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P Y P Y P Y P Y P Y P P K K K K K B B B B n n n n n n n N N N J J M ", +" _ ` u.` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P Y P Y P Y P Y P Y P K K K K K B B B B n n n n n n n N N N N m ^ m z ", +" } ` i.[ ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P Y P Y P Y P Y P Y P P K K K K K B B B B n n n n n n n N N N N m m J ^ m z ", +" ` u.} ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.P P Y Y P Y P Y P Y P P K K K K K K B B B n n n n n n n N N N N m m m m H ^ m z ", +" ' ` i.` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P P P Y P Y P Y P Y P K K K K K B B B B n n n n n n n N N N N m m m m m m J M M ", +" ' [ i.[ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P P Y P Y P Y P Y P P K K K K K B B B B n n n n n n n N N N N m m m m m m m H ~ m z ", +" } [ >.} [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.P P P P Y P Y P Y P Y P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m H H m z ", +" [ [ >.[ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.9.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P Y P Y P Y P Y P Y P R K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m H H j ", +" ' [ >.[ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.Y P Y P Y P Y P Y P Y R K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m m H H z ", +" =.&.>.} [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.8.7.8.8.8.P Y P Y P Y P Y P P P P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m z j H H z z ", +" [ >.>.[ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.8.8.8.8.8.P P Y P Y P Y P P P P P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m j z z j z b j z ", +" =.>.&.&.[ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.P P P Y P Y P Y P Y P Y K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m j z j z j z b b z ", +" =.&.>.[ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.7.P P P P Y P Y P Y P Y P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m z j z j z j z z b z z ", +" :.) ,.&.[ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.8.8.7.q.q.q.8.P P P Y P Y P Y P Y P Y K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m j z j z j z j j z j b z j ", +" =.,.@.&.) ' [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.8.e.P 8.P e.Y P Y P Y P Y P Y P Y P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m z j z j z j z z j z z Z D z ", +" @.,.,.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.q.q.R R q.e.P Y P Y P P Y P Y Y K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m z z j z j z j j z j z h h Z D g ", +" =.=.,.=.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.q.t.9.T Y e.W P P Y Y P Y P P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m j j z j z j z z j z j h h h v D v z ", +" =.=.6.,.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.8.7.7.7.t.7.9. Y Y e.Y P P Y P Y Y K K K K K E B B B n n n n n n n N N N N m m m m m m m m m m m m j z j z j z j j z j z h h h v v v D f j ", +" ;.,.,.=.=.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.8.7.w.w.( P W ! Y P Y P P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m z j z j z j z z j z j h h h v v v f c D c z ", +" =.$.,.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.9.0.w.q.8. P e.W P Y P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m j z j z j z j j z j z h h h v v v f f f D c f ", +" @.:.6.:.=.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.w.w.8. P W Y P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m z j z j z j z z j z j h h h v v v f f f f c S f z ", +" @.;.:.,.$.$.@.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.w.0.9. 9.P W E K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m z z j z j z j j z j z h h h v v v f f f f f f c c f j ", +" ;.:.2.$.%.$.$.=.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.w.w.( ( P K E E K K B B B B n n n n n n n N N N N m m m m m m m m m m m m j j z j z j z z j z j h h h v v v f f f f f f f f c s f ", +" =.:.2.:.$.$.$.$.$.@.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.w.0.` m K E E E B B B n n n n n n n N N N N m m m m m m m m m m m m j z j z j z j j z j z h h h v v v f f f f f f f f f x x x f ", +" :.%.2.:.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0.0.r.w.w.9. T K E E E B B n n n n n n n N N N N m m m m m m m m m m m m z j z j z j z z j z j h h h v v v f f f f f f f f f s s x x f z ", +" @.%.2.2.:.;.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.r.r.w.( T E E E B n n n n n n n N N N N m m m m m m m m m m m m j z j z j z j j z j z h h h v v v f f f f f f f f f s s s x x x f z ", +" :.2.2.;.;.;.;.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ r.y.0.( R E E E n n n n n n N N N N m m m m m m m m m m m m z j z j z j z z j z j h h h v v v f f f f f f f f f s s s s s x x p g ", +" #.2.2.;.;.;.;.;.;.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.=.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ y.r.` M G Q G n n n n N N N N m m m m m m m m m m m m j z j z j z j j z j z h h h v v v f f f f f f f f f s s s s s s 6 6 p p 8 ", +" :.1.4.:.1.:.;.;.;.;.:.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.@.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ r.y.` 9. T m Q E n n n N N N N m m m m m m m m m m m m z j z j z j z z j z j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 p u 8 ", +" :.5.2.1.1.1.:.:.:.;.:.;.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.=.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ r.u.r._ P E Q J G N N N N m m m m m m m m m m m m j z j z j z j j z j z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u p C w ", +" o.5.2.1.1.1.1.1.:.;.;.:.;.:.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.@.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` y.r.` R E Q N N N N m m m m m m m m m m m m z j z j z j z z j z j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u p a 8 ", +" o.| 5.1.1.1.1.1.1.1.-.-.:.;.:.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.=.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` u.` R Q J N N m m m m m m m m m m m m j z j z j z j j z j z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 a i 0 ", +" o.1.5.o.1.1.1.1.1.1.1.1.-.-.;.:.-.-.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.@.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` u._ 9. z m ^ J m m m m m m m m m m m m z j z j z j z z j z j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y i a w 8 ", +" O.5.5.| | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.=.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` } ` _ P J J m m m m m m m m m m m j z j z j z j j z j z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y i V 0 ", +" o.3.5.| | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.@.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` [ } ` M J J m m m m m m m m m z j z j z j z z j z j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y V i 8 ", +" s.O.M.o.| | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.=.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` } ` m J m m m m m m m m z z j z j z j j z j z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y i V w 8 ", +" o.O.O.5.o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.@.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ } [ [ j m J m m m m m m z j z j z j z z j z j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w i t 8 8 ", +" O.o.5.3. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.=.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ } } ` j m H m m m m j z j z j z j j z j z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w t w 8 ", +" o.O.m.O.o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.@.&.) [ [ [ [ [ [ [ [ [ [ [ [ } ` m m H m m z j z j z j z z j z j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w t w 8 ", +" a.O.O.m..... . . .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.=.&.) [ [ [ [ [ [ [ [ [ } } ) } z M m H m z j z j z j j z j z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w t t 8 8 ", +" o.O.O.o.o. . . . .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.@.&.) [ [ [ [ [ [ [ } >.[ ' z m H H z j z j z z j z j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w e e 8 8 ", +" O.O.O.O. . .o. .o. .O. . .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.=.&.) [ [ [ [ [ [ >.[ =. z z ~ z j z j j z j z h h h v v v f f f f f f f f g s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 e e e 8 ", +" .O.O.m.o.o. .o. .o. . . . . .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.%.=.@.=.@.=.@.=.@.=.@.&.) [ [ [ [ >.>.[ z m H j z z j z j h h h v v v f f f f f f f g g s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 e 8 8 ", +" .O.V.m... .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.@.=.@.=.@.=.@.=.@.&.) [ [ >.<.=.} j z F b j z j z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 r 8 8 ", +" O.B.O.O.O. .o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.=.&.) [ <.&.@. z z ~ b z j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 r 8 ", +" o.m.m.O.O.O.O. . .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.@.=.@.=.@.=.@.=.@.&.<.>.=. z b F j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 2 r 8 ", +" s.p.B.O.m.O.O.O.O. .o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.>.,.=.@. z F b h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 r 8 8 ", +" o.O.N.m.m.O.O.O.m.O.O. . .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.:.;.$.$.$.$.$.$.$.@.@.=.@.=.@.=.=.,.=.[ z z F v v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 2 r 8 8 ", +" O.N.N.p.O.o.O.O.O.O.O.O.o.o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.:.;.:.$.$.$.$.$.$.$.=.=.@.=.@.=.,.@.@. z v D v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 2 r 8 ", +" o.m.B.a.p.p.m.O.O.m.O.O.o.O.o. .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.:.;.$.$.$.$.$.$.$.@.@.=.=.,.,.=. g D Z f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 4 2 8 ", +" s.a.Z.m.p.p.p.p.O.O.O.O.O.O.m.O...o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.;.:.$.$.$.$.$.$.$.=.=.@.,.@.@. 8.8.Y f D f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 2 4 8 < ", +" o.a.N.c.a.p.p.p.p.p.o.m.o.O.O.O.O.m... .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.:.:.:.;.:.;.$.$.$.$.$.$.$.$.,.@.=. ( w.t.q.q.P P z f c f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < 2 2 8 8 ", +" O.a.N.a.a.a.p.p.p.p.p.m.O.O.O.m.O.O.o...o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.:.:.;.;.;.:.$.$.$.$.%.:.;.,.=. _ w.t.w.7.7.7.W ! E P z f c f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < 2 < 8 ", +" c.c.N.c.a.a.a.a.p.p.p.p.p.O.O.o.O.O.m.O.O. . .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.:.;.;.;.;.:.$.$.$.$.,.:.=. ` r.r.0.7.7.7.7.P P E E K T f c c f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < > > < ", +" s.c.N.c.a.a.a.a.a.a.p.p.p.p.p.O.O.m.O.O.O.O.O. .o. .o. .o. .o. .o. . ...| | | | | | 1.1.1.1.1.1.1.| ;.;.;.;.;.;.$.$.;.-.%.:. ` ` r.r.0.0.7.7.7.7.P P K E E J M z f c c s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < > > > < ", +" a.c.c.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.o.O.O.O.O.O.o. .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.:.:.;.2.:.=. ` } ` ` _ _ 0.0.7.7.7.7.P P K B n J J J z z f x x s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < > > ; e ", +" c.g.c.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.m.O.O.O.O.O...o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.:.2.;.=. [ [ } ' ` ` _ _ 0.0.7.7.7.7.P P K B n n N J m z z g f x x s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; > < 8 ", +" s.c.c.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.m.o.O.O.m... .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.:.-.-.2.2.:.@. =.>.&.' ) ` ` _ _ 0.0.8.8.8.8.P P K B n n N m m m b z f x x 6 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; > : < ", +" c.C.c.c.g.c.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.m.O.O.O.O.O...o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.2.4.-.:. @.,.,.=.[ [ ' ` ` _ _ 0.0.8.8.8.8.P P K B n n N m m z j b Z g z f A x 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; : ; ", +" c.g.c.g.c.g.c.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.O.O.O.O.O...o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.2.4.:.=. :.;.,.@.=.&.[ [ [ ` ` _ _ 0.0.8.8.7.7.P R K B n n N m m z z j h c c z 8 g A 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : ", +" g.c.g.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.O.o.m.O.O... .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.4.2.=. @.:.4.;.$.=.@.&.[ [ [ ` ` _ _ 0.0.7.7.7.7.R P K B n n N m m j j z v f f x f 8 g p C u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : $ ", +" c.g.c.g.c.g.c.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.m.O.O.O.m.o.m.O.o.o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.2.4.;. -.5.2.:.$.$.@.=.&.[ [ [ ` ` _ _ 0.0.7.7.7.7.P P K B n n N m m j z j v f f s x C f 8 C p u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.c.g.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.m.o.O.O.O.O.O... .o. .o. .o. .o. .o. .o.| | | | | | 1.1.2.5.:.:. o.O.5.| | ;.$.%.=.@.&.[ [ [ ` ` _ _ 0.0.7.7.7.7.P P K B n n N m m z j z v f f s 6 u a i 8 8 u C p 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.c.c.g.c.g.c.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.O.O.O.m.O...o. .o. .o. .o. .o. .o. .| | | | | | 1.5.2.=. s.o.M.3.| 1.1.-.$.$.@.=.&.[ [ [ ` ` _ _ 0.0.7.7.7.7.P P K E n n N m m j z j v f f s 6 u 5 i V 8 8 8 p a y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : - ", +" c.c.c.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.o.m.O.O.O.O... .o. .o. .o. .o. .o. .o.| | | | | o.5.O. o.O.B.m.o. .| 1.1.-.$.$.=.@.&.[ [ [ ` ` _ _ 0.0.7.7.7.8.P P K B n n N m m z j z v f f s 6 u 5 y w t r 0 8 c p i y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.c.g.g.c.g.c.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.m.O.O.O.O.O. .o. .o. .o. .o. .o. .o. .| | | | 5.o. c.m.N.m. . .o.| 1.1.-.$.$.@.=.&.[ [ [ ` ` _ _ 0.0.7.7.8.8.P P K B n n N m m z z j v f f s 6 u 5 y w w 8 r 2 8 w a y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : $ ", +" c.g.c.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.o.O.O.m.O.O. . .o. .o. .o. .o. .o. .o.| | o.| :. c.c.Z.m.O.O. .o. .| 1.1.-.$.$.=.@.&.[ [ [ ` ` _ _ 0.0.7.7.8.8.P P K B n n N m m j j z v f f s 6 u 5 y w w 8 8 2 4 < < 8 w i y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" N.c.g.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.m.O.O.O.O.O.O.O. .o. .o. .o. .o. .o. .o. .| | 3.| c.C.N.p.O.O. . .o.| 1.1.:.:.$.@.@.&.[ [ [ ` ` _ _ 0.0.7.7.7.7.P P K B n n N m m z z j v f f s 6 u 5 y w w 9 0 1 2 4 < w i y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" g.g.c.g.c.g.c.g.a.a.a.a.a.a.a.a.p.p.p.p.p.p.O.m.O.O.o.m.o.O.o. .o. .o. .o. .o. .o. .o.| | | | o.o. s.a.m.m.m.o.o. .| 1.1.:.$.$.@.@.&.' [ ' ` ` _ _ 0.0.7.7.7.7.P P K B n n N m m j j z v f f s 6 u 5 y w w 9 2 2 2 < 8 w y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : $ ", +" c.c.c.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.O.m.O.O.O. .o. .o. .o. .o. .o. .o.o.| | | | 3.3.1.o. O.m.m.O. .o.| 1.1.:.$.$.@.=.&.' [ [ ` ` _ _ 0.0.7.7.7.7.P P K B n n N m m j z j v f f s 6 u 5 y w w e 0 0 8 w i i y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.c.c.g.c.g.c.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.O.O.O.O.p.o. .o. .o. .o. .o. .o.o.o.| | | | | 2.2.2.1. O.O.M. .| 1.1.:.$.$.=.@.&.' [ [ ` ` _ _ 0.0.7.7.7.7.P P K B n n N m m z j z v f f s 6 u 5 i t w 0 w p i y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : $ ", +" c.c.g.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.o.m.O.O.O. .o. .o. .o. .o. .o. .o. .| | | | | | 1.2.2.2.=. o.o.O.5.1.| :.$.$.@.=.&.[ [ [ ` ` _ _ 0.0.7.7.7.7.Y P K K n n N m M j z j v f f s 6 u i i w 8 g p p p y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.g.c.g.c.g.c.g.s.a.a.a.a.a.a.a.a.p.p.p.p.p.o.m.O.O.O.m.O.O. . .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.2.2.1.o. .O.5.2.:.$.$.=.@.&.[ [ [ ` ` _ _ 0.0.7.7.7.7.P Y K B n n N m m z j z v f f s p p p 8 8 5 p p u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : $ ", +" c.c.g.c.g.c.g.c.s.a.a.a.a.a.a.a.a.p.p.p.p.p.m.o.O.O.O.O.m.O.o.o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.2.2.1.:. o.1.4.:.%.@.=.&.[ [ [ ` ` _ _ 0.0.7.7.7.7.P R K B n n N m m z z j v f f x 6 g f p p u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.g.c.g.c.g.c.s.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.O.O.O.O.O.o. .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.2.4.:. @.;.2.,.=.@.&.[ [ [ ` ` _ _ 0.0.7.7.8.8.P R K B n n N m m j z z v c S g z g A p 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : $ ", +" c.C.c.g.c.g.c.g.s.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.O.m.O.O.O..... .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.2.2.@. :.%.6.,.&.[ [ [ ` ` _ _ 0.0.7.7.7.7.P P K B n n N m m z j b F f z 8 x x 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.C.c.c.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.O.O.O.O.m...o... .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.4.:.:. =.@.,.[ [ [ ` ` _ _ 0.0.7.7.7.7.P P K B n n N m m z F z z j s A x 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; 3 > 9 ", +" O.C.c.c.c.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.m.O.m.O.O.O.O.O. .o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.4.:.@. =.>.} [ ` ` _ _ 0.0.7.7.7.7.P P K B n n N m H ~ z j g A x s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; > > 3 8 ", +" c.C.c.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.O.O.m.O.O.o. .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.4.6.=. [ <.` ` _ _ 0.0.7.7.7.7.P P K E n n J ^ M z g x S s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; # 3 8 8 ", +" s.c.C.c.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.O.O.O.p.O. .o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.%.:.2.=.=. [ _ u.r._ 0.0.7.7.7.7.R P K K G E m z j f S x s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < > < 8 ", +" g.c.N.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.O.o.O.O.O.o. .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.:.$.,.4.:.=. ` ` r.0.0.7.7.7.7.P R K E E P j f S S f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < 3 8 ", +" O.c.c.a.a.a.s.s.p.p.p.p.p.O.O.O.O.m.O.m.O. .o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.%.,.,.;.=. ` r.w.7.7.7.7.R W E K j f c c f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < 3 0 ", +" .a.N.g.a.s.p.p.p.p.p.p.O.m.o.O.O.O.O.O. . .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.,.=.=. P 8.w.q.7.8.W P P g f c f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < 2 < 8 ", +" s.a.N.c.a.p.p.p.p.p.O.m.O.O.o.O.O.p.o.o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.,.,.=.[ _ 9.q.T P j f c c f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < ", +" O.a.N.m.p.p.p.p.O.O.O.O.m.O.O.O. . .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.=.=.,.,.@.:. P j f v c f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 2 2 < 8 ", +" a.a.N.p.p.p.m.O.O.O.O.m.O.O.o.o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.,.=.=. j v z c f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 2 2 8 ", +" o.a.m.m.p.O.O.O.O.O.O.O.O. . .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.@.=.@.=.@.@.,.=.=. z z F v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 2 4 8 8 ", +" o.m.B.m.O.O.O.O.m.o.O.o.o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.>.) @. j z b v h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 0 0 1 1 1 8 r 1 < ", +" O.m.N.m.O.O.O.O.O... .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.=.&.>.&.@. z z F j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 9 1 1 3 r 2 8 ", +" o.O.m.m.O.O.O.m.o.o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.%.@.=.@.=.@.=.@.=.@.@.&.) &.>.=. z F b j z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 1 9 9 9 4 V 8 8 ", +" ..m.B.O.O.O.o. .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.%.%.%.=.@.=.@.=.@.=.@.=.=.&.) [ [ >.>.' z z b z z z z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 9 e r 8 8 ", +" c.m.V.O.o.o. .o. .o. .o. . .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.=.@.=.@.=.@.=.@.=.#.) [ [ [ &.>.@.' j m ~ j z j z j z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 r 8 8 ", +" o.V.m. .o. .o. .o. .o.o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ i.[ @. z z ~ H j z j z j z j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 e r 8 ", +" O.M.O.o.o.o. .o. . .o...o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ >.>.=. z ~ H z z j j z j z j z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 e r 8 8 ", +" a.O.m.o. .o. .o.o. .o...| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.@.=.@.=.@.=.@.=.#.&.) ' [ [ [ [ [ [ [ [ i.[ ' z m ~ M j z j z z j z j z j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 t e 8 ", +" o.O.O.o.o.o...o...o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ } i.[ _ j m ~ H m z j z j z j z j z j z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w t 8 ", +" O.M.O.o.o...o...| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ } } ) } m H H m m m z z j z j z j z j z j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w t 8 ", +" ...m.o.o.o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ } [ =. M H J m m m m m z j z j z j z j z j z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w t 8 8 ", +" ..o.O. . .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` [ } [ ` z m J H m m m m m m j z j z j z j z j z j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w i t w 8 ", +" o.5.m.o.| | | | | 1.1.1.1.1.1.1.1.:.:.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` } [ ` [ z m J J m m m m m m m m z j z j z j z j z j z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y i i i 0 ", +" -.5.5.| | | | 1.1.1.1.1.1.1.1.:.;.-.-.-.-.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` } ` ` m m J m m m m m m m m m m j z j z j z j z j z j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y i i i w q ", +" o.o.5.3.| | 1.1.1.1.1.1.1.1.;.;.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` 8. M N J J m m m m m m m m m m m z j z j z j z j z j z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y i i w 8 ", +" o.1.5...1.1.1.1.1.1.1.| ;.;.-.-.-.-.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ P E ^ J m m m m m m m m m m m m j z j z j z j z j z j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y i a i 8 ", +" :.2.5.| 1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` r._ [ M m J m m m m m m m m m m m z j z j z j z j z j z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 a y 8 ", +" @.:.5.2.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` ` r.y.` m J J m m m m m m m m m j z j z j z j z j z j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u p a w q ", +" :.1.5.2.1.1.1.:.-.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ r.y.` z m ^ H m m m m m m m z j z j z j z j z j z h h h v v v f f f f f f f f g s s s s s s 6 6 6 6 u p C u q ", +" =.1.5.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ r.y.( 9. z m ^ m m m m m m j z j z j z j z j z j h h h v v v f f f f f f f g g s s s s s s 6 6 6 6 C p g ", +" :.4.4.:.:.;.;.;.:.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.@.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ r.y.w. M J J m m m m j z j z j z j z j z j h h h v v v f f f f f f f f f s s s s s s 6 6 p A g ", +" | 4.2.;.;.;.;.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.@.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.r.w.( m ~ H m m z j z j z j z j z j z h h h v v v f f f f f f f f f s s s s s s 6 A w 8 ", +" :.:.2.;.;.:.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.@.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0.0.y./ ( z m H M j j z z j z j z j z j h h h v v v f f f f f f f f f s s s s 6 A 6 8 ", +" @.2.2.:.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.=.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0.( / w.y.w._ z H H z j j z j z j z j z h h h v v v f f f f f f f f f s s x x x g ", +" :.2.;.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.@.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.r.t.9. m H z z j z j z j j z h h h v v v f f f f f f f f f s x x f ", +" c. @.;.;.;.$.$.$.$.=.@.=.@.=.@.=.@.=.=.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.w.w.8. z z H z j z j z z j h h h v v v f f f f f f f f f x s 8 1 ", +" C.c.c. @.;.;.;.$.%.@.=.@.=.@.=.@.=.@.@.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ ( 0.0.0.0.0.w.w.w.( j z z b z z j z h h h v v v f f f f f f f c f c q > 3 ", +" c.c.C.c.c.s. ;.:.,.$.=.@.=.@.=.@.=.@.=.=.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0.( ( 0.0.0.0.0.0.0.w.w.8.9. z b b j z j h h h v v v f f f f f c f g 8 > : : ", +" c.g.c.g.C.c.p. %.,.,.=.=.@.=.@.=.=.@.@.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0.( / 0.0.0.0.0.0.7.7.7.w.q.9. z b b z h h h v v v f f f c c f z 8 > > : ; : ", +" c.c.g.c.g.g.N.g.g. =.:.,.,.=.@.=.@.@.=.=.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0.( / 0.0.0.0.0.0.7.7.7.8.q.q.q.8. j z b b h h v v v f c c f z 1 ; > > ; # ; : = ", +" N.g.g.g.c.g.c.g.c.a.s. @.:.,.=.@.@.=.@.@.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.8.8.q.8.P z z D v v v v D f g e < > > ; ; ; ; ; : = ", +" c.g.g.c.g.c.g.c.g.c.N.c. =.@.,.=.@.=.=.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.8.8.q.7.T f Z D D D f 1 3 > < ; ; ; ; ; ; : = ", +" g.g.c.g.c.g.c.g.a.a.a.c.B.O. @.=.,.,.=.=.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.q.q.9. z z z z 1 4 1 < < < ; ; ; ; ; ; : O ", +" g.c.g.c.g.c.g.c.a.a.a.a.a.N.c.c. =.@.6.>.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.8.q.q.R 8 > 4 < < < < < ; ; ; ; ; ; : = ", +" c.g.c.g.c.g.c.c.a.a.a.a.a.a.a.Z.a.o. @.&.,.@.[ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.8.7.7.e.8.P 8 8 4 < < < < < < < ; ; ; ; ; ; : O ", +" c.c.g.c.g.c.g.c.a.a.a.a.a.a.a.a.N.B.O. =.>.>.[ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.8.7.7.7.8.e.P T 8 4 2 < < < < < < < < ; ; ; ; ; ; : O ", +" c.c.c.c.g.c.g.c.s.a.a.a.a.a.a.a.a.p.N.N. . #.&.i.} [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.Y e.e.P 8 2 4 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.g.c.g.c.g.c.g.a.a.a.a.a.a.a.a.a.p.p.a.B.p. . $.&.>.&.[ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.P Y P e.P R q 8 4 2 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.c.g.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.m.B.a.o. ' >.>.[ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.8.P P Y P W e.P P q 1 V 2 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : = ", +" c.g.c.g.c.g.c.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.V.m.O. [ >.[ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.8.P Y P Y Y P W W 9.T 8 2 r 2 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : = ", +" c.c.g.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.m.O.m.M.O.O. @.[ >.[ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P Y P Y P Y P ! Y Y 8 8 V 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.g.c.g.c.g.c.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.m.O.m.M.m. . ' [ } [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P Y P Y P Y P P Y W W K R 8 8 V 1 < 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.c.g.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.O.O.O.m.m. .o. } ' } [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P Y P Y P Y Y P Y P W E K Y 8 8 e e 1 1 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.g.c.g.c.g.c.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.O.m.O.O.m.m.O.O. ` [ } ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P Y P Y P Y P P Y P Y P E E E K 8 8 e 8 8 q e 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" g.c.g.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.m.O.O.O.O.O.m.o.O.m.o.o. _ [ } } ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.P P Y P Y P Y P Y P Y Y K K E E E H 8 e e e 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" g.g.c.g.c.g.c.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.o.O.O.O.O.O.o.....o.O.O.o.o. [ ` } [ ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P P Y P Y P Y P Y P P K K K K E E B P q w t e 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : $ ", +" c.c.g.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.p.O.O.m.O.m.o.O.o. . .o. .O.m.o. ` ` u.` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P P P Y P Y P Y P Y Y K K K K K K E E K T w t w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.g.c.g.c.g.c.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.O.O.O.O.O.o.o. . .o. .o.O.m.O. [ ` } } ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.P P P Y P Y P Y P Y P P K K K K K B B K B Q P 8 t t w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" N.g.g.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.m.O.O.O.O.O.O. . .o. .o.o. .o. .O.O.o. _ ` u.` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.Y P Y P Y P Y P Y P Y P K K K K K B B B B n E Q R q 8 t w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : $ ", +" c.g.g.g.c.g.c.g.a.a.a.a.a.a.a.a.s.p.p.p.p.p.O.o.O.o.m.O.m.O...o. .o. . .o. .o.o. .m.o.o. ` ` u._ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P Y P Y P Y P Y P Y P P K K K K K B B B B n n G Q J P q w V w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" g.c.g.c.g.c.g.c.a.a.a.a.a.a.a.s.s.p.p.p.p.p.O.O.O.O.O.O.O.O.o. .o. .o.o. .o...o.o.o. .M.:. ` u.r._ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.8.P P Y P Y P Y P Y P Y P K K K K K B B B B n n n n J Q m 8 V i w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : $ ", +" c.g.c.g.c.g.c.g.a.a.a.a.a.a.a.p.s.p.p.p.p.p.O.O.m.O.O.O.O.O. .o. .o. . .o...o.o.o.o.o.| 5.5.o. [ ` u.r._ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.8.8.8.8.8.P Y P Y P Y P Y P Y P P K K K K K B B B B n n n G Q m P 8 i V y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.c.g.c.g.c.g.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.m.O.O.O.O.O.o.o. .o. .o. .o. .o. .o. .| | | 5.| o. _ _ y.r.0.0.0./ / 0.0.0.0.0.0.8.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.P P P P Y P Y P Y P Y P K K K K K B B B B n G E G z q w V i y y w w w w w w w w 0 0 0 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : % ", +" c.g.c.g.c.g.c.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.o.m.O.O.O.m.o. .o. .o. .o. .o. .o. .o.| | | | 3.O.:.:. ( y.` 0.0./ / 0.0.0.0.0.0.8.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.P P P Y P Y P Y P Y P Y K K K K K B B B B E E P q 0 a a y y y y w w w w w w w w 0 0 0 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : + ", +" c.c.g.c.g.c.g.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.p.O.O.O.O.o. .o. .o. .o. .o. .o. .o. .| | | | | | 5.2.:.#. 9.y.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.Y P P P Y P Y P Y P Y P K K K K K B E E Q M g p a y y y y y y w w w w w w w w 8 0 9 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : = ", +" c.c.c.g.c.g.c.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.O.O.m.O.O. . .o. .o. .o. .o. .o. .o.| | | | | | 1.2.5.2.o. } / r.0.0.0.0.0.0.0.8.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P Y P Y P Y P Y P Y P Y K K K K K E E K P g p C p y y y y y y y w w w w w w w w 1 9 9 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : = ", +" c.g.c.g.c.g.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.O.O.O.O.O...o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.2.2.1.@. ( 0.w.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.P P P P Y P Y P Y P Y P K K K E E K T 8 f p p u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" g.c.g.c.g.c.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.m.O.O.O.O.o. .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.2.2.;.:. 8.w.w.w.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.P Y P Y P Y P Y P Y P Y K E E K Y 8 f 6 p p u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.g.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.m.O.O.o.O.O.O.O...o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.;.2.:.:. _ w.w.0.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.8.Y P Y P Y P Y P Y P Y P E W K Z g u x 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" C.C.g.c.g.c.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.m.O.m.O.O.o.m.o. .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.;.4.:.#. _ 7.w.w.7.8.7.7.7.7.7.7.7.7.7.7.8.8.8.P Y P Y P Y P Y P Y W W K R g x x 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; : : O ", +" c.c.C.c.c.c.g.a.a.a.a.a.a.a.a.s.p.p.p.p.p.O.o.O.O.O.O.m.o. .o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.:.:.-.2.$.@. ( 8.w.q.7.7.7.7.7.7.7.7.7.7.7.7.7.P P P Y P Y P Y P ! P P 9 s x x 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; > 3 8 8 ", +" c.c.C.g.c.s.a.a.a.a.a.a.a.p.p.p.p.p.p.o.O.O.O.O.O.O.O. . .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.:.;.-.-.-.2.:.@. 8.( w.7.7.7.7.7.7.7.7.7.7.7.7.P P P P Y P Y W W Y f x x 6 s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; > 3 < < ", +" O.Z.C.a.a.a.a.a.a.a.a.a.p.p.p.p.p.m.O.O.O.m.O.m.O.o.o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.;.;.-.-.-.-.:.2.=. 9.9.w.w.7.7.7.7.7.7.7.7.7.8.Y P P Y P W e.8.T g x x x s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < 3 > < ", +" s.c.C.g.a.a.a.a.a.a.a.p.p.p.p.p.O.p.O.O.O.O.O.O.o. .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.| ;.;.-.-.-.-.:.%.2.:.o. 9.7.t.q.7.7.7.7.7.7.7.8.P Y P P e.P P j g S s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < 3 3 8 ", +" s.a.C.a.a.a.a.a.a.p.p.p.p.p.O.O.O.O.O.O.O.O...o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.,.%.;. ( 8.t.8.8.7.8.8.8.8.P P e.W R j f S f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < 3 8 8 ", +" c.N.Z.a.a.a.a.p.p.p.p.p.O.O.o.m.O.O.O.m... .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.:.:.6.@. 8.w.q.7.8.8.8.8.q.e.P g c c f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < 3 < < ", +" O.Z.N.a.a.p.p.p.p.p.O.O.m.O.O.O.O.o. .o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.:.-.-.-.-.-.$.$.$.$.%.$.$.,.,.=. T 8.e.7.8.8.q.Y P j f D f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < 2 3 < ", +" o.a.Z.a.p.p.p.p.p.O.O.O.O.O.m.O.O. . .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.%.$.$.@.@.6.@.=. P 7.e.Y P j f D f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 2 3 8 ", +" s.a.N.a.p.p.p.O.O.O.O.O.O.O.O.o.o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.=.@.,.6.@.} 9. j F D c f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 2 < 8 ", +" o.N.m.m.p.O.O.m.O.o.m.o.O.o. .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.@.=.@.=.,.>.=. j Z D v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 2 2 4 < ", +" O.m.m.O.O.O.O.m.O.O.O. .o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.@.@.,.@.=. j j D v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 2 2 2 0 ", +" ..m.m.m.O.O.O.O.O.p.o. .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.@.=.@.=.@.=.=.>.,.&.@. j j F h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 8 2 2 8 ", +" o.m.m.m.O.O.O.O. .o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.=.>.>.&.} j F F z z g h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 2 2 8 8 ", +" O.m.m.m.O.O. . .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.=.&.&.>.&.[ j b b j j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 e 2 8 ", +" o.O.m.m.O.o.o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.@.&.) [ &.>.>.=. z b b b j j j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 e 8 0 ", +" s.O.V.m. .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.=.&.) [ [ [ &.>.[ @. j z z z j j j j j h h h h v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 e r 8 8 ", +" o.O.V.O.o... . .o.o.o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.=.@.=.@.=.@.=.@.=.&.) [ [ [ [ [ [ } [ M H j z j z j Z j j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 e r 8 8 ", +" o.O.M.m. .o.o.o. .o. . .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.@.=.@.=.@.=.@.=.@.&.) [ [ [ [ [ [ [ } >.} M H H z z j z j j j j j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w e t 8 8 ", +" O.m.M. . .o.o. . . .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.=.@.=.@.=.@.=.@.=.&.) [ [ [ [ [ [ [ [ [ } >.@. z z H z z z j z j z j j j j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w t t 0 ", +" o.o.M.O.o. .o. . .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.@.=.@.=.@.=.@.=.@.&.) [ [ [ [ [ [ [ [ [ [ [ i.[ [ j z ~ m m j z j z j z j m Z j j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w t V 8 8 ", +" o.o.M.3.O. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.:.;.:.;.$.$.$.$.$.$.$.=.=.@.=.@.=.@.=.@.=.&.) [ [ [ [ [ [ [ [ [ [ [ [ } i.} M J H m m m j j z j z j z j j j Z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w V w 8 ", +" o.O.5.o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.;.:.;.;.$.$.$.$.$.$.$.@.@.=.@.=.@.=.@.=.@.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ } } ` z H J m m m m m z z j z j z j j j j m h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w t t 8 ", +" O.M.O.| | | | | | 1.1.1.1.1.1.1.1.-.-.:.;.;.;.$.$.$.$.$.$.$.=.=.@.=.@.=.@.=.@.=.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` [ u.` _ z m ^ m m m m m m m z j z j z j z j j j j h h h v v v f f f f f f f f g s s s s s s 6 6 6 6 u u u u 5 y y y y y y y i V w ", +" . .5. .| | | | 1.1.1.1.1.1.1.1.-.:.;.:.;.;.$.$.$.$.$.$.$.@.@.=.@.=.@.=.@.=.@.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` } u.` [ z M ^ J m m m m m m m m j z j z j z j j F j j h h h v v v f f f f f f f g g s s s s s s 6 6 6 6 u u u u 5 y y y y y i V y 8 ", +" s.3.5.| | | 1.1.1.1.1.1.1.1.;.:.;.:.;.:.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.@.#.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` } ` ` M J J m m m m m m m m m m j z j z j z j j j j j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y i i 8 ", +" =.3.3.2.1.1.1.1.1.1.1.1.:.;.:.;.:.;.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` u.` ` M m ^ J m m m m m m m m m m m z j z j z j z j j j Z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y i i w ", +" o.o.2.| 1.1.1.1.1.1.:.;.-.-.;.:.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` } ` _ P E J J N m m m m m m m m m m m m z z j z j z j j j j j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 i i w q ", +" o.2.2.2.1.1.1.1.1.:.;.-.-.:.;.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.#.&.) ' [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` r._ 9. z m E J J N N m m m m m m m m m m m m j j z j z j z j m Z j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u p p i q ", +" #.2.2.2.1.1.1.;.:.-.-.-.-.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` r.r.r.` m J J J N N N N m m m m m m m m m m m m j z j z j z j j j Z m z h h c v v f f f f f f f f f s s s s s s 6 6 6 6 u p p p g ", +" :.1.4.;.1.:.;.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ r.r.r.( R n E J n G N N N N m m m m m m m m m m m m z j z j z j z m Z j j h h z v v v f f f f f f f f f s s s s s s 6 6 6 6 u p w ", +" :.;.2.2.;.;.-.-.-.-.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ r.r.0._ P K E E G n n n N N N N m m m m m m m m m m m m j z j z j z j j j j j h h h v v v f f f f f f f f f s s s s s s 6 6 x p w 8 ", +" @.;.4.| -.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ r.r.r._ K E G G n n n n n N N N N m m m m m m m m m m m m z j z j z j z j j Z j h h h f v v f f f f f f f f f s s s s s s x x f 8 ", +" =.:.4.:.;.:.$.$.$.$.$.$.$.=.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.r.r.y.8. P E E E n n n n n n n N N N N m m m m m m m m m m m m j z j z j z j j j j j h h h v v v f f f f f f f f f s s s s x A 6 g ", +" ;.4.2.;.$.$.$.$.$.$.$.@.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ r.w.R P B E K B B n n n n n n n N N N N m m m m m m m m m m m m z j z j z j z j j Z j h h h v v v f f f f f f f f f s s s x x f z ", +" :.;.4.;.%.%.%.$.$.$.@.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / w.r.w.9. P K ! E E B B B n n n n n n n N N N N m m m m m m m m m m m m j z j z j z j Z m j j h h h v v v f f f f f f f f f s x A f z ", +" o. =.;.4.%.%.$.$.$.@.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.w.y.` P ! E K K B B B B n n n n n n n N N N N m m m m m m m m m m m m z j z j z j z j j j j h h h v v v f f f f f f f f f S x f 8 ", +" C.O. =.2.,.$.$.%.=.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.w.w.( R W ! K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m j z j z j z j j F j j h h h v v v f f f f f f f c S c 8 3 ", +" c.C.g.g. =.,.:.%.@.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.t.w._ P P e.R K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m z j z j z j z j j j j h h h v v v f f f f f f S f z < 3 3 : = ", +" c.c.c.C.c.s. ;.:.6.=.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ ( 0.0.0.0.0.0.7.w.t.9.9. T 9.e.W P P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m j z j z j z j j Z j j h h h v v v f f f f S f z < > 3 ; ; : + ", +" c.c.g.c.C.C.c.o. @.,.,.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ ( 0.0.0.0.0.0.7.7.7.w.t.8. Y W e.Y P P R K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m z j z j z j z j j j j h h h v v v f f c c f 8 8 3 > ; ; ; : = ", +" c.g.c.g.c.g.C.g.O. =.,.,.=.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0.( ( 0.0.0.0.0.0.7.7.7.8.8.t.0.8. Y P e.Y P Y P Y P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m z z j z j z j j j j j Z h h h v h v c j 8 3 3 ; ; ; ; ; : = ", +" c.g.c.g.c.g.c.c.g.Z.a.c. @.,.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0.( / 0.0.0.0.0.0.7.7.7.8.7.8.8.q.7.P P P e.W Y P Y P Y P Y K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m z j z j z j z m Z j j h h h v v D f z 8 < 3 < ; ; ; ; ; ; : = ", +" s.c.g.c.g.c.g.c.a.a.c.N.a.s. :.@.,.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.8.8.8.7.q.q.7.T T 9.W W P Y P Y P Y P Y P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m j z j z j z j j j j j h h v Z f z = < > > < < ; ; ; ; ; ; : O ", +" c.c.c.g.c.g.c.g.a.a.a.a.N.a.a. =.=.,.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.8.8.8.7.7.7.q.8.9.9.P P q.Y P Y P Y P Y P Y P Y K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m z j z j z j z j j Z m Z b h z 8 8 < < < < < < ; ; ; ; ; ; : O ", +" c.c.g.c.g.c.g.g.a.a.a.a.a.a.N.a.O. =.#.>.&.[ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.q.7.8.8.P Y P P Y P Y P Y P Y P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m z z j z j z j j z z b z z 8 < < < < < < < < ; ; ; ; ; ; : X ", +" h.g.c.g.c.g.c.c.a.a.a.a.a.a.a.a.N.p.o. #.#.>.>.[ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.P P Y Y P Y P Y P Y P Y K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m j j z j z j z z b b z j 8 2 2 < < < < < < < < ; ; ; ; ; ; : = ", +" c.c.g.c.g.c.g.g.a.a.a.a.a.a.a.a.a.m.N.a.o. #.#.>.>.[ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.8.P Y P P Y P Y P Y P Y P K K K K K K B B B n n n n n n n N N N N m m m m m m m m m m m m j z j z j z b F j z q 1 2 2 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.g.c.g.c.g.c.c.a.a.a.a.a.a.a.a.a.p.a.m.N.O. #.&.>.[ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.8.Y P Y Y P Y P Y P Y P Y K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m z j z j z F j z 8 4 2 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.c.c.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.m.m.m. . #.#.>.>.' ) [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.P P P P Y P Y P Y P Y P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m M j j z H H M z 8 V 3 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.c.c.g.c.g.c.g.s.a.a.a.a.a.a.a.a.p.p.p.p.p.O.N.O.s. [ } >.} ' [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.P P P Y P Y P Y P Y P P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m z H ~ z z 8 4 2 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.c.g.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.m.B.O.o. @.[ >.[ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P P P Y P Y P Y P Y P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m ~ z z q 1 V 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" g.g.c.g.c.g.c.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.m.m.V.O. ' } >.[ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.Y P Y Y P Y P Y P Y P P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m H ~ M 8 0 V 1 < 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.c.g.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.O.O.O.m.m. . ` i.[ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.P P P P Y P Y P Y P Y P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m ~ M z 8 r r 0 0 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : $ ", +" c.g.c.g.c.g.c.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.o.m.m.O.O.M.m.o. } [ } [ ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.P P Y Y P Y P Y P Y P P K K K K K B B B B n n n n n n n N N N N m m m m m m m H z z 8 8 r 8 8 0 1 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.c.g.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.m.m.O.O.O.o.O.O...m.M.O.o. ' } } ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.8.P Y P P Y P Y P Y P Y P K K K K K B B B B n n n n n n n N N N N m m m m m H J M 8 0 t e 8 9 9 0 9 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : $ ", +" c.g.c.g.c.g.c.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.O.O.O.O.m... .O.M.O.O. ` } [ ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.8.Y P Y Y P Y P Y P P P P K K K K K B B B B n n n n n n n N N N N m m m H J m 0 t t e 8 1 9 9 9 9 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" g.g.c.g.c.g.c.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.m.O.O.o.O.O.O. . . . .O.M.O.o. @.[ } ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.P Y P Y P Y P Y P Y P Y K K K K K E B B B n n n n n n n N N N N m J J m z 8 w t e 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" g.c.g.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.o.O.O.m.O.O.O...o. .o. .O.O.m.O.o. _ _ } ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P P P Y P Y P Y P Y P K K K K K B B B B n n n n n n n N N N J J N z 8 w t t w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : = ", +" c.g.c.g.c.g.c.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.O.O.m.O.O... .o. .o.o.o.o.O...o.o. ` ` } ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P P Y P Y P Y P Y P Y K K K K K B B B B n n n n n n n N J J J M 8 w t t w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : = ", +" c.c.g.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.p.O.O.O.O.O.O.m.o.o. .o. ...o.o.o.o.O.o.O. ` ` } r._ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.P P P P Y P Y P Y P Y P K K K K K B B B B n n n n n n J J J m w i t w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : = ", +" c.c.g.g.c.g.c.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.m.O.O.O.O.O.O.o.o. .o. .o...o...o. .o.O.3.@. 9._ r.r._ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P Y P Y P Y P Y P Y P P K K K K K B B B B n n n n n J E m z 8 i i w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.g.c.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.o.O.O.m.O.p.O.o. .o. .o...o...o. .o... .3.3.| .. _ _ y.r._ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.Y P Y P Y P Y P Y P Y P K K K K K B B B B n n n E Q K R 8 y i i w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" g.c.g.g.c.g.c.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.m.O.O.O.O.O.m.o.o. .o. .o. .o. .o. .o.o.| | o.5.o. ` _ y.r.0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.8.P Y P Y P Y P Y P Y P P K K K K K B B B B n G Q n M 8 w i i y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" g.g.c.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.o.O.O.O.O.O.o... .o. .o. .o. .o. .o.o.o.| | | | 3.3.=. ` r.r.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.8.8.8.8.8.P P Y P Y P Y P Y P Y P K K K K K B B B B E Q M z g a i y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.c.g.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.O.O.m.o.O.o.o. .o. .o. .o. .o. .o. .| | | | | | 5.2.#. 9.` y.r.( ( 0.0.0.0.0.0.8.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P P Y P Y P Y P Y P P K K K K K K B E ! K z g p a y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.g.c.g.c.g.c.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.m.O.O.O.O.O.o. .o. .o. .o. .o. .o. .o.| | | | | | 1.2.5.1.:. _ 0.y.0.0.0.0.0.0.0.8.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P Y P Y P Y P Y P Y P K K K K K K ! G R 8 u C 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : $ ", +" c.c.g.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.m.O.O.m.O.O.O.O.o.o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.2.5.-. ` r.r.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P Y P Y P Y P Y P Y P P K K K K E ! R w C p u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.g.c.g.c.g.c.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.o.O.O.p.O.o. .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.4.2.o. ` r.w.0.0.0.8.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.Y P Y P Y P Y P Y P Y Y K K E ! E T g p p u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : $ ", +" g.c.c.c.g.c.g.c.a.a.a.a.a.a.a.s.s.p.p.p.p.p.O.O.O.m.O.O.o.O...o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.2.5.;.@. 9.0.r.0.0.7.7.8.7.7.7.7.7.7.7.7.7.7.7.7.7.P Y P Y P Y P Y P Y P P K Q K R g s C u u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : = ", +" s.C.c.g.c.g.c.c.a.a.a.a.a.a.a.a.p.p.p.p.p.p.O.O.O.o.O.O.m.O.o. .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.| 2.4.:.:. ( w.w.0.7.8.7.7.7.7.7.7.7.7.7.7.7.7.8.P P P P Y P Y P Y P Y W W R z g A p 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; : : < ", +" s.c.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.m.o.O.O.O.O.O.o.o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.;.;.2.2.;. 9.w.w.8.7.7.7.7.7.7.7.7.7.7.7.7.8.P P P Y P Y P Y P P W 9. g x x 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; : ; 8 ", +" g.c.g.c.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.O.O.O.m.O.o. .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.;.:.;.:.4.:.=. _ w.q.7.7.7.7.7.7.7.7.7.7.7.7.P P P P Y P Y P W P P g x A x s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; > > < ", +" O.c.c.c.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.O.O.m.O.O. . .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.;.:.;.;.;.2.4.;.@. _ 8.q.q.8.7.7.7.7.7.7.7.7.8.Y P Y Y Y W W Y P z f x x s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < > > 8 ", +" o.a.g.c.a.a.a.a.a.a.a.p.p.p.p.p.m.O.O.O.m.O.O.O. .o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.:.;.;.;.;.;.;.;.;.@.@. 8.w.q.q.7.7.8.7.7.7.7.8.P Y P P W W Y j f c x s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < > > > 8 ", +" s.c.N.c.a.a.a.a.a.p.p.p.p.p.O.m.O.O.O.O.O.O.o. .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.:.:.:.;.;.;.$.$.;.,.:.;. 9.q.q.8.8.7.7.8.8.8.P Y W Y P T f f c f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < > > < ", +" O.c.N.a.a.a.a.p.p.p.p.p.O.o.O.O.O.O.p.O.o.o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.:.:.;.:.;.:.$.$.$.$.:.,.,.=. 9.7.q.q.7.7.8.8.8.q.W P P g c c f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < 3 < 0 ", +" O.N.N.a.a.p.p.p.p.p.O.O.O.O.O.m.O.O.o. .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.:.;.:.;.$.$.$.$.$.$.:.:.=.@. P 8.q.q.7.7.q.8.R z f c f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < 2 2 8 8 ", +" s.c.Z.N.p.p.p.p.p.O.O.O.O.O.O.O.O. .o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.;.:.;.:.$.$.$.$.$.$.$.=.%.,.=.@. 8.7.e.7.8. z z c f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 2 4 0 q ", +" c.a.Z.s.p.p.p.O.m.O.O.o.O.O.m. . .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.:.-.$.$.$.$.$.$.$.@.=.@.,.,.=. 8. c D c f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 2 4 < < ", +" c.N.m.p.p.m.o.O.O.m.O.O.o. .o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.@.=.=.@.,.=.@. z D D c f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 2 2 8 ", +" o.O.B.m.p.O.O.O.O.O.m.O. . .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.,.&.} j j D v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 2 r 8 8 ", +" o.O.B.m.O.O.O.O.O.O. .o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.@.=.@.=.@.=.=.>.,.@.@. z j F z h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 2 r 1 2 ", +" s.m.m.O.m.O.O.O. . .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.@.,.>.@. z b F h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 4 8 9 ", +" O.V.m.O.O.O. .o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.=.&.&.<.@.=. z z F Z j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 V 1 ", +" O.V.m.O. .o. .o. . .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.@.&.) [ >.<.[ } j z F b z j z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 V 8 8 ", +" o.O.m.O. .o. .o.o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.@.&.) [ [ [ >.>.[ m H F j z j z j h h h v v v f f f f f f f g f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 e 8 1 ", +" .O.O.m.o. . .o. .o. .o. . .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.@.&.) [ [ [ ) ' >.[ =. j z ~ z j z j z j z h h h v v v f f f f f f g g g s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 e e e 8 ", +" O.O.O. .o. .o. . . . . .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.%.=.@.=.@.=.@.=.@.=.@.&.) [ [ [ [ [ [ } >.[ ' z m H H j z z j z j z j h h h v v v f f f f f f g g g s s s s s s 6 6 6 u u u u u 5 y y y y y y y w w w w w w w w e e e 8 ", +" o.o.O.m...o.o.o.o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ } } [ [ z m H H j z j z j z j z j z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w t e 8 8 ", +" o.O.O.O.o.o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ } [ ` m H H m z z j z j z j z j z j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w t t w 0 ", +" O.O.M.o.o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ } [ =. M H H m m m z j z j z j z j z j z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w t w 8 ", +" O...m.o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ } [ _ z m J H m m m m j z j z j z j z j z j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w t t 0 q ", +" ..O.m.O.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` [ } ` z m J m m m m m m m j j z j z j z j z j z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y i V w q ", +" o.o.M.3.| | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` [ } ` M J J m m m m m m m m z z j z j z j z j z j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y i V i 8 ", +" o.5.5.| | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` } r.` z J J M m m m m m m m m m z j z j z j z j z j z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y i i 8 ", +" :.5.3.| 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` u._ _ P m J m m m m m m m m m m m m j z j z j z j z j z j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y i V 8 8 ", +" :.1.5.2.1.1.1.1.1.1.1.:.:.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` u.` m Q J N m m m m m m m m m m m m j z j z j z j j z j z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y a p 8 ", +" o.3.5.1.1.1.1.1.1.;.:.:.;.-.-.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` } r.` P E E N N N m m m m m m m m m m m m z j z j z j z z j z j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u p a 8 ", +" :.5.2.1.1.1.1.;.;.;.:.;.:.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` r.u.r._ P J Q J N N N N m m m m m m m m m m m m z z j z j z j j z j z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u C g ", +" @.1.5.4.1.1.;.;.:.;.:.;.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ r.u.w._ z E Q J n G N N N N m m m m m m m m m m m m j j z j z j z z j z j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 p C 6 8 ", +" :.1.2.:.:.;.:.;.;.:.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ y.y.` z M E Q n n n n N N N N m m m m m m m m m m m m j z j z j z j j z j z h h h v v v f f f f f f f f f s s s s s s 6 6 6 p x q ", +" ..;.2.:.;.;.:.;.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ r.y.0.9. M G Q G n n n n n N N N N m m m m m m m m m m m m z j z j z j z z j z j h h h v v v f f f f f f f f f s s s s s s 6 x p g ", +" :.2.;.;.;.;.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.r.y.w.( P E Q E n n n n n n n N N N N m m m m m m m m m m m m j z j z j z j j z j z h h h v v v f f f f f f f f f s s s s x x x g ", +" :.%.2.2.;.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0.r.w.w.9. T E E E B B n n n n n n n N N N N m m m m m m m m m m m m z j z j z j z z j z j h h h v v v f f f f f f f f f s s s x x 6 z ", +" O.:.2.-.$.$.$.$.$.$.@.#.#.#.#.#.#.#.#.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ 0.w.0.9. K K E E B B B n n n n n n n N N N N m m m m m m m m m m m m j z j z j z j j z j z h h h v v v f f f f f f f f f s x x x g ", +" :.;.| :.:.$.$.$.@.#.#.#.#.#.#.#.#.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.w.w./ ( P K E E K B B B B n n n n n n n N N N N m m m m m m m m m m m m z j z j z j z z j z j h h h v v v f f f f f f f f f x s g ", +" @.;.:.,.$.$.$.@.#.#.#.#.#.#.#.#.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.w.( _ Y K W E K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m j z j z j z j j z j z h h h v v v f f f f f f f c x f z ", +" =.:.,.,.$.@.#.#.#.#.#.#.#.#.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.w.8. T K W P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m z j z j z j z z j z z h h h v v v f f f f f c c f z ", +" =.=.6.:.=.=.=.=.#.#.#.#.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0.( / 0.0.0.0.0.0.0.w.t.9. Y W W P P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m j z j z j z j j z j z h h h v v v f f f f S f f ", +" @.,.6.=.=.=.#.#.#.#.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0.( / 0.0.0.0.0.0.8.7.7.w.w.( Y P W Y P Y P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m z j z j z j z z j z j h h h v v v f f D c f ", +" @.:.,.,.#.#.#.#.#.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0.( / 0.0.0.0.0.0.7.7.7.7.7.t.8.P Y P e.P Y P Y P P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m j z j z j z j j z j z h h h v v v c D z j ", +" :.#.,.#.#.#.#.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0.( / 0.0.0.0.0.0.7.7.7.8.8.8.q.t.9.T T 9.e.Y P Y P Y P Y P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m z j z j z j z z j z j h h h v v D v z ", +" @.=.,.=.#.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.q.q.8. Y q.W P Y P Y P Y P Y P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m z j z z j z j j z z j h h h D D z ", +" =.,.,.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.w.Y P P P e.Y P Y P Y P Y P Y P P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m z z j j z j z z j j z h v D f ", +" @.&.,.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.q.q.P e.q.Y P Y P Y P Y P Y P Y P K K K K K E B B B n n n n n n n N N N N m m m m m m m m m m m m z j z z j z j j z j j b z z ", +" #.>.>.&.[ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.8.8.8.8.8.P Y P Y P Y P Y P Y P P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m j z j j z j z z j b z z ", +" =.>.&.[ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.8.8.8.8.8.P P Y P Y P Y P Y P Y P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m j z j z j z j b F z ", +" =.>.&.&.[ [ ' ' [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.8.8.7.7.8.P Y P Y P Y P Y P Y P P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m z j z j z z b z ", +" [ [ >.&.[ [ ' [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P Y P Y P Y P Y P Y R K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m z j j z z j z ", +" =.&.>.>.' [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P Y P Y P Y P Y P Y P R K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m j z H j z ", +" =.} >.[ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P Y P Y P Y P Y P Y P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m M H m M ", +" #.[ } >.[ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.9.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P Y P Y P Y P Y P Y P P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m H H z z ", +" #.[ >.} [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P Y P Y P Y P Y P Y P K K K K K K B B B n n n n n n n N N N N m m m m m m m m H H m z ", +" ' ` i.[ ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P Y P Y P Y P Y P Y P P K K K K K B B B B n n n n n n n N N N N m m m m m m m J m z ", +" #.[ } ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0.( / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.P P Y P Y P Y P Y P Y P K K K K K B B B B n n n n n n n N N N N m m m m m J H M ", +" #.` } } ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0.( / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P P Y P Y P Y P Y P P K K K K K B B B B n n n n n n n N N N N m m m J ^ M z ", +" _ ` u.` ` ` ` ` ` _ _ _ _ _ _ 0.0.0.( / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P P P Y P Y P Y P Y P K K K K K B B B B n n n n n n n N N N N m m ^ m z ", +" ` ` u.` ` ` ` _ _ _ _ _ _ 0.0.0.( / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.P P P Y P Y P Y P Y P P K K K K K B B B B n n n n n n n N N N N J J M ", +" [ u.` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.Y P Y P Y P Y P Y P Y P K K K K K B B B B n n n n n n n N N J ^ m ", +" #.` u.` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.P Y P Y P Y P Y P Y P Y K K K K K B B B B n n n n n n n J ^ m z ", +" [ ` y.r._ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.8.P P Y P Y P Y P Y P Y P K K K K K B B B B n n n n n J E J z ", +" ` ` r.r._ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.8.P Y P Y P Y P Y P Y P Y K K K K K B B B B n n n G G J M ", +" _ r.r.r.0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P Y P Y P Y P Y P Y P K K K K K B B B B G G E E K ", +" 9._ r.r.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P Y P Y P Y P Y P Y P Y K K K K K B B B B E E K P ", +" ( r.r.r./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P Y P Y P Y P Y P Y P K K K K K E B E E E M ", +" ` r.r.0.0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P Y P Y P Y P Y P Y P Y K K K K K E E E P ", +" ` r.r.0.0.0.0.0.8.8.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P Y P Y P Y P Y P Y P K K K K Q E K P ", +" _ w.r.w.0.0.0.8.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P Y P Y P Y P Y P Y P P K K E Q E P ", +" ( w.r.w.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P Y P Y P Y P Y P Y Y E ! E R ", +" 8.w.w.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P Y P Y P Y P Y P Y P W ! P T ", +" 9.9.w.w.8.8.7.7.7.7.7.7.7.7.7.7.7.7.P P Y P Y P Y P Y W e.9.P ", +" 9.w.t.q.8.7.7.7.7.7.7.7.7.7.7.8.P P P Y P Y P Y e.P Y ", +" ( 0.w.7.7.7.7.7.7.7.7.7.7.8.P P P P T P W e.R ", +" 9.t.q.7.7.7.8.7.7.7.7.7.P P P Y W e.8. ", +" T 8.t.8.8.8.7.7.8.8.8.Y Y P e.P P ", +" P 8.q.8.7.7.7.8.8.P W Y Y ", +" 8.q.q.7.8.8.8.q.Y ", +" 9.q.q.q.P T ", +" P P P ", +" ", +" ", +" " +}; diff --git a/Source Code/V2.0/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_128x128.png b/Source Code/V2.0/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..515cef7760b8362f3c33ae438a648256dae149b0 Binary files /dev/null and b/Source Code/V2.0/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_128x128.png differ diff --git a/Source Code/V2.0/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_16x16.png b/Source Code/V2.0/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..444de54d6cfe2958fac1bbb89dd8619b4c537c47 Binary files /dev/null and b/Source Code/V2.0/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_16x16.png differ diff --git a/Source Code/V2.0/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_256x256.png b/Source Code/V2.0/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_256x256.png new file mode 100644 index 0000000000000000000000000000000000000000..6db52fe2c2ed0dd9f75163214b094476416e341a Binary files /dev/null and b/Source Code/V2.0/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_256x256.png differ diff --git a/Source Code/V2.0/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_32x32.png b/Source Code/V2.0/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..bb51b447d7bc3b9b0c866b35cc9c65917508e0f7 Binary files /dev/null and b/Source Code/V2.0/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_32x32.png differ diff --git a/Source Code/V2.0/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_48x48.png b/Source Code/V2.0/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_48x48.png new file mode 100644 index 0000000000000000000000000000000000000000..b610e19f8483d4592b5bd75e3f1f31631fe7d74e Binary files /dev/null and b/Source Code/V2.0/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_48x48.png differ diff --git a/Source Code/V2.0/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_64x64.png b/Source Code/V2.0/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_64x64.png new file mode 100644 index 0000000000000000000000000000000000000000..35e591d0b099c68a688d1f1e8524effa1f20e54a Binary files /dev/null and b/Source Code/V2.0/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_64x64.png differ diff --git a/Source Code/V2.0/PiacereToolProduct/Piacere/PiacereIcons/icon16.bmp b/Source Code/V2.0/PiacereToolProduct/Piacere/PiacereIcons/icon16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..b7e20845b6a19075baedbeeb6e08187ae431ab07 Binary files /dev/null and b/Source Code/V2.0/PiacereToolProduct/Piacere/PiacereIcons/icon16.bmp differ diff --git a/Source Code/V2.0/PiacereToolProduct/Piacere/PiacereIcons/icon256.bmp b/Source Code/V2.0/PiacereToolProduct/Piacere/PiacereIcons/icon256.bmp new file mode 100644 index 0000000000000000000000000000000000000000..8de86f74ca5f55d3394e9adad417fb05fe698688 Binary files /dev/null and b/Source Code/V2.0/PiacereToolProduct/Piacere/PiacereIcons/icon256.bmp differ diff --git a/Source Code/V2.0/PiacereToolProduct/Piacere/PiacereIcons/icon32.bmp b/Source Code/V2.0/PiacereToolProduct/Piacere/PiacereIcons/icon32.bmp new file mode 100644 index 0000000000000000000000000000000000000000..bbcafe4d4b1147ac7abbfa3a57da08834f1978d5 Binary files /dev/null and b/Source Code/V2.0/PiacereToolProduct/Piacere/PiacereIcons/icon32.bmp differ diff --git a/Source Code/V2.0/PiacereToolProduct/Piacere/PiacereIcons/icon48.bmp b/Source Code/V2.0/PiacereToolProduct/Piacere/PiacereIcons/icon48.bmp new file mode 100644 index 0000000000000000000000000000000000000000..b18d23b7018576501facd65545f0b909fa3ab2e9 Binary files /dev/null and b/Source Code/V2.0/PiacereToolProduct/Piacere/PiacereIcons/icon48.bmp differ diff --git a/Source Code/V2.0/PiacereToolProduct/Piacere/sample.png b/Source Code/V2.0/PiacereToolProduct/Piacere/sample.png new file mode 100755 index 0000000000000000000000000000000000000000..932e4518cdae42e5eaa2b38f655b31e155873367 Binary files /dev/null and b/Source Code/V2.0/PiacereToolProduct/Piacere/sample.png differ diff --git a/Source Code/V2.0/PiacereToolProduct/Piacere/save_edit.png b/Source Code/V2.0/PiacereToolProduct/Piacere/save_edit.png new file mode 100755 index 0000000000000000000000000000000000000000..2c598e5aef10055fd508a52964ecac7ad00ef2a2 Binary files /dev/null and b/Source Code/V2.0/PiacereToolProduct/Piacere/save_edit.png differ diff --git a/Source Code/V2.0/PiacereToolProduct/PiacereToolProduct.product b/Source Code/V2.0/PiacereToolProduct/PiacereToolProduct.product new file mode 100755 index 0000000000000000000000000000000000000000..b332398d0884e10b5d91da09feb164dd30364409 --- /dev/null +++ b/Source Code/V2.0/PiacereToolProduct/PiacereToolProduct.product @@ -0,0 +1,1845 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?pde version="3.5"?> + +<product name="Piacere" uid="PiacereProductID" id="PiacereToolProduct.PiacereProductID" application="org.eclipse.ui.ide.workbench" version="2.0.0.qualifier" useFeatures="false" includeLaunchers="true"> + + <aboutInfo> + <image path="/PiacereToolProduct/about.gif"/> + </aboutInfo> + + <configIni use="default"> + </configIni> + + <launcherArgs> + <programArgs>-consoleLog + </programArgs> + <vmArgs>-Dosgi.requiredJavaVersion=1.6 -XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts -XX:MaxPermSize=256m -Xms40m -Xmx512m -Xdock:icon=../Resources/Eclipse.icns -XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts + </vmArgs> + <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts + </vmArgsMac> + </launcherArgs> + + <windowImages i16="/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_16x16.png" i32="/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_32x32.png" i48="/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_48x48.png" i64="/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_64x64.png" i128="/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_128x128.png" i256="/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_256x256.png"/> + + <splash + location="PiacereToolProduct" + startupProgressRect="2,310,448,10" + startupMessageRect="7,290,320,20" + startupForegroundColor="3A484E" /> + <launcher> + <linux icon="/PiacereToolProduct/Piacere/PiacereIcon.xpm"/> + <macosx icon="/PiacereToolProduct/Piacere/PiacereIcon.icns"/> + <win useIco="false"> + <ico path="/PiacereToolProduct/Piacere/PiacereIcon.ico"/> + <bmp + winSmallHigh="/PiacereToolProduct/Piacere/PiacereIcons/icon16.bmp" + winSmallLow="/PiacereToolProduct/Piacere/PiacereIcons/icon16.bmp" + winMediumHigh="/PiacereToolProduct/Piacere/PiacereIcons/icon32.bmp" + winMediumLow="/PiacereToolProduct/Piacere/PiacereIcons/icon32.bmp" + winLargeHigh="/PiacereToolProduct/Piacere/PiacereIcons/icon48.bmp" + winLargeLow="/PiacereToolProduct/Piacere/PiacereIcons/icon48.bmp" + winExtraLargeHigh="/PiacereToolProduct/Piacere/PiacereIcons/icon256.bmp"/> + </win> + </launcher> + + <vm> + <linux include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8</linux> + <macos include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11</macos> + <solaris include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8</solaris> + <windows include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8</windows> + </vm> + + <plugins> + <plugin id="Java-json"/> + <plugin id="PiacereToolProduct"/> + <plugin id="com.google.gson"/> + <plugin id="com.google.gson.source"/> + <plugin id="com.google.guava"/> + <plugin id="com.google.guava.source"/> + <plugin id="com.google.inject"/> + <plugin id="com.ibm.icu"/> + <plugin id="com.ibm.icu.source"/> + <plugin id="com.jcraft.jsch"/> + <plugin id="com.jcraft.jsch.source"/> + <plugin id="com.sun.el"/> + <plugin id="com.sun.el.source"/> + <plugin id="com.sun.jna"/> + <plugin id="com.sun.jna.platform"/> + <plugin id="com.sun.xml.bind"/> + <plugin id="eu.piacere.doml"/> + <plugin id="eu.piacere.doml.edit"/> + <plugin id="eu.piacere.doml.editor"/> + <plugin id="eu.piacere.doml.grammar"/> + <plugin id="eu.piacere.doml.grammar.ide"/> + <plugin id="eu.piacere.doml.grammar.ui"/> + <plugin id="io.github.classgraph"/> + <plugin id="io.github.classgraph.source"/> + <plugin id="jakarta.servlet-api"/> + <plugin id="jakarta.servlet-api.source"/> + <plugin id="jakarta.xml.bind"/> + <plugin id="javaewah"/> + <plugin id="javax.activation"/> + <plugin id="javax.annotation"/> + <plugin id="javax.annotation.source"/> + <plugin id="javax.el"/> + <plugin id="javax.el.source"/> + <plugin id="javax.inject"/> + <plugin id="javax.inject.source"/> + <plugin id="javax.servlet.jsp"/> + <plugin id="javax.servlet.jsp.source"/> + <plugin id="javax.xml"/> + <plugin id="javax.xml.bind"/> + <plugin id="log4j2"/> + <plugin id="lpg.runtime.java"/> + <plugin id="net.i2p.crypto.eddsa"/> + <plugin id="org.antlr.runtime"/> + <plugin id="org.antlr.runtime.source"/> + <plugin id="org.apache.ant"/> + <plugin id="org.apache.ant.source"/> + <plugin id="org.apache.batik.bridge"/> + <plugin id="org.apache.batik.bridge.source"/> + <plugin id="org.apache.batik.constants"/> + <plugin id="org.apache.batik.constants.source"/> + <plugin id="org.apache.batik.css"/> + <plugin id="org.apache.batik.css.source"/> + <plugin id="org.apache.batik.dom"/> + <plugin id="org.apache.batik.dom.source"/> + <plugin id="org.apache.batik.dom.svg"/> + <plugin id="org.apache.batik.dom.svg.source"/> + <plugin id="org.apache.batik.ext.awt"/> + <plugin id="org.apache.batik.ext.awt.source"/> + <plugin id="org.apache.batik.i18n"/> + <plugin id="org.apache.batik.i18n.source"/> + <plugin id="org.apache.batik.parser"/> + <plugin id="org.apache.batik.parser.source"/> + <plugin id="org.apache.batik.pdf"/> + <plugin id="org.apache.batik.svggen"/> + <plugin id="org.apache.batik.svggen.source"/> + <plugin id="org.apache.batik.transcoder"/> + <plugin id="org.apache.batik.transcoder.source"/> + <plugin id="org.apache.batik.util"/> + <plugin id="org.apache.batik.util.gui"/> + <plugin id="org.apache.batik.util.gui.source"/> + <plugin id="org.apache.batik.util.source"/> + <plugin id="org.apache.batik.xml"/> + <plugin id="org.apache.batik.xml.source"/> + <plugin id="org.apache.commons.cli"/> + <plugin id="org.apache.commons.codec"/> + <plugin id="org.apache.commons.codec.source"/> + <plugin id="org.apache.commons.commons-codec"/> + <plugin id="org.apache.commons.compress"/> + <plugin id="org.apache.commons.io"/> + <plugin id="org.apache.commons.io.source"/> + <plugin id="org.apache.commons.jxpath"/> + <plugin id="org.apache.commons.jxpath.source"/> + <plugin id="org.apache.commons.lang"/> + <plugin id="org.apache.commons.lang3"/> + <plugin id="org.apache.commons.logging"/> + <plugin id="org.apache.commons.logging.source"/> + <plugin id="org.apache.commons.math3"/> + <plugin id="org.apache.commons.net"/> + <plugin id="org.apache.felix.gogo.command"/> + <plugin id="org.apache.felix.gogo.command.source"/> + <plugin id="org.apache.felix.gogo.runtime"/> + <plugin id="org.apache.felix.gogo.runtime.source"/> + <plugin id="org.apache.felix.gogo.shell"/> + <plugin id="org.apache.felix.gogo.shell.source"/> + <plugin id="org.apache.felix.scr"/> + <plugin id="org.apache.felix.scr.source"/> + <plugin id="org.apache.httpcomponents.client5.httpclient5"/> + <plugin id="org.apache.httpcomponents.core5.httpcore5"/> + <plugin id="org.apache.httpcomponents.core5.httpcore5-h2"/> + <plugin id="org.apache.httpcomponents.httpclient"/> + <plugin id="org.apache.httpcomponents.httpclient.source"/> + <plugin id="org.apache.httpcomponents.httpcore"/> + <plugin id="org.apache.httpcomponents.httpcore.source"/> + <plugin id="org.apache.jasper.glassfish"/> + <plugin id="org.apache.jasper.glassfish.source"/> + <plugin id="org.apache.log4j"/> + <plugin id="org.apache.lucene.analyzers-common"/> + <plugin id="org.apache.lucene.analyzers-common.source"/> + <plugin id="org.apache.lucene.analyzers-smartcn"/> + <plugin id="org.apache.lucene.analyzers-smartcn.source"/> + <plugin id="org.apache.lucene.core"/> + <plugin id="org.apache.lucene.core.source"/> + <plugin id="org.apache.sshd.osgi"/> + <plugin id="org.apache.sshd.sftp"/> + <plugin id="org.apache.xerces"/> + <plugin id="org.apache.xml.resolver"/> + <plugin id="org.apache.xml.serializer"/> + <plugin id="org.apache.xmlgraphics"/> + <plugin id="org.apache.xmlgraphics.source"/> + <plugin id="org.apiguardian"/> + <plugin id="org.apiguardian.source"/> + <plugin id="org.bouncycastle.bcpg"/> + <plugin id="org.bouncycastle.bcprov"/> + <plugin id="org.eclipse.acceleo.annotations"/> + <plugin id="org.eclipse.acceleo.common"/> + <plugin id="org.eclipse.acceleo.common.ide"/> + <plugin id="org.eclipse.acceleo.common.ui"/> + <plugin id="org.eclipse.acceleo.engine"/> + <plugin id="org.eclipse.acceleo.ide.ui"/> + <plugin id="org.eclipse.acceleo.model"/> + <plugin id="org.eclipse.acceleo.parser"/> + <plugin id="org.eclipse.acceleo.profiler"/> + <plugin id="org.eclipse.acceleo.query"/> + <plugin id="org.eclipse.acceleo.traceability"/> + <plugin id="org.eclipse.acceleo.traceability.model"/> + <plugin id="org.eclipse.acceleo.ui.interpreter"/> + <plugin id="org.eclipse.ant.core"/> + <plugin id="org.eclipse.ant.core.source"/> + <plugin id="org.eclipse.ant.launching"/> + <plugin id="org.eclipse.ant.launching.source"/> + <plugin id="org.eclipse.ant.ui"/> + <plugin id="org.eclipse.ant.ui.source"/> + <plugin id="org.eclipse.compare"/> + <plugin id="org.eclipse.compare.core"/> + <plugin id="org.eclipse.compare.core.source"/> + <plugin id="org.eclipse.compare.source"/> + <plugin id="org.eclipse.core.commands"/> + <plugin id="org.eclipse.core.commands.source"/> + <plugin id="org.eclipse.core.contenttype"/> + <plugin id="org.eclipse.core.contenttype.source"/> + <plugin id="org.eclipse.core.databinding"/> + <plugin id="org.eclipse.core.databinding.beans"/> + <plugin id="org.eclipse.core.databinding.beans.source"/> + <plugin id="org.eclipse.core.databinding.observable"/> + <plugin id="org.eclipse.core.databinding.observable.source"/> + <plugin id="org.eclipse.core.databinding.property"/> + <plugin id="org.eclipse.core.databinding.property.source"/> + <plugin id="org.eclipse.core.databinding.source"/> + <plugin id="org.eclipse.core.expressions"/> + <plugin id="org.eclipse.core.expressions.source"/> + <plugin id="org.eclipse.core.externaltools"/> + <plugin id="org.eclipse.core.externaltools.source"/> + <plugin id="org.eclipse.core.filebuffers"/> + <plugin id="org.eclipse.core.filebuffers.source"/> + <plugin id="org.eclipse.core.filesystem"/> + <plugin id="org.eclipse.core.filesystem.macosx" fragment="true"/> + <plugin id="org.eclipse.core.filesystem.source"/> + <plugin id="org.eclipse.core.jobs"/> + <plugin id="org.eclipse.core.jobs.source"/> + <plugin id="org.eclipse.core.net"/> + <plugin id="org.eclipse.core.net.source"/> + <plugin id="org.eclipse.core.resources"/> + <plugin id="org.eclipse.core.resources.source"/> + <plugin id="org.eclipse.core.runtime"/> + <plugin id="org.eclipse.core.runtime.source"/> + <plugin id="org.eclipse.core.variables"/> + <plugin id="org.eclipse.core.variables.source"/> + <plugin id="org.eclipse.datatools.connectivity"/> + <plugin id="org.eclipse.datatools.connectivity.oda"/> + <plugin id="org.eclipse.datatools.connectivity.oda.consumer"/> + <plugin id="org.eclipse.datatools.connectivity.oda.design"/> + <plugin id="org.eclipse.datatools.connectivity.oda.design.ui"/> + <plugin id="org.eclipse.datatools.connectivity.oda.profile"/> + <plugin id="org.eclipse.datatools.connectivity.sqm.core"/> + <plugin id="org.eclipse.datatools.connectivity.ui"/> + <plugin id="org.eclipse.datatools.help"/> + <plugin id="org.eclipse.datatools.modelbase.dbdefinition"/> + <plugin id="org.eclipse.datatools.modelbase.sql"/> + <plugin id="org.eclipse.debug.core"/> + <plugin id="org.eclipse.debug.core.source"/> + <plugin id="org.eclipse.debug.ui"/> + <plugin id="org.eclipse.debug.ui.launchview"/> + <plugin id="org.eclipse.debug.ui.launchview.source"/> + <plugin id="org.eclipse.debug.ui.source"/> + <plugin id="org.eclipse.draw2d"/> + <plugin id="org.eclipse.draw2d.doc.isv"/> + <plugin id="org.eclipse.draw2d.source"/> + <plugin id="org.eclipse.e4.core.commands"/> + <plugin id="org.eclipse.e4.core.commands.source"/> + <plugin id="org.eclipse.e4.core.contexts"/> + <plugin id="org.eclipse.e4.core.contexts.source"/> + <plugin id="org.eclipse.e4.core.di"/> + <plugin id="org.eclipse.e4.core.di.annotations"/> + <plugin id="org.eclipse.e4.core.di.annotations.source"/> + <plugin id="org.eclipse.e4.core.di.extensions"/> + <plugin id="org.eclipse.e4.core.di.extensions.source"/> + <plugin id="org.eclipse.e4.core.di.extensions.supplier"/> + <plugin id="org.eclipse.e4.core.di.extensions.supplier.source"/> + <plugin id="org.eclipse.e4.core.di.source"/> + <plugin id="org.eclipse.e4.core.services"/> + <plugin id="org.eclipse.e4.core.services.source"/> + <plugin id="org.eclipse.e4.emf.xpath"/> + <plugin id="org.eclipse.e4.emf.xpath.source"/> + <plugin id="org.eclipse.e4.tools"/> + <plugin id="org.eclipse.e4.tools.compat"/> + <plugin id="org.eclipse.e4.tools.emf.editor3x"/> + <plugin id="org.eclipse.e4.tools.emf.ui"/> + <plugin id="org.eclipse.e4.tools.jdt.templates"/> + <plugin id="org.eclipse.e4.tools.services"/> + <plugin id="org.eclipse.e4.ui.bindings"/> + <plugin id="org.eclipse.e4.ui.bindings.source"/> + <plugin id="org.eclipse.e4.ui.css.core"/> + <plugin id="org.eclipse.e4.ui.css.core.source"/> + <plugin id="org.eclipse.e4.ui.css.swt"/> + <plugin id="org.eclipse.e4.ui.css.swt.source"/> + <plugin id="org.eclipse.e4.ui.css.swt.theme"/> + <plugin id="org.eclipse.e4.ui.css.swt.theme.source"/> + <plugin id="org.eclipse.e4.ui.di"/> + <plugin id="org.eclipse.e4.ui.di.source"/> + <plugin id="org.eclipse.e4.ui.dialogs"/> + <plugin id="org.eclipse.e4.ui.dialogs.source"/> + <plugin id="org.eclipse.e4.ui.ide"/> + <plugin id="org.eclipse.e4.ui.ide.source"/> + <plugin id="org.eclipse.e4.ui.model.workbench"/> + <plugin id="org.eclipse.e4.ui.model.workbench.source"/> + <plugin id="org.eclipse.e4.ui.services"/> + <plugin id="org.eclipse.e4.ui.services.source"/> + <plugin id="org.eclipse.e4.ui.widgets"/> + <plugin id="org.eclipse.e4.ui.widgets.source"/> + <plugin id="org.eclipse.e4.ui.workbench"/> + <plugin id="org.eclipse.e4.ui.workbench.addons.swt"/> + <plugin id="org.eclipse.e4.ui.workbench.addons.swt.source"/> + <plugin id="org.eclipse.e4.ui.workbench.renderers.swt"/> + <plugin id="org.eclipse.e4.ui.workbench.renderers.swt.cocoa" fragment="true"/> + <plugin id="org.eclipse.e4.ui.workbench.renderers.swt.cocoa.source"/> + <plugin id="org.eclipse.e4.ui.workbench.renderers.swt.source"/> + <plugin id="org.eclipse.e4.ui.workbench.source"/> + <plugin id="org.eclipse.e4.ui.workbench.swt"/> + <plugin id="org.eclipse.e4.ui.workbench.swt.source"/> + <plugin id="org.eclipse.e4.ui.workbench3"/> + <plugin id="org.eclipse.e4.ui.workbench3.source"/> + <plugin id="org.eclipse.ecf"/> + <plugin id="org.eclipse.ecf.filetransfer"/> + <plugin id="org.eclipse.ecf.filetransfer.source"/> + <plugin id="org.eclipse.ecf.identity"/> + <plugin id="org.eclipse.ecf.identity.source"/> + <plugin id="org.eclipse.ecf.provider.filetransfer"/> + <plugin id="org.eclipse.ecf.provider.filetransfer.httpclient45"/> + <plugin id="org.eclipse.ecf.provider.filetransfer.httpclient45.source"/> + <plugin id="org.eclipse.ecf.provider.filetransfer.source"/> + <plugin id="org.eclipse.ecf.provider.filetransfer.ssl" fragment="true"/> + <plugin id="org.eclipse.ecf.provider.filetransfer.ssl.source"/> + <plugin id="org.eclipse.ecf.source"/> + <plugin id="org.eclipse.ecf.ssl" fragment="true"/> + <plugin id="org.eclipse.ecf.ssl.source"/> + <plugin id="org.eclipse.eef"/> + <plugin id="org.eclipse.eef.common"/> + <plugin id="org.eclipse.eef.common.ui"/> + <plugin id="org.eclipse.eef.core"/> + <plugin id="org.eclipse.eef.core.ext.widgets.reference"/> + <plugin id="org.eclipse.eef.ext.widgets.reference"/> + <plugin id="org.eclipse.eef.ide.ui"/> + <plugin id="org.eclipse.eef.ide.ui.ext.widgets.reference"/> + <plugin id="org.eclipse.eef.ide.ui.properties"/> + <plugin id="org.eclipse.eef.properties.ui"/> + <plugin id="org.eclipse.eef.properties.ui.legacy"/> + <plugin id="org.eclipse.egit"/> + <plugin id="org.eclipse.egit.core"/> + <plugin id="org.eclipse.egit.doc"/> + <plugin id="org.eclipse.egit.ui"/> + <plugin id="org.eclipse.emf"/> + <plugin id="org.eclipse.emf.activities"/> + <plugin id="org.eclipse.emf.ant"/> + <plugin id="org.eclipse.emf.ant.source"/> + <plugin id="org.eclipse.emf.cdo"/> + <plugin id="org.eclipse.emf.cdo.admin"/> + <plugin id="org.eclipse.emf.cdo.common"/> + <plugin id="org.eclipse.emf.cdo.compare"/> + <plugin id="org.eclipse.emf.cdo.doc"/> + <plugin id="org.eclipse.emf.cdo.edit"/> + <plugin id="org.eclipse.emf.cdo.examples.installer"/> + <plugin id="org.eclipse.emf.cdo.explorer"/> + <plugin id="org.eclipse.emf.cdo.explorer.ui"/> + <plugin id="org.eclipse.emf.cdo.expressions"/> + <plugin id="org.eclipse.emf.cdo.expressions.edit"/> + <plugin id="org.eclipse.emf.cdo.expressions.editor"/> + <plugin id="org.eclipse.emf.cdo.migrator"/> + <plugin id="org.eclipse.emf.cdo.net4j"/> + <plugin id="org.eclipse.emf.cdo.security"/> + <plugin id="org.eclipse.emf.cdo.security.edit"/> + <plugin id="org.eclipse.emf.cdo.security.editor"/> + <plugin id="org.eclipse.emf.cdo.security.ui"/> + <plugin id="org.eclipse.emf.cdo.server"/> + <plugin id="org.eclipse.emf.cdo.server.admin"/> + <plugin id="org.eclipse.emf.cdo.server.db"/> + <plugin id="org.eclipse.emf.cdo.server.net4j"/> + <plugin id="org.eclipse.emf.cdo.server.ocl"/> + <plugin id="org.eclipse.emf.cdo.server.product"/> + <plugin id="org.eclipse.emf.cdo.server.security"/> + <plugin id="org.eclipse.emf.cdo.transfer"/> + <plugin id="org.eclipse.emf.cdo.transfer.repository"/> + <plugin id="org.eclipse.emf.cdo.transfer.ui"/> + <plugin id="org.eclipse.emf.cdo.transfer.workspace"/> + <plugin id="org.eclipse.emf.cdo.transfer.workspace.ui"/> + <plugin id="org.eclipse.emf.cdo.ui"/> + <plugin id="org.eclipse.emf.cdo.ui.admin"/> + <plugin id="org.eclipse.emf.cdo.ui.compare"/> + <plugin id="org.eclipse.emf.cdo.ui.jdt"/> + <plugin id="org.eclipse.emf.cdo.ui.shared"/> + <plugin id="org.eclipse.emf.cdo.ui.team"/> + <plugin id="org.eclipse.emf.cdo.workspace"/> + <plugin id="org.eclipse.emf.cheatsheets"/> + <plugin id="org.eclipse.emf.codegen"/> + <plugin id="org.eclipse.emf.codegen.ecore"/> + <plugin id="org.eclipse.emf.codegen.ecore.source"/> + <plugin id="org.eclipse.emf.codegen.ecore.ui"/> + <plugin id="org.eclipse.emf.codegen.ecore.ui.source"/> + <plugin id="org.eclipse.emf.codegen.ecore.xtext"/> + <plugin id="org.eclipse.emf.codegen.ecore.xtext.source"/> + <plugin id="org.eclipse.emf.codegen.ecore.xtext.ui"/> + <plugin id="org.eclipse.emf.codegen.ecore.xtext.ui.source"/> + <plugin id="org.eclipse.emf.codegen.source"/> + <plugin id="org.eclipse.emf.codegen.ui"/> + <plugin id="org.eclipse.emf.codegen.ui.source"/> + <plugin id="org.eclipse.emf.common"/> + <plugin id="org.eclipse.emf.common.source"/> + <plugin id="org.eclipse.emf.common.ui"/> + <plugin id="org.eclipse.emf.common.ui.source"/> + <plugin id="org.eclipse.emf.compare"/> + <plugin id="org.eclipse.emf.compare.diagram"/> + <plugin id="org.eclipse.emf.compare.diagram.edit"/> + <plugin id="org.eclipse.emf.compare.diagram.ide.ui"/> + <plugin id="org.eclipse.emf.compare.diagram.ide.ui.sirius"/> + <plugin id="org.eclipse.emf.compare.diagram.ide.ui.sirius.source"/> + <plugin id="org.eclipse.emf.compare.diagram.sirius"/> + <plugin id="org.eclipse.emf.compare.diagram.sirius.source"/> + <plugin id="org.eclipse.emf.compare.doc"/> + <plugin id="org.eclipse.emf.compare.edit"/> + <plugin id="org.eclipse.emf.compare.edit.source"/> + <plugin id="org.eclipse.emf.compare.egit"/> + <plugin id="org.eclipse.emf.compare.egit.ui"/> + <plugin id="org.eclipse.emf.compare.ide"/> + <plugin id="org.eclipse.emf.compare.ide.source"/> + <plugin id="org.eclipse.emf.compare.ide.ui"/> + <plugin id="org.eclipse.emf.compare.ide.ui.source"/> + <plugin id="org.eclipse.emf.compare.rcp"/> + <plugin id="org.eclipse.emf.compare.rcp.ui"/> + <plugin id="org.eclipse.emf.compare.source"/> + <plugin id="org.eclipse.emf.converter"/> + <plugin id="org.eclipse.emf.converter.source"/> + <plugin id="org.eclipse.emf.databinding"/> + <plugin id="org.eclipse.emf.databinding.edit"/> + <plugin id="org.eclipse.emf.databinding.edit.source"/> + <plugin id="org.eclipse.emf.databinding.source"/> + <plugin id="org.eclipse.emf.doc"/> + <plugin id="org.eclipse.emf.ecore"/> + <plugin id="org.eclipse.emf.ecore.change"/> + <plugin id="org.eclipse.emf.ecore.change.edit"/> + <plugin id="org.eclipse.emf.ecore.change.edit.source"/> + <plugin id="org.eclipse.emf.ecore.change.source"/> + <plugin id="org.eclipse.emf.ecore.edit"/> + <plugin id="org.eclipse.emf.ecore.edit.source"/> + <plugin id="org.eclipse.emf.ecore.editor"/> + <plugin id="org.eclipse.emf.ecore.editor.source"/> + <plugin id="org.eclipse.emf.ecore.source"/> + <plugin id="org.eclipse.emf.ecore.xcore"/> + <plugin id="org.eclipse.emf.ecore.xcore.edit"/> + <plugin id="org.eclipse.emf.ecore.xcore.edit.source"/> + <plugin id="org.eclipse.emf.ecore.xcore.exporter"/> + <plugin id="org.eclipse.emf.ecore.xcore.exporter.source"/> + <plugin id="org.eclipse.emf.ecore.xcore.importer"/> + <plugin id="org.eclipse.emf.ecore.xcore.importer.source"/> + <plugin id="org.eclipse.emf.ecore.xcore.lib"/> + <plugin id="org.eclipse.emf.ecore.xcore.lib.source"/> + <plugin id="org.eclipse.emf.ecore.xcore.source"/> + <plugin id="org.eclipse.emf.ecore.xcore.ui"/> + <plugin id="org.eclipse.emf.ecore.xcore.ui.source"/> + <plugin id="org.eclipse.emf.ecore.xmi"/> + <plugin id="org.eclipse.emf.ecore.xmi.source"/> + <plugin id="org.eclipse.emf.ecoretools"/> + <plugin id="org.eclipse.emf.ecoretools.design"/> + <plugin id="org.eclipse.emf.ecoretools.design.ui"/> + <plugin id="org.eclipse.emf.ecoretools.doc"/> + <plugin id="org.eclipse.emf.ecoretools.ui"/> + <plugin id="org.eclipse.emf.ecp.common"/> + <plugin id="org.eclipse.emf.ecp.common.source"/> + <plugin id="org.eclipse.emf.ecp.common.ui"/> + <plugin id="org.eclipse.emf.ecp.common.ui.source"/> + <plugin id="org.eclipse.emf.ecp.edit"/> + <plugin id="org.eclipse.emf.ecp.edit.source"/> + <plugin id="org.eclipse.emf.ecp.edit.swt"/> + <plugin id="org.eclipse.emf.ecp.edit.swt.source"/> + <plugin id="org.eclipse.emf.ecp.emf2web"/> + <plugin id="org.eclipse.emf.ecp.emf2web.json"/> + <plugin id="org.eclipse.emf.ecp.emf2web.json.source"/> + <plugin id="org.eclipse.emf.ecp.emf2web.source"/> + <plugin id="org.eclipse.emf.ecp.emf2web.ui"/> + <plugin id="org.eclipse.emf.ecp.emf2web.ui.json"/> + <plugin id="org.eclipse.emf.ecp.emf2web.ui.json.source"/> + <plugin id="org.eclipse.emf.ecp.emf2web.ui.source"/> + <plugin id="org.eclipse.emf.ecp.ide.editor.view"/> + <plugin id="org.eclipse.emf.ecp.ide.editor.view.source"/> + <plugin id="org.eclipse.emf.ecp.ide.editor.view.templatebridge"/> + <plugin id="org.eclipse.emf.ecp.ide.editor.view.templatebridge.source"/> + <plugin id="org.eclipse.emf.ecp.ide.editor.viewmodel"/> + <plugin id="org.eclipse.emf.ecp.ide.editor.viewmodel.source"/> + <plugin id="org.eclipse.emf.ecp.ide.util"/> + <plugin id="org.eclipse.emf.ecp.ide.util.source"/> + <plugin id="org.eclipse.emf.ecp.ide.view.service"/> + <plugin id="org.eclipse.emf.ecp.ide.view.service.source"/> + <plugin id="org.eclipse.emf.ecp.makeithappen.wizards"/> + <plugin id="org.eclipse.emf.ecp.makeithappen.wizards.source"/> + <plugin id="org.eclipse.emf.ecp.ui.view"/> + <plugin id="org.eclipse.emf.ecp.ui.view.editor.controls"/> + <plugin id="org.eclipse.emf.ecp.ui.view.editor.controls.source"/> + <plugin id="org.eclipse.emf.ecp.ui.view.linewrapper"/> + <plugin id="org.eclipse.emf.ecp.ui.view.linewrapper.source"/> + <plugin id="org.eclipse.emf.ecp.ui.view.source"/> + <plugin id="org.eclipse.emf.ecp.ui.view.swt"/> + <plugin id="org.eclipse.emf.ecp.ui.view.swt.source"/> + <plugin id="org.eclipse.emf.ecp.view.categorization.model"/> + <plugin id="org.eclipse.emf.ecp.view.categorization.model.edit"/> + <plugin id="org.eclipse.emf.ecp.view.categorization.model.edit.source"/> + <plugin id="org.eclipse.emf.ecp.view.categorization.model.source"/> + <plugin id="org.eclipse.emf.ecp.view.categorization.swt"/> + <plugin id="org.eclipse.emf.ecp.view.categorization.swt.source"/> + <plugin id="org.eclipse.emf.ecp.view.compoundcontrol.model"/> + <plugin id="org.eclipse.emf.ecp.view.compoundcontrol.model.edit"/> + <plugin id="org.eclipse.emf.ecp.view.compoundcontrol.model.edit.source"/> + <plugin id="org.eclipse.emf.ecp.view.compoundcontrol.model.source"/> + <plugin id="org.eclipse.emf.ecp.view.compoundcontrol.swt"/> + <plugin id="org.eclipse.emf.ecp.view.compoundcontrol.swt.source"/> + <plugin id="org.eclipse.emf.ecp.view.compoundcontrol.tooling"/> + <plugin id="org.eclipse.emf.ecp.view.compoundcontrol.tooling.source"/> + <plugin id="org.eclipse.emf.ecp.view.context"/> + <plugin id="org.eclipse.emf.ecp.view.context.locale"/> + <plugin id="org.eclipse.emf.ecp.view.context.locale.source"/> + <plugin id="org.eclipse.emf.ecp.view.context.source"/> + <plugin id="org.eclipse.emf.ecp.view.control.multireference"/> + <plugin id="org.eclipse.emf.ecp.view.control.multireference.source"/> + <plugin id="org.eclipse.emf.ecp.view.core.swt"/> + <plugin id="org.eclipse.emf.ecp.view.core.swt.source"/> + <plugin id="org.eclipse.emf.ecp.view.custom.model"/> + <plugin id="org.eclipse.emf.ecp.view.custom.model.edit"/> + <plugin id="org.eclipse.emf.ecp.view.custom.model.edit.source"/> + <plugin id="org.eclipse.emf.ecp.view.custom.model.source"/> + <plugin id="org.eclipse.emf.ecp.view.custom.ui.swt"/> + <plugin id="org.eclipse.emf.ecp.view.custom.ui.swt.source"/> + <plugin id="org.eclipse.emf.ecp.view.edapt"/> + <plugin id="org.eclipse.emf.ecp.view.edapt.source"/> + <plugin id="org.eclipse.emf.ecp.view.group.model"/> + <plugin id="org.eclipse.emf.ecp.view.group.model.edit"/> + <plugin id="org.eclipse.emf.ecp.view.group.model.edit.source"/> + <plugin id="org.eclipse.emf.ecp.view.group.model.source"/> + <plugin id="org.eclipse.emf.ecp.view.group.swt.collapsable"/> + <plugin id="org.eclipse.emf.ecp.view.group.swt.collapsable.source"/> + <plugin id="org.eclipse.emf.ecp.view.group.swt.embedded"/> + <plugin id="org.eclipse.emf.ecp.view.group.swt.embedded.source"/> + <plugin id="org.eclipse.emf.ecp.view.group.ui.swt"/> + <plugin id="org.eclipse.emf.ecp.view.group.ui.swt.source"/> + <plugin id="org.eclipse.emf.ecp.view.horizontal.model"/> + <plugin id="org.eclipse.emf.ecp.view.horizontal.model.edit"/> + <plugin id="org.eclipse.emf.ecp.view.horizontal.model.edit.source"/> + <plugin id="org.eclipse.emf.ecp.view.horizontal.model.source"/> + <plugin id="org.eclipse.emf.ecp.view.horizontal.ui.swt"/> + <plugin id="org.eclipse.emf.ecp.view.horizontal.ui.swt.source"/> + <plugin id="org.eclipse.emf.ecp.view.indexdmr.model"/> + <plugin id="org.eclipse.emf.ecp.view.label.model"/> + <plugin id="org.eclipse.emf.ecp.view.label.model.edit"/> + <plugin id="org.eclipse.emf.ecp.view.label.model.edit.source"/> + <plugin id="org.eclipse.emf.ecp.view.label.model.source"/> + <plugin id="org.eclipse.emf.ecp.view.label.ui.swt"/> + <plugin id="org.eclipse.emf.ecp.view.label.ui.swt.source"/> + <plugin id="org.eclipse.emf.ecp.view.mappingdmr.model"/> + <plugin id="org.eclipse.emf.ecp.view.migrator"/> + <plugin id="org.eclipse.emf.ecp.view.migrator.source"/> + <plugin id="org.eclipse.emf.ecp.view.model"/> + <plugin id="org.eclipse.emf.ecp.view.model.common"/> + <plugin id="org.eclipse.emf.ecp.view.model.common.di"/> + <plugin id="org.eclipse.emf.ecp.view.model.common.di.source"/> + <plugin id="org.eclipse.emf.ecp.view.model.common.source"/> + <plugin id="org.eclipse.emf.ecp.view.model.edapt"/> + <plugin id="org.eclipse.emf.ecp.view.model.edapt.source"/> + <plugin id="org.eclipse.emf.ecp.view.model.edit"/> + <plugin id="org.eclipse.emf.ecp.view.model.edit.source"/> + <plugin id="org.eclipse.emf.ecp.view.model.editor"/> + <plugin id="org.eclipse.emf.ecp.view.model.editor.source"/> + <plugin id="org.eclipse.emf.ecp.view.model.preview.common"/> + <plugin id="org.eclipse.emf.ecp.view.model.preview.common.source"/> + <plugin id="org.eclipse.emf.ecp.view.model.preview.e3"/> + <plugin id="org.eclipse.emf.ecp.view.model.preview.e3.source"/> + <plugin id="org.eclipse.emf.ecp.view.model.project.installer"/> + <plugin id="org.eclipse.emf.ecp.view.model.project.installer.source"/> + <plugin id="org.eclipse.emf.ecp.view.model.provider.generator"/> + <plugin id="org.eclipse.emf.ecp.view.model.provider.generator.source"/> + <plugin id="org.eclipse.emf.ecp.view.model.provider.xmi"/> + <plugin id="org.eclipse.emf.ecp.view.model.provider.xmi.source"/> + <plugin id="org.eclipse.emf.ecp.view.model.source"/> + <plugin id="org.eclipse.emf.ecp.view.rule"/> + <plugin id="org.eclipse.emf.ecp.view.rule.model"/> + <plugin id="org.eclipse.emf.ecp.view.rule.model.edit"/> + <plugin id="org.eclipse.emf.ecp.view.rule.model.edit.source"/> + <plugin id="org.eclipse.emf.ecp.view.rule.model.source"/> + <plugin id="org.eclipse.emf.ecp.view.rule.source"/> + <plugin id="org.eclipse.emf.ecp.view.stack.model"/> + <plugin id="org.eclipse.emf.ecp.view.stack.model.edit"/> + <plugin id="org.eclipse.emf.ecp.view.stack.model.edit.source"/> + <plugin id="org.eclipse.emf.ecp.view.stack.model.source"/> + <plugin id="org.eclipse.emf.ecp.view.stack.ui.swt"/> + <plugin id="org.eclipse.emf.ecp.view.stack.ui.swt.source"/> + <plugin id="org.eclipse.emf.ecp.view.stack.viewmodel"/> + <plugin id="org.eclipse.emf.ecp.view.swt.layout"/> + <plugin id="org.eclipse.emf.ecp.view.swt.layout.source"/> + <plugin id="org.eclipse.emf.ecp.view.table.columnservice"/> + <plugin id="org.eclipse.emf.ecp.view.table.columnservice.source"/> + <plugin id="org.eclipse.emf.ecp.view.table.edapt"/> + <plugin id="org.eclipse.emf.ecp.view.table.edapt.source"/> + <plugin id="org.eclipse.emf.ecp.view.table.model"/> + <plugin id="org.eclipse.emf.ecp.view.table.model.edit"/> + <plugin id="org.eclipse.emf.ecp.view.table.model.edit.source"/> + <plugin id="org.eclipse.emf.ecp.view.table.model.source"/> + <plugin id="org.eclipse.emf.ecp.view.table.ui.swt"/> + <plugin id="org.eclipse.emf.ecp.view.table.ui.swt.source"/> + <plugin id="org.eclipse.emf.ecp.view.template.annotation.model"/> + <plugin id="org.eclipse.emf.ecp.view.template.annotation.model.edit"/> + <plugin id="org.eclipse.emf.ecp.view.template.annotation.model.edit.source"/> + <plugin id="org.eclipse.emf.ecp.view.template.annotation.model.source"/> + <plugin id="org.eclipse.emf.ecp.view.template.model"/> + <plugin id="org.eclipse.emf.ecp.view.template.model.edit"/> + <plugin id="org.eclipse.emf.ecp.view.template.model.edit.source"/> + <plugin id="org.eclipse.emf.ecp.view.template.model.source"/> + <plugin id="org.eclipse.emf.ecp.view.template.service"/> + <plugin id="org.eclipse.emf.ecp.view.template.service.source"/> + <plugin id="org.eclipse.emf.ecp.view.template.tooling"/> + <plugin id="org.eclipse.emf.ecp.view.template.tooling.source"/> + <plugin id="org.eclipse.emf.ecp.view.treemasterdetail.model"/> + <plugin id="org.eclipse.emf.ecp.view.treemasterdetail.model.edit"/> + <plugin id="org.eclipse.emf.ecp.view.treemasterdetail.model.edit.source"/> + <plugin id="org.eclipse.emf.ecp.view.treemasterdetail.model.source"/> + <plugin id="org.eclipse.emf.ecp.view.treemasterdetail.ui.swt"/> + <plugin id="org.eclipse.emf.ecp.view.treemasterdetail.ui.swt.source"/> + <plugin id="org.eclipse.emf.ecp.view.treemasterdetail.validation"/> + <plugin id="org.eclipse.emf.ecp.view.treemasterdetail.validation.source"/> + <plugin id="org.eclipse.emf.ecp.view.unset"/> + <plugin id="org.eclipse.emf.ecp.view.unset.source"/> + <plugin id="org.eclipse.emf.ecp.view.util.swt"/> + <plugin id="org.eclipse.emf.ecp.view.util.swt.source"/> + <plugin id="org.eclipse.emf.ecp.view.validation"/> + <plugin id="org.eclipse.emf.ecp.view.validation.source"/> + <plugin id="org.eclipse.emf.ecp.view.vertical.model"/> + <plugin id="org.eclipse.emf.ecp.view.vertical.model.edit"/> + <plugin id="org.eclipse.emf.ecp.view.vertical.model.edit.source"/> + <plugin id="org.eclipse.emf.ecp.view.vertical.model.source"/> + <plugin id="org.eclipse.emf.ecp.view.vertical.ui.swt"/> + <plugin id="org.eclipse.emf.ecp.view.vertical.ui.swt.source"/> + <plugin id="org.eclipse.emf.ecp.view.viewproxy.model"/> + <plugin id="org.eclipse.emf.ecp.view.viewproxy.model.edit"/> + <plugin id="org.eclipse.emf.ecp.view.viewproxy.model.edit.source"/> + <plugin id="org.eclipse.emf.ecp.view.viewproxy.model.source"/> + <plugin id="org.eclipse.emf.ecp.view.workspace.migrator"/> + <plugin id="org.eclipse.emf.ecp.view.workspace.migrator.source"/> + <plugin id="org.eclipse.emf.edapt.common"/> + <plugin id="org.eclipse.emf.edapt.common.source"/> + <plugin id="org.eclipse.emf.edapt.declaration"/> + <plugin id="org.eclipse.emf.edapt.declaration.source"/> + <plugin id="org.eclipse.emf.edapt.history"/> + <plugin id="org.eclipse.emf.edapt.history.source"/> + <plugin id="org.eclipse.emf.edapt.migration"/> + <plugin id="org.eclipse.emf.edapt.migration.source"/> + <plugin id="org.eclipse.emf.edit"/> + <plugin id="org.eclipse.emf.edit.source"/> + <plugin id="org.eclipse.emf.edit.ui"/> + <plugin id="org.eclipse.emf.edit.ui.source"/> + <plugin id="org.eclipse.emf.emfatic.core"/> + <plugin id="org.eclipse.emf.emfatic.doc.user"/> + <plugin id="org.eclipse.emf.emfatic.ui"/> + <plugin id="org.eclipse.emf.example.installer"/> + <plugin id="org.eclipse.emf.examples"/> + <plugin id="org.eclipse.emf.examples.databinding.project.core"/> + <plugin id="org.eclipse.emf.examples.databinding.project.core.model"/> + <plugin id="org.eclipse.emf.examples.databinding.project.ui.rcp"/> + <plugin id="org.eclipse.emf.examples.generator.validator"/> + <plugin id="org.eclipse.emf.examples.jet.article2"/> + <plugin id="org.eclipse.emf.examples.library"/> + <plugin id="org.eclipse.emf.examples.library.edit"/> + <plugin id="org.eclipse.emf.examples.library.editor"/> + <plugin id="org.eclipse.emf.exporter"/> + <plugin id="org.eclipse.emf.exporter.html"/> + <plugin id="org.eclipse.emf.exporter.source"/> + <plugin id="org.eclipse.emf.generic.editor"/> + <plugin id="org.eclipse.emf.generic.editor.source"/> + <plugin id="org.eclipse.emf.importer"/> + <plugin id="org.eclipse.emf.importer.ecore"/> + <plugin id="org.eclipse.emf.importer.ecore.source"/> + <plugin id="org.eclipse.emf.importer.java"/> + <plugin id="org.eclipse.emf.importer.java.source"/> + <plugin id="org.eclipse.emf.importer.rose"/> + <plugin id="org.eclipse.emf.importer.rose.source"/> + <plugin id="org.eclipse.emf.importer.source"/> + <plugin id="org.eclipse.emf.java"/> + <plugin id="org.eclipse.emf.java.edit"/> + <plugin id="org.eclipse.emf.java.editor"/> + <plugin id="org.eclipse.emf.mapping"/> + <plugin id="org.eclipse.emf.mapping.ecore"/> + <plugin id="org.eclipse.emf.mapping.ecore.editor"/> + <plugin id="org.eclipse.emf.mapping.ecore.editor.source"/> + <plugin id="org.eclipse.emf.mapping.ecore.source"/> + <plugin id="org.eclipse.emf.mapping.ecore2ecore"/> + <plugin id="org.eclipse.emf.mapping.ecore2ecore.editor"/> + <plugin id="org.eclipse.emf.mapping.ecore2ecore.editor.source"/> + <plugin id="org.eclipse.emf.mapping.ecore2ecore.source"/> + <plugin id="org.eclipse.emf.mapping.ecore2xml"/> + <plugin id="org.eclipse.emf.mapping.ecore2xml.source"/> + <plugin id="org.eclipse.emf.mapping.ecore2xml.ui"/> + <plugin id="org.eclipse.emf.mapping.ecore2xml.ui.source"/> + <plugin id="org.eclipse.emf.mapping.source"/> + <plugin id="org.eclipse.emf.mapping.ui"/> + <plugin id="org.eclipse.emf.mapping.ui.source"/> + <plugin id="org.eclipse.emf.mapping.xsd2ecore"/> + <plugin id="org.eclipse.emf.mapping.xsd2ecore.editor"/> + <plugin id="org.eclipse.emf.mapping.xsd2ecore.editor.source"/> + <plugin id="org.eclipse.emf.mapping.xsd2ecore.source"/> + <plugin id="org.eclipse.emf.mwe.core"/> + <plugin id="org.eclipse.emf.mwe.ui"/> + <plugin id="org.eclipse.emf.mwe.utils"/> + <plugin id="org.eclipse.emf.mwe2.language"/> + <plugin id="org.eclipse.emf.mwe2.language.ide"/> + <plugin id="org.eclipse.emf.mwe2.language.ide.source"/> + <plugin id="org.eclipse.emf.mwe2.language.source"/> + <plugin id="org.eclipse.emf.mwe2.language.ui"/> + <plugin id="org.eclipse.emf.mwe2.language.ui.source"/> + <plugin id="org.eclipse.emf.mwe2.launch"/> + <plugin id="org.eclipse.emf.mwe2.launch.source"/> + <plugin id="org.eclipse.emf.mwe2.launch.ui"/> + <plugin id="org.eclipse.emf.mwe2.launch.ui.source"/> + <plugin id="org.eclipse.emf.mwe2.lib"/> + <plugin id="org.eclipse.emf.mwe2.lib.source"/> + <plugin id="org.eclipse.emf.mwe2.runtime"/> + <plugin id="org.eclipse.emf.mwe2.runtime.source"/> + <plugin id="org.eclipse.emf.oda"/> + <plugin id="org.eclipse.emf.oda.ecore"/> + <plugin id="org.eclipse.emf.oda.ecore.source"/> + <plugin id="org.eclipse.emf.oda.ecore.ui"/> + <plugin id="org.eclipse.emf.oda.ecore.ui.source"/> + <plugin id="org.eclipse.emf.oda.source"/> + <plugin id="org.eclipse.emf.parsley"/> + <plugin id="org.eclipse.emf.parsley.cdo"/> + <plugin id="org.eclipse.emf.parsley.cdo.common"/> + <plugin id="org.eclipse.emf.parsley.cdo.common.source"/> + <plugin id="org.eclipse.emf.parsley.common"/> + <plugin id="org.eclipse.emf.parsley.common.source"/> + <plugin id="org.eclipse.emf.parsley.doc"/> + <plugin id="org.eclipse.emf.parsley.doc.source"/> + <plugin id="org.eclipse.emf.parsley.dsl"/> + <plugin id="org.eclipse.emf.parsley.dsl.additional.builder"/> + <plugin id="org.eclipse.emf.parsley.dsl.additional.builder.source"/> + <plugin id="org.eclipse.emf.parsley.dsl.ide"/> + <plugin id="org.eclipse.emf.parsley.dsl.ide.source"/> + <plugin id="org.eclipse.emf.parsley.dsl.source"/> + <plugin id="org.eclipse.emf.parsley.dsl.ui"/> + <plugin id="org.eclipse.emf.parsley.dsl.ui.source"/> + <plugin id="org.eclipse.emf.parsley.editors"/> + <plugin id="org.eclipse.emf.parsley.editors.common"/> + <plugin id="org.eclipse.emf.parsley.editors.common.source"/> + <plugin id="org.eclipse.emf.parsley.generator.common"/> + <plugin id="org.eclipse.emf.parsley.generator.common.source"/> + <plugin id="org.eclipse.emf.parsley.junit4"/> + <plugin id="org.eclipse.emf.parsley.junit4.source"/> + <plugin id="org.eclipse.emf.parsley.runtime"/> + <plugin id="org.eclipse.emf.parsley.runtime.common"/> + <plugin id="org.eclipse.emf.parsley.runtime.common.source"/> + <plugin id="org.eclipse.emf.parsley.ui.examples"/> + <plugin id="org.eclipse.emf.parsley.ui.examples.source"/> + <plugin id="org.eclipse.emf.parsley.views"/> + <plugin id="org.eclipse.emf.parsley.views.common"/> + <plugin id="org.eclipse.emf.parsley.views.common.source"/> + <plugin id="org.eclipse.emf.parsley.views.source"/> + <plugin id="org.eclipse.emf.parsley.wizards"/> + <plugin id="org.eclipse.emf.parsley.wizards.source"/> + <plugin id="org.eclipse.emf.query"/> + <plugin id="org.eclipse.emf.query.doc"/> + <plugin id="org.eclipse.emf.query.examples"/> + <plugin id="org.eclipse.emf.query.ocl"/> + <plugin id="org.eclipse.emf.query.ocl.source"/> + <plugin id="org.eclipse.emf.query.source"/> + <plugin id="org.eclipse.emf.source"/> + <plugin id="org.eclipse.emf.transaction"/> + <plugin id="org.eclipse.emf.transaction.doc"/> + <plugin id="org.eclipse.emf.transaction.examples"/> + <plugin id="org.eclipse.emf.transaction.source"/> + <plugin id="org.eclipse.emf.transaction.ui"/> + <plugin id="org.eclipse.emf.transaction.ui.source"/> + <plugin id="org.eclipse.emf.validation"/> + <plugin id="org.eclipse.emf.validation.doc"/> + <plugin id="org.eclipse.emf.validation.examples"/> + <plugin id="org.eclipse.emf.validation.ocl"/> + <plugin id="org.eclipse.emf.validation.ocl.source"/> + <plugin id="org.eclipse.emf.validation.source"/> + <plugin id="org.eclipse.emf.validation.ui"/> + <plugin id="org.eclipse.emf.validation.ui.ide"/> + <plugin id="org.eclipse.emf.validation.ui.ide.source"/> + <plugin id="org.eclipse.emf.validation.ui.source"/> + <plugin id="org.eclipse.emf.workspace"/> + <plugin id="org.eclipse.emf.workspace.doc"/> + <plugin id="org.eclipse.emf.workspace.source"/> + <plugin id="org.eclipse.emf.workspace.ui"/> + <plugin id="org.eclipse.emf.workspace.ui.source"/> + <plugin id="org.eclipse.emfforms.coffee.wizards"/> + <plugin id="org.eclipse.emfforms.coffee.wizards.source"/> + <plugin id="org.eclipse.emfforms.common"/> + <plugin id="org.eclipse.emfforms.common.source"/> + <plugin id="org.eclipse.emfforms.common.validation"/> + <plugin id="org.eclipse.emfforms.common.validation.source"/> + <plugin id="org.eclipse.emfforms.core.bazaar"/> + <plugin id="org.eclipse.emfforms.core.bazaar.source"/> + <plugin id="org.eclipse.emfforms.core.services"/> + <plugin id="org.eclipse.emfforms.core.services.databinding.featurepath"/> + <plugin id="org.eclipse.emfforms.core.services.databinding.featurepath.source"/> + <plugin id="org.eclipse.emfforms.core.services.databinding.index"/> + <plugin id="org.eclipse.emfforms.core.services.databinding.mapping"/> + <plugin id="org.eclipse.emfforms.core.services.domainexpander.default"/> + <plugin id="org.eclipse.emfforms.core.services.domainexpander.default.source"/> + <plugin id="org.eclipse.emfforms.core.services.domainexpander.index"/> + <plugin id="org.eclipse.emfforms.core.services.domainexpander.mapping"/> + <plugin id="org.eclipse.emfforms.core.services.domainexpander.table"/> + <plugin id="org.eclipse.emfforms.core.services.domainexpander.table.source"/> + <plugin id="org.eclipse.emfforms.core.services.editsupport"/> + <plugin id="org.eclipse.emfforms.core.services.editsupport.source"/> + <plugin id="org.eclipse.emfforms.core.services.emf"/> + <plugin id="org.eclipse.emfforms.core.services.emf.source"/> + <plugin id="org.eclipse.emfforms.core.services.emfspecificservice"/> + <plugin id="org.eclipse.emfforms.core.services.emfspecificservice.source"/> + <plugin id="org.eclipse.emfforms.core.services.legacy"/> + <plugin id="org.eclipse.emfforms.core.services.legacy.source"/> + <plugin id="org.eclipse.emfforms.core.services.locale.default"/> + <plugin id="org.eclipse.emfforms.core.services.locale.default.source"/> + <plugin id="org.eclipse.emfforms.core.services.mappingprovider.default"/> + <plugin id="org.eclipse.emfforms.core.services.mappingprovider.default.source"/> + <plugin id="org.eclipse.emfforms.core.services.mappingprovider.table"/> + <plugin id="org.eclipse.emfforms.core.services.mappingprovider.table.panel"/> + <plugin id="org.eclipse.emfforms.core.services.mappingprovider.table.panel.source"/> + <plugin id="org.eclipse.emfforms.core.services.mappingprovider.table.source"/> + <plugin id="org.eclipse.emfforms.core.services.segments"/> + <plugin id="org.eclipse.emfforms.core.services.segments.featurepath"/> + <plugin id="org.eclipse.emfforms.core.services.segments.featurepath.source"/> + <plugin id="org.eclipse.emfforms.core.services.segments.index"/> + <plugin id="org.eclipse.emfforms.core.services.segments.mapping"/> + <plugin id="org.eclipse.emfforms.core.services.segments.multi"/> + <plugin id="org.eclipse.emfforms.core.services.segments.multi.source"/> + <plugin id="org.eclipse.emfforms.core.services.segments.source"/> + <plugin id="org.eclipse.emfforms.core.services.source"/> + <plugin id="org.eclipse.emfforms.core.services.structuralchange"/> + <plugin id="org.eclipse.emfforms.core.services.structuralchange.default"/> + <plugin id="org.eclipse.emfforms.core.services.structuralchange.default.source"/> + <plugin id="org.eclipse.emfforms.core.services.structuralchange.index"/> + <plugin id="org.eclipse.emfforms.core.services.structuralchange.mapping"/> + <plugin id="org.eclipse.emfforms.core.services.structuralchange.source"/> + <plugin id="org.eclipse.emfforms.core.services.structuralchange.table"/> + <plugin id="org.eclipse.emfforms.core.services.structuralchange.table.source"/> + <plugin id="org.eclipse.emfforms.editor"/> + <plugin id="org.eclipse.emfforms.editor.ecore"/> + <plugin id="org.eclipse.emfforms.editor.ecore.source"/> + <plugin id="org.eclipse.emfforms.editor.genmodel"/> + <plugin id="org.eclipse.emfforms.editor.genmodel.source"/> + <plugin id="org.eclipse.emfforms.editor.source"/> + <plugin id="org.eclipse.emfforms.example.common.wizards"/> + <plugin id="org.eclipse.emfforms.example.common.wizards.source"/> + <plugin id="org.eclipse.emfforms.ide.builder"/> + <plugin id="org.eclipse.emfforms.ide.builder.source"/> + <plugin id="org.eclipse.emfforms.ide.preferences"/> + <plugin id="org.eclipse.emfforms.ide.preferences.source"/> + <plugin id="org.eclipse.emfforms.ide.view.indexsegment"/> + <plugin id="org.eclipse.emfforms.ide.view.indexsegment.source"/> + <plugin id="org.eclipse.emfforms.ide.view.mappingsegment"/> + <plugin id="org.eclipse.emfforms.ide.view.mappingsegment.source"/> + <plugin id="org.eclipse.emfforms.ide.view.multisegment"/> + <plugin id="org.eclipse.emfforms.ide.view.multisegment.source"/> + <plugin id="org.eclipse.emfforms.ide.view.segments"/> + <plugin id="org.eclipse.emfforms.ide.view.segments.source"/> + <plugin id="org.eclipse.emfforms.ide.viewtemplate.builder"/> + <plugin id="org.eclipse.emfforms.ide.viewtemplate.builder.source"/> + <plugin id="org.eclipse.emfforms.localization"/> + <plugin id="org.eclipse.emfforms.localization.source"/> + <plugin id="org.eclipse.emfforms.setup.base"/> + <plugin id="org.eclipse.emfforms.swt.control.multiattribute"/> + <plugin id="org.eclipse.emfforms.swt.control.multiattribute.source"/> + <plugin id="org.eclipse.emfforms.swt.core"/> + <plugin id="org.eclipse.emfforms.swt.core.di"/> + <plugin id="org.eclipse.emfforms.swt.core.di.extension"/> + <plugin id="org.eclipse.emfforms.swt.core.di.extension.source"/> + <plugin id="org.eclipse.emfforms.swt.core.di.source"/> + <plugin id="org.eclipse.emfforms.swt.core.plugin"/> + <plugin id="org.eclipse.emfforms.swt.core.plugin.source"/> + <plugin id="org.eclipse.emfforms.swt.core.source"/> + <plugin id="org.eclipse.emfforms.swt.reference.table"/> + <plugin id="org.eclipse.emfforms.swt.reference.table.source"/> + <plugin id="org.eclipse.emfforms.swt.table"/> + <plugin id="org.eclipse.emfforms.swt.table.source"/> + <plugin id="org.eclipse.emfforms.swt.treemasterdetail"/> + <plugin id="org.eclipse.emfforms.swt.treemasterdetail.decorator.validation.default"/> + <plugin id="org.eclipse.emfforms.swt.treemasterdetail.decorator.validation.default.source"/> + <plugin id="org.eclipse.emfforms.swt.treemasterdetail.source"/> + <plugin id="org.eclipse.emfforms.view.annotation.model"/> + <plugin id="org.eclipse.emfforms.view.annotation.model.edit"/> + <plugin id="org.eclipse.emfforms.view.annotation.model.edit.source"/> + <plugin id="org.eclipse.emfforms.view.annotation.model.source"/> + <plugin id="org.eclipse.emfforms.view.indexsegment.model"/> + <plugin id="org.eclipse.emfforms.view.mappingsegment.model"/> + <plugin id="org.eclipse.emfforms.view.model.localization"/> + <plugin id="org.eclipse.emfforms.view.model.localization.source"/> + <plugin id="org.eclipse.emfforms.view.multisegment.model"/> + <plugin id="org.eclipse.emfforms.view.multisegment.model.edit"/> + <plugin id="org.eclipse.emfforms.view.multisegment.model.edit.source"/> + <plugin id="org.eclipse.emfforms.view.multisegment.model.source"/> + <plugin id="org.eclipse.epp.mpc.core"/> + <plugin id="org.eclipse.epp.mpc.help.ui"/> + <plugin id="org.eclipse.epp.mpc.ui"/> + <plugin id="org.eclipse.epp.mpc.ui.css"/> + <plugin id="org.eclipse.epp.package.common"/> + <plugin id="org.eclipse.epp.package.modeling"/> + <plugin id="org.eclipse.epsilon.common"/> + <plugin id="org.eclipse.epsilon.common.dt"/> + <plugin id="org.eclipse.epsilon.common.dt.examples"/> + <plugin id="org.eclipse.epsilon.dt.epackageregistryexplorer"/> + <plugin id="org.eclipse.epsilon.dt.exeed"/> + <plugin id="org.eclipse.epsilon.ecl.dt"/> + <plugin id="org.eclipse.epsilon.ecl.engine"/> + <plugin id="org.eclipse.epsilon.egl.dt"/> + <plugin id="org.eclipse.epsilon.egl.dt.traceability.editor"/> + <plugin id="org.eclipse.epsilon.egl.dt.traceability.fine.emf"/> + <plugin id="org.eclipse.epsilon.egl.engine"/> + <plugin id="org.eclipse.epsilon.egl.traceability.fine"/> + <plugin id="org.eclipse.epsilon.emc.bibtex"/> + <plugin id="org.eclipse.epsilon.emc.bibtex.dt"/> + <plugin id="org.eclipse.epsilon.emc.composite"/> + <plugin id="org.eclipse.epsilon.emc.emf"/> + <plugin id="org.eclipse.epsilon.emc.emf.decorator"/> + <plugin id="org.eclipse.epsilon.emc.emf.decorator.dt"/> + <plugin id="org.eclipse.epsilon.emc.emf.dt"/> + <plugin id="org.eclipse.epsilon.emc.emf.virtual"/> + <plugin id="org.eclipse.epsilon.emc.graphml"/> + <plugin id="org.eclipse.epsilon.emc.graphml.dt"/> + <plugin id="org.eclipse.epsilon.emc.html"/> + <plugin id="org.eclipse.epsilon.emc.html.dt"/> + <plugin id="org.eclipse.epsilon.emc.muddle"/> + <plugin id="org.eclipse.epsilon.emc.plainxml"/> + <plugin id="org.eclipse.epsilon.emc.plainxml.dt"/> + <plugin id="org.eclipse.epsilon.emc.uml"/> + <plugin id="org.eclipse.epsilon.emc.uml.dt"/> + <plugin id="org.eclipse.epsilon.emf.dt"/> + <plugin id="org.eclipse.epsilon.emg.dt"/> + <plugin id="org.eclipse.epsilon.emg.engine"/> + <plugin id="org.eclipse.epsilon.eml.dt"/> + <plugin id="org.eclipse.epsilon.eml.engine"/> + <plugin id="org.eclipse.epsilon.eol.dt"/> + <plugin id="org.eclipse.epsilon.eol.dt.interpreter"/> + <plugin id="org.eclipse.epsilon.eol.engine"/> + <plugin id="org.eclipse.epsilon.eol.tools"/> + <plugin id="org.eclipse.epsilon.epl.dt"/> + <plugin id="org.eclipse.epsilon.epl.engine"/> + <plugin id="org.eclipse.epsilon.erl.dt"/> + <plugin id="org.eclipse.epsilon.erl.engine"/> + <plugin id="org.eclipse.epsilon.etl.dt"/> + <plugin id="org.eclipse.epsilon.etl.engine"/> + <plugin id="org.eclipse.epsilon.eugenia"/> + <plugin id="org.eclipse.epsilon.eugenia.runtime.dependencies"/> + <plugin id="org.eclipse.epsilon.eunit.cmp.emf"/> + <plugin id="org.eclipse.epsilon.eunit.dt"/> + <plugin id="org.eclipse.epsilon.eunit.dt.diff.emf"/> + <plugin id="org.eclipse.epsilon.eunit.dt.diff.files"/> + <plugin id="org.eclipse.epsilon.eunit.engine"/> + <plugin id="org.eclipse.epsilon.eunit.junit"/> + <plugin id="org.eclipse.epsilon.eunit.junit.dt"/> + <plugin id="org.eclipse.epsilon.evl.dt"/> + <plugin id="org.eclipse.epsilon.evl.emf.validation"/> + <plugin id="org.eclipse.epsilon.evl.engine"/> + <plugin id="org.eclipse.epsilon.ewl.dt"/> + <plugin id="org.eclipse.epsilon.ewl.emf"/> + <plugin id="org.eclipse.epsilon.ewl.engine"/> + <plugin id="org.eclipse.epsilon.ewl.gmf"/> + <plugin id="org.eclipse.epsilon.flexmi"/> + <plugin id="org.eclipse.epsilon.flexmi.dt"/> + <plugin id="org.eclipse.epsilon.flock.dt"/> + <plugin id="org.eclipse.epsilon.flock.dt.emf"/> + <plugin id="org.eclipse.epsilon.flock.engine"/> + <plugin id="org.eclipse.epsilon.help"/> + <plugin id="org.eclipse.epsilon.perspective"/> + <plugin id="org.eclipse.epsilon.pinset.dt"/> + <plugin id="org.eclipse.epsilon.pinset.engine"/> + <plugin id="org.eclipse.epsilon.profiling"/> + <plugin id="org.eclipse.epsilon.profiling.dt"/> + <plugin id="org.eclipse.epsilon.workflow"/> + <plugin id="org.eclipse.epsilon.workflow.emf"/> + <plugin id="org.eclipse.epsilon.workflow.eugenia"/> + <plugin id="org.eclipse.equinox.app"/> + <plugin id="org.eclipse.equinox.app.source"/> + <plugin id="org.eclipse.equinox.bidi"/> + <plugin id="org.eclipse.equinox.bidi.source"/> + <plugin id="org.eclipse.equinox.common"/> + <plugin id="org.eclipse.equinox.common.source"/> + <plugin id="org.eclipse.equinox.concurrent"/> + <plugin id="org.eclipse.equinox.concurrent.source"/> + <plugin id="org.eclipse.equinox.console"/> + <plugin id="org.eclipse.equinox.console.source"/> + <plugin id="org.eclipse.equinox.event"/> + <plugin id="org.eclipse.equinox.event.source"/> + <plugin id="org.eclipse.equinox.frameworkadmin"/> + <plugin id="org.eclipse.equinox.frameworkadmin.equinox"/> + <plugin id="org.eclipse.equinox.frameworkadmin.equinox.source"/> + <plugin id="org.eclipse.equinox.frameworkadmin.source"/> + <plugin id="org.eclipse.equinox.http.jetty"/> + <plugin id="org.eclipse.equinox.http.jetty.source"/> + <plugin id="org.eclipse.equinox.http.registry"/> + <plugin id="org.eclipse.equinox.http.registry.source"/> + <plugin id="org.eclipse.equinox.http.servlet"/> + <plugin id="org.eclipse.equinox.http.servlet.source"/> + <plugin id="org.eclipse.equinox.jsp.jasper"/> + <plugin id="org.eclipse.equinox.jsp.jasper.registry"/> + <plugin id="org.eclipse.equinox.jsp.jasper.registry.source"/> + <plugin id="org.eclipse.equinox.jsp.jasper.source"/> + <plugin id="org.eclipse.equinox.launcher"/> + <plugin id="org.eclipse.equinox.launcher.cocoa.macosx.x86_64" fragment="true"/> + <plugin id="org.eclipse.equinox.launcher.source"/> + <plugin id="org.eclipse.equinox.p2.artifact.repository"/> + <plugin id="org.eclipse.equinox.p2.artifact.repository.source"/> + <plugin id="org.eclipse.equinox.p2.console"/> + <plugin id="org.eclipse.equinox.p2.console.source"/> + <plugin id="org.eclipse.equinox.p2.core"/> + <plugin id="org.eclipse.equinox.p2.core.source"/> + <plugin id="org.eclipse.equinox.p2.director"/> + <plugin id="org.eclipse.equinox.p2.director.app"/> + <plugin id="org.eclipse.equinox.p2.director.app.source"/> + <plugin id="org.eclipse.equinox.p2.director.source"/> + <plugin id="org.eclipse.equinox.p2.directorywatcher"/> + <plugin id="org.eclipse.equinox.p2.directorywatcher.source"/> + <plugin id="org.eclipse.equinox.p2.discovery"/> + <plugin id="org.eclipse.equinox.p2.discovery.compatibility"/> + <plugin id="org.eclipse.equinox.p2.engine"/> + <plugin id="org.eclipse.equinox.p2.engine.source"/> + <plugin id="org.eclipse.equinox.p2.extensionlocation"/> + <plugin id="org.eclipse.equinox.p2.extensionlocation.source"/> + <plugin id="org.eclipse.equinox.p2.garbagecollector"/> + <plugin id="org.eclipse.equinox.p2.garbagecollector.source"/> + <plugin id="org.eclipse.equinox.p2.jarprocessor"/> + <plugin id="org.eclipse.equinox.p2.jarprocessor.source"/> + <plugin id="org.eclipse.equinox.p2.metadata"/> + <plugin id="org.eclipse.equinox.p2.metadata.repository"/> + <plugin id="org.eclipse.equinox.p2.metadata.repository.source"/> + <plugin id="org.eclipse.equinox.p2.metadata.source"/> + <plugin id="org.eclipse.equinox.p2.operations"/> + <plugin id="org.eclipse.equinox.p2.operations.source"/> + <plugin id="org.eclipse.equinox.p2.publisher"/> + <plugin id="org.eclipse.equinox.p2.publisher.eclipse"/> + <plugin id="org.eclipse.equinox.p2.publisher.eclipse.source"/> + <plugin id="org.eclipse.equinox.p2.publisher.source"/> + <plugin id="org.eclipse.equinox.p2.reconciler.dropins"/> + <plugin id="org.eclipse.equinox.p2.reconciler.dropins.source"/> + <plugin id="org.eclipse.equinox.p2.repository"/> + <plugin id="org.eclipse.equinox.p2.repository.source"/> + <plugin id="org.eclipse.equinox.p2.repository.tools"/> + <plugin id="org.eclipse.equinox.p2.repository.tools.source"/> + <plugin id="org.eclipse.equinox.p2.touchpoint.eclipse"/> + <plugin id="org.eclipse.equinox.p2.touchpoint.eclipse.source"/> + <plugin id="org.eclipse.equinox.p2.touchpoint.natives"/> + <plugin id="org.eclipse.equinox.p2.touchpoint.natives.source"/> + <plugin id="org.eclipse.equinox.p2.transport.ecf"/> + <plugin id="org.eclipse.equinox.p2.transport.ecf.source"/> + <plugin id="org.eclipse.equinox.p2.ui"/> + <plugin id="org.eclipse.equinox.p2.ui.discovery"/> + <plugin id="org.eclipse.equinox.p2.ui.importexport"/> + <plugin id="org.eclipse.equinox.p2.ui.importexport.source"/> + <plugin id="org.eclipse.equinox.p2.ui.sdk"/> + <plugin id="org.eclipse.equinox.p2.ui.sdk.scheduler"/> + <plugin id="org.eclipse.equinox.p2.ui.sdk.scheduler.source"/> + <plugin id="org.eclipse.equinox.p2.ui.sdk.source"/> + <plugin id="org.eclipse.equinox.p2.ui.source"/> + <plugin id="org.eclipse.equinox.p2.updatechecker"/> + <plugin id="org.eclipse.equinox.p2.updatechecker.source"/> + <plugin id="org.eclipse.equinox.p2.updatesite"/> + <plugin id="org.eclipse.equinox.p2.updatesite.source"/> + <plugin id="org.eclipse.equinox.preferences"/> + <plugin id="org.eclipse.equinox.preferences.source"/> + <plugin id="org.eclipse.equinox.registry"/> + <plugin id="org.eclipse.equinox.registry.source"/> + <plugin id="org.eclipse.equinox.security"/> + <plugin id="org.eclipse.equinox.security.macosx" fragment="true"/> + <plugin id="org.eclipse.equinox.security.macosx.source"/> + <plugin id="org.eclipse.equinox.security.source"/> + <plugin id="org.eclipse.equinox.security.ui"/> + <plugin id="org.eclipse.equinox.security.ui.source"/> + <plugin id="org.eclipse.equinox.simpleconfigurator"/> + <plugin id="org.eclipse.equinox.simpleconfigurator.manipulator"/> + <plugin id="org.eclipse.equinox.simpleconfigurator.manipulator.source"/> + <plugin id="org.eclipse.equinox.simpleconfigurator.source"/> + <plugin id="org.eclipse.gef"/> + <plugin id="org.eclipse.gef.doc.isv"/> + <plugin id="org.eclipse.gef.examples.ui.pde"/> + <plugin id="org.eclipse.gef.source"/> + <plugin id="org.eclipse.gmf"/> + <plugin id="org.eclipse.gmf.bridge"/> + <plugin id="org.eclipse.gmf.bridge.ui"/> + <plugin id="org.eclipse.gmf.codegen"/> + <plugin id="org.eclipse.gmf.codegen.xtend"/> + <plugin id="org.eclipse.gmf.common"/> + <plugin id="org.eclipse.gmf.examples.runtime"/> + <plugin id="org.eclipse.gmf.examples.runtime.diagram.geoshapes"/> + <plugin id="org.eclipse.gmf.examples.runtime.diagram.logic"/> + <plugin id="org.eclipse.gmf.examples.runtime.diagram.logic.model"/> + <plugin id="org.eclipse.gmf.examples.runtime.diagram.logic.model.edit"/> + <plugin id="org.eclipse.gmf.examples.runtime.diagram.logic.model.editor"/> + <plugin id="org.eclipse.gmf.examples.runtime.ui.pde"/> + <plugin id="org.eclipse.gmf.graphdef"/> + <plugin id="org.eclipse.gmf.graphdef.codegen"/> + <plugin id="org.eclipse.gmf.graphdef.edit"/> + <plugin id="org.eclipse.gmf.map"/> + <plugin id="org.eclipse.gmf.map.edit"/> + <plugin id="org.eclipse.gmf.runtime.common.core"/> + <plugin id="org.eclipse.gmf.runtime.common.core.source"/> + <plugin id="org.eclipse.gmf.runtime.common.ui"/> + <plugin id="org.eclipse.gmf.runtime.common.ui.action"/> + <plugin id="org.eclipse.gmf.runtime.common.ui.action.ide"/> + <plugin id="org.eclipse.gmf.runtime.common.ui.action.ide.source"/> + <plugin id="org.eclipse.gmf.runtime.common.ui.action.source"/> + <plugin id="org.eclipse.gmf.runtime.common.ui.printing"/> + <plugin id="org.eclipse.gmf.runtime.common.ui.printing.source"/> + <plugin id="org.eclipse.gmf.runtime.common.ui.printing.win32" fragment="true"/> + <plugin id="org.eclipse.gmf.runtime.common.ui.printing.win32.source"/> + <plugin id="org.eclipse.gmf.runtime.common.ui.services"/> + <plugin id="org.eclipse.gmf.runtime.common.ui.services.action"/> + <plugin id="org.eclipse.gmf.runtime.common.ui.services.action.source"/> + <plugin id="org.eclipse.gmf.runtime.common.ui.services.dnd"/> + <plugin id="org.eclipse.gmf.runtime.common.ui.services.dnd.ide"/> + <plugin id="org.eclipse.gmf.runtime.common.ui.services.dnd.ide.source"/> + <plugin id="org.eclipse.gmf.runtime.common.ui.services.dnd.source"/> + <plugin id="org.eclipse.gmf.runtime.common.ui.services.properties"/> + <plugin id="org.eclipse.gmf.runtime.common.ui.services.properties.source"/> + <plugin id="org.eclipse.gmf.runtime.common.ui.services.source"/> + <plugin id="org.eclipse.gmf.runtime.common.ui.source"/> + <plugin id="org.eclipse.gmf.runtime.diagram.core"/> + <plugin id="org.eclipse.gmf.runtime.diagram.core.source"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui.actions"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui.actions.source"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui.dnd"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui.dnd.source"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui.geoshapes"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui.geoshapes.source"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui.printing"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui.printing.render"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui.printing.render.source"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui.printing.source"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui.properties"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui.properties.source"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui.providers"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui.providers.ide"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui.providers.ide.source"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui.providers.source"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui.render"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui.render.source"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui.resources.editor"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide.source"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui.resources.editor.source"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui.source"/> + <plugin id="org.eclipse.gmf.runtime.draw2d.ui"/> + <plugin id="org.eclipse.gmf.runtime.draw2d.ui.render"/> + <plugin id="org.eclipse.gmf.runtime.draw2d.ui.render.awt"/> + <plugin id="org.eclipse.gmf.runtime.draw2d.ui.render.awt.source"/> + <plugin id="org.eclipse.gmf.runtime.draw2d.ui.render.source"/> + <plugin id="org.eclipse.gmf.runtime.draw2d.ui.source"/> + <plugin id="org.eclipse.gmf.runtime.emf.clipboard.core"/> + <plugin id="org.eclipse.gmf.runtime.emf.clipboard.core.source"/> + <plugin id="org.eclipse.gmf.runtime.emf.commands.core"/> + <plugin id="org.eclipse.gmf.runtime.emf.commands.core.source"/> + <plugin id="org.eclipse.gmf.runtime.emf.core"/> + <plugin id="org.eclipse.gmf.runtime.emf.core.source"/> + <plugin id="org.eclipse.gmf.runtime.emf.type.core"/> + <plugin id="org.eclipse.gmf.runtime.emf.type.core.source"/> + <plugin id="org.eclipse.gmf.runtime.emf.type.ui"/> + <plugin id="org.eclipse.gmf.runtime.emf.type.ui.source"/> + <plugin id="org.eclipse.gmf.runtime.emf.ui"/> + <plugin id="org.eclipse.gmf.runtime.emf.ui.properties"/> + <plugin id="org.eclipse.gmf.runtime.emf.ui.properties.source"/> + <plugin id="org.eclipse.gmf.runtime.emf.ui.source"/> + <plugin id="org.eclipse.gmf.runtime.gef.ui"/> + <plugin id="org.eclipse.gmf.runtime.gef.ui.source"/> + <plugin id="org.eclipse.gmf.runtime.notation"/> + <plugin id="org.eclipse.gmf.runtime.notation.edit"/> + <plugin id="org.eclipse.gmf.runtime.notation.edit.source"/> + <plugin id="org.eclipse.gmf.runtime.notation.providers"/> + <plugin id="org.eclipse.gmf.runtime.notation.providers.source"/> + <plugin id="org.eclipse.gmf.runtime.notation.sdk"/> + <plugin id="org.eclipse.gmf.runtime.notation.source"/> + <plugin id="org.eclipse.gmf.runtime.sdk"/> + <plugin id="org.eclipse.gmf.sdk"/> + <plugin id="org.eclipse.gmf.tooldef"/> + <plugin id="org.eclipse.gmf.tooldef.edit"/> + <plugin id="org.eclipse.gmf.tooling"/> + <plugin id="org.eclipse.gmf.tooling.runtime"/> + <plugin id="org.eclipse.gmf.validate"/> + <plugin id="org.eclipse.gmf.xpand"/> + <plugin id="org.eclipse.gmf.xpand.qvtlibrary"/> + <plugin id="org.eclipse.gymnast.runtime.core"/> + <plugin id="org.eclipse.gymnast.runtime.ui"/> + <plugin id="org.eclipse.help"/> + <plugin id="org.eclipse.help.base"/> + <plugin id="org.eclipse.help.base.source"/> + <plugin id="org.eclipse.help.source"/> + <plugin id="org.eclipse.help.ui"/> + <plugin id="org.eclipse.help.ui.source"/> + <plugin id="org.eclipse.help.webapp"/> + <plugin id="org.eclipse.help.webapp.source"/> + <plugin id="org.eclipse.jdt"/> + <plugin id="org.eclipse.jdt.annotation"/> + <plugin id="org.eclipse.jdt.annotation.source"/> + <plugin id="org.eclipse.jdt.apt.core"/> + <plugin id="org.eclipse.jdt.apt.core.source"/> + <plugin id="org.eclipse.jdt.apt.pluggable.core"/> + <plugin id="org.eclipse.jdt.apt.pluggable.core.source"/> + <plugin id="org.eclipse.jdt.apt.ui"/> + <plugin id="org.eclipse.jdt.apt.ui.source"/> + <plugin id="org.eclipse.jdt.compiler.apt" fragment="true"/> + <plugin id="org.eclipse.jdt.compiler.apt.source"/> + <plugin id="org.eclipse.jdt.compiler.tool" fragment="true"/> + <plugin id="org.eclipse.jdt.compiler.tool.source"/> + <plugin id="org.eclipse.jdt.core"/> + <plugin id="org.eclipse.jdt.core.formatterapp"/> + <plugin id="org.eclipse.jdt.core.formatterapp.source"/> + <plugin id="org.eclipse.jdt.core.manipulation"/> + <plugin id="org.eclipse.jdt.core.manipulation.source"/> + <plugin id="org.eclipse.jdt.core.source"/> + <plugin id="org.eclipse.jdt.debug"/> + <plugin id="org.eclipse.jdt.debug.source"/> + <plugin id="org.eclipse.jdt.debug.ui"/> + <plugin id="org.eclipse.jdt.debug.ui.source"/> + <plugin id="org.eclipse.jdt.doc.isv"/> + <plugin id="org.eclipse.jdt.doc.user"/> + <plugin id="org.eclipse.jdt.junit"/> + <plugin id="org.eclipse.jdt.junit.core"/> + <plugin id="org.eclipse.jdt.junit.core.source"/> + <plugin id="org.eclipse.jdt.junit.runtime"/> + <plugin id="org.eclipse.jdt.junit.runtime.source"/> + <plugin id="org.eclipse.jdt.junit.source"/> + <plugin id="org.eclipse.jdt.junit4.runtime"/> + <plugin id="org.eclipse.jdt.junit4.runtime.source"/> + <plugin id="org.eclipse.jdt.junit5.runtime"/> + <plugin id="org.eclipse.jdt.junit5.runtime.source"/> + <plugin id="org.eclipse.jdt.launching"/> + <plugin id="org.eclipse.jdt.launching.macosx"/> + <plugin id="org.eclipse.jdt.launching.macosx.source"/> + <plugin id="org.eclipse.jdt.launching.source"/> + <plugin id="org.eclipse.jdt.launching.ui.macosx"/> + <plugin id="org.eclipse.jdt.launching.ui.macosx.source"/> + <plugin id="org.eclipse.jdt.ui"/> + <plugin id="org.eclipse.jdt.ui.source"/> + <plugin id="org.eclipse.jetty.http"/> + <plugin id="org.eclipse.jetty.http.source"/> + <plugin id="org.eclipse.jetty.io"/> + <plugin id="org.eclipse.jetty.io.source"/> + <plugin id="org.eclipse.jetty.security"/> + <plugin id="org.eclipse.jetty.security.source"/> + <plugin id="org.eclipse.jetty.server"/> + <plugin id="org.eclipse.jetty.server.source"/> + <plugin id="org.eclipse.jetty.servlet"/> + <plugin id="org.eclipse.jetty.servlet.source"/> + <plugin id="org.eclipse.jetty.util"/> + <plugin id="org.eclipse.jetty.util.ajax"/> + <plugin id="org.eclipse.jetty.util.ajax.source"/> + <plugin id="org.eclipse.jetty.util.source"/> + <plugin id="org.eclipse.jface"/> + <plugin id="org.eclipse.jface.databinding"/> + <plugin id="org.eclipse.jface.databinding.source"/> + <plugin id="org.eclipse.jface.notifications"/> + <plugin id="org.eclipse.jface.notifications.source"/> + <plugin id="org.eclipse.jface.source"/> + <plugin id="org.eclipse.jface.text"/> + <plugin id="org.eclipse.jface.text.source"/> + <plugin id="org.eclipse.jgit"/> + <plugin id="org.eclipse.jgit.archive"/> + <plugin id="org.eclipse.jgit.gpg.bc" fragment="true"/> + <plugin id="org.eclipse.jgit.http.apache"/> + <plugin id="org.eclipse.jgit.ssh.apache"/> + <plugin id="org.eclipse.jgit.ssh.apache.agent" fragment="true"/> + <plugin id="org.eclipse.jsch.core"/> + <plugin id="org.eclipse.jsch.core.source"/> + <plugin id="org.eclipse.jsch.ui"/> + <plugin id="org.eclipse.jsch.ui.source"/> + <plugin id="org.eclipse.lsp4j"/> + <plugin id="org.eclipse.lsp4j.generator"/> + <plugin id="org.eclipse.lsp4j.generator.source"/> + <plugin id="org.eclipse.lsp4j.jsonrpc"/> + <plugin id="org.eclipse.lsp4j.jsonrpc.source"/> + <plugin id="org.eclipse.lsp4j.source"/> + <plugin id="org.eclipse.ltk.core.refactoring"/> + <plugin id="org.eclipse.ltk.core.refactoring.source"/> + <plugin id="org.eclipse.ltk.ui.refactoring"/> + <plugin id="org.eclipse.ltk.ui.refactoring.source"/> + <plugin id="org.eclipse.m2m.qvt.oml"/> + <plugin id="org.eclipse.m2m.qvt.oml.common"/> + <plugin id="org.eclipse.m2m.qvt.oml.cst.parser"/> + <plugin id="org.eclipse.m2m.qvt.oml.ecore.imperativeocl"/> + <plugin id="org.eclipse.m2m.qvt.oml.emf.util"/> + <plugin id="org.eclipse.m2m.qvt.oml.project"/> + <plugin id="org.eclipse.m2m.qvt.oml.runtime"/> + <plugin id="org.eclipse.mylyn.wikitext"/> + <plugin id="org.eclipse.mylyn.wikitext.ant"/> + <plugin id="org.eclipse.mylyn.wikitext.asciidoc"/> + <plugin id="org.eclipse.mylyn.wikitext.asciidoc.ui"/> + <plugin id="org.eclipse.mylyn.wikitext.confluence"/> + <plugin id="org.eclipse.mylyn.wikitext.confluence.ui"/> + <plugin id="org.eclipse.mylyn.wikitext.help.ui"/> + <plugin id="org.eclipse.mylyn.wikitext.html"/> + <plugin id="org.eclipse.mylyn.wikitext.markdown"/> + <plugin id="org.eclipse.mylyn.wikitext.markdown.ui"/> + <plugin id="org.eclipse.mylyn.wikitext.mediawiki"/> + <plugin id="org.eclipse.mylyn.wikitext.mediawiki.ui"/> + <plugin id="org.eclipse.mylyn.wikitext.osgi"/> + <plugin id="org.eclipse.mylyn.wikitext.textile"/> + <plugin id="org.eclipse.mylyn.wikitext.textile.ui"/> + <plugin id="org.eclipse.mylyn.wikitext.tracwiki"/> + <plugin id="org.eclipse.mylyn.wikitext.tracwiki.ui"/> + <plugin id="org.eclipse.mylyn.wikitext.twiki"/> + <plugin id="org.eclipse.mylyn.wikitext.twiki.ui"/> + <plugin id="org.eclipse.mylyn.wikitext.ui"/> + <plugin id="org.eclipse.nebula.widgets.tablecombo"/> + <plugin id="org.eclipse.net4j"/> + <plugin id="org.eclipse.net4j.db"/> + <plugin id="org.eclipse.net4j.db.h2"/> + <plugin id="org.eclipse.net4j.db.jdbc"/> + <plugin id="org.eclipse.net4j.debug"/> + <plugin id="org.eclipse.net4j.examples.installer"/> + <plugin id="org.eclipse.net4j.jvm"/> + <plugin id="org.eclipse.net4j.tcp"/> + <plugin id="org.eclipse.net4j.ui"/> + <plugin id="org.eclipse.net4j.ui.shared"/> + <plugin id="org.eclipse.net4j.util"/> + <plugin id="org.eclipse.net4j.util.ui"/> + <plugin id="org.eclipse.ocl"/> + <plugin id="org.eclipse.ocl.common"/> + <plugin id="org.eclipse.ocl.common.ui"/> + <plugin id="org.eclipse.ocl.doc"/> + <plugin id="org.eclipse.ocl.ecore"/> + <plugin id="org.eclipse.ocl.ecore.edit"/> + <plugin id="org.eclipse.ocl.edit"/> + <plugin id="org.eclipse.ocl.ui"/> + <plugin id="org.eclipse.ocl.uml"/> + <plugin id="org.eclipse.ocl.uml.edit"/> + <plugin id="org.eclipse.ocl.uml.ui"/> + <plugin id="org.eclipse.oomph.base"/> + <plugin id="org.eclipse.oomph.base.edit"/> + <plugin id="org.eclipse.oomph.extractor.lib"/> + <plugin id="org.eclipse.oomph.jreinfo"/> + <plugin id="org.eclipse.oomph.jreinfo.ui"/> + <plugin id="org.eclipse.oomph.p2"/> + <plugin id="org.eclipse.oomph.p2.core"/> + <plugin id="org.eclipse.oomph.p2.doc"/> + <plugin id="org.eclipse.oomph.p2.edit"/> + <plugin id="org.eclipse.oomph.p2.ui"/> + <plugin id="org.eclipse.oomph.predicates"/> + <plugin id="org.eclipse.oomph.predicates.edit"/> + <plugin id="org.eclipse.oomph.preferences"/> + <plugin id="org.eclipse.oomph.resources"/> + <plugin id="org.eclipse.oomph.resources.edit"/> + <plugin id="org.eclipse.oomph.setup"/> + <plugin id="org.eclipse.oomph.setup.core"/> + <plugin id="org.eclipse.oomph.setup.doc"/> + <plugin id="org.eclipse.oomph.setup.edit"/> + <plugin id="org.eclipse.oomph.setup.editor"/> + <plugin id="org.eclipse.oomph.setup.p2"/> + <plugin id="org.eclipse.oomph.setup.p2.edit"/> + <plugin id="org.eclipse.oomph.setup.sync"/> + <plugin id="org.eclipse.oomph.setup.ui"/> + <plugin id="org.eclipse.oomph.setup.ui.questionnaire"/> + <plugin id="org.eclipse.oomph.ui"/> + <plugin id="org.eclipse.oomph.util"/> + <plugin id="org.eclipse.oomph.workingsets"/> + <plugin id="org.eclipse.oomph.workingsets.edit"/> + <plugin id="org.eclipse.oomph.workingsets.editor"/> + <plugin id="org.eclipse.osgi"/> + <plugin id="org.eclipse.osgi.compatibility.state" fragment="true"/> + <plugin id="org.eclipse.osgi.compatibility.state.source"/> + <plugin id="org.eclipse.osgi.services"/> + <plugin id="org.eclipse.osgi.services.source"/> + <plugin id="org.eclipse.osgi.source"/> + <plugin id="org.eclipse.osgi.util"/> + <plugin id="org.eclipse.osgi.util.source"/> + <plugin id="org.eclipse.paho.client.mqttv3"/> + <plugin id="org.eclipse.pde"/> + <plugin id="org.eclipse.pde.api.tools"/> + <plugin id="org.eclipse.pde.api.tools.annotations"/> + <plugin id="org.eclipse.pde.api.tools.annotations.source"/> + <plugin id="org.eclipse.pde.api.tools.source"/> + <plugin id="org.eclipse.pde.api.tools.ui"/> + <plugin id="org.eclipse.pde.api.tools.ui.source"/> + <plugin id="org.eclipse.pde.build"/> + <plugin id="org.eclipse.pde.build.source"/> + <plugin id="org.eclipse.pde.core"/> + <plugin id="org.eclipse.pde.core.source"/> + <plugin id="org.eclipse.pde.doc.user"/> + <plugin id="org.eclipse.pde.ds.annotations"/> + <plugin id="org.eclipse.pde.ds.annotations.source"/> + <plugin id="org.eclipse.pde.ds.core"/> + <plugin id="org.eclipse.pde.ds.core.source"/> + <plugin id="org.eclipse.pde.ds.lib"/> + <plugin id="org.eclipse.pde.ds.lib.source"/> + <plugin id="org.eclipse.pde.ds.ui"/> + <plugin id="org.eclipse.pde.ds.ui.source"/> + <plugin id="org.eclipse.pde.ds1_2.lib"/> + <plugin id="org.eclipse.pde.ds1_2.lib.source"/> + <plugin id="org.eclipse.pde.genericeditor.extension"/> + <plugin id="org.eclipse.pde.genericeditor.extension.source"/> + <plugin id="org.eclipse.pde.junit.runtime"/> + <plugin id="org.eclipse.pde.junit.runtime.source"/> + <plugin id="org.eclipse.pde.launching"/> + <plugin id="org.eclipse.pde.launching.source"/> + <plugin id="org.eclipse.pde.runtime"/> + <plugin id="org.eclipse.pde.runtime.source"/> + <plugin id="org.eclipse.pde.spy.core"/> + <plugin id="org.eclipse.pde.spy.core.source"/> + <plugin id="org.eclipse.pde.spy.css"/> + <plugin id="org.eclipse.pde.spy.css.source"/> + <plugin id="org.eclipse.pde.spy.model"/> + <plugin id="org.eclipse.pde.spy.model.source"/> + <plugin id="org.eclipse.pde.spy.preferences"/> + <plugin id="org.eclipse.pde.spy.preferences.source"/> + <plugin id="org.eclipse.pde.ua.core"/> + <plugin id="org.eclipse.pde.ua.core.source"/> + <plugin id="org.eclipse.pde.ua.ui"/> + <plugin id="org.eclipse.pde.ua.ui.source"/> + <plugin id="org.eclipse.pde.ui"/> + <plugin id="org.eclipse.pde.ui.source"/> + <plugin id="org.eclipse.pde.ui.templates"/> + <plugin id="org.eclipse.pde.ui.templates.source"/> + <plugin id="org.eclipse.platform"/> + <plugin id="org.eclipse.platform.doc.isv"/> + <plugin id="org.eclipse.platform.doc.user"/> + <plugin id="org.eclipse.platform.source"/> + <plugin id="org.eclipse.rcp"/> + <plugin id="org.eclipse.sdk"/> + <plugin id="org.eclipse.search"/> + <plugin id="org.eclipse.search.source"/> + <plugin id="org.eclipse.sirius"/> + <plugin id="org.eclipse.sirius.common"/> + <plugin id="org.eclipse.sirius.common.acceleo.aql"/> + <plugin id="org.eclipse.sirius.common.acceleo.aql.ide"/> + <plugin id="org.eclipse.sirius.common.acceleo.mtl"/> + <plugin id="org.eclipse.sirius.common.acceleo.mtl.ide"/> + <plugin id="org.eclipse.sirius.common.interpreter"/> + <plugin id="org.eclipse.sirius.common.ui"/> + <plugin id="org.eclipse.sirius.common.ui.ext"/> + <plugin id="org.eclipse.sirius.diagram"/> + <plugin id="org.eclipse.sirius.diagram.formatdata"/> + <plugin id="org.eclipse.sirius.diagram.sequence"/> + <plugin id="org.eclipse.sirius.diagram.sequence.edit"/> + <plugin id="org.eclipse.sirius.diagram.sequence.ui"/> + <plugin id="org.eclipse.sirius.diagram.ui"/> + <plugin id="org.eclipse.sirius.diagram.ui.ext"/> + <plugin id="org.eclipse.sirius.doc"/> + <plugin id="org.eclipse.sirius.ecore.extender"/> + <plugin id="org.eclipse.sirius.editor"/> + <plugin id="org.eclipse.sirius.editor.diagram"/> + <plugin id="org.eclipse.sirius.editor.properties"/> + <plugin id="org.eclipse.sirius.editor.properties.ext.widgets.reference"/> + <plugin id="org.eclipse.sirius.editor.sequence"/> + <plugin id="org.eclipse.sirius.editor.table"/> + <plugin id="org.eclipse.sirius.editor.tree"/> + <plugin id="org.eclipse.sirius.ext.base"/> + <plugin id="org.eclipse.sirius.ext.draw2d"/> + <plugin id="org.eclipse.sirius.ext.e3"/> + <plugin id="org.eclipse.sirius.ext.e3.ui"/> + <plugin id="org.eclipse.sirius.ext.emf"/> + <plugin id="org.eclipse.sirius.ext.emf.edit"/> + <plugin id="org.eclipse.sirius.ext.emf.tx"/> + <plugin id="org.eclipse.sirius.ext.emf.ui"/> + <plugin id="org.eclipse.sirius.ext.gef"/> + <plugin id="org.eclipse.sirius.ext.gmf.notation"/> + <plugin id="org.eclipse.sirius.ext.gmf.runtime"/> + <plugin id="org.eclipse.sirius.ext.ide"/> + <plugin id="org.eclipse.sirius.ext.jface"/> + <plugin id="org.eclipse.sirius.ext.swt"/> + <plugin id="org.eclipse.sirius.interpreter"/> + <plugin id="org.eclipse.sirius.properties"/> + <plugin id="org.eclipse.sirius.properties.core"/> + <plugin id="org.eclipse.sirius.properties.defaultrules"/> + <plugin id="org.eclipse.sirius.properties.edit"/> + <plugin id="org.eclipse.sirius.properties.ext.widgets.reference"/> + <plugin id="org.eclipse.sirius.properties.ext.widgets.reference.edit"/> + <plugin id="org.eclipse.sirius.synchronizer"/> + <plugin id="org.eclipse.sirius.table"/> + <plugin id="org.eclipse.sirius.table.ui"/> + <plugin id="org.eclipse.sirius.table.ui.ext"/> + <plugin id="org.eclipse.sirius.tree"/> + <plugin id="org.eclipse.sirius.tree.ui"/> + <plugin id="org.eclipse.sirius.tree.ui.ext"/> + <plugin id="org.eclipse.sirius.ui"/> + <plugin id="org.eclipse.sirius.ui.editor"/> + <plugin id="org.eclipse.sirius.ui.ext"/> + <plugin id="org.eclipse.sirius.ui.properties"/> + <plugin id="org.eclipse.sirius.ui.properties.ext.widgets.reference"/> + <plugin id="org.eclipse.swt"/> + <plugin id="org.eclipse.swt.cocoa.macosx.x86_64" fragment="true"/> + <plugin id="org.eclipse.swt.cocoa.macosx.x86_64.source"/> + <plugin id="org.eclipse.team.core"/> + <plugin id="org.eclipse.team.core.source"/> + <plugin id="org.eclipse.team.genericeditor.diff.extension"/> + <plugin id="org.eclipse.team.genericeditor.diff.extension.source"/> + <plugin id="org.eclipse.team.ui"/> + <plugin id="org.eclipse.team.ui.source"/> + <plugin id="org.eclipse.text"/> + <plugin id="org.eclipse.text.quicksearch"/> + <plugin id="org.eclipse.text.quicksearch.source"/> + <plugin id="org.eclipse.text.source"/> + <plugin id="org.eclipse.tips.core"/> + <plugin id="org.eclipse.tips.ide"/> + <plugin id="org.eclipse.tips.json"/> + <plugin id="org.eclipse.tips.ui"/> + <plugin id="org.eclipse.tools.layout.spy"/> + <plugin id="org.eclipse.tools.layout.spy.source"/> + <plugin id="org.eclipse.ui"/> + <plugin id="org.eclipse.ui.browser"/> + <plugin id="org.eclipse.ui.browser.source"/> + <plugin id="org.eclipse.ui.cheatsheets"/> + <plugin id="org.eclipse.ui.cheatsheets.source"/> + <plugin id="org.eclipse.ui.cocoa" fragment="true"/> + <plugin id="org.eclipse.ui.cocoa.source"/> + <plugin id="org.eclipse.ui.console"/> + <plugin id="org.eclipse.ui.console.source"/> + <plugin id="org.eclipse.ui.editors"/> + <plugin id="org.eclipse.ui.editors.source"/> + <plugin id="org.eclipse.ui.externaltools"/> + <plugin id="org.eclipse.ui.externaltools.source"/> + <plugin id="org.eclipse.ui.forms"/> + <plugin id="org.eclipse.ui.forms.source"/> + <plugin id="org.eclipse.ui.genericeditor"/> + <plugin id="org.eclipse.ui.genericeditor.source"/> + <plugin id="org.eclipse.ui.ide"/> + <plugin id="org.eclipse.ui.ide.application"/> + <plugin id="org.eclipse.ui.ide.application.source"/> + <plugin id="org.eclipse.ui.ide.source"/> + <plugin id="org.eclipse.ui.intro"/> + <plugin id="org.eclipse.ui.intro.quicklinks"/> + <plugin id="org.eclipse.ui.intro.quicklinks.source"/> + <plugin id="org.eclipse.ui.intro.source"/> + <plugin id="org.eclipse.ui.intro.universal"/> + <plugin id="org.eclipse.ui.intro.universal.source"/> + <plugin id="org.eclipse.ui.monitoring"/> + <plugin id="org.eclipse.ui.monitoring.source"/> + <plugin id="org.eclipse.ui.navigator"/> + <plugin id="org.eclipse.ui.navigator.resources"/> + <plugin id="org.eclipse.ui.navigator.resources.source"/> + <plugin id="org.eclipse.ui.navigator.source"/> + <plugin id="org.eclipse.ui.net"/> + <plugin id="org.eclipse.ui.net.source"/> + <plugin id="org.eclipse.ui.source"/> + <plugin id="org.eclipse.ui.themes"/> + <plugin id="org.eclipse.ui.themes.source"/> + <plugin id="org.eclipse.ui.trace"/> + <plugin id="org.eclipse.ui.trace.source"/> + <plugin id="org.eclipse.ui.views"/> + <plugin id="org.eclipse.ui.views.log"/> + <plugin id="org.eclipse.ui.views.log.source"/> + <plugin id="org.eclipse.ui.views.properties.tabbed"/> + <plugin id="org.eclipse.ui.views.properties.tabbed.source"/> + <plugin id="org.eclipse.ui.views.source"/> + <plugin id="org.eclipse.ui.workbench"/> + <plugin id="org.eclipse.ui.workbench.source"/> + <plugin id="org.eclipse.ui.workbench.texteditor"/> + <plugin id="org.eclipse.ui.workbench.texteditor.source"/> + <plugin id="org.eclipse.uml2"/> + <plugin id="org.eclipse.uml2.ant"/> + <plugin id="org.eclipse.uml2.codegen.ecore"/> + <plugin id="org.eclipse.uml2.codegen.ecore.ui"/> + <plugin id="org.eclipse.uml2.common"/> + <plugin id="org.eclipse.uml2.common.edit"/> + <plugin id="org.eclipse.uml2.doc"/> + <plugin id="org.eclipse.uml2.examples"/> + <plugin id="org.eclipse.uml2.examples.uml.ui"/> + <plugin id="org.eclipse.uml2.sdk"/> + <plugin id="org.eclipse.uml2.types"/> + <plugin id="org.eclipse.uml2.uml"/> + <plugin id="org.eclipse.uml2.uml.ecore.exporter"/> + <plugin id="org.eclipse.uml2.uml.ecore.importer"/> + <plugin id="org.eclipse.uml2.uml.edit"/> + <plugin id="org.eclipse.uml2.uml.editor"/> + <plugin id="org.eclipse.uml2.uml.profile.standard"/> + <plugin id="org.eclipse.uml2.uml.resources"/> + <plugin id="org.eclipse.uml2.uml.validation"/> + <plugin id="org.eclipse.update.configurator"/> + <plugin id="org.eclipse.update.configurator.source"/> + <plugin id="org.eclipse.urischeme"/> + <plugin id="org.eclipse.urischeme.source"/> + <plugin id="org.eclipse.userstorage"/> + <plugin id="org.eclipse.userstorage.oauth"/> + <plugin id="org.eclipse.userstorage.ui"/> + <plugin id="org.eclipse.xpand"/> + <plugin id="org.eclipse.xpand.activities"/> + <plugin id="org.eclipse.xpand.activities.source"/> + <plugin id="org.eclipse.xpand.doc"/> + <plugin id="org.eclipse.xpand.examples"/> + <plugin id="org.eclipse.xpand.examples.source"/> + <plugin id="org.eclipse.xpand.source"/> + <plugin id="org.eclipse.xpand.support.cdt"/> + <plugin id="org.eclipse.xpand.support.cdt.source"/> + <plugin id="org.eclipse.xpand.ui"/> + <plugin id="org.eclipse.xpand.ui.source"/> + <plugin id="org.eclipse.xsd"/> + <plugin id="org.eclipse.xsd.cheatsheets"/> + <plugin id="org.eclipse.xsd.doc"/> + <plugin id="org.eclipse.xsd.ecore.converter"/> + <plugin id="org.eclipse.xsd.ecore.converter.source"/> + <plugin id="org.eclipse.xsd.ecore.exporter"/> + <plugin id="org.eclipse.xsd.ecore.exporter.source"/> + <plugin id="org.eclipse.xsd.ecore.importer"/> + <plugin id="org.eclipse.xsd.ecore.importer.source"/> + <plugin id="org.eclipse.xsd.edit"/> + <plugin id="org.eclipse.xsd.edit.source"/> + <plugin id="org.eclipse.xsd.editor"/> + <plugin id="org.eclipse.xsd.editor.source"/> + <plugin id="org.eclipse.xsd.example"/> + <plugin id="org.eclipse.xsd.example.installer"/> + <plugin id="org.eclipse.xsd.mapping"/> + <plugin id="org.eclipse.xsd.mapping.editor"/> + <plugin id="org.eclipse.xsd.mapping.editor.source"/> + <plugin id="org.eclipse.xsd.mapping.source"/> + <plugin id="org.eclipse.xsd.source"/> + <plugin id="org.eclipse.xtend"/> + <plugin id="org.eclipse.xtend.backend"/> + <plugin id="org.eclipse.xtend.backend.compiler"/> + <plugin id="org.eclipse.xtend.backend.compiler.source"/> + <plugin id="org.eclipse.xtend.backend.source"/> + <plugin id="org.eclipse.xtend.backend.ui"/> + <plugin id="org.eclipse.xtend.backend.ui.source"/> + <plugin id="org.eclipse.xtend.backend.uml2types"/> + <plugin id="org.eclipse.xtend.backend.uml2types.source"/> + <plugin id="org.eclipse.xtend.backend.xsdtypes"/> + <plugin id="org.eclipse.xtend.backend.xsdtypes.source"/> + <plugin id="org.eclipse.xtend.check.ui"/> + <plugin id="org.eclipse.xtend.check.ui.source"/> + <plugin id="org.eclipse.xtend.core"/> + <plugin id="org.eclipse.xtend.core.source"/> + <plugin id="org.eclipse.xtend.doc"/> + <plugin id="org.eclipse.xtend.examples"/> + <plugin id="org.eclipse.xtend.ide"/> + <plugin id="org.eclipse.xtend.ide.common"/> + <plugin id="org.eclipse.xtend.ide.common.source"/> + <plugin id="org.eclipse.xtend.ide.source"/> + <plugin id="org.eclipse.xtend.lib"/> + <plugin id="org.eclipse.xtend.lib.gwt"/> + <plugin id="org.eclipse.xtend.lib.macro"/> + <plugin id="org.eclipse.xtend.lib.macro.source"/> + <plugin id="org.eclipse.xtend.lib.source"/> + <plugin id="org.eclipse.xtend.m2e"/> + <plugin id="org.eclipse.xtend.m2e.source"/> + <plugin id="org.eclipse.xtend.middleend.xpand"/> + <plugin id="org.eclipse.xtend.middleend.xtend"/> + <plugin id="org.eclipse.xtend.profiler"/> + <plugin id="org.eclipse.xtend.profiler.source"/> + <plugin id="org.eclipse.xtend.shared.ui"/> + <plugin id="org.eclipse.xtend.shared.ui.source"/> + <plugin id="org.eclipse.xtend.source"/> + <plugin id="org.eclipse.xtend.standalone"/> + <plugin id="org.eclipse.xtend.standalone.source"/> + <plugin id="org.eclipse.xtend.typesystem.emf"/> + <plugin id="org.eclipse.xtend.typesystem.emf.source"/> + <plugin id="org.eclipse.xtend.typesystem.emf.ui"/> + <plugin id="org.eclipse.xtend.typesystem.emf.ui.source"/> + <plugin id="org.eclipse.xtend.typesystem.uml2"/> + <plugin id="org.eclipse.xtend.typesystem.uml2.source"/> + <plugin id="org.eclipse.xtend.typesystem.uml2.ui"/> + <plugin id="org.eclipse.xtend.typesystem.uml2.ui.source"/> + <plugin id="org.eclipse.xtend.typesystem.xsd"/> + <plugin id="org.eclipse.xtend.typesystem.xsd.source"/> + <plugin id="org.eclipse.xtend.typesystem.xsd.ui"/> + <plugin id="org.eclipse.xtend.typesystem.xsd.ui.source"/> + <plugin id="org.eclipse.xtend.ui"/> + <plugin id="org.eclipse.xtend.ui.source"/> + <plugin id="org.eclipse.xtend.util.stdlib"/> + <plugin id="org.eclipse.xtend.util.stdlib.source"/> + <plugin id="org.eclipse.xtext"/> + <plugin id="org.eclipse.xtext.activities"/> + <plugin id="org.eclipse.xtext.activities.source"/> + <plugin id="org.eclipse.xtext.builder"/> + <plugin id="org.eclipse.xtext.builder.source"/> + <plugin id="org.eclipse.xtext.builder.standalone"/> + <plugin id="org.eclipse.xtext.builder.standalone.source"/> + <plugin id="org.eclipse.xtext.buildship"/> + <plugin id="org.eclipse.xtext.buildship.source"/> + <plugin id="org.eclipse.xtext.common.types"/> + <plugin id="org.eclipse.xtext.common.types.edit"/> + <plugin id="org.eclipse.xtext.common.types.edit.source"/> + <plugin id="org.eclipse.xtext.common.types.shared"/> + <plugin id="org.eclipse.xtext.common.types.shared.jdt38" fragment="true"/> + <plugin id="org.eclipse.xtext.common.types.shared.jdt38.source"/> + <plugin id="org.eclipse.xtext.common.types.shared.source"/> + <plugin id="org.eclipse.xtext.common.types.source"/> + <plugin id="org.eclipse.xtext.common.types.ui"/> + <plugin id="org.eclipse.xtext.common.types.ui.source"/> + <plugin id="org.eclipse.xtext.doc"/> + <plugin id="org.eclipse.xtext.ecore"/> + <plugin id="org.eclipse.xtext.ecore.source"/> + <plugin id="org.eclipse.xtext.generator"/> + <plugin id="org.eclipse.xtext.generator.source"/> + <plugin id="org.eclipse.xtext.ide"/> + <plugin id="org.eclipse.xtext.ide.source"/> + <plugin id="org.eclipse.xtext.java"/> + <plugin id="org.eclipse.xtext.java.source"/> + <plugin id="org.eclipse.xtext.junit4"/> + <plugin id="org.eclipse.xtext.junit4.source"/> + <plugin id="org.eclipse.xtext.logging" fragment="true"/> + <plugin id="org.eclipse.xtext.logging.source"/> + <plugin id="org.eclipse.xtext.m2e"/> + <plugin id="org.eclipse.xtext.m2e.source"/> + <plugin id="org.eclipse.xtext.purexbase"/> + <plugin id="org.eclipse.xtext.purexbase.ide"/> + <plugin id="org.eclipse.xtext.purexbase.ide.source"/> + <plugin id="org.eclipse.xtext.purexbase.source"/> + <plugin id="org.eclipse.xtext.purexbase.ui"/> + <plugin id="org.eclipse.xtext.purexbase.ui.source"/> + <plugin id="org.eclipse.xtext.smap"/> + <plugin id="org.eclipse.xtext.smap.source"/> + <plugin id="org.eclipse.xtext.source"/> + <plugin id="org.eclipse.xtext.testing"/> + <plugin id="org.eclipse.xtext.testing.source"/> + <plugin id="org.eclipse.xtext.ui"/> + <plugin id="org.eclipse.xtext.ui.codemining"/> + <plugin id="org.eclipse.xtext.ui.codemining.source"/> + <plugin id="org.eclipse.xtext.ui.codetemplates"/> + <plugin id="org.eclipse.xtext.ui.codetemplates.ide"/> + <plugin id="org.eclipse.xtext.ui.codetemplates.ide.source"/> + <plugin id="org.eclipse.xtext.ui.codetemplates.source"/> + <plugin id="org.eclipse.xtext.ui.codetemplates.ui"/> + <plugin id="org.eclipse.xtext.ui.codetemplates.ui.source"/> + <plugin id="org.eclipse.xtext.ui.ecore"/> + <plugin id="org.eclipse.xtext.ui.ecore.source"/> + <plugin id="org.eclipse.xtext.ui.shared"/> + <plugin id="org.eclipse.xtext.ui.shared.source"/> + <plugin id="org.eclipse.xtext.ui.source"/> + <plugin id="org.eclipse.xtext.ui.testing"/> + <plugin id="org.eclipse.xtext.ui.testing.source"/> + <plugin id="org.eclipse.xtext.util"/> + <plugin id="org.eclipse.xtext.util.source"/> + <plugin id="org.eclipse.xtext.xbase"/> + <plugin id="org.eclipse.xtext.xbase.ide"/> + <plugin id="org.eclipse.xtext.xbase.ide.source"/> + <plugin id="org.eclipse.xtext.xbase.junit"/> + <plugin id="org.eclipse.xtext.xbase.junit.source"/> + <plugin id="org.eclipse.xtext.xbase.lib"/> + <plugin id="org.eclipse.xtext.xbase.lib.gwt"/> + <plugin id="org.eclipse.xtext.xbase.lib.source"/> + <plugin id="org.eclipse.xtext.xbase.source"/> + <plugin id="org.eclipse.xtext.xbase.testing"/> + <plugin id="org.eclipse.xtext.xbase.testing.source"/> + <plugin id="org.eclipse.xtext.xbase.ui"/> + <plugin id="org.eclipse.xtext.xbase.ui.source"/> + <plugin id="org.eclipse.xtext.xbase.ui.testing"/> + <plugin id="org.eclipse.xtext.xbase.ui.testing.source"/> + <plugin id="org.eclipse.xtext.xtext.generator"/> + <plugin id="org.eclipse.xtext.xtext.generator.source"/> + <plugin id="org.eclipse.xtext.xtext.ide"/> + <plugin id="org.eclipse.xtext.xtext.ide.source"/> + <plugin id="org.eclipse.xtext.xtext.ui"/> + <plugin id="org.eclipse.xtext.xtext.ui.examples"/> + <plugin id="org.eclipse.xtext.xtext.ui.graph"/> + <plugin id="org.eclipse.xtext.xtext.ui.graph.source"/> + <plugin id="org.eclipse.xtext.xtext.ui.source"/> + <plugin id="org.eclipse.xtext.xtext.wizard"/> + <plugin id="org.eclipse.xtext.xtext.wizard.source"/> + <plugin id="org.h2"/> + <plugin id="org.hamcrest.core"/> + <plugin id="org.hamcrest.core.source"/> + <plugin id="org.jdom"/> + <plugin id="org.jsoup"/> + <plugin id="org.junit"/> + <plugin id="org.junit.jupiter.api"/> + <plugin id="org.junit.jupiter.api.source"/> + <plugin id="org.junit.jupiter.engine"/> + <plugin id="org.junit.jupiter.engine.source"/> + <plugin id="org.junit.jupiter.migrationsupport"/> + <plugin id="org.junit.jupiter.migrationsupport.source"/> + <plugin id="org.junit.jupiter.params"/> + <plugin id="org.junit.jupiter.params.source"/> + <plugin id="org.junit.platform.commons"/> + <plugin id="org.junit.platform.commons.source"/> + <plugin id="org.junit.platform.engine"/> + <plugin id="org.junit.platform.engine.source"/> + <plugin id="org.junit.platform.launcher"/> + <plugin id="org.junit.platform.launcher.source"/> + <plugin id="org.junit.platform.runner"/> + <plugin id="org.junit.platform.runner.source"/> + <plugin id="org.junit.platform.suite.api"/> + <plugin id="org.junit.platform.suite.api.source"/> + <plugin id="org.junit.platform.suite.commons"/> + <plugin id="org.junit.platform.suite.commons.source"/> + <plugin id="org.junit.platform.suite.engine"/> + <plugin id="org.junit.platform.suite.engine.source"/> + <plugin id="org.junit.source"/> + <plugin id="org.junit.vintage.engine"/> + <plugin id="org.junit.vintage.engine.source"/> + <plugin id="org.objectweb.asm"/> + <plugin id="org.objectweb.asm.source"/> + <plugin id="org.objectweb.asm.tree"/> + <plugin id="org.objectweb.asm.tree.source"/> + <plugin id="org.opentest4j"/> + <plugin id="org.opentest4j.source"/> + <plugin id="org.restlet"/> + <plugin id="org.restlet.example"/> + <plugin id="org.restlet.ext.apispark"/> + <plugin id="org.restlet.ext.atom"/> + <plugin id="org.restlet.ext.crypto"/> + <plugin id="org.restlet.ext.e4"/> + <plugin id="org.restlet.ext.emf"/> + <plugin id="org.restlet.ext.fileupload"/> + <plugin id="org.restlet.ext.freemarker"/> + <plugin id="org.restlet.ext.gson"/> + <plugin id="org.restlet.ext.guice"/> + <plugin id="org.restlet.ext.gwt"/> + <plugin id="org.restlet.ext.html"/> + <plugin id="org.restlet.ext.httpclient"/> + <plugin id="org.restlet.ext.jaas"/> + <plugin id="org.restlet.ext.jackson"/> + <plugin id="org.restlet.ext.javamail"/> + <plugin id="org.restlet.ext.jaxb"/> + <plugin id="org.restlet.ext.jaxrs"/> + <plugin id="org.restlet.ext.jdbc"/> + <plugin id="org.restlet.ext.jetty"/> + <plugin id="org.restlet.ext.jibx"/> + <plugin id="org.restlet.ext.json"/> + <plugin id="org.restlet.ext.jsslutils"/> + <plugin id="org.restlet.ext.lucene"/> + <plugin id="org.restlet.ext.nio"/> + <plugin id="org.restlet.ext.oauth"/> + <plugin id="org.restlet.ext.odata"/> + <plugin id="org.restlet.ext.openid"/> + <plugin id="org.restlet.ext.osgi"/> + <plugin id="org.restlet.ext.raml"/> + <plugin id="org.restlet.ext.rdf"/> + <plugin id="org.restlet.ext.rome"/> + <plugin id="org.restlet.ext.sdc"/> + <plugin id="org.restlet.ext.servlet"/> + <plugin id="org.restlet.ext.simple"/> + <plugin id="org.restlet.ext.sip"/> + <plugin id="org.restlet.ext.slf4j"/> + <plugin id="org.restlet.ext.spring"/> + <plugin id="org.restlet.ext.swagger"/> + <plugin id="org.restlet.ext.thymeleaf"/> + <plugin id="org.restlet.ext.velocity"/> + <plugin id="org.restlet.ext.wadl"/> + <plugin id="org.restlet.ext.xdb"/> + <plugin id="org.restlet.ext.xml"/> + <plugin id="org.restlet.ext.xstream"/> + <plugin id="org.sat4j.core"/> + <plugin id="org.sat4j.pb"/> + <plugin id="org.slf4j.api"/> + <plugin id="org.slf4j.api.source"/> + <plugin id="org.tukaani.xz"/> + <plugin id="org.tukaani.xz.source"/> + <plugin id="org.w3c.css.sac"/> + <plugin id="org.w3c.css.sac.source"/> + <plugin id="org.w3c.dom.events"/> + <plugin id="org.w3c.dom.events.source"/> + <plugin id="org.w3c.dom.smil"/> + <plugin id="org.w3c.dom.smil.source"/> + <plugin id="org.w3c.dom.svg"/> + <plugin id="org.w3c.dom.svg.source"/> + <plugin id="org.yaml.snakeyaml"/> + </plugins> + + <configurations> + <plugin id="org.eclipse.core.runtime" autoStart="true" startLevel="0" /> + <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" /> + <plugin id="org.eclipse.equinox.ds" autoStart="true" startLevel="2" /> + <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="2" /> + <plugin id="org.eclipse.equinox.simpleconfigurator" autoStart="true" startLevel="1" /> + </configurations> + + <preferencesInfo> + <targetfile overwrite="false"/> + </preferencesInfo> + + <cssInfo> + </cssInfo> + +</product> diff --git a/Source Code/V2.0/PiacereToolProduct/about.gif b/Source Code/V2.0/PiacereToolProduct/about.gif new file mode 100644 index 0000000000000000000000000000000000000000..ab9d7596d8019353b55a7126b8285fd6112292cf Binary files /dev/null and b/Source Code/V2.0/PiacereToolProduct/about.gif differ diff --git a/Source Code/V2.0/PiacereToolProduct/build.properties b/Source Code/V2.0/PiacereToolProduct/build.properties new file mode 100755 index 0000000000000000000000000000000000000000..d0d65a25b7404ec7dcbed0abefaf2efdbec4bb4e --- /dev/null +++ b/Source Code/V2.0/PiacereToolProduct/build.properties @@ -0,0 +1,11 @@ +output.. = bin/ +bin.includes = META-INF/,\ + .,\ + plugin_customization.ini,\ + plugin.xml,\ + PiacereToolProduct.product,\ + about.gif,\ + splash.bmp,\ + about.jpg,\ + Piacere/ +source.. = src/ diff --git a/Source Code/V2.0/PiacereToolProduct/plugin.xml b/Source Code/V2.0/PiacereToolProduct/plugin.xml new file mode 100755 index 0000000000000000000000000000000000000000..4320957fd29e2e868831ba1c73c6e5bda2ff9296 --- /dev/null +++ b/Source Code/V2.0/PiacereToolProduct/plugin.xml @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.4"?> +<plugin> + + <extension + id="PiacereProductID" + point="org.eclipse.core.runtime.products"> + <product + application="org.eclipse.ui.ide.workbench" + name="Piacere"> + <property + name="windowImages" + value="Piacere/PiacereIcons/PiacereIcon_16x16.png,Piacere/PiacereIcons/PiacereIcon_32x32.png,Piacere/PiacereIcons/PiacereIcon_48x48.png,Piacere/PiacereIcons/PiacereIcon_64x64.png,Piacere/PiacereIcons/PiacereIcon_128x128.png,Piacere/PiacereIcons/PiacereIcon_256x256.png"> + </property> + <property + name="aboutImage" + value="about.gif"> + </property> + <property + name="startupForegroundColor" + value="17CE1C"> + </property> + <property + name="startupProgressRect" + value="2,310,448,10"> + </property> + <property + name="startupMessageRect" + value="7,290,320,20"> + </property> + <property + name="appName" + value="Piacere"> + </property> + <property + name="preferenceCustomization" + value="plugin_customization.ini"> + </property> + </product> + </extension> + +</plugin> diff --git a/Source Code/V2.0/PiacereToolProduct/plugin_customization.ini b/Source Code/V2.0/PiacereToolProduct/plugin_customization.ini new file mode 100755 index 0000000000000000000000000000000000000000..333fab9da760c08792618efc88d4a4c7a17b2fc3 --- /dev/null +++ b/Source Code/V2.0/PiacereToolProduct/plugin_customization.ini @@ -0,0 +1 @@ +org.eclipse.ui/SHOW_PROGRESS_ON_STARTUP = true diff --git a/Source Code/V2.0/PiacereToolProduct/splash.bmp b/Source Code/V2.0/PiacereToolProduct/splash.bmp new file mode 100644 index 0000000000000000000000000000000000000000..0c489eedc9b5482d8511d83d57aafcb5c738bfe2 Binary files /dev/null and b/Source Code/V2.0/PiacereToolProduct/splash.bmp differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR03/.classpath b/Source Code/V2.1/PiacereIDEIntegration.KR03/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..81fe078c20c05db46a8281fbb1a72875a5322b45 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR03/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="src" path="src"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR03/.gitignore b/Source Code/V2.1/PiacereIDEIntegration.KR03/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..ae3c1726048cd06b9a143e0376ed46dd9b9a8d53 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR03/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR03/.project b/Source Code/V2.1/PiacereIDEIntegration.KR03/.project new file mode 100644 index 0000000000000000000000000000000000000000..851c45bf6199b05e81499352e11341bc20f790bf --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR03/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>PiacereIDEIntegration.KR03</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR03/.settings/org.eclipse.jdt.core.prefs b/Source Code/V2.1/PiacereIDEIntegration.KR03/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000000000000000000000000000000000000..62ef3488cc0468ee9c2d4440dfbbbd5877cd0c28 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR03/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,9 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 +org.eclipse.jdt.core.compiler.compliance=17 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=17 diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR03/META-INF/MANIFEST.MF b/Source Code/V2.1/PiacereIDEIntegration.KR03/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..951134b9c2629f1cf0c780e37603ec5633340c8c --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR03/META-INF/MANIFEST.MF @@ -0,0 +1,23 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: KR03 +Bundle-SymbolicName: PiacereIDEIntegration.KR03;singleton:=true +Bundle-Version: 1.0.0.qualifier +Automatic-Module-Name: PiacereIDEIntegration.KR03 +Require-Bundle: org.eclipse.ui, + org.eclipse.core.runtime, + org.apache.httpcomponents.httpcore +Import-Package: eu.piacere.doml.doml.commons, + eu.piacere.piacereTool.utils, + org.apache.commons.io, + org.apache.http.client;version="4.5.13", + org.apache.http.client.methods;version="4.5.13", + org.apache.http.impl.client;version="4.5.13", + org.eclipse.core.resources, + org.eclipse.core.runtime.preferences;version="3.4.0", + org.eclipse.emf.common.util, + org.eclipse.emf.ecore, + org.eclipse.emf.ecore.resource, + org.eclipse.emf.ecore.resource.impl, + org.eclipse.emf.ecore.util, + org.json diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR03/Piacere/PiacereIcon_16x16.png b/Source Code/V2.1/PiacereIDEIntegration.KR03/Piacere/PiacereIcon_16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..444de54d6cfe2958fac1bbb89dd8619b4c537c47 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR03/Piacere/PiacereIcon_16x16.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR03/build.properties b/Source Code/V2.1/PiacereIDEIntegration.KR03/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..52086a7c305694aa678bde0640768488a5cf8e4f --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR03/build.properties @@ -0,0 +1,6 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + .,\ + plugin.xml,\ + Piacere/ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR03/plugin.xml b/Source Code/V2.1/PiacereIDEIntegration.KR03/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..8bf8e3d15664752b43fde75f4d9da8ed6e45af3a --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR03/plugin.xml @@ -0,0 +1,49 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.4"?> +<plugin> + <extension + point="org.eclipse.ui.preferencePages"> + <page + category="PiacereToolCustomization.preferences.page1" + class="eu.piacere.ide.toolIntegration.kr03.preferencePage.KR03PreferencePage" + id="PiacereIDEIntegration.KR03.preferences.page1" + name="Infrastructural Code Generator Preferences"> + </page> + </extension> + <extension + point="org.eclipse.core.runtime.preferences"> + <initializer + class="eu.piacere.ide.toolIntegration.kr03.preferencePage.KR03PreferenceInitializer"> + </initializer> + </extension> + <extension + point="org.eclipse.ui.commands"> + <command + categoryId="eu.piacere.piacereModelsCommands.category.id" + defaultHandler="eu.piacere.ide.toolIntegration.kr03.commandHandlers.CodeGeneratorCommandHandler" + id="eu.piacere.piacereModelsCommands.codeGeneratorCommand.id" + name="Generate Code"> + </command> + </extension> + <extension + point="org.eclipse.ui.menus"> + <menuContribution + allPopups="false" + locationURI="popup:eu.piacere.eclipsePopupMenu.id"> + <command + commandId="eu.piacere.piacereModelsCommands.codeGeneratorCommand.id" + icon="Piacere/PiacereIcon_16x16.png" + label="Generate IaC Code" + style="push" + tooltip="Generate IaC code using DOML"> + <visibleWhen + checkEnabled="false"> + <reference + definitionId="eu.piacere.piacereTool.propertyTesters.extensionPropertyTester.isDOMLModel.id"> + </reference> + </visibleWhen> + </command> + </menuContribution> + </extension> + +</plugin> diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR03/src/eu/piacere/ide/toolIntegration/kr03/commandHandlers/CodeGeneratorCommandHandler.java b/Source Code/V2.1/PiacereIDEIntegration.KR03/src/eu/piacere/ide/toolIntegration/kr03/commandHandlers/CodeGeneratorCommandHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..7e30d1a2c7f7146ac9c99b93cafedb029aa0d12c --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR03/src/eu/piacere/ide/toolIntegration/kr03/commandHandlers/CodeGeneratorCommandHandler.java @@ -0,0 +1,98 @@ +package eu.piacere.ide.toolIntegration.kr03.commandHandlers; + +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.UUID; + +import org.apache.http.client.ClientProtocolException; +import org.apache.http.client.HttpClient; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.HttpClientBuilder; +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.Path; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; +import org.eclipse.emf.ecore.util.EcoreUtil; +import org.eclipse.jface.dialogs.ProgressMonitorDialog; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.ui.handlers.HandlerUtil; +import org.json.JSONException; + +import eu.piacere.doml.doml.commons.DOMLModel; +import eu.piacere.piacereTool.utils.FileUtils; +import eu.piacere.piacereTool.utils.ModelUtils; +import eu.piacere.piacereTool.utils.ToolCustomizationUtils; + +public class CodeGeneratorCommandHandler extends AbstractHandler{ + + private void doPostRequestToIACCodeGenerator(String fileContent, String path, String defaultFileName) throws ClientProtocolException, IOException, JSONException { + HttpClient httpClient = HttpClientBuilder.create().build(); + + String url=ToolCustomizationUtils.getPreference(this.getClass(), "KR03.protocol")+"://"+ToolCustomizationUtils.getPreference(this.getClass(), "KR03.host")+":"+ToolCustomizationUtils.getPreference(this.getClass(), "KR03.port")+"/iac/files"; + + HttpPost httpPost = new HttpPost(url); + + StringEntity entity = new StringEntity(fileContent); + httpPost.setEntity(entity); + + httpPost.setHeader("Accept", "application/json"); + httpPost.setHeader("Content-type", "application/xml"); + + CloseableHttpResponse response = (CloseableHttpResponse) httpClient.execute(httpPost); + if(response.getStatusLine().getStatusCode()==200) { + + String generationFileName=ToolCustomizationUtils.doDialogAsk("IaC Code Generator", "Enter the IaC Code File Name", defaultFileName); + + FileOutputStream fos = new FileOutputStream(path + "//" + generationFileName+"_"+FileUtils.getTimestamp()+".tar.gz"); + int br = -1; + byte[] buffer = new byte[4096]; + while ((br = response.getEntity().getContent().read(buffer)) != -1 ) { + fos.write(buffer, 0, br); + } + fos.close(); + } + + else { + ToolCustomizationUtils.showErrorDialog("Code Generator", "Error: " + response.getStatusLine().getStatusCode() + ".\n\nCan not generate the IaC code."); + } + } + + + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + ToolCustomizationUtils.saveWorkbench(); + ISelection selection = HandlerUtil.getCurrentSelection(event); + if (selection instanceof StructuredSelection) { + if(((StructuredSelection)selection).getFirstElement() instanceof IFile){ + + IFile res = (IFile)((StructuredSelection) selection).getFirstElement(); + + String fileContent= ModelUtils.getModelTextAsDOMLXFromDOML(res); + if(fileContent==null) { + return null; + } + + String path = res.getLocation().removeLastSegments(1).toString(); + + try { + doPostRequestToIACCodeGenerator(fileContent, path, res.getFullPath().lastSegment().replace(".domlx", "")); + res.getParent().refreshLocal(IResource.DEPTH_INFINITE, null); + } catch (IOException | JSONException | CoreException e2) { + e2.printStackTrace(); + } + } + } + return null; + } +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR03/src/eu/piacere/ide/toolIntegration/kr03/preferencePage/KR03PreferenceInitializer.java b/Source Code/V2.1/PiacereIDEIntegration.KR03/src/eu/piacere/ide/toolIntegration/kr03/preferencePage/KR03PreferenceInitializer.java new file mode 100644 index 0000000000000000000000000000000000000000..7a5e270927f78167e5a913e7e4052ba7ecf74343 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR03/src/eu/piacere/ide/toolIntegration/kr03/preferencePage/KR03PreferenceInitializer.java @@ -0,0 +1,22 @@ +package eu.piacere.ide.toolIntegration.kr03.preferencePage; + +import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer; +import org.eclipse.core.runtime.preferences.ConfigurationScope; +import org.eclipse.ui.preferences.ScopedPreferenceStore; +import org.osgi.framework.FrameworkUtil; + +import eu.piacere.ide.toolIntegration.kr03.preferencePage.KR03PreferenceInitializer; + +public class KR03PreferenceInitializer extends AbstractPreferenceInitializer { + + @Override + public void initializeDefaultPreferences() { + + ScopedPreferenceStore scopedPreferenceStore = new ScopedPreferenceStore(ConfigurationScope.INSTANCE,(FrameworkUtil.getBundle(KR03PreferenceInitializer.class)).getSymbolicName()); + scopedPreferenceStore.setDefault("KR03.host", "icg.ci.piacere.digital.tecnalia.dev"); + scopedPreferenceStore.setDefault("KR03.port", 443); + scopedPreferenceStore.setDefault("KR03.protocol", "https"); + + } + +} \ No newline at end of file diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR03/src/eu/piacere/ide/toolIntegration/kr03/preferencePage/KR03PreferencePage.java b/Source Code/V2.1/PiacereIDEIntegration.KR03/src/eu/piacere/ide/toolIntegration/kr03/preferencePage/KR03PreferencePage.java new file mode 100644 index 0000000000000000000000000000000000000000..4c26e99bc5da8a16575ff91146258190919ecb52 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR03/src/eu/piacere/ide/toolIntegration/kr03/preferencePage/KR03PreferencePage.java @@ -0,0 +1,36 @@ +package eu.piacere.ide.toolIntegration.kr03.preferencePage; + +import org.eclipse.core.runtime.preferences.ConfigurationScope; +import org.eclipse.jface.preference.FieldEditorPreferencePage; +import org.eclipse.jface.preference.IntegerFieldEditor; +import org.eclipse.jface.preference.RadioGroupFieldEditor; +import org.eclipse.jface.preference.StringFieldEditor; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchPreferencePage; +import org.eclipse.ui.preferences.ScopedPreferenceStore; +import org.osgi.framework.FrameworkUtil; + +public class KR03PreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage { + + public KR03PreferencePage() { + super(GRID); + } + + @Override + public void init(IWorkbench workbench) { + //WHICH SCOPE SHOULD I SELECT: https://wiki.eclipse.org/FAQ_What_is_a_preference_scope%3F + + setPreferenceStore(new ScopedPreferenceStore(ConfigurationScope.INSTANCE, (FrameworkUtil.getBundle(KR03PreferenceInitializer.class)).getSymbolicName())); + setDescription("These Are The Infrastructural Code Generator Preferences"); + + } + + @Override + protected void createFieldEditors() { + addField(new StringFieldEditor("KR03.host", "Endpoint Host", getFieldEditorParent())); + addField(new IntegerFieldEditor("KR03.port", "Endpoint Port", getFieldEditorParent())); + addField(new RadioGroupFieldEditor("KR03.protocol", "Protocol", 1, new String[][] {{"HTTP","http"},{"HTTPS","https"}}, getFieldEditorParent())); + + } + +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR05/.classpath b/Source Code/V2.1/PiacereIDEIntegration.KR05/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..1fa3e6803d3b22e055b735220510616c4e35f2fc --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR05/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="src" path="src"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR05/.gitignore b/Source Code/V2.1/PiacereIDEIntegration.KR05/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..ae3c1726048cd06b9a143e0376ed46dd9b9a8d53 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR05/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR05/.project b/Source Code/V2.1/PiacereIDEIntegration.KR05/.project new file mode 100644 index 0000000000000000000000000000000000000000..1ae7a77bc897917bd4e7579cdbc86ebfaa189192 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR05/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>PiacereIDEIntegration.KR05</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR05/META-INF/MANIFEST.MF b/Source Code/V2.1/PiacereIDEIntegration.KR05/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..1e759f6bd6a99befc22c64b4edac3a95f3b81664 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR05/META-INF/MANIFEST.MF @@ -0,0 +1,23 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: KR05 +Bundle-SymbolicName: PiacereIDEIntegration.KR05;singleton:=true +Bundle-Version: 1.0.0.qualifier +Automatic-Module-Name: PiacereIDEIntegration.KR05 +Require-Bundle: org.eclipse.ui, + org.eclipse.core.runtime, + org.apache.httpcomponents.httpcore +Import-Package: eu.piacere.doml.doml.commons, + eu.piacere.piacereTool.utils, + org.apache.commons.io, + org.apache.http.client;version="4.5.13", + org.apache.http.client.methods;version="4.5.13", + org.apache.http.impl.client;version="4.5.13", + org.eclipse.core.resources, + org.eclipse.core.runtime.preferences;version="3.4.0", + org.eclipse.emf.common.util, + org.eclipse.emf.ecore, + org.eclipse.emf.ecore.resource, + org.eclipse.emf.ecore.resource.impl, + org.eclipse.emf.ecore.util, + org.json diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR05/Piacere/PiacereIcon_16x16.png b/Source Code/V2.1/PiacereIDEIntegration.KR05/Piacere/PiacereIcon_16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..444de54d6cfe2958fac1bbb89dd8619b4c537c47 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR05/Piacere/PiacereIcon_16x16.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR05/build.properties b/Source Code/V2.1/PiacereIDEIntegration.KR05/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..52086a7c305694aa678bde0640768488a5cf8e4f --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR05/build.properties @@ -0,0 +1,6 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + .,\ + plugin.xml,\ + Piacere/ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR05/plugin.xml b/Source Code/V2.1/PiacereIDEIntegration.KR05/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..7ac7d9f6eb5da4cd1ed3f26374746adc0803028c --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR05/plugin.xml @@ -0,0 +1,50 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.4"?> +<plugin> + <extension + point="org.eclipse.ui.preferencePages"> + <page + category="PiacereToolCustomization.preferences.page1" + class="eu.piacere.ide.toolIntegration.kr05.preferencePage.KR05PreferencePage" + id="PiacereIDEIntegration.KR05.preferences.page1" + name="Model Checker Preferences"> + </page> + </extension> + <extension + point="org.eclipse.core.runtime.preferences"> + <initializer + class="eu.piacere.ide.toolIntegration.kr05.preferencePage.KR05PreferenceInitializer"> + </initializer> + </extension> + + <extension + point="org.eclipse.ui.commands"> + <command + categoryId="eu.piacere.piacereModelsCommands.category.id" + defaultHandler="eu.piacere.ide.toolIntegration.kr05.commandHandlers.ValidateDOMLCommandHandler" + id="eu.piacere.piacereModelsCommands.validateDOMLCommand.id" + name="Validate DOML"> + </command> + </extension> + <extension + point="org.eclipse.ui.menus"> + <menuContribution + allPopups="false" + locationURI="popup:eu.piacere.eclipsePopupMenu.id"> + <command + commandId="eu.piacere.piacereModelsCommands.validateDOMLCommand.id" + icon="Piacere/PiacereIcon_16x16.png" + label="Validate DOML" + style="push" + tooltip="Validate the DOML Specification"> + <visibleWhen + checkEnabled="false"> + <reference + definitionId="eu.piacere.piacereTool.propertyTesters.extensionPropertyTester.isDOMLModel.id"> + </reference> + </visibleWhen> + </command> + </menuContribution> + </extension> + +</plugin> diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR05/src/eu/piacere/ide/toolIntegration/kr05/commandHandlers/ValidateDOMLCommandHandler.java b/Source Code/V2.1/PiacereIDEIntegration.KR05/src/eu/piacere/ide/toolIntegration/kr05/commandHandlers/ValidateDOMLCommandHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..953135ba1fdaf210f240e204abcfda31b1a1be5d --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR05/src/eu/piacere/ide/toolIntegration/kr05/commandHandlers/ValidateDOMLCommandHandler.java @@ -0,0 +1,150 @@ +package eu.piacere.ide.toolIntegration.kr05.commandHandlers; + +import java.io.IOException; + +import org.apache.http.client.ClientProtocolException; +import org.apache.http.client.HttpClient; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.util.EntityUtils; +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.jface.dialogs.ProgressMonitorDialog; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.ui.handlers.HandlerUtil; +import org.json.JSONException; +import org.json.JSONObject; + +import eu.piacere.piacereTool.utils.FileUtils; +import eu.piacere.piacereTool.utils.ModelUtils; +import eu.piacere.piacereTool.utils.ToolCustomizationUtils; + + +public class ValidateDOMLCommandHandler extends AbstractHandler { + + private JSONObject doPostRequestToValidator(String fileContent) throws ClientProtocolException, IOException, JSONException { + HttpClient httpClient = HttpClientBuilder.create().build(); + + String url=ToolCustomizationUtils.getPreference(this.getClass(), "KR05.protocol")+"://"+ToolCustomizationUtils.getPreference(this.getClass(), "KR05.host"); + if(ToolCustomizationUtils.getPreference(this.getClass(), "KR05.port")!=null) { + if(!ToolCustomizationUtils.getPreference(this.getClass(), "KR05.port").equals("")) { + url=url+":"+ToolCustomizationUtils.getPreference(this.getClass(), "KR05.port"); + } + } + + url=url+"/modelcheck"; + + HttpPost httpPost = new HttpPost(url); + + StringEntity entity = new StringEntity(fileContent); + httpPost.setEntity(entity); + + httpPost.setHeader("Accept", "application/json"); + httpPost.setHeader("Content-type", "application/xml"); + + CloseableHttpResponse response = (CloseableHttpResponse) httpClient.execute(httpPost); + if(response.getStatusLine().getStatusCode()==200) { + String content = EntityUtils.toString(response.getEntity()); + JSONObject responseAsJSON=new JSONObject(content); + return responseAsJSON; + } + + else if(response.getStatusLine().getStatusCode()==400) { + String content = EntityUtils.toString(response.getEntity()); + JSONObject responseAsJSON =new JSONObject(content); + ToolCustomizationUtils.showErrorDialog("Model Checking Result","Model Checker Raised an Error HTTP-400:\n Message:" + responseAsJSON.getString("message") + "\n Debug Message:" + responseAsJSON.getString("debug_message")); + return null; + } + + else { + String content = EntityUtils.toString(response.getEntity()); + ToolCustomizationUtils.showErrorDialog("Model Checking Result","Unknown error" + content); + return null; + } + } + + private void saveFileInWorkspace(IContainer container, String fileContent, String defaultFileName) { + + + String domlModelName=ToolCustomizationUtils.doDialogAsk("DOML Model Validation", "Enter the DOML Model Validation Results File Name", defaultFileName); + + ProgressMonitorDialog pd=new ProgressMonitorDialog(ToolCustomizationUtils.getActiveShell()); + pd.open(); + try { + FileUtils.createFile(domlModelName+"_"+FileUtils.getTimestamp()+".validation" , container, fileContent, pd); + } catch (Exception e1) { + e1.printStackTrace(); + } + pd.close(); + try { + container.refreshLocal(IResource.DEPTH_INFINITE, null); + } catch (CoreException e) { + e.printStackTrace(); + } + } + + private void interpretResult(JSONObject responseFromValidator) { + try { + if(responseFromValidator.getString("result").equals("sat")) { + ToolCustomizationUtils.showInformationDialog("Model Checking Result", "Your Requirements are SATISFIED"); + } + else if(responseFromValidator.getString("result").equals("unsat")) { + ToolCustomizationUtils.showErrorDialog("Model Checking Result", "Your Requirements are UNSATISFIED:\n\n"+responseFromValidator.getString("description")); + } + } catch (JSONException e) { + e.printStackTrace(); + } + + + } + + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + ToolCustomizationUtils.saveWorkbench(); + ISelection selection = HandlerUtil.getCurrentSelection(event); + if (selection instanceof StructuredSelection) { + if(((StructuredSelection)selection).getFirstElement() instanceof IFile){ + IFile res = (IFile)((StructuredSelection) selection).getFirstElement(); + + + String fileContent= ModelUtils.getModelTextAsDOMLXFromDOML(res); + if(fileContent==null) { + //ARROJAR ERROR + return null; + } + JSONObject responseFromValidator=null; + try { + responseFromValidator=doPostRequestToValidator(fileContent); + } catch (IOException | JSONException e2) { + e2.printStackTrace(); + } + + if(responseFromValidator==null) { + //ARROJAR ERROR + return null; + } + + + interpretResult(responseFromValidator); + + if(ToolCustomizationUtils.showQuestionDialog("Save Result", "Do you want to save the validation result on workspace?")) { + try { + saveFileInWorkspace(res.getParent(), responseFromValidator.toString(4), res.getFullPath().lastSegment().replace(".domlx", "")); + } catch (JSONException e) { + e.printStackTrace(); + } + } + } + } + return null; + } + +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR05/src/eu/piacere/ide/toolIntegration/kr05/preferencePage/KR05PreferenceInitializer.java b/Source Code/V2.1/PiacereIDEIntegration.KR05/src/eu/piacere/ide/toolIntegration/kr05/preferencePage/KR05PreferenceInitializer.java new file mode 100644 index 0000000000000000000000000000000000000000..9d00e7ad8a2c6fec4e8eb8b6ffc22e20520a353e --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR05/src/eu/piacere/ide/toolIntegration/kr05/preferencePage/KR05PreferenceInitializer.java @@ -0,0 +1,20 @@ +package eu.piacere.ide.toolIntegration.kr05.preferencePage; + +import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer; +import org.eclipse.core.runtime.preferences.ConfigurationScope; +import org.eclipse.ui.preferences.ScopedPreferenceStore; +import org.osgi.framework.FrameworkUtil; + +public class KR05PreferenceInitializer extends AbstractPreferenceInitializer { + + @Override + public void initializeDefaultPreferences() { + + ScopedPreferenceStore scopedPreferenceStore = new ScopedPreferenceStore(ConfigurationScope.INSTANCE,(FrameworkUtil.getBundle(KR05PreferenceInitializer.class)).getSymbolicName()); + scopedPreferenceStore.setDefault("KR05.host", "dmc.ci.piacere.digital.tecnalia.dev"); + scopedPreferenceStore.setDefault("KR05.port", 443); + scopedPreferenceStore.setDefault("KR05.protocol", "https"); + + } + +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR05/src/eu/piacere/ide/toolIntegration/kr05/preferencePage/KR05PreferencePage.java b/Source Code/V2.1/PiacereIDEIntegration.KR05/src/eu/piacere/ide/toolIntegration/kr05/preferencePage/KR05PreferencePage.java new file mode 100644 index 0000000000000000000000000000000000000000..7e41b210d65be8031fe4a25bdd0b201deca1a1b3 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR05/src/eu/piacere/ide/toolIntegration/kr05/preferencePage/KR05PreferencePage.java @@ -0,0 +1,42 @@ +package eu.piacere.ide.toolIntegration.kr05.preferencePage; + +import org.eclipse.core.runtime.preferences.ConfigurationScope; +import org.eclipse.jface.preference.FieldEditorPreferencePage; +import org.eclipse.jface.preference.IntegerFieldEditor; +import org.eclipse.jface.preference.RadioGroupFieldEditor; +import org.eclipse.jface.preference.StringFieldEditor; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchPreferencePage; +import org.eclipse.ui.preferences.ScopedPreferenceStore; +import org.osgi.framework.FrameworkUtil; + +public class KR05PreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage { + + public KR05PreferencePage() { + super(GRID); + } + + @Override + public void init(IWorkbench workbench) { + //WHICH SCOPE SHOULD I SELECT: https://wiki.eclipse.org/FAQ_What_is_a_preference_scope%3F + + setPreferenceStore(new ScopedPreferenceStore(ConfigurationScope.INSTANCE, (FrameworkUtil.getBundle(KR05PreferenceInitializer.class)).getSymbolicName())); + setDescription("Model Checker Preferences"); + + } + + @Override + protected void createFieldEditors() { + + StringFieldEditor hostFieldEditor = new StringFieldEditor("KR05.host", "Endpoint Host", getFieldEditorParent()); + addField(hostFieldEditor); + + IntegerFieldEditor portfieldeditor= new IntegerFieldEditor("KR05.port", "Endpoint Port", getFieldEditorParent()); + addField(portfieldeditor); + + RadioGroupFieldEditor protocolFieldEditor = new RadioGroupFieldEditor("KR05.protocol", "Protocol", 1, new String[][] {{"HTTP","http"},{"HTTPS","https"}}, getFieldEditorParent()); + addField(protocolFieldEditor); + + } + +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR06And07/.classpath b/Source Code/V2.1/PiacereIDEIntegration.KR06And07/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..1fa3e6803d3b22e055b735220510616c4e35f2fc --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR06And07/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="src" path="src"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR06And07/.gitignore b/Source Code/V2.1/PiacereIDEIntegration.KR06And07/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..ae3c1726048cd06b9a143e0376ed46dd9b9a8d53 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR06And07/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR06And07/.project b/Source Code/V2.1/PiacereIDEIntegration.KR06And07/.project new file mode 100644 index 0000000000000000000000000000000000000000..176ccaf78998f00709a2c2a5cd42472fd2e62ba4 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR06And07/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>PiacereIDEIntegration.KR06And07</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR06And07/META-INF/MANIFEST.MF b/Source Code/V2.1/PiacereIDEIntegration.KR06And07/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..aad93834a06a887e25130bc9847c35bd5386925a --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR06And07/META-INF/MANIFEST.MF @@ -0,0 +1,27 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: KR06And07 +Bundle-SymbolicName: PiacereIDEIntegration.KR06And07;singleton:=true +Bundle-Version: 1.0.0.qualifier +Bundle-Vendor: VRAIN +Automatic-Module-Name: PiacereIDEIntegration.KR06And07 +Require-Bundle: org.eclipse.ui, + org.eclipse.core.runtime, + org.apache.httpcomponents.httpcore +Import-Package: eu.piacere.doml.doml.commons, + eu.piacere.piacereTool.utils, + org.apache.commons.io, + org.apache.http.client;version="4.5.13", + org.apache.http.client.methods;version="4.5.13", + org.apache.http.entity.mime;version="4.5.13", + org.apache.http.entity.mime.content;version="4.5.13", + org.apache.http.impl.client;version="4.5.13", + org.eclipse.core.resources, + org.eclipse.core.runtime.preferences;version="3.4.0", + org.eclipse.emf.common.util, + org.eclipse.emf.ecore, + org.eclipse.emf.ecore.resource, + org.eclipse.emf.ecore.resource.impl, + org.eclipse.emf.ecore.util, + org.json + diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR06And07/Piacere/PiacereIcon_16x16.png b/Source Code/V2.1/PiacereIDEIntegration.KR06And07/Piacere/PiacereIcon_16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..444de54d6cfe2958fac1bbb89dd8619b4c537c47 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR06And07/Piacere/PiacereIcon_16x16.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR06And07/build.properties b/Source Code/V2.1/PiacereIDEIntegration.KR06And07/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..52086a7c305694aa678bde0640768488a5cf8e4f --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR06And07/build.properties @@ -0,0 +1,6 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + .,\ + plugin.xml,\ + Piacere/ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR06And07/plugin.xml b/Source Code/V2.1/PiacereIDEIntegration.KR06And07/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..4dd9e6b4c87c745d369694c6ee6ff0531be6eac8 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR06And07/plugin.xml @@ -0,0 +1,104 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.4"?> +<plugin> + <extension + point="org.eclipse.ui.preferencePages"> + <page + category="PiacereToolCustomization.preferences.page1" + class="eu.piacere.ide.toolIntegration.kr06And07.preferencePage.KR06And07PreferencePage" + id="PiacereIDEIntegration.KR06And07.preferences.page1" + name="IaC Security Inspector Preferences"> + </page> + </extension> + <extension + point="org.eclipse.core.runtime.preferences"> + <initializer + class="eu.piacere.ide.toolIntegration.kr06And07.preferencePage.KR06And07PreferenceInitializer"> + </initializer> + </extension> + <extension + point="org.eclipse.ui.commands"> + <command + categoryId="eu.piacere.piacereModelsCommands.category.id" + defaultHandler="eu.piacere.ide.toolIntegration.kr06And07.commandHandlers.IaCSecurityInspectorCommandHandler" + id="eu.piacere.piacereModelsCommands.IaCSecurityInspectorCommand.id" + name="Security Inspector"> + </command> + <!-- <command + categoryId="eu.piacere.piacereModelsCommands.category.id" + defaultHandler="eu.piacere.ide.toolIntegration.kr06And07.commandHandlers.IaCSecurityEnableCommandHandler" + id="eu.piacere.piacereModelsCommands.IaCSecurityEnableCommand.id" + name="Security Enable"> + </command> + <command + categoryId="eu.piacere.piacereModelsCommands.category.id" + defaultHandler="eu.piacere.ide.toolIntegration.kr06And07.commandHandlers.IaCSecurityConfCommandHandlers" + id="eu.piacere.piacereModelsCommands.IaCSecurityConfCommand.id" + name="Security configuration"> + </command> --> + <command + categoryId="eu.piacere.piacereModelsCommands.category.id" + defaultHandler="eu.piacere.ide.toolIntegration.kr06And07.commandHandlers.IaCSecurityScanCommandHandler" + id="eu.piacere.piacereModelsCommands.IaCSecurityScanCommand.id" + name="Security Scanner"> + </command> + </extension> + <extension + point="org.eclipse.ui.menus"> + <menuContribution + allPopups="false" + locationURI="menu:org.eclipse.ui.main.menu"> + <menu + id="piacereMenu" + label="Piacere"> + <menu + label="Security Inspector"> + <command + commandId="eu.piacere.piacereModelsCommands.IaCSecurityInspectorCommand.id" + label="Get Security Inspector Configuration" + style="push" + tooltip="Checks your IaC for security vulnerabilities"> + </command> + <!--<command + commandId="eu.piacere.piacereModelsCommands.IaCSecurityConfCommand.id" + label="Set Security Configuration" + style="push" + tooltip="Set Security Configuration"> + </command> + <command + commandId="eu.piacere.piacereModelsCommands.IaCSecurityEnableCommand.id" + label="Enable/Disable Security Checks" + style="push" + tooltip="Enable/Disable your IaC or Components"> + </command>--> + </menu> + </menu> + </menuContribution> + <menuContribution + allPopups="false" + locationURI="popup:eu.piacere.eclipsePopupMenu.id"> + <command + commandId="eu.piacere.piacereModelsCommands.IaCSecurityScanCommand.id" + icon="Piacere/PiacereIcon_16x16.png" + label="Perform Security Scan" + style="push" + tooltip="Scan IaC for security vulnerabilities"> + <visibleWhen + checkEnabled="false"> + <or> + <reference + definitionId="eu.piacere.piacereTool.propertyTesters.extensionPropertyTester.isTarGz.id"> + </reference> + <reference + definitionId="eu.piacere.piacereTool.propertyTesters.extensionPropertyTester.isZip.id"> + </reference> + <reference + definitionId="eu.piacere.piacereTool.propertyTesters.extensionPropertyTester.isCSAR.id"> + </reference> + </or> + </visibleWhen> + </command> + </menuContribution> + </extension> + +</plugin> diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR06And07/src/eu/piacere/ide/toolIntegration/kr06And07/commandHandlers/IaCSecurityConfCommandHandler.java b/Source Code/V2.1/PiacereIDEIntegration.KR06And07/src/eu/piacere/ide/toolIntegration/kr06And07/commandHandlers/IaCSecurityConfCommandHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..2a4021adc97021b48d800569afd1a27a073d9971 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR06And07/src/eu/piacere/ide/toolIntegration/kr06And07/commandHandlers/IaCSecurityConfCommandHandler.java @@ -0,0 +1,141 @@ +package eu.piacere.ide.toolIntegration.kr06And07.commandHandlers; + +import java.io.File; +import java.io.IOException; + +import javax.swing.JFrame; +import javax.swing.JOptionPane; + +import org.apache.http.HttpEntity; +import org.apache.http.client.ClientProtocolException; +import org.apache.http.client.HttpClient; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpPatch; +import org.apache.http.entity.ContentType; +import org.apache.http.entity.mime.HttpMultipartMode; +import org.apache.http.entity.mime.MultipartEntityBuilder; +import org.apache.http.entity.mime.content.FileBody; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.util.EntityUtils; +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.preferences.ConfigurationScope; +import org.eclipse.emf.common.util.URI; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.ui.handlers.HandlerUtil; +import org.eclipse.ui.preferences.ScopedPreferenceStore; +import org.json.JSONException; +import org.json.JSONObject; +import org.osgi.framework.FrameworkUtil; + +import eu.piacere.piacereTool.utils.FileUtils; +import eu.piacere.piacereTool.utils.ToolCustomizationUtils; + +public class IaCSecurityConfCommandHandler extends AbstractHandler { + + private String getPreference(String preferenceID) { + ScopedPreferenceStore scopedPreferenceStore = new ScopedPreferenceStore(ConfigurationScope.INSTANCE,(FrameworkUtil.getBundle(IaCSecurityConfCommandHandler.class)).getSymbolicName()); + return scopedPreferenceStore.getString(preferenceID); + } + + private JSONObject showDialog(IPath fileuri) throws ClientProtocolException, IOException, JSONException { + + JFrame frame = new JFrame("Security Options"); + + String result = (String)JOptionPane.showInputDialog( + frame, + "Configure IaC/Component", + "Check Name", + JOptionPane.PLAIN_MESSAGE, + null, + null, + "" + ); + if(result == null) return null; + String result2 = (String)JOptionPane.showInputDialog( + frame, + "Configure IaC/Component", + "Secret", + JOptionPane.PLAIN_MESSAGE, + null, + null, + "" + ); + + if(result2 == null) return null; + return doPostRequestTochecker(fileuri, result, result2); + + } + private JSONObject doPostRequestTochecker(IPath fileuri, String chk_name, String secret) throws ClientProtocolException, IOException, JSONException { + HttpClient httpClient = HttpClientBuilder.create().build(); + + String url=getPreference("KR06.protocol")+"://"+getPreference("KR06.host")+":"+getPreference("KR06.port")+"/checks/"; + + MultipartEntityBuilder builder = MultipartEntityBuilder.create(); + builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); + if(!chk_name.equals("")) { + url+= chk_name + "/configure?"; + } + if(!secret.equals("")) { + builder.addTextBody("secret", secret); + } + + if(!fileuri.equals("")) { + builder.addPart("config_file", new FileBody(new File(fileuri.toString()), ContentType.DEFAULT_BINARY)); + } + + HttpPatch httpPatch = new HttpPatch(url); + HttpEntity entity = builder.build(); + httpPatch.setEntity(entity); + + CloseableHttpResponse response = (CloseableHttpResponse) httpClient.execute(httpPatch); + if(response.getStatusLine().getStatusCode()==200) { + String content = EntityUtils.toString(response.getEntity()); + ToolCustomizationUtils.showInformationDialog("Security Configure Result", content); + } else { + String content = EntityUtils.toString(response.getEntity()); + ToolCustomizationUtils.showErrorDialog("Security Configure Error", content); + } + return null; + } + + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + ToolCustomizationUtils.saveWorkbench(); + ISelection selection = HandlerUtil.getCurrentSelection(event); + if (selection instanceof StructuredSelection) { + if(((StructuredSelection)selection).getFirstElement() instanceof IFile){ + IFile res = (IFile)((StructuredSelection) selection).getFirstElement(); + IProject project = ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(ToolCustomizationUtils.getFullPath(URI.createURI(res.getLocationURI().toString()))).getProject(); + + //DOMLModel theDOMLModel = (DOMLModel) ModelUtils.loadEMFModelRoot(res); + + String fileContent=FileUtils.getIFileContents(res); + IPath path = res.getLocation(); + if(fileContent==null) { + //ARROJAR ERROR + return null; + } + JSONObject responseFromChecker=null; + try { + // Escollir 1 desde la finestra emergent + responseFromChecker=showDialog(path); + + + } catch (IOException | JSONException e2) { + e2.printStackTrace(); + } + + return null; + } + } + return null; + } + +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR06And07/src/eu/piacere/ide/toolIntegration/kr06And07/commandHandlers/IaCSecurityEnableCommandHandler.java b/Source Code/V2.1/PiacereIDEIntegration.KR06And07/src/eu/piacere/ide/toolIntegration/kr06And07/commandHandlers/IaCSecurityEnableCommandHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..ace26413e52a5ec74430783cdc877691535ce311 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR06And07/src/eu/piacere/ide/toolIntegration/kr06And07/commandHandlers/IaCSecurityEnableCommandHandler.java @@ -0,0 +1,106 @@ +package eu.piacere.ide.toolIntegration.kr06And07.commandHandlers; + +import java.io.IOException; + +import javax.swing.JFrame; +import javax.swing.JOptionPane; + +import org.apache.http.client.ClientProtocolException; +import org.apache.http.client.HttpClient; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpPatch; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.util.EntityUtils; +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.runtime.preferences.ConfigurationScope; +import org.eclipse.ui.preferences.ScopedPreferenceStore; +import org.json.JSONException; +import org.osgi.framework.FrameworkUtil; + +import eu.piacere.piacereTool.utils.ToolCustomizationUtils; + +public class IaCSecurityEnableCommandHandler extends AbstractHandler{ + + + String url = ""; + private String getPreference(String preferenceID) { + ScopedPreferenceStore scopedPreferenceStore = new ScopedPreferenceStore(ConfigurationScope.INSTANCE,(FrameworkUtil.getBundle(IaCSecurityInspectorCommandHandler.class)).getSymbolicName()); + return scopedPreferenceStore.getString(preferenceID); + } + + private String showDialog() throws ClientProtocolException, IOException, JSONException { + + String[] options = {"true", "false"}; + JFrame frame = new JFrame("Security Options"); + + String result = (String)JOptionPane.showInputDialog( + frame, + "Enable IaC/Component", + "Check Name", + JOptionPane.PLAIN_MESSAGE, + null, + null, + "" + ); + if(result == null) return null; + String result2 = (String)JOptionPane.showInputDialog( + frame, + "Select one option", + "Enable IaC/Component", + JOptionPane.PLAIN_MESSAGE, + null, + options, + options[0] + ); + + if(result2 == null) return null; + return doPatchRequestToChecker(result, result2); + + } + + private String doPatchRequestToChecker(String chk_name, String enable) throws ClientProtocolException, IOException, JSONException { + HttpClient httpClient = HttpClientBuilder.create().build(); + + url=getPreference("KR06.protocol")+"://"+getPreference("KR06.host")+":"+getPreference("KR06.port")+"/checks/"; + if(!chk_name.equals("")) { + url+= chk_name + "/"; + } + if(enable.equals("true")) { + url+= "enable"; + } else { + url+= "disable"; + } + + HttpPatch httpPatch = new HttpPatch(url); + + httpPatch.setHeader("Accept", "application/json"); + + CloseableHttpResponse response = (CloseableHttpResponse) httpClient.execute(httpPatch); + if(response.getStatusLine().getStatusCode()==200) { + String content = EntityUtils.toString(response.getEntity()); + ToolCustomizationUtils.showInformationDialog("Security Enable Result", content); + } else { + String content = EntityUtils.toString(response.getEntity()); + ToolCustomizationUtils.showErrorDialog("Security Enable Error", content); + } + + return null; + } + + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + + /*try { + // Escollir 1 desde la finestra emergent + String responseFromChecker=showDialog(); + + + } catch (IOException | JSONException e2) { + e2.printStackTrace(); + }*/ + + return null; + } +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR06And07/src/eu/piacere/ide/toolIntegration/kr06And07/commandHandlers/IaCSecurityInspectorCommandHandler.java b/Source Code/V2.1/PiacereIDEIntegration.KR06And07/src/eu/piacere/ide/toolIntegration/kr06And07/commandHandlers/IaCSecurityInspectorCommandHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..e9106185c5cb84855b7897f6f6358bd53fd1397a --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR06And07/src/eu/piacere/ide/toolIntegration/kr06And07/commandHandlers/IaCSecurityInspectorCommandHandler.java @@ -0,0 +1,214 @@ +package eu.piacere.ide.toolIntegration.kr06And07.commandHandlers; + +import java.io.IOException; + +import org.apache.http.client.ClientProtocolException; +import org.apache.http.client.HttpClient; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.util.EntityUtils; +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import eu.piacere.piacereTool.utils.ToolCustomizationUtils; + +public class IaCSecurityInspectorCommandHandler extends AbstractHandler { + + private JSONArray showDialog() throws ClientProtocolException, IOException, JSONException { + + String keyword=ToolCustomizationUtils.doDialogAskWithoutPostProcess("Keyword","Keyword",""); + + if(keyword==null) { + return null; + } + return doGetRequestToChecker(keyword); + + } + + private JSONArray doGetRequestToChecker(String keyword/*, String configured, String enabled, String target_entity*/) throws ClientProtocolException, IOException, JSONException { + + String url=ToolCustomizationUtils.getPreference(this.getClass(), "KR06_07.protocol")+"://"+ToolCustomizationUtils.getPreference(this.getClass(), "KR06_07.host")+":"+ToolCustomizationUtils.getPreference(this.getClass(), "KR06_07.port")+"/checks?"; + + String target_entity=ToolCustomizationUtils.getPreference(this.getClass(), "KR06_07.entityType"); + if(!target_entity.equals("both")) { + url+= "target_entity_type=" + target_entity+"&"; + } + + if(!keyword.equals("")) { + url+= "keyword=" + keyword+"&"; + } + + String enabled=ToolCustomizationUtils.getPreference(this.getClass(), "KR06_07.enableStatus"); + if(!enabled.equals("both")) { + url+= "enabled=" + enabled+"&"; + } + String configured=ToolCustomizationUtils.getPreference(this.getClass(), "KR06_07.confStatus"); + if(!configured.equals("both")) { + url+= "configured=" + configured; + } + + HttpGet httpGet = new HttpGet(url); + + HttpClient httpClient = HttpClientBuilder.create().build(); + CloseableHttpResponse response = (CloseableHttpResponse) httpClient.execute(httpGet); + + if(response.getStatusLine().getStatusCode()==200) { + String content = EntityUtils.toString(response.getEntity()); + JSONArray responseAsJSON=new JSONArray(content); + return responseAsJSON; + } + + + return null; + + } + + private String capitalize(String str) { + if(str == null || str.isEmpty()) { + return str; + } + + return str.substring(0, 1).toUpperCase() + str.substring(1); + } + + /* + private JSONObject doPostRequestToScanner(String fileContent, List<String> checks) throws ClientProtocolException, IOException, JSONException { + HttpClient httpClient = HttpClientBuilder.create().build(); + + url=getPreference("KR06.protocol")+"://"+getPreference("KR06.host")+":"+getPreference("KR06.port")+"/scan?checks=" + checks + "&iac=" + fileContent; + + HttpPost httpPost = new HttpPost(); + + StringEntity entity = new StringEntity(fileContent); + httpPost.setEntity(entity); + + httpPost.setHeader("Accept", "application/json"); + httpPost.setHeader("Content-type","multipart/form-data"); + + CloseableHttpResponse response = (CloseableHttpResponse) httpClient.execute(httpPost); + if(response.getStatusLine().getStatusCode()==200) { + String content = EntityUtils.toString(response.getEntity()); + JSONObject responseAsJSON = new JSONObject(content); + return responseAsJSON; + } + return null; + + } + + private JSONObject doPatchEnableRequestToChecker(String check_name) throws ClientProtocolException, IOException, JSONException { + HttpClient httpClient = HttpClientBuilder.create().build(); + + url=getPreference("KR06.protocol")+"://"+getPreference("KR06.host")+":"+getPreference("KR06.port")+"/checks/"+ check_name + "/enable"; + + HttpPatch httpPatch = new HttpPatch(); + + httpPatch.setHeader("Accept", "application/json"); + + CloseableHttpResponse response = (CloseableHttpResponse) httpClient.execute(httpPatch); + if(response.getStatusLine().getStatusCode()==200) { + String content = EntityUtils.toString(response.getEntity()); + JSONObject responseAsJSON = new JSONObject(content); + return responseAsJSON; + } + return null; + + } + + private JSONObject doPatchDisableRequestToChecker(String check_name) throws ClientProtocolException, IOException, JSONException { + HttpClient httpClient = HttpClientBuilder.create().build(); + + url=getPreference("KR06.protocol")+"://"+getPreference("KR06.host")+":"+getPreference("KR06.port")+"/checks/"+ check_name + "/disable"; + + HttpPatch httpPatch = new HttpPatch(); + + httpPatch.setHeader("Accept", "application/json"); + + CloseableHttpResponse response = (CloseableHttpResponse) httpClient.execute(httpPatch); + if(response.getStatusLine().getStatusCode()==200) { + String content = EntityUtils.toString(response.getEntity()); + JSONObject responseAsJSON = new JSONObject(content); + return responseAsJSON; + } + return null; + + } + + private JSONObject doPatchConfigureRequestToChecker(String fileContent, String check_name, String secret) throws ClientProtocolException, IOException, JSONException { + HttpClient httpClient = HttpClientBuilder.create().build(); + + url=getPreference("KR06.protocol")+"://"+getPreference("KR06.host")+":"+getPreference("KR06.port")+"/checks/" + check_name + "/configure?config_file=" + fileContent + "&secret=" + secret; + + HttpPatch httpPatch = new HttpPatch(); + + StringEntity entity = new StringEntity(fileContent); + httpPatch.setEntity(entity); + + httpPatch.setHeader("Accept", "application/json"); + httpPatch.setHeader("Content-type","multipart/form-data"); + + CloseableHttpResponse response = (CloseableHttpResponse) httpClient.execute(httpPatch); + if(response.getStatusLine().getStatusCode()==200) { + String content = EntityUtils.toString(response.getEntity()); + JSONObject responseAsJSON = new JSONObject(content); + return responseAsJSON; + } + return null; + + } + */ + + private void interpretResult(JSONArray responseFromSchecker) { + + String response = ""; + + try { + + for (int i= 0; i < responseFromSchecker.length(); i++) { + JSONObject jsonobj = responseFromSchecker.getJSONObject(i); + String name = jsonobj.getString("name"); + if(jsonobj.getBoolean("enabled")) { + response += "- "+capitalize(jsonobj.getString("target_entity_type"))+" "+ name + " IS enabled. \n"; + } + else { + response += "- "+capitalize(jsonobj.getString("target_entity_type"))+" "+ name + " IS NOT enabled. \n"; + } + if(jsonobj.getBoolean("configured")) { + response += "- "+capitalize(jsonobj.getString("target_entity_type"))+" "+ name + " IS configured. \n"; + } + else { + response += "- "+capitalize(jsonobj.getString("target_entity_type"))+" "+ name + " IS NOT configured. \n"; + } + } + } catch (JSONException e) { + e.printStackTrace(); + } + + ToolCustomizationUtils.showInformationDialog("Security Inspector Configuration", response); + } + + + + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + + JSONArray responseFromChecker = null; + try { + responseFromChecker=showDialog(); + } catch (IOException | JSONException e2) { + e2.printStackTrace(); + } + + if(responseFromChecker==null) { + //ARROJAR ERROR + return null; + }else { + interpretResult(responseFromChecker); + } + return null; + } +} \ No newline at end of file diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR06And07/src/eu/piacere/ide/toolIntegration/kr06And07/commandHandlers/IaCSecurityScanCommandHandler.java b/Source Code/V2.1/PiacereIDEIntegration.KR06And07/src/eu/piacere/ide/toolIntegration/kr06And07/commandHandlers/IaCSecurityScanCommandHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..95052bc75c5836e06369cc2d35b8720da6ee4990 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR06And07/src/eu/piacere/ide/toolIntegration/kr06And07/commandHandlers/IaCSecurityScanCommandHandler.java @@ -0,0 +1,127 @@ +package eu.piacere.ide.toolIntegration.kr06And07.commandHandlers; + +import java.io.File; +import java.io.IOException; + +import org.apache.http.HttpEntity; +import org.apache.http.client.ClientProtocolException; +import org.apache.http.client.HttpClient; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.ContentType; +import org.apache.http.entity.mime.HttpMultipartMode; +import org.apache.http.entity.mime.MultipartEntityBuilder; +import org.apache.http.entity.mime.content.FileBody; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.util.EntityUtils; +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; +import org.eclipse.jface.dialogs.ProgressMonitorDialog; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.ui.handlers.HandlerUtil; +import org.json.JSONException; +import org.json.JSONObject; + +import eu.piacere.piacereTool.utils.FileUtils; +import eu.piacere.piacereTool.utils.ToolCustomizationUtils; + +public class IaCSecurityScanCommandHandler extends AbstractHandler { + + private String showDialog() throws ClientProtocolException, IOException, JSONException { + String checks=ToolCustomizationUtils.doDialogAskWithoutPostProcess("Perform Security Scan","Provide a comma-separated list of the Components/IaC you want to scan (leave blank for a whole scan)",""); + return checks; + } + + + private JSONObject doPostRequestTochecker(IPath fileuri, String checks) throws ClientProtocolException, IOException, JSONException { + HttpClient httpClient = HttpClientBuilder.create().build(); + + String url=ToolCustomizationUtils.getPreference(this.getClass(), "KR06_07.protocol")+"://"+ToolCustomizationUtils.getPreference(this.getClass(), "KR06_07.host")+":"+ToolCustomizationUtils.getPreference(this.getClass(), "KR06_07.port")+"/scan"; + + MultipartEntityBuilder builder = MultipartEntityBuilder.create(); + + builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); + if(!checks.equals("")) { + String aux = checks.replace(" ", ","); + while(aux.contains(",,")) { + aux = aux.replace(",,", ","); + + } + builder.addTextBody("checks", aux); + } + + builder.addPart("iac", new FileBody(new File(fileuri.toString()), ContentType.DEFAULT_BINARY)); + + HttpPost httpPost = new HttpPost(url); + HttpEntity entity = builder.build(); + httpPost.setEntity(entity); + + CloseableHttpResponse response = (CloseableHttpResponse) httpClient.execute(httpPost); + if(response.getStatusLine().getStatusCode()==200) { + String content = EntityUtils.toString(response.getEntity()); + JSONObject reponseResult = new JSONObject(content); + ToolCustomizationUtils.showInformationDialog("Model Scanned", "Your Model was Scanned successfully"); + return reponseResult; + } else { + String content = EntityUtils.toString(response.getEntity()); + ToolCustomizationUtils.showErrorDialog("Security Scan Error", content); + } + + return null; + } + + + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + ToolCustomizationUtils.saveWorkbench(); + ISelection selection = HandlerUtil.getCurrentSelection(event); + if (selection instanceof StructuredSelection) { + if(((StructuredSelection)selection).getFirstElement() instanceof IFile){ + IFile res = (IFile)((StructuredSelection) selection).getFirstElement(); + + IPath path = res.getLocation(); + + JSONObject responseFromScaner=null; + try { + + String checks=showDialog(); + if(checks!=null) { + responseFromScaner=doPostRequestTochecker(path, checks); + if(responseFromScaner!=null) { + saveFileInWorkspace(res.getParent(), path ,responseFromScaner.toString(4)); + } + } + } + catch (JSONException|IOException e) { + e.printStackTrace(); + } + } + } + return null; + } + + + private void saveFileInWorkspace(IContainer container, IPath path, String fileContent) { + + ProgressMonitorDialog pd=new ProgressMonitorDialog(ToolCustomizationUtils.getActiveShell()); + pd.open(); + try { + FileUtils.createFile(path.lastSegment().split(".tar")[0]+".scannresult_"+FileUtils.getTimestamp()+".json", container, fileContent, pd); + } catch (Exception e1) { + e1.printStackTrace(); + } + pd.close(); + try { + container.refreshLocal(IResource.DEPTH_INFINITE, null); + } catch (CoreException e) { + e.printStackTrace(); + } + } +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR06And07/src/eu/piacere/ide/toolIntegration/kr06And07/preferencePage/KR06And07PreferenceInitializer.java b/Source Code/V2.1/PiacereIDEIntegration.KR06And07/src/eu/piacere/ide/toolIntegration/kr06And07/preferencePage/KR06And07PreferenceInitializer.java new file mode 100644 index 0000000000000000000000000000000000000000..d3a7ea17c56892d9d716dc649c78f567c6f592f8 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR06And07/src/eu/piacere/ide/toolIntegration/kr06And07/preferencePage/KR06And07PreferenceInitializer.java @@ -0,0 +1,23 @@ +package eu.piacere.ide.toolIntegration.kr06And07.preferencePage; + +import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer; +import org.eclipse.core.runtime.preferences.ConfigurationScope; +import org.eclipse.ui.preferences.ScopedPreferenceStore; +import org.osgi.framework.FrameworkUtil; + +public class KR06And07PreferenceInitializer extends AbstractPreferenceInitializer { + + @Override + public void initializeDefaultPreferences() { + + ScopedPreferenceStore scopedPreferenceStore = new ScopedPreferenceStore(ConfigurationScope.INSTANCE,(FrameworkUtil.getBundle(KR06And07PreferenceInitializer.class)).getSymbolicName()); + scopedPreferenceStore.setDefault("KR06_07.host", "isr.ci.piacere.digital.tecnalia.dev"); + scopedPreferenceStore.setDefault("KR06_07.port", 443); + scopedPreferenceStore.setDefault("KR06_07.protocol", "https"); + scopedPreferenceStore.setDefault("KR06_07.enableStatus", "both"); + scopedPreferenceStore.setDefault("KR06_07.confStatus", "both"); + scopedPreferenceStore.setDefault("KR06_07.entityType", "both"); + + } + +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR06And07/src/eu/piacere/ide/toolIntegration/kr06And07/preferencePage/KR06And07PreferencePage.java b/Source Code/V2.1/PiacereIDEIntegration.KR06And07/src/eu/piacere/ide/toolIntegration/kr06And07/preferencePage/KR06And07PreferencePage.java new file mode 100644 index 0000000000000000000000000000000000000000..1501f019606e23a9691278672ccc51c7836c94b4 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR06And07/src/eu/piacere/ide/toolIntegration/kr06And07/preferencePage/KR06And07PreferencePage.java @@ -0,0 +1,40 @@ +package eu.piacere.ide.toolIntegration.kr06And07.preferencePage; + +import org.eclipse.core.runtime.preferences.ConfigurationScope; +import org.eclipse.jface.preference.FieldEditorPreferencePage; +import org.eclipse.jface.preference.IntegerFieldEditor; +import org.eclipse.jface.preference.RadioGroupFieldEditor; +import org.eclipse.jface.preference.StringFieldEditor; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchPreferencePage; +import org.eclipse.ui.preferences.ScopedPreferenceStore; +import org.osgi.framework.FrameworkUtil; + +public class KR06And07PreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage { + + public KR06And07PreferencePage() { + super(GRID); + } + + @Override + public void init(IWorkbench workbench) { + //WHICH SCOPE SHOULD I SELECT: https://wiki.eclipse.org/FAQ_What_is_a_preference_scope%3F + + setPreferenceStore(new ScopedPreferenceStore(ConfigurationScope.INSTANCE, (FrameworkUtil.getBundle(KR06And07PreferenceInitializer.class)).getSymbolicName())); + setDescription("These Are The IaC Security Inspector Preferences"); + + } + + @Override + protected void createFieldEditors() { + addField(new StringFieldEditor("KR06_07.host", "Endpoint Host:", getFieldEditorParent())); + addField(new IntegerFieldEditor("KR06_07.port", "Endpoint Port:", getFieldEditorParent())); + addField(new RadioGroupFieldEditor("KR06_07.protocol", "Protocol:", 1, new String[][] {{"HTTP","http"},{"HTTPS","https"}}, getFieldEditorParent())); + + addField(new RadioGroupFieldEditor("KR06_07.enableStatus", "Enabled:", 1, new String[][] {{"Both Enabled and Disabled Checks","both"}, {"Only Enabled Checks","true"}, {"Only Disabled Checks","false"}}, getFieldEditorParent())); + addField(new RadioGroupFieldEditor("KR06_07.confStatus", "Configured:", 1, new String[][] {{"Both Configured and Not Configured Checks","both"}, {"Only Configured Checks","true"}, {"Only Not Configured Checks","false"}}, getFieldEditorParent())); + addField(new RadioGroupFieldEditor("KR06_07.entityType", "Entity Type:", 1, new String[][] {{"Both IaC and Component Checks","both"}, {"Only IaC","IaC"}, {"Only Component","component"}}, getFieldEditorParent())); + + } + +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/.classpath b/Source Code/V2.1/PiacereIDEIntegration.KR08/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..81fe078c20c05db46a8281fbb1a72875a5322b45 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR08/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="src" path="src"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/.gitignore b/Source Code/V2.1/PiacereIDEIntegration.KR08/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..ae3c1726048cd06b9a143e0376ed46dd9b9a8d53 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR08/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/.project b/Source Code/V2.1/PiacereIDEIntegration.KR08/.project new file mode 100644 index 0000000000000000000000000000000000000000..9992dcf91ea39ba0923e8ec0765c648bffa25d1a --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR08/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>PiacereIDEIntegration.KR08</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/.settings/org.eclipse.jdt.core.prefs b/Source Code/V2.1/PiacereIDEIntegration.KR08/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000000000000000000000000000000000000..62ef3488cc0468ee9c2d4440dfbbbd5877cd0c28 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR08/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,9 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 +org.eclipse.jdt.core.compiler.compliance=17 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=17 diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/META-INF/MANIFEST.MF b/Source Code/V2.1/PiacereIDEIntegration.KR08/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..5f9ac6df7e573580a0e348acb5b281a38f89d198 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR08/META-INF/MANIFEST.MF @@ -0,0 +1,33 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: KR08 +Bundle-SymbolicName: PiacereIDEIntegration.KR08;singleton:=true +Bundle-Version: 1.0.0.qualifier +Automatic-Module-Name: PiacereIDEIntegration.KR08 +Require-Bundle: org.eclipse.ui, + org.eclipse.core.runtime, + org.apache.httpcomponents.httpcore +Import-Package: eu.piacere.doml.doml.commons, + eu.piacere.piacereTool.utils, + org.apache.commons.io, + org.apache.http.client;version="4.5.13", + org.apache.http.client.methods;version="4.5.13", + org.apache.http.impl.client;version="4.5.13", + org.eclipse.core.resources, + org.eclipse.core.runtime.preferences;version="3.4.0", + org.eclipse.emf.common.notify, + org.eclipse.emf.common.util, + org.eclipse.emf.ecore, + org.eclipse.emf.ecore.resource, + org.eclipse.emf.ecore.resource.impl, + org.eclipse.emf.ecore.util, + org.eclipse.emf.edit.provider.resource, + org.eclipse.emf.edit.ui.provider, + org.eclipse.ui.dialogs, + org.eclipse.ui.navigator, + org.eclipse.ui.views.properties, + org.json, + org.restlet, + org.restlet.data, + org.restlet.representation, + org.restlet.resource diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/Piacere/PiacereIcon_16x16.png b/Source Code/V2.1/PiacereIDEIntegration.KR08/Piacere/PiacereIcon_16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..444de54d6cfe2958fac1bbb89dd8619b4c537c47 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/Piacere/PiacereIcon_16x16.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/build.properties b/Source Code/V2.1/PiacereIDEIntegration.KR08/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..d3bb3b52a4b4e6918a27ed9328f514e80b23ccc0 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR08/build.properties @@ -0,0 +1,7 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + .,\ + Piacere/,\ + plugin.xml,\ + icons/ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/ComponentsModel.png b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/ComponentsModel.png new file mode 100644 index 0000000000000000000000000000000000000000..9ee76accc89ff76934fe746a3af1a853843e1209 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/ComponentsModel.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/FAdAIcon_24.png b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/FAdAIcon_24.png new file mode 100644 index 0000000000000000000000000000000000000000..f4259625230e2b11b98a14aa6b75b52edad25dd8 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/FAdAIcon_24.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/FadaModelRepositoriesView.png b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/FadaModelRepositoriesView.png new file mode 100644 index 0000000000000000000000000000000000000000..4db27dd10ecbbcf29062e8cc7b7b3c22bf72c5a3 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/FadaModelRepositoriesView.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/FadaModelRepositoriesView_old.png b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/FadaModelRepositoriesView_old.png new file mode 100644 index 0000000000000000000000000000000000000000..d4f2feef7f465a95b720ec2a24aa4429b5a64aab Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/FadaModelRepositoriesView_old.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/RepoConnected.png b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/RepoConnected.png new file mode 100644 index 0000000000000000000000000000000000000000..bd178d026ebd3aa22573ca74e985f306d64a59c1 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/RepoConnected.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/RepoDisconnected.png b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/RepoDisconnected.png new file mode 100644 index 0000000000000000000000000000000000000000..0c78354020ea586917e7ec598e357c739b031aa0 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/RepoDisconnected.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/SystemConfigurationModel.png b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/SystemConfigurationModel.png new file mode 100644 index 0000000000000000000000000000000000000000..d4561b60458f1b50d06bfd23d7f8308af08688ef Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/SystemConfigurationModel.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/addRepository.png b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/addRepository.png new file mode 100644 index 0000000000000000000000000000000000000000..fe03f37202ca955983c42397173fb12faca9d187 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/addRepository.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/bundle.png b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/bundle.png new file mode 100644 index 0000000000000000000000000000000000000000..1f41d9b1bfcf6db40272453364a446ad457ec50f Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/bundle.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/collapseAll.gif b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/collapseAll.gif new file mode 100644 index 0000000000000000000000000000000000000000..a2d80a9044f38833cb728a69c88294ce3fd007c7 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/collapseAll.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/deleteRepository.png b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/deleteRepository.png new file mode 100644 index 0000000000000000000000000000000000000000..807f97450c23a784814393f55a16ff75688ec15b Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/deleteRepository.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/download.png b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/download.png new file mode 100644 index 0000000000000000000000000000000000000000..236f4a77ea9131d404b0efb5e7bddd72098181f9 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/download.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/expandAll.gif b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/expandAll.gif new file mode 100644 index 0000000000000000000000000000000000000000..0205b29176d4e60307639b6ac80ebfc40be61c3b Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/expandAll.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/export.png b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/export.png new file mode 100644 index 0000000000000000000000000000000000000000..670042c62ce6b5cb200fa3807c57d18511275f39 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/export.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/elcl16/addrepositorylocation.gif b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/elcl16/addrepositorylocation.gif new file mode 100644 index 0000000000000000000000000000000000000000..6237766393fcc7a602d4695d151c3e546abeab6a Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/elcl16/addrepositorylocation.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/elcl16/copy.gif b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/elcl16/copy.gif new file mode 100644 index 0000000000000000000000000000000000000000..71d7c95aa8caa2e8f139d262a4e5e08aba2b88e5 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/elcl16/copy.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/elcl16/integrateconceptualfragment.gif b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/elcl16/integrateconceptualfragment.gif new file mode 100644 index 0000000000000000000000000000000000000000..07164754e5ca231666d9daf7fa4a9d12e378a52a Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/elcl16/integrateconceptualfragment.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/elcl16/integratetechnicalfragment.gif b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/elcl16/integratetechnicalfragment.gif new file mode 100644 index 0000000000000000000000000000000000000000..e7035189cd8dd45b6afba27b8cbccd75df5000e1 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/elcl16/integratetechnicalfragment.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/elcl16/paste.gif b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/elcl16/paste.gif new file mode 100644 index 0000000000000000000000000000000000000000..39dd4d9d38aa85f9c4c9ff652c453c555b850980 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/elcl16/paste.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/elcl16/search.gif b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/elcl16/search.gif new file mode 100644 index 0000000000000000000000000000000000000000..d540a01f4d9eeb9d2951f30cee165c7370e9fc6a Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/elcl16/search.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/CapabilityPattern.gif b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/CapabilityPattern.gif new file mode 100644 index 0000000000000000000000000000000000000000..15ffbb0795fbdc2a0add02f0a07bcea02f034ab4 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/CapabilityPattern.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/CapabilityPatterns.gif b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/CapabilityPatterns.gif new file mode 100644 index 0000000000000000000000000000000000000000..37147654e68f964a947278cb954e47633809c5c4 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/CapabilityPatterns.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/ConceptualFragment.gif b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/ConceptualFragment.gif new file mode 100644 index 0000000000000000000000000000000000000000..49ab538b6c432e7eb280793484e555df7ba2761d Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/ConceptualFragment.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/Delete.gif b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/Delete.gif new file mode 100644 index 0000000000000000000000000000000000000000..b6922ac11cf64e16a15cf2976cdaa1e40118abed Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/Delete.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/DeliveryProcess.gif b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/DeliveryProcess.gif new file mode 100644 index 0000000000000000000000000000000000000000..7b40362c2f54cebce43f5511342df015c4f52feb Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/DeliveryProcess.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/Description.gif b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/Description.gif new file mode 100644 index 0000000000000000000000000000000000000000..75f33c24fa441d09729e7adcbc78a4e55d84b443 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/Description.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/Descriptor.gif b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/Descriptor.gif new file mode 100644 index 0000000000000000000000000000000000000000..04032a915a0d9eace79a7aec3c573ca07eb7f4ac Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/Descriptor.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/Input.gif b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/Input.gif new file mode 100644 index 0000000000000000000000000000000000000000..d8d7d974fa596ee7a8d06b1d8b110ee7336850af Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/Input.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/Interface.gif b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/Interface.gif new file mode 100644 index 0000000000000000000000000000000000000000..7c7d39ef65b96d71b7b2e1e576c3677bbf7757f1 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/Interface.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/MethodPlugin.gif b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/MethodPlugin.gif new file mode 100644 index 0000000000000000000000000000000000000000..bb82c391ed462f0f01e988e00b07f8de262278e7 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/MethodPlugin.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/Name.gif b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/Name.gif new file mode 100644 index 0000000000000000000000000000000000000000..75f33c24fa441d09729e7adcbc78a4e55d84b443 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/Name.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/Objective.gif b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/Objective.gif new file mode 100644 index 0000000000000000000000000000000000000000..75f33c24fa441d09729e7adcbc78a4e55d84b443 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/Objective.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/Origin.gif b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/Origin.gif new file mode 100644 index 0000000000000000000000000000000000000000..c79bf78956a277d98343ab949be3efe08411f37f Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/Origin.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/Output.gif b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/Output.gif new file mode 100644 index 0000000000000000000000000000000000000000..b4fe2c84ecd2cb1ce8a4fb03a091ba76cad78916 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/Output.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/Package.gif b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/Package.gif new file mode 100644 index 0000000000000000000000000000000000000000..00a311efa25ac538073fb14e59efbb9a968a94e3 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/Package.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/Processes.gif b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/Processes.gif new file mode 100644 index 0000000000000000000000000000000000000000..08d8c2d5d1a7a70f5af53200633a7ba92aab1788 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/Processes.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/Repositories.gif b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/Repositories.gif new file mode 100644 index 0000000000000000000000000000000000000000..16eda8a78a63bfe5874e2e92a29f20a644241bba Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/Repositories.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/RoleSetCategory.gif b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/RoleSetCategory.gif new file mode 100644 index 0000000000000000000000000000000000000000..54a3f677a3efc25358bb4f637de6166d1425a486 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/RoleSetCategory.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/Task.gif b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/Task.gif new file mode 100644 index 0000000000000000000000000000000000000000..5c3b2b89a47caa2cbec35a9e9c3fe2efef4b2895 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/Task.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/Tasks.gif b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/Tasks.gif new file mode 100644 index 0000000000000000000000000000000000000000..638bd83009d2d7bf881dab9dbc07c176edd23060 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/Tasks.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/TechnicalFragment.gif b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/TechnicalFragment.gif new file mode 100644 index 0000000000000000000000000000000000000000..4f1b85a7801922060d6b5a968a76be30eb5326c9 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/TechnicalFragment.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/TechnicalFragmentError.gif b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/TechnicalFragmentError.gif new file mode 100644 index 0000000000000000000000000000000000000000..50b162dbdfc4a7f0eabd5d7119871e378efe6940 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/TechnicalFragmentError.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/TechnicalFragmentImported.gif b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/TechnicalFragmentImported.gif new file mode 100644 index 0000000000000000000000000000000000000000..3260ab2872cfcc35cc75b3501dd05bb23bd6f333 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/TechnicalFragmentImported.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/Type.gif b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/Type.gif new file mode 100644 index 0000000000000000000000000000000000000000..358cbcb83d800352e59d672771057f3156f27491 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/Type.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/WorkProduct.gif b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/WorkProduct.gif new file mode 100644 index 0000000000000000000000000000000000000000..1540f3d3c95605a8d7f641f8c93b098e356c40c3 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/WorkProduct.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/WorkProducts.gif b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/WorkProducts.gif new file mode 100644 index 0000000000000000000000000000000000000000..cf289263e15224bfd984e2145ddc6c6eb415f50c Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/WorkProducts.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/activity16.gif b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/activity16.gif new file mode 100644 index 0000000000000000000000000000000000000000..cf20deb439ab39a63162c93396060706051569b0 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/activity16.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/role.gif b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/role.gif new file mode 100644 index 0000000000000000000000000000000000000000..69ebdf2959ed859952751f3f377d581671045873 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/full/obj16/role.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/import.png b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/import.png new file mode 100644 index 0000000000000000000000000000000000000000..bb6ff06b7bcf18590deb1f93a519d5264b6a067f Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/import.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/jar.png b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/jar.png new file mode 100644 index 0000000000000000000000000000000000000000..660f8ea5131c2f9f59a5fa2491993cfa71a1ac57 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/jar.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/ref.png b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/ref.png new file mode 100644 index 0000000000000000000000000000000000000000..2839c60a42f8a79067981fd7b3a26f4b81a69231 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/ref.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/refresh.gif b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/refresh.gif new file mode 100644 index 0000000000000000000000000000000000000000..e3831471a6592da14f53b1e7c5a2f7d6a92d9937 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/refresh.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/repository.png b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/repository.png new file mode 100644 index 0000000000000000000000000000000000000000..92794f126f846474fafef14aac6fccb82faaf4f8 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR08/icons/repository.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/plugin.xml b/Source Code/V2.1/PiacereIDEIntegration.KR08/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..4562af168139bfe1d6d21ed78591496fcbf1f69d --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR08/plugin.xml @@ -0,0 +1,57 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.4"?> +<plugin> + <extension + point="org.eclipse.ui.preferencePages"> + <page + category="PiacereToolCustomization.preferences.page1" + class="eu.piacere.ide.toolIntegration.kr08.preferencePage.KR08PreferencePage" + id="PiacereIDEIntegration.KR08.preferences.page1" + name="Canary SandBox Environment Provisioner Preferences"> + </page> + </extension> + <extension + point="org.eclipse.core.runtime.preferences"> + <initializer + class="eu.piacere.ide.toolIntegration.kr08.preferencePage.KR08PreferenceInitializer"> + </initializer> + </extension> + <extension point = "org.eclipse.ui.views"> + <view + id = "PiacereIDEIntegration.KR08.CanarySandboxViewPart" + name = "Canary SandBox Environment" + category = "org.eclipse.ui" + class = "eu.piacere.ide.toolIntegration.kr08.viewPart.CanarySandboxViewPart" + icon = "Piacere/PiacereIcon_16x16.png" /> + </extension> + <extension + point="org.eclipse.ui.commands"> + <command + categoryId="eu.piacere.piacereModelsCommands.category.id" + defaultHandler="eu.piacere.ide.toolIntegration.kr08.commandHandlers.CreateCanarySandBoxDeploymentCommandHandler" + id="eu.piacere.piacereModelsCommands.createCanarySandBoxDeploymentCommand.id" + name="Create Canary SandBox Deployment"> + </command> + </extension> + <extension + point="org.eclipse.ui.menus"> + <menuContribution + allPopups="false" + locationURI="popup:eu.piacere.eclipsePopupMenu.id"> + <command + commandId="eu.piacere.piacereModelsCommands.createCanarySandBoxDeploymentCommand.id" + icon="Piacere/PiacereIcon_16x16.png" + label="Create Canary SandBox Deployment" + style="push" + tooltip="Create Canary SandBox Deployment"> + <visibleWhen + checkEnabled="false"> + <reference + definitionId="eu.piacere.piacereTool.propertyTesters.extensionPropertyTester.isJSON.id"> + </reference> + </visibleWhen> + </command> + </menuContribution> + </extension> + +</plugin> diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/commandHandlers/CreateCanarySandBoxDeploymentCommandHandler.java b/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/commandHandlers/CreateCanarySandBoxDeploymentCommandHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..727230978eeced93f43b1f674b9b101f94c331bc --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/commandHandlers/CreateCanarySandBoxDeploymentCommandHandler.java @@ -0,0 +1,67 @@ +package eu.piacere.ide.toolIntegration.kr08.commandHandlers; + +import java.io.OutputStream; +import java.net.HttpURLConnection; +import java.net.URL; +import java.net.URLConnection; +import java.nio.charset.StandardCharsets; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.resources.IFile; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.ui.handlers.HandlerUtil; + +import eu.piacere.ide.toolIntegration.kr08.viewPart.util.CSEDeploymentClientUtil; +import eu.piacere.piacereTool.utils.FileUtils; +import eu.piacere.piacereTool.utils.ToolCustomizationUtils; + +public class CreateCanarySandBoxDeploymentCommandHandler extends AbstractHandler{ + + private void doPostToCreateCSEDeployment(String filecontent) throws Exception { + String protocol=ToolCustomizationUtils.getPreference(this.getClass(), "KR08.protocol"); + String host=ToolCustomizationUtils.getPreference(this.getClass(), "KR08.host"); + String port=ToolCustomizationUtils.getPreference(this.getClass(), "KR08.port"); + URL url = new URL(protocol+"://"+host+":"+port+"/deployments/"); + URLConnection con = url.openConnection(); + HttpURLConnection http = (HttpURLConnection)con; + http.setRequestMethod("POST"); + http.setDoOutput(true); + byte[] out = filecontent.getBytes(StandardCharsets.UTF_8); + int length = out.length; + + http.setFixedLengthStreamingMode(length); + http.setRequestProperty("Content-Type", "application/json; charset=UTF-8"); + http.connect(); + try(OutputStream os = http.getOutputStream()) { + os.write(out); + } + } + + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + ToolCustomizationUtils.saveWorkbench(); + ISelection selection = HandlerUtil.getCurrentSelection(event); + if (selection instanceof StructuredSelection) { + if(((StructuredSelection)selection).getFirstElement() instanceof IFile){ + IFile res = (IFile)((StructuredSelection) selection).getFirstElement(); + + String fileContent=FileUtils.getIFileContents(res); + if(fileContent==null) { + return null; + } + try { + doPostToCreateCSEDeployment(fileContent); + CSEDeploymentClientUtil.getRuntimeControllerView().getCanarySandboxController().reloadContent(); + CSEDeploymentClientUtil.getRuntimeControllerView().refreshViewer(); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + return null; + } + +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/preferencePage/KR08PreferenceInitializer.java b/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/preferencePage/KR08PreferenceInitializer.java new file mode 100644 index 0000000000000000000000000000000000000000..fc9e443d023218d01342dc0e6933131d8ddf3539 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/preferencePage/KR08PreferenceInitializer.java @@ -0,0 +1,20 @@ +package eu.piacere.ide.toolIntegration.kr08.preferencePage; + +import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer; +import org.eclipse.core.runtime.preferences.ConfigurationScope; +import org.eclipse.ui.preferences.ScopedPreferenceStore; +import org.osgi.framework.FrameworkUtil; + +public class KR08PreferenceInitializer extends AbstractPreferenceInitializer { + + @Override + public void initializeDefaultPreferences() { + + ScopedPreferenceStore scopedPreferenceStore = new ScopedPreferenceStore(ConfigurationScope.INSTANCE,(FrameworkUtil.getBundle(KR08PreferenceInitializer.class)).getSymbolicName()); + scopedPreferenceStore.setDefault("KR08.host", "csep.ci.piacere.digital.tecnalia.dev"); + scopedPreferenceStore.setDefault("KR08.port", 443); + scopedPreferenceStore.setDefault("KR08.protocol", "https"); + + } + +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/preferencePage/KR08PreferencePage.java b/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/preferencePage/KR08PreferencePage.java new file mode 100644 index 0000000000000000000000000000000000000000..328434b33c03ed6e502b1719692a7aac520c07a2 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/preferencePage/KR08PreferencePage.java @@ -0,0 +1,36 @@ +package eu.piacere.ide.toolIntegration.kr08.preferencePage; + +import org.eclipse.core.runtime.preferences.ConfigurationScope; +import org.eclipse.jface.preference.FieldEditorPreferencePage; +import org.eclipse.jface.preference.IntegerFieldEditor; +import org.eclipse.jface.preference.RadioGroupFieldEditor; +import org.eclipse.jface.preference.StringFieldEditor; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchPreferencePage; +import org.eclipse.ui.preferences.ScopedPreferenceStore; +import org.osgi.framework.FrameworkUtil; + +public class KR08PreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage { + + public KR08PreferencePage() { + super(GRID); + } + + @Override + public void init(IWorkbench workbench) { + //WHICH SCOPE SHOULD I SELECT: https://wiki.eclipse.org/FAQ_What_is_a_preference_scope%3F + + setPreferenceStore(new ScopedPreferenceStore(ConfigurationScope.INSTANCE, (FrameworkUtil.getBundle(KR08PreferenceInitializer.class)).getSymbolicName())); + setDescription("These are the Canary SandBox Environment Provisioner preferences"); + + } + + @Override + protected void createFieldEditors() { + addField(new StringFieldEditor("KR08.host", "Endpoint Host", getFieldEditorParent())); + addField(new IntegerFieldEditor("KR08.port", "Endpoint Port", getFieldEditorParent())); + addField(new RadioGroupFieldEditor("KR08.protocol", "Protocol", 1, new String[][] {{"HTTP","http"},{"HTTPS","https"}}, getFieldEditorParent())); + + } + +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/CanarySandboxViewPart.java b/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/CanarySandboxViewPart.java new file mode 100644 index 0000000000000000000000000000000000000000..2e71295cb623e99e7f82cbe354e56ec36d1124f8 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/CanarySandboxViewPart.java @@ -0,0 +1,198 @@ +package eu.piacere.ide.toolIntegration.kr08.viewPart; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; +import org.eclipse.jface.resource.FontDescriptor; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.jface.resource.JFaceResources; +import org.eclipse.jface.resource.LocalResourceManager; +import org.eclipse.jface.resource.ResourceManager; +import org.eclipse.jface.viewers.IBaseLabelProvider; +import org.eclipse.jface.viewers.IContentProvider; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Menu; +import org.eclipse.ui.IMemento; +import org.eclipse.ui.IViewSite; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.actions.ActionGroup; +import org.eclipse.ui.navigator.CommonNavigator; +import org.eclipse.ui.navigator.CommonViewer; +import org.eclipse.ui.plugin.AbstractUIPlugin; + +import eu.piacere.ide.toolIntegration.kr08.viewPart.actions.CanarySandboxViewActionGroup; +import eu.piacere.ide.toolIntegration.kr08.viewPart.actions.DeleteDeploymentAction; +import eu.piacere.ide.toolIntegration.kr08.viewPart.actions.DownloadDeploymentInfoAction; +import eu.piacere.ide.toolIntegration.kr08.viewPart.actions.LoadDeploymentInfoAction; +import eu.piacere.ide.toolIntegration.kr08.viewPart.actions.RedeployDeploymentAction; +import eu.piacere.ide.toolIntegration.kr08.viewPart.actions.RefreshAction; +import eu.piacere.ide.toolIntegration.kr08.viewPart.providers.CSEContentProvider; +import eu.piacere.ide.toolIntegration.kr08.viewPart.providers.CSELabelProvider; +import eu.piacere.ide.toolIntegration.kr08.viewPart.util.CSEDeployment; +import eu.piacere.ide.toolIntegration.kr08.viewPart.util.CanarySandboxEnvironmentProvisioner; + + +public class CanarySandboxViewPart extends CommonNavigator implements IMenuListener { + + private static CanarySandboxEnvironmentProvisioner canarySandboxEnvironmentProvisioner = new CanarySandboxEnvironmentProvisioner(); + + public CanarySandboxEnvironmentProvisioner getCanarySandboxController() { + return canarySandboxEnvironmentProvisioner; + } + @Override + public void createPartControl(Composite parent) { + super.createPartControl(parent); + + if (getCommonViewer() != null) { + + getCommonViewer().setContentProvider((IContentProvider)new CSEContentProvider((AdapterFactory)new ResourceItemProviderAdapterFactory())); + getCommonViewer().setInput(canarySandboxEnvironmentProvisioner); + getCommonViewer().setLabelProvider((IBaseLabelProvider)new CSELabelProvider()); + ResourceManager resourceManager = new LocalResourceManager(JFaceResources.getResources(), parent); + getCommonViewer().getTree().setFont(resourceManager.createFont(FontDescriptor.createFrom(getCommonViewer().getTree().getFont()).setHeight(14))); + getCommonViewer().setSorter(null); + getCommonViewer().addSelectionChangedListener(new SelectionChangedListener()); + createContextMenuForViewer(getCommonViewer()); + refreshViewer(); + } + } + + public void init(IViewSite aSite, IMemento aMemento) throws PartInitException { + super.init(aSite, aMemento); + + if (aMemento != null && this.getCanarySandboxController().getDeployments().size() == 0) { + /*int i = 0; + while (aMemento.getString("host" + i) != null) { + RepositoryLocation rp = new RepositoryLocation(); + rp.setHost(aMemento.getString("host" + i)); + rp.setRepositoryPath(aMemento.getString("repositorypath" + i)); + rp.setName(aMemento.getString("name" + i)); + if(DeploymentClientUtil.testConnection(rp, false)) { + rp.reloadContent(); + } + locations.add(rp); + i++; + } */ + } + } + + protected CommonViewer createCommonViewerObject(Composite aParent) { + return new CommonViewer(getViewSite().getId(), aParent, 768); + } + + private class SelectionChangedListener implements ISelectionChangedListener { + @SuppressWarnings("unused") + public void selectionChanged(SelectionChangedEvent event) { + if (event.getSelection() instanceof StructuredSelection) { + Object selected = ((StructuredSelection)event.getSelection()).getFirstElement(); + } + } + } + + protected ActionGroup createCommonActionGroup() { + return (ActionGroup)new CanarySandboxViewActionGroup(getCommonViewer()); + } + + public void refreshViewer() { + CommonViewer viewer = getCommonViewer(); + if (viewer != null && !viewer.getTree().isDisposed()) + viewer.refresh(); + } + + public void saveState(IMemento aMemento) { + super.saveState(aMemento);/* + int size = locations.size(); + for (int i = 0; i < size; i++) { + RepositoryLocation rp = locations.get(i); + aMemento.putString("host" + i, rp.getHost()); + aMemento.putString("repositorypath" + i, rp.getRepositoryPath()); + aMemento.putString("name" + i, rp.getName()); + } */ + } + + private void createContextMenuForViewer(CommonViewer viewer) { + MenuManager contextMenu = new MenuManager("Popup", getImageDescriptor("icons/FadaModelRepositoriesView.png"), null); + contextMenu.setRemoveAllWhenShown(true); + contextMenu.addMenuListener(this); + + Menu menu = contextMenu.createContextMenu(viewer.getControl()); + viewer.getControl().setMenu(menu); + this.getSite().registerContextMenu(contextMenu, (ISelectionProvider)viewer); + } + + public void menuAboutToShow(IMenuManager manager) { + ISelection selection = getCommonViewer().getSelection(); + if (selection instanceof StructuredSelection) { + StructuredSelection sel = (StructuredSelection)selection; + Object selectedObject = sel.getFirstElement(); + if (selectedObject instanceof CSEDeployment) { + + + RefreshAction ra = new RefreshAction(); + ra.setText("Refresh All"); + ra.setImageDescriptor(getImageDescriptor("icons/refresh.gif")); + + LoadDeploymentInfoAction ldia = new LoadDeploymentInfoAction(); + ldia.setText("Load Info"); + ldia.setImageDescriptor(getImageDescriptor("icons/repository.png")); + + DownloadDeploymentInfoAction ddia = new DownloadDeploymentInfoAction(); + ddia.setText("Download Info"); + ddia.setImageDescriptor(getImageDescriptor("icons/repository.png")); + + /*GetDeploymentInfoAction gdia = new GetDeploymentInfoAction(); + gdia.setText("Get Deployment Details"); + gdia.setImageDescriptor(getImageDescriptor("icons/repository.png")); + + OpenPerformanceMonitoringAction opma = new OpenPerformanceMonitoringAction(); + opma.setText("Open Performance Monitor"); + opma.setImageDescriptor(getImageDescriptor("icons/ref.png")); +*/ + RedeployDeploymentAction rdda = new RedeployDeploymentAction (); + rdda.setText("Redeploy Deployment"); + rdda.setImageDescriptor(getImageDescriptor("icons/refresh.gif")); + + DeleteDeploymentAction dda = new DeleteDeploymentAction (); + dda.setText("Delete Deployment"); + dda.setImageDescriptor(getImageDescriptor("icons/deleteRepository.png")); + + + + + manager.add((IAction)ra); + manager.add(new Separator("additions")); + manager.add((IAction)ldia); + manager.add((IAction)ddia); + manager.add(new Separator("additions")); + manager.add((IAction)rdda); + /*manager.add((IAction)opma);*/ + manager.add(new Separator("additions")); + manager.add((IAction)dda); + } + /*if (selectedObject instanceof AppComponentsModelVersion || selectedObject instanceof AppSystemConfigurationModelVersion) { + DownloadModelAction dma = new DownloadModelAction(); + dma.setText("Download Model"); + dma.setImageDescriptor(getImageDescriptor("icons/download.png")); + manager.add((IAction)dma); + + DeleteModelAction dma2 = new DeleteModelAction(); + dma2.setText("Delete Model from Repository"); + dma2.setImageDescriptor(getImageDescriptor("icons/deleteRepository.png")); + manager.add((IAction)dma2); + }*/ + } + } + + protected final ImageDescriptor getImageDescriptor(String relativePath) { + return AbstractUIPlugin.imageDescriptorFromPlugin("PiacereIDEIntegration.KR08", relativePath); + } +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/CanarySandboxViewActionGroup.java b/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/CanarySandboxViewActionGroup.java new file mode 100644 index 0000000000000000000000000000000000000000..f4905c20f12e671e7e43e166b7e30e8bed3fc55e --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/CanarySandboxViewActionGroup.java @@ -0,0 +1,53 @@ +package eu.piacere.ide.toolIntegration.kr08.viewPart.actions; + +import org.eclipse.jface.action.Separator; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.ui.IActionBars; +import org.eclipse.ui.actions.ActionGroup; +import org.eclipse.ui.navigator.CommonViewer; +import org.eclipse.ui.plugin.AbstractUIPlugin; + + +public class CanarySandboxViewActionGroup extends ActionGroup +{ + private final CommonViewer commonViewer; + + public CanarySandboxViewActionGroup(CommonViewer viewer) { + this.commonViewer = viewer; + } + + protected final ImageDescriptor getImageDescriptor(String relativePath) { + return AbstractUIPlugin.imageDescriptorFromPlugin("PiacereIDEIntegration.KR10_KR11_KR12", relativePath); + } + + public void fillActionBars(IActionBars actionBars) { + + RefreshAction ra = new RefreshAction(); + ra.setText("Refresh All"); + ra.setImageDescriptor(getImageDescriptor("icons/refresh.gif")); + + /*CreateDeploymentAction cda = new CreateDeploymentAction(); + cda.setText("Create Deployment"); + cda.setImageDescriptor(getImageDescriptor("icons/addRepository.png")); +*/ + CollapseAllAction ca = new CollapseAllAction(this.commonViewer); + ca.setText("Collapse All"); + ca.setImageDescriptor(getImageDescriptor("icons/collapseAll.gif")); + + ExpandAllAction ea = new ExpandAllAction(this.commonViewer); + ea.setText("Expand All"); + ea.setImageDescriptor(getImageDescriptor("icons/expandAll.gif")); + + actionBars.getMenuManager().add(ra); + //actionBars.getMenuManager().add(new Separator("additions")); + //actionBars.getMenuManager().add(cda); + actionBars.getMenuManager().add(new Separator("additions")); + actionBars.getMenuManager().add(ca); + actionBars.getMenuManager().add(ea); + } +} + + + + + diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/CollapseAllAction.java b/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/CollapseAllAction.java new file mode 100644 index 0000000000000000000000000000000000000000..98ff044ee02492c02f4fe00b949a3ee6051518d3 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/CollapseAllAction.java @@ -0,0 +1,24 @@ +package eu.piacere.ide.toolIntegration.kr08.viewPart.actions; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.ui.IWorkbenchCommandConstants; +import org.eclipse.ui.navigator.CommonViewer; + +public class CollapseAllAction extends Action implements IAction +{ + private final CommonViewer commonViewer; + + public CollapseAllAction(CommonViewer aViewer) { + super("Collapse all"); + setToolTipText("Collapse all"); + setActionDefinitionId(IWorkbenchCommandConstants.NAVIGATE_COLLAPSE_ALL); + this.commonViewer = aViewer; + } + + public void run() { + if (this.commonViewer != null) + this.commonViewer.collapseAll(); + } +} + diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/DeleteDeploymentAction.java b/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/DeleteDeploymentAction.java new file mode 100644 index 0000000000000000000000000000000000000000..a13df3631f7bbad24b6293d8758e60d84179b3b6 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/DeleteDeploymentAction.java @@ -0,0 +1,47 @@ +package eu.piacere.ide.toolIntegration.kr08.viewPart.actions; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.restlet.data.Protocol; + +import eu.piacere.ide.toolIntegration.kr08.viewPart.CanarySandboxViewPart; +import eu.piacere.ide.toolIntegration.kr08.viewPart.util.CSEDeployment; +import eu.piacere.ide.toolIntegration.kr08.viewPart.util.CSEDeploymentClientUtil; +import eu.piacere.piacereTool.utils.ToolCustomizationUtils; + + +public class DeleteDeploymentAction extends Action implements IAction +{ + + public void run() { + CanarySandboxViewPart repositoriesView = CSEDeploymentClientUtil.getRuntimeControllerView(); + ISelection selection = repositoriesView.getCommonViewer().getSelection(); + if (selection instanceof StructuredSelection) { + StructuredSelection sel = (StructuredSelection)selection; + Object selectedObject = sel.getFirstElement(); + if (selectedObject instanceof CSEDeployment) { + CSEDeployment deployment = (CSEDeployment)selectedObject; + + String protocol = ToolCustomizationUtils.getPreference(this.getClass(), "KR08.protocol"); + String host = ToolCustomizationUtils.getPreference(this.getClass(), "KR08.host"); + String port = ToolCustomizationUtils.getPreference(this.getClass(), "KR08.port"); + Protocol p = null; + if(protocol.equals("http")) { + p=Protocol.HTTP; + } + else if(protocol.equals("https")) { + p=Protocol.HTTPS; + } + if(CSEDeploymentClientUtil.deleteDeployment(protocol+"://"+host+":"+port+"/", p, deployment)){ + CanarySandboxViewPart csView = CSEDeploymentClientUtil.getRuntimeControllerView(); + if (csView != null) { + csView.getCanarySandboxController().reloadContent(); + csView.refreshViewer(); + } + } + } + } + } +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/DownloadDeploymentInfoAction.java b/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/DownloadDeploymentInfoAction.java new file mode 100644 index 0000000000000000000000000000000000000000..b8f845f72f01667e73c1a39e257aadb321cbd7a1 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/DownloadDeploymentInfoAction.java @@ -0,0 +1,104 @@ +package eu.piacere.ide.toolIntegration.kr08.viewPart.actions; + +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IWorkspace; +import org.eclipse.core.resources.IWorkspaceRoot; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.Path; +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.dialogs.ProgressMonitorDialog; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.ui.dialogs.ContainerSelectionDialog; +import org.json.JSONException; +import org.json.JSONObject; +import org.restlet.data.Protocol; + +import eu.piacere.ide.toolIntegration.kr08.viewPart.CanarySandboxViewPart; +import eu.piacere.ide.toolIntegration.kr08.viewPart.util.CSEDeployment; +import eu.piacere.ide.toolIntegration.kr08.viewPart.util.CSEDeploymentClientUtil; +import eu.piacere.piacereTool.utils.FileUtils; +import eu.piacere.piacereTool.utils.ToolCustomizationUtils; + + +public class DownloadDeploymentInfoAction extends Action implements IAction +{ + + public void run() { + CanarySandboxViewPart repositoriesView = CSEDeploymentClientUtil.getRuntimeControllerView(); + ISelection selection = repositoriesView.getCommonViewer().getSelection(); + if (selection instanceof StructuredSelection) { + StructuredSelection sel = (StructuredSelection)selection; + Object selectedObject = sel.getFirstElement(); + if (selectedObject instanceof CSEDeployment) { + CSEDeployment deployment = (CSEDeployment)selectedObject; + + String protocol = ToolCustomizationUtils.getPreference(this.getClass(), "KR08.protocol"); + String host = ToolCustomizationUtils.getPreference(this.getClass(), "KR08.host"); + String port = ToolCustomizationUtils.getPreference(this.getClass(), "KR08.port"); + Protocol p = null; + if(protocol.equals("http")) { + p=Protocol.HTTP; + } + else if(protocol.equals("https")) { + p=Protocol.HTTPS; + } + JSONObject deploymentInfo=CSEDeploymentClientUtil.retrieveDeploymentGet(protocol+"://"+host+":"+port+"/", p, deployment); + if(ToolCustomizationUtils.showQuestionDialog("Save Result", "Do you want to save the validation result on workspace?")) { + try { + String destinationPath=handleBrowse(); + if(destinationPath!=null) { + IContainer cont=ResourcesPlugin.getWorkspace().getRoot().getContainerForLocation(new Path(ResourcesPlugin.getWorkspace().getRoot().getLocation().toString()+destinationPath)); + saveFileInWorkspace(cont, deploymentInfo.toString(4), deployment.getDeploymentName()+"_DeploymentInfo.json"); + } + } catch (JSONException e) { + e.printStackTrace(); + } + } + } + } + } + + + private void saveFileInWorkspace(IContainer container, String fileContent, String defaultFileName) { + + + String domlModelName=ToolCustomizationUtils.doDialogAsk("Deployment Info", "Enter the Deployment Info File Name", defaultFileName); + + ProgressMonitorDialog pd=new ProgressMonitorDialog(ToolCustomizationUtils.getActiveShell()); + pd.open(); + try { + FileUtils.createFile(domlModelName , container, fileContent, pd); + } catch (Exception e1) { + e1.printStackTrace(); + } + pd.close(); + try { + container.refreshLocal(IResource.DEPTH_INFINITE, null); + } catch (CoreException e) { + e.printStackTrace(); + } + } + + public String handleBrowse() { + IWorkspace _workspace = ResourcesPlugin.getWorkspace(); + IWorkspaceRoot _root = _workspace.getRoot(); + ContainerSelectionDialog _containerSelectionDialog = new ContainerSelectionDialog(ToolCustomizationUtils.getActiveShell(), _root, false, "Select new file container"); + final ContainerSelectionDialog dialog = _containerSelectionDialog; + int _open = dialog.open(); + if (_open == ContainerSelectionDialog.OK) { + final Object[] result = dialog.getResult(); + int _length = result.length; + if (_length == 1) { + Object _get = result[0]; + String _string = ((Path) _get).toString(); + return _string; + } + } + return null; + } +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/ExpandAllAction.java b/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/ExpandAllAction.java new file mode 100644 index 0000000000000000000000000000000000000000..b3d50050b322558542a08a76cab72dc56800df96 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/ExpandAllAction.java @@ -0,0 +1,25 @@ +package eu.piacere.ide.toolIntegration.kr08.viewPart.actions; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.ui.IWorkbenchCommandConstants; +import org.eclipse.ui.navigator.CommonViewer; + +public class ExpandAllAction extends Action implements IAction +{ + private final CommonViewer commonViewer; + + public ExpandAllAction(CommonViewer aViewer) { + super("Expand All"); + setToolTipText("Expand All"); + setActionDefinitionId(IWorkbenchCommandConstants.NAVIGATE_EXPAND_ALL); + + this.commonViewer = aViewer; + } + + public void run() { + if (this.commonViewer != null) + this.commonViewer.expandAll(); + } +} + diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/LoadDeploymentInfoAction.java b/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/LoadDeploymentInfoAction.java new file mode 100644 index 0000000000000000000000000000000000000000..3e04fcba0de2d219821528d26f9447b03c79b0c4 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/LoadDeploymentInfoAction.java @@ -0,0 +1,48 @@ +package eu.piacere.ide.toolIntegration.kr08.viewPart.actions; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.json.JSONException; +import org.json.JSONObject; +import org.restlet.data.Protocol; + +import eu.piacere.ide.toolIntegration.kr08.viewPart.CanarySandboxViewPart; +import eu.piacere.ide.toolIntegration.kr08.viewPart.util.CSEDeployment; +import eu.piacere.ide.toolIntegration.kr08.viewPart.util.CSEDeploymentClientUtil; +import eu.piacere.piacereTool.utils.ToolCustomizationUtils; + + +public class LoadDeploymentInfoAction extends Action implements IAction +{ + + public void run() { + CanarySandboxViewPart repositoriesView = CSEDeploymentClientUtil.getRuntimeControllerView(); + ISelection selection = repositoriesView.getCommonViewer().getSelection(); + if (selection instanceof StructuredSelection) { + StructuredSelection sel = (StructuredSelection)selection; + Object selectedObject = sel.getFirstElement(); + if (selectedObject instanceof CSEDeployment) { + CSEDeployment deployment = (CSEDeployment)selectedObject; + + String protocol = ToolCustomizationUtils.getPreference(this.getClass(), "KR08.protocol"); + String host = ToolCustomizationUtils.getPreference(this.getClass(), "KR08.host"); + String port = ToolCustomizationUtils.getPreference(this.getClass(), "KR08.port"); + Protocol p = null; + if(protocol.equals("http")) { + p=Protocol.HTTP; + } + else if(protocol.equals("https")) { + p=Protocol.HTTPS; + } + JSONObject res=CSEDeploymentClientUtil.retrieveDeploymentGet(protocol+"://"+host+":"+port+"/", p, deployment); + try { + ToolCustomizationUtils.showInformationDialog(deployment.getDeploymentName()+" INFO", res.toString(4)); + } catch (JSONException e) { + e.printStackTrace(); + } + } + } + } +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/RedeployDeploymentAction.java b/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/RedeployDeploymentAction.java new file mode 100644 index 0000000000000000000000000000000000000000..39b7124f53b0aea956b9f3bda95ac170b7c441f0 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/RedeployDeploymentAction.java @@ -0,0 +1,47 @@ +package eu.piacere.ide.toolIntegration.kr08.viewPart.actions; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.restlet.data.Protocol; + +import eu.piacere.ide.toolIntegration.kr08.viewPart.CanarySandboxViewPart; +import eu.piacere.ide.toolIntegration.kr08.viewPart.util.CSEDeployment; +import eu.piacere.ide.toolIntegration.kr08.viewPart.util.CSEDeploymentClientUtil; +import eu.piacere.piacereTool.utils.ToolCustomizationUtils; + + +public class RedeployDeploymentAction extends Action implements IAction +{ + + public void run() { + CanarySandboxViewPart repositoriesView = CSEDeploymentClientUtil.getRuntimeControllerView(); + ISelection selection = repositoriesView.getCommonViewer().getSelection(); + if (selection instanceof StructuredSelection) { + StructuredSelection sel = (StructuredSelection)selection; + Object selectedObject = sel.getFirstElement(); + if (selectedObject instanceof CSEDeployment) { + CSEDeployment deployment = (CSEDeployment)selectedObject; + + String protocol = ToolCustomizationUtils.getPreference(this.getClass(), "KR08.protocol"); + String host = ToolCustomizationUtils.getPreference(this.getClass(), "KR08.host"); + String port = ToolCustomizationUtils.getPreference(this.getClass(), "KR08.port"); + Protocol p = null; + if(protocol.equals("http")) { + p=Protocol.HTTP; + } + else if(protocol.equals("https")) { + p=Protocol.HTTPS; + } + if(CSEDeploymentClientUtil.redeployDeployment(protocol+"://"+host+":"+port+"/", p, deployment)){ + CanarySandboxViewPart csView = CSEDeploymentClientUtil.getRuntimeControllerView(); + if (csView != null) { + csView.getCanarySandboxController().reloadContent(); + csView.refreshViewer(); + } + } + } + } + } +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/RefreshAction.java b/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/RefreshAction.java new file mode 100644 index 0000000000000000000000000000000000000000..98904b179246c3574c75d0996ecb32799083eabe --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/actions/RefreshAction.java @@ -0,0 +1,18 @@ +package eu.piacere.ide.toolIntegration.kr08.viewPart.actions; + +import org.eclipse.jface.action.Action; + +import eu.piacere.ide.toolIntegration.kr08.viewPart.CanarySandboxViewPart; +import eu.piacere.ide.toolIntegration.kr08.viewPart.util.CSEDeploymentClientUtil; + +public class RefreshAction extends Action +{ + public void run() { + super.run(); + CanarySandboxViewPart csView = CSEDeploymentClientUtil.getRuntimeControllerView(); + if (csView != null) { + csView.getCanarySandboxController().reloadContent(); + csView.refreshViewer(); + } + } +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/providers/CSEContentProvider.java b/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/providers/CSEContentProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..ad670c58d7927ee6e5d07804cb55599591ac2b7f --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/providers/CSEContentProvider.java @@ -0,0 +1,60 @@ +package eu.piacere.ide.toolIntegration.kr08.viewPart.providers; + +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider; + +import eu.piacere.ide.toolIntegration.kr08.viewPart.util.CSEDeployment; +import eu.piacere.ide.toolIntegration.kr08.viewPart.util.CanarySandboxEnvironmentProvisioner; + +public class CSEContentProvider extends AdapterFactoryContentProvider +{ + public CSEContentProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + + } + + @SuppressWarnings("unchecked") + public Object[] getElements(Object object) { + if (object instanceof List) { + List<CanarySandboxEnvironmentProvisioner> elements = (List<CanarySandboxEnvironmentProvisioner>)object; + return elements.toArray(); + } + if (object instanceof CanarySandboxEnvironmentProvisioner) { + return ((CanarySandboxEnvironmentProvisioner)object).getDeployments().values().toArray(); + + } + + return super.getElements(object); + } + + + + public boolean hasChildren(Object object) { + if (object instanceof CanarySandboxEnvironmentProvisioner) { + return ((CanarySandboxEnvironmentProvisioner)object).getDeployments().size()>0; + } + else if(object instanceof CSEDeployment) { + return false; + } + return super.hasChildren(object); + } + + + + public Object[] getChildren(Object object) { + if (object instanceof CanarySandboxEnvironmentProvisioner) { + CanarySandboxEnvironmentProvisioner csep = (CanarySandboxEnvironmentProvisioner)object; + ArrayList<Object> assets = new ArrayList<Object>(); + for(CSEDeployment dep : csep.getDeployments().values()) { + assets.add(dep); + } + return assets.toArray(); + } + return null; + } + +} + diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/providers/CSELabelProvider.java b/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/providers/CSELabelProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..0221834c739a3ec466d05fc6ee7f37925fa0693b --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/providers/CSELabelProvider.java @@ -0,0 +1,94 @@ +package eu.piacere.ide.toolIntegration.kr08.viewPart.providers; + +import java.io.IOException; + +import org.eclipse.core.runtime.FileLocator; +import org.eclipse.core.runtime.Platform; +import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.swt.graphics.Device; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.widgets.Display; + +import eu.piacere.ide.toolIntegration.kr08.viewPart.util.CSEDeployment; +import eu.piacere.ide.toolIntegration.kr08.viewPart.util.CanarySandboxEnvironmentProvisioner; + +public class CSELabelProvider extends LabelProvider +{ + + public String getText(Object element) { + if (element instanceof CanarySandboxEnvironmentProvisioner) { + return getCanarySandboxEnvironmentProvisionerLabel((CanarySandboxEnvironmentProvisioner)element); + } + else if(element instanceof CSEDeployment) { + return "Deployment ID: "+((CSEDeployment)element).getDeploymentName(); + } + return super.getText(element); + } + + public Image getImage(Object element) { + try { + String imagePath = FileLocator.toFileURL(Platform.getBundle("PiacereIDEIntegration.KR08").getResource("icons/")).getPath(); + /*if (element instanceof PiacereRuntimeController) { + Image image = null; + if(((PiacereRuntimeController)element).isConnected()) { + image = new Image((Device)Display.getCurrent(), String.valueOf(imagePath) + "RepoConnected.png"); + } + else { + image = new Image((Device)Display.getCurrent(), String.valueOf(imagePath) + "RepoDisconnected.png"); + } + return image; + } + else */ + if (element instanceof CSEDeployment) { + Image image = new Image((Device)Display.getCurrent(), String.valueOf(imagePath) + "repository.png"); + return image; + } + /*else if (element instanceof AppComponentsModel) { + Image image = new Image((Device)Display.getCurrent(), String.valueOf(imagePath) + "ComponentsModel.png"); + return image; + } + else if (element instanceof AppSystemConfigurationModel) { + Image image = new Image((Device)Display.getCurrent(), String.valueOf(imagePath) + "SystemConfigurationModel.png"); + return image; + } + + else if (element instanceof AppComponentsModelVersion) { + Image image = new Image((Device)Display.getCurrent(), String.valueOf(imagePath) + "bundle.png"); + return image; + } + else if (element instanceof AppSystemConfigurationModelVersion) { + Image image = new Image((Device)Display.getCurrent(), String.valueOf(imagePath) + "bundle.png"); + return image; + } + + else if (element instanceof AppComponentsModelReference) { + Image image = new Image((Device)Display.getCurrent(), String.valueOf(imagePath) + "ref.png"); + return image; + } */ + } catch (IOException iOException) { + return null; + } + return super.getImage(element); + } + + + private String getCanarySandboxEnvironmentProvisionerLabel(CanarySandboxEnvironmentProvisioner cse) { + String res=cse.getCanarySandboxEnvironmentProvisionerURL(); + + /*if(location.getName()!=null && location.getName()!="") { + res = location.getName()+": "; + } + + String host = (location.getHost() == null) ? "" : location.getHost(); + String repositoryPath = (location.getRepositoryPath() == null) ? "" : location.getRepositoryPath(); + + return res+host + "/" + repositoryPath;*/ + return res; + } + +} + + + + + diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/util/CSEDeployment.java b/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/util/CSEDeployment.java new file mode 100644 index 0000000000000000000000000000000000000000..cd98a545f952b1578582d90f354a0f9bb532264c --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/util/CSEDeployment.java @@ -0,0 +1,20 @@ +package eu.piacere.ide.toolIntegration.kr08.viewPart.util; + +public class CSEDeployment { + private String deploymentName; + + + public CSEDeployment(String name) { + this.setDeploymentName(name); + } + + + public String getDeploymentName() { + return deploymentName; + } + + + public void setDeploymentName(String deploymentName) { + this.deploymentName = deploymentName; + } +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/util/CSEDeploymentClientUtil.java b/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/util/CSEDeploymentClientUtil.java new file mode 100644 index 0000000000000000000000000000000000000000..ade9913f7dbd2689b99784a474c05161626de169 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/util/CSEDeploymentClientUtil.java @@ -0,0 +1,97 @@ +package eu.piacere.ide.toolIntegration.kr08.viewPart.util; + +import org.eclipse.ui.IViewPart; +import org.eclipse.ui.PlatformUI; +import org.json.JSONObject; +import org.restlet.Client; +import org.restlet.Context; +import org.restlet.data.MediaType; +import org.restlet.data.Protocol; +import org.restlet.resource.ClientResource; + +import eu.piacere.ide.toolIntegration.kr08.viewPart.CanarySandboxViewPart; + +public class CSEDeploymentClientUtil { + + + + public static boolean testConnection(CanarySandboxEnvironmentProvisioner csep, boolean showErrors) { + return csep.isConnected(); + + } + + public static CanarySandboxViewPart getRuntimeControllerView() { + try { + IViewPart viewPart = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView("PiacereIDEIntegration.KR08.CanarySandboxViewPart"); + if (viewPart instanceof CanarySandboxViewPart) + return (CanarySandboxViewPart)viewPart; + } catch (Exception exception) { + return null; + } + return null; + } + + public static JSONObject retrieveDeploymentGet(String getURL, Protocol proto, CSEDeployment deployment) { + Client client = new Client(new Context(), proto); + + ClientResource service = new ClientResource(getURL); + service.setNext(client); + ClientResource resource = service.getChild("deployments/"+deployment.getDeploymentName()); + String respuesta=""; + try { + respuesta=resource.get().getText(); + return new JSONObject(respuesta); + } + catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + public static boolean deleteDeployment(String deleteURL, Protocol proto, CSEDeployment deployment) { + + Client client = new Client(new Context(), proto); + + ClientResource service = new ClientResource(deleteURL); + service.setNext(client); + try { + ClientResource resource = service.getChild("deployments/"+deployment.getDeploymentName()); + resource.delete(); + return resource.getResponse().getStatus().getCode()/100==2; + } + catch (Exception e) { + e.printStackTrace(); + } + + return false; + } + + public static boolean redeployDeployment(String postURL, Protocol proto, CSEDeployment deployment) { + //DEVUELVE SIEMPRE UN ERROR 400 + Client client = new Client(new Context(), proto); + + ClientResource service = new ClientResource(postURL); + service.setNext(client); + try { + JSONObject objectToPost=new JSONObject(); + objectToPost.put("type", "dummy"); + objectToPost.put("time_to_start", 0); + objectToPost.put("time_to_complete", 0); + objectToPost.put("should_succeed", true); + + ClientResource resource = service.getChild("deployments/"+deployment.getDeploymentName()+"/redeploy"); + resource.post(resource.toRepresentation(objectToPost.toString(), MediaType.APPLICATION_JSON)); + return resource.getResponse().getStatus().getCode()/100==2; + } + catch (Exception e) { + e.printStackTrace(); + } + + return false; + } + + + + + +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/util/CSEPClientUtil.java b/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/util/CSEPClientUtil.java new file mode 100644 index 0000000000000000000000000000000000000000..269715f3b4ed40b41ccd5864b407304c17c6ad73 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/util/CSEPClientUtil.java @@ -0,0 +1,31 @@ +package eu.piacere.ide.toolIntegration.kr08.viewPart.util; + +import org.json.JSONArray; +import org.restlet.Client; +import org.restlet.Context; +import org.restlet.data.Protocol; +import org.restlet.resource.ClientResource; + +public class CSEPClientUtil { + + public static JSONArray retrieveAllDeploymentsGet(String getURL, Protocol proto) { + Client client = new Client(new Context(), proto); + + ClientResource service = new ClientResource(getURL); + service.setNext(client); + ClientResource resource = service.getChild("deployments"); + String respuesta=""; + try { + respuesta=resource.get().getText(); + if(respuesta.equals("[]")) { + //respuesta="[{\"name\": \"test_os\"}]"; + } + return new JSONArray(respuesta); + } + catch (Exception e) { + e.printStackTrace(); + } + return null; + } + +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/util/CanarySandboxEnvironmentProvisioner.java b/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/util/CanarySandboxEnvironmentProvisioner.java new file mode 100644 index 0000000000000000000000000000000000000000..0e993299ba05c5d422581ab06c5a42a42af9977f --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR08/src/eu/piacere/ide/toolIntegration/kr08/viewPart/util/CanarySandboxEnvironmentProvisioner.java @@ -0,0 +1,134 @@ +package eu.piacere.ide.toolIntegration.kr08.viewPart.util; + +import java.util.TreeMap; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; +import org.restlet.Client; +import org.restlet.Context; +import org.restlet.data.Protocol; +import org.restlet.data.Status; +import org.restlet.resource.ClientResource; + +import eu.piacere.piacereTool.utils.ToolCustomizationUtils; + +public class CanarySandboxEnvironmentProvisioner { + + + private String protocol; + private String host; + private String port; + + + public static String DEPLOYMENTS_PATH = "deployments"; + + private TreeMap<String, CSEDeployment> rpcDeployments; + private Boolean isConnected; + + public CanarySandboxEnvironmentProvisioner() { + this.setProtocol(ToolCustomizationUtils.getPreference(this.getClass(), "KR08.protocol")); + this.setHost(ToolCustomizationUtils.getPreference(this.getClass(), "KR08.host")); + this.setPort(ToolCustomizationUtils.getPreference(this.getClass(), "KR08.port")); + this.setDeployments(new TreeMap<String,CSEDeployment>()); + reloadContent(); + + } + + public String getProtocol() { + return protocol; + } + + public void setProtocol(String protocol) { + this.protocol = protocol; + } + + public String getHost() { + return host; + } + + public void setHost(String host) { + this.host = host; + } + + public String getPort() { + return port; + } + + public void setPort(String port) { + this.port = port; + } + + public TreeMap<String, CSEDeployment> getDeployments() { + return rpcDeployments; + } + + public void setDeployments(TreeMap<String, CSEDeployment> rpcDeployments) { + this.rpcDeployments = rpcDeployments; + } + + @Override + public String toString() { + return "Canary SandBox Environment Provisioner"; + } + + public void reloadContent() { + if(this.testConnection()) { + this.setDeployments(new TreeMap<String,CSEDeployment>()); + + Protocol p = loadProtocol(); + JSONArray res=CSEPClientUtil.retrieveAllDeploymentsGet(getCanarySandboxEnvironmentProvisionerURL(), p); + for(int i = 0; i < res.length(); i++) { + try { + JSONObject obj = res.getJSONObject(i); + this.getDeployments().put(obj.getString("name"), new CSEDeployment(obj.getString("name"))); + } catch (JSONException e) { + e.printStackTrace(); + } + } + } + } + + private Protocol loadProtocol() { + Protocol p = null; + if(this.getProtocol().equals("http")) { + p=Protocol.HTTP; + } + else if(this.getProtocol().equals("https")) { + p=Protocol.HTTPS; + } + return p; + } + + public String getCanarySandboxEnvironmentProvisionerURL() { + String res = this.getProtocol()+"://"+this.getHost()+":"+this.getPort()+"/"; + return res; + } + + public boolean testConnection() { + Protocol p = loadProtocol(); + if(p!=null) { + Client client = new Client(new Context(), p); + ClientResource service = new ClientResource(getCanarySandboxEnvironmentProvisionerURL()); + service.setNext(client); + ClientResource resource = service.getChild("/"+DEPLOYMENTS_PATH); + try { + resource.get().getText(); + Status s=resource.getStatus(); + if(s.getCode()==200) { + return true; + } + } + catch (Exception e) { + } + } + return false; + } + + public boolean isConnected() { + if(this.isConnected==null) { + isConnected=testConnection(); + } + return isConnected.booleanValue(); + } +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR09/.classpath b/Source Code/V2.1/PiacereIDEIntegration.KR09/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..81fe078c20c05db46a8281fbb1a72875a5322b45 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR09/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="src" path="src"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR09/.gitignore b/Source Code/V2.1/PiacereIDEIntegration.KR09/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..ae3c1726048cd06b9a143e0376ed46dd9b9a8d53 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR09/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR09/.project b/Source Code/V2.1/PiacereIDEIntegration.KR09/.project new file mode 100644 index 0000000000000000000000000000000000000000..4d3c8d95c5cdf8f7400e0b9b81f3b00d97a0ceb9 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR09/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>PiacereIDEIntegration.KR09</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR09/.settings/org.eclipse.jdt.core.prefs b/Source Code/V2.1/PiacereIDEIntegration.KR09/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000000000000000000000000000000000000..62ef3488cc0468ee9c2d4440dfbbbd5877cd0c28 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR09/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,9 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 +org.eclipse.jdt.core.compiler.compliance=17 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=17 diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR09/META-INF/MANIFEST.MF b/Source Code/V2.1/PiacereIDEIntegration.KR09/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..afc02e72e13c3c6f34bae98fcc5f98dc68fae7a6 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR09/META-INF/MANIFEST.MF @@ -0,0 +1,23 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: KR09 +Bundle-SymbolicName: PiacereIDEIntegration.KR09;singleton:=true +Bundle-Version: 1.0.0.qualifier +Automatic-Module-Name: PiacereIDEIntegration.KR09 +Require-Bundle: org.eclipse.ui, + org.eclipse.core.runtime, + org.apache.httpcomponents.httpcore +Import-Package: eu.piacere.doml.doml.commons, + eu.piacere.piacereTool.utils, + org.apache.commons.io, + org.apache.http.client;version="4.5.13", + org.apache.http.client.methods;version="4.5.13", + org.apache.http.impl.client;version="4.5.13", + org.eclipse.core.resources, + org.eclipse.core.runtime.preferences;version="3.4.0", + org.eclipse.emf.common.util, + org.eclipse.emf.ecore, + org.eclipse.emf.ecore.resource, + org.eclipse.emf.ecore.resource.impl, + org.eclipse.emf.ecore.util, + org.json diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR09/Piacere/PiacereIcon_16x16.png b/Source Code/V2.1/PiacereIDEIntegration.KR09/Piacere/PiacereIcon_16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..444de54d6cfe2958fac1bbb89dd8619b4c537c47 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR09/Piacere/PiacereIcon_16x16.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR09/build.properties b/Source Code/V2.1/PiacereIDEIntegration.KR09/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..52086a7c305694aa678bde0640768488a5cf8e4f --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR09/build.properties @@ -0,0 +1,6 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + .,\ + plugin.xml,\ + Piacere/ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR09/plugin.xml b/Source Code/V2.1/PiacereIDEIntegration.KR09/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..905c4578b32a57513839287c5b6e9859647cb9c0 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR09/plugin.xml @@ -0,0 +1,50 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.4"?> +<plugin> + <extension + point="org.eclipse.ui.preferencePages"> + <page + category="PiacereToolCustomization.preferences.page1" + class="eu.piacere.ide.toolIntegration.kr09.preferencePage.KR09PreferencePage" + id="PiacereIDEIntegration.KR09.preferences.page1" + name="IaC Optimizer Platform Preferences"> + </page> + </extension> + <extension + point="org.eclipse.core.runtime.preferences"> + <initializer + class="eu.piacere.ide.toolIntegration.kr09.preferencePage.KR09PreferenceInitializer"> + </initializer> + </extension> + + <extension + point="org.eclipse.ui.commands"> + <command + categoryId="eu.piacere.piacereModelsCommands.category.id" + defaultHandler="eu.piacere.ide.toolIntegration.kr09.commandHandlers.OptimizerCommandHandler" + id="eu.piacere.piacereModelsCommands.OptimizerCommand.id" + name="Optimize DOML"> + </command> + </extension> + <extension + point="org.eclipse.ui.menus"> + <menuContribution + allPopups="false" + locationURI="popup:eu.piacere.eclipsePopupMenu.id"> + <command + commandId="eu.piacere.piacereModelsCommands.OptimizerCommand.id" + icon="Piacere/PiacereIcon_16x16.png" + label="Optimize DOML" + style="push" + tooltip="Optimize the DOML Specification"> + <visibleWhen + checkEnabled="false"> + <reference + definitionId="eu.piacere.piacereTool.propertyTesters.extensionPropertyTester.isDOMLModel.id"> + </reference> + </visibleWhen> + </command> + </menuContribution> + </extension> + +</plugin> diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR09/src/eu/piacere/ide/toolIntegration/kr09/commandHandlers/OptimizerCommandHandler.java b/Source Code/V2.1/PiacereIDEIntegration.KR09/src/eu/piacere/ide/toolIntegration/kr09/commandHandlers/OptimizerCommandHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..4150eb73b2505302392ad16dadd42b888e32824c --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR09/src/eu/piacere/ide/toolIntegration/kr09/commandHandlers/OptimizerCommandHandler.java @@ -0,0 +1,107 @@ +package eu.piacere.ide.toolIntegration.kr09.commandHandlers; + +import java.io.IOException; + +import org.apache.http.client.ClientProtocolException; +import org.apache.http.client.HttpClient; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.util.EntityUtils; +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.jface.dialogs.ProgressMonitorDialog; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.ui.handlers.HandlerUtil; +import org.json.JSONException; + +import eu.piacere.piacereTool.utils.FileUtils; +import eu.piacere.piacereTool.utils.ToolCustomizationUtils; + +public class OptimizerCommandHandler extends AbstractHandler { + + private String doPostRequestToValidator(String fileContent) throws ClientProtocolException, IOException, JSONException { + HttpClient httpClient = HttpClientBuilder.create().build(); + + String url=ToolCustomizationUtils.getPreference(this.getClass(), "KR09.protocol")+"://"+ToolCustomizationUtils.getPreference(this.getClass(), "KR09.host")+":"+ToolCustomizationUtils.getPreference(this.getClass(), "KR09.port")+"/api/optimize"; + + HttpPost httpPost = new HttpPost(url); + + StringEntity entity = new StringEntity(fileContent); + httpPost.setEntity(entity); + + httpPost.setHeader("Accept", "application/json"); + + CloseableHttpResponse response = (CloseableHttpResponse) httpClient.execute(httpPost); + if(response.getStatusLine().getStatusCode()==200) { + String content = EntityUtils.toString(response.getEntity()); + ToolCustomizationUtils.showInformationDialog("Model Optimized", "Your Model has been optimized successfull"); + return content; + } + else { + ToolCustomizationUtils.showErrorDialog("Model Optimized", "Your model can not be optimized"); + + } + return null; + } + + private void saveFileInWorkspace(IContainer container, String fileContent, String defaultFileName) { + String domlModelName=ToolCustomizationUtils.doDialogAsk("DOML Optimizer", "Enter the DOML Optimizer Results File Name", defaultFileName); + + + ProgressMonitorDialog pd=new ProgressMonitorDialog(ToolCustomizationUtils.getActiveShell()); + pd.open(); + try { + FileUtils.createFile(domlModelName+".optimized_"+ FileUtils.getTimestamp() +".doml", container, fileContent, pd); + } catch (Exception e1) { + e1.printStackTrace(); + } + pd.close(); + try { + container.refreshLocal(IResource.DEPTH_INFINITE, null); + } catch (CoreException e) { + e.printStackTrace(); + } + } + + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + ToolCustomizationUtils.saveWorkbench(); + ISelection selection = HandlerUtil.getCurrentSelection(event); + if (selection instanceof StructuredSelection) { + if(((StructuredSelection)selection).getFirstElement() instanceof IFile){ + IFile res = (IFile)((StructuredSelection) selection).getFirstElement(); + + + String fileContent=FileUtils.getIFileContents(res); + if(fileContent==null) { + //ARROJAR ERROR + return null; + } + String responseFromValidator=null; + try { + responseFromValidator=doPostRequestToValidator(fileContent); + } catch (IOException | JSONException e2) { + e2.printStackTrace(); + } + + if(responseFromValidator==null) { + //ARROJAR ERROR + return null; + } + + if(ToolCustomizationUtils.showQuestionDialog("Save Result", "Do you want to save the result on workspace?")) { + saveFileInWorkspace(res.getParent(), responseFromValidator, res.getFullPath().lastSegment().replace(".doml", "")); + } + } + } + return null; + } +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR09/src/eu/piacere/ide/toolIntegration/kr09/preferencePage/KR09PreferenceInitializer.java b/Source Code/V2.1/PiacereIDEIntegration.KR09/src/eu/piacere/ide/toolIntegration/kr09/preferencePage/KR09PreferenceInitializer.java new file mode 100644 index 0000000000000000000000000000000000000000..408f2a60fc4b7f06544c2586ae1bec90addcf166 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR09/src/eu/piacere/ide/toolIntegration/kr09/preferencePage/KR09PreferenceInitializer.java @@ -0,0 +1,20 @@ +package eu.piacere.ide.toolIntegration.kr09.preferencePage; + +import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer; +import org.eclipse.core.runtime.preferences.ConfigurationScope; +import org.eclipse.ui.preferences.ScopedPreferenceStore; +import org.osgi.framework.FrameworkUtil; + +public class KR09PreferenceInitializer extends AbstractPreferenceInitializer { + + @Override + public void initializeDefaultPreferences() { + + ScopedPreferenceStore scopedPreferenceStore = new ScopedPreferenceStore(ConfigurationScope.INSTANCE,(FrameworkUtil.getBundle(KR09PreferenceInitializer.class)).getSymbolicName()); + scopedPreferenceStore.setDefault("KR09.host", "iop.ci.piacere.digital.tecnalia.dev"); + scopedPreferenceStore.setDefault("KR09.port", 443); + scopedPreferenceStore.setDefault("KR09.protocol", "https"); + + } + +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR09/src/eu/piacere/ide/toolIntegration/kr09/preferencePage/KR09PreferencePage.java b/Source Code/V2.1/PiacereIDEIntegration.KR09/src/eu/piacere/ide/toolIntegration/kr09/preferencePage/KR09PreferencePage.java new file mode 100644 index 0000000000000000000000000000000000000000..e98558ce9be2cfd0bfb09a7ebc4cccf65f75cdb2 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR09/src/eu/piacere/ide/toolIntegration/kr09/preferencePage/KR09PreferencePage.java @@ -0,0 +1,37 @@ +package eu.piacere.ide.toolIntegration.kr09.preferencePage; + +import org.eclipse.core.runtime.preferences.ConfigurationScope; +import org.eclipse.jface.preference.FieldEditorPreferencePage; +import org.eclipse.jface.preference.IntegerFieldEditor; +import org.eclipse.jface.preference.RadioGroupFieldEditor; +import org.eclipse.jface.preference.StringFieldEditor; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchPreferencePage; +import org.eclipse.ui.preferences.ScopedPreferenceStore; +import org.osgi.framework.FrameworkUtil; + +public class KR09PreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage{ + + + public KR09PreferencePage() { + super(GRID); + } + + @Override + public void init(IWorkbench workbench) { + //WHICH SCOPE SHOULD I SELECT: https://wiki.eclipse.org/FAQ_What_is_a_preference_scope%3F + + setPreferenceStore(new ScopedPreferenceStore(ConfigurationScope.INSTANCE, (FrameworkUtil.getBundle(KR09PreferenceInitializer.class)).getSymbolicName())); + setDescription("These Are The IaC Optimizer Platform Preferences"); + + } + + @Override + protected void createFieldEditors() { + addField(new StringFieldEditor("KR09.host", "Endpoint Host", getFieldEditorParent())); + addField(new IntegerFieldEditor("KR09.port", "Endpoint Port", getFieldEditorParent())); + addField(new RadioGroupFieldEditor("KR09.protocol", "Protocol", 1, new String[][] {{"HTTP","http"},{"HTTPS","https"}}, getFieldEditorParent())); + + } + +} \ No newline at end of file diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/.classpath b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..81fe078c20c05db46a8281fbb1a72875a5322b45 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="src" path="src"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/.gitignore b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..ae3c1726048cd06b9a143e0376ed46dd9b9a8d53 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/.project b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/.project new file mode 100644 index 0000000000000000000000000000000000000000..7e947e928fdf4cac658a6ed315d4efaea5c5ea72 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>PiacereIDEIntegration.KR10_KR11_KR12</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/.settings/org.eclipse.core.resources.prefs b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000000000000000000000000000000000000..99f26c0203a7844de00dbfc56e6a35d8ed3c022c --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/<project>=UTF-8 diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/.settings/org.eclipse.jdt.core.prefs b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000000000000000000000000000000000000..62ef3488cc0468ee9c2d4440dfbbbd5877cd0c28 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,9 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 +org.eclipse.jdt.core.compiler.compliance=17 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=17 diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/META-INF/MANIFEST.MF b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..56e829ea880caec250bb2f05ad815dafc4f30dfa --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/META-INF/MANIFEST.MF @@ -0,0 +1,33 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: PiacereIDEIntegration.KR10_KR11_KR12 +Bundle-SymbolicName: PiacereIDEIntegration.KR10_KR11_KR12;singleton:=true +Bundle-Version: 1.0.0.qualifier +Automatic-Module-Name: PiacereIDEIntegration.KR10_KR11_KR12 +Require-Bundle: org.eclipse.ui, + org.eclipse.core.runtime, + org.apache.httpcomponents.httpcore +Import-Package: eu.piacere.doml.doml.commons, + eu.piacere.piacereTool.utils, + org.apache.commons.io, + org.apache.http.client;version="4.5.13", + org.apache.http.client.methods;version="4.5.13", + org.apache.http.impl.client;version="4.5.13", + org.eclipse.core.resources, + org.eclipse.core.runtime.preferences;version="3.4.0", + org.eclipse.emf.common.notify, + org.eclipse.emf.common.util, + org.eclipse.emf.ecore, + org.eclipse.emf.ecore.resource, + org.eclipse.emf.ecore.resource.impl, + org.eclipse.emf.ecore.util, + org.eclipse.emf.edit.provider.resource, + org.eclipse.emf.edit.ui.provider, + org.eclipse.ui.dialogs, + org.eclipse.ui.navigator, + org.eclipse.ui.views.properties, + org.json, + org.restlet, + org.restlet.data, + org.restlet.representation, + org.restlet.resource diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/Piacere/PiacereIcon_16x16.png b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/Piacere/PiacereIcon_16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..444de54d6cfe2958fac1bbb89dd8619b4c537c47 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/Piacere/PiacereIcon_16x16.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/build.properties b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..d3bb3b52a4b4e6918a27ed9328f514e80b23ccc0 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/build.properties @@ -0,0 +1,7 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + .,\ + Piacere/,\ + plugin.xml,\ + icons/ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/ComponentsModel.png b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/ComponentsModel.png new file mode 100644 index 0000000000000000000000000000000000000000..9ee76accc89ff76934fe746a3af1a853843e1209 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/ComponentsModel.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/FAdAIcon_24.png b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/FAdAIcon_24.png new file mode 100644 index 0000000000000000000000000000000000000000..f4259625230e2b11b98a14aa6b75b52edad25dd8 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/FAdAIcon_24.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/FadaModelRepositoriesView.png b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/FadaModelRepositoriesView.png new file mode 100644 index 0000000000000000000000000000000000000000..4db27dd10ecbbcf29062e8cc7b7b3c22bf72c5a3 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/FadaModelRepositoriesView.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/FadaModelRepositoriesView_old.png b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/FadaModelRepositoriesView_old.png new file mode 100644 index 0000000000000000000000000000000000000000..d4f2feef7f465a95b720ec2a24aa4429b5a64aab Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/FadaModelRepositoriesView_old.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/RepoConnected.png b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/RepoConnected.png new file mode 100644 index 0000000000000000000000000000000000000000..bd178d026ebd3aa22573ca74e985f306d64a59c1 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/RepoConnected.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/RepoDisconnected.png b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/RepoDisconnected.png new file mode 100644 index 0000000000000000000000000000000000000000..0c78354020ea586917e7ec598e357c739b031aa0 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/RepoDisconnected.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/SystemConfigurationModel.png b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/SystemConfigurationModel.png new file mode 100644 index 0000000000000000000000000000000000000000..d4561b60458f1b50d06bfd23d7f8308af08688ef Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/SystemConfigurationModel.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/addRepository.png b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/addRepository.png new file mode 100644 index 0000000000000000000000000000000000000000..fe03f37202ca955983c42397173fb12faca9d187 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/addRepository.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/bundle.png b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/bundle.png new file mode 100644 index 0000000000000000000000000000000000000000..1f41d9b1bfcf6db40272453364a446ad457ec50f Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/bundle.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/collapseAll.gif b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/collapseAll.gif new file mode 100644 index 0000000000000000000000000000000000000000..a2d80a9044f38833cb728a69c88294ce3fd007c7 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/collapseAll.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/deleteRepository.png b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/deleteRepository.png new file mode 100644 index 0000000000000000000000000000000000000000..807f97450c23a784814393f55a16ff75688ec15b Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/deleteRepository.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/download.png b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/download.png new file mode 100644 index 0000000000000000000000000000000000000000..236f4a77ea9131d404b0efb5e7bddd72098181f9 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/download.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/expandAll.gif b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/expandAll.gif new file mode 100644 index 0000000000000000000000000000000000000000..0205b29176d4e60307639b6ac80ebfc40be61c3b Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/expandAll.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/export.png b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/export.png new file mode 100644 index 0000000000000000000000000000000000000000..670042c62ce6b5cb200fa3807c57d18511275f39 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/export.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/elcl16/addrepositorylocation.gif b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/elcl16/addrepositorylocation.gif new file mode 100644 index 0000000000000000000000000000000000000000..6237766393fcc7a602d4695d151c3e546abeab6a Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/elcl16/addrepositorylocation.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/elcl16/copy.gif b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/elcl16/copy.gif new file mode 100644 index 0000000000000000000000000000000000000000..71d7c95aa8caa2e8f139d262a4e5e08aba2b88e5 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/elcl16/copy.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/elcl16/integrateconceptualfragment.gif b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/elcl16/integrateconceptualfragment.gif new file mode 100644 index 0000000000000000000000000000000000000000..07164754e5ca231666d9daf7fa4a9d12e378a52a Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/elcl16/integrateconceptualfragment.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/elcl16/integratetechnicalfragment.gif b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/elcl16/integratetechnicalfragment.gif new file mode 100644 index 0000000000000000000000000000000000000000..e7035189cd8dd45b6afba27b8cbccd75df5000e1 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/elcl16/integratetechnicalfragment.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/elcl16/paste.gif b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/elcl16/paste.gif new file mode 100644 index 0000000000000000000000000000000000000000..39dd4d9d38aa85f9c4c9ff652c453c555b850980 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/elcl16/paste.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/elcl16/search.gif b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/elcl16/search.gif new file mode 100644 index 0000000000000000000000000000000000000000..d540a01f4d9eeb9d2951f30cee165c7370e9fc6a Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/elcl16/search.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/CapabilityPattern.gif b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/CapabilityPattern.gif new file mode 100644 index 0000000000000000000000000000000000000000..15ffbb0795fbdc2a0add02f0a07bcea02f034ab4 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/CapabilityPattern.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/CapabilityPatterns.gif b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/CapabilityPatterns.gif new file mode 100644 index 0000000000000000000000000000000000000000..37147654e68f964a947278cb954e47633809c5c4 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/CapabilityPatterns.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/ConceptualFragment.gif b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/ConceptualFragment.gif new file mode 100644 index 0000000000000000000000000000000000000000..49ab538b6c432e7eb280793484e555df7ba2761d Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/ConceptualFragment.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Delete.gif b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Delete.gif new file mode 100644 index 0000000000000000000000000000000000000000..b6922ac11cf64e16a15cf2976cdaa1e40118abed Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Delete.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/DeliveryProcess.gif b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/DeliveryProcess.gif new file mode 100644 index 0000000000000000000000000000000000000000..7b40362c2f54cebce43f5511342df015c4f52feb Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/DeliveryProcess.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Description.gif b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Description.gif new file mode 100644 index 0000000000000000000000000000000000000000..75f33c24fa441d09729e7adcbc78a4e55d84b443 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Description.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Descriptor.gif b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Descriptor.gif new file mode 100644 index 0000000000000000000000000000000000000000..04032a915a0d9eace79a7aec3c573ca07eb7f4ac Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Descriptor.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Input.gif b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Input.gif new file mode 100644 index 0000000000000000000000000000000000000000..d8d7d974fa596ee7a8d06b1d8b110ee7336850af Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Input.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Interface.gif b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Interface.gif new file mode 100644 index 0000000000000000000000000000000000000000..7c7d39ef65b96d71b7b2e1e576c3677bbf7757f1 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Interface.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/MethodPlugin.gif b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/MethodPlugin.gif new file mode 100644 index 0000000000000000000000000000000000000000..bb82c391ed462f0f01e988e00b07f8de262278e7 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/MethodPlugin.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Name.gif b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Name.gif new file mode 100644 index 0000000000000000000000000000000000000000..75f33c24fa441d09729e7adcbc78a4e55d84b443 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Name.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Objective.gif b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Objective.gif new file mode 100644 index 0000000000000000000000000000000000000000..75f33c24fa441d09729e7adcbc78a4e55d84b443 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Objective.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Origin.gif b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Origin.gif new file mode 100644 index 0000000000000000000000000000000000000000..c79bf78956a277d98343ab949be3efe08411f37f Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Origin.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Output.gif b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Output.gif new file mode 100644 index 0000000000000000000000000000000000000000..b4fe2c84ecd2cb1ce8a4fb03a091ba76cad78916 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Output.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Package.gif b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Package.gif new file mode 100644 index 0000000000000000000000000000000000000000..00a311efa25ac538073fb14e59efbb9a968a94e3 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Package.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Processes.gif b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Processes.gif new file mode 100644 index 0000000000000000000000000000000000000000..08d8c2d5d1a7a70f5af53200633a7ba92aab1788 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Processes.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Repositories.gif b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Repositories.gif new file mode 100644 index 0000000000000000000000000000000000000000..16eda8a78a63bfe5874e2e92a29f20a644241bba Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Repositories.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/RoleSetCategory.gif b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/RoleSetCategory.gif new file mode 100644 index 0000000000000000000000000000000000000000..54a3f677a3efc25358bb4f637de6166d1425a486 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/RoleSetCategory.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Task.gif b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Task.gif new file mode 100644 index 0000000000000000000000000000000000000000..5c3b2b89a47caa2cbec35a9e9c3fe2efef4b2895 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Task.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Tasks.gif b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Tasks.gif new file mode 100644 index 0000000000000000000000000000000000000000..638bd83009d2d7bf881dab9dbc07c176edd23060 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Tasks.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/TechnicalFragment.gif b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/TechnicalFragment.gif new file mode 100644 index 0000000000000000000000000000000000000000..4f1b85a7801922060d6b5a968a76be30eb5326c9 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/TechnicalFragment.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/TechnicalFragmentError.gif b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/TechnicalFragmentError.gif new file mode 100644 index 0000000000000000000000000000000000000000..50b162dbdfc4a7f0eabd5d7119871e378efe6940 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/TechnicalFragmentError.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/TechnicalFragmentImported.gif b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/TechnicalFragmentImported.gif new file mode 100644 index 0000000000000000000000000000000000000000..3260ab2872cfcc35cc75b3501dd05bb23bd6f333 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/TechnicalFragmentImported.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Type.gif b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Type.gif new file mode 100644 index 0000000000000000000000000000000000000000..358cbcb83d800352e59d672771057f3156f27491 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/Type.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/WorkProduct.gif b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/WorkProduct.gif new file mode 100644 index 0000000000000000000000000000000000000000..1540f3d3c95605a8d7f641f8c93b098e356c40c3 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/WorkProduct.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/WorkProducts.gif b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/WorkProducts.gif new file mode 100644 index 0000000000000000000000000000000000000000..cf289263e15224bfd984e2145ddc6c6eb415f50c Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/WorkProducts.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/activity16.gif b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/activity16.gif new file mode 100644 index 0000000000000000000000000000000000000000..cf20deb439ab39a63162c93396060706051569b0 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/activity16.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/role.gif b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/role.gif new file mode 100644 index 0000000000000000000000000000000000000000..69ebdf2959ed859952751f3f377d581671045873 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/full/obj16/role.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/import.png b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/import.png new file mode 100644 index 0000000000000000000000000000000000000000..bb6ff06b7bcf18590deb1f93a519d5264b6a067f Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/import.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/jar.png b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/jar.png new file mode 100644 index 0000000000000000000000000000000000000000..660f8ea5131c2f9f59a5fa2491993cfa71a1ac57 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/jar.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/ref.png b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/ref.png new file mode 100644 index 0000000000000000000000000000000000000000..2839c60a42f8a79067981fd7b3a26f4b81a69231 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/ref.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/refresh.gif b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/refresh.gif new file mode 100644 index 0000000000000000000000000000000000000000..e3831471a6592da14f53b1e7c5a2f7d6a92d9937 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/refresh.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/repository.png b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/repository.png new file mode 100644 index 0000000000000000000000000000000000000000..92794f126f846474fafef14aac6fccb82faaf4f8 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/icons/repository.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/plugin.xml b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..ee80c57ce364d3f1cade833ba0bfab316f59d2c6 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/plugin.xml @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.4"?> +<plugin> + <extension + point="org.eclipse.ui.preferencePages"> + <page + category="PiacereToolCustomization.preferences.page1" + class="eu.piacere.ide.toolIntegration.kr10kr11kr12.preferencePage.KR10PreferencePage" + id="PiacereIDEIntegration.KR10KR11KR12.preferences.page1" + name="PIACERE Runtime Controller Preferences"> + </page> + <page + category="PiacereToolCustomization.preferences.page1" + class="eu.piacere.ide.toolIntegration.kr10kr11kr12.preferencePage.KR11_12PreferencePage" + id="PiacereIDEIntegration.KR10KR11KR12.preferences.page2" + name="PIACERE Performance Monitoring Controller Preferences"> + </page> + </extension> + <extension + point="org.eclipse.core.runtime.preferences"> + <initializer + class="eu.piacere.ide.toolIntegration.kr10kr11kr12.preferencePage.KR10PreferenceInitializer"> + </initializer> + <initializer + class="eu.piacere.ide.toolIntegration.kr10kr11kr12.preferencePage.KR11_12PreferenceInitializer"> + </initializer> + </extension> + <extension point = "org.eclipse.ui.views"> + <view + id = "PiacereIDEIntegration.KR10KR11KR12.PiacereRuntimeControllerViewPart" + name = "PIACERE Runtime Controller" + category = "org.eclipse.ui" + class = "eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.PiacereRuntimeControllerViewPart" + icon = "Piacere/PiacereIcon_16x16.png" /> + </extension> + +</plugin> diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/preferencePage/KR10PreferenceInitializer.java b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/preferencePage/KR10PreferenceInitializer.java new file mode 100644 index 0000000000000000000000000000000000000000..66b9b24ccbad705c696b06a5cb7858158ebbdf1b --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/preferencePage/KR10PreferenceInitializer.java @@ -0,0 +1,20 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.preferencePage; + +import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer; +import org.eclipse.core.runtime.preferences.ConfigurationScope; +import org.eclipse.ui.preferences.ScopedPreferenceStore; +import org.osgi.framework.FrameworkUtil; + +public class KR10PreferenceInitializer extends AbstractPreferenceInitializer { + + @Override + public void initializeDefaultPreferences() { + + ScopedPreferenceStore scopedPreferenceStore = new ScopedPreferenceStore(ConfigurationScope.INSTANCE,(FrameworkUtil.getBundle(KR10PreferenceInitializer.class)).getSymbolicName()); + scopedPreferenceStore.setDefault("KR10.host", "prc.ci.piacere.digital.tecnalia.dev"); + scopedPreferenceStore.setDefault("KR10.port", 443); + scopedPreferenceStore.setDefault("KR10.protocol", "https"); + + } + +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/preferencePage/KR10PreferencePage.java b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/preferencePage/KR10PreferencePage.java new file mode 100644 index 0000000000000000000000000000000000000000..6449ac6e8874a3a08f1c32794883f36551898091 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/preferencePage/KR10PreferencePage.java @@ -0,0 +1,37 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.preferencePage; + +import org.eclipse.core.runtime.preferences.ConfigurationScope; +import org.eclipse.jface.preference.FieldEditorPreferencePage; +import org.eclipse.jface.preference.IntegerFieldEditor; +import org.eclipse.jface.preference.RadioGroupFieldEditor; +import org.eclipse.jface.preference.StringFieldEditor; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchPreferencePage; +import org.eclipse.ui.preferences.ScopedPreferenceStore; +import org.osgi.framework.FrameworkUtil; + +public class KR10PreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage{ + + + public KR10PreferencePage() { + super(GRID); + } + + @Override + public void init(IWorkbench workbench) { + //WHICH SCOPE SHOULD I SELECT: https://wiki.eclipse.org/FAQ_What_is_a_preference_scope%3F + + setPreferenceStore(new ScopedPreferenceStore(ConfigurationScope.INSTANCE, (FrameworkUtil.getBundle(KR10PreferenceInitializer.class)).getSymbolicName())); + setDescription("These Are The PIACERE Runtime Controller Preferences"); + + } + + @Override + protected void createFieldEditors() { + addField(new StringFieldEditor("KR10.host", "Endpoint Host", getFieldEditorParent())); + addField(new IntegerFieldEditor("KR10.port", "Endpoint Port", getFieldEditorParent())); + addField(new RadioGroupFieldEditor("KR10.protocol", "Protocol", 1, new String[][] {{"HTTP","http"},{"HTTPS","https"}}, getFieldEditorParent())); + + } + +} \ No newline at end of file diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/preferencePage/KR11_12PreferenceInitializer.java b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/preferencePage/KR11_12PreferenceInitializer.java new file mode 100644 index 0000000000000000000000000000000000000000..2922929768aeaeacbf535ff70ba1a37a2fc6d436 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/preferencePage/KR11_12PreferenceInitializer.java @@ -0,0 +1,20 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.preferencePage; + +import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer; +import org.eclipse.core.runtime.preferences.ConfigurationScope; +import org.eclipse.ui.preferences.ScopedPreferenceStore; +import org.osgi.framework.FrameworkUtil; + +public class KR11_12PreferenceInitializer extends AbstractPreferenceInitializer { + + @Override + public void initializeDefaultPreferences() { + + ScopedPreferenceStore scopedPreferenceStore = new ScopedPreferenceStore(ConfigurationScope.INSTANCE,(FrameworkUtil.getBundle(KR11_12PreferenceInitializer.class)).getSymbolicName()); + scopedPreferenceStore.setDefault("KR11_12.host", "c.pm.ci.piacere.digital.tecnalia.dev"); + scopedPreferenceStore.setDefault("KR11_12.port", 443); + scopedPreferenceStore.setDefault("KR11_12.protocol", "https"); + + } + +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/preferencePage/KR11_12PreferencePage.java b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/preferencePage/KR11_12PreferencePage.java new file mode 100644 index 0000000000000000000000000000000000000000..fc54757eae5f7b70a3605be2f1b94e9097e314ff --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/preferencePage/KR11_12PreferencePage.java @@ -0,0 +1,37 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.preferencePage; + +import org.eclipse.core.runtime.preferences.ConfigurationScope; +import org.eclipse.jface.preference.FieldEditorPreferencePage; +import org.eclipse.jface.preference.IntegerFieldEditor; +import org.eclipse.jface.preference.RadioGroupFieldEditor; +import org.eclipse.jface.preference.StringFieldEditor; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchPreferencePage; +import org.eclipse.ui.preferences.ScopedPreferenceStore; +import org.osgi.framework.FrameworkUtil; + +public class KR11_12PreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage{ + + + public KR11_12PreferencePage() { + super(GRID); + } + + @Override + public void init(IWorkbench workbench) { + //WHICH SCOPE SHOULD I SELECT: https://wiki.eclipse.org/FAQ_What_is_a_preference_scope%3F + + setPreferenceStore(new ScopedPreferenceStore(ConfigurationScope.INSTANCE, (FrameworkUtil.getBundle(KR10PreferenceInitializer.class)).getSymbolicName())); + setDescription("These Are The Piacere Performance Monitoring Controller Preferences"); + + } + + @Override + protected void createFieldEditors() { + addField(new StringFieldEditor("KR11_12.host", "Endpoint Host", getFieldEditorParent())); + addField(new IntegerFieldEditor("KR11_12.port", "Endpoint Port", getFieldEditorParent())); + addField(new RadioGroupFieldEditor("KR11_12.protocol", "Protocol", 1, new String[][] {{"HTTP","http"},{"HTTPS","https"}}, getFieldEditorParent())); + + } + +} \ No newline at end of file diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/PiacereRuntimeControllerViewPart.java b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/PiacereRuntimeControllerViewPart.java new file mode 100644 index 0000000000000000000000000000000000000000..a00819d6190a1f6d3265625f0bde6de051f3f047 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/PiacereRuntimeControllerViewPart.java @@ -0,0 +1,207 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; +import org.eclipse.jface.resource.FontDescriptor; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.jface.resource.JFaceResources; +import org.eclipse.jface.resource.LocalResourceManager; +import org.eclipse.jface.resource.ResourceManager; +import org.eclipse.jface.viewers.IBaseLabelProvider; +import org.eclipse.jface.viewers.IContentProvider; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Menu; +import org.eclipse.ui.IMemento; +import org.eclipse.ui.IViewSite; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.actions.ActionGroup; +import org.eclipse.ui.navigator.CommonNavigator; +import org.eclipse.ui.navigator.CommonViewer; +import org.eclipse.ui.plugin.AbstractUIPlugin; + +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions.FinishDeploymentAction; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions.GetDeploymentInfoAction; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions.OpenPerformanceMonitoringAction; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions.OpenPerformanceSelfLearningMonitoringAction; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions.OpenSecurityMonitoringAction; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions.OpenSecuritySelfLearningMonitoringAction; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions.OpenSelfHealingAction; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions.PiacereRuntimeControllerViewActionGroup; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions.RefreshAction; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.providers.PRCContentProvider; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.providers.PRCLabelProvider; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.PiacereDeployment; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.PiacereRuntimeController; + + +public class PiacereRuntimeControllerViewPart extends CommonNavigator implements IMenuListener { + + private static PiacereRuntimeController piacereRuntimeController = new PiacereRuntimeController(); + + public PiacereRuntimeController getPiacereRuntimeController() { + return piacereRuntimeController; + } + + @Override + public void createPartControl(Composite parent) { + super.createPartControl(parent); + + if (getCommonViewer() != null) { + + getCommonViewer().setContentProvider((IContentProvider)new PRCContentProvider((AdapterFactory)new ResourceItemProviderAdapterFactory())); + getCommonViewer().setInput(piacereRuntimeController); + getCommonViewer().setLabelProvider((IBaseLabelProvider)new PRCLabelProvider()); + ResourceManager resourceManager = new LocalResourceManager(JFaceResources.getResources(), parent); + getCommonViewer().getTree().setFont(resourceManager.createFont(FontDescriptor.createFrom(getCommonViewer().getTree().getFont()).setHeight(14))); + getCommonViewer().setSorter(null); + getCommonViewer().addSelectionChangedListener(new SelectionChangedListener()); + createContextMenuForViewer(getCommonViewer()); + refreshViewer(); + } + } + + public void init(IViewSite aSite, IMemento aMemento) throws PartInitException { + super.init(aSite, aMemento); + + if (aMemento != null && this.getPiacereRuntimeController().getDeployments().size() == 0) { + /*int i = 0; + while (aMemento.getString("host" + i) != null) { + RepositoryLocation rp = new RepositoryLocation(); + rp.setHost(aMemento.getString("host" + i)); + rp.setRepositoryPath(aMemento.getString("repositorypath" + i)); + rp.setName(aMemento.getString("name" + i)); + if(DeploymentClientUtil.testConnection(rp, false)) { + rp.reloadContent(); + } + locations.add(rp); + i++; + } */ + } + } + + protected CommonViewer createCommonViewerObject(Composite aParent) { + return new CommonViewer(getViewSite().getId(), aParent, 768); + } + + private class SelectionChangedListener implements ISelectionChangedListener { + @SuppressWarnings("unused") + public void selectionChanged(SelectionChangedEvent event) { + if (event.getSelection() instanceof StructuredSelection) { + Object selected = ((StructuredSelection)event.getSelection()).getFirstElement(); + } + } + } + + protected ActionGroup createCommonActionGroup() { + return (ActionGroup)new PiacereRuntimeControllerViewActionGroup(getCommonViewer()); + } + + public void refreshViewer() { + CommonViewer viewer = getCommonViewer(); + if (viewer != null && !viewer.getTree().isDisposed()) + viewer.refresh(); + } + + public void saveState(IMemento aMemento) { + super.saveState(aMemento);/* + int size = locations.size(); + for (int i = 0; i < size; i++) { + RepositoryLocation rp = locations.get(i); + aMemento.putString("host" + i, rp.getHost()); + aMemento.putString("repositorypath" + i, rp.getRepositoryPath()); + aMemento.putString("name" + i, rp.getName()); + } */ + } + + private void createContextMenuForViewer(CommonViewer viewer) { + MenuManager contextMenu = new MenuManager("Popup", getImageDescriptor("icons/FadaModelRepositoriesView.png"), null); + contextMenu.setRemoveAllWhenShown(true); + contextMenu.addMenuListener(this); + + Menu menu = contextMenu.createContextMenu(viewer.getControl()); + viewer.getControl().setMenu(menu); + this.getSite().registerContextMenu(contextMenu, (ISelectionProvider)viewer); + } + + public void menuAboutToShow(IMenuManager manager) { + ISelection selection = getCommonViewer().getSelection(); + if (selection instanceof StructuredSelection) { + StructuredSelection sel = (StructuredSelection)selection; + Object selectedObject = sel.getFirstElement(); + if (selectedObject instanceof PiacereDeployment) { + + + RefreshAction ra = new RefreshAction(); + ra.setText("Refresh All"); + ra.setImageDescriptor(getImageDescriptor("icons/refresh.gif")); + + GetDeploymentInfoAction gdia = new GetDeploymentInfoAction(); + gdia.setText("Get Deployment Details"); + gdia.setImageDescriptor(getImageDescriptor("icons/repository.png")); + + OpenPerformanceMonitoringAction opma = new OpenPerformanceMonitoringAction(); + opma.setText("Open Performance Monitor"); + opma.setImageDescriptor(getImageDescriptor("icons/ref.png")); + + OpenPerformanceSelfLearningMonitoringAction opslma = new OpenPerformanceSelfLearningMonitoringAction(); + opslma.setText("Open Performance Self Learning Monitor"); + opslma.setImageDescriptor(getImageDescriptor("icons/ref.png")); + + OpenSecurityMonitoringAction osma = new OpenSecurityMonitoringAction(); + osma.setText("Open Security Monitor"); + osma.setImageDescriptor(getImageDescriptor("icons/ref.png")); + + OpenSecuritySelfLearningMonitoringAction osslma = new OpenSecuritySelfLearningMonitoringAction(); + osslma.setText("Open Security Self Learning Monitor"); + osslma.setImageDescriptor(getImageDescriptor("icons/ref.png")); + + OpenSelfHealingAction osha = new OpenSelfHealingAction(); + osha.setText("Open Self Healing Events"); + osha.setImageDescriptor(getImageDescriptor("icons/ref.png")); + + FinishDeploymentAction fda = new FinishDeploymentAction (); + fda.setText("Finish Deployment"); + fda.setImageDescriptor(getImageDescriptor("icons/deleteRepository.png")); + + + + + manager.add((IAction)ra); + manager.add(new Separator("additions")); + manager.add((IAction)gdia); + manager.add((IAction)opma); + manager.add((IAction)opslma); + manager.add((IAction)osma); + manager.add((IAction)osslma); + manager.add((IAction)osha); + manager.add(new Separator("additions")); + manager.add((IAction)fda); + } + /*if (selectedObject instanceof AppComponentsModelVersion || selectedObject instanceof AppSystemConfigurationModelVersion) { + DownloadModelAction dma = new DownloadModelAction(); + dma.setText("Download Model"); + dma.setImageDescriptor(getImageDescriptor("icons/download.png")); + manager.add((IAction)dma); + + DeleteModelAction dma2 = new DeleteModelAction(); + dma2.setText("Delete Model from Repository"); + dma2.setImageDescriptor(getImageDescriptor("icons/deleteRepository.png")); + manager.add((IAction)dma2); + }*/ + } + } + + protected final ImageDescriptor getImageDescriptor(String relativePath) { + return AbstractUIPlugin.imageDescriptorFromPlugin("PiacereIDEIntegration.KR10_KR11_KR12", relativePath); + } +} \ No newline at end of file diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/CollapseAllAction.java b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/CollapseAllAction.java new file mode 100644 index 0000000000000000000000000000000000000000..b8da9d62e89dc6765c0be850f536125486688df9 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/CollapseAllAction.java @@ -0,0 +1,24 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.ui.IWorkbenchCommandConstants; +import org.eclipse.ui.navigator.CommonViewer; + +public class CollapseAllAction extends Action implements IAction +{ + private final CommonViewer commonViewer; + + public CollapseAllAction(CommonViewer aViewer) { + super("Collapse all"); + setToolTipText("Collapse all"); + setActionDefinitionId(IWorkbenchCommandConstants.NAVIGATE_COLLAPSE_ALL); + this.commonViewer = aViewer; + } + + public void run() { + if (this.commonViewer != null) + this.commonViewer.collapseAll(); + } +} + diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/CreateDeploymentAction.java b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/CreateDeploymentAction.java new file mode 100644 index 0000000000000000000000000000000000000000..0fae68c88afa08e52d93222660e1e3b17a86dba8 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/CreateDeploymentAction.java @@ -0,0 +1,65 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.restlet.Response; +import org.restlet.data.Protocol; + +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.PiacereRuntimeControllerViewPart; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.DeploymentClientUtil; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.PRCClientUtil; +import eu.piacere.piacereTool.utils.ToolCustomizationUtils; + + +public class CreateDeploymentAction extends Action implements IAction +{ + + public void run() { + + String repositoryURL=ToolCustomizationUtils.doDialogAskWithoutPostProcess("Repository URL", "Provide the respository URL of the deployment", ""); + if(repositoryURL==null) { + return; + } + String deploymentID=ToolCustomizationUtils.doDialogAskWithoutPostProcess("Deployment ID", "Provide the new Deployment ID", ""); + if(deploymentID==null) { + return; + } + String commitID=ToolCustomizationUtils.doDialogAskWithoutPostProcess("Deployment Commit ID", "Provide the new Deployment Commit ID", ""); + if(commitID==null) { + return; + } + + String protocol = ToolCustomizationUtils.getPreference(this.getClass(), "KR10.protocol"); + String host = ToolCustomizationUtils.getPreference(this.getClass(), "KR10.host"); + String port = ToolCustomizationUtils.getPreference(this.getClass(), "KR10.port"); + Protocol p = null; + if(protocol.equals("http")) { + p=Protocol.HTTP; + } + else if(protocol.equals("https")) { + p=Protocol.HTTPS; + } + + Response resp=PRCClientUtil.createDeploymentPOST(protocol+"://"+host+":"+port+"/", p, repositoryURL, deploymentID, commitID); + if(resp!=null) { + + if(resp.getStatus().getCode()/100==2){ + PiacereRuntimeControllerViewPart prcView = DeploymentClientUtil.getRuntimeControllerView(); + if (prcView != null) { + prcView.getPiacereRuntimeController().reloadContent(); + prcView.refreshViewer(); + } + } + else { + String content = resp.getEntity().toString(); + ToolCustomizationUtils.showErrorDialog("PRC Client Result","Unknown error" + content); + } + } + else { + + ToolCustomizationUtils.showErrorDialog("PRC Client Result","Unknown error: Could not get any response from repository."); + } + + + } +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/ExpandAllAction.java b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/ExpandAllAction.java new file mode 100644 index 0000000000000000000000000000000000000000..a1facb6cf0b9934a90aea59e8f1f1bcaedb6dca7 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/ExpandAllAction.java @@ -0,0 +1,25 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.ui.IWorkbenchCommandConstants; +import org.eclipse.ui.navigator.CommonViewer; + +public class ExpandAllAction extends Action implements IAction +{ + private final CommonViewer commonViewer; + + public ExpandAllAction(CommonViewer aViewer) { + super("Expand All"); + setToolTipText("Expand All"); + setActionDefinitionId(IWorkbenchCommandConstants.NAVIGATE_EXPAND_ALL); + + this.commonViewer = aViewer; + } + + public void run() { + if (this.commonViewer != null) + this.commonViewer.expandAll(); + } +} + diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/FinishDeploymentAction.java b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/FinishDeploymentAction.java new file mode 100644 index 0000000000000000000000000000000000000000..025ea71bbfed0f3a5c60243fee48a907e2620a97 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/FinishDeploymentAction.java @@ -0,0 +1,61 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.restlet.Response; +import org.restlet.data.Protocol; + +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.PiacereRuntimeControllerViewPart; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.DeploymentClientUtil; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.PRCClientUtil; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.PiacereDeployment; +import eu.piacere.piacereTool.utils.ToolCustomizationUtils; + + +public class FinishDeploymentAction extends Action implements IAction +{ + + public void run() { + PiacereRuntimeControllerViewPart repositoriesView = DeploymentClientUtil.getRuntimeControllerView(); + ISelection selection = repositoriesView.getCommonViewer().getSelection(); + if (selection instanceof StructuredSelection) { + StructuredSelection sel = (StructuredSelection)selection; + Object selectedObject = sel.getFirstElement(); + if (selectedObject instanceof PiacereDeployment) { + PiacereDeployment deployment = (PiacereDeployment)selectedObject; + + String protocol = ToolCustomizationUtils.getPreference(this.getClass(), "KR10.protocol"); + String host = ToolCustomizationUtils.getPreference(this.getClass(), "KR10.host"); + String port = ToolCustomizationUtils.getPreference(this.getClass(), "KR10.port"); + Protocol p = null; + if(protocol.equals("http")) { + p=Protocol.HTTP; + } + else if(protocol.equals("https")) { + p=Protocol.HTTPS; + } + + Response resp=PRCClientUtil.finishDeploymentPOST(protocol+"://"+host+":"+port+"/", p, deployment);//return ; + if(resp!=null) { + if(resp.getStatus().getCode()/100==2){ + PiacereRuntimeControllerViewPart prcView = DeploymentClientUtil.getRuntimeControllerView(); + if (prcView != null) { + prcView.getPiacereRuntimeController().reloadContent(); + prcView.refreshViewer(); + } + } + else { + String content = resp.getEntity().toString(); + ToolCustomizationUtils.showErrorDialog("PRC Client Result","Unknown error" + content); + } + } + else { + + ToolCustomizationUtils.showErrorDialog("PRC Client Result","Unknown error: Could not get any response from repository."); + } + } + } + } +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/GetDeploymentInfoAction.java b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/GetDeploymentInfoAction.java new file mode 100644 index 0000000000000000000000000000000000000000..19f4b950161df89704bd01a07096773833a81b19 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/GetDeploymentInfoAction.java @@ -0,0 +1,49 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.json.JSONException; +import org.json.JSONObject; +import org.restlet.data.Protocol; + +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.PiacereRuntimeControllerViewPart; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.DeploymentClientUtil; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.PRCClientUtil; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.PiacereDeployment; +import eu.piacere.piacereTool.utils.ToolCustomizationUtils; + + +public class GetDeploymentInfoAction extends Action implements IAction +{ + public void run() { + PiacereRuntimeControllerViewPart repositoriesView = DeploymentClientUtil.getRuntimeControllerView(); + ISelection selection = repositoriesView.getCommonViewer().getSelection(); + if (selection instanceof StructuredSelection) { + StructuredSelection sel = (StructuredSelection)selection; + Object selectedObject = sel.getFirstElement(); + if (selectedObject instanceof PiacereDeployment) { + PiacereDeployment deployment = (PiacereDeployment)selectedObject; + + String protocol = ToolCustomizationUtils.getPreference(this.getClass(), "KR10.protocol"); + String host = ToolCustomizationUtils.getPreference(this.getClass(), "KR10.host"); + String port = ToolCustomizationUtils.getPreference(this.getClass(), "KR10.port"); + Protocol p = null; + if(protocol.equals("http")) { + p=Protocol.HTTP; + } + else if(protocol.equals("https")) { + p=Protocol.HTTPS; + } + JSONObject res=PRCClientUtil.retrieveDeploymentGet(protocol+"://"+host+":"+port+"/", p, deployment); + + try { + ToolCustomizationUtils.showInformationDialog("Deployment Information", res.toString(4)); + } catch (JSONException e) { + e.printStackTrace(); + } + } + } + } +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/OpenPerformanceMonitoringAction.java b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/OpenPerformanceMonitoringAction.java new file mode 100644 index 0000000000000000000000000000000000000000..5e04bbfebbdaef6a45c9f2155c2ab38968a0fa78 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/OpenPerformanceMonitoringAction.java @@ -0,0 +1,43 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions; + +import java.net.URL; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.browser.IWebBrowser; + +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.PiacereRuntimeControllerViewPart; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.DeploymentClientUtil; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.PiacereDeployment; + + +public class OpenPerformanceMonitoringAction extends Action implements IAction +{ + public void run() { + PiacereRuntimeControllerViewPart repositoriesView = DeploymentClientUtil.getRuntimeControllerView(); + ISelection selection = repositoriesView.getCommonViewer().getSelection(); + if (selection instanceof StructuredSelection) { + StructuredSelection sel = (StructuredSelection)selection; + Object selectedObject = sel.getFirstElement(); + if (selectedObject instanceof PiacereDeployment) { + String url=DeploymentClientUtil.getPerformanceMonitoringURL((PiacereDeployment)selectedObject, "performance"); + if(url==null) url="https://grafana.pm.ci.piacere.digital.tecnalia.dev/d/m69joqMVk/performance?orgId=1"; + try { + openWeb(url, ((PiacereDeployment)selectedObject).getDeploymentID()); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + } + + + private void openWeb(String webURL, String deploymentID) throws Exception { + final IWebBrowser browser = PlatformUI.getWorkbench().getBrowserSupport().createBrowser(deploymentID); + browser.openURL(new URL(webURL)); + } +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/OpenPerformanceSelfLearningMonitoringAction.java b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/OpenPerformanceSelfLearningMonitoringAction.java new file mode 100644 index 0000000000000000000000000000000000000000..193fd10aa9b17903fd2ec0c7c254d971afa19f7c --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/OpenPerformanceSelfLearningMonitoringAction.java @@ -0,0 +1,43 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions; + +import java.net.URL; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.browser.IWebBrowser; + +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.PiacereRuntimeControllerViewPart; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.DeploymentClientUtil; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.PiacereDeployment; + + +public class OpenPerformanceSelfLearningMonitoringAction extends Action implements IAction +{ + public void run() { + PiacereRuntimeControllerViewPart repositoriesView = DeploymentClientUtil.getRuntimeControllerView(); + ISelection selection = repositoriesView.getCommonViewer().getSelection(); + if (selection instanceof StructuredSelection) { + StructuredSelection sel = (StructuredSelection)selection; + Object selectedObject = sel.getFirstElement(); + if (selectedObject instanceof PiacereDeployment) { + String url=DeploymentClientUtil.getPerformanceMonitoringURL((PiacereDeployment)selectedObject, "performance-self-learning"); + if(url==null) url="https://grafana.pm.ci.piacere.digital.tecnalia.dev/d/G39CTqMVk/performance-self-learning?orgId=1"; + try { + openWeb(url, ((PiacereDeployment)selectedObject).getDeploymentID()); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + } + + + private void openWeb(String webURL, String deploymentID) throws Exception { + final IWebBrowser browser = PlatformUI.getWorkbench().getBrowserSupport().createBrowser(deploymentID); + browser.openURL(new URL(webURL)); + } +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/OpenSecurityMonitoringAction.java b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/OpenSecurityMonitoringAction.java new file mode 100644 index 0000000000000000000000000000000000000000..c85adde209fc651d0424923e4a3808eeff850a8f --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/OpenSecurityMonitoringAction.java @@ -0,0 +1,43 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions; + +import java.net.URL; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.browser.IWebBrowser; + +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.PiacereRuntimeControllerViewPart; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.DeploymentClientUtil; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.PiacereDeployment; + + +public class OpenSecurityMonitoringAction extends Action implements IAction +{ + public void run() { + PiacereRuntimeControllerViewPart repositoriesView = DeploymentClientUtil.getRuntimeControllerView(); + ISelection selection = repositoriesView.getCommonViewer().getSelection(); + if (selection instanceof StructuredSelection) { + StructuredSelection sel = (StructuredSelection)selection; + Object selectedObject = sel.getFirstElement(); + if (selectedObject instanceof PiacereDeployment) { + String url=DeploymentClientUtil.getSecurityMonitoringURL((PiacereDeployment)selectedObject); + if(url==null) url="https://sm-wazuh-kibana.ci.piacere.digital.tecnalia.dev/"; + try { + openWeb(url, ((PiacereDeployment)selectedObject).getDeploymentID()); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + } + + + private void openWeb(String webURL, String deploymentID) throws Exception { + final IWebBrowser browser = PlatformUI.getWorkbench().getBrowserSupport().createBrowser(deploymentID); + browser.openURL(new URL(webURL)); + } +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/OpenSecuritySelfLearningMonitoringAction.java b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/OpenSecuritySelfLearningMonitoringAction.java new file mode 100644 index 0000000000000000000000000000000000000000..62c8824b78fa6bc87eab55f593e2a844386eb0ec --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/OpenSecuritySelfLearningMonitoringAction.java @@ -0,0 +1,43 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions; + +import java.net.URL; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.browser.IWebBrowser; + +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.PiacereRuntimeControllerViewPart; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.DeploymentClientUtil; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.PiacereDeployment; + + +public class OpenSecuritySelfLearningMonitoringAction extends Action implements IAction +{ + public void run() { + PiacereRuntimeControllerViewPart repositoriesView = DeploymentClientUtil.getRuntimeControllerView(); + ISelection selection = repositoriesView.getCommonViewer().getSelection(); + if (selection instanceof StructuredSelection) { + StructuredSelection sel = (StructuredSelection)selection; + Object selectedObject = sel.getFirstElement(); + if (selectedObject instanceof PiacereDeployment) { + String url=DeploymentClientUtil.getSecuritySelfLearningMonitoringURL((PiacereDeployment)selectedObject); + if(url==null) url="https://piacere-security-monitoring.xlab.si/grafana/"; + try { + openWeb(url, ((PiacereDeployment)selectedObject).getDeploymentID()); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + } + + + private void openWeb(String webURL, String deploymentID) throws Exception { + final IWebBrowser browser = PlatformUI.getWorkbench().getBrowserSupport().createBrowser(deploymentID); + browser.openURL(new URL(webURL)); + } +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/OpenSelfHealingAction.java b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/OpenSelfHealingAction.java new file mode 100644 index 0000000000000000000000000000000000000000..218abab1f15ee72371eb422e95fbd1b74f232b59 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/OpenSelfHealingAction.java @@ -0,0 +1,43 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions; + +import java.net.URL; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.browser.IWebBrowser; + +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.PiacereRuntimeControllerViewPart; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.DeploymentClientUtil; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.PiacereDeployment; + + +public class OpenSelfHealingAction extends Action implements IAction +{ + public void run() { + PiacereRuntimeControllerViewPart repositoriesView = DeploymentClientUtil.getRuntimeControllerView(); + ISelection selection = repositoriesView.getCommonViewer().getSelection(); + if (selection instanceof StructuredSelection) { + StructuredSelection sel = (StructuredSelection)selection; + Object selectedObject = sel.getFirstElement(); + if (selectedObject instanceof PiacereDeployment) { + String url=DeploymentClientUtil.getSelfHealingURL((PiacereDeployment)selectedObject); + if(url==null) url="https://sh.ci.piacere.digital.tecnalia.dev/"; + try { + openWeb(url, ((PiacereDeployment)selectedObject).getDeploymentID()); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + } + + + private void openWeb(String webURL, String deploymentID) throws Exception { + final IWebBrowser browser = PlatformUI.getWorkbench().getBrowserSupport().createBrowser(deploymentID); + browser.openURL(new URL(webURL)); + } +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/PiacereRuntimeControllerViewActionGroup.java b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/PiacereRuntimeControllerViewActionGroup.java new file mode 100644 index 0000000000000000000000000000000000000000..e1f771256ad6f4a5810847baec329213a70e30ff --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/PiacereRuntimeControllerViewActionGroup.java @@ -0,0 +1,53 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions; + +import org.eclipse.jface.action.Separator; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.ui.IActionBars; +import org.eclipse.ui.actions.ActionGroup; +import org.eclipse.ui.navigator.CommonViewer; +import org.eclipse.ui.plugin.AbstractUIPlugin; + + +public class PiacereRuntimeControllerViewActionGroup extends ActionGroup +{ + private final CommonViewer commonViewer; + + public PiacereRuntimeControllerViewActionGroup(CommonViewer viewer) { + this.commonViewer = viewer; + } + + protected final ImageDescriptor getImageDescriptor(String relativePath) { + return AbstractUIPlugin.imageDescriptorFromPlugin("PiacereIDEIntegration.KR10_KR11_KR12", relativePath); + } + + public void fillActionBars(IActionBars actionBars) { + + RefreshAction ra = new RefreshAction(); + ra.setText("Refresh All"); + ra.setImageDescriptor(getImageDescriptor("icons/refresh.gif")); + + CreateDeploymentAction cda = new CreateDeploymentAction(); + cda.setText("Create Deployment"); + cda.setImageDescriptor(getImageDescriptor("icons/addRepository.png")); + + CollapseAllAction ca = new CollapseAllAction(this.commonViewer); + ca.setText("Collapse All"); + ca.setImageDescriptor(getImageDescriptor("icons/collapseAll.gif")); + + ExpandAllAction ea = new ExpandAllAction(this.commonViewer); + ea.setText("Expand All"); + ea.setImageDescriptor(getImageDescriptor("icons/expandAll.gif")); + + actionBars.getMenuManager().add(ra); + actionBars.getMenuManager().add(new Separator("additions")); + actionBars.getMenuManager().add(cda); + //actionBars.getMenuManager().add(new Separator("additions")); + //actionBars.getMenuManager().add(ca); + //actionBars.getMenuManager().add(ea); + } +} + + + + + diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/RefreshAction.java b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/RefreshAction.java new file mode 100644 index 0000000000000000000000000000000000000000..8d6f0d08758856fdb9f6aa217e4287056352ddd7 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/RefreshAction.java @@ -0,0 +1,18 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions; + +import org.eclipse.jface.action.Action; + +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.PiacereRuntimeControllerViewPart; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.DeploymentClientUtil; + +public class RefreshAction extends Action +{ + public void run() { + super.run(); + PiacereRuntimeControllerViewPart prcView = DeploymentClientUtil.getRuntimeControllerView(); + if (prcView != null) { + prcView.getPiacereRuntimeController().reloadContent(); + prcView.refreshViewer(); + } + } +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/old/AddRepositoryLocationAction.java b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/old/AddRepositoryLocationAction.java new file mode 100644 index 0000000000000000000000000000000000000000..c72dbb36bcd47feae0ae0916fba50de4a3c15a5c --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/old/AddRepositoryLocationAction.java @@ -0,0 +1,53 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions.old; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; + + +public class AddRepositoryLocationAction extends Action implements IAction +{ + public void run() { + /*PiacereRuntimeControllerViewPart repositoriesView = DeploymentClientUtil.getModelRepositoriesView(); + if (repositoriesView != null) { + + AddRepositoryLocationDialog dialog = new AddRepositoryLocationDialog(repositoriesView.getSite().getShell()); + + if (dialog.open() == 0) { + String host = dialog.getHost(); + String repositoryPath = dialog.getRepositoryPath(); + String repositoryName = dialog.getRepositoryName(); + + + if (existingLocation(repositoriesView, host, repositoryPath)) { + MessageDialog.openError(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), "Repository Already Exists", "The repository location already exists"); + } + else { + + RepositoryLocation location = new RepositoryLocation(host, repositoryPath, repositoryName); + + if(DeploymentClientUtil.testConnection(location, true)) { + location.reloadContent(); + repositoriesView.getLocations().add(location); + repositoriesView.getCommonViewer().setInput(repositoriesView.getLocations()); + + } + } + } + } */ + } + + + + /*private boolean existingLocation(PiacereRuntimeControllerViewPart repositoriesView, String host, String repositoryPath) { + List<RepositoryLocation> locations = repositoriesView.getLocations(); + + for (RepositoryLocation location : locations) { + if (location.getHost().equals(host) && + location.getRepositoryPath().equals(repositoryPath)) + { + return true; + } + } + return false; + }*/ +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/old/DeleteModelAction.java b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/old/DeleteModelAction.java new file mode 100644 index 0000000000000000000000000000000000000000..f1b05f706b5c41482e07ab378256bd0510581245 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/old/DeleteModelAction.java @@ -0,0 +1,64 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions.old; + +import org.eclipse.jface.action.Action; + +public class DeleteModelAction extends Action +{ + public void run() { + super.run(); + + /*boolean result = MessageDialog.openConfirm(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), "Delete Model From Repository", "Are you sure you want to delete the selected model from the repository location?"); + + if (result) { + + IWorkbenchPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActivePart(); + + if (part instanceof FadaModelRepositoriesPart) { + FadaModelRepositoriesPart rv = (FadaModelRepositoriesPart)part; + ISelection selection = rv.getCommonViewer().getSelection(); + if (selection instanceof StructuredSelection) { + StructuredSelection sel = (StructuredSelection)selection; + Object selectedObject = sel.getFirstElement(); + if (selectedObject instanceof AppComponentsModelVersion) { + AppComponentsModelVersion theModelToDownload = (AppComponentsModelVersion)selectedObject; + String theURL="/modelsRepository/" + theModelToDownload.getModel().getApp().getAppName() + "/cm/" + theModelToDownload.getModel().getAppComponentsModelName() + "/" + theModelToDownload.getVersion(); + boolean respuesta=DeploymentClientUtil.doDelete(theURL, theModelToDownload.getModel().getApp().getAppLocation()); + if(!respuesta) { + ErrorDialog.openError(null, "Error", "Error deleting Components Model",null, IStatus.ERROR); + } + else { + theModelToDownload.getModel().getAppComponentsModelVersions().remove(theModelToDownload.getVersion()); + if(theModelToDownload.getModel().getAppComponentsModelVersions().size()==0) { + theModelToDownload.getModel().getApp().getAppComponentsModels().remove(theModelToDownload.getModel().getAppComponentsModelName()); + } + if(theModelToDownload.getModel().getApp().getAppComponentsModels().size()+theModelToDownload.getModel().getApp().getAppSystemConfigurationModels().size()==0) { + theModelToDownload.getModel().getApp().getAppLocation().getRepositoryApps().remove(theModelToDownload.getModel().getApp().getAppName()); + } + + } + } + else if (selectedObject instanceof AppSystemConfigurationModelVersion) { + AppSystemConfigurationModelVersion theModelToDownload = (AppSystemConfigurationModelVersion)selectedObject; + String theURL="/modelsRepository/" + theModelToDownload.getModel().getApp().getAppName() + "/scm/" + theModelToDownload.getModel().getAppSystemConfigurationModelName() + "/" + theModelToDownload.getVersion(); + boolean respuesta=DeploymentClientUtil.doDelete(theURL, theModelToDownload.getModel().getApp().getAppLocation()); + if(!respuesta) { + ErrorDialog.openError(null, "Error", "Error deleting System Configuration Model",null, IStatus.ERROR); + } + else { + theModelToDownload.getModel().getAppSystemConfigurationModelVersions().remove(theModelToDownload.getVersion()); + if(theModelToDownload.getModel().getAppSystemConfigurationModelVersions().size()==0) { + theModelToDownload.getModel().getApp().getAppSystemConfigurationModels().remove(theModelToDownload.getModel().getAppSystemConfigurationModelName()); + } + if(theModelToDownload.getModel().getApp().getAppComponentsModels().size()+theModelToDownload.getModel().getApp().getAppSystemConfigurationModels().size()==0) { + theModelToDownload.getModel().getApp().getAppLocation().getRepositoryApps().remove(theModelToDownload.getModel().getApp().getAppName()); + } + + } + } + rv.refreshViewer(); + } + } + }*/ + } +} + diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/old/DiscardLocationAction.java b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/old/DiscardLocationAction.java new file mode 100644 index 0000000000000000000000000000000000000000..c5af3facb16a9e80d684e75a7b1faeb5c7724bc1 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/old/DiscardLocationAction.java @@ -0,0 +1,37 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions.old; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.PlatformUI; + +public class DiscardLocationAction extends Action +{ + public void run() { + super.run(); + + boolean result = MessageDialog.openConfirm(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), "Discard Repository", "Are you sure you want to discard the selected repository location?"); + + if (result) { + + IWorkbenchPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActivePart(); + + /*if (part instanceof FadaModelRepositoriesPart) { + FadaModelRepositoriesPart rv = (FadaModelRepositoriesPart)part; + ISelection selection = rv.getCommonViewer().getSelection(); + if (selection instanceof StructuredSelection) { + StructuredSelection sel = (StructuredSelection)selection; + Object selectedobject = sel.getFirstElement(); + if (selectedobject instanceof RepositoryLocation) { + RepositoryLocation rp = (RepositoryLocation)selectedobject; + rv.getLocations().remove(rp); + rv.refreshViewer(); + } + } + } */ + } + } +} + diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/old/DownloadModelAction.java b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/old/DownloadModelAction.java new file mode 100644 index 0000000000000000000000000000000000000000..4396288f8c2167b625ff853e3da3d940c5c0cc6d --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/actions/old/DownloadModelAction.java @@ -0,0 +1,121 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.actions.old; + + + + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; + +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.core.runtime.Path; +import org.eclipse.jface.action.Action; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.dialogs.ContainerSelectionDialog; +import org.json.JSONException; +import org.json.JSONObject; + +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.DeploymentClientUtil; + +public class DownloadModelAction extends Action +{ + public void run() { + super.run(); + + /*IWorkbenchPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActivePart(); + + if (part instanceof FadaModelRepositoriesPart) { + FadaModelRepositoriesPart rv = (FadaModelRepositoriesPart)part; + ISelection selection = rv.getCommonViewer().getSelection(); + if (selection instanceof StructuredSelection) { + StructuredSelection sel = (StructuredSelection)selection; + Object selectedObject = sel.getFirstElement(); + if (selectedObject instanceof AppComponentsModelVersion) { + AppComponentsModelVersion theModelToDownload = (AppComponentsModelVersion)selectedObject; + String destDirectory = getDestDirectory(); + if(destDirectory!=null) { + + String theURL="/modelsRepository/" + theModelToDownload.getModel().getApp().getAppName() + "/cm/" + theModelToDownload.getModel().getAppComponentsModelName() + "/" + theModelToDownload.getVersion(); + JSONObject respuesta=DeploymentClientUtil.doGet(theURL, theModelToDownload.getModel().getApp().getAppLocation()); + if(respuesta!=null) { + try { + String fileName=theModelToDownload.getAppCMFileName(); + createFile(destDirectory+File.separator+fileName, respuesta.getString("CM")); + ResourcesPlugin.getWorkspace().getRoot().refreshLocal(IResource.DEPTH_INFINITE, new NullProgressMonitor()); + } catch (IOException | JSONException | CoreException e) { + e.printStackTrace(); + } + } + } + } + else if (selectedObject instanceof AppSystemConfigurationModelVersion) { + AppSystemConfigurationModelVersion theModelToDownload = (AppSystemConfigurationModelVersion)selectedObject; + String destDirectory = getDestDirectory(); + if(destDirectory!=null) { + String theURL="/modelsRepository/" + theModelToDownload.getModel().getApp().getAppName() + "/scm/" + theModelToDownload.getModel().getAppSystemConfigurationModelName() + "/" + theModelToDownload.getVersion(); + JSONObject respuesta=DeploymentClientUtil.doGet(theURL, theModelToDownload.getModel().getApp().getAppLocation()); + if(respuesta!=null) { + try { + String scmFileName=theModelToDownload.getAppSCMFileName(); + String cmFileName=theModelToDownload.getModel().getApp().getAppComponentsModels().get(theModelToDownload.getAppComponentsModelReference().getAppComponentsModelReferenceName()).getAppComponentsModelVersions().get(theModelToDownload.getAppComponentsModelReference().getAppComponentsModelReferenceVersion()).getAppCMFileName(); + createFile(destDirectory+File.separator+cmFileName, respuesta.getString("CM")); + createFile(destDirectory+File.separator+scmFileName, changeReference(respuesta.getString("SCM"), cmFileName)); + ResourcesPlugin.getWorkspace().getRoot().refreshLocal(IResource.DEPTH_INFINITE, new NullProgressMonitor()); + + } catch (IOException | JSONException | CoreException e) { + e.printStackTrace(); + } + } + } + } + } + } */ + } + + + + private void createFile(String fileURI, String fileContent) throws IOException { + File f = new File(fileURI); + f.getParentFile().mkdirs(); + if(!f.exists()) { + f.createNewFile(); + } + FileWriter fw = new FileWriter(f); + fw.write(fileContent); + fw.flush(); + fw.close(); + } + + + private String changeReference(String scmAsString, String cmFileName) { + String toReplace = scmAsString.split("<componentsModel href=\"")[1].split("#")[0]; + String scmAsString2 = scmAsString.replace(toReplace, cmFileName); + return scmAsString2; + } + + private String getDestDirectory() { + + ContainerSelectionDialog csd = new ContainerSelectionDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), ResourcesPlugin.getWorkspace().getRoot(), true, "Select the destination directory"); + String dir=null; + if(csd.open()==ContainerSelectionDialog.OK) { + Object[] result = csd.getResult(); + if (result.length == 1) { + dir=((Path)result[0]).toOSString(); + String s = ResourcesPlugin.getWorkspace().getRoot().getLocationURI().toString(); + if(s.startsWith("file:")) { + s=s.substring(5); + } + return s+dir; + } + } + return dir == null ? null : dir; + + } +} + diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/providers/PRCContentProvider.java b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/providers/PRCContentProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..4c3d5b8e32c8c5f44f98bcaf07bcf2f9b0d09745 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/providers/PRCContentProvider.java @@ -0,0 +1,60 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.providers; + +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider; + +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.PiacereDeployment; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.PiacereRuntimeController; + +public class PRCContentProvider extends AdapterFactoryContentProvider +{ + public PRCContentProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + + } + + @SuppressWarnings("unchecked") + public Object[] getElements(Object object) { + if (object instanceof List) { + List<PiacereRuntimeController> elements = (List<PiacereRuntimeController>)object; + return elements.toArray(); + } + if (object instanceof PiacereRuntimeController) { + return ((PiacereRuntimeController)object).getDeployments().values().toArray(); + + } + + return super.getElements(object); + } + + + + public boolean hasChildren(Object object) { + if (object instanceof PiacereRuntimeController) { + return ((PiacereRuntimeController)object).getDeployments().size()>0; + } + else if(object instanceof PiacereDeployment) { + return false; + } + return super.hasChildren(object); + } + + + + public Object[] getChildren(Object object) { + if (object instanceof PiacereRuntimeController) { + PiacereRuntimeController prc = (PiacereRuntimeController)object; + ArrayList<Object> assets = new ArrayList<Object>(); + for(PiacereDeployment dep : prc.getDeployments().values()) { + assets.add(dep); + } + return assets.toArray(); + } + return null; + } + +} + diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/providers/PRCLabelProvider.java b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/providers/PRCLabelProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..a447236af07b5ab093b5565b7e46335668854a47 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/providers/PRCLabelProvider.java @@ -0,0 +1,94 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.providers; + +import java.io.IOException; + +import org.eclipse.core.runtime.FileLocator; +import org.eclipse.core.runtime.Platform; +import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.swt.graphics.Device; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.widgets.Display; + +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.PiacereDeployment; +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util.PiacereRuntimeController; + +public class PRCLabelProvider extends LabelProvider +{ + + public String getText(Object element) { + if (element instanceof PiacereRuntimeController) { + return getPiacereRuntimeControllerLabel((PiacereRuntimeController)element); + } + else if(element instanceof PiacereDeployment) { + return "Deployment ID: "+((PiacereDeployment)element).getDeploymentID(); + } + return super.getText(element); + } + + public Image getImage(Object element) { + try { + String imagePath = FileLocator.toFileURL(Platform.getBundle("PiacereIDEIntegration.KR10_KR11_KR12").getResource("icons/")).getPath(); + /*if (element instanceof PiacereRuntimeController) { + Image image = null; + if(((PiacereRuntimeController)element).isConnected()) { + image = new Image((Device)Display.getCurrent(), String.valueOf(imagePath) + "RepoConnected.png"); + } + else { + image = new Image((Device)Display.getCurrent(), String.valueOf(imagePath) + "RepoDisconnected.png"); + } + return image; + } + else */ + if (element instanceof PiacereDeployment) { + Image image = new Image((Device)Display.getCurrent(), String.valueOf(imagePath) + "repository.png"); + return image; + } + /*else if (element instanceof AppComponentsModel) { + Image image = new Image((Device)Display.getCurrent(), String.valueOf(imagePath) + "ComponentsModel.png"); + return image; + } + else if (element instanceof AppSystemConfigurationModel) { + Image image = new Image((Device)Display.getCurrent(), String.valueOf(imagePath) + "SystemConfigurationModel.png"); + return image; + } + + else if (element instanceof AppComponentsModelVersion) { + Image image = new Image((Device)Display.getCurrent(), String.valueOf(imagePath) + "bundle.png"); + return image; + } + else if (element instanceof AppSystemConfigurationModelVersion) { + Image image = new Image((Device)Display.getCurrent(), String.valueOf(imagePath) + "bundle.png"); + return image; + } + + else if (element instanceof AppComponentsModelReference) { + Image image = new Image((Device)Display.getCurrent(), String.valueOf(imagePath) + "ref.png"); + return image; + } */ + } catch (IOException iOException) { + return null; + } + return super.getImage(element); + } + + + private String getPiacereRuntimeControllerLabel(PiacereRuntimeController prc) { + String res=prc.getPiacereRuntimeControllerURL(); + + /*if(location.getName()!=null && location.getName()!="") { + res = location.getName()+": "; + } + + String host = (location.getHost() == null) ? "" : location.getHost(); + String repositoryPath = (location.getRepositoryPath() == null) ? "" : location.getRepositoryPath(); + + return res+host + "/" + repositoryPath;*/ + return res; + } + +} + + + + + diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/util/DeploymentClientUtil.java b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/util/DeploymentClientUtil.java new file mode 100644 index 0000000000000000000000000000000000000000..0c1ce410d7f74995eebe06b29be06db5abdc7e8f --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/util/DeploymentClientUtil.java @@ -0,0 +1,171 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util; + +import org.eclipse.ui.IViewPart; +import org.eclipse.ui.PlatformUI; +import org.json.JSONObject; +import org.restlet.Client; +import org.restlet.Context; +import org.restlet.data.Protocol; +import org.restlet.resource.ClientResource; + +import eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.PiacereRuntimeControllerViewPart; +import eu.piacere.piacereTool.utils.ToolCustomizationUtils; + +public class DeploymentClientUtil { + + public static String getPerformanceMonitoringURL(PiacereDeployment deployment, String dashboardTitle) { + + String protocol = ToolCustomizationUtils.getPreference(DeploymentClientUtil.class, "KR11_12.protocol"); + String host = ToolCustomizationUtils.getPreference(DeploymentClientUtil.class, "KR11_12.host"); + String port = ToolCustomizationUtils.getPreference(DeploymentClientUtil.class, "KR11_12.port"); + String epURL = protocol+"://"+host+":"+port+"/"; + Protocol p = null; + if(protocol.equals("http")) { + p=Protocol.HTTP; + } + else { + p=Protocol.HTTPS; + } + Client client = new Client(new Context(), p); + + ClientResource service = new ClientResource(epURL); + service.setNext(client); + try { + ClientResource resource = service.getChild("pmc/api/v1/deployments/"+deployment.getDeploymentID()+"/"+dashboardTitle); + + if(resource.getStatus().getCode()==200){ + JSONObject respuesta= new JSONObject(resource.get().getText()); + if(respuesta.has("dashboard_url")) { + return respuesta.getString("dashboard_url"); + } + } + } + catch (Exception e) { + e.printStackTrace(); + } + + return null; + + //return "https://grafana.pm.ci.piacere.digital.tecnalia.dev/d/ADRVbdL7z/piacere-monitoring-dashboard-influx-v1?orgId=1"; + } + + + /*public static JSONObject doGet(String getURL, RepositoryLocation modelLocation) { + + if(modelLocation.isConnected()) { + + Protocol p = null; + if(modelLocation.getHost().split("://")[0].equals("http")) { + p=Protocol.HTTP; + } + else { + p=Protocol.HTTPS; + } + Client client = new Client(new Context(), p); + + ClientResource service = new ClientResource(modelLocation.getRepositoryURL()); + service.setNext(client); + ClientResource resource = service.getChild(getURL); + String respuesta=""; + try { + respuesta=resource.get().getText(); + return new JSONObject(respuesta); + } + catch (Exception e) { + e.printStackTrace(); + } + } + return null; + } + + public static boolean doDelete(String deleteURL, RepositoryLocation modelLocation) { + + if(modelLocation.isConnected()) { + + Protocol p = null; + if(modelLocation.getHost().split("://")[0].equals("http")) { + p=Protocol.HTTP; + } + else { + p=Protocol.HTTPS; + } + Client client = new Client(new Context(), p); + + ClientResource service = new ClientResource(modelLocation.getRepositoryURL()); + service.setNext(client); + ClientResource resource = service.getChild(deleteURL); + try { + resource.delete(); + return resource.getResponse().getStatus().getCode()/100==2; + } + catch (Exception e) { + e.printStackTrace(); + } + } + return false; + } + + public static boolean doPut(String putURL, Object objectToPut, RepositoryLocation modelLocation) { + + if(modelLocation.isConnected()) { + + Protocol p = null; + if(modelLocation.getHost().split("://")[0].equals("http")) { + p=Protocol.HTTP; + } + else { + p=Protocol.HTTPS; + } + Client client = new Client(new Context(), p); + + ClientResource service = new ClientResource(modelLocation.getRepositoryURL()); + service.setNext(client); + ClientResource resource = service.getChild(putURL); + try { + resource.put(resource.toRepresentation(objectToPut.toString(), MediaType.APPLICATION_JSON)); + return resource.getResponse().getStatus().getCode()/100==2; + } + catch (Exception e) { + e.printStackTrace(); + } + } + return false; + }*/ + + public static boolean testConnection(PiacereRuntimeController prc, boolean showErrors) { + return prc.isConnected(); + + } + + public static PiacereRuntimeControllerViewPart getRuntimeControllerView() { + try { + IViewPart viewPart = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView("PiacereIDEIntegration.KR10KR11KR12.PiacereRuntimeControllerViewPart"); + if (viewPart instanceof PiacereRuntimeControllerViewPart) + return (PiacereRuntimeControllerViewPart)viewPart; + } catch (Exception exception) { + return null; + } + return null; + } + + + public static String getSelfHealingURL(PiacereDeployment selectedObject) { + // TODO Auto-generated method stub + return null; + } + + + public static String getSecuritySelfLearningMonitoringURL(PiacereDeployment selectedObject) { + // TODO Auto-generated method stub + return null; + } + + + public static String getSecurityMonitoringURL(PiacereDeployment selectedObject) { + // TODO Auto-generated method stub + return null; + } + + + +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/util/PRCClientUtil.java b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/util/PRCClientUtil.java new file mode 100644 index 0000000000000000000000000000000000000000..3e0d04752b19d39bfc676778c588127e06cc0f56 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/util/PRCClientUtil.java @@ -0,0 +1,102 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util; + +import org.json.JSONArray; +import org.json.JSONObject; +import org.restlet.Client; +import org.restlet.Context; +import org.restlet.Response; +import org.restlet.data.MediaType; +import org.restlet.data.Protocol; +import org.restlet.representation.EmptyRepresentation; +import org.restlet.resource.ClientResource; + +public class PRCClientUtil { + + public static JSONArray retrieveAllDeploymentsGet(String getURL, Protocol proto) { + + Client client = new Client(new Context(), proto); + + ClientResource service = new ClientResource(getURL); + service.setNext(client); + ClientResource resource = service.getChild("deployments"); + String respuesta=""; + try { + respuesta=resource.get().getText(); + if(respuesta.equals("[]")) { + //respuesta="[{\"deploymentId\": \"123e4567-e89b-12d3-a456-426614174000\"}]"; + } + return new JSONArray(respuesta); + } + catch (Exception e) { + e.printStackTrace(); + } + return null; + + } + + public static JSONObject retrieveDeploymentGet(String getURL, Protocol proto, PiacereDeployment deployment) { + + Client client = new Client(new Context(), proto); + + ClientResource service = new ClientResource(getURL); + service.setNext(client); + ClientResource resource = service.getChild("deployments/"+deployment.getDeploymentID()); + String respuesta=""; + try { + respuesta=resource.get().getText(); + return new JSONObject(respuesta); + } + catch (Exception e) { + e.printStackTrace(); + } + return null; + + } + + + + public static Response createDeploymentPOST(String postURL, Protocol proto, String repositoryURL, String deploymentID, String commitID) { + + Client client = new Client(new Context(), proto); + + ClientResource service = new ClientResource(postURL); + service.setNext(client); + try { + ClientResource resource = service.getChild("deployments"); + JSONObject objectToPost=new JSONObject(); + objectToPost.put("repository_url", repositoryURL); + objectToPost.put("deployment_id", deploymentID); + objectToPost.put("commit_id", commitID); + + resource.post(resource.toRepresentation(objectToPost.toString(), MediaType.APPLICATION_JSON)); + //return resource.getResponse().getStatus().getCode()/100==2; + return resource.getResponse(); + } + catch (Exception e) { + e.printStackTrace(); + } + + return null; + } + + + + public static Response finishDeploymentPOST(String postURL, Protocol proto, PiacereDeployment deployment) { + + Client client = new Client(new Context(), proto); + + ClientResource service = new ClientResource(postURL); + service.setNext(client); + try { + ClientResource resource = service.getChild("deployments/"+deployment.getDeploymentID()+"/finish"); + resource.post(new EmptyRepresentation()); + //return resource.getResponse().getStatus().getCode()/100==2; + return resource.getResponse(); + } + catch (Exception e) { + e.printStackTrace(); + } + + return null; + } +} \ No newline at end of file diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/util/PiacereDeployment.java b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/util/PiacereDeployment.java new file mode 100644 index 0000000000000000000000000000000000000000..462857fbd9f4367d55c006f27adeb6248a7a6d96 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/util/PiacereDeployment.java @@ -0,0 +1,20 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util; + +public class PiacereDeployment { + private String deploymentID; + + + public PiacereDeployment(String id) { + this.setDeploymentID(id); + } + + + public String getDeploymentID() { + return deploymentID; + } + + + public void setDeploymentID(String deploymentID) { + this.deploymentID = deploymentID; + } +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/util/PiacereRuntimeController.java b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/util/PiacereRuntimeController.java new file mode 100644 index 0000000000000000000000000000000000000000..87ee56f70b45171eb34e68cbb9e834e8890754d4 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KR10_KR11_KR12/src/eu/piacere/ide/toolIntegration/kr10kr11kr12/viewPart/util/PiacereRuntimeController.java @@ -0,0 +1,141 @@ +package eu.piacere.ide.toolIntegration.kr10kr11kr12.viewPart.util; + +import java.util.TreeMap; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; +import org.restlet.Client; +import org.restlet.Context; +import org.restlet.data.Protocol; +import org.restlet.data.Status; +import org.restlet.resource.ClientResource; + +import eu.piacere.piacereTool.utils.ToolCustomizationUtils; + +public class PiacereRuntimeController { + + private String protocol; + private String host; + private String port; + + + public static String DEPLOYMENTS_PATH = "deployments"; + + private TreeMap<String, PiacereDeployment> rpcDeployments; + private Boolean isConnected; + + public PiacereRuntimeController() { + this.setProtocol(ToolCustomizationUtils.getPreference(this.getClass(), "KR10.protocol")); + this.setHost(ToolCustomizationUtils.getPreference(this.getClass(), "KR10.host")); + this.setPort(ToolCustomizationUtils.getPreference(this.getClass(), "KR10.port")); + this.setDeployments(new TreeMap<String,PiacereDeployment>()); + reloadContent(); + + } + + public String getProtocol() { + return protocol; + } + + public void setProtocol(String protocol) { + this.protocol = protocol; + } + + public String getHost() { + return host; + } + + public void setHost(String host) { + this.host = host; + } + + public String getPort() { + return port; + } + + public void setPort(String port) { + this.port = port; + } + + public TreeMap<String, PiacereDeployment> getDeployments() { + return rpcDeployments; + } + + public void setDeployments(TreeMap<String, PiacereDeployment> rpcDeployments) { + this.rpcDeployments = rpcDeployments; + } + + @Override + public String toString() { + return "PIACERE Runtime Controller"; + } + + public void reloadContent() { + if(this.testConnection()) { + this.setDeployments(new TreeMap<String,PiacereDeployment>()); + + Protocol p = null; + if(this.getProtocol().equals("http")) { + p=Protocol.HTTP; + } + else if(this.getProtocol().equals("https")) { + p=Protocol.HTTPS; + } + JSONArray res=PRCClientUtil.retrieveAllDeploymentsGet(getPiacereRuntimeControllerURL(), p); + for(int i = 0; i < res.length(); i++) { + try { + JSONObject obj = res.getJSONObject(i); + this.getDeployments().put(obj.getString("deploymentId"), new PiacereDeployment(obj.getString("deploymentId"))); + } catch (JSONException e) { + e.printStackTrace(); + } + } + } + } + + + + + public String getPiacereRuntimeControllerURL() { + String res = this.getProtocol()+"://"+this.getHost()+":"+this.getPort()+"/"; + return res; + } + + + public boolean testConnection() { + Protocol p = null; + if(this.getProtocol().equals("http")) { + p=Protocol.HTTP; + } + else if(this.getProtocol().equals("https")) { + p=Protocol.HTTPS; + } + if(p!=null) { + Client client = new Client(new Context(), p); + ClientResource service = new ClientResource(getPiacereRuntimeControllerURL()); + service.setNext(client); + ClientResource resource = service.getChild("/"+DEPLOYMENTS_PATH); + try { + resource.get().getText(); + Status s=resource.getStatus(); + if(s.getCode()==200) { + return true; + } + } + catch (Exception e) { + } + } + return false; + } + + public boolean isConnected() { + if(this.isConnected==null) { + isConnected=testConnection(); + } + return isConnected.booleanValue(); + } + + + +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/.classpath b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..1fa3e6803d3b22e055b735220510616c4e35f2fc --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="src" path="src"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/.gitignore b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..ae3c1726048cd06b9a143e0376ed46dd9b9a8d53 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/.project b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/.project new file mode 100644 index 0000000000000000000000000000000000000000..3f4326f10b37100d2495485a3e38f9cc84a6824d --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>PiacereIDEIntegration.KRIEC</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/META-INF/MANIFEST.MF b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..d87ae05bc6d391f5a433f5c9916e202c087af35b --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/META-INF/MANIFEST.MF @@ -0,0 +1,34 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: PiacereIDEIntegration.KRIEC +Bundle-SymbolicName: PiacereIDEIntegration.KRIEC;singleton:=true +Bundle-Version: 1.0.0.qualifier +Automatic-Module-Name: PiacereIDEIntegration.KRIEC +Require-Bundle: org.eclipse.ui, + org.eclipse.core.runtime, + org.apache.httpcomponents.httpcore +Import-Package: eu.piacere.doml.doml.commons, + eu.piacere.piacereTool.utils, + org.apache.commons.io, + org.apache.http.client;version="4.5.13", + org.apache.http.client.methods;version="4.5.13", + org.apache.http.impl.client;version="4.5.13", + org.eclipse.core.resources, + org.eclipse.core.runtime.preferences;version="3.4.0", + org.eclipse.emf.common.notify, + org.eclipse.emf.common.util, + org.eclipse.emf.ecore, + org.eclipse.emf.ecore.resource, + org.eclipse.emf.ecore.resource.impl, + org.eclipse.emf.ecore.util, + org.eclipse.emf.edit.provider.resource, + org.eclipse.emf.edit.ui.provider, + org.eclipse.ui.dialogs, + org.eclipse.ui.navigator, + org.eclipse.ui.views.properties, + org.json, + org.restlet, + org.restlet.data, + org.restlet.representation, + org.restlet.resource, + org.restlet.util diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/Piacere/PiacereIcon_16x16.png b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/Piacere/PiacereIcon_16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..444de54d6cfe2958fac1bbb89dd8619b4c537c47 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/Piacere/PiacereIcon_16x16.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/build.properties b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..243224fe60916a29037bb69158cadf01892d797f --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/build.properties @@ -0,0 +1,7 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + .,\ + plugin.xml,\ + icons/,\ + Piacere/ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/ComponentsModel.png b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/ComponentsModel.png new file mode 100644 index 0000000000000000000000000000000000000000..9ee76accc89ff76934fe746a3af1a853843e1209 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/ComponentsModel.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/FAdAIcon_24.png b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/FAdAIcon_24.png new file mode 100644 index 0000000000000000000000000000000000000000..f4259625230e2b11b98a14aa6b75b52edad25dd8 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/FAdAIcon_24.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/FadaModelRepositoriesView.png b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/FadaModelRepositoriesView.png new file mode 100644 index 0000000000000000000000000000000000000000..4db27dd10ecbbcf29062e8cc7b7b3c22bf72c5a3 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/FadaModelRepositoriesView.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/FadaModelRepositoriesView_old.png b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/FadaModelRepositoriesView_old.png new file mode 100644 index 0000000000000000000000000000000000000000..d4f2feef7f465a95b720ec2a24aa4429b5a64aab Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/FadaModelRepositoriesView_old.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/RepoConnected.png b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/RepoConnected.png new file mode 100644 index 0000000000000000000000000000000000000000..bd178d026ebd3aa22573ca74e985f306d64a59c1 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/RepoConnected.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/RepoDisconnected.png b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/RepoDisconnected.png new file mode 100644 index 0000000000000000000000000000000000000000..0c78354020ea586917e7ec598e357c739b031aa0 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/RepoDisconnected.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/SystemConfigurationModel.png b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/SystemConfigurationModel.png new file mode 100644 index 0000000000000000000000000000000000000000..d4561b60458f1b50d06bfd23d7f8308af08688ef Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/SystemConfigurationModel.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/Task.gif b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/Task.gif new file mode 100644 index 0000000000000000000000000000000000000000..5c3b2b89a47caa2cbec35a9e9c3fe2efef4b2895 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/Task.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/addRepository.png b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/addRepository.png new file mode 100644 index 0000000000000000000000000000000000000000..fe03f37202ca955983c42397173fb12faca9d187 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/addRepository.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/bundle.png b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/bundle.png new file mode 100644 index 0000000000000000000000000000000000000000..1f41d9b1bfcf6db40272453364a446ad457ec50f Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/bundle.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/collapseAll.gif b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/collapseAll.gif new file mode 100644 index 0000000000000000000000000000000000000000..a2d80a9044f38833cb728a69c88294ce3fd007c7 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/collapseAll.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/deleteRepository.png b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/deleteRepository.png new file mode 100644 index 0000000000000000000000000000000000000000..807f97450c23a784814393f55a16ff75688ec15b Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/deleteRepository.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/download.png b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/download.png new file mode 100644 index 0000000000000000000000000000000000000000..236f4a77ea9131d404b0efb5e7bddd72098181f9 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/download.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/expandAll.gif b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/expandAll.gif new file mode 100644 index 0000000000000000000000000000000000000000..0205b29176d4e60307639b6ac80ebfc40be61c3b Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/expandAll.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/export.png b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/export.png new file mode 100644 index 0000000000000000000000000000000000000000..670042c62ce6b5cb200fa3807c57d18511275f39 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/export.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/elcl16/addrepositorylocation.gif b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/elcl16/addrepositorylocation.gif new file mode 100644 index 0000000000000000000000000000000000000000..6237766393fcc7a602d4695d151c3e546abeab6a Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/elcl16/addrepositorylocation.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/elcl16/copy.gif b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/elcl16/copy.gif new file mode 100644 index 0000000000000000000000000000000000000000..71d7c95aa8caa2e8f139d262a4e5e08aba2b88e5 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/elcl16/copy.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/elcl16/integrateconceptualfragment.gif b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/elcl16/integrateconceptualfragment.gif new file mode 100644 index 0000000000000000000000000000000000000000..07164754e5ca231666d9daf7fa4a9d12e378a52a Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/elcl16/integrateconceptualfragment.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/elcl16/integratetechnicalfragment.gif b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/elcl16/integratetechnicalfragment.gif new file mode 100644 index 0000000000000000000000000000000000000000..e7035189cd8dd45b6afba27b8cbccd75df5000e1 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/elcl16/integratetechnicalfragment.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/elcl16/paste.gif b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/elcl16/paste.gif new file mode 100644 index 0000000000000000000000000000000000000000..39dd4d9d38aa85f9c4c9ff652c453c555b850980 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/elcl16/paste.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/elcl16/search.gif b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/elcl16/search.gif new file mode 100644 index 0000000000000000000000000000000000000000..d540a01f4d9eeb9d2951f30cee165c7370e9fc6a Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/elcl16/search.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/CapabilityPattern.gif b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/CapabilityPattern.gif new file mode 100644 index 0000000000000000000000000000000000000000..15ffbb0795fbdc2a0add02f0a07bcea02f034ab4 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/CapabilityPattern.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/CapabilityPatterns.gif b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/CapabilityPatterns.gif new file mode 100644 index 0000000000000000000000000000000000000000..37147654e68f964a947278cb954e47633809c5c4 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/CapabilityPatterns.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/ConceptualFragment.gif b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/ConceptualFragment.gif new file mode 100644 index 0000000000000000000000000000000000000000..49ab538b6c432e7eb280793484e555df7ba2761d Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/ConceptualFragment.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/Delete.gif b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/Delete.gif new file mode 100644 index 0000000000000000000000000000000000000000..b6922ac11cf64e16a15cf2976cdaa1e40118abed Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/Delete.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/DeliveryProcess.gif b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/DeliveryProcess.gif new file mode 100644 index 0000000000000000000000000000000000000000..7b40362c2f54cebce43f5511342df015c4f52feb Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/DeliveryProcess.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/Description.gif b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/Description.gif new file mode 100644 index 0000000000000000000000000000000000000000..75f33c24fa441d09729e7adcbc78a4e55d84b443 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/Description.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/Descriptor.gif b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/Descriptor.gif new file mode 100644 index 0000000000000000000000000000000000000000..04032a915a0d9eace79a7aec3c573ca07eb7f4ac Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/Descriptor.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/Input.gif b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/Input.gif new file mode 100644 index 0000000000000000000000000000000000000000..d8d7d974fa596ee7a8d06b1d8b110ee7336850af Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/Input.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/Interface.gif b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/Interface.gif new file mode 100644 index 0000000000000000000000000000000000000000..7c7d39ef65b96d71b7b2e1e576c3677bbf7757f1 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/Interface.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/MethodPlugin.gif b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/MethodPlugin.gif new file mode 100644 index 0000000000000000000000000000000000000000..bb82c391ed462f0f01e988e00b07f8de262278e7 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/MethodPlugin.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/Name.gif b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/Name.gif new file mode 100644 index 0000000000000000000000000000000000000000..75f33c24fa441d09729e7adcbc78a4e55d84b443 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/Name.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/Objective.gif b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/Objective.gif new file mode 100644 index 0000000000000000000000000000000000000000..75f33c24fa441d09729e7adcbc78a4e55d84b443 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/Objective.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/Origin.gif b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/Origin.gif new file mode 100644 index 0000000000000000000000000000000000000000..c79bf78956a277d98343ab949be3efe08411f37f Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/Origin.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/Output.gif b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/Output.gif new file mode 100644 index 0000000000000000000000000000000000000000..b4fe2c84ecd2cb1ce8a4fb03a091ba76cad78916 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/Output.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/Package.gif b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/Package.gif new file mode 100644 index 0000000000000000000000000000000000000000..00a311efa25ac538073fb14e59efbb9a968a94e3 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/Package.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/Processes.gif b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/Processes.gif new file mode 100644 index 0000000000000000000000000000000000000000..08d8c2d5d1a7a70f5af53200633a7ba92aab1788 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/Processes.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/Repositories.gif b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/Repositories.gif new file mode 100644 index 0000000000000000000000000000000000000000..16eda8a78a63bfe5874e2e92a29f20a644241bba Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/Repositories.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/RoleSetCategory.gif b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/RoleSetCategory.gif new file mode 100644 index 0000000000000000000000000000000000000000..54a3f677a3efc25358bb4f637de6166d1425a486 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/RoleSetCategory.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/Task.gif b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/Task.gif new file mode 100644 index 0000000000000000000000000000000000000000..5c3b2b89a47caa2cbec35a9e9c3fe2efef4b2895 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/Task.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/Tasks.gif b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/Tasks.gif new file mode 100644 index 0000000000000000000000000000000000000000..638bd83009d2d7bf881dab9dbc07c176edd23060 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/Tasks.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/TechnicalFragment.gif b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/TechnicalFragment.gif new file mode 100644 index 0000000000000000000000000000000000000000..4f1b85a7801922060d6b5a968a76be30eb5326c9 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/TechnicalFragment.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/TechnicalFragmentError.gif b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/TechnicalFragmentError.gif new file mode 100644 index 0000000000000000000000000000000000000000..50b162dbdfc4a7f0eabd5d7119871e378efe6940 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/TechnicalFragmentError.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/TechnicalFragmentImported.gif b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/TechnicalFragmentImported.gif new file mode 100644 index 0000000000000000000000000000000000000000..3260ab2872cfcc35cc75b3501dd05bb23bd6f333 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/TechnicalFragmentImported.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/Type.gif b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/Type.gif new file mode 100644 index 0000000000000000000000000000000000000000..358cbcb83d800352e59d672771057f3156f27491 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/Type.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/WorkProduct.gif b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/WorkProduct.gif new file mode 100644 index 0000000000000000000000000000000000000000..1540f3d3c95605a8d7f641f8c93b098e356c40c3 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/WorkProduct.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/WorkProducts.gif b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/WorkProducts.gif new file mode 100644 index 0000000000000000000000000000000000000000..cf289263e15224bfd984e2145ddc6c6eb415f50c Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/WorkProducts.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/activity16.gif b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/activity16.gif new file mode 100644 index 0000000000000000000000000000000000000000..cf20deb439ab39a63162c93396060706051569b0 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/activity16.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/role.gif b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/role.gif new file mode 100644 index 0000000000000000000000000000000000000000..69ebdf2959ed859952751f3f377d581671045873 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/full/obj16/role.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/import.png b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/import.png new file mode 100644 index 0000000000000000000000000000000000000000..bb6ff06b7bcf18590deb1f93a519d5264b6a067f Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/import.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/jar.png b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/jar.png new file mode 100644 index 0000000000000000000000000000000000000000..660f8ea5131c2f9f59a5fa2491993cfa71a1ac57 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/jar.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/ref.png b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/ref.png new file mode 100644 index 0000000000000000000000000000000000000000..2839c60a42f8a79067981fd7b3a26f4b81a69231 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/ref.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/refresh.gif b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/refresh.gif new file mode 100644 index 0000000000000000000000000000000000000000..e3831471a6592da14f53b1e7c5a2f7d6a92d9937 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/refresh.gif differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/repository.png b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/repository.png new file mode 100644 index 0000000000000000000000000000000000000000..92794f126f846474fafef14aac6fccb82faaf4f8 Binary files /dev/null and b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/icons/repository.png differ diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/plugin.xml b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..8013924ee5945bc4ddaf313ca5c7c8ff8d95a373 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/plugin.xml @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.4"?> +<plugin> + <extension + point="org.eclipse.ui.preferencePages"> + <page + category="PiacereToolCustomization.preferences.page1" + class="eu.piacere.ide.toolIntegration.kriec.preferencePage.KRIECPreferencePage" + id="PiacereIDEIntegration.KRIEC.preferences.page1" + name="PIACERE Infrastructure Elements Catalog Preferences"> + </page> + </extension> + <extension + point="org.eclipse.core.runtime.preferences"> + <initializer + class="eu.piacere.ide.toolIntegration.kriec.preferencePage.KRIECPreferenceInitializer"> + </initializer> + </extension> + <extension point = "org.eclipse.ui.views"> + <view + id = "PiacereIDEIntegration.KRIEC.PiacereIECViewPart" + name = "PIACERE Infrastructure Elements Catalog" + category = "org.eclipse.ui" + class = "eu.piacere.ide.toolIntegration.kriec.viewPart.InfrastructureElementsCatalogViewPart" + icon = "Piacere/PiacereIcon_16x16.png" /> + </extension> + <extension + point="org.eclipse.core.runtime.adapters"> + <factory + adaptableType="eu.piacere.ide.toolIntegration.kriec.util.IECServiceAttribute" + class="eu.piacere.ide.toolIntegration.kriec.viewPart.properties.IECServiceAttributeAdapterFactory"> + <adapter + type="org.eclipse.ui.views.properties.IPropertySource"> + </adapter> + </factory> + </extension> + +</plugin> diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/preferencePage/KRIECPreferenceInitializer.java b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/preferencePage/KRIECPreferenceInitializer.java new file mode 100644 index 0000000000000000000000000000000000000000..07229925ac6ff4c43c4cec7d90e8c6ac5da0aea1 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/preferencePage/KRIECPreferenceInitializer.java @@ -0,0 +1,22 @@ +package eu.piacere.ide.toolIntegration.kriec.preferencePage; + +import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer; +import org.eclipse.core.runtime.preferences.ConfigurationScope; +import org.eclipse.ui.preferences.ScopedPreferenceStore; +import org.osgi.framework.FrameworkUtil; + +public class KRIECPreferenceInitializer extends AbstractPreferenceInitializer { + + @Override + public void initializeDefaultPreferences() { + + ScopedPreferenceStore scopedPreferenceStore = new ScopedPreferenceStore(ConfigurationScope.INSTANCE,(FrameworkUtil.getBundle(KRIECPreferenceInitializer.class)).getSymbolicName()); + scopedPreferenceStore.setDefault("KRIEC.host", "iec.ci.piacere.digital.tecnalia.dev"); + scopedPreferenceStore.setDefault("KRIEC.port", 443); + scopedPreferenceStore.setDefault("KRIEC.protocol", "https"); + + + + } + +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/preferencePage/KRIECPreferencePage.java b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/preferencePage/KRIECPreferencePage.java new file mode 100644 index 0000000000000000000000000000000000000000..840dbee6500a8016cd0c3d5627b26094c344ef37 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/preferencePage/KRIECPreferencePage.java @@ -0,0 +1,37 @@ +package eu.piacere.ide.toolIntegration.kriec.preferencePage; + +import org.eclipse.core.runtime.preferences.ConfigurationScope; +import org.eclipse.jface.preference.FieldEditorPreferencePage; +import org.eclipse.jface.preference.IntegerFieldEditor; +import org.eclipse.jface.preference.RadioGroupFieldEditor; +import org.eclipse.jface.preference.StringFieldEditor; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchPreferencePage; +import org.eclipse.ui.preferences.ScopedPreferenceStore; +import org.osgi.framework.FrameworkUtil; + +public class KRIECPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage{ + + + public KRIECPreferencePage() { + super(GRID); + } + + @Override + public void init(IWorkbench workbench) { + //WHICH SCOPE SHOULD I SELECT: https://wiki.eclipse.org/FAQ_What_is_a_preference_scope%3F + + setPreferenceStore(new ScopedPreferenceStore(ConfigurationScope.INSTANCE, (FrameworkUtil.getBundle(KRIECPreferenceInitializer.class)).getSymbolicName())); + setDescription("These Are The PIACERE Infrastructure Elements Catalog Preferences"); + + } + + @Override + protected void createFieldEditors() { + addField(new StringFieldEditor("KRIEC.host", "Endpoint Host", getFieldEditorParent())); + addField(new IntegerFieldEditor("KRIEC.port", "Endpoint Port", getFieldEditorParent())); + addField(new RadioGroupFieldEditor("KRIEC.protocol", "Protocol", 1, new String[][] {{"HTTP","http"},{"HTTPS","https"}}, getFieldEditorParent())); + + } + +} \ No newline at end of file diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECAbstractElement.java b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECAbstractElement.java new file mode 100644 index 0000000000000000000000000000000000000000..2c7b2c69bd28cabcc6c7a9b0433726e9f793e07d --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECAbstractElement.java @@ -0,0 +1,67 @@ +package eu.piacere.ide.toolIntegration.kriec.util; + +import java.util.TreeMap; + +import org.json.JSONException; +import org.json.JSONObject; + +public abstract class IECAbstractElement { + + private String serviceName; + private int serviceID; + private int serviceClass; + + private TreeMap<String, IECServiceAttribute> attributes; + + public IECAbstractElement(String name, int id, int serviceClass) { + this.setServiceName(name); + this.setServiceID(id); + this.setServiceClass(serviceClass); + this.setAttributes(new TreeMap<String, IECServiceAttribute>()); + } + + public String getServiceName() { + return serviceName; + } + + public void setServiceName(String serviceName) { + this.serviceName = serviceName; + } + + public int getServiceID() { + return serviceID; + } + + public void setServiceID(int serviceID) { + this.serviceID = serviceID; + } + + public int getServiceClass() { + return serviceClass; + } + + public void setServiceClass(int serviceClass) { + this.serviceClass = serviceClass; + } + + public TreeMap<String, IECServiceAttribute> getAttributes() { + return attributes; + } + + public void setAttributes(TreeMap<String, IECServiceAttribute> attributes) { + this.attributes = attributes; + } + + public void addAttribute(IECServiceAttribute attribute) { + this.attributes.put(attribute.getType().getName(), attribute); + } + + public static IECAbstractElement fromJSON(JSONObject representation, IECAbstractElement theElement) throws JSONException { + for(int i=0; i<representation.getJSONArray("serviceAttributeValues").length(); i++) { + theElement.addAttribute(IECServiceAttribute.fromJSON(representation.getJSONArray("serviceAttributeValues").getJSONObject(i))); + } + return theElement; + } + + +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECCatalog.java b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECCatalog.java new file mode 100644 index 0000000000000000000000000000000000000000..78ad87c72f42cdc4daf7c8b54d11aa9bd21a774b --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECCatalog.java @@ -0,0 +1,97 @@ +package eu.piacere.ide.toolIntegration.kriec.util; + +import java.util.ArrayList; + +import org.json.JSONArray; + + +public class IECCatalog { + + private IECDatabasesContainer databasesContainer; + private IECStoragesContainer storagesContainer; + private IECVirtualMachinesContainer virtualMachinesContainer; + + public IECCatalog() { + this.setDatabasesContainer(new IECDatabasesContainer()); + this.setStoragesContainer(new IECStoragesContainer()); + this.setVirtualMachinesContainer(new IECVirtualMachinesContainer()); + + } + + @SuppressWarnings({ "rawtypes", "unchecked" }) + public Object[] getContainers() { + ArrayList l = new ArrayList(); + l.add(this.getDatabasesContainer()); + l.add(this.getStoragesContainer()); + l.add(this.getVirtualMachinesContainer()); + return l.toArray(); + } + + public IECDatabasesContainer getDatabasesContainer() { + return databasesContainer; + } + + public void setDatabasesContainer(IECDatabasesContainer databasesContainer) { + this.databasesContainer = databasesContainer; + } + + public void addDatabase(IECDatabase database) { + this.getDatabasesContainer().getCatalogDatabases().put(database.getServiceName(), database); + } + public IECStoragesContainer getStoragesContainer() { + return storagesContainer; + } + + public void setStoragesContainer(IECStoragesContainer storagesContainer) { + this.storagesContainer = storagesContainer; + } + + public void addStorage(IECStorage storage) { + this.getStoragesContainer().getCatalogStorages().put(storage.getServiceName(), storage); + } + + public IECVirtualMachinesContainer getVirtualMachinesContainer() { + return virtualMachinesContainer; + } + + public void setVirtualMachinesContainer(IECVirtualMachinesContainer virtualMachinesContainer) { + this.virtualMachinesContainer = virtualMachinesContainer; + } + + public void addVirtualMachine(IECVirtualMachine virtualMachine) { + this.getVirtualMachinesContainer().getCatalogVirtualMachines().put(virtualMachine.getServiceName(), virtualMachine); + } + + public static IECCatalog fromJSON(JSONArray representation) { + + IECCatalog catalog = new IECCatalog(); + try { + for(int i=0; i<representation.length(); i++) { + int serviceClassID=representation.getJSONObject(i).getJSONObject("serviceClass").getInt("id"); + if(serviceClassID==IECDatabase.IEC_SERVICE_CLASS) { + catalog.addDatabase(IECDatabase.fromJSON(representation.getJSONObject(i))); + } + else if(serviceClassID==IECStorage.IEC_SERVICE_CLASS) { + catalog.addStorage(IECStorage.fromJSON(representation.getJSONObject(i))); + } + else if(serviceClassID==IECVirtualMachine.IEC_SERVICE_CLASS) { + catalog.addVirtualMachine(IECVirtualMachine.fromJSON(representation.getJSONObject(i))); + } + + } + } + catch (Exception e) { + e.printStackTrace(); + } + return catalog; + } + + public void reloadContent() { + IECCatalog temp = IECCatalogUtil.loadCatalogFromServer(); + this.setDatabasesContainer(temp.getDatabasesContainer()); + this.setStoragesContainer(temp.getStoragesContainer()); + this.setVirtualMachinesContainer(temp.getVirtualMachinesContainer()); + temp=null; + } + +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECCatalogUtil.java b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECCatalogUtil.java new file mode 100644 index 0000000000000000000000000000000000000000..f8ab76e71d275dc6baca50e24ab0e8607df596a3 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECCatalogUtil.java @@ -0,0 +1,79 @@ +package eu.piacere.ide.toolIntegration.kriec.util; + +import org.eclipse.ui.IViewPart; +import org.eclipse.ui.PlatformUI; +import org.json.JSONArray; +import org.restlet.Client; +import org.restlet.Context; +import org.restlet.data.Header; +import org.restlet.data.Protocol; +import org.restlet.resource.ClientResource; +import org.restlet.util.Series; + +import eu.piacere.ide.toolIntegration.kriec.viewPart.InfrastructureElementsCatalogViewPart; +import eu.piacere.piacereTool.utils.ToolCustomizationUtils; + +public class IECCatalogUtil { + + + private static String catalogAPIAuth="Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsImF1dGgiOiJST0xFX0FETUlOLFJPTEVfVVNFUiIsImV4cCI6MTY1NDI0MTQ3OH0.HXSkmE4DLyuxqNQCOxZ7SuNMUNSsA_WV9H3BdTx7W7-gbRBpKPRcQN3nGbHHMDfffkqYITWW1YeiXVckBx9RqA"; + + + + + public static InfrastructureElementsCatalogViewPart getRuntimeControllerView() { + try { + IViewPart viewPart = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView("PiacereIDEIntegration.KRIEC.PiacereIECViewPart"); + if (viewPart instanceof InfrastructureElementsCatalogViewPart) + return (InfrastructureElementsCatalogViewPart)viewPart; + } catch (Exception exception) { + return null; + } + return null; + } + + public static IECCatalog loadCatalogFromServer() { + + String protocol = ToolCustomizationUtils.getPreference(IECCatalogUtil.class, "KRIEC.protocol"); + String host = ToolCustomizationUtils.getPreference(IECCatalogUtil.class, "KRIEC.host"); + String port = ToolCustomizationUtils.getPreference(IECCatalogUtil.class, "KRIEC.port"); + String epURL = protocol+"://"+host+":"+port+"/"; + Protocol p = null; + if(protocol.equals("http")) { + p=Protocol.HTTP; + } + else { + p=Protocol.HTTPS; + } + Client client = new Client(new Context(), p); + + ClientResource service = new ClientResource(epURL); + + /*@SuppressWarnings("unchecked") + Series<Header> headers = (Series<Header>) service.getRequestAttributes().get("org.restlet.http.headers"); + if(headers!=null) { + headers.set("Authorization", catalogAPIAuth); + } + else { + headers=new Series<>(Header.class); + headers.set("Authorization", catalogAPIAuth); + } + service.getRequestAttributes().put("org.restlet.http.headers", headers); + */ + service.setNext(client); + try { + ClientResource resource = service.getChild("services/iecbackend/api/root-services/catalogue"); + if(resource.getStatus().getCode()==200){ + JSONArray respuesta= new JSONArray(resource.get().getText()); + return IECCatalog.fromJSON(respuesta); + } + } + catch (Exception e) { + e.printStackTrace(); + } + + return null; + } + + +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECDatabase.java b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECDatabase.java new file mode 100644 index 0000000000000000000000000000000000000000..2743a446354607d6596a652dc61334a1d34dafba --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECDatabase.java @@ -0,0 +1,17 @@ +package eu.piacere.ide.toolIntegration.kriec.util; + +import org.json.JSONException; +import org.json.JSONObject; + +public class IECDatabase extends IECAbstractElement{ + + public static int IEC_SERVICE_CLASS = 1; + + public IECDatabase(String name, int id) { + super(name, id, IECDatabase.IEC_SERVICE_CLASS); + } + + public static IECDatabase fromJSON(JSONObject representation) throws JSONException { + return (IECDatabase) IECAbstractElement.fromJSON(representation, new IECDatabase(representation.getString("serviceName"), representation.getInt("id"))); + } +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECDatabasesContainer.java b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECDatabasesContainer.java new file mode 100644 index 0000000000000000000000000000000000000000..b012e4a9556f4072209e72e5357368248333404d --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECDatabasesContainer.java @@ -0,0 +1,21 @@ +package eu.piacere.ide.toolIntegration.kriec.util; + +import java.util.TreeMap; + +public class IECDatabasesContainer { + + private TreeMap<String, IECDatabase> catalogDatabases; + + public IECDatabasesContainer() { + this.setCatalogDatabases(new TreeMap<String, IECDatabase>()); + } + + public TreeMap<String, IECDatabase> getCatalogDatabases() { + return catalogDatabases; + } + + public void setCatalogDatabases(TreeMap<String, IECDatabase> catalogDatabases) { + this.catalogDatabases = catalogDatabases; + } + +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECServiceAttribute.java b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECServiceAttribute.java new file mode 100644 index 0000000000000000000000000000000000000000..01af67720ab83b4de9849ade1d45c6e9fc4bcaca --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECServiceAttribute.java @@ -0,0 +1,56 @@ +package eu.piacere.ide.toolIntegration.kriec.util; + +import org.json.JSONException; +import org.json.JSONObject; + +public class IECServiceAttribute { + private int id; + private String serviceAttributeValue; + private String unitValue; + + private IECServiceAttributeType type; + + public IECServiceAttribute(int id, String value, String unitValue) { + this.setId(id); + this.setServiceAttributeValue(value); + this.setUnitValue(unitValue); + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getServiceAttributeValue() { + return serviceAttributeValue; + } + + public void setServiceAttributeValue(String serviceAttributeValue) { + this.serviceAttributeValue = serviceAttributeValue; + } + + public String getUnitValue() { + return unitValue; + } + + public void setUnitValue(String unitValue) { + this.unitValue = unitValue; + } + + public IECServiceAttributeType getType() { + return type; + } + + public void setType(IECServiceAttributeType type) { + this.type = type; + } + + public static IECServiceAttribute fromJSON(JSONObject representation) throws JSONException { + IECServiceAttribute res = new IECServiceAttribute(representation.getInt("id"), representation.getString("serviceAttributeValue"), representation.getString("unitValue")); + res.setType(IECServiceAttributeType.fromJSON(representation.getJSONObject("serviceAttributeType"))); + return res; + } +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECServiceAttributeType.java b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECServiceAttributeType.java new file mode 100644 index 0000000000000000000000000000000000000000..fd1bbaee89da7e6ba1227fce8a470255fc92f008 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECServiceAttributeType.java @@ -0,0 +1,126 @@ +package eu.piacere.ide.toolIntegration.kriec.util; + +import org.json.JSONException; +import org.json.JSONObject; + +public class IECServiceAttributeType { + + private int id; + private String name; + private String nfrName; + private boolean isEnumeration; + private boolean isForm; + private boolean isCommon; + private boolean isFunctionalRequirement; + private String units; + private String unitFactor; + private String unitRule; + private String evalRule; + + public IECServiceAttributeType(int id, String name) { + this.setId(id); + this.setName(name); + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getNfrName() { + return nfrName; + } + + public void setNfrName(String nfrName) { + this.nfrName = nfrName; + } + + public boolean isEnumeration() { + return isEnumeration; + } + + public void setEnumeration(boolean isEnumeration) { + this.isEnumeration = isEnumeration; + } + + public boolean isForm() { + return isForm; + } + + public void setForm(boolean isForm) { + this.isForm = isForm; + } + + public boolean isCommon() { + return isCommon; + } + + public void setCommon(boolean isCommon) { + this.isCommon = isCommon; + } + + public boolean isFunctionalRequirement() { + return isFunctionalRequirement; + } + + public void setFunctionalRequirement(boolean isFunctionalRequirement) { + this.isFunctionalRequirement = isFunctionalRequirement; + } + + public String getUnits() { + return units; + } + + public void setUnits(String units) { + this.units = units; + } + + public String getUnitFactor() { + return unitFactor; + } + + public void setUnitFactor(String unitFactor) { + this.unitFactor = unitFactor; + } + + public String getUnitRule() { + return unitRule; + } + + public void setUnitRule(String unitRule) { + this.unitRule = unitRule; + } + + public String getEvalRule() { + return evalRule; + } + + public void setEvalRule(String evalRule) { + this.evalRule = evalRule; + } + + public static IECServiceAttributeType fromJSON(JSONObject representation) throws JSONException { + IECServiceAttributeType res = new IECServiceAttributeType(representation.getInt("id"), representation.getString("name")); + res.setNfrName(representation.getString("nfrName")); + res.setEnumeration(representation.getBoolean("isEnumeration")); + res.setForm(representation.getBoolean("isForm")); + res.setCommon(representation.getBoolean("isCommon")); + res.setFunctionalRequirement(representation.getBoolean("isFunctionalRequirement")); + res.setUnits(representation.getString("units")); + res.setUnitFactor(representation.getString("unitFactor")); + res.setUnitRule(representation.getString("unitRule")); + res.setEvalRule(representation.getString("evalRule")); + return res; + } +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECStorage.java b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECStorage.java new file mode 100644 index 0000000000000000000000000000000000000000..ce5ab07e88d24057f8bb375270b3737a90e1f09d --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECStorage.java @@ -0,0 +1,18 @@ +package eu.piacere.ide.toolIntegration.kriec.util; + +import org.json.JSONException; +import org.json.JSONObject; + +public class IECStorage extends IECAbstractElement{ + + public static int IEC_SERVICE_CLASS = 2; + + public IECStorage(String name, int id) { + super(name, id, IECStorage.IEC_SERVICE_CLASS); + } + + public static IECStorage fromJSON(JSONObject representation) throws JSONException { + return (IECStorage) IECAbstractElement.fromJSON(representation, new IECStorage(representation.getString("serviceName"), representation.getInt("id"))); + } + +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECStoragesContainer.java b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECStoragesContainer.java new file mode 100644 index 0000000000000000000000000000000000000000..3df20660b15ec99da10b94d2116fde4e8b4c1921 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECStoragesContainer.java @@ -0,0 +1,20 @@ +package eu.piacere.ide.toolIntegration.kriec.util; + +import java.util.TreeMap; + +public class IECStoragesContainer { + + private TreeMap<String, IECStorage> catalogStorages; + + public IECStoragesContainer() { + this.setCatalogStorages(new TreeMap<String, IECStorage>()); + } + + public TreeMap<String, IECStorage> getCatalogStorages() { + return catalogStorages; + } + + public void setCatalogStorages(TreeMap<String, IECStorage> catalogStorages) { + this.catalogStorages = catalogStorages; + } +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECVirtualMachine.java b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECVirtualMachine.java new file mode 100644 index 0000000000000000000000000000000000000000..82822bb07bcb75f8da106a85019149986023ed8f --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECVirtualMachine.java @@ -0,0 +1,18 @@ +package eu.piacere.ide.toolIntegration.kriec.util; + +import org.json.JSONException; +import org.json.JSONObject; + +public class IECVirtualMachine extends IECAbstractElement{ + + public static int IEC_SERVICE_CLASS = 3; + + public IECVirtualMachine(String name, int id) { + super(name, id, IECVirtualMachine.IEC_SERVICE_CLASS); + } + + public static IECVirtualMachine fromJSON(JSONObject representation) throws JSONException { + return (IECVirtualMachine) IECAbstractElement.fromJSON(representation, new IECVirtualMachine(representation.getString("serviceName"), representation.getInt("id"))); + } + +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECVirtualMachinesContainer.java b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECVirtualMachinesContainer.java new file mode 100644 index 0000000000000000000000000000000000000000..135247e2de1d21d588258f891a13b9e3fe482287 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/util/IECVirtualMachinesContainer.java @@ -0,0 +1,20 @@ +package eu.piacere.ide.toolIntegration.kriec.util; + +import java.util.TreeMap; + +public class IECVirtualMachinesContainer { + + private TreeMap<String, IECVirtualMachine> catalogVirtualMachines; + + public IECVirtualMachinesContainer() { + this.setCatalogVirtualMachines(new TreeMap<String, IECVirtualMachine>()); + } + + public TreeMap<String, IECVirtualMachine> getCatalogVirtualMachines() { + return catalogVirtualMachines; + } + + public void setCatalogVirtualMachines(TreeMap<String, IECVirtualMachine> catalogVirtualMachines) { + this.catalogVirtualMachines = catalogVirtualMachines; + } +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/InfrastructureElementsCatalogViewPart.java b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/InfrastructureElementsCatalogViewPart.java new file mode 100644 index 0000000000000000000000000000000000000000..da93998dff2200a41af97b8a55adf44047aeea1e --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/InfrastructureElementsCatalogViewPart.java @@ -0,0 +1,143 @@ +package eu.piacere.ide.toolIntegration.kriec.viewPart; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; +import org.eclipse.jface.resource.FontDescriptor; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.jface.resource.JFaceResources; +import org.eclipse.jface.resource.LocalResourceManager; +import org.eclipse.jface.resource.ResourceManager; +import org.eclipse.jface.viewers.IBaseLabelProvider; +import org.eclipse.jface.viewers.IContentProvider; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Menu; +import org.eclipse.ui.IMemento; +import org.eclipse.ui.IViewSite; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.actions.ActionGroup; +import org.eclipse.ui.navigator.CommonNavigator; +import org.eclipse.ui.navigator.CommonViewer; +import org.eclipse.ui.plugin.AbstractUIPlugin; + +import eu.piacere.ide.toolIntegration.kriec.util.IECCatalog; +import eu.piacere.ide.toolIntegration.kriec.viewPart.actions.CollapseAllAction; +import eu.piacere.ide.toolIntegration.kriec.viewPart.actions.ExpandAllAction; +import eu.piacere.ide.toolIntegration.kriec.viewPart.actions.InfrastructureElementsCatalogViewActionGroup; +import eu.piacere.ide.toolIntegration.kriec.viewPart.actions.RefreshAction; +import eu.piacere.ide.toolIntegration.kriec.viewPart.providers.IECContentProvider; +import eu.piacere.ide.toolIntegration.kriec.viewPart.providers.IECLabelProvider; + + +public class InfrastructureElementsCatalogViewPart extends CommonNavigator implements IMenuListener { + + private static IECCatalog catalog = new IECCatalog(); + + public IECCatalog getIECCatalog() { + return catalog; + } + + + @Override + public void createPartControl(Composite parent) { + super.createPartControl(parent); + + if (getCommonViewer() != null) { + + getCommonViewer().setContentProvider((IContentProvider)new IECContentProvider((AdapterFactory)new ResourceItemProviderAdapterFactory())); + getCommonViewer().setInput(getIECCatalog()); + getCommonViewer().setLabelProvider((IBaseLabelProvider)new IECLabelProvider()); + ResourceManager resourceManager = new LocalResourceManager(JFaceResources.getResources(), parent); + getCommonViewer().getTree().setFont(resourceManager.createFont(FontDescriptor.createFrom(getCommonViewer().getTree().getFont()).setHeight(14))); + getCommonViewer().setSorter(null); + getCommonViewer().addSelectionChangedListener(new SelectionChangedListener()); + createContextMenuForViewer(getCommonViewer()); + getIECCatalog().reloadContent(); + refreshViewer(); + } + } + + public void init(IViewSite aSite, IMemento aMemento) throws PartInitException { + super.init(aSite, aMemento); + } + + + + protected CommonViewer createCommonViewerObject(Composite aParent) { + return new CommonViewer(getViewSite().getId(), aParent, 768); + } + + private class SelectionChangedListener implements ISelectionChangedListener { + @SuppressWarnings("unused") + public void selectionChanged(SelectionChangedEvent event) { + if (event.getSelection() instanceof StructuredSelection) { + Object selected = ((StructuredSelection)event.getSelection()).getFirstElement(); + } + } + } + + protected ActionGroup createCommonActionGroup() { + return (ActionGroup)new InfrastructureElementsCatalogViewActionGroup(getCommonViewer()); + } + + public void refreshViewer() { + CommonViewer viewer = getCommonViewer(); + if (viewer != null && !viewer.getTree().isDisposed()) + viewer.refresh(); + } + + public void saveState(IMemento aMemento) { + super.saveState(aMemento); + } + + private void createContextMenuForViewer(CommonViewer viewer) { + MenuManager contextMenu = new MenuManager("Popup", getImageDescriptor("icons/FadaModelRepositoriesView.png"), null); + contextMenu.setRemoveAllWhenShown(true); + contextMenu.addMenuListener(this); + + Menu menu = contextMenu.createContextMenu(viewer.getControl()); + viewer.getControl().setMenu(menu); + this.getSite().registerContextMenu(contextMenu, (ISelectionProvider)viewer); + } + + public void menuAboutToShow(IMenuManager manager) { + ISelection selection = getCommonViewer().getSelection(); + if (selection instanceof StructuredSelection) { + StructuredSelection sel = (StructuredSelection)selection; + Object selectedObject = sel.getFirstElement(); + if (selectedObject instanceof IECCatalog) { + + RefreshAction ra = new RefreshAction(); + ra.setText("Refresh All"); + ra.setImageDescriptor(getImageDescriptor("icons/refresh.gif")); + + ExpandAllAction eaa = new ExpandAllAction(getCommonViewer()); + eaa.setText("Expand All"); + eaa.setImageDescriptor(getImageDescriptor("icons/expandAll.gif")); + + CollapseAllAction caa = new CollapseAllAction(getCommonViewer()); + caa.setText("Collapse All"); + caa.setImageDescriptor(getImageDescriptor("icons/collapseAll.gif")); + + manager.add((IAction)ra); + manager.add(new Separator("additions")); + manager.add((IAction)eaa); + manager.add((IAction)caa); + } + } + } + + protected final ImageDescriptor getImageDescriptor(String relativePath) { + return AbstractUIPlugin.imageDescriptorFromPlugin("PiacereIDEIntegration.KRIEC", relativePath); + } + +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/actions/CollapseAllAction.java b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/actions/CollapseAllAction.java new file mode 100644 index 0000000000000000000000000000000000000000..c75a2aad2b2c93ad6686c288295a1ec154e3773c --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/actions/CollapseAllAction.java @@ -0,0 +1,24 @@ +package eu.piacere.ide.toolIntegration.kriec.viewPart.actions; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.ui.IWorkbenchCommandConstants; +import org.eclipse.ui.navigator.CommonViewer; + +public class CollapseAllAction extends Action implements IAction +{ + private final CommonViewer commonViewer; + + public CollapseAllAction(CommonViewer aViewer) { + super("Collapse all"); + setToolTipText("Collapse all"); + setActionDefinitionId(IWorkbenchCommandConstants.NAVIGATE_COLLAPSE_ALL); + this.commonViewer = aViewer; + } + + public void run() { + if (this.commonViewer != null) + this.commonViewer.collapseAll(); + } +} + diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/actions/ExpandAllAction.java b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/actions/ExpandAllAction.java new file mode 100644 index 0000000000000000000000000000000000000000..f5c102752b00e3706d176307bb80b3900fde5c8f --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/actions/ExpandAllAction.java @@ -0,0 +1,25 @@ +package eu.piacere.ide.toolIntegration.kriec.viewPart.actions; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.ui.IWorkbenchCommandConstants; +import org.eclipse.ui.navigator.CommonViewer; + +public class ExpandAllAction extends Action implements IAction +{ + private final CommonViewer commonViewer; + + public ExpandAllAction(CommonViewer aViewer) { + super("Expand All"); + setToolTipText("Expand All"); + setActionDefinitionId(IWorkbenchCommandConstants.NAVIGATE_EXPAND_ALL); + + this.commonViewer = aViewer; + } + + public void run() { + if (this.commonViewer != null) + this.commonViewer.expandAll(); + } +} + diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/actions/InfrastructureElementsCatalogViewActionGroup.java b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/actions/InfrastructureElementsCatalogViewActionGroup.java new file mode 100644 index 0000000000000000000000000000000000000000..69af78d9a5ce205747ca88def74c52274dcab6ff --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/actions/InfrastructureElementsCatalogViewActionGroup.java @@ -0,0 +1,53 @@ +package eu.piacere.ide.toolIntegration.kriec.viewPart.actions; + +import org.eclipse.jface.action.Separator; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.ui.IActionBars; +import org.eclipse.ui.actions.ActionGroup; +import org.eclipse.ui.navigator.CommonViewer; +import org.eclipse.ui.plugin.AbstractUIPlugin; + + +public class InfrastructureElementsCatalogViewActionGroup extends ActionGroup +{ + private final CommonViewer commonViewer; + + public InfrastructureElementsCatalogViewActionGroup(CommonViewer viewer) { + this.commonViewer = viewer; + } + + protected final ImageDescriptor getImageDescriptor(String relativePath) { + return AbstractUIPlugin.imageDescriptorFromPlugin("PiacereIDEIntegration.KRIEC", relativePath); + } + + public void fillActionBars(IActionBars actionBars) { + + RefreshAction ra = new RefreshAction(); + ra.setText("Refresh All"); + ra.setImageDescriptor(getImageDescriptor("icons/refresh.gif")); + + /*CreateDeploymentAction cda = new CreateDeploymentAction(); + cda.setText("Create Deployment"); + cda.setImageDescriptor(getImageDescriptor("icons/addRepository.png"));*/ + + CollapseAllAction caa = new CollapseAllAction(this.commonViewer); + caa.setText("Collapse All"); + caa.setImageDescriptor(getImageDescriptor("icons/collapseAll.gif")); + + ExpandAllAction eaa = new ExpandAllAction(this.commonViewer); + eaa.setText("Expand All"); + eaa.setImageDescriptor(getImageDescriptor("icons/expandAll.gif")); + + actionBars.getMenuManager().add(ra); + /*actionBars.getMenuManager().add(new Separator("additions")); + actionBars.getMenuManager().add(cda);*/ + actionBars.getMenuManager().add(new Separator("additions")); + actionBars.getMenuManager().add(caa); + actionBars.getMenuManager().add(eaa); + } +} + + + + + diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/actions/RefreshAction.java b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/actions/RefreshAction.java new file mode 100644 index 0000000000000000000000000000000000000000..98c73c2b02c29c3b8b4de56102e0bf2d2afa72d0 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/actions/RefreshAction.java @@ -0,0 +1,19 @@ +package eu.piacere.ide.toolIntegration.kriec.viewPart.actions; + +import org.eclipse.jface.action.Action; + +import eu.piacere.ide.toolIntegration.kriec.util.IECCatalogUtil; +import eu.piacere.ide.toolIntegration.kriec.viewPart.InfrastructureElementsCatalogViewPart; + + +public class RefreshAction extends Action +{ + public void run() { + super.run(); + InfrastructureElementsCatalogViewPart prcView = IECCatalogUtil.getRuntimeControllerView(); + if (prcView != null) { + prcView.getIECCatalog().reloadContent(); + prcView.refreshViewer(); + } + } +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/properties/IECServiceAttributeAdapterFactory.java b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/properties/IECServiceAttributeAdapterFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..7477547c240fd4a97bec06e43a39d558839256ac --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/properties/IECServiceAttributeAdapterFactory.java @@ -0,0 +1,25 @@ +package eu.piacere.ide.toolIntegration.kriec.viewPart.properties; + +import org.eclipse.core.runtime.IAdapterFactory; +import org.eclipse.ui.views.properties.IPropertySource; + +import eu.piacere.ide.toolIntegration.kriec.util.IECServiceAttribute; + +public class IECServiceAttributeAdapterFactory implements IAdapterFactory { + + private static final Class<?>[] adapterList = new Class<?>[] { IPropertySource.class }; + + @Override + public <T> T getAdapter(Object adaptableObject, Class<T> adapterType) { + if (adapterType== IPropertySource.class && adaptableObject instanceof IECServiceAttribute){ + return adapterType.cast(new IECServiceAttributePropertySource((IECServiceAttribute) adaptableObject)); + } + return null; + } + + @Override + public Class<?>[] getAdapterList() { + return adapterList; + } + +} diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/properties/IECServiceAttributePropertySource.java b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/properties/IECServiceAttributePropertySource.java new file mode 100644 index 0000000000000000000000000000000000000000..32ef319e235352ea9bd066a1fcb3b7bcafe8e203 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/properties/IECServiceAttributePropertySource.java @@ -0,0 +1,100 @@ +package eu.piacere.ide.toolIntegration.kriec.viewPart.properties; + +import org.eclipse.ui.views.properties.IPropertyDescriptor; +import org.eclipse.ui.views.properties.IPropertySource; +import org.eclipse.ui.views.properties.PropertyDescriptor; + +import eu.piacere.ide.toolIntegration.kriec.util.IECServiceAttribute; + +public class IECServiceAttributePropertySource implements IPropertySource { + + private final IECServiceAttribute serviceAttribute; + + public IECServiceAttributePropertySource(IECServiceAttribute serviceAttribute) { + this.serviceAttribute = serviceAttribute; + } + + @Override + public boolean isPropertySet(Object id) { + return false; + } + + @Override + public Object getEditableValue() { + return this; + } + + @Override + public IPropertyDescriptor[] getPropertyDescriptors() { + + return new IPropertyDescriptor[] { + new PropertyDescriptor("id", "ID"), + new PropertyDescriptor("name", "Name"), + new PropertyDescriptor("value", "Value"), + new PropertyDescriptor("unitValue", "Unit Value"), + new PropertyDescriptor("evalRule", "Eval Rule"), + new PropertyDescriptor("nfrName", "NFR Name"), + new PropertyDescriptor("unitFactor", "Unit Factor"), + new PropertyDescriptor("unitRule", "Unit Rule"), + new PropertyDescriptor("units", "Units"), + new PropertyDescriptor("isCommon", "Is Common"), + new PropertyDescriptor("isEnumeration", "Is Enumeration"), + new PropertyDescriptor("isForm", "Is Form"), + new PropertyDescriptor("isFunctionalRequirement", "Is Functional Requirement")}; + } + + @Override + public Object getPropertyValue(Object id) { + if (id.equals("id")) { + return serviceAttribute.getId(); + } + else if (id.equals("name")) { + return serviceAttribute.getType().getName(); + } + else if (id.equals("value")) { + return serviceAttribute.getServiceAttributeValue(); + } + else if (id.equals("unitValue")) { + return serviceAttribute.getUnitValue(); + } + else if (id.equals("evalRule")) { + return serviceAttribute.getType().getEvalRule(); + } + else if (id.equals("nfrName")) { + return serviceAttribute.getType().getNfrName(); + } + else if (id.equals("unitFactor")) { + return serviceAttribute.getType().getUnitFactor(); + } + else if (id.equals("unitRule")) { + return serviceAttribute.getType().getUnitRule(); + } + else if (id.equals("units")) { + return serviceAttribute.getType().getUnits(); + } + else if (id.equals("isCommon")) { + return serviceAttribute.getType().isCommon(); + } + else if (id.equals("isEnumeration")) { + return serviceAttribute.getType().isEnumeration(); + } + else if (id.equals("isForm")) { + return serviceAttribute.getType().isForm(); + } + else if (id.equals("isFunctionalRequirement")) { + return serviceAttribute.getType().isFunctionalRequirement(); + } + return null; + } + + @Override + public void resetPropertyValue(Object id) { + + } + + @Override + public void setPropertyValue(Object id, Object value) { + + } + +} \ No newline at end of file diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/providers/IECContentProvider.java b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/providers/IECContentProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..d7ce05e85c62a5a33ac79ca1bc01dfe73a20dce5 --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/providers/IECContentProvider.java @@ -0,0 +1,129 @@ +package eu.piacere.ide.toolIntegration.kriec.viewPart.providers; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider; + +import eu.piacere.ide.toolIntegration.kriec.util.IECCatalog; +import eu.piacere.ide.toolIntegration.kriec.util.IECDatabase; +import eu.piacere.ide.toolIntegration.kriec.util.IECDatabasesContainer; +import eu.piacere.ide.toolIntegration.kriec.util.IECServiceAttribute; +import eu.piacere.ide.toolIntegration.kriec.util.IECStorage; +import eu.piacere.ide.toolIntegration.kriec.util.IECStoragesContainer; +import eu.piacere.ide.toolIntegration.kriec.util.IECVirtualMachine; +import eu.piacere.ide.toolIntegration.kriec.util.IECVirtualMachinesContainer; + + +public class IECContentProvider extends AdapterFactoryContentProvider +{ + public IECContentProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + + } + + + public Object[] getElements(Object object) { + if (object instanceof IECCatalog) { + return ((IECCatalog)object).getContainers(); + } + + else if (object instanceof IECDatabasesContainer) { + return ((IECDatabasesContainer)object).getCatalogDatabases().values().toArray(); + } + + else if (object instanceof IECStoragesContainer) { + return ((IECStoragesContainer)object).getCatalogStorages().values().toArray(); + } + + else if (object instanceof IECVirtualMachinesContainer) { + return ((IECVirtualMachinesContainer)object).getCatalogVirtualMachines().values().toArray(); + } + + else if (object instanceof IECDatabase) { + return ((IECDatabase)object).getAttributes().values().toArray(); + } + + else if (object instanceof IECStorage) { + return ((IECStorage)object).getAttributes().values().toArray(); + } + + else if (object instanceof IECVirtualMachine) { + return ((IECVirtualMachine)object).getAttributes().values().toArray(); + } + + return super.getElements(object); + } + + + + public boolean hasChildren(Object object) { + if (object instanceof IECCatalog) { + return true; + } + + else if (object instanceof IECDatabasesContainer) { + return ((IECDatabasesContainer)object).getCatalogDatabases().values().size()>0; + } + + else if (object instanceof IECStoragesContainer) { + return ((IECStoragesContainer)object).getCatalogStorages().values().size()>0; + } + + else if (object instanceof IECVirtualMachinesContainer) { + return ((IECVirtualMachinesContainer)object).getCatalogVirtualMachines().values().size()>0; + } + + else if (object instanceof IECDatabase) { + return ((IECDatabase)object).getAttributes().size()>0; + } + + else if (object instanceof IECStorage) { + return ((IECStorage)object).getAttributes().size()>0; + } + + else if (object instanceof IECVirtualMachine) { + return ((IECVirtualMachine)object).getAttributes().size()>0; + } + + else if (object instanceof IECServiceAttribute) { + return false; + } + + return super.hasChildren(object); + } + + + + public Object[] getChildren(Object object) { + if (object instanceof IECCatalog) { + ((IECCatalog)object).getContainers(); + } + + else if (object instanceof IECDatabasesContainer) { + return ((IECDatabasesContainer)object).getCatalogDatabases().values().toArray(); + } + + else if (object instanceof IECStoragesContainer) { + return ((IECStoragesContainer)object).getCatalogStorages().values().toArray(); + } + + else if (object instanceof IECVirtualMachinesContainer) { + return ((IECVirtualMachinesContainer)object).getCatalogVirtualMachines().values().toArray(); + } + + else if (object instanceof IECDatabase) { + return ((IECDatabase)object).getAttributes().values().toArray(); + } + + else if (object instanceof IECStorage) { + return ((IECStorage)object).getAttributes().values().toArray(); + } + + else if (object instanceof IECVirtualMachine) { + return ((IECVirtualMachine)object).getAttributes().values().toArray(); + } + + return null; + } + +} + diff --git a/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/providers/IECLabelProvider.java b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/providers/IECLabelProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..e4ff06ad9bb0f3e5c4f877b1cf2406afc337b0ed --- /dev/null +++ b/Source Code/V2.1/PiacereIDEIntegration.KRIEC/src/eu/piacere/ide/toolIntegration/kriec/viewPart/providers/IECLabelProvider.java @@ -0,0 +1,92 @@ +package eu.piacere.ide.toolIntegration.kriec.viewPart.providers; + +import java.io.IOException; + +import org.eclipse.core.runtime.FileLocator; +import org.eclipse.core.runtime.Platform; +import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.swt.graphics.Device; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.widgets.Display; + +import eu.piacere.ide.toolIntegration.kriec.util.IECDatabase; +import eu.piacere.ide.toolIntegration.kriec.util.IECDatabasesContainer; +import eu.piacere.ide.toolIntegration.kriec.util.IECServiceAttribute; +import eu.piacere.ide.toolIntegration.kriec.util.IECStorage; +import eu.piacere.ide.toolIntegration.kriec.util.IECStoragesContainer; +import eu.piacere.ide.toolIntegration.kriec.util.IECVirtualMachine; +import eu.piacere.ide.toolIntegration.kriec.util.IECVirtualMachinesContainer; + +public class IECLabelProvider extends LabelProvider +{ + + public String getText(Object element) { + if (element instanceof IECDatabasesContainer) { + return "Databases"; + } + else if (element instanceof IECStoragesContainer) { + + return "Storages"; + } + else if (element instanceof IECVirtualMachinesContainer) { + return "Virtual Machines"; + } + else if (element instanceof IECDatabase) { + return ((IECDatabase)element).getServiceName(); + } + else if (element instanceof IECStorage) { + return ((IECStorage)element).getServiceName(); + } + else if (element instanceof IECVirtualMachine) { + return ((IECVirtualMachine)element).getServiceName(); + } + else if (element instanceof IECServiceAttribute) { + return ((IECServiceAttribute)element).getType().getName()+": "+((IECServiceAttribute)element).getServiceAttributeValue(); + } + return super.getText(element); + } + + public Image getImage(Object element) { + try { + String imagePath = FileLocator.toFileURL(Platform.getBundle("PiacereIDEIntegration.KRIEC").getResource("icons/")).getPath(); + + if (element instanceof IECDatabasesContainer) { + Image image = new Image((Device)Display.getCurrent(), String.valueOf(imagePath) + "bundle.png"); + return image; + } + else if (element instanceof IECStoragesContainer) { + Image image = new Image((Device)Display.getCurrent(), String.valueOf(imagePath) + "bundle.png"); + return image; + } + else if (element instanceof IECVirtualMachinesContainer) { + Image image = new Image((Device)Display.getCurrent(), String.valueOf(imagePath) + "bundle.png"); + return image; + } + else if (element instanceof IECDatabase) { + Image image = new Image((Device)Display.getCurrent(), String.valueOf(imagePath) + "repository.png"); + return image; + } + else if (element instanceof IECStorage) { + Image image = new Image((Device)Display.getCurrent(), String.valueOf(imagePath) + "jar.png"); + return image; + } + else if (element instanceof IECVirtualMachine) { + Image image = new Image((Device)Display.getCurrent(), String.valueOf(imagePath) + "ref.png"); + return image; + } + else if (element instanceof IECServiceAttribute) { + Image image = new Image((Device)Display.getCurrent(), String.valueOf(imagePath) + "Task.gif"); + return image; + } + } catch (IOException iOException) { + return null; + } + return super.getImage(element); + } + +} + + + + + diff --git a/Source Code/V2.1/PiacereToolCustomization/.classpath b/Source Code/V2.1/PiacereToolCustomization/.classpath new file mode 100755 index 0000000000000000000000000000000000000000..1fa3e6803d3b22e055b735220510616c4e35f2fc --- /dev/null +++ b/Source Code/V2.1/PiacereToolCustomization/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="src" path="src"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/Source Code/V2.1/PiacereToolCustomization/.project b/Source Code/V2.1/PiacereToolCustomization/.project new file mode 100755 index 0000000000000000000000000000000000000000..f8c1892e4ab3a4a3df9dcb7c8b2d9657268a676a --- /dev/null +++ b/Source Code/V2.1/PiacereToolCustomization/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>PiacereToolCustomization</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/Source Code/V2.1/PiacereToolCustomization/FAdAIcons/ConvertToFAdAProject.png b/Source Code/V2.1/PiacereToolCustomization/FAdAIcons/ConvertToFAdAProject.png new file mode 100644 index 0000000000000000000000000000000000000000..ce012c20e3848f2d0c8a2f08c79ed39ce929e206 Binary files /dev/null and b/Source Code/V2.1/PiacereToolCustomization/FAdAIcons/ConvertToFAdAProject.png differ diff --git a/Source Code/V2.1/PiacereToolCustomization/FAdAIcons/ConvertToFAdAProject_old.png b/Source Code/V2.1/PiacereToolCustomization/FAdAIcons/ConvertToFAdAProject_old.png new file mode 100644 index 0000000000000000000000000000000000000000..56108deeb219042fc8da6b8e1ec22cbfe1db1d3d Binary files /dev/null and b/Source Code/V2.1/PiacereToolCustomization/FAdAIcons/ConvertToFAdAProject_old.png differ diff --git a/Source Code/V2.1/PiacereToolCustomization/FAdAIcons/FAdAIcon_16.png b/Source Code/V2.1/PiacereToolCustomization/FAdAIcons/FAdAIcon_16.png new file mode 100644 index 0000000000000000000000000000000000000000..b4078db8573c6315207b6362fbc752336dfff5c4 Binary files /dev/null and b/Source Code/V2.1/PiacereToolCustomization/FAdAIcons/FAdAIcon_16.png differ diff --git a/Source Code/V2.1/PiacereToolCustomization/FAdAIcons/FAdAIcon_24.png b/Source Code/V2.1/PiacereToolCustomization/FAdAIcons/FAdAIcon_24.png new file mode 100644 index 0000000000000000000000000000000000000000..f4259625230e2b11b98a14aa6b75b52edad25dd8 Binary files /dev/null and b/Source Code/V2.1/PiacereToolCustomization/FAdAIcons/FAdAIcon_24.png differ diff --git a/Source Code/V2.1/PiacereToolCustomization/FAdAIcons/FAdAIcon_32.png b/Source Code/V2.1/PiacereToolCustomization/FAdAIcons/FAdAIcon_32.png new file mode 100644 index 0000000000000000000000000000000000000000..2672c3891b01f3ce5be893b404d727263244cd6d Binary files /dev/null and b/Source Code/V2.1/PiacereToolCustomization/FAdAIcons/FAdAIcon_32.png differ diff --git a/Source Code/V2.1/PiacereToolCustomization/FAdAIcons/FAdAIcon_8.png b/Source Code/V2.1/PiacereToolCustomization/FAdAIcons/FAdAIcon_8.png new file mode 100644 index 0000000000000000000000000000000000000000..41fc8b997c629493aec4979e02aa5bfd59a37204 Binary files /dev/null and b/Source Code/V2.1/PiacereToolCustomization/FAdAIcons/FAdAIcon_8.png differ diff --git a/Source Code/V2.1/PiacereToolCustomization/FAdAIcons/old/FAdAIcon_16.png b/Source Code/V2.1/PiacereToolCustomization/FAdAIcons/old/FAdAIcon_16.png new file mode 100644 index 0000000000000000000000000000000000000000..08e6b6036ad0e360db3020dde7df28a87d04a84a Binary files /dev/null and b/Source Code/V2.1/PiacereToolCustomization/FAdAIcons/old/FAdAIcon_16.png differ diff --git a/Source Code/V2.1/PiacereToolCustomization/FAdAIcons/old/FAdAIcon_24.png b/Source Code/V2.1/PiacereToolCustomization/FAdAIcons/old/FAdAIcon_24.png new file mode 100644 index 0000000000000000000000000000000000000000..07bd601d63b754c1e89e11c9496a2ee882105fef Binary files /dev/null and b/Source Code/V2.1/PiacereToolCustomization/FAdAIcons/old/FAdAIcon_24.png differ diff --git a/Source Code/V2.1/PiacereToolCustomization/FAdAIcons/old/FAdAIcon_32.png b/Source Code/V2.1/PiacereToolCustomization/FAdAIcons/old/FAdAIcon_32.png new file mode 100644 index 0000000000000000000000000000000000000000..c0813f81135515bc5b9a21770152855ecf1e45b6 Binary files /dev/null and b/Source Code/V2.1/PiacereToolCustomization/FAdAIcons/old/FAdAIcon_32.png differ diff --git a/Source Code/V2.1/PiacereToolCustomization/FAdAIcons/old/FAdAIcon_8.png b/Source Code/V2.1/PiacereToolCustomization/FAdAIcons/old/FAdAIcon_8.png new file mode 100644 index 0000000000000000000000000000000000000000..934b971eb6e91c6f3efd8e0b9b441ba741dbeb85 Binary files /dev/null and b/Source Code/V2.1/PiacereToolCustomization/FAdAIcons/old/FAdAIcon_8.png differ diff --git a/Source Code/V2.1/PiacereToolCustomization/META-INF/MANIFEST.MF b/Source Code/V2.1/PiacereToolCustomization/META-INF/MANIFEST.MF new file mode 100755 index 0000000000000000000000000000000000000000..81fbc68a202aceaffa32c73d8fd9fab1a9b3d938 --- /dev/null +++ b/Source Code/V2.1/PiacereToolCustomization/META-INF/MANIFEST.MF @@ -0,0 +1,32 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: PiacereToolCustomization +Bundle-SymbolicName: PiacereToolCustomization;singleton:=true +Bundle-Version: 1.0.0.qualifier +Bundle-Vendor: TaTAmI +Import-Package: eu.piacere.doml, + eu.piacere.doml.generator, + eu.piacere.doml.grammar.ui.internal, + eu.piacere.doml.ide.contentassist.antlr, + eu.piacere.doml.ide.contentassist.antlr.internal, + eu.piacere.doml.parser.antlr, + eu.piacere.doml.parser.antlr.internal, + eu.piacere.doml.scoping, + eu.piacere.doml.serializer, + eu.piacere.doml.services, + eu.piacere.doml.ui.contentassist, + eu.piacere.doml.ui.quickfix, + eu.piacere.doml.validation, + org.eclipse.core.commands, + org.eclipse.core.resources, + org.eclipse.core.runtime, + org.eclipse.jface.viewers, + org.eclipse.jface.wizard, + org.eclipse.swt.graphics, + org.eclipse.ui, + org.eclipse.ui.dialogs, + org.eclipse.ui.handlers +Export-Package: eu.piacere.piacereTool.piacereProjectNature +Require-Bundle: eu.piacere.doml.editor, + eu.piacere.doml, + eu.piacere.doml.edit diff --git a/Source Code/V2.1/PiacereToolCustomization/PiacereIcons/PiacereIcon_128x128.png b/Source Code/V2.1/PiacereToolCustomization/PiacereIcons/PiacereIcon_128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..515cef7760b8362f3c33ae438a648256dae149b0 Binary files /dev/null and b/Source Code/V2.1/PiacereToolCustomization/PiacereIcons/PiacereIcon_128x128.png differ diff --git a/Source Code/V2.1/PiacereToolCustomization/PiacereIcons/PiacereIcon_16x16.png b/Source Code/V2.1/PiacereToolCustomization/PiacereIcons/PiacereIcon_16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..444de54d6cfe2958fac1bbb89dd8619b4c537c47 Binary files /dev/null and b/Source Code/V2.1/PiacereToolCustomization/PiacereIcons/PiacereIcon_16x16.png differ diff --git a/Source Code/V2.1/PiacereToolCustomization/PiacereIcons/PiacereIcon_24x24.png b/Source Code/V2.1/PiacereToolCustomization/PiacereIcons/PiacereIcon_24x24.png new file mode 100644 index 0000000000000000000000000000000000000000..15a6cd0966080e5292e1ab99a96df89bd694e5b9 Binary files /dev/null and b/Source Code/V2.1/PiacereToolCustomization/PiacereIcons/PiacereIcon_24x24.png differ diff --git a/Source Code/V2.1/PiacereToolCustomization/PiacereIcons/PiacereIcon_256x256.png b/Source Code/V2.1/PiacereToolCustomization/PiacereIcons/PiacereIcon_256x256.png new file mode 100644 index 0000000000000000000000000000000000000000..6db52fe2c2ed0dd9f75163214b094476416e341a Binary files /dev/null and b/Source Code/V2.1/PiacereToolCustomization/PiacereIcons/PiacereIcon_256x256.png differ diff --git a/Source Code/V2.1/PiacereToolCustomization/PiacereIcons/PiacereIcon_32x32.png b/Source Code/V2.1/PiacereToolCustomization/PiacereIcons/PiacereIcon_32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..bb51b447d7bc3b9b0c866b35cc9c65917508e0f7 Binary files /dev/null and b/Source Code/V2.1/PiacereToolCustomization/PiacereIcons/PiacereIcon_32x32.png differ diff --git a/Source Code/V2.1/PiacereToolCustomization/PiacereIcons/PiacereIcon_48x48.png b/Source Code/V2.1/PiacereToolCustomization/PiacereIcons/PiacereIcon_48x48.png new file mode 100644 index 0000000000000000000000000000000000000000..b610e19f8483d4592b5bd75e3f1f31631fe7d74e Binary files /dev/null and b/Source Code/V2.1/PiacereToolCustomization/PiacereIcons/PiacereIcon_48x48.png differ diff --git a/Source Code/V2.1/PiacereToolCustomization/PiacereIcons/PiacereIcon_64x64.png b/Source Code/V2.1/PiacereToolCustomization/PiacereIcons/PiacereIcon_64x64.png new file mode 100644 index 0000000000000000000000000000000000000000..35e591d0b099c68a688d1f1e8524effa1f20e54a Binary files /dev/null and b/Source Code/V2.1/PiacereToolCustomization/PiacereIcons/PiacereIcon_64x64.png differ diff --git a/Source Code/V2.1/PiacereToolCustomization/PiacereIcons/PiacereIcon_8x8.png b/Source Code/V2.1/PiacereToolCustomization/PiacereIcons/PiacereIcon_8x8.png new file mode 100644 index 0000000000000000000000000000000000000000..7ef08d6c3d1f9db2becf7d9be4f4b63f920aa6af Binary files /dev/null and b/Source Code/V2.1/PiacereToolCustomization/PiacereIcons/PiacereIcon_8x8.png differ diff --git a/Source Code/V2.1/PiacereToolCustomization/PiacereIcons/icon16.bmp b/Source Code/V2.1/PiacereToolCustomization/PiacereIcons/icon16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..b7e20845b6a19075baedbeeb6e08187ae431ab07 Binary files /dev/null and b/Source Code/V2.1/PiacereToolCustomization/PiacereIcons/icon16.bmp differ diff --git a/Source Code/V2.1/PiacereToolCustomization/PiacereIcons/icon24.bmp b/Source Code/V2.1/PiacereToolCustomization/PiacereIcons/icon24.bmp new file mode 100644 index 0000000000000000000000000000000000000000..154b047c5c3c053248e49297824a7dbc7ff87291 Binary files /dev/null and b/Source Code/V2.1/PiacereToolCustomization/PiacereIcons/icon24.bmp differ diff --git a/Source Code/V2.1/PiacereToolCustomization/PiacereIcons/icon256.bmp b/Source Code/V2.1/PiacereToolCustomization/PiacereIcons/icon256.bmp new file mode 100644 index 0000000000000000000000000000000000000000..8de86f74ca5f55d3394e9adad417fb05fe698688 Binary files /dev/null and b/Source Code/V2.1/PiacereToolCustomization/PiacereIcons/icon256.bmp differ diff --git a/Source Code/V2.1/PiacereToolCustomization/PiacereIcons/icon32.bmp b/Source Code/V2.1/PiacereToolCustomization/PiacereIcons/icon32.bmp new file mode 100644 index 0000000000000000000000000000000000000000..bbcafe4d4b1147ac7abbfa3a57da08834f1978d5 Binary files /dev/null and b/Source Code/V2.1/PiacereToolCustomization/PiacereIcons/icon32.bmp differ diff --git a/Source Code/V2.1/PiacereToolCustomization/PiacereIcons/icon48.bmp b/Source Code/V2.1/PiacereToolCustomization/PiacereIcons/icon48.bmp new file mode 100644 index 0000000000000000000000000000000000000000..b18d23b7018576501facd65545f0b909fa3ab2e9 Binary files /dev/null and b/Source Code/V2.1/PiacereToolCustomization/PiacereIcons/icon48.bmp differ diff --git a/Source Code/V2.1/PiacereToolCustomization/PiacereIcons/icon8.bmp b/Source Code/V2.1/PiacereToolCustomization/PiacereIcons/icon8.bmp new file mode 100644 index 0000000000000000000000000000000000000000..55eada3418ba1f8edd55d3a419415cc59fb618f4 Binary files /dev/null and b/Source Code/V2.1/PiacereToolCustomization/PiacereIcons/icon8.bmp differ diff --git a/Source Code/V2.1/PiacereToolCustomization/bin/eu/piacere/piacereTool/domlSpec/NewDOMLSpecWizard.class b/Source Code/V2.1/PiacereToolCustomization/bin/eu/piacere/piacereTool/domlSpec/NewDOMLSpecWizard.class new file mode 100644 index 0000000000000000000000000000000000000000..9f85a4ec64a525e4b166676201011794860c5b3e Binary files /dev/null and b/Source Code/V2.1/PiacereToolCustomization/bin/eu/piacere/piacereTool/domlSpec/NewDOMLSpecWizard.class differ diff --git a/Source Code/V2.1/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacerePerspective/PiacerePerspectiveFactory.class b/Source Code/V2.1/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacerePerspective/PiacerePerspectiveFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..220a4d0ec441a204c7981c5845090a503dbb41d2 Binary files /dev/null and b/Source Code/V2.1/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacerePerspective/PiacerePerspectiveFactory.class differ diff --git a/Source Code/V2.1/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacereProject/NewPiacereProjectWizard.class b/Source Code/V2.1/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacereProject/NewPiacereProjectWizard.class new file mode 100644 index 0000000000000000000000000000000000000000..35fc1337e185767701711d94e933dd43a51bac6c Binary files /dev/null and b/Source Code/V2.1/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacereProject/NewPiacereProjectWizard.class differ diff --git a/Source Code/V2.1/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacereProjectNature/AddRemovePiacereProjectNatureHandler.class b/Source Code/V2.1/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacereProjectNature/AddRemovePiacereProjectNatureHandler.class new file mode 100644 index 0000000000000000000000000000000000000000..49d6347bb0e592da7a5b5aca6513b55e30d1bc4c Binary files /dev/null and b/Source Code/V2.1/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacereProjectNature/AddRemovePiacereProjectNatureHandler.class differ diff --git a/Source Code/V2.1/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacereProjectNature/PiacereNature.class b/Source Code/V2.1/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacereProjectNature/PiacereNature.class new file mode 100644 index 0000000000000000000000000000000000000000..e4300d1cbd9c301b9dbaa19caff19d3befcd0bf6 Binary files /dev/null and b/Source Code/V2.1/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacereProjectNature/PiacereNature.class differ diff --git a/Source Code/V2.1/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacereProjectNature/PiacereNatureBuilder$SampleDeltaVisitor.class b/Source Code/V2.1/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacereProjectNature/PiacereNatureBuilder$SampleDeltaVisitor.class new file mode 100644 index 0000000000000000000000000000000000000000..afb4ce480f1401527c1b177b926ac33282e4cac8 Binary files /dev/null and b/Source Code/V2.1/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacereProjectNature/PiacereNatureBuilder$SampleDeltaVisitor.class differ diff --git a/Source Code/V2.1/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacereProjectNature/PiacereNatureBuilder$SampleResourceVisitor.class b/Source Code/V2.1/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacereProjectNature/PiacereNatureBuilder$SampleResourceVisitor.class new file mode 100644 index 0000000000000000000000000000000000000000..42d2928b5bc7ce44ce1cfdba3f4d5158acab8e26 Binary files /dev/null and b/Source Code/V2.1/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacereProjectNature/PiacereNatureBuilder$SampleResourceVisitor.class differ diff --git a/Source Code/V2.1/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacereProjectNature/PiacereNatureBuilder$XMLErrorHandler.class b/Source Code/V2.1/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacereProjectNature/PiacereNatureBuilder$XMLErrorHandler.class new file mode 100644 index 0000000000000000000000000000000000000000..2c553ed802a7b56b86cf9ec053449bf73c3ac2cb Binary files /dev/null and b/Source Code/V2.1/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacereProjectNature/PiacereNatureBuilder$XMLErrorHandler.class differ diff --git a/Source Code/V2.1/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacereProjectNature/PiacereNatureBuilder.class b/Source Code/V2.1/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacereProjectNature/PiacereNatureBuilder.class new file mode 100644 index 0000000000000000000000000000000000000000..cf64b38670872a59194e697914bb88e55e3e9fac Binary files /dev/null and b/Source Code/V2.1/PiacereToolCustomization/bin/eu/piacere/piacereTool/piacereProjectNature/PiacereNatureBuilder.class differ diff --git a/Source Code/V2.1/PiacereToolCustomization/bin/eu/piacere/piacereTool/prefPage/PreferencePage.class b/Source Code/V2.1/PiacereToolCustomization/bin/eu/piacere/piacereTool/prefPage/PreferencePage.class new file mode 100644 index 0000000000000000000000000000000000000000..1b60b4d3ee2ea46b1e024943e2382f5d786d0d92 Binary files /dev/null and b/Source Code/V2.1/PiacereToolCustomization/bin/eu/piacere/piacereTool/prefPage/PreferencePage.class differ diff --git a/Source Code/V2.1/PiacereToolCustomization/build.properties b/Source Code/V2.1/PiacereToolCustomization/build.properties new file mode 100755 index 0000000000000000000000000000000000000000..3a3619a3a37df30c3f43ec59d12b40c67d1b1b91 --- /dev/null +++ b/Source Code/V2.1/PiacereToolCustomization/build.properties @@ -0,0 +1,7 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + .,\ + plugin.xml,\ + icons/,\ + PiacereIcons/ diff --git a/Source Code/V2.1/PiacereToolCustomization/plugin.xml b/Source Code/V2.1/PiacereToolCustomization/plugin.xml new file mode 100755 index 0000000000000000000000000000000000000000..58c7858e1d643721dd809aa64498fba1b1cdd0fe --- /dev/null +++ b/Source Code/V2.1/PiacereToolCustomization/plugin.xml @@ -0,0 +1,180 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.4"?> +<plugin> + +<extension point="org.eclipse.ui.newWizards"> + <wizard + category="eu.piacere.category.id" + class="eu.piacere.piacereTool.piacereProject.NewPiacereProjectWizard" + finalPerspective="eu.piacere.piacerePerspective.id" + icon="PiacereIcons/PiacereIcon_16x16.png" + id="eu.piacere.piacereProject.id" + name="New Piacere Project" + preferredPerspectives="eu.piacere.piacerePerspective.id" + project="true"> + </wizard> + <category + id="eu.piacere.category.id" + name="Piacere"> + </category> + <category + id="eu.piacere.modelsCategory.id" + name="Piacere Models" + parentCategory="eu.piacere.category.id"> + </category> + <category + id="eu.piacere.diagramsCategory.id" + name="Piacere Diagrams" + parentCategory="eu.piacere.category.id"> + </category> + <category + id="eu.piacere.piacereModelsCommands.category.id" + name="Piacere Diagrams" + parentCategory="eu.piacere.category.id"> + </category> + <wizard + category="eu.piacere.category.id" + class="eu.piacere.piacereTool.domlSpec.NewDOMLSpecWizard" + finalPerspective="eu.piacere.piacerePerspective.id" + icon="PiacereIcons/PiacereIcon_16x16.png" + id="eu.piacere.domlSpec.id" + name="New DOML Spec" + preferredPerspectives="eu.piacere.piacerePerspective.id"> + </wizard> +</extension> +<extension + point="org.eclipse.ui.perspectives"> + <perspective + class="eu.piacere.piacereTool.piacerePerspective.PiacerePerspectiveFactory" + icon="PiacereIcons/PiacereIcon_16x16.png" + id="eu.piacere.piacerePerspective.id" + name="Piacere"> + </perspective> + </extension> +<extension + point="org.eclipse.ui.perspectiveExtensions"> + <perspectiveExtension + targetID="eu.piacere.piacerePerspective.id"> + <newWizardShortcut + id="eu.piacere.piacereProject.id"> + </newWizardShortcut> + <newWizardShortcut + id="eu.piacere.doml.doml.application.presentation.ApplicationModelWizardID"> + </newWizardShortcut> + <newWizardShortcut + id="eu.piacere.doml.doml.commons.presentation.CommonsModelWizardID"> + </newWizardShortcut> + <newWizardShortcut + id="eu.piacere.doml.doml.concrete.presentation.ConcreteModelWizardID"> + </newWizardShortcut> + <newWizardShortcut + id="eu.piacere.doml.doml.infrastructure.presentation.InfrastructureModelWizardID"> + </newWizardShortcut> + <newWizardShortcut + id="eu.piacere.doml.doml.optimization.presentation.OptimizationModelWizardID"> + </newWizardShortcut> + <newWizardShortcut + id="eu.piacere.domlSpec.id"> + </newWizardShortcut> + </perspectiveExtension> + </extension> + <extension + id="eu.piacere.piacereProjectNatureBuilder.id" + name="Piacere Project Builder" + point="org.eclipse.core.resources.builders"> + <builder + hasNature="true"> + <run + class="eu.piacere.piacereTool.piacereProjectNature.PiacereNatureBuilder"> + </run> + </builder> + </extension> + <extension + id="eu.piacere.piacereProjectNature.id" + name="Piacere Project Nature" + point="org.eclipse.core.resources.natures"> + <runtime> + <run + class="eu.piacere.piacereTool.piacereProjectNature.PiacereNature"> + </run> + </runtime> + <builder + id="eu.piacere.piacereProjectNatureBuilder.id"> + </builder> + </extension> + <extension + id="xmlProblem" + name="XML Problem" + point="org.eclipse.core.resources.markers"> + <super + type="org.eclipse.core.resources.problemmarker"> + </super> + <persistent + value="true"> + </persistent> + </extension> + <extension + point="org.eclipse.ui.ide.projectNatureImages"> + <image + icon="PiacereIcons/PiacereIcon_16x16.png" + id="eu.piacerepiacereProjectNature.piacereProjectNatureImage.id" + natureId="eu.piacere.piacereProjectNature.id"> + </image> + </extension> + <extension + point="org.eclipse.ui.commands"> + <category + id="eu.piacere.piacereModelsCommands.category.id" + name="Piacere Models Commands"> + </category> + <category + id="eu.piacere.eclipseProjectNature.piacereNature.category.id" + name="Piacere Nature commands"> + </category> + <command + categoryId="eu.piacere.eclipseProjectNature.piacereNature.category.id" + defaultHandler="eu.piacere.piacereTool.piacereProjectNature.AddRemovePiacereProjectNatureHandler" + id="eu.piacere.eclipseProjectNature.piacereNature.addRemovePiacereProjectNatureCommand.id" + name="Add Piacere Project Nature"> + </command> + </extension> + + <extension point="org.eclipse.ui.menus"> + <menuContribution allPopups="false" locationURI="popup:org.eclipse.ui.popup.any?after=additions"> + <menu icon="PiacereIcons/PiacereIcon_16x16.png" id="eu.piacere.eclipsePopupMenu.id" label="Piacere"> + </menu> + </menuContribution> + <menuContribution allPopups="false" locationURI="popup:eu.piacere.eclipsePopupMenu.id"> + + <command + commandId="eu.piacere.eclipseProjectNature.piacereNature.addRemovePiacereProjectNatureCommand.id" + icon="PiacereIcons/PiacereIcon_24x24.png" + label="Convert To Piacere Project" + style="push" + tooltip="Converts the current project into a Piacere Project"> + <visibleWhen checkEnabled="false"> + <with variable="selection"> + <count value="1"> + </count> + <iterate> + <adapt type="org.eclipse.core.resources.IProject"> + <not> + <test property="org.eclipse.core.resources.projectNature" value="eu.piacere.piacereProjectNature.id"> + </test> + </not> + </adapt> + </iterate> + </with> + </visibleWhen> + </command> + </menuContribution> + </extension> + <extension + point="org.eclipse.ui.preferencePages"> + <page + class="eu.piacere.piacereTool.prefPage.PreferencePage" + id="PiacereToolCustomization.preferences.page1" + name="Piacere"> + </page> + </extension> +</plugin> diff --git a/Source Code/V2.1/PiacereToolCustomization/src/eu/piacere/piacereTool/domlSpec/NewDOMLSpecWizard.java b/Source Code/V2.1/PiacereToolCustomization/src/eu/piacere/piacereTool/domlSpec/NewDOMLSpecWizard.java new file mode 100644 index 0000000000000000000000000000000000000000..ceb6ba8c95d15bfe0d7aa00060206a42e34a96b8 --- /dev/null +++ b/Source Code/V2.1/PiacereToolCustomization/src/eu/piacere/piacereTool/domlSpec/NewDOMLSpecWizard.java @@ -0,0 +1,58 @@ +package eu.piacere.piacereTool.domlSpec; + +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.ui.INewWizard; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.dialogs.WizardNewFileCreationPage; + +public class NewDOMLSpecWizard extends Wizard implements INewWizard { + + private WizardNewFileCreationPage _pageOne; + private IStructuredSelection sel; + public NewDOMLSpecWizard() { + setWindowTitle("New DOML Specification"); + } + + @Override + public void init(IWorkbench workbench, IStructuredSelection selection) { + this.sel=selection; + + } + + @Override + public boolean performFinish() { + _pageOne.createNewFile(); + return true; + } + + + @Override + public void addPages() { + super.addPages(); + + _pageOne = new WizardNewFileCreationPage("New DOML Specification", this.sel); + _pageOne.setTitle("New DOML Specification"); + _pageOne.setDescription("Create a new DOML Specification."); + _pageOne.setFileExtension("doml"); + + addPage(_pageOne); + } + + /** + * @generated + */ + public String isValid(String newText) { + IStatus status = ResourcesPlugin.getWorkspace().validateName(newText, IResource.FILE); + if (!status.isOK()) { + return status.getMessage(); + } + return null; + } + + + +} diff --git a/Source Code/V2.1/PiacereToolCustomization/src/eu/piacere/piacereTool/piacerePerspective/PiacerePerspectiveFactory.java b/Source Code/V2.1/PiacereToolCustomization/src/eu/piacere/piacereTool/piacerePerspective/PiacerePerspectiveFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..d1facf44c97df7bd9dd24940013efdfee0b80055 --- /dev/null +++ b/Source Code/V2.1/PiacereToolCustomization/src/eu/piacere/piacereTool/piacerePerspective/PiacerePerspectiveFactory.java @@ -0,0 +1,38 @@ +package eu.piacere.piacereTool.piacerePerspective; + +import org.eclipse.ui.IFolderLayout; +import org.eclipse.ui.IPageLayout; +import org.eclipse.ui.IPerspectiveFactory; + +public class PiacerePerspectiveFactory implements IPerspectiveFactory { + + public static final String PIACERE_PERSPECTIVE_ID="eu.piacere.piacerePerspective.id"; + + @Override + public void createInitialLayout(IPageLayout layout) { + + String editorArea = layout.getEditorArea(); + + IFolderLayout leftTop = layout.createFolder("leftTop", IPageLayout.LEFT, (float) 0.2, editorArea); + leftTop.addView(IPageLayout.ID_PROJECT_EXPLORER); + + IFolderLayout leftBottom = layout.createFolder("leftBottom", IPageLayout.BOTTOM, (float) 0.7, "leftTop"); + leftBottom.addView(IPageLayout.ID_OUTLINE); + + IFolderLayout rightBottom = layout.createFolder("bottom", IPageLayout.BOTTOM, (float)0.7, editorArea); + //rightBottom.addView("TaTAmIAdaptationFramework.Tool.DashboardPart"); + //rightBottom.addView("TaTAmIAdaptationFramework.Tool.FadaModelRepositoriesViewPart"); + //rightBottom.addView("TaTAmIAdaptationFramework.Tool.FadaRuntimeInstancesRepositoriesViewPart"); + rightBottom.addView(IPageLayout.ID_PROP_SHEET); + + layout.addActionSet("org.eclipse.debug.ui.launchActionSet"); + + layout.addPerspectiveShortcut("org.eclipse.pde.ui.PDEPerspective"); + + layout.addShowViewShortcut("org.eclipse.ui.navigator.ProjectExplorer"); + layout.addShowViewShortcut("org.eclipse.ui.views.ContentOutline"); + layout.addShowViewShortcut("org.eclipse.ui.views.PropertySheet"); + + } + +} diff --git a/Source Code/V2.1/PiacereToolCustomization/src/eu/piacere/piacereTool/piacereProject/NewPiacereProjectWizard.java b/Source Code/V2.1/PiacereToolCustomization/src/eu/piacere/piacereTool/piacereProject/NewPiacereProjectWizard.java new file mode 100755 index 0000000000000000000000000000000000000000..5f5d9b2bde6164fb8735cc3e2e898ce0c1e6d1ee --- /dev/null +++ b/Source Code/V2.1/PiacereToolCustomization/src/eu/piacere/piacereTool/piacereProject/NewPiacereProjectWizard.java @@ -0,0 +1,73 @@ +package eu.piacere.piacereTool.piacereProject; + +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IProjectDescription; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.ui.INewWizard; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.WorkbenchException; +import org.eclipse.ui.dialogs.WizardNewProjectCreationPage; + +import eu.piacere.piacereTool.piacerePerspective.PiacerePerspectiveFactory; +import eu.piacere.piacereTool.piacereProjectNature.PiacereNature; + +public class NewPiacereProjectWizard extends Wizard implements INewWizard { + + private WizardNewProjectCreationPage _pageOne; + + + public NewPiacereProjectWizard() { + setWindowTitle("New Piacere Project"); + } + + @Override + public void init(IWorkbench workbench, IStructuredSelection selection) { + + } + + @Override + public boolean performFinish() { + IProject p =ResourcesPlugin.getWorkspace().getRoot().getProject(_pageOne.getProjectName()); + try { + IProgressMonitor pm=new NullProgressMonitor(); + p.create(pm); + p.open(pm); + IProjectDescription description = p.getDescription(); + String[] natures = description.getNatureIds(); + String[] newNatures = new String[natures.length + 1]; + System.arraycopy(natures, 0, newNatures, 0, natures.length); + newNatures[natures.length] = PiacereNature.NATURE_ID; + description.setNatureIds(newNatures); + p.setDescription(description, null); + try + { + PlatformUI.getWorkbench().showPerspective(PiacerePerspectiveFactory.PIACERE_PERSPECTIVE_ID,PlatformUI.getWorkbench().getActiveWorkbenchWindow()); + } + catch (WorkbenchException e) + { + e.printStackTrace(); + } + } catch (CoreException e) { + e.printStackTrace(); + } + return true; + } + + @Override + public void addPages() { + super.addPages(); + + _pageOne = new WizardNewProjectCreationPage("New Piacere Project"); + _pageOne.setTitle("New Piacere Project"); + _pageOne.setDescription("Create a new Piacere Project."); + + addPage(_pageOne); + } + +} diff --git a/Source Code/V2.1/PiacereToolCustomization/src/eu/piacere/piacereTool/piacereProjectNature/AddRemovePiacereProjectNatureHandler.java b/Source Code/V2.1/PiacereToolCustomization/src/eu/piacere/piacereTool/piacereProjectNature/AddRemovePiacereProjectNatureHandler.java new file mode 100755 index 0000000000000000000000000000000000000000..eb223d797f43aef0c8dd77cb89e373e3220483aa --- /dev/null +++ b/Source Code/V2.1/PiacereToolCustomization/src/eu/piacere/piacereTool/piacereProjectNature/AddRemovePiacereProjectNatureHandler.java @@ -0,0 +1,76 @@ +package eu.piacere.piacereTool.piacereProjectNature; + +import java.util.Iterator; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IProjectDescription; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IAdaptable; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.ui.handlers.HandlerUtil; + +public class AddRemovePiacereProjectNatureHandler extends AbstractHandler { + + + public Object execute(ExecutionEvent event) throws ExecutionException { + ISelection selection = HandlerUtil.getCurrentSelection(event); + if (selection instanceof IStructuredSelection) { + for (Iterator<?> it = ((IStructuredSelection) selection).iterator(); it + .hasNext();) { + Object element = it.next(); + IProject project = null; + if (element instanceof IProject) { + project = (IProject) element; + } else if (element instanceof IAdaptable) { + project = (IProject) ((IAdaptable) element) + .getAdapter(IProject.class); + } + if (project != null) { + try { + toggleNature(project); + } catch (CoreException e) { + throw new ExecutionException("Failed to toggle nature", + e); + } + } + } + } + + return null; + } + + /** + * Toggles sample nature on a project + * + * @param project + * to have sample nature added or removed + */ + private void toggleNature(IProject project) throws CoreException { + IProjectDescription description = project.getDescription(); + String[] natures = description.getNatureIds(); + + for (int i = 0; i < natures.length; ++i) { + if (PiacereNature.NATURE_ID.equals(natures[i])) { + // Remove the nature + String[] newNatures = new String[natures.length - 1]; + System.arraycopy(natures, 0, newNatures, 0, i); + System.arraycopy(natures, i + 1, newNatures, i, natures.length - i - 1); + description.setNatureIds(newNatures); + project.setDescription(description, null); + return; + } + } + + // Add the nature + String[] newNatures = new String[natures.length + 1]; + System.arraycopy(natures, 0, newNatures, 0, natures.length); + newNatures[natures.length] = PiacereNature.NATURE_ID; + description.setNatureIds(newNatures); + project.setDescription(description, null); + } + +} \ No newline at end of file diff --git a/Source Code/V2.1/PiacereToolCustomization/src/eu/piacere/piacereTool/piacereProjectNature/PiacereNature.java b/Source Code/V2.1/PiacereToolCustomization/src/eu/piacere/piacereTool/piacereProjectNature/PiacereNature.java new file mode 100755 index 0000000000000000000000000000000000000000..b87c114202d5e5265f23ff28464a10ece1a33728 --- /dev/null +++ b/Source Code/V2.1/PiacereToolCustomization/src/eu/piacere/piacereTool/piacereProjectNature/PiacereNature.java @@ -0,0 +1,65 @@ +package eu.piacere.piacereTool.piacereProjectNature; + +import org.eclipse.core.resources.ICommand; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IProjectDescription; +import org.eclipse.core.resources.IProjectNature; +import org.eclipse.core.runtime.CoreException; + +public class PiacereNature implements IProjectNature { + + /** + * ID of this project nature + */ + public static final String NATURE_ID = "eu.piacere.piacereProjectNature.id"; + + private IProject project; + + @Override + public void configure() throws CoreException { + IProjectDescription desc = project.getDescription(); + ICommand[] commands = desc.getBuildSpec(); + + for (int i = 0; i < commands.length; ++i) { + if (commands[i].getBuilderName().equals(PiacereNatureBuilder.BUILDER_ID)) { + return; + } + } + + ICommand[] newCommands = new ICommand[commands.length + 1]; + System.arraycopy(commands, 0, newCommands, 0, commands.length); + ICommand command = desc.newCommand(); + command.setBuilderName(PiacereNatureBuilder.BUILDER_ID); + newCommands[newCommands.length - 1] = command; + desc.setBuildSpec(newCommands); + project.setDescription(desc, null); + } + + @Override + public void deconfigure() throws CoreException { + IProjectDescription description = getProject().getDescription(); + ICommand[] commands = description.getBuildSpec(); + for (int i = 0; i < commands.length; ++i) { + if (commands[i].getBuilderName().equals(PiacereNatureBuilder.BUILDER_ID)) { + ICommand[] newCommands = new ICommand[commands.length - 1]; + System.arraycopy(commands, 0, newCommands, 0, i); + System.arraycopy(commands, i + 1, newCommands, i, + commands.length - i - 1); + description.setBuildSpec(newCommands); + project.setDescription(description, null); + return; + } + } + } + + @Override + public IProject getProject() { + return project; + } + + @Override + public void setProject(IProject project) { + this.project = project; + } + +} diff --git a/Source Code/V2.1/PiacereToolCustomization/src/eu/piacere/piacereTool/piacereProjectNature/PiacereNatureBuilder.java b/Source Code/V2.1/PiacereToolCustomization/src/eu/piacere/piacereTool/piacereProjectNature/PiacereNatureBuilder.java new file mode 100755 index 0000000000000000000000000000000000000000..8f93065f24ead0c3cb24e9b25cfd8fcbf8969af8 --- /dev/null +++ b/Source Code/V2.1/PiacereToolCustomization/src/eu/piacere/piacereTool/piacereProjectNature/PiacereNatureBuilder.java @@ -0,0 +1,158 @@ +package eu.piacere.piacereTool.piacereProjectNature; + +import java.util.Map; + +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.parsers.SAXParser; +import javax.xml.parsers.SAXParserFactory; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IMarker; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IResourceDelta; +import org.eclipse.core.resources.IResourceDeltaVisitor; +import org.eclipse.core.resources.IResourceVisitor; +import org.eclipse.core.resources.IncrementalProjectBuilder; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.xml.sax.SAXException; +import org.xml.sax.SAXParseException; +import org.xml.sax.helpers.DefaultHandler; + +public class PiacereNatureBuilder extends IncrementalProjectBuilder { + + class SampleDeltaVisitor implements IResourceDeltaVisitor { + @Override + public boolean visit(IResourceDelta delta) throws CoreException { + IResource resource = delta.getResource(); + switch (delta.getKind()) { + case IResourceDelta.ADDED: + checkXML(resource); + break; + case IResourceDelta.REMOVED: + break; + case IResourceDelta.CHANGED: + checkXML(resource); + break; + } + return true; + } + } + + class SampleResourceVisitor implements IResourceVisitor { + public boolean visit(IResource resource) { + checkXML(resource); + return true; + } + } + + class XMLErrorHandler extends DefaultHandler { + + private IFile file; + + public XMLErrorHandler(IFile file) { + this.file = file; + } + + private void addMarker(SAXParseException e, int severity) { + PiacereNatureBuilder.this.addMarker(file, e.getMessage(), e + .getLineNumber(), severity); + } + + public void error(SAXParseException exception) throws SAXException { + addMarker(exception, IMarker.SEVERITY_ERROR); + } + + public void fatalError(SAXParseException exception) throws SAXException { + addMarker(exception, IMarker.SEVERITY_ERROR); + } + + public void warning(SAXParseException exception) throws SAXException { + addMarker(exception, IMarker.SEVERITY_WARNING); + } + } + + public static final String BUILDER_ID = "es.upv.pros.tatami.autonomic.adaptation.tatamiProjectNatureBuilder.id"; + + private static final String MARKER_TYPE = "test.xmlProblem"; + + private SAXParserFactory parserFactory; + + private void addMarker(IFile file, String message, int lineNumber, + int severity) { + try { + IMarker marker = file.createMarker(MARKER_TYPE); + marker.setAttribute(IMarker.MESSAGE, message); + marker.setAttribute(IMarker.SEVERITY, severity); + if (lineNumber == -1) { + lineNumber = 1; + } + marker.setAttribute(IMarker.LINE_NUMBER, lineNumber); + } catch (CoreException e) { + } + } + + @Override + @SuppressWarnings("rawtypes") + protected IProject[] build(int kind, Map args, IProgressMonitor monitor) + throws CoreException { + if (kind == FULL_BUILD) { + fullBuild(monitor); + } else { + IResourceDelta delta = getDelta(getProject()); + if (delta == null) { + fullBuild(monitor); + } else { + incrementalBuild(delta, monitor); + } + } + return null; + } + + protected void clean(IProgressMonitor monitor) throws CoreException { + // delete markers set and files created + getProject().deleteMarkers(MARKER_TYPE, true, IResource.DEPTH_INFINITE); + } + + void checkXML(IResource resource) { + if (resource instanceof IFile && resource.getName().endsWith(".xml")) { + IFile file = (IFile) resource; + deleteMarkers(file); + XMLErrorHandler reporter = new XMLErrorHandler(file); + try { + getParser().parse(file.getContents(), reporter); + } catch (Exception e1) { + } + } + } + + private void deleteMarkers(IFile file) { + try { + file.deleteMarkers(MARKER_TYPE, false, IResource.DEPTH_ZERO); + } catch (CoreException ce) { + } + } + + protected void fullBuild(final IProgressMonitor monitor) + throws CoreException { + try { + getProject().accept(new SampleResourceVisitor()); + } catch (CoreException e) { + } + } + + private SAXParser getParser() throws ParserConfigurationException, + SAXException { + if (parserFactory == null) { + parserFactory = SAXParserFactory.newInstance(); + } + return parserFactory.newSAXParser(); + } + + protected void incrementalBuild(IResourceDelta delta, + IProgressMonitor monitor) throws CoreException { + // the visitor does the work. + delta.accept(new SampleDeltaVisitor()); + } +} diff --git a/Source Code/V2.1/PiacereToolCustomization/src/eu/piacere/piacereTool/prefPage/PreferencePage.java b/Source Code/V2.1/PiacereToolCustomization/src/eu/piacere/piacereTool/prefPage/PreferencePage.java new file mode 100644 index 0000000000000000000000000000000000000000..80fe2e42437a08f0af9c39861124dd72b873ec99 --- /dev/null +++ b/Source Code/V2.1/PiacereToolCustomization/src/eu/piacere/piacereTool/prefPage/PreferencePage.java @@ -0,0 +1,41 @@ +package eu.piacere.piacereTool.prefPage; + +import org.eclipse.jface.preference.FieldEditorPreferencePage; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchPreferencePage; + +public class PreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage { + + public PreferencePage() { + // TODO Auto-generated constructor stub + } + + public PreferencePage(int style) { + super(style); + // TODO Auto-generated constructor stub + } + + public PreferencePage(String title, int style) { + super(title, style); + // TODO Auto-generated constructor stub + } + + public PreferencePage(String title, ImageDescriptor image, int style) { + super(title, image, style); + // TODO Auto-generated constructor stub + } + + @Override + public void init(IWorkbench workbench) { + // TODO Auto-generated method stub + + } + + @Override + protected void createFieldEditors() { + // TODO Auto-generated method stub + + } + +} diff --git a/Source Code/V2.1/PiacereToolExtensions/.classpath b/Source Code/V2.1/PiacereToolExtensions/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..e801ebfb4680123285c15553dc70584276fe0057 --- /dev/null +++ b/Source Code/V2.1/PiacereToolExtensions/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="src" path="src"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/Source Code/V2.1/PiacereToolExtensions/.project b/Source Code/V2.1/PiacereToolExtensions/.project new file mode 100644 index 0000000000000000000000000000000000000000..b32ede71e198c52fec6408d5ae56f73e66df600d --- /dev/null +++ b/Source Code/V2.1/PiacereToolExtensions/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>PiacereToolExtensions</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/Source Code/V2.1/PiacereToolExtensions/.settings/org.eclipse.jdt.core.prefs b/Source Code/V2.1/PiacereToolExtensions/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000000000000000000000000000000000000..c9545f06a4120d5b4a1228fb19f67a1171bc0f5b --- /dev/null +++ b/Source Code/V2.1/PiacereToolExtensions/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,9 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=11 +org.eclipse.jdt.core.compiler.compliance=11 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=11 diff --git a/Source Code/V2.1/PiacereToolExtensions/META-INF/MANIFEST.MF b/Source Code/V2.1/PiacereToolExtensions/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..7a28d1010fee04b7da2e2a3dcdedbb5519c0eb42 --- /dev/null +++ b/Source Code/V2.1/PiacereToolExtensions/META-INF/MANIFEST.MF @@ -0,0 +1,57 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: PiacereToolExtensions +Bundle-SymbolicName: PiacereToolExtensions;singleton:=true +Bundle-Version: 1.0.0.qualifier +Bundle-Vendor: TaTAmI +Automatic-Module-Name: PiacereToolExtensions +Import-Package: eu.piacere.doml.doml.commons, + org.apache.commons.io;version="2.8.0", + org.apache.logging.log4j, + org.eclipse.core.internal.resources, + org.eclipse.core.resources, + org.eclipse.core.runtime, + org.eclipse.core.runtime.preferences, + org.eclipse.emf.common.command, + org.eclipse.emf.common.util, + org.eclipse.emf.compare, + org.eclipse.emf.ecore, + org.eclipse.emf.ecore.resource, + org.eclipse.emf.ecore.resource.impl, + org.eclipse.emf.ecore.util, + org.eclipse.emf.ecore.xmi, + org.eclipse.emf.ecore.xmi.impl, + org.eclipse.emf.edit.command, + org.eclipse.emf.edit.domain, + org.eclipse.emf.transaction, + org.eclipse.emf.transaction.util, + org.eclipse.gef, + org.eclipse.gef.editparts, + org.eclipse.gmf.runtime.diagram.ui.editparts, + org.eclipse.gmf.runtime.diagram.ui.editpolicies, + org.eclipse.gmf.runtime.emf.core, + org.eclipse.gmf.runtime.notation, + org.eclipse.gmf.runtime.notation.impl, + org.eclipse.jdt.core, + org.eclipse.jdt.launching, + org.eclipse.jface.action, + org.eclipse.jface.dialogs, + org.eclipse.jface.viewers, + org.eclipse.jface.window, + org.eclipse.jface.wizard, + org.eclipse.osgi.util, + org.eclipse.swt.widgets, + org.eclipse.ui, + org.eclipse.ui.dialogs, + org.eclipse.ui.internal.navigator.actions, + org.eclipse.ui.internal.navigator.resources.actions, + org.eclipse.ui.internal.navigator.workingsets, + org.eclipse.ui.navigator, + org.eclipse.ui.navigator.resources, + org.json, + org.osgi.framework;version="1.8.0" +Require-Bundle: org.eclipse.ui, + org.eclipse.ui.workbench, + org.eclipse.equinox.app, + org.eclipse.core.expressions +Export-Package: eu.piacere.piacereTool.utils diff --git a/Source Code/V2.1/PiacereToolExtensions/Piacere/PiacereIcon_16x16.png b/Source Code/V2.1/PiacereToolExtensions/Piacere/PiacereIcon_16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..444de54d6cfe2958fac1bbb89dd8619b4c537c47 Binary files /dev/null and b/Source Code/V2.1/PiacereToolExtensions/Piacere/PiacereIcon_16x16.png differ diff --git a/Source Code/V2.1/PiacereToolExtensions/bin/eu/piacere/piacereTool/commandHandlers/GenerateDOMLXfromDOMLCommandHandler.class b/Source Code/V2.1/PiacereToolExtensions/bin/eu/piacere/piacereTool/commandHandlers/GenerateDOMLXfromDOMLCommandHandler.class new file mode 100644 index 0000000000000000000000000000000000000000..eb1c760556b78fad4d9e6e358beb235b0c5c2215 Binary files /dev/null and b/Source Code/V2.1/PiacereToolExtensions/bin/eu/piacere/piacereTool/commandHandlers/GenerateDOMLXfromDOMLCommandHandler.class differ diff --git a/Source Code/V2.1/PiacereToolExtensions/bin/eu/piacere/piacereTool/commandHandlers/GenerateDOMLfromDOMLXCommandHandler.class b/Source Code/V2.1/PiacereToolExtensions/bin/eu/piacere/piacereTool/commandHandlers/GenerateDOMLfromDOMLXCommandHandler.class new file mode 100644 index 0000000000000000000000000000000000000000..ec4bbbc0d9d78cb5cf31f1a3a5fa05d983bfbbbd Binary files /dev/null and b/Source Code/V2.1/PiacereToolExtensions/bin/eu/piacere/piacereTool/commandHandlers/GenerateDOMLfromDOMLXCommandHandler.class differ diff --git a/Source Code/V2.1/PiacereToolExtensions/bin/eu/piacere/piacereTool/dialogs/GetAppDialog$1.class b/Source Code/V2.1/PiacereToolExtensions/bin/eu/piacere/piacereTool/dialogs/GetAppDialog$1.class new file mode 100644 index 0000000000000000000000000000000000000000..c333d34ab25085abf9d204a4a2276956a7e53cd4 Binary files /dev/null and b/Source Code/V2.1/PiacereToolExtensions/bin/eu/piacere/piacereTool/dialogs/GetAppDialog$1.class differ diff --git a/Source Code/V2.1/PiacereToolExtensions/bin/eu/piacere/piacereTool/dialogs/GetAppDialog$2.class b/Source Code/V2.1/PiacereToolExtensions/bin/eu/piacere/piacereTool/dialogs/GetAppDialog$2.class new file mode 100644 index 0000000000000000000000000000000000000000..e2cf587d8706212268473d0e3b4abb7c699e8811 Binary files /dev/null and b/Source Code/V2.1/PiacereToolExtensions/bin/eu/piacere/piacereTool/dialogs/GetAppDialog$2.class differ diff --git a/Source Code/V2.1/PiacereToolExtensions/bin/eu/piacere/piacereTool/dialogs/GetAppDialog.class b/Source Code/V2.1/PiacereToolExtensions/bin/eu/piacere/piacereTool/dialogs/GetAppDialog.class new file mode 100644 index 0000000000000000000000000000000000000000..e8e96efcf5457e319b4fe92899338e0522fb2f4c Binary files /dev/null and b/Source Code/V2.1/PiacereToolExtensions/bin/eu/piacere/piacereTool/dialogs/GetAppDialog.class differ diff --git a/Source Code/V2.1/PiacereToolExtensions/bin/eu/piacere/piacereTool/dialogs/GetNameVersionDialog$1.class b/Source Code/V2.1/PiacereToolExtensions/bin/eu/piacere/piacereTool/dialogs/GetNameVersionDialog$1.class new file mode 100644 index 0000000000000000000000000000000000000000..b78d762ac82766e99bdae52c4e307d8213ff16bc Binary files /dev/null and b/Source Code/V2.1/PiacereToolExtensions/bin/eu/piacere/piacereTool/dialogs/GetNameVersionDialog$1.class differ diff --git a/Source Code/V2.1/PiacereToolExtensions/bin/eu/piacere/piacereTool/dialogs/GetNameVersionDialog.class b/Source Code/V2.1/PiacereToolExtensions/bin/eu/piacere/piacereTool/dialogs/GetNameVersionDialog.class new file mode 100644 index 0000000000000000000000000000000000000000..18ca9a8c247a4a38ba345facdbffcaf19a577e57 Binary files /dev/null and b/Source Code/V2.1/PiacereToolExtensions/bin/eu/piacere/piacereTool/dialogs/GetNameVersionDialog.class differ diff --git a/Source Code/V2.1/PiacereToolExtensions/bin/eu/piacere/piacereTool/propertyTesters/ExtensionPropertyTester.class b/Source Code/V2.1/PiacereToolExtensions/bin/eu/piacere/piacereTool/propertyTesters/ExtensionPropertyTester.class new file mode 100644 index 0000000000000000000000000000000000000000..a1b420407fda8a93a8e5e174efecfaba757334c0 Binary files /dev/null and b/Source Code/V2.1/PiacereToolExtensions/bin/eu/piacere/piacereTool/propertyTesters/ExtensionPropertyTester.class differ diff --git a/Source Code/V2.1/PiacereToolExtensions/bin/eu/piacere/piacereTool/utils/FileUtils.class b/Source Code/V2.1/PiacereToolExtensions/bin/eu/piacere/piacereTool/utils/FileUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..6507777d314837051fa55104c27d8d69eed22826 Binary files /dev/null and b/Source Code/V2.1/PiacereToolExtensions/bin/eu/piacere/piacereTool/utils/FileUtils.class differ diff --git a/Source Code/V2.1/PiacereToolExtensions/bin/eu/piacere/piacereTool/utils/ModelUtils.class b/Source Code/V2.1/PiacereToolExtensions/bin/eu/piacere/piacereTool/utils/ModelUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..63d0265ba8d679a375a4dc98a22dbcbdca2de5f7 Binary files /dev/null and b/Source Code/V2.1/PiacereToolExtensions/bin/eu/piacere/piacereTool/utils/ModelUtils.class differ diff --git a/Source Code/V2.1/PiacereToolExtensions/bin/eu/piacere/piacereTool/utils/PluginUtils.class b/Source Code/V2.1/PiacereToolExtensions/bin/eu/piacere/piacereTool/utils/PluginUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..5b767fc5781de398f161b911b8d5bc17117ad54f Binary files /dev/null and b/Source Code/V2.1/PiacereToolExtensions/bin/eu/piacere/piacereTool/utils/PluginUtils.class differ diff --git a/Source Code/V2.1/PiacereToolExtensions/bin/eu/piacere/piacereTool/utils/ResourceUtils.class b/Source Code/V2.1/PiacereToolExtensions/bin/eu/piacere/piacereTool/utils/ResourceUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..02ad75718d0c11fb86eeb49b523284e0b4c3ef4f Binary files /dev/null and b/Source Code/V2.1/PiacereToolExtensions/bin/eu/piacere/piacereTool/utils/ResourceUtils.class differ diff --git a/Source Code/V2.1/PiacereToolExtensions/bin/eu/piacere/piacereTool/utils/ToolCustomizationUtils.class b/Source Code/V2.1/PiacereToolExtensions/bin/eu/piacere/piacereTool/utils/ToolCustomizationUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..49ba8f421fa8da56b970ce3e40cd7ef4ece9989a Binary files /dev/null and b/Source Code/V2.1/PiacereToolExtensions/bin/eu/piacere/piacereTool/utils/ToolCustomizationUtils.class differ diff --git a/Source Code/V2.1/PiacereToolExtensions/build.properties b/Source Code/V2.1/PiacereToolExtensions/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..52086a7c305694aa678bde0640768488a5cf8e4f --- /dev/null +++ b/Source Code/V2.1/PiacereToolExtensions/build.properties @@ -0,0 +1,6 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + .,\ + plugin.xml,\ + Piacere/ diff --git a/Source Code/V2.1/PiacereToolExtensions/plugin.xml b/Source Code/V2.1/PiacereToolExtensions/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..3a52c6e51b984214292a65ffe155c765878a422f --- /dev/null +++ b/Source Code/V2.1/PiacereToolExtensions/plugin.xml @@ -0,0 +1,162 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.4"?> +<plugin> + <extension + point="org.eclipse.ui.commands"> + <command + categoryId="eu.piacere.piacereModelsCommands.category.id" + defaultHandler="eu.piacere.piacereTool.commandHandlers.GenerateDOMLXfromDOMLCommandHandler" + id="eu.piacere.piacereModelsCommands.generateDOMLXCommand.id" + name="Generate DOMLX Model"> + </command> + <command + categoryId="eu.piacere.piacereModelsCommands.category.id" + defaultHandler="eu.piacere.piacereTool.commandHandlers.GenerateDOMLfromDOMLXCommandHandler" + id="eu.piacere.piacereModelsCommands.generateDOMLCommand.id" + name="Generate DOML Model"> + </command> + </extension> + + <extension point="org.eclipse.ui.menus"> + <menuContribution allPopups="false" locationURI="popup:eu.piacere.eclipsePopupMenu.id"> + <command + commandId="eu.piacere.piacereModelsCommands.generateDOMLXCommand.id" + icon="Piacere/PiacereIcon_16x16.png" + label="Generate DOMLX Model" + style="push" + tooltip="Generates a DOMLX Model From a DOML specification"> + <visibleWhen checkEnabled="false"> + <reference + definitionId="eu.piacere.piacereTool.propertyTesters.extensionPropertyTester.isDOMLModel.id"> + </reference> + </visibleWhen> + </command> + </menuContribution> + <menuContribution allPopups="false" locationURI="popup:eu.piacere.eclipsePopupMenu.id"> + <command + commandId="eu.piacere.piacereModelsCommands.generateDOMLCommand.id" + icon="Piacere/PiacereIcon_16x16.png" + label="Generate DOML Model" + style="push" + tooltip="Generates a DOML Specification From a DOMLX model"> + <visibleWhen checkEnabled="false"> + <reference + definitionId="eu.piacere.piacereTool.propertyTesters.extensionPropertyTester.isDOMLXModel.id"> + </reference> + </visibleWhen> + </command> + </menuContribution> + </extension> + + <extension point="org.eclipse.core.expressions.propertyTesters"> + <propertyTester + class="eu.piacere.piacereTool.propertyTesters.ExtensionPropertyTester" + id="eu.piacere.piacereTool.propertyTesters.ExtensionPropertyTester.id" + namespace="eu.piacere.piacereTool.propertyTesters.extensionPropertyTester" + properties="isDOMLModel, isDOMLXModel, isDOMLJModel, isTarGz" + type="java.lang.Object"> + </propertyTester> + </extension> + + <extension point="org.eclipse.core.expressions.definitions"> + <definition id="eu.piacere.piacereTool.propertyTesters.extensionPropertyTester.isDOMLModel.id"> + <with variable="activeMenuSelection"> + <iterate ifEmpty="false"> + <adapt type="org.eclipse.core.resources.IResource"> + <test property="org.eclipse.core.resources.extension" value="doml" /> + </adapt> + </iterate> + </with> + </definition> + <definition id="eu.piacere.piacereTool.propertyTesters.extensionPropertyTester.isDOMLXModel.id"> + <with variable="activeMenuSelection"> + <iterate ifEmpty="false"> + <adapt type="org.eclipse.core.resources.IResource"> + <test property="org.eclipse.core.resources.extension" value="domlx" /> + </adapt> + </iterate> + </with> + </definition> + <definition + id="eu.piacere.piacereTool.propertyTesters.extensionPropertyTester.isDOMLJModel.id"> + <with + variable="activeMenuSelection"> + <iterate + ifEmpty="false"> + <adapt + type="org.eclipse.core.resources.IResource"> + <test + property="org.eclipse.core.resources.extension" + value="domlj"> + </test> + </adapt> + </iterate> + </with> + </definition> + <definition + id="eu.piacere.piacereTool.propertyTesters.extensionPropertyTester.isTarGz.id"> + <with + variable="activeMenuSelection"> + <iterate + ifEmpty="false"> + <adapt + type="org.eclipse.core.resources.IResource"> + <test + property="org.eclipse.core.resources.extension" + value="gz"> + </test> + </adapt> + </iterate> + </with> + </definition> + <definition + id="eu.piacere.piacereTool.propertyTesters.extensionPropertyTester.isZip.id"> + <with + variable="activeMenuSelection"> + <iterate + ifEmpty="false"> + <adapt + type="org.eclipse.core.resources.IResource"> + <test + property="org.eclipse.core.resources.extension" + value="zip"> + </test> + </adapt> + </iterate> + </with> + </definition> + <definition + id="eu.piacere.piacereTool.propertyTesters.extensionPropertyTester.isCSAR.id"> + <with + variable="activeMenuSelection"> + <iterate + ifEmpty="false"> + <adapt + type="org.eclipse.core.resources.IResource"> + <test + property="org.eclipse.core.resources.extension" + value="casr"> + </test> + </adapt> + </iterate> + </with> + </definition> + + <definition + id="eu.piacere.piacereTool.propertyTesters.extensionPropertyTester.isJSON.id"> + <with + variable="activeMenuSelection"> + <iterate + ifEmpty="false"> + <adapt + type="org.eclipse.core.resources.IResource"> + <test + property="org.eclipse.core.resources.extension" + value="json"> + </test> + </adapt> + </iterate> + </with> + </definition> + </extension> +</plugin> diff --git a/Source Code/V2.1/PiacereToolExtensions/src/eu/piacere/piacereTool/commandHandlers/GenerateDOMLXfromDOMLCommandHandler.java b/Source Code/V2.1/PiacereToolExtensions/src/eu/piacere/piacereTool/commandHandlers/GenerateDOMLXfromDOMLCommandHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..a7c66773216a617003daab2400355b9ee6fc3ee4 --- /dev/null +++ b/Source Code/V2.1/PiacereToolExtensions/src/eu/piacere/piacereTool/commandHandlers/GenerateDOMLXfromDOMLCommandHandler.java @@ -0,0 +1,85 @@ +package eu.piacere.piacereTool.commandHandlers; + +import java.io.IOException; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.Path; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; +import org.eclipse.emf.ecore.util.EcoreUtil; +import org.eclipse.jface.dialogs.ProgressMonitorDialog; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.ui.handlers.HandlerUtil; + +import eu.piacere.doml.doml.commons.DOMLModel; +import eu.piacere.piacereTool.utils.ToolCustomizationUtils; + +public class GenerateDOMLXfromDOMLCommandHandler extends AbstractHandler{ + + + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + ToolCustomizationUtils.saveWorkbench(); + ISelection selection = HandlerUtil.getCurrentSelection(event); + if (selection instanceof StructuredSelection) { + if(((StructuredSelection)selection).getFirstElement() instanceof IFile){ + IFile res = (IFile)((StructuredSelection) selection).getFirstElement(); + ResourceSet rs = new ResourceSetImpl(); + Resource r = rs.getResource(URI.createURI(res.getLocationURI().toString()), true); + try { + r.load(null); + } catch (IOException e) { + e.printStackTrace(); + } + DOMLModel theDOMLModel = (DOMLModel) r.getContents().get(0); + + String domlModelName=ToolCustomizationUtils.getDOMLModelName(); + try { + save(theDOMLModel, domlModelName, rs, res); + } catch (IOException | CoreException e) { + e.printStackTrace(); + } + } + } + return null; + } + + private void save(DOMLModel theDOMLModel, String domlModelName, ResourceSet rs, IFile modelFile) throws IOException, CoreException { + IContainer project = modelFile.getParent(); + if(project.findMember(domlModelName+".domlx")!=null){ + if(ToolCustomizationUtils.showQuestionDialog("Overwrite", "\""+domlModelName+"\" DOML Model already exists.\nDou you want to overwrite it?")){ + + project.getFile(new Path(domlModelName+".domlx")).delete(true, null); + + } + else{ + return; + } + } + ProgressMonitorDialog pd=new ProgressMonitorDialog(ToolCustomizationUtils.getActiveShell()); + try { + pd.open(); + IFile target = project.getFile(new Path(domlModelName+".domlx")); + Resource targetRes = rs.createResource(URI.createURI(target.getLocationURI().toString())); + targetRes.getContents().add(EcoreUtil.copy(theDOMLModel)); + targetRes.save(null); + pd.close(); + ToolCustomizationUtils.showInformationDialog("Generator Result", "Your \""+domlModelName+"\" DOML Model has been generated succesfully."); + + project.refreshLocal(IResource.DEPTH_INFINITE, null); + } catch (Exception e) { + pd.close(); + ToolCustomizationUtils.showErrorDialog("Error Generating DOMLX Model", "There was an error generating the DOMLX model:\n\n"+e.getMessage()); + e.printStackTrace(); + } + } +} diff --git a/Source Code/V2.1/PiacereToolExtensions/src/eu/piacere/piacereTool/commandHandlers/GenerateDOMLfromDOMLXCommandHandler.java b/Source Code/V2.1/PiacereToolExtensions/src/eu/piacere/piacereTool/commandHandlers/GenerateDOMLfromDOMLXCommandHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..ed2119dcf8969b0d657b040699a4ece54b49b670 --- /dev/null +++ b/Source Code/V2.1/PiacereToolExtensions/src/eu/piacere/piacereTool/commandHandlers/GenerateDOMLfromDOMLXCommandHandler.java @@ -0,0 +1,84 @@ +package eu.piacere.piacereTool.commandHandlers; + +import java.io.IOException; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.Path; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; +import org.eclipse.emf.ecore.util.EcoreUtil; +import org.eclipse.jface.dialogs.ProgressMonitorDialog; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.ui.handlers.HandlerUtil; + +import eu.piacere.doml.doml.commons.DOMLModel; +import eu.piacere.piacereTool.utils.ToolCustomizationUtils; + +public class GenerateDOMLfromDOMLXCommandHandler extends AbstractHandler{ + + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + ToolCustomizationUtils.saveWorkbench(); + ISelection selection = HandlerUtil.getCurrentSelection(event); + if (selection instanceof StructuredSelection) { + if(((StructuredSelection)selection).getFirstElement() instanceof IFile){ + IFile res = (IFile)((StructuredSelection) selection).getFirstElement(); + ResourceSet rs = new ResourceSetImpl(); + Resource r = rs.getResource(URI.createURI(res.getLocationURI().toString()), true); + try { + r.load(null); + } catch (IOException e) { + e.printStackTrace(); + } + DOMLModel theDOMLModel = (DOMLModel) r.getContents().get(0); + String domlModelName=ToolCustomizationUtils.getDOMLModelName(); + try { + save(theDOMLModel, domlModelName, rs, res); + } catch (IOException | CoreException e) { + e.printStackTrace(); + } + } + } + return null; + } + + private void save(DOMLModel theDOMLModel, String domlModelName, ResourceSet rs, IFile modelFile) throws IOException, CoreException { + IContainer modelFileContainer=modelFile.getParent(); + if(modelFile.getParent().findMember(domlModelName+".doml")!=null){ + if(ToolCustomizationUtils.showQuestionDialog("Overwrite", "\""+domlModelName+"\" DOML Specification already exists.\nDou you want to overwrite it?")){ + modelFile.delete(true, null); + } + else{ + return; + } + } + ProgressMonitorDialog pd=new ProgressMonitorDialog(ToolCustomizationUtils.getActiveShell()); + try { + + pd.open(); + IFile target = modelFileContainer.getFile(new Path(domlModelName+".doml")); + Resource targetRes = rs.createResource(URI.createURI(target.getLocationURI().toString())); + targetRes.getContents().add(EcoreUtil.copy(theDOMLModel)); + targetRes.save(null); + pd.close(); + ToolCustomizationUtils.showInformationDialog("Generator Result", "Your \""+domlModelName+"\" DOML Specification has been generated succesfully."); + + modelFileContainer.refreshLocal(IResource.DEPTH_INFINITE, null); + } catch (Exception e) { + pd.close(); + ToolCustomizationUtils.showErrorDialog("Error Generating DOML", "There was ana error generating the .doml file:\n\n"+e.getMessage()); + e.printStackTrace(); + } + } +} diff --git a/Source Code/V2.1/PiacereToolExtensions/src/eu/piacere/piacereTool/dialogs/GetAppDialog.java b/Source Code/V2.1/PiacereToolExtensions/src/eu/piacere/piacereTool/dialogs/GetAppDialog.java new file mode 100644 index 0000000000000000000000000000000000000000..48bb543ef2ae92d8b2c52106ee2eb5451ff0d428 --- /dev/null +++ b/Source Code/V2.1/PiacereToolExtensions/src/eu/piacere/piacereTool/dialogs/GetAppDialog.java @@ -0,0 +1,157 @@ +package eu.piacere.piacereTool.dialogs; + +import java.util.ArrayList; + +import org.eclipse.jface.dialogs.IDialogConstants; +import org.eclipse.jface.dialogs.IMessageProvider; +import org.eclipse.jface.dialogs.TitleAreaDialog; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.ModifyEvent; +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.swt.widgets.Text; + + +public class GetAppDialog extends TitleAreaDialog { + + private Combo comboSelectExistant; + private Text textProvideNew; + + private String selection; + private String newProvided; + private ArrayList<String>elementsToSelect; + private String newItemMessage; + private String title; + private String message; + private Label lblText; + + public GetAppDialog(Shell parentShell, String title, String message, ArrayList<String> elementsToSelect, String newItemMessage) { + super(parentShell); + this.newItemMessage = newItemMessage; + this.title = title; + this.message = message; + this.elementsToSelect = elementsToSelect; + this.elementsToSelect.add("- " + newItemMessage+" -"); + + } + + @Override + public void create() { + super.create(); + setTitle(title); + setMessage(message, IMessageProvider.INFORMATION); + getButton(IDialogConstants.OK_ID).setEnabled(false); + } + + @Override + protected Control createDialogArea(Composite parent) { + Composite area = (Composite) super.createDialogArea(parent); + Composite container = new Composite(area, SWT.NONE); + container.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); + GridLayout layout = new GridLayout(2, false); + container.setLayout(layout); + + + createCombo(container); + CreateNewText(container); + + return area; + } + + private void createCombo(Composite container) { + Label lblCombo = new Label(container, SWT.NONE); + lblCombo.setText("Select: "); + + GridData dataFirstName = new GridData(); + dataFirstName.grabExcessHorizontalSpace = true; + dataFirstName.horizontalAlignment = GridData.FILL; + + comboSelectExistant = new Combo(container, SWT.BORDER| SWT.DROP_DOWN | SWT.READ_ONLY); + + String items[] = new String[this.elementsToSelect.size()]; + for(int i=0; i<this.elementsToSelect.size(); i++) { + items[i]=this.elementsToSelect.get(i); + } + comboSelectExistant.setItems(items); + comboSelectExistant.setLayoutData(dataFirstName); + comboSelectExistant.addModifyListener(new ModifyListener() { + + @Override + public void modifyText(ModifyEvent e) { + + if(e.getSource() instanceof Combo) { + Combo o = (Combo) e.getSource(); + if(elementsToSelect.get(o.getSelectionIndex()).equals("- " + newItemMessage+" -")) { + lblText.setVisible(true); + textProvideNew.setVisible(true); + getButton(IDialogConstants.OK_ID).setEnabled(false); + } + else { + lblText.setVisible(false); + textProvideNew.setVisible(false); + getButton(IDialogConstants.OK_ID).setEnabled(true); + } + } + } + }); + } + + private void CreateNewText(Composite container) { + lblText = new Label(container, SWT.NONE); + lblText.setText(newItemMessage+": "); + lblText.setVisible(false); + + GridData dataLastName = new GridData(); + dataLastName.grabExcessHorizontalSpace = true; + dataLastName.horizontalAlignment = GridData.FILL; + textProvideNew = new Text(container, SWT.BORDER); + textProvideNew.setLayoutData(dataLastName); + textProvideNew.setVisible(false); + textProvideNew.addModifyListener(new ModifyListener() { + + @Override + public void modifyText(ModifyEvent e) { + Text t = (Text)e.getSource(); + if(elementsToSelect.get(comboSelectExistant.getSelectionIndex()).equals("- " + newItemMessage+" -")){ + if(t.getText().trim().length()>0) { + getButton(IDialogConstants.OK_ID).setEnabled(true); + } + else { + getButton(IDialogConstants.OK_ID).setEnabled(false); + } + } + } + }); + } + + @Override + protected boolean isResizable() { + return false; + } + + private void saveInput() { + selection = comboSelectExistant.getText(); + newProvided = textProvideNew.getText(); + + } + + @Override + protected void okPressed() { + saveInput(); + super.okPressed(); + } + + public String getSelection() { + return selection; + } + + public String getNewProvided() { + return newProvided; + } +} diff --git a/Source Code/V2.1/PiacereToolExtensions/src/eu/piacere/piacereTool/dialogs/GetNameVersionDialog.java b/Source Code/V2.1/PiacereToolExtensions/src/eu/piacere/piacereTool/dialogs/GetNameVersionDialog.java new file mode 100644 index 0000000000000000000000000000000000000000..315cd84d4729c7bcc9c9cc5244e3ddbfece706f6 --- /dev/null +++ b/Source Code/V2.1/PiacereToolExtensions/src/eu/piacere/piacereTool/dialogs/GetNameVersionDialog.java @@ -0,0 +1,120 @@ +package eu.piacere.piacereTool.dialogs; + +import org.eclipse.jface.dialogs.IDialogConstants; +import org.eclipse.jface.dialogs.IMessageProvider; +import org.eclipse.jface.dialogs.TitleAreaDialog; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.ModifyEvent; +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.swt.widgets.Text; + + +public class GetNameVersionDialog extends TitleAreaDialog { + + private Text textProvideNew; + + private String newProvided; + private String title; + private String message; + + private String initialValue; + + private String newItemMessage; + + public GetNameVersionDialog(Shell parentShell, String title, String message, String initialValue, String newItemMessage) { + super(parentShell); + + this.title = title; + this.message = message; + this.newProvided=initialValue; + this.initialValue=initialValue; + + this.newItemMessage = newItemMessage; + + } + + @Override + public void create() { + super.create(); + setTitle(title); + setMessage(message, IMessageProvider.INFORMATION); + if(this.initialValue.trim().length()>0) { + getButton(IDialogConstants.OK_ID).setEnabled(true); + } + else { + getButton(IDialogConstants.OK_ID).setEnabled(false); + } + } + + @Override + protected Control createDialogArea(Composite parent) { + Composite area = (Composite) super.createDialogArea(parent); + Composite container = new Composite(area, SWT.NONE); + container.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); + GridLayout layout = new GridLayout(2, false); + container.setLayout(layout); + + + createText(container); + + return area; + } + + + + private void createText(Composite container) { + Label lblText = new Label(container, SWT.NONE); + lblText.setText(newItemMessage+": "); + lblText.setVisible(true); + + GridData dataLastName = new GridData(); + dataLastName.grabExcessHorizontalSpace = true; + dataLastName.horizontalAlignment = GridData.FILL; + textProvideNew = new Text(container, SWT.BORDER); + textProvideNew.setLayoutData(dataLastName); + textProvideNew.setVisible(true); + textProvideNew.setText(initialValue); + textProvideNew.addModifyListener(new ModifyListener() { + + + @Override + public void modifyText(ModifyEvent e) { + Text t = (Text)e.getSource(); + + if(t.getText().trim().length()>0) { + getButton(IDialogConstants.OK_ID).setEnabled(true); + } + else { + getButton(IDialogConstants.OK_ID).setEnabled(false); + } + + } + }); + } + + @Override + protected boolean isResizable() { + return false; + } + + private void saveInput() { + newProvided = textProvideNew.getText(); + + } + + @Override + protected void okPressed() { + saveInput(); + super.okPressed(); + } + + public String getNewProvided() { + return newProvided; + } +} diff --git a/Source Code/V2.1/PiacereToolExtensions/src/eu/piacere/piacereTool/propertyTesters/ExtensionPropertyTester.java b/Source Code/V2.1/PiacereToolExtensions/src/eu/piacere/piacereTool/propertyTesters/ExtensionPropertyTester.java new file mode 100755 index 0000000000000000000000000000000000000000..22d4492e9b1d6ed6fb110e45786c96f896278836 --- /dev/null +++ b/Source Code/V2.1/PiacereToolExtensions/src/eu/piacere/piacereTool/propertyTesters/ExtensionPropertyTester.java @@ -0,0 +1,18 @@ +package eu.piacere.piacereTool.propertyTesters; + +import org.eclipse.core.expressions.PropertyTester; +import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl; +import org.eclipse.jface.viewers.StructuredSelection; + +public class ExtensionPropertyTester extends PropertyTester { + + @Override + public boolean test(Object receiver, String property, Object[] args, Object expectedValue) { + if(receiver instanceof StructuredSelection) + if(((StructuredSelection)receiver).getFirstElement() instanceof XMIResourceImpl){ + return ((XMIResourceImpl)((StructuredSelection)receiver).getFirstElement()).getURI().fileExtension().equals(expectedValue.toString()); + } + return false; + } + +} diff --git a/Source Code/V2.1/PiacereToolExtensions/src/eu/piacere/piacereTool/utils/FileUtils.java b/Source Code/V2.1/PiacereToolExtensions/src/eu/piacere/piacereTool/utils/FileUtils.java new file mode 100644 index 0000000000000000000000000000000000000000..5f1e9dca05db5ef0d010aa7768db7928a8a4dc04 --- /dev/null +++ b/Source Code/V2.1/PiacereToolExtensions/src/eu/piacere/piacereTool/utils/FileUtils.java @@ -0,0 +1,109 @@ +package eu.piacere.piacereTool.utils; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Date; + +import org.apache.commons.io.IOUtils; +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IFolder; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.core.runtime.Path; +import org.eclipse.jface.dialogs.ProgressMonitorDialog; + +public final class FileUtils { + + + + public static String getTimestamp() { + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss"); + return sdf.format(new Date()); + } + + public static String getIFileContents(IFile theFileToRead) { + String content=null; + try { + content = IOUtils.toString(theFileToRead.getContents(), theFileToRead.getCharset()); + } catch (IOException | CoreException e2) { + e2.printStackTrace(); + } + return content; + } + + public static String autoIndentFileContent(String codeString){ + String[] lines=codeString.split("\n"); + StringBuilder res=new StringBuilder(); + int identation=0; + for(int i=0; i<lines.length;i++){ + if(lines[i].contains("}")) + identation--; + for(int j=0; j<identation; j++){ + res.append("\t"); + } + res.append(lines[i]); + res.append("\n"); + if(lines[i].contains("{")) + identation++; + } + return res.toString(); + } + + public static IFile createFile(String name, IContainer container) { + return FileUtils.createFile(name, container, new NullProgressMonitor()); + } + + public static IFile createFile(String name, IContainer container, IProgressMonitor progressMonitor) { + return FileUtils.createFile(name, container, "", progressMonitor); + } + + public static IFile createFile(String name, IContainer container, ProgressMonitorDialog progressMonitorDialog) { + return FileUtils.createFile(name, container, "", progressMonitorDialog.getProgressMonitor()); + } + + public static IFile createFile(String name, IContainer container, String content, ProgressMonitorDialog progressMonitorDialog) { + return FileUtils.createFile(name, container, content, progressMonitorDialog.getProgressMonitor()); + } + + public static IFile createFile(String name, IContainer container, String content, IProgressMonitor progressMonitor) { + IFile file = container.getFile(new Path(name)); + FileUtils.assertExist(file.getParent(), progressMonitor); + try { + InputStream stream = new ByteArrayInputStream(content.getBytes(file.getCharset())); + if (file.exists()) { + file.setContents(stream, true, true, progressMonitor); + } + else { + file.create(stream, true, progressMonitor); + } + stream.close(); + } + catch (Exception e) { + e.printStackTrace(); + } + progressMonitor.worked(1); + return file; + } + + + public static void assertExist(IContainer c, IProgressMonitor progressMonitor) { + if (!c.exists()) { + if (!c.getParent().exists()) { + assertExist(c.getParent(),progressMonitor); + } + if (c instanceof IFolder) { + try { + ((IFolder) c).create(false, true, progressMonitor); + } + catch (final CoreException e) { + e.printStackTrace(); + } + } + } + } +} diff --git a/Source Code/V2.1/PiacereToolExtensions/src/eu/piacere/piacereTool/utils/ModelUtils.java b/Source Code/V2.1/PiacereToolExtensions/src/eu/piacere/piacereTool/utils/ModelUtils.java new file mode 100644 index 0000000000000000000000000000000000000000..df6dc402a1adacf70c143cf06cf0050812555eec --- /dev/null +++ b/Source Code/V2.1/PiacereToolExtensions/src/eu/piacere/piacereTool/utils/ModelUtils.java @@ -0,0 +1,104 @@ +package eu.piacere.piacereTool.utils; + +import java.io.IOException; +import java.util.UUID; + +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.Path; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; +import org.eclipse.emf.ecore.util.EcoreUtil; +import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl; +import org.eclipse.jface.dialogs.ProgressMonitorDialog; + +import eu.piacere.doml.doml.commons.DOMLModel; + +public class ModelUtils { + + public static EObject loadEMFModelRoot(IFile modelFile){ + String str = ResourcesPlugin.getWorkspace().getRoot().getLocation().toString(); + String inputModelPath = str + ((IFile)modelFile).getFullPath().toString(); + return loadEMFModelRoot(inputModelPath); + } + + public static EObject loadEMFModelRoot(String modelPath){ + XMIResourceFactoryImpl _xmiFac = new XMIResourceFactoryImpl(); + ResourceSet rSet = new ResourceSetImpl(); + rSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("*", _xmiFac); + URI uri = null; + if(modelPath.startsWith("platform:/plugin")) + uri=URI.createPlatformPluginURI(modelPath.replace("platform:/plugin", ""), false); + else{ + uri=URI.createFileURI(modelPath); + } + Resource res = rSet.getResource(uri, true); + return res.getContents().get(0); + } + + + public static void setupAndSaveEMFInstanceResource(String newModelFileName, IContainer newModelFileContainer, EObject modelRoot, String extension) { + IFile f=FileUtils.createFile(newModelFileName+"."+extension, newModelFileContainer); + ResourceSet rs = new ResourceSetImpl(); + Resource resource = ResourceUtils.createResource(f.getLocation().toString(), new String[] {extension, "xml"}, rs); + resource.getContents().add(modelRoot); + ResourceUtils.saveResource(resource); + } + + + public static String getModelTextAsDOMLXFromDOML(IFile thefile) { + ResourceSet rs = new ResourceSetImpl(); + Resource r = rs.getResource(URI.createURI(thefile.getLocationURI().toString()), true); + try { + r.load(null); + } catch (IOException e) { + e.printStackTrace(); + } + DOMLModel theDOMLModel = (DOMLModel) r.getContents().get(0); + + ProgressMonitorDialog pd=new ProgressMonitorDialog(ToolCustomizationUtils.getActiveShell()); + + pd.open(); + String domlModelName = UUID.randomUUID().toString(); + IFile target = thefile.getProject().getFile(new Path(domlModelName+".domlx")); + Resource targetRes = rs.createResource(URI.createURI(target.getLocationURI().toString())); + targetRes.getContents().add(EcoreUtil.copy(theDOMLModel)); + + pd.close(); + try { + targetRes.save(null); + thefile.getProject().refreshLocal(IResource.DEPTH_INFINITE, null); + String fileContent=FileUtils.getIFileContents(target); + if(fileContent==null) { + return null; + } + + pd.close(); + + try { + target.getProject().getFile(new Path(domlModelName+".domlx")).delete(true, null); + thefile.getProject().refreshLocal(IResource.DEPTH_INFINITE, null); + + } catch (CoreException e) { + e.printStackTrace(); + } + return fileContent; + + } catch (IOException e) { + e.printStackTrace(); + } catch (CoreException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + + return null; + + + } +} diff --git a/Source Code/V2.1/PiacereToolExtensions/src/eu/piacere/piacereTool/utils/PluginUtils.java b/Source Code/V2.1/PiacereToolExtensions/src/eu/piacere/piacereTool/utils/PluginUtils.java new file mode 100644 index 0000000000000000000000000000000000000000..d0ebcc01742f22de17b1371487a1a9dd56940f81 --- /dev/null +++ b/Source Code/V2.1/PiacereToolExtensions/src/eu/piacere/piacereTool/utils/PluginUtils.java @@ -0,0 +1,114 @@ +package eu.piacere.piacereTool.utils; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import org.eclipse.core.resources.IFolder; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IProjectDescription; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.Path; +import org.eclipse.jdt.core.IClasspathEntry; +import org.eclipse.jdt.core.IJavaProject; +import org.eclipse.jdt.core.JavaCore; +import org.eclipse.jdt.launching.JavaRuntime; + +public final class PluginUtils { + + public static IProject createPluginProject(IProject baseProject, List<String> sourceFoldersNames, List<String> extraFolders, IProgressMonitor progressMonitor) throws CoreException{ + + if(!baseProject.exists()) + baseProject.create(progressMonitor); + if(!baseProject.isOpen()) + baseProject.open(progressMonitor); + + IProjectDescription projectDescription=ResourcesPlugin.getWorkspace().newProjectDescription(baseProject.getName()); + //projectDescription.setLocation(null); + projectDescription.setNatureIds(new String[]{"org.eclipse.pde.PluginNature", JavaCore.NATURE_ID}); + baseProject.setDescription(projectDescription, null); + + + IJavaProject javaProject = JavaCore.create(baseProject); + IFolder binFolder = baseProject.getFolder("bin"); + if(!binFolder.exists()) + binFolder.create(true, true, null); + javaProject.setOutputLocation(binFolder.getFullPath(), null); + + + for(String extraFolderName : extraFolders){ + IFolder temp = baseProject.getFolder(extraFolderName); + temp.create(false, true, progressMonitor); + } + + List<IClasspathEntry> classpathEntries = new ArrayList<IClasspathEntry>(); + + classpathEntries.add(JavaCore.newContainerEntry(JavaRuntime.newDefaultJREContainerPath())); + classpathEntries.add(JavaCore.newContainerEntry(new Path("org.eclipse.pde.core.requiredPlugins"))); + + for(String sourceFolderName: sourceFoldersNames){ + IFolder sourceFolder = baseProject.getFolder(sourceFolderName); + sourceFolder.create(false, true, null); + classpathEntries.add(JavaCore.newSourceEntry(sourceFolder.getFullPath())); + } + + javaProject.setRawClasspath(classpathEntries.toArray(new IClasspathEntry[classpathEntries.size()]), null); + FileUtils.createFile("plugin.xml", baseProject, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<?eclipse version=\"3.4\"?>\n<plugin/>", progressMonitor); + PluginUtils.createBuildProps(baseProject, sourceFoldersNames, extraFolders, progressMonitor); + + return baseProject; + } + + public static void createBuildProps(IProject project, List<String> srcFolders, List<String> extraFolders, IProgressMonitor progressMonitor) { + StringBuilder bpContent = new StringBuilder("source.. = "); + for (Iterator<String> iterator = srcFolders.iterator(); iterator.hasNext();) { + bpContent.append(iterator.next()).append('/'); + if (iterator.hasNext()) { + bpContent.append(","); + } + } + bpContent.append("\n"); + bpContent.append("bin.includes = META-INF/,\\\n"); + //bpContent.append("plugin.xml,\\\n"); + for(String extraFolderName:extraFolders) + bpContent.append(extraFolderName+"/,\\\n"); + bpContent.append(".\n"); + FileUtils.createFile("build.properties", project, bpContent.toString(), progressMonitor); + } + + + //public static void createManifest(IProject project,String rootPackageName ,List<String> importedPackages, List<String> exportedPackages, IProgressMonitor progressMonitor)throws CoreException { + public static void createManifest(IProject project, String rootPackageName ,List<String> importedPackages, List<String> exportedPackages, String version, IProgressMonitor progressMonitor)throws CoreException { + StringBuilder maniContent = new StringBuilder("Manifest-Version: 1.0\n"); + maniContent.append("Bundle-ManifestVersion: 2\n"); + //maniContent.append("Bundle-RequiredExecutionEnvironment: JavaSE-1.8\n"); + maniContent.append("Bundle-Name: " + project.getName() + "\n"); + maniContent.append("Bundle-SymbolicName: " + project.getName() + "; singleton:=true\n"); + maniContent.append("Bundle-Version: "+version+"\n"); + maniContent.append("Bundle-Vendor: TaTAmI-ProS\n"); + maniContent.append("Bundle-Activator: "+rootPackageName+".activator.Activator\n"); + maniContent.append("Import-Package: "); + + if(importedPackages!=null){ + for (String entry : importedPackages) { + maniContent.append(" " + entry + ",\n"); + } + } + + maniContent.append(" org.osgi.framework\n"); + + if (exportedPackages != null && !exportedPackages.isEmpty()) { + maniContent.append("Export-Package: " + exportedPackages.get(0)); + for (int i = 1, x = exportedPackages.size(); i < x; i++) { + maniContent.append(",\n " + exportedPackages.get(i)); + } + maniContent.append("\n"); + } + + IFolder metaInf = project.getFolder("META-INF"); + metaInf.create(false, true, progressMonitor); + FileUtils.createFile("MANIFEST.MF", metaInf, maniContent.toString(), progressMonitor); + } +} diff --git a/Source Code/V2.1/PiacereToolExtensions/src/eu/piacere/piacereTool/utils/ResourceUtils.java b/Source Code/V2.1/PiacereToolExtensions/src/eu/piacere/piacereTool/utils/ResourceUtils.java new file mode 100644 index 0000000000000000000000000000000000000000..0d820a62c8c1c9e80d492792199cc57bf3e0ce8a --- /dev/null +++ b/Source Code/V2.1/PiacereToolExtensions/src/eu/piacere/piacereTool/utils/ResourceUtils.java @@ -0,0 +1,46 @@ +package eu.piacere.piacereTool.utils; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Hashtable; +import java.util.Map; + +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.ecore.resource.impl.ResourceImpl; +import org.eclipse.emf.ecore.xmi.XMLResource; +import org.eclipse.emf.ecore.xmi.impl.XMLResourceFactoryImpl; + + +public class ResourceUtils { + + public static Resource createResource(String outputFileURI, String[] fileExtensions, ResourceSet rs) { + for (String fileExt : fileExtensions) { + rs.getResourceFactoryRegistry().getExtensionToFactoryMap().put(fileExt, new XMLResourceFactoryImpl()); + } + URI uri = URI.createFileURI(outputFileURI); + + Resource resource = rs.createResource(uri); + ((ResourceImpl)resource).setIntrinsicIDToEObjectMap(new Hashtable<String, EObject>()); + return resource; + } + + public static void saveResource(Resource resource) { + Map<Object, Object> saveOptions = ((XMLResource)resource).getDefaultSaveOptions(); + saveOptions.put(XMLResource.OPTION_CONFIGURATION_CACHE, Boolean.TRUE); + saveOptions.put(XMLResource.OPTION_USE_CACHED_LOOKUP_TABLE, new ArrayList<Object>()); + try { + resource.save(saveOptions); + } catch (IOException e) { + e.printStackTrace(); + throw new RuntimeException(e); + } + } + + + + + +} \ No newline at end of file diff --git a/Source Code/V2.1/PiacereToolExtensions/src/eu/piacere/piacereTool/utils/ToolCustomizationUtils.java b/Source Code/V2.1/PiacereToolExtensions/src/eu/piacere/piacereTool/utils/ToolCustomizationUtils.java new file mode 100755 index 0000000000000000000000000000000000000000..2b628896bfa06c735eea5fa02a599ac343e88a48 --- /dev/null +++ b/Source Code/V2.1/PiacereToolExtensions/src/eu/piacere/piacereTool/utils/ToolCustomizationUtils.java @@ -0,0 +1,157 @@ +package eu.piacere.piacereTool.utils; + +import java.util.ArrayList; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.Path; +import org.eclipse.core.runtime.preferences.ConfigurationScope; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.xmi.XMIResource; +import org.eclipse.gef.EditPart; +import org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart; +import org.eclipse.gmf.runtime.notation.impl.DiagramImpl; +import org.eclipse.gmf.runtime.notation.impl.ViewImpl; +import org.eclipse.jface.dialogs.InputDialog; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.viewers.TreePath; +import org.eclipse.jface.window.Window; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.preferences.ScopedPreferenceStore; +import org.osgi.framework.FrameworkUtil; + + + + +public class ToolCustomizationUtils { + + public static String getPreference(Class<?> theClass, String preferenceID) { + ScopedPreferenceStore scopedPreferenceStore = new ScopedPreferenceStore(ConfigurationScope.INSTANCE,(FrameworkUtil.getBundle(theClass)).getSymbolicName()); + return scopedPreferenceStore.getString(preferenceID); + } + + protected static Logger logger = LogManager.getLogger(ToolCustomizationUtils.class); + + public static Path getFullPath(URI uri){ + if(uri.toString().startsWith("platform:/resource")){ + return new Path(ResourcesPlugin.getWorkspace().getRoot().getLocation().toString() + uri.toString().replace("platform:/resource", "")); + } + else if(uri.toString().startsWith("file:")){ + return new Path(uri.toString().replace("file:", "")); + } + return null; + } + + public static void saveWorkbench(){ + IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); + if(page!=null){ + IEditorPart editor = page.getActiveEditor(); + if(editor!=null){ + page.saveEditor(editor, true); + } + } + } + + public static EObject getRootEObjectFromResource(ISelection selection){ + return getRootEObjectFromResource((XMIResource)((StructuredSelection)selection).getFirstElement()); + } + + public static EObject getRootEObjectFromResource(XMIResource resource){ + return resource.getContents().get(0); + } + + public static EObject getEObjectFromDiagramSelection(ISelection selection){ + EditPart ep = (EditPart) ((StructuredSelection)selection).getFirstElement(); + if(ep instanceof DiagramEditPart){ + return ((DiagramImpl) ep.getModel()).getElement(); + } + return ((ViewImpl)ep.getModel()).getElement(); + } + + public static String getInputModelPathFromSelection(ISelection selection){ + return ResourcesPlugin.getWorkspace().getRoot().getLocation().toString() + ((IFile)((StructuredSelection) selection).getFirstElement()).getFullPath().toString(); + } + + public static String getInputModelPathFromTreePath(TreePath path){ + return ResourcesPlugin.getWorkspace().getRoot().getLocation().toString() + ((IFile) path.getSegment(path.getSegmentCount()-1)).getFullPath().toString(); + } + + public static void showErrors(String modelType, ArrayList<String> validationResults){ + String errors="There are ERRORS in your "+modelType+":\n\n"; + for(String error:validationResults){ + errors+="\t- "+error+"\n"; + logger.error("\t- "+error); + } + showErrorDialog("Validation Result",errors); + } + + public static String doDialogAsk(String title, String questionText, String providedExample){ + String s=doDialogAskWithoutPostProcess(title, questionText,providedExample); + if ((s != null) && (s.length() > 0)) { + if(s.endsWith(".")){ + s=s.substring(0, s.length()-1); + } + return s.replace(" ", "_"); + } + return null; + } + + + + public static String doDialogAskWithoutPostProcess(String title, String questionText, String providedExample){ + InputDialog dialogAsk=new InputDialog(getActiveShell(), title, questionText+":", providedExample, null); + if(dialogAsk.open()==Window.OK){ + return dialogAsk.getValue(); + } + return null; + } + + + public static Shell getActiveShell() { + Display display = Display.getDefault(); + Shell result = display.getActiveShell(); + + if (result == null) { + Shell[] shells = display.getShells(); + for (Shell shell : shells) { + if (shell.getShells().length == 0) { + if (result != null) + try { + //throw new Exception(); + } catch (Exception e) { + e.printStackTrace(); + } + result = shell; + } + } + } + + return result; + } + + public static void showErrorDialog(String title, String message){ + MessageDialog.openError(getActiveShell(), title, message); + } + + public static boolean showQuestionDialog(String title, String message){ + return MessageDialog.openQuestion(getActiveShell(), title, message); + } + + public static void showInformationDialog(String title, String message){ + MessageDialog.openInformation(getActiveShell(), title, message); + } + + public static String getDOMLModelName() { + return ToolCustomizationUtils.doDialogAsk("DOML Model Name", "Enter the DOML Model Name", "GeneratedDOML"); + } + +} diff --git a/Source Code/V2.1/PiacereToolProduct/.classpath b/Source Code/V2.1/PiacereToolProduct/.classpath new file mode 100755 index 0000000000000000000000000000000000000000..791f73318fb4e40a3caac6d9bd1eabd9d6b1c626 --- /dev/null +++ b/Source Code/V2.1/PiacereToolProduct/.classpath @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"> + <attributes> + <attribute name="module" value="true"/> + </attributes> + </classpathentry> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/Source Code/V2.1/PiacereToolProduct/.gitignore b/Source Code/V2.1/PiacereToolProduct/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..ae3c1726048cd06b9a143e0376ed46dd9b9a8d53 --- /dev/null +++ b/Source Code/V2.1/PiacereToolProduct/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/Source Code/V2.1/PiacereToolProduct/.project b/Source Code/V2.1/PiacereToolProduct/.project new file mode 100644 index 0000000000000000000000000000000000000000..bc48142ea60cb987ff9ac3d90cf88d574fc742f7 --- /dev/null +++ b/Source Code/V2.1/PiacereToolProduct/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>PiacereToolProduct</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/Source Code/V2.1/PiacereToolProduct/META-INF/MANIFEST.MF b/Source Code/V2.1/PiacereToolProduct/META-INF/MANIFEST.MF new file mode 100755 index 0000000000000000000000000000000000000000..23c4dc35d10f9768ae1271d89323f5bed65476c2 --- /dev/null +++ b/Source Code/V2.1/PiacereToolProduct/META-INF/MANIFEST.MF @@ -0,0 +1,6 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: PiacereToolProduct +Bundle-SymbolicName: PiacereToolProduct;singleton:=true +Bundle-Version: 1.0.0.qualifier +Bundle-Vendor: TaTAmI diff --git a/Source Code/V2.1/PiacereToolProduct/Piacere/PiacereIcon.icns b/Source Code/V2.1/PiacereToolProduct/Piacere/PiacereIcon.icns new file mode 100644 index 0000000000000000000000000000000000000000..dc85bd35fdb471de2d3e2bb6385b0e2ea53ffa9d Binary files /dev/null and b/Source Code/V2.1/PiacereToolProduct/Piacere/PiacereIcon.icns differ diff --git a/Source Code/V2.1/PiacereToolProduct/Piacere/PiacereIcon.ico b/Source Code/V2.1/PiacereToolProduct/Piacere/PiacereIcon.ico new file mode 100644 index 0000000000000000000000000000000000000000..955b5c0d349d28067df94598efa145a65192806b Binary files /dev/null and b/Source Code/V2.1/PiacereToolProduct/Piacere/PiacereIcon.ico differ diff --git a/Source Code/V2.1/PiacereToolProduct/Piacere/PiacereIcon.xpm b/Source Code/V2.1/PiacereToolProduct/Piacere/PiacereIcon.xpm new file mode 100644 index 0000000000000000000000000000000000000000..7000c4a32e578bfea5036948d7979f19bfe1d1a5 --- /dev/null +++ b/Source Code/V2.1/PiacereToolProduct/Piacere/PiacereIcon.xpm @@ -0,0 +1,478 @@ +/* XPM */ +static char *e536e75a96154664d52eafc12d0b7d5bUyTTPc7n3PFFgmmI[] = { +/* columns rows colors chars-per-pixel */ +"277 320 152 2 ", +" c None", +". c #07AE78", +"X c #07AF7A", +"o c #09AE78", +"O c #08AF78", +"+ c #09AF78", +"@ c #08AF79", +"# c #09AF79", +"$ c #08AF7A", +"% c #07B078", +"& c #08B079", +"* c #09B079", +"= c #08B07A", +"- c #09B07A", +"; c #0EB079", +": c #08B57B", +"> c #0FB57B", +", c #12B475", +"< c #12B476", +"1 c #1AB373", +"2 c #19B779", +"3 c #10BB7E", +"4 c #19BC7C", +"5 c #32B66D", +"6 c #3CB96E", +"7 c #21B573", +"8 c #21B574", +"9 c #22B574", +"0 c #21B674", +"q c #21B675", +"w c #29B573", +"e c #24B679", +"r c #21BE7B", +"t c #29BC79", +"y c #31B473", +"u c #3BB672", +"i c #30BC74", +"p c #3ABC73", +"a c #37BC79", +"s c #41B66D", +"d c #4ABA6E", +"f c #4ABB6E", +"g c #4ABC6E", +"h c #52BD6A", +"j c #5ABC6C", +"k c #5ABD6C", +"l c #5ABD6D", +"z c #5ABE6C", +"x c #42BD73", +"c c #4BBE72", +"v c #50BB72", +"b c #59BF72", +"n c #6DBF64", +"m c #63BE6B", +"M c #63BE6C", +"N c #6BBB6B", +"B c #73BF68", +"V c #2FC079", +"C c #3CC377", +"Z c #54C16C", +"A c #42C477", +"S c #4AC575", +"D c #52C574", +"F c #5AC673", +"G c #6EC565", +"H c #63C36D", +"J c #6BC56C", +"K c #73C564", +"L c #7BC562", +"P c #7BC463", +"I c #7AC563", +"U c #7BC563", +"Y c #7BC663", +"T c #7CC563", +"R c #7BC664", +"E c #74C66A", +"W c #7CC769", +"Q c #75CC6D", +"! c #7BCE6C", +"~ c #62C872", +"^ c #6DCC71", +"/ c #8BC55A", +"( c #8BC65A", +") c #9DCE54", +"_ c #92C65A", +"` c #96CD5A", +"' c #9BCE59", +"] c #9DCF58", +"[ c #9CCE59", +"{ c #9CCF59", +"} c #9DD35D", +"| c #B5D54B", +" . c #BCD549", +".. c #BCD54A", +"X. c #BCD64A", +"o. c #BCD74B", +"O. c #BEDB4A", +"+. c #BFDB4A", +"@. c #A5CE53", +"#. c #A5CF53", +"$. c #ACCE52", +"%. c #ADCE53", +"&. c #A5CC59", +"*. c #A5CD59", +"=. c #A5D053", +"-. c #ADD651", +";. c #ADD751", +":. c #ADD552", +">. c #A6D65B", +",. c #ABD759", +"<. c #A8DB5F", +"1. c #B2D151", +"2. c #B5D753", +"3. c #BBD650", +"4. c #B6DD55", +"5. c #BDDF52", +"6. c #B0DD5A", +"7. c #83C562", +"8. c #83C662", +"9. c #84C562", +"0. c #8DC663", +"q. c #85CC65", +"w. c #8CCE63", +"e. c #83CF6A", +"r. c #93CD62", +"t. c #8ED366", +"y. c #95D564", +"u. c #9DD662", +"i. c #A3D961", +"p. c #C4D744", +"a. c #C7DD42", +"s. c #C8DD42", +"d. c #CDDD41", +"f. c #CCDE41", +"g. c #CDDE41", +"h. c #CEDF41", +"j. c #CCDD42", +"k. c #CDDD42", +"l. c #CCDE42", +"z. c #CDDE42", +"x. c #CDDF42", +"c. c #CDDE43", +"v. c #CEDE42", +"b. c #CEDF42", +"n. c #CEDE43", +"m. c #C6DE4A", +"M. c #C4E04F", +"N. c #CCE149", +"B. c #CEE64B", +"V. c #C8E34D", +"C. c #D7E743", +"Z. c #D2E749", +/* pixels */ +" ", +" T P q.8.T ", +" 8.7.q.7.7.q.9. ", +" R 8.q.7.7.7.7.8.q.q.P ", +" P 8.w.8.7.7.7.7.7.8.Y P e.P P ", +" 9.w.q.8.7.7.7.7.7.7.8.P Y Y P e.P T ", +" 8.q.q.7.7.7.7.7.7.7.8.8.8.P Y P P Y W e.Y ", +" _ ( t.8.7.7.7.7.7.7.7.8.8.8.8.P P Y Y P P Y W Y R ", +" 9.9.t.q.8.7.7.7.7.7.7.7.7.7.7.7.8.P P P P Y P Y P Y e.P P ", +" 8.t.w.7.7.8.7.7.7.7.7.7.7.7.7.7.7.8.P P Y Y P Y P Y P Y W ! Y Y ", +" ( w.t.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P Y P P Y P Y P Y P Y Y ! E Y ", +" _ w.y.w.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.Y P Y Y P Y P Y P Y P P K E ! E R ", +" 9.` r.w.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.P Y P P Y P Y P Y P Y R K K K E ! E T ", +" 8.w.r.0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P P Y P Y P Y P Y P R K K K K K Q E m ", +" ` r.r.w.( 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P P P Y P Y P P P P P K K K K K K E Q E P ", +" _ _ r.r.0.( ( 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.P P P Y P Y P P P P P R K K K K K B B E E E E z ", +" _ r.r.r.0.0.( ( 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.Y P Y P Y P Y P Y P Y P K K K K K E B B B n E J K T ", +" ` r.r.r._ 0.0.0.( ( 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.P Y P Y P Y P Y P Y P Y K K K K K B B B B n n G E G m ", +" ` r.r.r._ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.8.P P Y P Y P Y P Y P Y P K K K K K B B B B n n n n J J J m ", +" [ ` } r._ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.8.P Y P Y P Y P Y P Y P Y K K K K K B B B B n n n n n n J J m P ", +" ` u.` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P Y P Y P Y P Y P Y P K K K K K B B B B n n n n n n G N J J m j ", +" ` } } ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P Y P Y P Y P Y P Y P P K K K K K B B B B n n n n n n n N N N J J M ", +" _ ` u.` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P Y P Y P Y P Y P Y P K K K K K B B B B n n n n n n n N N N N m ^ m z ", +" } ` i.[ ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P Y P Y P Y P Y P Y P P K K K K K B B B B n n n n n n n N N N N m m J ^ m z ", +" ` u.} ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.P P Y Y P Y P Y P Y P P K K K K K K B B B n n n n n n n N N N N m m m m H ^ m z ", +" ' ` i.` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P P P Y P Y P Y P Y P K K K K K B B B B n n n n n n n N N N N m m m m m m J M M ", +" ' [ i.[ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P P Y P Y P Y P Y P P K K K K K B B B B n n n n n n n N N N N m m m m m m m H ~ m z ", +" } [ >.} [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.P P P P Y P Y P Y P Y P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m H H m z ", +" [ [ >.[ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.9.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P Y P Y P Y P Y P Y P R K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m H H j ", +" ' [ >.[ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.Y P Y P Y P Y P Y P Y R K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m m H H z ", +" =.&.>.} [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.8.7.8.8.8.P Y P Y P Y P Y P P P P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m z j H H z z ", +" [ >.>.[ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.8.8.8.8.8.P P Y P Y P Y P P P P P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m j z z j z b j z ", +" =.>.&.&.[ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.P P P Y P Y P Y P Y P Y K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m j z j z j z b b z ", +" =.&.>.[ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.7.P P P P Y P Y P Y P Y P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m z j z j z j z z b z z ", +" :.) ,.&.[ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.8.8.7.q.q.q.8.P P P Y P Y P Y P Y P Y K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m j z j z j z j j z j b z j ", +" =.,.@.&.) ' [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.8.e.P 8.P e.Y P Y P Y P Y P Y P Y P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m z j z j z j z z j z z Z D z ", +" @.,.,.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.q.q.R R q.e.P Y P Y P P Y P Y Y K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m z z j z j z j j z j z h h Z D g ", +" =.=.,.=.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.q.t.9.T Y e.W P P Y Y P Y P P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m j j z j z j z z j z j h h h v D v z ", +" =.=.6.,.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.8.7.7.7.t.7.9. Y Y e.Y P P Y P Y Y K K K K K E B B B n n n n n n n N N N N m m m m m m m m m m m m j z j z j z j j z j z h h h v v v D f j ", +" ;.,.,.=.=.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.8.7.w.w.( P W ! Y P Y P P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m z j z j z j z z j z j h h h v v v f c D c z ", +" =.$.,.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.9.0.w.q.8. P e.W P Y P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m j z j z j z j j z j z h h h v v v f f f D c f ", +" @.:.6.:.=.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.w.w.8. P W Y P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m z j z j z j z z j z j h h h v v v f f f f c S f z ", +" @.;.:.,.$.$.@.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.w.0.9. 9.P W E K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m z z j z j z j j z j z h h h v v v f f f f f f c c f j ", +" ;.:.2.$.%.$.$.=.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.w.w.( ( P K E E K K B B B B n n n n n n n N N N N m m m m m m m m m m m m j j z j z j z z j z j h h h v v v f f f f f f f f c s f ", +" =.:.2.:.$.$.$.$.$.@.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.w.0.` m K E E E B B B n n n n n n n N N N N m m m m m m m m m m m m j z j z j z j j z j z h h h v v v f f f f f f f f f x x x f ", +" :.%.2.:.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0.0.r.w.w.9. T K E E E B B n n n n n n n N N N N m m m m m m m m m m m m z j z j z j z z j z j h h h v v v f f f f f f f f f s s x x f z ", +" @.%.2.2.:.;.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.r.r.w.( T E E E B n n n n n n n N N N N m m m m m m m m m m m m j z j z j z j j z j z h h h v v v f f f f f f f f f s s s x x x f z ", +" :.2.2.;.;.;.;.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ r.y.0.( R E E E n n n n n n N N N N m m m m m m m m m m m m z j z j z j z z j z j h h h v v v f f f f f f f f f s s s s s x x p g ", +" #.2.2.;.;.;.;.;.;.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.=.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ y.r.` M G Q G n n n n N N N N m m m m m m m m m m m m j z j z j z j j z j z h h h v v v f f f f f f f f f s s s s s s 6 6 p p 8 ", +" :.1.4.:.1.:.;.;.;.;.:.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.@.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ r.y.` 9. T m Q E n n n N N N N m m m m m m m m m m m m z j z j z j z z j z j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 p u 8 ", +" :.5.2.1.1.1.:.:.:.;.:.;.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.=.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ r.u.r._ P E Q J G N N N N m m m m m m m m m m m m j z j z j z j j z j z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u p C w ", +" o.5.2.1.1.1.1.1.:.;.;.:.;.:.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.@.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` y.r.` R E Q N N N N m m m m m m m m m m m m z j z j z j z z j z j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u p a 8 ", +" o.| 5.1.1.1.1.1.1.1.-.-.:.;.:.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.=.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` u.` R Q J N N m m m m m m m m m m m m j z j z j z j j z j z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 a i 0 ", +" o.1.5.o.1.1.1.1.1.1.1.1.-.-.;.:.-.-.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.@.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` u._ 9. z m ^ J m m m m m m m m m m m m z j z j z j z z j z j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y i a w 8 ", +" O.5.5.| | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.=.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` } ` _ P J J m m m m m m m m m m m j z j z j z j j z j z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y i V 0 ", +" o.3.5.| | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.@.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` [ } ` M J J m m m m m m m m m z j z j z j z z j z j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y V i 8 ", +" s.O.M.o.| | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.=.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` } ` m J m m m m m m m m z z j z j z j j z j z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y i V w 8 ", +" o.O.O.5.o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.@.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ } [ [ j m J m m m m m m z j z j z j z z j z j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w i t 8 8 ", +" O.o.5.3. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.=.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ } } ` j m H m m m m j z j z j z j j z j z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w t w 8 ", +" o.O.m.O.o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.@.&.) [ [ [ [ [ [ [ [ [ [ [ [ } ` m m H m m z j z j z j z z j z j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w t w 8 ", +" a.O.O.m..... . . .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.=.&.) [ [ [ [ [ [ [ [ [ } } ) } z M m H m z j z j z j j z j z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w t t 8 8 ", +" o.O.O.o.o. . . . .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.@.&.) [ [ [ [ [ [ [ } >.[ ' z m H H z j z j z z j z j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w e e 8 8 ", +" O.O.O.O. . .o. .o. .O. . .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.=.&.) [ [ [ [ [ [ >.[ =. z z ~ z j z j j z j z h h h v v v f f f f f f f f g s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 e e e 8 ", +" .O.O.m.o.o. .o. .o. . . . . .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.%.=.@.=.@.=.@.=.@.=.@.&.) [ [ [ [ >.>.[ z m H j z z j z j h h h v v v f f f f f f f g g s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 e 8 8 ", +" .O.V.m... .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.@.=.@.=.@.=.@.=.@.&.) [ [ >.<.=.} j z F b j z j z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 r 8 8 ", +" O.B.O.O.O. .o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.=.&.) [ <.&.@. z z ~ b z j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 r 8 ", +" o.m.m.O.O.O.O. . .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.@.=.@.=.@.=.@.=.@.&.<.>.=. z b F j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 2 r 8 ", +" s.p.B.O.m.O.O.O.O. .o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.>.,.=.@. z F b h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 r 8 8 ", +" o.O.N.m.m.O.O.O.m.O.O. . .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.:.;.$.$.$.$.$.$.$.@.@.=.@.=.@.=.=.,.=.[ z z F v v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 2 r 8 8 ", +" O.N.N.p.O.o.O.O.O.O.O.O.o.o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.:.;.:.$.$.$.$.$.$.$.=.=.@.=.@.=.,.@.@. z v D v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 2 r 8 ", +" o.m.B.a.p.p.m.O.O.m.O.O.o.O.o. .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.:.;.$.$.$.$.$.$.$.@.@.=.=.,.,.=. g D Z f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 4 2 8 ", +" s.a.Z.m.p.p.p.p.O.O.O.O.O.O.m.O...o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.;.:.$.$.$.$.$.$.$.=.=.@.,.@.@. 8.8.Y f D f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 2 4 8 < ", +" o.a.N.c.a.p.p.p.p.p.o.m.o.O.O.O.O.m... .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.:.:.:.;.:.;.$.$.$.$.$.$.$.$.,.@.=. ( w.t.q.q.P P z f c f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < 2 2 8 8 ", +" O.a.N.a.a.a.p.p.p.p.p.m.O.O.O.m.O.O.o...o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.:.:.;.;.;.:.$.$.$.$.%.:.;.,.=. _ w.t.w.7.7.7.W ! E P z f c f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < 2 < 8 ", +" c.c.N.c.a.a.a.a.p.p.p.p.p.O.O.o.O.O.m.O.O. . .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.:.;.;.;.;.:.$.$.$.$.,.:.=. ` r.r.0.7.7.7.7.P P E E K T f c c f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < > > < ", +" s.c.N.c.a.a.a.a.a.a.p.p.p.p.p.O.O.m.O.O.O.O.O. .o. .o. .o. .o. .o. . ...| | | | | | 1.1.1.1.1.1.1.| ;.;.;.;.;.;.$.$.;.-.%.:. ` ` r.r.0.0.7.7.7.7.P P K E E J M z f c c s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < > > > < ", +" a.c.c.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.o.O.O.O.O.O.o. .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.:.:.;.2.:.=. ` } ` ` _ _ 0.0.7.7.7.7.P P K B n J J J z z f x x s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < > > ; e ", +" c.g.c.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.m.O.O.O.O.O...o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.:.2.;.=. [ [ } ' ` ` _ _ 0.0.7.7.7.7.P P K B n n N J m z z g f x x s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; > < 8 ", +" s.c.c.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.m.o.O.O.m... .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.:.-.-.2.2.:.@. =.>.&.' ) ` ` _ _ 0.0.8.8.8.8.P P K B n n N m m m b z f x x 6 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; > : < ", +" c.C.c.c.g.c.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.m.O.O.O.O.O...o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.2.4.-.:. @.,.,.=.[ [ ' ` ` _ _ 0.0.8.8.8.8.P P K B n n N m m z j b Z g z f A x 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; : ; ", +" c.g.c.g.c.g.c.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.O.O.O.O.O...o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.2.4.:.=. :.;.,.@.=.&.[ [ [ ` ` _ _ 0.0.8.8.7.7.P R K B n n N m m z z j h c c z 8 g A 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : ", +" g.c.g.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.O.o.m.O.O... .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.4.2.=. @.:.4.;.$.=.@.&.[ [ [ ` ` _ _ 0.0.7.7.7.7.R P K B n n N m m j j z v f f x f 8 g p C u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : $ ", +" c.g.c.g.c.g.c.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.m.O.O.O.m.o.m.O.o.o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.2.4.;. -.5.2.:.$.$.@.=.&.[ [ [ ` ` _ _ 0.0.7.7.7.7.P P K B n n N m m j z j v f f s x C f 8 C p u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.c.g.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.m.o.O.O.O.O.O... .o. .o. .o. .o. .o. .o.| | | | | | 1.1.2.5.:.:. o.O.5.| | ;.$.%.=.@.&.[ [ [ ` ` _ _ 0.0.7.7.7.7.P P K B n n N m m z j z v f f s 6 u a i 8 8 u C p 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.c.c.g.c.g.c.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.O.O.O.m.O...o. .o. .o. .o. .o. .o. .| | | | | | 1.5.2.=. s.o.M.3.| 1.1.-.$.$.@.=.&.[ [ [ ` ` _ _ 0.0.7.7.7.7.P P K E n n N m m j z j v f f s 6 u 5 i V 8 8 8 p a y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : - ", +" c.c.c.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.o.m.O.O.O.O... .o. .o. .o. .o. .o. .o.| | | | | o.5.O. o.O.B.m.o. .| 1.1.-.$.$.=.@.&.[ [ [ ` ` _ _ 0.0.7.7.7.8.P P K B n n N m m z j z v f f s 6 u 5 y w t r 0 8 c p i y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.c.g.g.c.g.c.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.m.O.O.O.O.O. .o. .o. .o. .o. .o. .o. .| | | | 5.o. c.m.N.m. . .o.| 1.1.-.$.$.@.=.&.[ [ [ ` ` _ _ 0.0.7.7.8.8.P P K B n n N m m z z j v f f s 6 u 5 y w w 8 r 2 8 w a y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : $ ", +" c.g.c.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.o.O.O.m.O.O. . .o. .o. .o. .o. .o. .o.| | o.| :. c.c.Z.m.O.O. .o. .| 1.1.-.$.$.=.@.&.[ [ [ ` ` _ _ 0.0.7.7.8.8.P P K B n n N m m j j z v f f s 6 u 5 y w w 8 8 2 4 < < 8 w i y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" N.c.g.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.m.O.O.O.O.O.O.O. .o. .o. .o. .o. .o. .o. .| | 3.| c.C.N.p.O.O. . .o.| 1.1.:.:.$.@.@.&.[ [ [ ` ` _ _ 0.0.7.7.7.7.P P K B n n N m m z z j v f f s 6 u 5 y w w 9 0 1 2 4 < w i y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" g.g.c.g.c.g.c.g.a.a.a.a.a.a.a.a.p.p.p.p.p.p.O.m.O.O.o.m.o.O.o. .o. .o. .o. .o. .o. .o.| | | | o.o. s.a.m.m.m.o.o. .| 1.1.:.$.$.@.@.&.' [ ' ` ` _ _ 0.0.7.7.7.7.P P K B n n N m m j j z v f f s 6 u 5 y w w 9 2 2 2 < 8 w y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : $ ", +" c.c.c.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.O.m.O.O.O. .o. .o. .o. .o. .o. .o.o.| | | | 3.3.1.o. O.m.m.O. .o.| 1.1.:.$.$.@.=.&.' [ [ ` ` _ _ 0.0.7.7.7.7.P P K B n n N m m j z j v f f s 6 u 5 y w w e 0 0 8 w i i y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.c.c.g.c.g.c.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.O.O.O.O.p.o. .o. .o. .o. .o. .o.o.o.| | | | | 2.2.2.1. O.O.M. .| 1.1.:.$.$.=.@.&.' [ [ ` ` _ _ 0.0.7.7.7.7.P P K B n n N m m z j z v f f s 6 u 5 i t w 0 w p i y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : $ ", +" c.c.g.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.o.m.O.O.O. .o. .o. .o. .o. .o. .o. .| | | | | | 1.2.2.2.=. o.o.O.5.1.| :.$.$.@.=.&.[ [ [ ` ` _ _ 0.0.7.7.7.7.Y P K K n n N m M j z j v f f s 6 u i i w 8 g p p p y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.g.c.g.c.g.c.g.s.a.a.a.a.a.a.a.a.p.p.p.p.p.o.m.O.O.O.m.O.O. . .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.2.2.1.o. .O.5.2.:.$.$.=.@.&.[ [ [ ` ` _ _ 0.0.7.7.7.7.P Y K B n n N m m z j z v f f s p p p 8 8 5 p p u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : $ ", +" c.c.g.c.g.c.g.c.s.a.a.a.a.a.a.a.a.p.p.p.p.p.m.o.O.O.O.O.m.O.o.o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.2.2.1.:. o.1.4.:.%.@.=.&.[ [ [ ` ` _ _ 0.0.7.7.7.7.P R K B n n N m m z z j v f f x 6 g f p p u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.g.c.g.c.g.c.s.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.O.O.O.O.O.o. .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.2.4.:. @.;.2.,.=.@.&.[ [ [ ` ` _ _ 0.0.7.7.8.8.P R K B n n N m m j z z v c S g z g A p 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : $ ", +" c.C.c.g.c.g.c.g.s.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.O.m.O.O.O..... .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.2.2.@. :.%.6.,.&.[ [ [ ` ` _ _ 0.0.7.7.7.7.P P K B n n N m m z j b F f z 8 x x 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.C.c.c.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.O.O.O.O.m...o... .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.4.:.:. =.@.,.[ [ [ ` ` _ _ 0.0.7.7.7.7.P P K B n n N m m z F z z j s A x 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; 3 > 9 ", +" O.C.c.c.c.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.m.O.m.O.O.O.O.O. .o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.4.:.@. =.>.} [ ` ` _ _ 0.0.7.7.7.7.P P K B n n N m H ~ z j g A x s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; > > 3 8 ", +" c.C.c.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.O.O.m.O.O.o. .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.4.6.=. [ <.` ` _ _ 0.0.7.7.7.7.P P K E n n J ^ M z g x S s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; # 3 8 8 ", +" s.c.C.c.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.O.O.O.p.O. .o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.%.:.2.=.=. [ _ u.r._ 0.0.7.7.7.7.R P K K G E m z j f S x s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < > < 8 ", +" g.c.N.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.O.o.O.O.O.o. .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.:.$.,.4.:.=. ` ` r.0.0.7.7.7.7.P R K E E P j f S S f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < 3 8 ", +" O.c.c.a.a.a.s.s.p.p.p.p.p.O.O.O.O.m.O.m.O. .o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.%.,.,.;.=. ` r.w.7.7.7.7.R W E K j f c c f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < 3 0 ", +" .a.N.g.a.s.p.p.p.p.p.p.O.m.o.O.O.O.O.O. . .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.,.=.=. P 8.w.q.7.8.W P P g f c f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < 2 < 8 ", +" s.a.N.c.a.p.p.p.p.p.O.m.O.O.o.O.O.p.o.o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.,.,.=.[ _ 9.q.T P j f c c f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < ", +" O.a.N.m.p.p.p.p.O.O.O.O.m.O.O.O. . .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.=.=.,.,.@.:. P j f v c f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 2 2 < 8 ", +" a.a.N.p.p.p.m.O.O.O.O.m.O.O.o.o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.,.=.=. j v z c f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 2 2 8 ", +" o.a.m.m.p.O.O.O.O.O.O.O.O. . .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.@.=.@.=.@.@.,.=.=. z z F v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 2 4 8 8 ", +" o.m.B.m.O.O.O.O.m.o.O.o.o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.>.) @. j z b v h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 0 0 1 1 1 8 r 1 < ", +" O.m.N.m.O.O.O.O.O... .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.=.&.>.&.@. z z F j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 9 1 1 3 r 2 8 ", +" o.O.m.m.O.O.O.m.o.o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.%.@.=.@.=.@.=.@.=.@.@.&.) &.>.=. z F b j z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 1 9 9 9 4 V 8 8 ", +" ..m.B.O.O.O.o. .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.%.%.%.=.@.=.@.=.@.=.@.=.=.&.) [ [ >.>.' z z b z z z z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 9 e r 8 8 ", +" c.m.V.O.o.o. .o. .o. .o. . .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.=.@.=.@.=.@.=.@.=.#.) [ [ [ &.>.@.' j m ~ j z j z j z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 r 8 8 ", +" o.V.m. .o. .o. .o. .o.o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ i.[ @. z z ~ H j z j z j z j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 e r 8 ", +" O.M.O.o.o.o. .o. . .o...o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ >.>.=. z ~ H z z j j z j z j z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 e r 8 8 ", +" a.O.m.o. .o. .o.o. .o...| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.@.=.@.=.@.=.@.=.#.&.) ' [ [ [ [ [ [ [ [ i.[ ' z m ~ M j z j z z j z j z j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 t e 8 ", +" o.O.O.o.o.o...o...o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ } i.[ _ j m ~ H m z j z j z j z j z j z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w t 8 ", +" O.M.O.o.o...o...| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ } } ) } m H H m m m z z j z j z j z j z j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w t 8 ", +" ...m.o.o.o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ } [ =. M H J m m m m m z j z j z j z j z j z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w t 8 8 ", +" ..o.O. . .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` [ } [ ` z m J H m m m m m m j z j z j z j z j z j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w i t w 8 ", +" o.5.m.o.| | | | | 1.1.1.1.1.1.1.1.:.:.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` } [ ` [ z m J J m m m m m m m m z j z j z j z j z j z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y i i i 0 ", +" -.5.5.| | | | 1.1.1.1.1.1.1.1.:.;.-.-.-.-.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` } ` ` m m J m m m m m m m m m m j z j z j z j z j z j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y i i i w q ", +" o.o.5.3.| | 1.1.1.1.1.1.1.1.;.;.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` 8. M N J J m m m m m m m m m m m z j z j z j z j z j z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y i i w 8 ", +" o.1.5...1.1.1.1.1.1.1.| ;.;.-.-.-.-.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ P E ^ J m m m m m m m m m m m m j z j z j z j z j z j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y i a i 8 ", +" :.2.5.| 1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` r._ [ M m J m m m m m m m m m m m z j z j z j z j z j z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 a y 8 ", +" @.:.5.2.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` ` r.y.` m J J m m m m m m m m m j z j z j z j z j z j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u p a w q ", +" :.1.5.2.1.1.1.:.-.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ r.y.` z m ^ H m m m m m m m z j z j z j z j z j z h h h v v v f f f f f f f f g s s s s s s 6 6 6 6 u p C u q ", +" =.1.5.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ r.y.( 9. z m ^ m m m m m m j z j z j z j z j z j h h h v v v f f f f f f f g g s s s s s s 6 6 6 6 C p g ", +" :.4.4.:.:.;.;.;.:.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.@.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ r.y.w. M J J m m m m j z j z j z j z j z j h h h v v v f f f f f f f f f s s s s s s 6 6 p A g ", +" | 4.2.;.;.;.;.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.@.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.r.w.( m ~ H m m z j z j z j z j z j z h h h v v v f f f f f f f f f s s s s s s 6 A w 8 ", +" :.:.2.;.;.:.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.@.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0.0.y./ ( z m H M j j z z j z j z j z j h h h v v v f f f f f f f f f s s s s 6 A 6 8 ", +" @.2.2.:.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.=.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0.( / w.y.w._ z H H z j j z j z j z j z h h h v v v f f f f f f f f f s s x x x g ", +" :.2.;.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.@.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.r.t.9. m H z z j z j z j j z h h h v v v f f f f f f f f f s x x f ", +" c. @.;.;.;.$.$.$.$.=.@.=.@.=.@.=.@.=.=.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.w.w.8. z z H z j z j z z j h h h v v v f f f f f f f f f x s 8 1 ", +" C.c.c. @.;.;.;.$.%.@.=.@.=.@.=.@.=.@.@.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ ( 0.0.0.0.0.w.w.w.( j z z b z z j z h h h v v v f f f f f f f c f c q > 3 ", +" c.c.C.c.c.s. ;.:.,.$.=.@.=.@.=.@.=.@.=.=.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0.( ( 0.0.0.0.0.0.0.w.w.8.9. z b b j z j h h h v v v f f f f f c f g 8 > : : ", +" c.g.c.g.C.c.p. %.,.,.=.=.@.=.@.=.=.@.@.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0.( / 0.0.0.0.0.0.7.7.7.w.q.9. z b b z h h h v v v f f f c c f z 8 > > : ; : ", +" c.c.g.c.g.g.N.g.g. =.:.,.,.=.@.=.@.@.=.=.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0.( / 0.0.0.0.0.0.7.7.7.8.q.q.q.8. j z b b h h v v v f c c f z 1 ; > > ; # ; : = ", +" N.g.g.g.c.g.c.g.c.a.s. @.:.,.=.@.@.=.@.@.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.8.8.q.8.P z z D v v v v D f g e < > > ; ; ; ; ; : = ", +" c.g.g.c.g.c.g.c.g.c.N.c. =.@.,.=.@.=.=.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.8.8.q.7.T f Z D D D f 1 3 > < ; ; ; ; ; ; : = ", +" g.g.c.g.c.g.c.g.a.a.a.c.B.O. @.=.,.,.=.=.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.q.q.9. z z z z 1 4 1 < < < ; ; ; ; ; ; : O ", +" g.c.g.c.g.c.g.c.a.a.a.a.a.N.c.c. =.@.6.>.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.8.q.q.R 8 > 4 < < < < < ; ; ; ; ; ; : = ", +" c.g.c.g.c.g.c.c.a.a.a.a.a.a.a.Z.a.o. @.&.,.@.[ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.8.7.7.e.8.P 8 8 4 < < < < < < < ; ; ; ; ; ; : O ", +" c.c.g.c.g.c.g.c.a.a.a.a.a.a.a.a.N.B.O. =.>.>.[ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.8.7.7.7.8.e.P T 8 4 2 < < < < < < < < ; ; ; ; ; ; : O ", +" c.c.c.c.g.c.g.c.s.a.a.a.a.a.a.a.a.p.N.N. . #.&.i.} [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.Y e.e.P 8 2 4 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.g.c.g.c.g.c.g.a.a.a.a.a.a.a.a.a.p.p.a.B.p. . $.&.>.&.[ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.P Y P e.P R q 8 4 2 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.c.g.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.m.B.a.o. ' >.>.[ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.8.P P Y P W e.P P q 1 V 2 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : = ", +" c.g.c.g.c.g.c.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.V.m.O. [ >.[ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.8.P Y P Y Y P W W 9.T 8 2 r 2 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : = ", +" c.c.g.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.m.O.m.M.O.O. @.[ >.[ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P Y P Y P Y P ! Y Y 8 8 V 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.g.c.g.c.g.c.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.m.O.m.M.m. . ' [ } [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P Y P Y P Y P P Y W W K R 8 8 V 1 < 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.c.g.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.O.O.O.m.m. .o. } ' } [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P Y P Y P Y Y P Y P W E K Y 8 8 e e 1 1 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.g.c.g.c.g.c.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.O.m.O.O.m.m.O.O. ` [ } ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P Y P Y P Y P P Y P Y P E E E K 8 8 e 8 8 q e 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" g.c.g.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.m.O.O.O.O.O.m.o.O.m.o.o. _ [ } } ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.P P Y P Y P Y P Y P Y Y K K E E E H 8 e e e 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" g.g.c.g.c.g.c.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.o.O.O.O.O.O.o.....o.O.O.o.o. [ ` } [ ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P P Y P Y P Y P Y P P K K K K E E B P q w t e 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : $ ", +" c.c.g.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.p.O.O.m.O.m.o.O.o. . .o. .O.m.o. ` ` u.` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P P P Y P Y P Y P Y Y K K K K K K E E K T w t w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.g.c.g.c.g.c.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.O.O.O.O.O.o.o. . .o. .o.O.m.O. [ ` } } ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.P P P Y P Y P Y P Y P P K K K K K B B K B Q P 8 t t w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" N.g.g.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.m.O.O.O.O.O.O. . .o. .o.o. .o. .O.O.o. _ ` u.` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.Y P Y P Y P Y P Y P Y P K K K K K B B B B n E Q R q 8 t w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : $ ", +" c.g.g.g.c.g.c.g.a.a.a.a.a.a.a.a.s.p.p.p.p.p.O.o.O.o.m.O.m.O...o. .o. . .o. .o.o. .m.o.o. ` ` u._ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P Y P Y P Y P Y P Y P P K K K K K B B B B n n G Q J P q w V w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" g.c.g.c.g.c.g.c.a.a.a.a.a.a.a.s.s.p.p.p.p.p.O.O.O.O.O.O.O.O.o. .o. .o.o. .o...o.o.o. .M.:. ` u.r._ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.8.P P Y P Y P Y P Y P Y P K K K K K B B B B n n n n J Q m 8 V i w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : $ ", +" c.g.c.g.c.g.c.g.a.a.a.a.a.a.a.p.s.p.p.p.p.p.O.O.m.O.O.O.O.O. .o. .o. . .o...o.o.o.o.o.| 5.5.o. [ ` u.r._ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.8.8.8.8.8.P Y P Y P Y P Y P Y P P K K K K K B B B B n n n G Q m P 8 i V y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.c.g.c.g.c.g.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.m.O.O.O.O.O.o.o. .o. .o. .o. .o. .o. .| | | 5.| o. _ _ y.r.0.0.0./ / 0.0.0.0.0.0.8.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.P P P P Y P Y P Y P Y P K K K K K B B B B n G E G z q w V i y y w w w w w w w w 0 0 0 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : % ", +" c.g.c.g.c.g.c.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.o.m.O.O.O.m.o. .o. .o. .o. .o. .o. .o.| | | | 3.O.:.:. ( y.` 0.0./ / 0.0.0.0.0.0.8.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.P P P Y P Y P Y P Y P Y K K K K K B B B B E E P q 0 a a y y y y w w w w w w w w 0 0 0 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : + ", +" c.c.g.c.g.c.g.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.p.O.O.O.O.o. .o. .o. .o. .o. .o. .o. .| | | | | | 5.2.:.#. 9.y.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.Y P P P Y P Y P Y P Y P K K K K K B E E Q M g p a y y y y y y w w w w w w w w 8 0 9 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : = ", +" c.c.c.g.c.g.c.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.O.O.m.O.O. . .o. .o. .o. .o. .o. .o.| | | | | | 1.2.5.2.o. } / r.0.0.0.0.0.0.0.8.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P Y P Y P Y P Y P Y P Y K K K K K E E K P g p C p y y y y y y y w w w w w w w w 1 9 9 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : = ", +" c.g.c.g.c.g.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.O.O.O.O.O...o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.2.2.1.@. ( 0.w.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.P P P P Y P Y P Y P Y P K K K E E K T 8 f p p u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" g.c.g.c.g.c.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.m.O.O.O.O.o. .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.2.2.;.:. 8.w.w.w.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.P Y P Y P Y P Y P Y P Y K E E K Y 8 f 6 p p u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.g.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.m.O.O.o.O.O.O.O...o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.;.2.:.:. _ w.w.0.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.8.Y P Y P Y P Y P Y P Y P E W K Z g u x 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" C.C.g.c.g.c.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.m.O.m.O.O.o.m.o. .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.;.4.:.#. _ 7.w.w.7.8.7.7.7.7.7.7.7.7.7.7.8.8.8.P Y P Y P Y P Y P Y W W K R g x x 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; : : O ", +" c.c.C.c.c.c.g.a.a.a.a.a.a.a.a.s.p.p.p.p.p.O.o.O.O.O.O.m.o. .o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.:.:.-.2.$.@. ( 8.w.q.7.7.7.7.7.7.7.7.7.7.7.7.7.P P P Y P Y P Y P ! P P 9 s x x 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; > 3 8 8 ", +" c.c.C.g.c.s.a.a.a.a.a.a.a.p.p.p.p.p.p.o.O.O.O.O.O.O.O. . .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.:.;.-.-.-.2.:.@. 8.( w.7.7.7.7.7.7.7.7.7.7.7.7.P P P P Y P Y W W Y f x x 6 s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; > 3 < < ", +" O.Z.C.a.a.a.a.a.a.a.a.a.p.p.p.p.p.m.O.O.O.m.O.m.O.o.o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.;.;.-.-.-.-.:.2.=. 9.9.w.w.7.7.7.7.7.7.7.7.7.8.Y P P Y P W e.8.T g x x x s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < 3 > < ", +" s.c.C.g.a.a.a.a.a.a.a.p.p.p.p.p.O.p.O.O.O.O.O.O.o. .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.| ;.;.-.-.-.-.:.%.2.:.o. 9.7.t.q.7.7.7.7.7.7.7.8.P Y P P e.P P j g S s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < 3 3 8 ", +" s.a.C.a.a.a.a.a.a.p.p.p.p.p.O.O.O.O.O.O.O.O...o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.,.%.;. ( 8.t.8.8.7.8.8.8.8.P P e.W R j f S f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < 3 8 8 ", +" c.N.Z.a.a.a.a.p.p.p.p.p.O.O.o.m.O.O.O.m... .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.:.:.6.@. 8.w.q.7.8.8.8.8.q.e.P g c c f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < 3 < < ", +" O.Z.N.a.a.p.p.p.p.p.O.O.m.O.O.O.O.o. .o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.:.-.-.-.-.-.$.$.$.$.%.$.$.,.,.=. T 8.e.7.8.8.q.Y P j f D f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < 2 3 < ", +" o.a.Z.a.p.p.p.p.p.O.O.O.O.O.m.O.O. . .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.%.$.$.@.@.6.@.=. P 7.e.Y P j f D f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 2 3 8 ", +" s.a.N.a.p.p.p.O.O.O.O.O.O.O.O.o.o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.=.@.,.6.@.} 9. j F D c f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 2 < 8 ", +" o.N.m.m.p.O.O.m.O.o.m.o.O.o. .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.@.=.@.=.,.>.=. j Z D v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 2 2 4 < ", +" O.m.m.O.O.O.O.m.O.O.O. .o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.@.@.,.@.=. j j D v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 2 2 2 0 ", +" ..m.m.m.O.O.O.O.O.p.o. .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.@.=.@.=.@.=.=.>.,.&.@. j j F h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 8 2 2 8 ", +" o.m.m.m.O.O.O.O. .o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.=.>.>.&.} j F F z z g h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 2 2 8 8 ", +" O.m.m.m.O.O. . .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.=.&.&.>.&.[ j b b j j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 e 2 8 ", +" o.O.m.m.O.o.o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.@.&.) [ &.>.>.=. z b b b j j j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 e 8 0 ", +" s.O.V.m. .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.=.&.) [ [ [ &.>.[ @. j z z z j j j j j h h h h v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 e r 8 8 ", +" o.O.V.O.o... . .o.o.o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.=.@.=.@.=.@.=.@.=.&.) [ [ [ [ [ [ } [ M H j z j z j Z j j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 e r 8 8 ", +" o.O.M.m. .o.o.o. .o. . .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.@.=.@.=.@.=.@.=.@.&.) [ [ [ [ [ [ [ } >.} M H H z z j z j j j j j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w e t 8 8 ", +" O.m.M. . .o.o. . . .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.=.@.=.@.=.@.=.@.=.&.) [ [ [ [ [ [ [ [ [ } >.@. z z H z z z j z j z j j j j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w t t 0 ", +" o.o.M.O.o. .o. . .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.@.=.@.=.@.=.@.=.@.&.) [ [ [ [ [ [ [ [ [ [ [ i.[ [ j z ~ m m j z j z j z j m Z j j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w t V 8 8 ", +" o.o.M.3.O. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.:.;.:.;.$.$.$.$.$.$.$.=.=.@.=.@.=.@.=.@.=.&.) [ [ [ [ [ [ [ [ [ [ [ [ } i.} M J H m m m j j z j z j z j j j Z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w V w 8 ", +" o.O.5.o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.;.:.;.;.$.$.$.$.$.$.$.@.@.=.@.=.@.=.@.=.@.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ } } ` z H J m m m m m z z j z j z j j j j m h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w t t 8 ", +" O.M.O.| | | | | | 1.1.1.1.1.1.1.1.-.-.:.;.;.;.$.$.$.$.$.$.$.=.=.@.=.@.=.@.=.@.=.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` [ u.` _ z m ^ m m m m m m m z j z j z j z j j j j h h h v v v f f f f f f f f g s s s s s s 6 6 6 6 u u u u 5 y y y y y y y i V w ", +" . .5. .| | | | 1.1.1.1.1.1.1.1.-.:.;.:.;.;.$.$.$.$.$.$.$.@.@.=.@.=.@.=.@.=.@.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` } u.` [ z M ^ J m m m m m m m m j z j z j z j j F j j h h h v v v f f f f f f f g g s s s s s s 6 6 6 6 u u u u 5 y y y y y i V y 8 ", +" s.3.5.| | | 1.1.1.1.1.1.1.1.;.:.;.:.;.:.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.@.#.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` } ` ` M J J m m m m m m m m m m j z j z j z j j j j j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y i i 8 ", +" =.3.3.2.1.1.1.1.1.1.1.1.:.;.:.;.:.;.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` u.` ` M m ^ J m m m m m m m m m m m z j z j z j z j j j Z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y i i w ", +" o.o.2.| 1.1.1.1.1.1.:.;.-.-.;.:.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` } ` _ P E J J N m m m m m m m m m m m m z z j z j z j j j j j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 i i w q ", +" o.2.2.2.1.1.1.1.1.:.;.-.-.:.;.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.#.&.) ' [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` r._ 9. z m E J J N N m m m m m m m m m m m m j j z j z j z j m Z j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u p p i q ", +" #.2.2.2.1.1.1.;.:.-.-.-.-.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` r.r.r.` m J J J N N N N m m m m m m m m m m m m j z j z j z j j j Z m z h h c v v f f f f f f f f f s s s s s s 6 6 6 6 u p p p g ", +" :.1.4.;.1.:.;.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ r.r.r.( R n E J n G N N N N m m m m m m m m m m m m z j z j z j z m Z j j h h z v v v f f f f f f f f f s s s s s s 6 6 6 6 u p w ", +" :.;.2.2.;.;.-.-.-.-.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ r.r.0._ P K E E G n n n N N N N m m m m m m m m m m m m j z j z j z j j j j j h h h v v v f f f f f f f f f s s s s s s 6 6 x p w 8 ", +" @.;.4.| -.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ r.r.r._ K E G G n n n n n N N N N m m m m m m m m m m m m z j z j z j z j j Z j h h h f v v f f f f f f f f f s s s s s s x x f 8 ", +" =.:.4.:.;.:.$.$.$.$.$.$.$.=.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.r.r.y.8. P E E E n n n n n n n N N N N m m m m m m m m m m m m j z j z j z j j j j j h h h v v v f f f f f f f f f s s s s x A 6 g ", +" ;.4.2.;.$.$.$.$.$.$.$.@.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ r.w.R P B E K B B n n n n n n n N N N N m m m m m m m m m m m m z j z j z j z j j Z j h h h v v v f f f f f f f f f s s s x x f z ", +" :.;.4.;.%.%.%.$.$.$.@.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / w.r.w.9. P K ! E E B B B n n n n n n n N N N N m m m m m m m m m m m m j z j z j z j Z m j j h h h v v v f f f f f f f f f s x A f z ", +" o. =.;.4.%.%.$.$.$.@.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.w.y.` P ! E K K B B B B n n n n n n n N N N N m m m m m m m m m m m m z j z j z j z j j j j h h h v v v f f f f f f f f f S x f 8 ", +" C.O. =.2.,.$.$.%.=.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.w.w.( R W ! K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m j z j z j z j j F j j h h h v v v f f f f f f f c S c 8 3 ", +" c.C.g.g. =.,.:.%.@.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.t.w._ P P e.R K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m z j z j z j z j j j j h h h v v v f f f f f f S f z < 3 3 : = ", +" c.c.c.C.c.s. ;.:.6.=.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ ( 0.0.0.0.0.0.7.w.t.9.9. T 9.e.W P P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m j z j z j z j j Z j j h h h v v v f f f f S f z < > 3 ; ; : + ", +" c.c.g.c.C.C.c.o. @.,.,.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ ( 0.0.0.0.0.0.7.7.7.w.t.8. Y W e.Y P P R K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m z j z j z j z j j j j h h h v v v f f c c f 8 8 3 > ; ; ; : = ", +" c.g.c.g.c.g.C.g.O. =.,.,.=.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0.( ( 0.0.0.0.0.0.7.7.7.8.8.t.0.8. Y P e.Y P Y P Y P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m z z j z j z j j j j j Z h h h v h v c j 8 3 3 ; ; ; ; ; : = ", +" c.g.c.g.c.g.c.c.g.Z.a.c. @.,.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0.( / 0.0.0.0.0.0.7.7.7.8.7.8.8.q.7.P P P e.W Y P Y P Y P Y K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m z j z j z j z m Z j j h h h v v D f z 8 < 3 < ; ; ; ; ; ; : = ", +" s.c.g.c.g.c.g.c.a.a.c.N.a.s. :.@.,.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.8.8.8.7.q.q.7.T T 9.W W P Y P Y P Y P Y P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m j z j z j z j j j j j h h v Z f z = < > > < < ; ; ; ; ; ; : O ", +" c.c.c.g.c.g.c.g.a.a.a.a.N.a.a. =.=.,.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.8.8.8.7.7.7.q.8.9.9.P P q.Y P Y P Y P Y P Y P Y K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m z j z j z j z j j Z m Z b h z 8 8 < < < < < < ; ; ; ; ; ; : O ", +" c.c.g.c.g.c.g.g.a.a.a.a.a.a.N.a.O. =.#.>.&.[ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.q.7.8.8.P Y P P Y P Y P Y P Y P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m z z j z j z j j z z b z z 8 < < < < < < < < ; ; ; ; ; ; : X ", +" h.g.c.g.c.g.c.c.a.a.a.a.a.a.a.a.N.p.o. #.#.>.>.[ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.P P Y Y P Y P Y P Y P Y K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m j j z j z j z z b b z j 8 2 2 < < < < < < < < ; ; ; ; ; ; : = ", +" c.c.g.c.g.c.g.g.a.a.a.a.a.a.a.a.a.m.N.a.o. #.#.>.>.[ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.8.P Y P P Y P Y P Y P Y P K K K K K K B B B n n n n n n n N N N N m m m m m m m m m m m m j z j z j z b F j z q 1 2 2 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.g.c.g.c.g.c.c.a.a.a.a.a.a.a.a.a.p.a.m.N.O. #.&.>.[ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.8.Y P Y Y P Y P Y P Y P Y K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m z j z j z F j z 8 4 2 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.c.c.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.m.m.m. . #.#.>.>.' ) [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.P P P P Y P Y P Y P Y P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m M j j z H H M z 8 V 3 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.c.c.g.c.g.c.g.s.a.a.a.a.a.a.a.a.p.p.p.p.p.O.N.O.s. [ } >.} ' [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.P P P Y P Y P Y P Y P P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m z H ~ z z 8 4 2 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.c.g.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.m.B.O.o. @.[ >.[ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P P P Y P Y P Y P Y P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m ~ z z q 1 V 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" g.g.c.g.c.g.c.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.m.m.V.O. ' } >.[ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.Y P Y Y P Y P Y P Y P P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m H ~ M 8 0 V 1 < 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.c.g.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.O.O.O.m.m. . ` i.[ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.P P P P Y P Y P Y P Y P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m ~ M z 8 r r 0 0 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : $ ", +" c.g.c.g.c.g.c.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.o.m.m.O.O.M.m.o. } [ } [ ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.P P Y Y P Y P Y P Y P P K K K K K B B B B n n n n n n n N N N N m m m m m m m H z z 8 8 r 8 8 0 1 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.c.g.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.m.m.O.O.O.o.O.O...m.M.O.o. ' } } ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.8.P Y P P Y P Y P Y P Y P K K K K K B B B B n n n n n n n N N N N m m m m m H J M 8 0 t e 8 9 9 0 9 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : $ ", +" c.g.c.g.c.g.c.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.O.O.O.O.m... .O.M.O.O. ` } [ ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.8.Y P Y Y P Y P Y P P P P K K K K K B B B B n n n n n n n N N N N m m m H J m 0 t t e 8 1 9 9 9 9 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" g.g.c.g.c.g.c.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.m.O.O.o.O.O.O. . . . .O.M.O.o. @.[ } ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.P Y P Y P Y P Y P Y P Y K K K K K E B B B n n n n n n n N N N N m J J m z 8 w t e 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" g.c.g.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.o.O.O.m.O.O.O...o. .o. .O.O.m.O.o. _ _ } ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P P P Y P Y P Y P Y P K K K K K B B B B n n n n n n n N N N J J N z 8 w t t w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : = ", +" c.g.c.g.c.g.c.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.O.O.m.O.O... .o. .o.o.o.o.O...o.o. ` ` } ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P P Y P Y P Y P Y P Y K K K K K B B B B n n n n n n n N J J J M 8 w t t w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : = ", +" c.c.g.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.p.O.O.O.O.O.O.m.o.o. .o. ...o.o.o.o.O.o.O. ` ` } r._ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.P P P P Y P Y P Y P Y P K K K K K B B B B n n n n n n J J J m w i t w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : = ", +" c.c.g.g.c.g.c.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.m.O.O.O.O.O.O.o.o. .o. .o...o...o. .o.O.3.@. 9._ r.r._ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P Y P Y P Y P Y P Y P P K K K K K B B B B n n n n n J E m z 8 i i w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.g.c.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.o.O.O.m.O.p.O.o. .o. .o...o...o. .o... .3.3.| .. _ _ y.r._ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.Y P Y P Y P Y P Y P Y P K K K K K B B B B n n n E Q K R 8 y i i w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" g.c.g.g.c.g.c.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.m.O.O.O.O.O.m.o.o. .o. .o. .o. .o. .o.o.| | o.5.o. ` _ y.r.0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.8.P Y P Y P Y P Y P Y P P K K K K K B B B B n G Q n M 8 w i i y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" g.g.c.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.o.O.O.O.O.O.o... .o. .o. .o. .o. .o.o.o.| | | | 3.3.=. ` r.r.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.8.8.8.8.8.P P Y P Y P Y P Y P Y P K K K K K B B B B E Q M z g a i y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.c.g.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.O.O.m.o.O.o.o. .o. .o. .o. .o. .o. .| | | | | | 5.2.#. 9.` y.r.( ( 0.0.0.0.0.0.8.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P P Y P Y P Y P Y P P K K K K K K B E ! K z g p a y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.g.c.g.c.g.c.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.m.O.O.O.O.O.o. .o. .o. .o. .o. .o. .o.| | | | | | 1.2.5.1.:. _ 0.y.0.0.0.0.0.0.0.8.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P Y P Y P Y P Y P Y P K K K K K K ! G R 8 u C 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : $ ", +" c.c.g.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.m.O.O.m.O.O.O.O.o.o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.2.5.-. ` r.r.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P Y P Y P Y P Y P Y P P K K K K E ! R w C p u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : O ", +" c.g.c.g.c.g.c.g.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.o.O.O.p.O.o. .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.4.2.o. ` r.w.0.0.0.8.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.Y P Y P Y P Y P Y P Y Y K K E ! E T g p p u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : $ ", +" g.c.c.c.g.c.g.c.a.a.a.a.a.a.a.s.s.p.p.p.p.p.O.O.O.m.O.O.o.O...o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.2.5.;.@. 9.0.r.0.0.7.7.8.7.7.7.7.7.7.7.7.7.7.7.7.7.P Y P Y P Y P Y P Y P P K Q K R g s C u u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; ; : = ", +" s.C.c.g.c.g.c.c.a.a.a.a.a.a.a.a.p.p.p.p.p.p.O.O.O.o.O.O.m.O.o. .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.| 2.4.:.:. ( w.w.0.7.8.7.7.7.7.7.7.7.7.7.7.7.7.8.P P P P Y P Y P Y P Y W W R z g A p 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; ; : : < ", +" s.c.c.g.c.g.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.m.o.O.O.O.O.O.o.o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.;.;.2.2.;. 9.w.w.8.7.7.7.7.7.7.7.7.7.7.7.7.8.P P P Y P Y P Y P P W 9. g x x 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; ; ; : ; 8 ", +" g.c.g.c.c.a.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.O.O.O.m.O.o. .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.;.:.;.:.4.:.=. _ w.q.7.7.7.7.7.7.7.7.7.7.7.7.P P P P Y P Y P W P P g x A x s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < ; ; > > < ", +" O.c.c.c.a.a.a.a.a.a.a.a.p.p.p.p.p.O.O.O.O.O.m.O.O. . .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.;.:.;.;.;.2.4.;.@. _ 8.q.q.8.7.7.7.7.7.7.7.7.8.Y P Y Y Y W W Y P z f x x s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < < < > > 8 ", +" o.a.g.c.a.a.a.a.a.a.a.p.p.p.p.p.m.O.O.O.m.O.O.O. .o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.:.;.;.;.;.;.;.;.;.@.@. 8.w.q.q.7.7.8.7.7.7.7.8.P Y P P W W Y j f c x s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < < > > > 8 ", +" s.c.N.c.a.a.a.a.a.p.p.p.p.p.O.m.O.O.O.O.O.O.o. .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.:.:.:.;.;.;.$.$.;.,.:.;. 9.q.q.8.8.7.7.8.8.8.P Y W Y P T f f c f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < < < > > < ", +" O.c.N.a.a.a.a.p.p.p.p.p.O.o.O.O.O.O.p.O.o.o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.:.:.;.:.;.:.$.$.$.$.:.,.,.=. 9.7.q.q.7.7.8.8.8.q.W P P g c c f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < < < 3 < 0 ", +" O.N.N.a.a.p.p.p.p.p.O.O.O.O.O.m.O.O.o. .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.:.;.:.;.$.$.$.$.$.$.:.:.=.@. P 8.q.q.7.7.q.8.R z f c f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 < < 2 2 8 8 ", +" s.c.Z.N.p.p.p.p.p.O.O.O.O.O.O.O.O. .o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.;.:.;.:.$.$.$.$.$.$.$.=.%.,.=.@. 8.7.e.7.8. z z c f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 1 1 2 4 0 q ", +" c.a.Z.s.p.p.p.O.m.O.O.o.O.O.m. . .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.:.-.$.$.$.$.$.$.$.@.=.@.,.,.=. 8. c D c f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 1 2 4 < < ", +" c.N.m.p.p.m.o.O.O.m.O.O.o. .o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.@.=.=.@.,.=.@. z D D c f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 1 1 2 2 8 ", +" o.O.B.m.p.O.O.O.O.O.m.O. . .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.,.&.} j j D v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 1 1 2 r 8 8 ", +" o.O.B.m.O.O.O.O.O.O. .o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.@.=.@.=.@.=.=.>.,.@.@. z j F z h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 1 2 r 1 2 ", +" s.m.m.O.m.O.O.O. . .o. .o. .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.@.,.>.@. z b F h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 1 4 8 9 ", +" O.V.m.O.O.O. .o. .o. .o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.=.&.&.<.@.=. z z F Z j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 8 8 V 1 ", +" O.V.m.O. .o. .o. . .o. .o. .o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.@.&.) [ >.<.[ } j z F b z j z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 8 8 V 8 8 ", +" o.O.m.O. .o. .o.o. .o. .o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.@.&.) [ [ [ >.>.[ m H F j z j z j h h h v v v f f f f f f f g f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 8 8 8 e 8 1 ", +" .O.O.m.o. . .o. .o. .o. . .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.@.&.) [ [ [ ) ' >.[ =. j z ~ z j z j z j z h h h v v v f f f f f f g g g s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w w 8 8 e e e 8 ", +" O.O.O. .o. .o. . . . . .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.%.=.@.=.@.=.@.=.@.=.@.&.) [ [ [ [ [ [ } >.[ ' z m H H j z z j z j z j h h h v v v f f f f f f g g g s s s s s s 6 6 6 u u u u u 5 y y y y y y y w w w w w w w w e e e 8 ", +" o.o.O.m...o.o.o.o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ } } [ [ z m H H j z j z j z j z j z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w w w t e 8 8 ", +" o.O.O.O.o.o. .o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ } [ ` m H H m z z j z j z j z j z j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w w t t w 0 ", +" O.O.M.o.o. .o.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ } [ =. M H H m m m z j z j z j z j z j z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w w w t w 8 ", +" O...m.o. .| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ } [ _ z m J H m m m m j z j z j z j z j z j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y w w t t 0 q ", +" ..O.m.O.| | | | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` [ } ` z m J m m m m m m m j j z j z j z j z j z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y y y i V w q ", +" o.o.M.3.| | | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` [ } ` M J J m m m m m m m m z z j z j z j z j z j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y y i V i 8 ", +" o.5.5.| | | 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` } r.` z J J M m m m m m m m m m z j z j z j z j z j z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y y y i i 8 ", +" :.5.3.| 1.1.1.1.1.1.1.1.-.-.-.-.-.-.$.$.$.$.$.$.$.@.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` u._ _ P m J m m m m m m m m m m m m j z j z j z j z j z j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y y i V 8 8 ", +" :.1.5.2.1.1.1.1.1.1.1.:.:.-.-.-.-.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` u.` m Q J N m m m m m m m m m m m m j z j z j z j j z j z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u 5 y a p 8 ", +" o.3.5.1.1.1.1.1.1.;.:.:.;.-.-.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` } r.` P E E N N N m m m m m m m m m m m m z j z j z j z z j z j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u u p a 8 ", +" :.5.2.1.1.1.1.;.;.;.:.;.:.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` r.u.r._ P J Q J N N N N m m m m m m m m m m m m z z j z j z j j z j z h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 u u u C g ", +" @.1.5.4.1.1.;.;.:.;.:.;.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ r.u.w._ z E Q J n G N N N N m m m m m m m m m m m m j j z j z j z z j z j h h h v v v f f f f f f f f f s s s s s s 6 6 6 6 p C 6 8 ", +" :.1.2.:.:.;.:.;.;.:.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ y.y.` z M E Q n n n n N N N N m m m m m m m m m m m m j z j z j z j j z j z h h h v v v f f f f f f f f f s s s s s s 6 6 6 p x q ", +" ..;.2.:.;.;.:.;.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ r.y.0.9. M G Q G n n n n n N N N N m m m m m m m m m m m m z j z j z j z z j z j h h h v v v f f f f f f f f f s s s s s s 6 x p g ", +" :.2.;.;.;.;.$.$.$.$.$.$.$.@.=.@.=.@.=.@.=.@.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.r.y.w.( P E Q E n n n n n n n N N N N m m m m m m m m m m m m j z j z j z j j z j z h h h v v v f f f f f f f f f s s s s x x x g ", +" :.%.2.2.;.$.$.$.$.$.$.$.=.@.=.@.=.@.=.@.=.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0.r.w.w.9. T E E E B B n n n n n n n N N N N m m m m m m m m m m m m z j z j z j z z j z j h h h v v v f f f f f f f f f s s s x x 6 z ", +" O.:.2.-.$.$.$.$.$.$.@.#.#.#.#.#.#.#.#.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ 0.w.0.9. K K E E B B B n n n n n n n N N N N m m m m m m m m m m m m j z j z j z j j z j z h h h v v v f f f f f f f f f s x x x g ", +" :.;.| :.:.$.$.$.@.#.#.#.#.#.#.#.#.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.w.w./ ( P K E E K B B B B n n n n n n n N N N N m m m m m m m m m m m m z j z j z j z z j z j h h h v v v f f f f f f f f f x s g ", +" @.;.:.,.$.$.$.@.#.#.#.#.#.#.#.#.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.w.( _ Y K W E K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m j z j z j z j j z j z h h h v v v f f f f f f f c x f z ", +" =.:.,.,.$.@.#.#.#.#.#.#.#.#.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.w.8. T K W P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m z j z j z j z z j z z h h h v v v f f f f f c c f z ", +" =.=.6.:.=.=.=.=.#.#.#.#.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0.( / 0.0.0.0.0.0.0.w.t.9. Y W W P P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m j z j z j z j j z j z h h h v v v f f f f S f f ", +" @.,.6.=.=.=.#.#.#.#.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0.( / 0.0.0.0.0.0.8.7.7.w.w.( Y P W Y P Y P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m z j z j z j z z j z j h h h v v v f f D c f ", +" @.:.,.,.#.#.#.#.#.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0.( / 0.0.0.0.0.0.7.7.7.7.7.t.8.P Y P e.P Y P Y P P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m j z j z j z j j z j z h h h v v v c D z j ", +" :.#.,.#.#.#.#.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0.( / 0.0.0.0.0.0.7.7.7.8.8.8.q.t.9.T T 9.e.Y P Y P Y P Y P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m z j z j z j z z j z j h h h v v D v z ", +" @.=.,.=.#.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.q.q.8. Y q.W P Y P Y P Y P Y P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m z j z z j z j j z z j h h h D D z ", +" =.,.,.#.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.w.Y P P P e.Y P Y P Y P Y P Y P P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m z z j j z j z z j j z h v D f ", +" @.&.,.&.) [ [ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.q.q.P e.q.Y P Y P Y P Y P Y P Y P K K K K K E B B B n n n n n n n N N N N m m m m m m m m m m m m z j z z j z j j z j j b z z ", +" #.>.>.&.[ [ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.8.8.8.8.8.P Y P Y P Y P Y P Y P P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m j z j j z j z z j b z z ", +" =.>.&.[ [ [ [ [ [ [ [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.8.8.8.8.8.P P Y P Y P Y P Y P Y P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m j z j z j z j b F z ", +" =.>.&.&.[ [ ' ' [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.8.8.7.7.8.P Y P Y P Y P Y P Y P P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m z j z j z z b z ", +" [ [ >.&.[ [ ' [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P Y P Y P Y P Y P Y R K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m z j j z z j z ", +" =.&.>.>.' [ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P Y P Y P Y P Y P Y P R K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m m j z H j z ", +" =.} >.[ [ [ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P Y P Y P Y P Y P Y P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m m M H m M ", +" #.[ } >.[ [ [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.9.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P Y P Y P Y P Y P Y P P K K K K K B B B B n n n n n n n N N N N m m m m m m m m m m H H z z ", +" #.[ >.} [ ` ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P Y P Y P Y P Y P Y P K K K K K K B B B n n n n n n n N N N N m m m m m m m m H H m z ", +" ' ` i.[ ` ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P Y P Y P Y P Y P Y P P K K K K K B B B B n n n n n n n N N N N m m m m m m m J m z ", +" #.[ } ` ` ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0.( / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.P P Y P Y P Y P Y P Y P K K K K K B B B B n n n n n n n N N N N m m m m m J H M ", +" #.` } } ` ` ` ` ` ` ` _ _ _ _ _ _ 0.0.0.( / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P P Y P Y P Y P Y P P K K K K K B B B B n n n n n n n N N N N m m m J ^ M z ", +" _ ` u.` ` ` ` ` ` _ _ _ _ _ _ 0.0.0.( / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P P P Y P Y P Y P Y P K K K K K B B B B n n n n n n n N N N N m m ^ m z ", +" ` ` u.` ` ` ` _ _ _ _ _ _ 0.0.0.( / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.P P P Y P Y P Y P Y P P K K K K K B B B B n n n n n n n N N N N J J M ", +" [ u.` ` ` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.Y P Y P Y P Y P Y P Y P K K K K K B B B B n n n n n n n N N J ^ m ", +" #.` u.` _ _ _ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.P Y P Y P Y P Y P Y P Y K K K K K B B B B n n n n n n n J ^ m z ", +" [ ` y.r._ _ _ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.8.P P Y P Y P Y P Y P Y P K K K K K B B B B n n n n n J E J z ", +" ` ` r.r._ _ 0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.8.8.8.P Y P Y P Y P Y P Y P Y K K K K K B B B B n n n G G J M ", +" _ r.r.r.0.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P Y P Y P Y P Y P Y P K K K K K B B B B G G E E K ", +" 9._ r.r.0.0./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P Y P Y P Y P Y P Y P Y K K K K K B B B B E E K P ", +" ( r.r.r./ / 0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P Y P Y P Y P Y P Y P K K K K K E B E E E M ", +" ` r.r.0.0.0.0.0.0.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P Y P Y P Y P Y P Y P Y K K K K K E E E P ", +" ` r.r.0.0.0.0.0.8.8.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P Y P Y P Y P Y P Y P K K K K Q E K P ", +" _ w.r.w.0.0.0.8.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P Y P Y P Y P Y P Y P P K K E Q E P ", +" ( w.r.w.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P P Y P Y P Y P Y P Y Y E ! E R ", +" 8.w.w.0.7.7.7.7.7.7.7.7.7.7.7.7.7.7.8.P Y P Y P Y P Y P Y P W ! P T ", +" 9.9.w.w.8.8.7.7.7.7.7.7.7.7.7.7.7.7.P P Y P Y P Y P Y W e.9.P ", +" 9.w.t.q.8.7.7.7.7.7.7.7.7.7.7.8.P P P Y P Y P Y e.P Y ", +" ( 0.w.7.7.7.7.7.7.7.7.7.7.8.P P P P T P W e.R ", +" 9.t.q.7.7.7.8.7.7.7.7.7.P P P Y W e.8. ", +" T 8.t.8.8.8.7.7.8.8.8.Y Y P e.P P ", +" P 8.q.8.7.7.7.8.8.P W Y Y ", +" 8.q.q.7.8.8.8.q.Y ", +" 9.q.q.q.P T ", +" P P P ", +" ", +" ", +" " +}; diff --git a/Source Code/V2.1/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_128x128.png b/Source Code/V2.1/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..515cef7760b8362f3c33ae438a648256dae149b0 Binary files /dev/null and b/Source Code/V2.1/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_128x128.png differ diff --git a/Source Code/V2.1/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_16x16.png b/Source Code/V2.1/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..444de54d6cfe2958fac1bbb89dd8619b4c537c47 Binary files /dev/null and b/Source Code/V2.1/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_16x16.png differ diff --git a/Source Code/V2.1/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_256x256.png b/Source Code/V2.1/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_256x256.png new file mode 100644 index 0000000000000000000000000000000000000000..6db52fe2c2ed0dd9f75163214b094476416e341a Binary files /dev/null and b/Source Code/V2.1/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_256x256.png differ diff --git a/Source Code/V2.1/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_32x32.png b/Source Code/V2.1/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..bb51b447d7bc3b9b0c866b35cc9c65917508e0f7 Binary files /dev/null and b/Source Code/V2.1/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_32x32.png differ diff --git a/Source Code/V2.1/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_48x48.png b/Source Code/V2.1/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_48x48.png new file mode 100644 index 0000000000000000000000000000000000000000..b610e19f8483d4592b5bd75e3f1f31631fe7d74e Binary files /dev/null and b/Source Code/V2.1/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_48x48.png differ diff --git a/Source Code/V2.1/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_64x64.png b/Source Code/V2.1/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_64x64.png new file mode 100644 index 0000000000000000000000000000000000000000..35e591d0b099c68a688d1f1e8524effa1f20e54a Binary files /dev/null and b/Source Code/V2.1/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_64x64.png differ diff --git a/Source Code/V2.1/PiacereToolProduct/Piacere/PiacereIcons/icon16.bmp b/Source Code/V2.1/PiacereToolProduct/Piacere/PiacereIcons/icon16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..b7e20845b6a19075baedbeeb6e08187ae431ab07 Binary files /dev/null and b/Source Code/V2.1/PiacereToolProduct/Piacere/PiacereIcons/icon16.bmp differ diff --git a/Source Code/V2.1/PiacereToolProduct/Piacere/PiacereIcons/icon256.bmp b/Source Code/V2.1/PiacereToolProduct/Piacere/PiacereIcons/icon256.bmp new file mode 100644 index 0000000000000000000000000000000000000000..8de86f74ca5f55d3394e9adad417fb05fe698688 Binary files /dev/null and b/Source Code/V2.1/PiacereToolProduct/Piacere/PiacereIcons/icon256.bmp differ diff --git a/Source Code/V2.1/PiacereToolProduct/Piacere/PiacereIcons/icon32.bmp b/Source Code/V2.1/PiacereToolProduct/Piacere/PiacereIcons/icon32.bmp new file mode 100644 index 0000000000000000000000000000000000000000..bbcafe4d4b1147ac7abbfa3a57da08834f1978d5 Binary files /dev/null and b/Source Code/V2.1/PiacereToolProduct/Piacere/PiacereIcons/icon32.bmp differ diff --git a/Source Code/V2.1/PiacereToolProduct/Piacere/PiacereIcons/icon48.bmp b/Source Code/V2.1/PiacereToolProduct/Piacere/PiacereIcons/icon48.bmp new file mode 100644 index 0000000000000000000000000000000000000000..b18d23b7018576501facd65545f0b909fa3ab2e9 Binary files /dev/null and b/Source Code/V2.1/PiacereToolProduct/Piacere/PiacereIcons/icon48.bmp differ diff --git a/Source Code/V2.1/PiacereToolProduct/Piacere/sample.png b/Source Code/V2.1/PiacereToolProduct/Piacere/sample.png new file mode 100755 index 0000000000000000000000000000000000000000..932e4518cdae42e5eaa2b38f655b31e155873367 Binary files /dev/null and b/Source Code/V2.1/PiacereToolProduct/Piacere/sample.png differ diff --git a/Source Code/V2.1/PiacereToolProduct/Piacere/save_edit.png b/Source Code/V2.1/PiacereToolProduct/Piacere/save_edit.png new file mode 100755 index 0000000000000000000000000000000000000000..2c598e5aef10055fd508a52964ecac7ad00ef2a2 Binary files /dev/null and b/Source Code/V2.1/PiacereToolProduct/Piacere/save_edit.png differ diff --git a/Source Code/V2.1/PiacereToolProduct/PiacereToolProduct.product b/Source Code/V2.1/PiacereToolProduct/PiacereToolProduct.product new file mode 100755 index 0000000000000000000000000000000000000000..a71c054f7e0e9df6ae54aa06c8f4edbdfd6c0522 --- /dev/null +++ b/Source Code/V2.1/PiacereToolProduct/PiacereToolProduct.product @@ -0,0 +1,1845 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?pde version="3.5"?> + +<product name="Piacere" uid="PiacereProductID" id="PiacereToolProduct.PiacereProductID" application="org.eclipse.ui.ide.workbench" version="2.1.0.qualifier" useFeatures="false" includeLaunchers="true" autoIncludeRequirements="true"> + + <aboutInfo> + <image path="/PiacereToolProduct/about.gif"/> + </aboutInfo> + + <configIni use="default"> + </configIni> + + <launcherArgs> + <programArgs>-consoleLog + </programArgs> + <vmArgs>-Dosgi.requiredJavaVersion=1.6 -XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts -XX:MaxPermSize=256m -Xms40m -Xmx512m -Xdock:icon=../Resources/Eclipse.icns -XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts + </vmArgs> + <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts + </vmArgsMac> + </launcherArgs> + + <windowImages i16="/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_16x16.png" i32="/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_32x32.png" i48="/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_48x48.png" i64="/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_64x64.png" i128="/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_128x128.png" i256="/PiacereToolProduct/Piacere/PiacereIcons/PiacereIcon_256x256.png"/> + + <splash + location="PiacereToolProduct" + startupProgressRect="2,310,448,10" + startupMessageRect="7,290,320,20" + startupForegroundColor="3A484E" /> + <launcher> + <linux icon="/PiacereToolProduct/Piacere/PiacereIcon.xpm"/> + <macosx icon="/PiacereToolProduct/Piacere/PiacereIcon.icns"/> + <win useIco="false"> + <ico path="/PiacereToolProduct/Piacere/PiacereIcon.ico"/> + <bmp + winSmallHigh="/PiacereToolProduct/Piacere/PiacereIcons/icon16.bmp" + winSmallLow="/PiacereToolProduct/Piacere/PiacereIcons/icon16.bmp" + winMediumHigh="/PiacereToolProduct/Piacere/PiacereIcons/icon32.bmp" + winMediumLow="/PiacereToolProduct/Piacere/PiacereIcons/icon32.bmp" + winLargeHigh="/PiacereToolProduct/Piacere/PiacereIcons/icon48.bmp" + winLargeLow="/PiacereToolProduct/Piacere/PiacereIcons/icon48.bmp" + winExtraLargeHigh="/PiacereToolProduct/Piacere/PiacereIcons/icon256.bmp"/> + </win> + </launcher> + + <vm> + <linux include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8</linux> + <macos include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11</macos> + <solaris include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8</solaris> + <windows include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8</windows> + </vm> + + <plugins> + <plugin id="Java-json"/> + <plugin id="PiacereToolProduct"/> + <plugin id="com.google.gson"/> + <plugin id="com.google.gson.source"/> + <plugin id="com.google.guava"/> + <plugin id="com.google.guava.source"/> + <plugin id="com.google.inject"/> + <plugin id="com.ibm.icu"/> + <plugin id="com.ibm.icu.source"/> + <plugin id="com.jcraft.jsch"/> + <plugin id="com.jcraft.jsch.source"/> + <plugin id="com.sun.el"/> + <plugin id="com.sun.el.source"/> + <plugin id="com.sun.jna"/> + <plugin id="com.sun.jna.platform"/> + <plugin id="com.sun.xml.bind"/> + <plugin id="eu.piacere.doml"/> + <plugin id="eu.piacere.doml.edit"/> + <plugin id="eu.piacere.doml.editor"/> + <plugin id="eu.piacere.doml.grammar"/> + <plugin id="eu.piacere.doml.grammar.ide"/> + <plugin id="eu.piacere.doml.grammar.ui"/> + <plugin id="io.github.classgraph"/> + <plugin id="io.github.classgraph.source"/> + <plugin id="jakarta.servlet-api"/> + <plugin id="jakarta.servlet-api.source"/> + <plugin id="jakarta.xml.bind"/> + <plugin id="javaewah"/> + <plugin id="javax.activation"/> + <plugin id="javax.annotation"/> + <plugin id="javax.annotation.source"/> + <plugin id="javax.el"/> + <plugin id="javax.el.source"/> + <plugin id="javax.inject"/> + <plugin id="javax.inject.source"/> + <plugin id="javax.servlet.jsp"/> + <plugin id="javax.servlet.jsp.source"/> + <plugin id="javax.xml"/> + <plugin id="javax.xml.bind"/> + <plugin id="log4j2"/> + <plugin id="lpg.runtime.java"/> + <plugin id="net.i2p.crypto.eddsa"/> + <plugin id="org.antlr.runtime"/> + <plugin id="org.antlr.runtime.source"/> + <plugin id="org.apache.ant"/> + <plugin id="org.apache.ant.source"/> + <plugin id="org.apache.batik.bridge"/> + <plugin id="org.apache.batik.bridge.source"/> + <plugin id="org.apache.batik.constants"/> + <plugin id="org.apache.batik.constants.source"/> + <plugin id="org.apache.batik.css"/> + <plugin id="org.apache.batik.css.source"/> + <plugin id="org.apache.batik.dom"/> + <plugin id="org.apache.batik.dom.source"/> + <plugin id="org.apache.batik.dom.svg"/> + <plugin id="org.apache.batik.dom.svg.source"/> + <plugin id="org.apache.batik.ext.awt"/> + <plugin id="org.apache.batik.ext.awt.source"/> + <plugin id="org.apache.batik.i18n"/> + <plugin id="org.apache.batik.i18n.source"/> + <plugin id="org.apache.batik.parser"/> + <plugin id="org.apache.batik.parser.source"/> + <plugin id="org.apache.batik.pdf"/> + <plugin id="org.apache.batik.svggen"/> + <plugin id="org.apache.batik.svggen.source"/> + <plugin id="org.apache.batik.transcoder"/> + <plugin id="org.apache.batik.transcoder.source"/> + <plugin id="org.apache.batik.util"/> + <plugin id="org.apache.batik.util.gui"/> + <plugin id="org.apache.batik.util.gui.source"/> + <plugin id="org.apache.batik.util.source"/> + <plugin id="org.apache.batik.xml"/> + <plugin id="org.apache.batik.xml.source"/> + <plugin id="org.apache.commons.cli"/> + <plugin id="org.apache.commons.codec"/> + <plugin id="org.apache.commons.codec.source"/> + <plugin id="org.apache.commons.commons-codec"/> + <plugin id="org.apache.commons.compress"/> + <plugin id="org.apache.commons.io"/> + <plugin id="org.apache.commons.io.source"/> + <plugin id="org.apache.commons.jxpath"/> + <plugin id="org.apache.commons.jxpath.source"/> + <plugin id="org.apache.commons.lang"/> + <plugin id="org.apache.commons.lang3"/> + <plugin id="org.apache.commons.logging"/> + <plugin id="org.apache.commons.logging.source"/> + <plugin id="org.apache.commons.math3"/> + <plugin id="org.apache.commons.net"/> + <plugin id="org.apache.felix.gogo.command"/> + <plugin id="org.apache.felix.gogo.command.source"/> + <plugin id="org.apache.felix.gogo.runtime"/> + <plugin id="org.apache.felix.gogo.runtime.source"/> + <plugin id="org.apache.felix.gogo.shell"/> + <plugin id="org.apache.felix.gogo.shell.source"/> + <plugin id="org.apache.felix.scr"/> + <plugin id="org.apache.felix.scr.source"/> + <plugin id="org.apache.httpcomponents.client5.httpclient5"/> + <plugin id="org.apache.httpcomponents.core5.httpcore5"/> + <plugin id="org.apache.httpcomponents.core5.httpcore5-h2"/> + <plugin id="org.apache.httpcomponents.httpclient"/> + <plugin id="org.apache.httpcomponents.httpclient.source"/> + <plugin id="org.apache.httpcomponents.httpcore"/> + <plugin id="org.apache.httpcomponents.httpcore.source"/> + <plugin id="org.apache.jasper.glassfish"/> + <plugin id="org.apache.jasper.glassfish.source"/> + <plugin id="org.apache.log4j"/> + <plugin id="org.apache.lucene.analyzers-common"/> + <plugin id="org.apache.lucene.analyzers-common.source"/> + <plugin id="org.apache.lucene.analyzers-smartcn"/> + <plugin id="org.apache.lucene.analyzers-smartcn.source"/> + <plugin id="org.apache.lucene.core"/> + <plugin id="org.apache.lucene.core.source"/> + <plugin id="org.apache.sshd.osgi"/> + <plugin id="org.apache.sshd.sftp"/> + <plugin id="org.apache.xerces"/> + <plugin id="org.apache.xml.resolver"/> + <plugin id="org.apache.xml.serializer"/> + <plugin id="org.apache.xmlgraphics"/> + <plugin id="org.apache.xmlgraphics.source"/> + <plugin id="org.apiguardian"/> + <plugin id="org.apiguardian.source"/> + <plugin id="org.bouncycastle.bcpg"/> + <plugin id="org.bouncycastle.bcprov"/> + <plugin id="org.eclipse.acceleo.annotations"/> + <plugin id="org.eclipse.acceleo.common"/> + <plugin id="org.eclipse.acceleo.common.ide"/> + <plugin id="org.eclipse.acceleo.common.ui"/> + <plugin id="org.eclipse.acceleo.engine"/> + <plugin id="org.eclipse.acceleo.ide.ui"/> + <plugin id="org.eclipse.acceleo.model"/> + <plugin id="org.eclipse.acceleo.parser"/> + <plugin id="org.eclipse.acceleo.profiler"/> + <plugin id="org.eclipse.acceleo.query"/> + <plugin id="org.eclipse.acceleo.traceability"/> + <plugin id="org.eclipse.acceleo.traceability.model"/> + <plugin id="org.eclipse.acceleo.ui.interpreter"/> + <plugin id="org.eclipse.ant.core"/> + <plugin id="org.eclipse.ant.core.source"/> + <plugin id="org.eclipse.ant.launching"/> + <plugin id="org.eclipse.ant.launching.source"/> + <plugin id="org.eclipse.ant.ui"/> + <plugin id="org.eclipse.ant.ui.source"/> + <plugin id="org.eclipse.compare"/> + <plugin id="org.eclipse.compare.core"/> + <plugin id="org.eclipse.compare.core.source"/> + <plugin id="org.eclipse.compare.source"/> + <plugin id="org.eclipse.core.commands"/> + <plugin id="org.eclipse.core.commands.source"/> + <plugin id="org.eclipse.core.contenttype"/> + <plugin id="org.eclipse.core.contenttype.source"/> + <plugin id="org.eclipse.core.databinding"/> + <plugin id="org.eclipse.core.databinding.beans"/> + <plugin id="org.eclipse.core.databinding.beans.source"/> + <plugin id="org.eclipse.core.databinding.observable"/> + <plugin id="org.eclipse.core.databinding.observable.source"/> + <plugin id="org.eclipse.core.databinding.property"/> + <plugin id="org.eclipse.core.databinding.property.source"/> + <plugin id="org.eclipse.core.databinding.source"/> + <plugin id="org.eclipse.core.expressions"/> + <plugin id="org.eclipse.core.expressions.source"/> + <plugin id="org.eclipse.core.externaltools"/> + <plugin id="org.eclipse.core.externaltools.source"/> + <plugin id="org.eclipse.core.filebuffers"/> + <plugin id="org.eclipse.core.filebuffers.source"/> + <plugin id="org.eclipse.core.filesystem"/> + <plugin id="org.eclipse.core.filesystem.macosx" fragment="true"/> + <plugin id="org.eclipse.core.filesystem.source"/> + <plugin id="org.eclipse.core.jobs"/> + <plugin id="org.eclipse.core.jobs.source"/> + <plugin id="org.eclipse.core.net"/> + <plugin id="org.eclipse.core.net.source"/> + <plugin id="org.eclipse.core.resources"/> + <plugin id="org.eclipse.core.resources.source"/> + <plugin id="org.eclipse.core.runtime"/> + <plugin id="org.eclipse.core.runtime.source"/> + <plugin id="org.eclipse.core.variables"/> + <plugin id="org.eclipse.core.variables.source"/> + <plugin id="org.eclipse.datatools.connectivity"/> + <plugin id="org.eclipse.datatools.connectivity.oda"/> + <plugin id="org.eclipse.datatools.connectivity.oda.consumer"/> + <plugin id="org.eclipse.datatools.connectivity.oda.design"/> + <plugin id="org.eclipse.datatools.connectivity.oda.design.ui"/> + <plugin id="org.eclipse.datatools.connectivity.oda.profile"/> + <plugin id="org.eclipse.datatools.connectivity.sqm.core"/> + <plugin id="org.eclipse.datatools.connectivity.ui"/> + <plugin id="org.eclipse.datatools.help"/> + <plugin id="org.eclipse.datatools.modelbase.dbdefinition"/> + <plugin id="org.eclipse.datatools.modelbase.sql"/> + <plugin id="org.eclipse.debug.core"/> + <plugin id="org.eclipse.debug.core.source"/> + <plugin id="org.eclipse.debug.ui"/> + <plugin id="org.eclipse.debug.ui.launchview"/> + <plugin id="org.eclipse.debug.ui.launchview.source"/> + <plugin id="org.eclipse.debug.ui.source"/> + <plugin id="org.eclipse.draw2d"/> + <plugin id="org.eclipse.draw2d.doc.isv"/> + <plugin id="org.eclipse.draw2d.source"/> + <plugin id="org.eclipse.e4.core.commands"/> + <plugin id="org.eclipse.e4.core.commands.source"/> + <plugin id="org.eclipse.e4.core.contexts"/> + <plugin id="org.eclipse.e4.core.contexts.source"/> + <plugin id="org.eclipse.e4.core.di"/> + <plugin id="org.eclipse.e4.core.di.annotations"/> + <plugin id="org.eclipse.e4.core.di.annotations.source"/> + <plugin id="org.eclipse.e4.core.di.extensions"/> + <plugin id="org.eclipse.e4.core.di.extensions.source"/> + <plugin id="org.eclipse.e4.core.di.extensions.supplier"/> + <plugin id="org.eclipse.e4.core.di.extensions.supplier.source"/> + <plugin id="org.eclipse.e4.core.di.source"/> + <plugin id="org.eclipse.e4.core.services"/> + <plugin id="org.eclipse.e4.core.services.source"/> + <plugin id="org.eclipse.e4.emf.xpath"/> + <plugin id="org.eclipse.e4.emf.xpath.source"/> + <plugin id="org.eclipse.e4.tools"/> + <plugin id="org.eclipse.e4.tools.compat"/> + <plugin id="org.eclipse.e4.tools.emf.editor3x"/> + <plugin id="org.eclipse.e4.tools.emf.ui"/> + <plugin id="org.eclipse.e4.tools.jdt.templates"/> + <plugin id="org.eclipse.e4.tools.services"/> + <plugin id="org.eclipse.e4.ui.bindings"/> + <plugin id="org.eclipse.e4.ui.bindings.source"/> + <plugin id="org.eclipse.e4.ui.css.core"/> + <plugin id="org.eclipse.e4.ui.css.core.source"/> + <plugin id="org.eclipse.e4.ui.css.swt"/> + <plugin id="org.eclipse.e4.ui.css.swt.source"/> + <plugin id="org.eclipse.e4.ui.css.swt.theme"/> + <plugin id="org.eclipse.e4.ui.css.swt.theme.source"/> + <plugin id="org.eclipse.e4.ui.di"/> + <plugin id="org.eclipse.e4.ui.di.source"/> + <plugin id="org.eclipse.e4.ui.dialogs"/> + <plugin id="org.eclipse.e4.ui.dialogs.source"/> + <plugin id="org.eclipse.e4.ui.ide"/> + <plugin id="org.eclipse.e4.ui.ide.source"/> + <plugin id="org.eclipse.e4.ui.model.workbench"/> + <plugin id="org.eclipse.e4.ui.model.workbench.source"/> + <plugin id="org.eclipse.e4.ui.services"/> + <plugin id="org.eclipse.e4.ui.services.source"/> + <plugin id="org.eclipse.e4.ui.widgets"/> + <plugin id="org.eclipse.e4.ui.widgets.source"/> + <plugin id="org.eclipse.e4.ui.workbench"/> + <plugin id="org.eclipse.e4.ui.workbench.addons.swt"/> + <plugin id="org.eclipse.e4.ui.workbench.addons.swt.source"/> + <plugin id="org.eclipse.e4.ui.workbench.renderers.swt"/> + <plugin id="org.eclipse.e4.ui.workbench.renderers.swt.cocoa" fragment="true"/> + <plugin id="org.eclipse.e4.ui.workbench.renderers.swt.cocoa.source"/> + <plugin id="org.eclipse.e4.ui.workbench.renderers.swt.source"/> + <plugin id="org.eclipse.e4.ui.workbench.source"/> + <plugin id="org.eclipse.e4.ui.workbench.swt"/> + <plugin id="org.eclipse.e4.ui.workbench.swt.source"/> + <plugin id="org.eclipse.e4.ui.workbench3"/> + <plugin id="org.eclipse.e4.ui.workbench3.source"/> + <plugin id="org.eclipse.ecf"/> + <plugin id="org.eclipse.ecf.filetransfer"/> + <plugin id="org.eclipse.ecf.filetransfer.source"/> + <plugin id="org.eclipse.ecf.identity"/> + <plugin id="org.eclipse.ecf.identity.source"/> + <plugin id="org.eclipse.ecf.provider.filetransfer"/> + <plugin id="org.eclipse.ecf.provider.filetransfer.httpclient45"/> + <plugin id="org.eclipse.ecf.provider.filetransfer.httpclient45.source"/> + <plugin id="org.eclipse.ecf.provider.filetransfer.source"/> + <plugin id="org.eclipse.ecf.provider.filetransfer.ssl" fragment="true"/> + <plugin id="org.eclipse.ecf.provider.filetransfer.ssl.source"/> + <plugin id="org.eclipse.ecf.source"/> + <plugin id="org.eclipse.ecf.ssl" fragment="true"/> + <plugin id="org.eclipse.ecf.ssl.source"/> + <plugin id="org.eclipse.eef"/> + <plugin id="org.eclipse.eef.common"/> + <plugin id="org.eclipse.eef.common.ui"/> + <plugin id="org.eclipse.eef.core"/> + <plugin id="org.eclipse.eef.core.ext.widgets.reference"/> + <plugin id="org.eclipse.eef.ext.widgets.reference"/> + <plugin id="org.eclipse.eef.ide.ui"/> + <plugin id="org.eclipse.eef.ide.ui.ext.widgets.reference"/> + <plugin id="org.eclipse.eef.ide.ui.properties"/> + <plugin id="org.eclipse.eef.properties.ui"/> + <plugin id="org.eclipse.eef.properties.ui.legacy"/> + <plugin id="org.eclipse.egit"/> + <plugin id="org.eclipse.egit.core"/> + <plugin id="org.eclipse.egit.doc"/> + <plugin id="org.eclipse.egit.ui"/> + <plugin id="org.eclipse.emf"/> + <plugin id="org.eclipse.emf.activities"/> + <plugin id="org.eclipse.emf.ant"/> + <plugin id="org.eclipse.emf.ant.source"/> + <plugin id="org.eclipse.emf.cdo"/> + <plugin id="org.eclipse.emf.cdo.admin"/> + <plugin id="org.eclipse.emf.cdo.common"/> + <plugin id="org.eclipse.emf.cdo.compare"/> + <plugin id="org.eclipse.emf.cdo.doc"/> + <plugin id="org.eclipse.emf.cdo.edit"/> + <plugin id="org.eclipse.emf.cdo.examples.installer"/> + <plugin id="org.eclipse.emf.cdo.explorer"/> + <plugin id="org.eclipse.emf.cdo.explorer.ui"/> + <plugin id="org.eclipse.emf.cdo.expressions"/> + <plugin id="org.eclipse.emf.cdo.expressions.edit"/> + <plugin id="org.eclipse.emf.cdo.expressions.editor"/> + <plugin id="org.eclipse.emf.cdo.migrator"/> + <plugin id="org.eclipse.emf.cdo.net4j"/> + <plugin id="org.eclipse.emf.cdo.security"/> + <plugin id="org.eclipse.emf.cdo.security.edit"/> + <plugin id="org.eclipse.emf.cdo.security.editor"/> + <plugin id="org.eclipse.emf.cdo.security.ui"/> + <plugin id="org.eclipse.emf.cdo.server"/> + <plugin id="org.eclipse.emf.cdo.server.admin"/> + <plugin id="org.eclipse.emf.cdo.server.db"/> + <plugin id="org.eclipse.emf.cdo.server.net4j"/> + <plugin id="org.eclipse.emf.cdo.server.ocl"/> + <plugin id="org.eclipse.emf.cdo.server.product"/> + <plugin id="org.eclipse.emf.cdo.server.security"/> + <plugin id="org.eclipse.emf.cdo.transfer"/> + <plugin id="org.eclipse.emf.cdo.transfer.repository"/> + <plugin id="org.eclipse.emf.cdo.transfer.ui"/> + <plugin id="org.eclipse.emf.cdo.transfer.workspace"/> + <plugin id="org.eclipse.emf.cdo.transfer.workspace.ui"/> + <plugin id="org.eclipse.emf.cdo.ui"/> + <plugin id="org.eclipse.emf.cdo.ui.admin"/> + <plugin id="org.eclipse.emf.cdo.ui.compare"/> + <plugin id="org.eclipse.emf.cdo.ui.jdt"/> + <plugin id="org.eclipse.emf.cdo.ui.shared"/> + <plugin id="org.eclipse.emf.cdo.ui.team"/> + <plugin id="org.eclipse.emf.cdo.workspace"/> + <plugin id="org.eclipse.emf.cheatsheets"/> + <plugin id="org.eclipse.emf.codegen"/> + <plugin id="org.eclipse.emf.codegen.ecore"/> + <plugin id="org.eclipse.emf.codegen.ecore.source"/> + <plugin id="org.eclipse.emf.codegen.ecore.ui"/> + <plugin id="org.eclipse.emf.codegen.ecore.ui.source"/> + <plugin id="org.eclipse.emf.codegen.ecore.xtext"/> + <plugin id="org.eclipse.emf.codegen.ecore.xtext.source"/> + <plugin id="org.eclipse.emf.codegen.ecore.xtext.ui"/> + <plugin id="org.eclipse.emf.codegen.ecore.xtext.ui.source"/> + <plugin id="org.eclipse.emf.codegen.source"/> + <plugin id="org.eclipse.emf.codegen.ui"/> + <plugin id="org.eclipse.emf.codegen.ui.source"/> + <plugin id="org.eclipse.emf.common"/> + <plugin id="org.eclipse.emf.common.source"/> + <plugin id="org.eclipse.emf.common.ui"/> + <plugin id="org.eclipse.emf.common.ui.source"/> + <plugin id="org.eclipse.emf.compare"/> + <plugin id="org.eclipse.emf.compare.diagram"/> + <plugin id="org.eclipse.emf.compare.diagram.edit"/> + <plugin id="org.eclipse.emf.compare.diagram.ide.ui"/> + <plugin id="org.eclipse.emf.compare.diagram.ide.ui.sirius"/> + <plugin id="org.eclipse.emf.compare.diagram.ide.ui.sirius.source"/> + <plugin id="org.eclipse.emf.compare.diagram.sirius"/> + <plugin id="org.eclipse.emf.compare.diagram.sirius.source"/> + <plugin id="org.eclipse.emf.compare.doc"/> + <plugin id="org.eclipse.emf.compare.edit"/> + <plugin id="org.eclipse.emf.compare.edit.source"/> + <plugin id="org.eclipse.emf.compare.egit"/> + <plugin id="org.eclipse.emf.compare.egit.ui"/> + <plugin id="org.eclipse.emf.compare.ide"/> + <plugin id="org.eclipse.emf.compare.ide.source"/> + <plugin id="org.eclipse.emf.compare.ide.ui"/> + <plugin id="org.eclipse.emf.compare.ide.ui.source"/> + <plugin id="org.eclipse.emf.compare.rcp"/> + <plugin id="org.eclipse.emf.compare.rcp.ui"/> + <plugin id="org.eclipse.emf.compare.source"/> + <plugin id="org.eclipse.emf.converter"/> + <plugin id="org.eclipse.emf.converter.source"/> + <plugin id="org.eclipse.emf.databinding"/> + <plugin id="org.eclipse.emf.databinding.edit"/> + <plugin id="org.eclipse.emf.databinding.edit.source"/> + <plugin id="org.eclipse.emf.databinding.source"/> + <plugin id="org.eclipse.emf.doc"/> + <plugin id="org.eclipse.emf.ecore"/> + <plugin id="org.eclipse.emf.ecore.change"/> + <plugin id="org.eclipse.emf.ecore.change.edit"/> + <plugin id="org.eclipse.emf.ecore.change.edit.source"/> + <plugin id="org.eclipse.emf.ecore.change.source"/> + <plugin id="org.eclipse.emf.ecore.edit"/> + <plugin id="org.eclipse.emf.ecore.edit.source"/> + <plugin id="org.eclipse.emf.ecore.editor"/> + <plugin id="org.eclipse.emf.ecore.editor.source"/> + <plugin id="org.eclipse.emf.ecore.source"/> + <plugin id="org.eclipse.emf.ecore.xcore"/> + <plugin id="org.eclipse.emf.ecore.xcore.edit"/> + <plugin id="org.eclipse.emf.ecore.xcore.edit.source"/> + <plugin id="org.eclipse.emf.ecore.xcore.exporter"/> + <plugin id="org.eclipse.emf.ecore.xcore.exporter.source"/> + <plugin id="org.eclipse.emf.ecore.xcore.importer"/> + <plugin id="org.eclipse.emf.ecore.xcore.importer.source"/> + <plugin id="org.eclipse.emf.ecore.xcore.lib"/> + <plugin id="org.eclipse.emf.ecore.xcore.lib.source"/> + <plugin id="org.eclipse.emf.ecore.xcore.source"/> + <plugin id="org.eclipse.emf.ecore.xcore.ui"/> + <plugin id="org.eclipse.emf.ecore.xcore.ui.source"/> + <plugin id="org.eclipse.emf.ecore.xmi"/> + <plugin id="org.eclipse.emf.ecore.xmi.source"/> + <plugin id="org.eclipse.emf.ecoretools"/> + <plugin id="org.eclipse.emf.ecoretools.design"/> + <plugin id="org.eclipse.emf.ecoretools.design.ui"/> + <plugin id="org.eclipse.emf.ecoretools.doc"/> + <plugin id="org.eclipse.emf.ecoretools.ui"/> + <plugin id="org.eclipse.emf.ecp.common"/> + <plugin id="org.eclipse.emf.ecp.common.source"/> + <plugin id="org.eclipse.emf.ecp.common.ui"/> + <plugin id="org.eclipse.emf.ecp.common.ui.source"/> + <plugin id="org.eclipse.emf.ecp.edit"/> + <plugin id="org.eclipse.emf.ecp.edit.source"/> + <plugin id="org.eclipse.emf.ecp.edit.swt"/> + <plugin id="org.eclipse.emf.ecp.edit.swt.source"/> + <plugin id="org.eclipse.emf.ecp.emf2web"/> + <plugin id="org.eclipse.emf.ecp.emf2web.json"/> + <plugin id="org.eclipse.emf.ecp.emf2web.json.source"/> + <plugin id="org.eclipse.emf.ecp.emf2web.source"/> + <plugin id="org.eclipse.emf.ecp.emf2web.ui"/> + <plugin id="org.eclipse.emf.ecp.emf2web.ui.json"/> + <plugin id="org.eclipse.emf.ecp.emf2web.ui.json.source"/> + <plugin id="org.eclipse.emf.ecp.emf2web.ui.source"/> + <plugin id="org.eclipse.emf.ecp.ide.editor.view"/> + <plugin id="org.eclipse.emf.ecp.ide.editor.view.source"/> + <plugin id="org.eclipse.emf.ecp.ide.editor.view.templatebridge"/> + <plugin id="org.eclipse.emf.ecp.ide.editor.view.templatebridge.source"/> + <plugin id="org.eclipse.emf.ecp.ide.editor.viewmodel"/> + <plugin id="org.eclipse.emf.ecp.ide.editor.viewmodel.source"/> + <plugin id="org.eclipse.emf.ecp.ide.util"/> + <plugin id="org.eclipse.emf.ecp.ide.util.source"/> + <plugin id="org.eclipse.emf.ecp.ide.view.service"/> + <plugin id="org.eclipse.emf.ecp.ide.view.service.source"/> + <plugin id="org.eclipse.emf.ecp.makeithappen.wizards"/> + <plugin id="org.eclipse.emf.ecp.makeithappen.wizards.source"/> + <plugin id="org.eclipse.emf.ecp.ui.view"/> + <plugin id="org.eclipse.emf.ecp.ui.view.editor.controls"/> + <plugin id="org.eclipse.emf.ecp.ui.view.editor.controls.source"/> + <plugin id="org.eclipse.emf.ecp.ui.view.linewrapper"/> + <plugin id="org.eclipse.emf.ecp.ui.view.linewrapper.source"/> + <plugin id="org.eclipse.emf.ecp.ui.view.source"/> + <plugin id="org.eclipse.emf.ecp.ui.view.swt"/> + <plugin id="org.eclipse.emf.ecp.ui.view.swt.source"/> + <plugin id="org.eclipse.emf.ecp.view.categorization.model"/> + <plugin id="org.eclipse.emf.ecp.view.categorization.model.edit"/> + <plugin id="org.eclipse.emf.ecp.view.categorization.model.edit.source"/> + <plugin id="org.eclipse.emf.ecp.view.categorization.model.source"/> + <plugin id="org.eclipse.emf.ecp.view.categorization.swt"/> + <plugin id="org.eclipse.emf.ecp.view.categorization.swt.source"/> + <plugin id="org.eclipse.emf.ecp.view.compoundcontrol.model"/> + <plugin id="org.eclipse.emf.ecp.view.compoundcontrol.model.edit"/> + <plugin id="org.eclipse.emf.ecp.view.compoundcontrol.model.edit.source"/> + <plugin id="org.eclipse.emf.ecp.view.compoundcontrol.model.source"/> + <plugin id="org.eclipse.emf.ecp.view.compoundcontrol.swt"/> + <plugin id="org.eclipse.emf.ecp.view.compoundcontrol.swt.source"/> + <plugin id="org.eclipse.emf.ecp.view.compoundcontrol.tooling"/> + <plugin id="org.eclipse.emf.ecp.view.compoundcontrol.tooling.source"/> + <plugin id="org.eclipse.emf.ecp.view.context"/> + <plugin id="org.eclipse.emf.ecp.view.context.locale"/> + <plugin id="org.eclipse.emf.ecp.view.context.locale.source"/> + <plugin id="org.eclipse.emf.ecp.view.context.source"/> + <plugin id="org.eclipse.emf.ecp.view.control.multireference"/> + <plugin id="org.eclipse.emf.ecp.view.control.multireference.source"/> + <plugin id="org.eclipse.emf.ecp.view.core.swt"/> + <plugin id="org.eclipse.emf.ecp.view.core.swt.source"/> + <plugin id="org.eclipse.emf.ecp.view.custom.model"/> + <plugin id="org.eclipse.emf.ecp.view.custom.model.edit"/> + <plugin id="org.eclipse.emf.ecp.view.custom.model.edit.source"/> + <plugin id="org.eclipse.emf.ecp.view.custom.model.source"/> + <plugin id="org.eclipse.emf.ecp.view.custom.ui.swt"/> + <plugin id="org.eclipse.emf.ecp.view.custom.ui.swt.source"/> + <plugin id="org.eclipse.emf.ecp.view.edapt"/> + <plugin id="org.eclipse.emf.ecp.view.edapt.source"/> + <plugin id="org.eclipse.emf.ecp.view.group.model"/> + <plugin id="org.eclipse.emf.ecp.view.group.model.edit"/> + <plugin id="org.eclipse.emf.ecp.view.group.model.edit.source"/> + <plugin id="org.eclipse.emf.ecp.view.group.model.source"/> + <plugin id="org.eclipse.emf.ecp.view.group.swt.collapsable"/> + <plugin id="org.eclipse.emf.ecp.view.group.swt.collapsable.source"/> + <plugin id="org.eclipse.emf.ecp.view.group.swt.embedded"/> + <plugin id="org.eclipse.emf.ecp.view.group.swt.embedded.source"/> + <plugin id="org.eclipse.emf.ecp.view.group.ui.swt"/> + <plugin id="org.eclipse.emf.ecp.view.group.ui.swt.source"/> + <plugin id="org.eclipse.emf.ecp.view.horizontal.model"/> + <plugin id="org.eclipse.emf.ecp.view.horizontal.model.edit"/> + <plugin id="org.eclipse.emf.ecp.view.horizontal.model.edit.source"/> + <plugin id="org.eclipse.emf.ecp.view.horizontal.model.source"/> + <plugin id="org.eclipse.emf.ecp.view.horizontal.ui.swt"/> + <plugin id="org.eclipse.emf.ecp.view.horizontal.ui.swt.source"/> + <plugin id="org.eclipse.emf.ecp.view.indexdmr.model"/> + <plugin id="org.eclipse.emf.ecp.view.label.model"/> + <plugin id="org.eclipse.emf.ecp.view.label.model.edit"/> + <plugin id="org.eclipse.emf.ecp.view.label.model.edit.source"/> + <plugin id="org.eclipse.emf.ecp.view.label.model.source"/> + <plugin id="org.eclipse.emf.ecp.view.label.ui.swt"/> + <plugin id="org.eclipse.emf.ecp.view.label.ui.swt.source"/> + <plugin id="org.eclipse.emf.ecp.view.mappingdmr.model"/> + <plugin id="org.eclipse.emf.ecp.view.migrator"/> + <plugin id="org.eclipse.emf.ecp.view.migrator.source"/> + <plugin id="org.eclipse.emf.ecp.view.model"/> + <plugin id="org.eclipse.emf.ecp.view.model.common"/> + <plugin id="org.eclipse.emf.ecp.view.model.common.di"/> + <plugin id="org.eclipse.emf.ecp.view.model.common.di.source"/> + <plugin id="org.eclipse.emf.ecp.view.model.common.source"/> + <plugin id="org.eclipse.emf.ecp.view.model.edapt"/> + <plugin id="org.eclipse.emf.ecp.view.model.edapt.source"/> + <plugin id="org.eclipse.emf.ecp.view.model.edit"/> + <plugin id="org.eclipse.emf.ecp.view.model.edit.source"/> + <plugin id="org.eclipse.emf.ecp.view.model.editor"/> + <plugin id="org.eclipse.emf.ecp.view.model.editor.source"/> + <plugin id="org.eclipse.emf.ecp.view.model.preview.common"/> + <plugin id="org.eclipse.emf.ecp.view.model.preview.common.source"/> + <plugin id="org.eclipse.emf.ecp.view.model.preview.e3"/> + <plugin id="org.eclipse.emf.ecp.view.model.preview.e3.source"/> + <plugin id="org.eclipse.emf.ecp.view.model.project.installer"/> + <plugin id="org.eclipse.emf.ecp.view.model.project.installer.source"/> + <plugin id="org.eclipse.emf.ecp.view.model.provider.generator"/> + <plugin id="org.eclipse.emf.ecp.view.model.provider.generator.source"/> + <plugin id="org.eclipse.emf.ecp.view.model.provider.xmi"/> + <plugin id="org.eclipse.emf.ecp.view.model.provider.xmi.source"/> + <plugin id="org.eclipse.emf.ecp.view.model.source"/> + <plugin id="org.eclipse.emf.ecp.view.rule"/> + <plugin id="org.eclipse.emf.ecp.view.rule.model"/> + <plugin id="org.eclipse.emf.ecp.view.rule.model.edit"/> + <plugin id="org.eclipse.emf.ecp.view.rule.model.edit.source"/> + <plugin id="org.eclipse.emf.ecp.view.rule.model.source"/> + <plugin id="org.eclipse.emf.ecp.view.rule.source"/> + <plugin id="org.eclipse.emf.ecp.view.stack.model"/> + <plugin id="org.eclipse.emf.ecp.view.stack.model.edit"/> + <plugin id="org.eclipse.emf.ecp.view.stack.model.edit.source"/> + <plugin id="org.eclipse.emf.ecp.view.stack.model.source"/> + <plugin id="org.eclipse.emf.ecp.view.stack.ui.swt"/> + <plugin id="org.eclipse.emf.ecp.view.stack.ui.swt.source"/> + <plugin id="org.eclipse.emf.ecp.view.stack.viewmodel"/> + <plugin id="org.eclipse.emf.ecp.view.swt.layout"/> + <plugin id="org.eclipse.emf.ecp.view.swt.layout.source"/> + <plugin id="org.eclipse.emf.ecp.view.table.columnservice"/> + <plugin id="org.eclipse.emf.ecp.view.table.columnservice.source"/> + <plugin id="org.eclipse.emf.ecp.view.table.edapt"/> + <plugin id="org.eclipse.emf.ecp.view.table.edapt.source"/> + <plugin id="org.eclipse.emf.ecp.view.table.model"/> + <plugin id="org.eclipse.emf.ecp.view.table.model.edit"/> + <plugin id="org.eclipse.emf.ecp.view.table.model.edit.source"/> + <plugin id="org.eclipse.emf.ecp.view.table.model.source"/> + <plugin id="org.eclipse.emf.ecp.view.table.ui.swt"/> + <plugin id="org.eclipse.emf.ecp.view.table.ui.swt.source"/> + <plugin id="org.eclipse.emf.ecp.view.template.annotation.model"/> + <plugin id="org.eclipse.emf.ecp.view.template.annotation.model.edit"/> + <plugin id="org.eclipse.emf.ecp.view.template.annotation.model.edit.source"/> + <plugin id="org.eclipse.emf.ecp.view.template.annotation.model.source"/> + <plugin id="org.eclipse.emf.ecp.view.template.model"/> + <plugin id="org.eclipse.emf.ecp.view.template.model.edit"/> + <plugin id="org.eclipse.emf.ecp.view.template.model.edit.source"/> + <plugin id="org.eclipse.emf.ecp.view.template.model.source"/> + <plugin id="org.eclipse.emf.ecp.view.template.service"/> + <plugin id="org.eclipse.emf.ecp.view.template.service.source"/> + <plugin id="org.eclipse.emf.ecp.view.template.tooling"/> + <plugin id="org.eclipse.emf.ecp.view.template.tooling.source"/> + <plugin id="org.eclipse.emf.ecp.view.treemasterdetail.model"/> + <plugin id="org.eclipse.emf.ecp.view.treemasterdetail.model.edit"/> + <plugin id="org.eclipse.emf.ecp.view.treemasterdetail.model.edit.source"/> + <plugin id="org.eclipse.emf.ecp.view.treemasterdetail.model.source"/> + <plugin id="org.eclipse.emf.ecp.view.treemasterdetail.ui.swt"/> + <plugin id="org.eclipse.emf.ecp.view.treemasterdetail.ui.swt.source"/> + <plugin id="org.eclipse.emf.ecp.view.treemasterdetail.validation"/> + <plugin id="org.eclipse.emf.ecp.view.treemasterdetail.validation.source"/> + <plugin id="org.eclipse.emf.ecp.view.unset"/> + <plugin id="org.eclipse.emf.ecp.view.unset.source"/> + <plugin id="org.eclipse.emf.ecp.view.util.swt"/> + <plugin id="org.eclipse.emf.ecp.view.util.swt.source"/> + <plugin id="org.eclipse.emf.ecp.view.validation"/> + <plugin id="org.eclipse.emf.ecp.view.validation.source"/> + <plugin id="org.eclipse.emf.ecp.view.vertical.model"/> + <plugin id="org.eclipse.emf.ecp.view.vertical.model.edit"/> + <plugin id="org.eclipse.emf.ecp.view.vertical.model.edit.source"/> + <plugin id="org.eclipse.emf.ecp.view.vertical.model.source"/> + <plugin id="org.eclipse.emf.ecp.view.vertical.ui.swt"/> + <plugin id="org.eclipse.emf.ecp.view.vertical.ui.swt.source"/> + <plugin id="org.eclipse.emf.ecp.view.viewproxy.model"/> + <plugin id="org.eclipse.emf.ecp.view.viewproxy.model.edit"/> + <plugin id="org.eclipse.emf.ecp.view.viewproxy.model.edit.source"/> + <plugin id="org.eclipse.emf.ecp.view.viewproxy.model.source"/> + <plugin id="org.eclipse.emf.ecp.view.workspace.migrator"/> + <plugin id="org.eclipse.emf.ecp.view.workspace.migrator.source"/> + <plugin id="org.eclipse.emf.edapt.common"/> + <plugin id="org.eclipse.emf.edapt.common.source"/> + <plugin id="org.eclipse.emf.edapt.declaration"/> + <plugin id="org.eclipse.emf.edapt.declaration.source"/> + <plugin id="org.eclipse.emf.edapt.history"/> + <plugin id="org.eclipse.emf.edapt.history.source"/> + <plugin id="org.eclipse.emf.edapt.migration"/> + <plugin id="org.eclipse.emf.edapt.migration.source"/> + <plugin id="org.eclipse.emf.edit"/> + <plugin id="org.eclipse.emf.edit.source"/> + <plugin id="org.eclipse.emf.edit.ui"/> + <plugin id="org.eclipse.emf.edit.ui.source"/> + <plugin id="org.eclipse.emf.emfatic.core"/> + <plugin id="org.eclipse.emf.emfatic.doc.user"/> + <plugin id="org.eclipse.emf.emfatic.ui"/> + <plugin id="org.eclipse.emf.example.installer"/> + <plugin id="org.eclipse.emf.examples"/> + <plugin id="org.eclipse.emf.examples.databinding.project.core"/> + <plugin id="org.eclipse.emf.examples.databinding.project.core.model"/> + <plugin id="org.eclipse.emf.examples.databinding.project.ui.rcp"/> + <plugin id="org.eclipse.emf.examples.generator.validator"/> + <plugin id="org.eclipse.emf.examples.jet.article2"/> + <plugin id="org.eclipse.emf.examples.library"/> + <plugin id="org.eclipse.emf.examples.library.edit"/> + <plugin id="org.eclipse.emf.examples.library.editor"/> + <plugin id="org.eclipse.emf.exporter"/> + <plugin id="org.eclipse.emf.exporter.html"/> + <plugin id="org.eclipse.emf.exporter.source"/> + <plugin id="org.eclipse.emf.generic.editor"/> + <plugin id="org.eclipse.emf.generic.editor.source"/> + <plugin id="org.eclipse.emf.importer"/> + <plugin id="org.eclipse.emf.importer.ecore"/> + <plugin id="org.eclipse.emf.importer.ecore.source"/> + <plugin id="org.eclipse.emf.importer.java"/> + <plugin id="org.eclipse.emf.importer.java.source"/> + <plugin id="org.eclipse.emf.importer.rose"/> + <plugin id="org.eclipse.emf.importer.rose.source"/> + <plugin id="org.eclipse.emf.importer.source"/> + <plugin id="org.eclipse.emf.java"/> + <plugin id="org.eclipse.emf.java.edit"/> + <plugin id="org.eclipse.emf.java.editor"/> + <plugin id="org.eclipse.emf.mapping"/> + <plugin id="org.eclipse.emf.mapping.ecore"/> + <plugin id="org.eclipse.emf.mapping.ecore.editor"/> + <plugin id="org.eclipse.emf.mapping.ecore.editor.source"/> + <plugin id="org.eclipse.emf.mapping.ecore.source"/> + <plugin id="org.eclipse.emf.mapping.ecore2ecore"/> + <plugin id="org.eclipse.emf.mapping.ecore2ecore.editor"/> + <plugin id="org.eclipse.emf.mapping.ecore2ecore.editor.source"/> + <plugin id="org.eclipse.emf.mapping.ecore2ecore.source"/> + <plugin id="org.eclipse.emf.mapping.ecore2xml"/> + <plugin id="org.eclipse.emf.mapping.ecore2xml.source"/> + <plugin id="org.eclipse.emf.mapping.ecore2xml.ui"/> + <plugin id="org.eclipse.emf.mapping.ecore2xml.ui.source"/> + <plugin id="org.eclipse.emf.mapping.source"/> + <plugin id="org.eclipse.emf.mapping.ui"/> + <plugin id="org.eclipse.emf.mapping.ui.source"/> + <plugin id="org.eclipse.emf.mapping.xsd2ecore"/> + <plugin id="org.eclipse.emf.mapping.xsd2ecore.editor"/> + <plugin id="org.eclipse.emf.mapping.xsd2ecore.editor.source"/> + <plugin id="org.eclipse.emf.mapping.xsd2ecore.source"/> + <plugin id="org.eclipse.emf.mwe.core"/> + <plugin id="org.eclipse.emf.mwe.ui"/> + <plugin id="org.eclipse.emf.mwe.utils"/> + <plugin id="org.eclipse.emf.mwe2.language"/> + <plugin id="org.eclipse.emf.mwe2.language.ide"/> + <plugin id="org.eclipse.emf.mwe2.language.ide.source"/> + <plugin id="org.eclipse.emf.mwe2.language.source"/> + <plugin id="org.eclipse.emf.mwe2.language.ui"/> + <plugin id="org.eclipse.emf.mwe2.language.ui.source"/> + <plugin id="org.eclipse.emf.mwe2.launch"/> + <plugin id="org.eclipse.emf.mwe2.launch.source"/> + <plugin id="org.eclipse.emf.mwe2.launch.ui"/> + <plugin id="org.eclipse.emf.mwe2.launch.ui.source"/> + <plugin id="org.eclipse.emf.mwe2.lib"/> + <plugin id="org.eclipse.emf.mwe2.lib.source"/> + <plugin id="org.eclipse.emf.mwe2.runtime"/> + <plugin id="org.eclipse.emf.mwe2.runtime.source"/> + <plugin id="org.eclipse.emf.oda"/> + <plugin id="org.eclipse.emf.oda.ecore"/> + <plugin id="org.eclipse.emf.oda.ecore.source"/> + <plugin id="org.eclipse.emf.oda.ecore.ui"/> + <plugin id="org.eclipse.emf.oda.ecore.ui.source"/> + <plugin id="org.eclipse.emf.oda.source"/> + <plugin id="org.eclipse.emf.parsley"/> + <plugin id="org.eclipse.emf.parsley.cdo"/> + <plugin id="org.eclipse.emf.parsley.cdo.common"/> + <plugin id="org.eclipse.emf.parsley.cdo.common.source"/> + <plugin id="org.eclipse.emf.parsley.common"/> + <plugin id="org.eclipse.emf.parsley.common.source"/> + <plugin id="org.eclipse.emf.parsley.doc"/> + <plugin id="org.eclipse.emf.parsley.doc.source"/> + <plugin id="org.eclipse.emf.parsley.dsl"/> + <plugin id="org.eclipse.emf.parsley.dsl.additional.builder"/> + <plugin id="org.eclipse.emf.parsley.dsl.additional.builder.source"/> + <plugin id="org.eclipse.emf.parsley.dsl.ide"/> + <plugin id="org.eclipse.emf.parsley.dsl.ide.source"/> + <plugin id="org.eclipse.emf.parsley.dsl.source"/> + <plugin id="org.eclipse.emf.parsley.dsl.ui"/> + <plugin id="org.eclipse.emf.parsley.dsl.ui.source"/> + <plugin id="org.eclipse.emf.parsley.editors"/> + <plugin id="org.eclipse.emf.parsley.editors.common"/> + <plugin id="org.eclipse.emf.parsley.editors.common.source"/> + <plugin id="org.eclipse.emf.parsley.generator.common"/> + <plugin id="org.eclipse.emf.parsley.generator.common.source"/> + <plugin id="org.eclipse.emf.parsley.junit4"/> + <plugin id="org.eclipse.emf.parsley.junit4.source"/> + <plugin id="org.eclipse.emf.parsley.runtime"/> + <plugin id="org.eclipse.emf.parsley.runtime.common"/> + <plugin id="org.eclipse.emf.parsley.runtime.common.source"/> + <plugin id="org.eclipse.emf.parsley.ui.examples"/> + <plugin id="org.eclipse.emf.parsley.ui.examples.source"/> + <plugin id="org.eclipse.emf.parsley.views"/> + <plugin id="org.eclipse.emf.parsley.views.common"/> + <plugin id="org.eclipse.emf.parsley.views.common.source"/> + <plugin id="org.eclipse.emf.parsley.views.source"/> + <plugin id="org.eclipse.emf.parsley.wizards"/> + <plugin id="org.eclipse.emf.parsley.wizards.source"/> + <plugin id="org.eclipse.emf.query"/> + <plugin id="org.eclipse.emf.query.doc"/> + <plugin id="org.eclipse.emf.query.examples"/> + <plugin id="org.eclipse.emf.query.ocl"/> + <plugin id="org.eclipse.emf.query.ocl.source"/> + <plugin id="org.eclipse.emf.query.source"/> + <plugin id="org.eclipse.emf.source"/> + <plugin id="org.eclipse.emf.transaction"/> + <plugin id="org.eclipse.emf.transaction.doc"/> + <plugin id="org.eclipse.emf.transaction.examples"/> + <plugin id="org.eclipse.emf.transaction.source"/> + <plugin id="org.eclipse.emf.transaction.ui"/> + <plugin id="org.eclipse.emf.transaction.ui.source"/> + <plugin id="org.eclipse.emf.validation"/> + <plugin id="org.eclipse.emf.validation.doc"/> + <plugin id="org.eclipse.emf.validation.examples"/> + <plugin id="org.eclipse.emf.validation.ocl"/> + <plugin id="org.eclipse.emf.validation.ocl.source"/> + <plugin id="org.eclipse.emf.validation.source"/> + <plugin id="org.eclipse.emf.validation.ui"/> + <plugin id="org.eclipse.emf.validation.ui.ide"/> + <plugin id="org.eclipse.emf.validation.ui.ide.source"/> + <plugin id="org.eclipse.emf.validation.ui.source"/> + <plugin id="org.eclipse.emf.workspace"/> + <plugin id="org.eclipse.emf.workspace.doc"/> + <plugin id="org.eclipse.emf.workspace.source"/> + <plugin id="org.eclipse.emf.workspace.ui"/> + <plugin id="org.eclipse.emf.workspace.ui.source"/> + <plugin id="org.eclipse.emfforms.coffee.wizards"/> + <plugin id="org.eclipse.emfforms.coffee.wizards.source"/> + <plugin id="org.eclipse.emfforms.common"/> + <plugin id="org.eclipse.emfforms.common.source"/> + <plugin id="org.eclipse.emfforms.common.validation"/> + <plugin id="org.eclipse.emfforms.common.validation.source"/> + <plugin id="org.eclipse.emfforms.core.bazaar"/> + <plugin id="org.eclipse.emfforms.core.bazaar.source"/> + <plugin id="org.eclipse.emfforms.core.services"/> + <plugin id="org.eclipse.emfforms.core.services.databinding.featurepath"/> + <plugin id="org.eclipse.emfforms.core.services.databinding.featurepath.source"/> + <plugin id="org.eclipse.emfforms.core.services.databinding.index"/> + <plugin id="org.eclipse.emfforms.core.services.databinding.mapping"/> + <plugin id="org.eclipse.emfforms.core.services.domainexpander.default"/> + <plugin id="org.eclipse.emfforms.core.services.domainexpander.default.source"/> + <plugin id="org.eclipse.emfforms.core.services.domainexpander.index"/> + <plugin id="org.eclipse.emfforms.core.services.domainexpander.mapping"/> + <plugin id="org.eclipse.emfforms.core.services.domainexpander.table"/> + <plugin id="org.eclipse.emfforms.core.services.domainexpander.table.source"/> + <plugin id="org.eclipse.emfforms.core.services.editsupport"/> + <plugin id="org.eclipse.emfforms.core.services.editsupport.source"/> + <plugin id="org.eclipse.emfforms.core.services.emf"/> + <plugin id="org.eclipse.emfforms.core.services.emf.source"/> + <plugin id="org.eclipse.emfforms.core.services.emfspecificservice"/> + <plugin id="org.eclipse.emfforms.core.services.emfspecificservice.source"/> + <plugin id="org.eclipse.emfforms.core.services.legacy"/> + <plugin id="org.eclipse.emfforms.core.services.legacy.source"/> + <plugin id="org.eclipse.emfforms.core.services.locale.default"/> + <plugin id="org.eclipse.emfforms.core.services.locale.default.source"/> + <plugin id="org.eclipse.emfforms.core.services.mappingprovider.default"/> + <plugin id="org.eclipse.emfforms.core.services.mappingprovider.default.source"/> + <plugin id="org.eclipse.emfforms.core.services.mappingprovider.table"/> + <plugin id="org.eclipse.emfforms.core.services.mappingprovider.table.panel"/> + <plugin id="org.eclipse.emfforms.core.services.mappingprovider.table.panel.source"/> + <plugin id="org.eclipse.emfforms.core.services.mappingprovider.table.source"/> + <plugin id="org.eclipse.emfforms.core.services.segments"/> + <plugin id="org.eclipse.emfforms.core.services.segments.featurepath"/> + <plugin id="org.eclipse.emfforms.core.services.segments.featurepath.source"/> + <plugin id="org.eclipse.emfforms.core.services.segments.index"/> + <plugin id="org.eclipse.emfforms.core.services.segments.mapping"/> + <plugin id="org.eclipse.emfforms.core.services.segments.multi"/> + <plugin id="org.eclipse.emfforms.core.services.segments.multi.source"/> + <plugin id="org.eclipse.emfforms.core.services.segments.source"/> + <plugin id="org.eclipse.emfforms.core.services.source"/> + <plugin id="org.eclipse.emfforms.core.services.structuralchange"/> + <plugin id="org.eclipse.emfforms.core.services.structuralchange.default"/> + <plugin id="org.eclipse.emfforms.core.services.structuralchange.default.source"/> + <plugin id="org.eclipse.emfforms.core.services.structuralchange.index"/> + <plugin id="org.eclipse.emfforms.core.services.structuralchange.mapping"/> + <plugin id="org.eclipse.emfforms.core.services.structuralchange.source"/> + <plugin id="org.eclipse.emfforms.core.services.structuralchange.table"/> + <plugin id="org.eclipse.emfforms.core.services.structuralchange.table.source"/> + <plugin id="org.eclipse.emfforms.editor"/> + <plugin id="org.eclipse.emfforms.editor.ecore"/> + <plugin id="org.eclipse.emfforms.editor.ecore.source"/> + <plugin id="org.eclipse.emfforms.editor.genmodel"/> + <plugin id="org.eclipse.emfforms.editor.genmodel.source"/> + <plugin id="org.eclipse.emfforms.editor.source"/> + <plugin id="org.eclipse.emfforms.example.common.wizards"/> + <plugin id="org.eclipse.emfforms.example.common.wizards.source"/> + <plugin id="org.eclipse.emfforms.ide.builder"/> + <plugin id="org.eclipse.emfforms.ide.builder.source"/> + <plugin id="org.eclipse.emfforms.ide.preferences"/> + <plugin id="org.eclipse.emfforms.ide.preferences.source"/> + <plugin id="org.eclipse.emfforms.ide.view.indexsegment"/> + <plugin id="org.eclipse.emfforms.ide.view.indexsegment.source"/> + <plugin id="org.eclipse.emfforms.ide.view.mappingsegment"/> + <plugin id="org.eclipse.emfforms.ide.view.mappingsegment.source"/> + <plugin id="org.eclipse.emfforms.ide.view.multisegment"/> + <plugin id="org.eclipse.emfforms.ide.view.multisegment.source"/> + <plugin id="org.eclipse.emfforms.ide.view.segments"/> + <plugin id="org.eclipse.emfforms.ide.view.segments.source"/> + <plugin id="org.eclipse.emfforms.ide.viewtemplate.builder"/> + <plugin id="org.eclipse.emfforms.ide.viewtemplate.builder.source"/> + <plugin id="org.eclipse.emfforms.localization"/> + <plugin id="org.eclipse.emfforms.localization.source"/> + <plugin id="org.eclipse.emfforms.setup.base"/> + <plugin id="org.eclipse.emfforms.swt.control.multiattribute"/> + <plugin id="org.eclipse.emfforms.swt.control.multiattribute.source"/> + <plugin id="org.eclipse.emfforms.swt.core"/> + <plugin id="org.eclipse.emfforms.swt.core.di"/> + <plugin id="org.eclipse.emfforms.swt.core.di.extension"/> + <plugin id="org.eclipse.emfforms.swt.core.di.extension.source"/> + <plugin id="org.eclipse.emfforms.swt.core.di.source"/> + <plugin id="org.eclipse.emfforms.swt.core.plugin"/> + <plugin id="org.eclipse.emfforms.swt.core.plugin.source"/> + <plugin id="org.eclipse.emfforms.swt.core.source"/> + <plugin id="org.eclipse.emfforms.swt.reference.table"/> + <plugin id="org.eclipse.emfforms.swt.reference.table.source"/> + <plugin id="org.eclipse.emfforms.swt.table"/> + <plugin id="org.eclipse.emfforms.swt.table.source"/> + <plugin id="org.eclipse.emfforms.swt.treemasterdetail"/> + <plugin id="org.eclipse.emfforms.swt.treemasterdetail.decorator.validation.default"/> + <plugin id="org.eclipse.emfforms.swt.treemasterdetail.decorator.validation.default.source"/> + <plugin id="org.eclipse.emfforms.swt.treemasterdetail.source"/> + <plugin id="org.eclipse.emfforms.view.annotation.model"/> + <plugin id="org.eclipse.emfforms.view.annotation.model.edit"/> + <plugin id="org.eclipse.emfforms.view.annotation.model.edit.source"/> + <plugin id="org.eclipse.emfforms.view.annotation.model.source"/> + <plugin id="org.eclipse.emfforms.view.indexsegment.model"/> + <plugin id="org.eclipse.emfforms.view.mappingsegment.model"/> + <plugin id="org.eclipse.emfforms.view.model.localization"/> + <plugin id="org.eclipse.emfforms.view.model.localization.source"/> + <plugin id="org.eclipse.emfforms.view.multisegment.model"/> + <plugin id="org.eclipse.emfforms.view.multisegment.model.edit"/> + <plugin id="org.eclipse.emfforms.view.multisegment.model.edit.source"/> + <plugin id="org.eclipse.emfforms.view.multisegment.model.source"/> + <plugin id="org.eclipse.epp.mpc.core"/> + <plugin id="org.eclipse.epp.mpc.help.ui"/> + <plugin id="org.eclipse.epp.mpc.ui"/> + <plugin id="org.eclipse.epp.mpc.ui.css"/> + <plugin id="org.eclipse.epp.package.common"/> + <plugin id="org.eclipse.epp.package.modeling"/> + <plugin id="org.eclipse.epsilon.common"/> + <plugin id="org.eclipse.epsilon.common.dt"/> + <plugin id="org.eclipse.epsilon.common.dt.examples"/> + <plugin id="org.eclipse.epsilon.dt.epackageregistryexplorer"/> + <plugin id="org.eclipse.epsilon.dt.exeed"/> + <plugin id="org.eclipse.epsilon.ecl.dt"/> + <plugin id="org.eclipse.epsilon.ecl.engine"/> + <plugin id="org.eclipse.epsilon.egl.dt"/> + <plugin id="org.eclipse.epsilon.egl.dt.traceability.editor"/> + <plugin id="org.eclipse.epsilon.egl.dt.traceability.fine.emf"/> + <plugin id="org.eclipse.epsilon.egl.engine"/> + <plugin id="org.eclipse.epsilon.egl.traceability.fine"/> + <plugin id="org.eclipse.epsilon.emc.bibtex"/> + <plugin id="org.eclipse.epsilon.emc.bibtex.dt"/> + <plugin id="org.eclipse.epsilon.emc.composite"/> + <plugin id="org.eclipse.epsilon.emc.emf"/> + <plugin id="org.eclipse.epsilon.emc.emf.decorator"/> + <plugin id="org.eclipse.epsilon.emc.emf.decorator.dt"/> + <plugin id="org.eclipse.epsilon.emc.emf.dt"/> + <plugin id="org.eclipse.epsilon.emc.emf.virtual"/> + <plugin id="org.eclipse.epsilon.emc.graphml"/> + <plugin id="org.eclipse.epsilon.emc.graphml.dt"/> + <plugin id="org.eclipse.epsilon.emc.html"/> + <plugin id="org.eclipse.epsilon.emc.html.dt"/> + <plugin id="org.eclipse.epsilon.emc.muddle"/> + <plugin id="org.eclipse.epsilon.emc.plainxml"/> + <plugin id="org.eclipse.epsilon.emc.plainxml.dt"/> + <plugin id="org.eclipse.epsilon.emc.uml"/> + <plugin id="org.eclipse.epsilon.emc.uml.dt"/> + <plugin id="org.eclipse.epsilon.emf.dt"/> + <plugin id="org.eclipse.epsilon.emg.dt"/> + <plugin id="org.eclipse.epsilon.emg.engine"/> + <plugin id="org.eclipse.epsilon.eml.dt"/> + <plugin id="org.eclipse.epsilon.eml.engine"/> + <plugin id="org.eclipse.epsilon.eol.dt"/> + <plugin id="org.eclipse.epsilon.eol.dt.interpreter"/> + <plugin id="org.eclipse.epsilon.eol.engine"/> + <plugin id="org.eclipse.epsilon.eol.tools"/> + <plugin id="org.eclipse.epsilon.epl.dt"/> + <plugin id="org.eclipse.epsilon.epl.engine"/> + <plugin id="org.eclipse.epsilon.erl.dt"/> + <plugin id="org.eclipse.epsilon.erl.engine"/> + <plugin id="org.eclipse.epsilon.etl.dt"/> + <plugin id="org.eclipse.epsilon.etl.engine"/> + <plugin id="org.eclipse.epsilon.eugenia"/> + <plugin id="org.eclipse.epsilon.eugenia.runtime.dependencies"/> + <plugin id="org.eclipse.epsilon.eunit.cmp.emf"/> + <plugin id="org.eclipse.epsilon.eunit.dt"/> + <plugin id="org.eclipse.epsilon.eunit.dt.diff.emf"/> + <plugin id="org.eclipse.epsilon.eunit.dt.diff.files"/> + <plugin id="org.eclipse.epsilon.eunit.engine"/> + <plugin id="org.eclipse.epsilon.eunit.junit"/> + <plugin id="org.eclipse.epsilon.eunit.junit.dt"/> + <plugin id="org.eclipse.epsilon.evl.dt"/> + <plugin id="org.eclipse.epsilon.evl.emf.validation"/> + <plugin id="org.eclipse.epsilon.evl.engine"/> + <plugin id="org.eclipse.epsilon.ewl.dt"/> + <plugin id="org.eclipse.epsilon.ewl.emf"/> + <plugin id="org.eclipse.epsilon.ewl.engine"/> + <plugin id="org.eclipse.epsilon.ewl.gmf"/> + <plugin id="org.eclipse.epsilon.flexmi"/> + <plugin id="org.eclipse.epsilon.flexmi.dt"/> + <plugin id="org.eclipse.epsilon.flock.dt"/> + <plugin id="org.eclipse.epsilon.flock.dt.emf"/> + <plugin id="org.eclipse.epsilon.flock.engine"/> + <plugin id="org.eclipse.epsilon.help"/> + <plugin id="org.eclipse.epsilon.perspective"/> + <plugin id="org.eclipse.epsilon.pinset.dt"/> + <plugin id="org.eclipse.epsilon.pinset.engine"/> + <plugin id="org.eclipse.epsilon.profiling"/> + <plugin id="org.eclipse.epsilon.profiling.dt"/> + <plugin id="org.eclipse.epsilon.workflow"/> + <plugin id="org.eclipse.epsilon.workflow.emf"/> + <plugin id="org.eclipse.epsilon.workflow.eugenia"/> + <plugin id="org.eclipse.equinox.app"/> + <plugin id="org.eclipse.equinox.app.source"/> + <plugin id="org.eclipse.equinox.bidi"/> + <plugin id="org.eclipse.equinox.bidi.source"/> + <plugin id="org.eclipse.equinox.common"/> + <plugin id="org.eclipse.equinox.common.source"/> + <plugin id="org.eclipse.equinox.concurrent"/> + <plugin id="org.eclipse.equinox.concurrent.source"/> + <plugin id="org.eclipse.equinox.console"/> + <plugin id="org.eclipse.equinox.console.source"/> + <plugin id="org.eclipse.equinox.event"/> + <plugin id="org.eclipse.equinox.event.source"/> + <plugin id="org.eclipse.equinox.frameworkadmin"/> + <plugin id="org.eclipse.equinox.frameworkadmin.equinox"/> + <plugin id="org.eclipse.equinox.frameworkadmin.equinox.source"/> + <plugin id="org.eclipse.equinox.frameworkadmin.source"/> + <plugin id="org.eclipse.equinox.http.jetty"/> + <plugin id="org.eclipse.equinox.http.jetty.source"/> + <plugin id="org.eclipse.equinox.http.registry"/> + <plugin id="org.eclipse.equinox.http.registry.source"/> + <plugin id="org.eclipse.equinox.http.servlet"/> + <plugin id="org.eclipse.equinox.http.servlet.source"/> + <plugin id="org.eclipse.equinox.jsp.jasper"/> + <plugin id="org.eclipse.equinox.jsp.jasper.registry"/> + <plugin id="org.eclipse.equinox.jsp.jasper.registry.source"/> + <plugin id="org.eclipse.equinox.jsp.jasper.source"/> + <plugin id="org.eclipse.equinox.launcher"/> + <plugin id="org.eclipse.equinox.launcher.cocoa.macosx.x86_64" fragment="true"/> + <plugin id="org.eclipse.equinox.launcher.source"/> + <plugin id="org.eclipse.equinox.p2.artifact.repository"/> + <plugin id="org.eclipse.equinox.p2.artifact.repository.source"/> + <plugin id="org.eclipse.equinox.p2.console"/> + <plugin id="org.eclipse.equinox.p2.console.source"/> + <plugin id="org.eclipse.equinox.p2.core"/> + <plugin id="org.eclipse.equinox.p2.core.source"/> + <plugin id="org.eclipse.equinox.p2.director"/> + <plugin id="org.eclipse.equinox.p2.director.app"/> + <plugin id="org.eclipse.equinox.p2.director.app.source"/> + <plugin id="org.eclipse.equinox.p2.director.source"/> + <plugin id="org.eclipse.equinox.p2.directorywatcher"/> + <plugin id="org.eclipse.equinox.p2.directorywatcher.source"/> + <plugin id="org.eclipse.equinox.p2.discovery"/> + <plugin id="org.eclipse.equinox.p2.discovery.compatibility"/> + <plugin id="org.eclipse.equinox.p2.engine"/> + <plugin id="org.eclipse.equinox.p2.engine.source"/> + <plugin id="org.eclipse.equinox.p2.extensionlocation"/> + <plugin id="org.eclipse.equinox.p2.extensionlocation.source"/> + <plugin id="org.eclipse.equinox.p2.garbagecollector"/> + <plugin id="org.eclipse.equinox.p2.garbagecollector.source"/> + <plugin id="org.eclipse.equinox.p2.jarprocessor"/> + <plugin id="org.eclipse.equinox.p2.jarprocessor.source"/> + <plugin id="org.eclipse.equinox.p2.metadata"/> + <plugin id="org.eclipse.equinox.p2.metadata.repository"/> + <plugin id="org.eclipse.equinox.p2.metadata.repository.source"/> + <plugin id="org.eclipse.equinox.p2.metadata.source"/> + <plugin id="org.eclipse.equinox.p2.operations"/> + <plugin id="org.eclipse.equinox.p2.operations.source"/> + <plugin id="org.eclipse.equinox.p2.publisher"/> + <plugin id="org.eclipse.equinox.p2.publisher.eclipse"/> + <plugin id="org.eclipse.equinox.p2.publisher.eclipse.source"/> + <plugin id="org.eclipse.equinox.p2.publisher.source"/> + <plugin id="org.eclipse.equinox.p2.reconciler.dropins"/> + <plugin id="org.eclipse.equinox.p2.reconciler.dropins.source"/> + <plugin id="org.eclipse.equinox.p2.repository"/> + <plugin id="org.eclipse.equinox.p2.repository.source"/> + <plugin id="org.eclipse.equinox.p2.repository.tools"/> + <plugin id="org.eclipse.equinox.p2.repository.tools.source"/> + <plugin id="org.eclipse.equinox.p2.touchpoint.eclipse"/> + <plugin id="org.eclipse.equinox.p2.touchpoint.eclipse.source"/> + <plugin id="org.eclipse.equinox.p2.touchpoint.natives"/> + <plugin id="org.eclipse.equinox.p2.touchpoint.natives.source"/> + <plugin id="org.eclipse.equinox.p2.transport.ecf"/> + <plugin id="org.eclipse.equinox.p2.transport.ecf.source"/> + <plugin id="org.eclipse.equinox.p2.ui"/> + <plugin id="org.eclipse.equinox.p2.ui.discovery"/> + <plugin id="org.eclipse.equinox.p2.ui.importexport"/> + <plugin id="org.eclipse.equinox.p2.ui.importexport.source"/> + <plugin id="org.eclipse.equinox.p2.ui.sdk"/> + <plugin id="org.eclipse.equinox.p2.ui.sdk.scheduler"/> + <plugin id="org.eclipse.equinox.p2.ui.sdk.scheduler.source"/> + <plugin id="org.eclipse.equinox.p2.ui.sdk.source"/> + <plugin id="org.eclipse.equinox.p2.ui.source"/> + <plugin id="org.eclipse.equinox.p2.updatechecker"/> + <plugin id="org.eclipse.equinox.p2.updatechecker.source"/> + <plugin id="org.eclipse.equinox.p2.updatesite"/> + <plugin id="org.eclipse.equinox.p2.updatesite.source"/> + <plugin id="org.eclipse.equinox.preferences"/> + <plugin id="org.eclipse.equinox.preferences.source"/> + <plugin id="org.eclipse.equinox.registry"/> + <plugin id="org.eclipse.equinox.registry.source"/> + <plugin id="org.eclipse.equinox.security"/> + <plugin id="org.eclipse.equinox.security.macosx" fragment="true"/> + <plugin id="org.eclipse.equinox.security.macosx.source"/> + <plugin id="org.eclipse.equinox.security.source"/> + <plugin id="org.eclipse.equinox.security.ui"/> + <plugin id="org.eclipse.equinox.security.ui.source"/> + <plugin id="org.eclipse.equinox.simpleconfigurator"/> + <plugin id="org.eclipse.equinox.simpleconfigurator.manipulator"/> + <plugin id="org.eclipse.equinox.simpleconfigurator.manipulator.source"/> + <plugin id="org.eclipse.equinox.simpleconfigurator.source"/> + <plugin id="org.eclipse.gef"/> + <plugin id="org.eclipse.gef.doc.isv"/> + <plugin id="org.eclipse.gef.examples.ui.pde"/> + <plugin id="org.eclipse.gef.source"/> + <plugin id="org.eclipse.gmf"/> + <plugin id="org.eclipse.gmf.bridge"/> + <plugin id="org.eclipse.gmf.bridge.ui"/> + <plugin id="org.eclipse.gmf.codegen"/> + <plugin id="org.eclipse.gmf.codegen.xtend"/> + <plugin id="org.eclipse.gmf.common"/> + <plugin id="org.eclipse.gmf.examples.runtime"/> + <plugin id="org.eclipse.gmf.examples.runtime.diagram.geoshapes"/> + <plugin id="org.eclipse.gmf.examples.runtime.diagram.logic"/> + <plugin id="org.eclipse.gmf.examples.runtime.diagram.logic.model"/> + <plugin id="org.eclipse.gmf.examples.runtime.diagram.logic.model.edit"/> + <plugin id="org.eclipse.gmf.examples.runtime.diagram.logic.model.editor"/> + <plugin id="org.eclipse.gmf.examples.runtime.ui.pde"/> + <plugin id="org.eclipse.gmf.graphdef"/> + <plugin id="org.eclipse.gmf.graphdef.codegen"/> + <plugin id="org.eclipse.gmf.graphdef.edit"/> + <plugin id="org.eclipse.gmf.map"/> + <plugin id="org.eclipse.gmf.map.edit"/> + <plugin id="org.eclipse.gmf.runtime.common.core"/> + <plugin id="org.eclipse.gmf.runtime.common.core.source"/> + <plugin id="org.eclipse.gmf.runtime.common.ui"/> + <plugin id="org.eclipse.gmf.runtime.common.ui.action"/> + <plugin id="org.eclipse.gmf.runtime.common.ui.action.ide"/> + <plugin id="org.eclipse.gmf.runtime.common.ui.action.ide.source"/> + <plugin id="org.eclipse.gmf.runtime.common.ui.action.source"/> + <plugin id="org.eclipse.gmf.runtime.common.ui.printing"/> + <plugin id="org.eclipse.gmf.runtime.common.ui.printing.source"/> + <plugin id="org.eclipse.gmf.runtime.common.ui.printing.win32" fragment="true"/> + <plugin id="org.eclipse.gmf.runtime.common.ui.printing.win32.source"/> + <plugin id="org.eclipse.gmf.runtime.common.ui.services"/> + <plugin id="org.eclipse.gmf.runtime.common.ui.services.action"/> + <plugin id="org.eclipse.gmf.runtime.common.ui.services.action.source"/> + <plugin id="org.eclipse.gmf.runtime.common.ui.services.dnd"/> + <plugin id="org.eclipse.gmf.runtime.common.ui.services.dnd.ide"/> + <plugin id="org.eclipse.gmf.runtime.common.ui.services.dnd.ide.source"/> + <plugin id="org.eclipse.gmf.runtime.common.ui.services.dnd.source"/> + <plugin id="org.eclipse.gmf.runtime.common.ui.services.properties"/> + <plugin id="org.eclipse.gmf.runtime.common.ui.services.properties.source"/> + <plugin id="org.eclipse.gmf.runtime.common.ui.services.source"/> + <plugin id="org.eclipse.gmf.runtime.common.ui.source"/> + <plugin id="org.eclipse.gmf.runtime.diagram.core"/> + <plugin id="org.eclipse.gmf.runtime.diagram.core.source"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui.actions"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui.actions.source"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui.dnd"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui.dnd.source"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui.geoshapes"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui.geoshapes.source"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui.printing"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui.printing.render"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui.printing.render.source"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui.printing.source"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui.properties"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui.properties.source"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui.providers"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui.providers.ide"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui.providers.ide.source"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui.providers.source"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui.render"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui.render.source"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui.resources.editor"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide.source"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui.resources.editor.source"/> + <plugin id="org.eclipse.gmf.runtime.diagram.ui.source"/> + <plugin id="org.eclipse.gmf.runtime.draw2d.ui"/> + <plugin id="org.eclipse.gmf.runtime.draw2d.ui.render"/> + <plugin id="org.eclipse.gmf.runtime.draw2d.ui.render.awt"/> + <plugin id="org.eclipse.gmf.runtime.draw2d.ui.render.awt.source"/> + <plugin id="org.eclipse.gmf.runtime.draw2d.ui.render.source"/> + <plugin id="org.eclipse.gmf.runtime.draw2d.ui.source"/> + <plugin id="org.eclipse.gmf.runtime.emf.clipboard.core"/> + <plugin id="org.eclipse.gmf.runtime.emf.clipboard.core.source"/> + <plugin id="org.eclipse.gmf.runtime.emf.commands.core"/> + <plugin id="org.eclipse.gmf.runtime.emf.commands.core.source"/> + <plugin id="org.eclipse.gmf.runtime.emf.core"/> + <plugin id="org.eclipse.gmf.runtime.emf.core.source"/> + <plugin id="org.eclipse.gmf.runtime.emf.type.core"/> + <plugin id="org.eclipse.gmf.runtime.emf.type.core.source"/> + <plugin id="org.eclipse.gmf.runtime.emf.type.ui"/> + <plugin id="org.eclipse.gmf.runtime.emf.type.ui.source"/> + <plugin id="org.eclipse.gmf.runtime.emf.ui"/> + <plugin id="org.eclipse.gmf.runtime.emf.ui.properties"/> + <plugin id="org.eclipse.gmf.runtime.emf.ui.properties.source"/> + <plugin id="org.eclipse.gmf.runtime.emf.ui.source"/> + <plugin id="org.eclipse.gmf.runtime.gef.ui"/> + <plugin id="org.eclipse.gmf.runtime.gef.ui.source"/> + <plugin id="org.eclipse.gmf.runtime.notation"/> + <plugin id="org.eclipse.gmf.runtime.notation.edit"/> + <plugin id="org.eclipse.gmf.runtime.notation.edit.source"/> + <plugin id="org.eclipse.gmf.runtime.notation.providers"/> + <plugin id="org.eclipse.gmf.runtime.notation.providers.source"/> + <plugin id="org.eclipse.gmf.runtime.notation.sdk"/> + <plugin id="org.eclipse.gmf.runtime.notation.source"/> + <plugin id="org.eclipse.gmf.runtime.sdk"/> + <plugin id="org.eclipse.gmf.sdk"/> + <plugin id="org.eclipse.gmf.tooldef"/> + <plugin id="org.eclipse.gmf.tooldef.edit"/> + <plugin id="org.eclipse.gmf.tooling"/> + <plugin id="org.eclipse.gmf.tooling.runtime"/> + <plugin id="org.eclipse.gmf.validate"/> + <plugin id="org.eclipse.gmf.xpand"/> + <plugin id="org.eclipse.gmf.xpand.qvtlibrary"/> + <plugin id="org.eclipse.gymnast.runtime.core"/> + <plugin id="org.eclipse.gymnast.runtime.ui"/> + <plugin id="org.eclipse.help"/> + <plugin id="org.eclipse.help.base"/> + <plugin id="org.eclipse.help.base.source"/> + <plugin id="org.eclipse.help.source"/> + <plugin id="org.eclipse.help.ui"/> + <plugin id="org.eclipse.help.ui.source"/> + <plugin id="org.eclipse.help.webapp"/> + <plugin id="org.eclipse.help.webapp.source"/> + <plugin id="org.eclipse.jdt"/> + <plugin id="org.eclipse.jdt.annotation"/> + <plugin id="org.eclipse.jdt.annotation.source"/> + <plugin id="org.eclipse.jdt.apt.core"/> + <plugin id="org.eclipse.jdt.apt.core.source"/> + <plugin id="org.eclipse.jdt.apt.pluggable.core"/> + <plugin id="org.eclipse.jdt.apt.pluggable.core.source"/> + <plugin id="org.eclipse.jdt.apt.ui"/> + <plugin id="org.eclipse.jdt.apt.ui.source"/> + <plugin id="org.eclipse.jdt.compiler.apt" fragment="true"/> + <plugin id="org.eclipse.jdt.compiler.apt.source"/> + <plugin id="org.eclipse.jdt.compiler.tool" fragment="true"/> + <plugin id="org.eclipse.jdt.compiler.tool.source"/> + <plugin id="org.eclipse.jdt.core"/> + <plugin id="org.eclipse.jdt.core.formatterapp"/> + <plugin id="org.eclipse.jdt.core.formatterapp.source"/> + <plugin id="org.eclipse.jdt.core.manipulation"/> + <plugin id="org.eclipse.jdt.core.manipulation.source"/> + <plugin id="org.eclipse.jdt.core.source"/> + <plugin id="org.eclipse.jdt.debug"/> + <plugin id="org.eclipse.jdt.debug.source"/> + <plugin id="org.eclipse.jdt.debug.ui"/> + <plugin id="org.eclipse.jdt.debug.ui.source"/> + <plugin id="org.eclipse.jdt.doc.isv"/> + <plugin id="org.eclipse.jdt.doc.user"/> + <plugin id="org.eclipse.jdt.junit"/> + <plugin id="org.eclipse.jdt.junit.core"/> + <plugin id="org.eclipse.jdt.junit.core.source"/> + <plugin id="org.eclipse.jdt.junit.runtime"/> + <plugin id="org.eclipse.jdt.junit.runtime.source"/> + <plugin id="org.eclipse.jdt.junit.source"/> + <plugin id="org.eclipse.jdt.junit4.runtime"/> + <plugin id="org.eclipse.jdt.junit4.runtime.source"/> + <plugin id="org.eclipse.jdt.junit5.runtime"/> + <plugin id="org.eclipse.jdt.junit5.runtime.source"/> + <plugin id="org.eclipse.jdt.launching"/> + <plugin id="org.eclipse.jdt.launching.macosx"/> + <plugin id="org.eclipse.jdt.launching.macosx.source"/> + <plugin id="org.eclipse.jdt.launching.source"/> + <plugin id="org.eclipse.jdt.launching.ui.macosx"/> + <plugin id="org.eclipse.jdt.launching.ui.macosx.source"/> + <plugin id="org.eclipse.jdt.ui"/> + <plugin id="org.eclipse.jdt.ui.source"/> + <plugin id="org.eclipse.jetty.http"/> + <plugin id="org.eclipse.jetty.http.source"/> + <plugin id="org.eclipse.jetty.io"/> + <plugin id="org.eclipse.jetty.io.source"/> + <plugin id="org.eclipse.jetty.security"/> + <plugin id="org.eclipse.jetty.security.source"/> + <plugin id="org.eclipse.jetty.server"/> + <plugin id="org.eclipse.jetty.server.source"/> + <plugin id="org.eclipse.jetty.servlet"/> + <plugin id="org.eclipse.jetty.servlet.source"/> + <plugin id="org.eclipse.jetty.util"/> + <plugin id="org.eclipse.jetty.util.ajax"/> + <plugin id="org.eclipse.jetty.util.ajax.source"/> + <plugin id="org.eclipse.jetty.util.source"/> + <plugin id="org.eclipse.jface"/> + <plugin id="org.eclipse.jface.databinding"/> + <plugin id="org.eclipse.jface.databinding.source"/> + <plugin id="org.eclipse.jface.notifications"/> + <plugin id="org.eclipse.jface.notifications.source"/> + <plugin id="org.eclipse.jface.source"/> + <plugin id="org.eclipse.jface.text"/> + <plugin id="org.eclipse.jface.text.source"/> + <plugin id="org.eclipse.jgit"/> + <plugin id="org.eclipse.jgit.archive"/> + <plugin id="org.eclipse.jgit.gpg.bc" fragment="true"/> + <plugin id="org.eclipse.jgit.http.apache"/> + <plugin id="org.eclipse.jgit.ssh.apache"/> + <plugin id="org.eclipse.jgit.ssh.apache.agent" fragment="true"/> + <plugin id="org.eclipse.jsch.core"/> + <plugin id="org.eclipse.jsch.core.source"/> + <plugin id="org.eclipse.jsch.ui"/> + <plugin id="org.eclipse.jsch.ui.source"/> + <plugin id="org.eclipse.lsp4j"/> + <plugin id="org.eclipse.lsp4j.generator"/> + <plugin id="org.eclipse.lsp4j.generator.source"/> + <plugin id="org.eclipse.lsp4j.jsonrpc"/> + <plugin id="org.eclipse.lsp4j.jsonrpc.source"/> + <plugin id="org.eclipse.lsp4j.source"/> + <plugin id="org.eclipse.ltk.core.refactoring"/> + <plugin id="org.eclipse.ltk.core.refactoring.source"/> + <plugin id="org.eclipse.ltk.ui.refactoring"/> + <plugin id="org.eclipse.ltk.ui.refactoring.source"/> + <plugin id="org.eclipse.m2m.qvt.oml"/> + <plugin id="org.eclipse.m2m.qvt.oml.common"/> + <plugin id="org.eclipse.m2m.qvt.oml.cst.parser"/> + <plugin id="org.eclipse.m2m.qvt.oml.ecore.imperativeocl"/> + <plugin id="org.eclipse.m2m.qvt.oml.emf.util"/> + <plugin id="org.eclipse.m2m.qvt.oml.project"/> + <plugin id="org.eclipse.m2m.qvt.oml.runtime"/> + <plugin id="org.eclipse.mylyn.wikitext"/> + <plugin id="org.eclipse.mylyn.wikitext.ant"/> + <plugin id="org.eclipse.mylyn.wikitext.asciidoc"/> + <plugin id="org.eclipse.mylyn.wikitext.asciidoc.ui"/> + <plugin id="org.eclipse.mylyn.wikitext.confluence"/> + <plugin id="org.eclipse.mylyn.wikitext.confluence.ui"/> + <plugin id="org.eclipse.mylyn.wikitext.help.ui"/> + <plugin id="org.eclipse.mylyn.wikitext.html"/> + <plugin id="org.eclipse.mylyn.wikitext.markdown"/> + <plugin id="org.eclipse.mylyn.wikitext.markdown.ui"/> + <plugin id="org.eclipse.mylyn.wikitext.mediawiki"/> + <plugin id="org.eclipse.mylyn.wikitext.mediawiki.ui"/> + <plugin id="org.eclipse.mylyn.wikitext.osgi"/> + <plugin id="org.eclipse.mylyn.wikitext.textile"/> + <plugin id="org.eclipse.mylyn.wikitext.textile.ui"/> + <plugin id="org.eclipse.mylyn.wikitext.tracwiki"/> + <plugin id="org.eclipse.mylyn.wikitext.tracwiki.ui"/> + <plugin id="org.eclipse.mylyn.wikitext.twiki"/> + <plugin id="org.eclipse.mylyn.wikitext.twiki.ui"/> + <plugin id="org.eclipse.mylyn.wikitext.ui"/> + <plugin id="org.eclipse.nebula.widgets.tablecombo"/> + <plugin id="org.eclipse.net4j"/> + <plugin id="org.eclipse.net4j.db"/> + <plugin id="org.eclipse.net4j.db.h2"/> + <plugin id="org.eclipse.net4j.db.jdbc"/> + <plugin id="org.eclipse.net4j.debug"/> + <plugin id="org.eclipse.net4j.examples.installer"/> + <plugin id="org.eclipse.net4j.jvm"/> + <plugin id="org.eclipse.net4j.tcp"/> + <plugin id="org.eclipse.net4j.ui"/> + <plugin id="org.eclipse.net4j.ui.shared"/> + <plugin id="org.eclipse.net4j.util"/> + <plugin id="org.eclipse.net4j.util.ui"/> + <plugin id="org.eclipse.ocl"/> + <plugin id="org.eclipse.ocl.common"/> + <plugin id="org.eclipse.ocl.common.ui"/> + <plugin id="org.eclipse.ocl.doc"/> + <plugin id="org.eclipse.ocl.ecore"/> + <plugin id="org.eclipse.ocl.ecore.edit"/> + <plugin id="org.eclipse.ocl.edit"/> + <plugin id="org.eclipse.ocl.ui"/> + <plugin id="org.eclipse.ocl.uml"/> + <plugin id="org.eclipse.ocl.uml.edit"/> + <plugin id="org.eclipse.ocl.uml.ui"/> + <plugin id="org.eclipse.oomph.base"/> + <plugin id="org.eclipse.oomph.base.edit"/> + <plugin id="org.eclipse.oomph.extractor.lib"/> + <plugin id="org.eclipse.oomph.jreinfo"/> + <plugin id="org.eclipse.oomph.jreinfo.ui"/> + <plugin id="org.eclipse.oomph.p2"/> + <plugin id="org.eclipse.oomph.p2.core"/> + <plugin id="org.eclipse.oomph.p2.doc"/> + <plugin id="org.eclipse.oomph.p2.edit"/> + <plugin id="org.eclipse.oomph.p2.ui"/> + <plugin id="org.eclipse.oomph.predicates"/> + <plugin id="org.eclipse.oomph.predicates.edit"/> + <plugin id="org.eclipse.oomph.preferences"/> + <plugin id="org.eclipse.oomph.resources"/> + <plugin id="org.eclipse.oomph.resources.edit"/> + <plugin id="org.eclipse.oomph.setup"/> + <plugin id="org.eclipse.oomph.setup.core"/> + <plugin id="org.eclipse.oomph.setup.doc"/> + <plugin id="org.eclipse.oomph.setup.edit"/> + <plugin id="org.eclipse.oomph.setup.editor"/> + <plugin id="org.eclipse.oomph.setup.p2"/> + <plugin id="org.eclipse.oomph.setup.p2.edit"/> + <plugin id="org.eclipse.oomph.setup.sync"/> + <plugin id="org.eclipse.oomph.setup.ui"/> + <plugin id="org.eclipse.oomph.setup.ui.questionnaire"/> + <plugin id="org.eclipse.oomph.ui"/> + <plugin id="org.eclipse.oomph.util"/> + <plugin id="org.eclipse.oomph.workingsets"/> + <plugin id="org.eclipse.oomph.workingsets.edit"/> + <plugin id="org.eclipse.oomph.workingsets.editor"/> + <plugin id="org.eclipse.osgi"/> + <plugin id="org.eclipse.osgi.compatibility.state" fragment="true"/> + <plugin id="org.eclipse.osgi.compatibility.state.source"/> + <plugin id="org.eclipse.osgi.services"/> + <plugin id="org.eclipse.osgi.services.source"/> + <plugin id="org.eclipse.osgi.source"/> + <plugin id="org.eclipse.osgi.util"/> + <plugin id="org.eclipse.osgi.util.source"/> + <plugin id="org.eclipse.paho.client.mqttv3"/> + <plugin id="org.eclipse.pde"/> + <plugin id="org.eclipse.pde.api.tools"/> + <plugin id="org.eclipse.pde.api.tools.annotations"/> + <plugin id="org.eclipse.pde.api.tools.annotations.source"/> + <plugin id="org.eclipse.pde.api.tools.source"/> + <plugin id="org.eclipse.pde.api.tools.ui"/> + <plugin id="org.eclipse.pde.api.tools.ui.source"/> + <plugin id="org.eclipse.pde.build"/> + <plugin id="org.eclipse.pde.build.source"/> + <plugin id="org.eclipse.pde.core"/> + <plugin id="org.eclipse.pde.core.source"/> + <plugin id="org.eclipse.pde.doc.user"/> + <plugin id="org.eclipse.pde.ds.annotations"/> + <plugin id="org.eclipse.pde.ds.annotations.source"/> + <plugin id="org.eclipse.pde.ds.core"/> + <plugin id="org.eclipse.pde.ds.core.source"/> + <plugin id="org.eclipse.pde.ds.lib"/> + <plugin id="org.eclipse.pde.ds.lib.source"/> + <plugin id="org.eclipse.pde.ds.ui"/> + <plugin id="org.eclipse.pde.ds.ui.source"/> + <plugin id="org.eclipse.pde.ds1_2.lib"/> + <plugin id="org.eclipse.pde.ds1_2.lib.source"/> + <plugin id="org.eclipse.pde.genericeditor.extension"/> + <plugin id="org.eclipse.pde.genericeditor.extension.source"/> + <plugin id="org.eclipse.pde.junit.runtime"/> + <plugin id="org.eclipse.pde.junit.runtime.source"/> + <plugin id="org.eclipse.pde.launching"/> + <plugin id="org.eclipse.pde.launching.source"/> + <plugin id="org.eclipse.pde.runtime"/> + <plugin id="org.eclipse.pde.runtime.source"/> + <plugin id="org.eclipse.pde.spy.core"/> + <plugin id="org.eclipse.pde.spy.core.source"/> + <plugin id="org.eclipse.pde.spy.css"/> + <plugin id="org.eclipse.pde.spy.css.source"/> + <plugin id="org.eclipse.pde.spy.model"/> + <plugin id="org.eclipse.pde.spy.model.source"/> + <plugin id="org.eclipse.pde.spy.preferences"/> + <plugin id="org.eclipse.pde.spy.preferences.source"/> + <plugin id="org.eclipse.pde.ua.core"/> + <plugin id="org.eclipse.pde.ua.core.source"/> + <plugin id="org.eclipse.pde.ua.ui"/> + <plugin id="org.eclipse.pde.ua.ui.source"/> + <plugin id="org.eclipse.pde.ui"/> + <plugin id="org.eclipse.pde.ui.source"/> + <plugin id="org.eclipse.pde.ui.templates"/> + <plugin id="org.eclipse.pde.ui.templates.source"/> + <plugin id="org.eclipse.platform"/> + <plugin id="org.eclipse.platform.doc.isv"/> + <plugin id="org.eclipse.platform.doc.user"/> + <plugin id="org.eclipse.platform.source"/> + <plugin id="org.eclipse.rcp"/> + <plugin id="org.eclipse.sdk"/> + <plugin id="org.eclipse.search"/> + <plugin id="org.eclipse.search.source"/> + <plugin id="org.eclipse.sirius"/> + <plugin id="org.eclipse.sirius.common"/> + <plugin id="org.eclipse.sirius.common.acceleo.aql"/> + <plugin id="org.eclipse.sirius.common.acceleo.aql.ide"/> + <plugin id="org.eclipse.sirius.common.acceleo.mtl"/> + <plugin id="org.eclipse.sirius.common.acceleo.mtl.ide"/> + <plugin id="org.eclipse.sirius.common.interpreter"/> + <plugin id="org.eclipse.sirius.common.ui"/> + <plugin id="org.eclipse.sirius.common.ui.ext"/> + <plugin id="org.eclipse.sirius.diagram"/> + <plugin id="org.eclipse.sirius.diagram.formatdata"/> + <plugin id="org.eclipse.sirius.diagram.sequence"/> + <plugin id="org.eclipse.sirius.diagram.sequence.edit"/> + <plugin id="org.eclipse.sirius.diagram.sequence.ui"/> + <plugin id="org.eclipse.sirius.diagram.ui"/> + <plugin id="org.eclipse.sirius.diagram.ui.ext"/> + <plugin id="org.eclipse.sirius.doc"/> + <plugin id="org.eclipse.sirius.ecore.extender"/> + <plugin id="org.eclipse.sirius.editor"/> + <plugin id="org.eclipse.sirius.editor.diagram"/> + <plugin id="org.eclipse.sirius.editor.properties"/> + <plugin id="org.eclipse.sirius.editor.properties.ext.widgets.reference"/> + <plugin id="org.eclipse.sirius.editor.sequence"/> + <plugin id="org.eclipse.sirius.editor.table"/> + <plugin id="org.eclipse.sirius.editor.tree"/> + <plugin id="org.eclipse.sirius.ext.base"/> + <plugin id="org.eclipse.sirius.ext.draw2d"/> + <plugin id="org.eclipse.sirius.ext.e3"/> + <plugin id="org.eclipse.sirius.ext.e3.ui"/> + <plugin id="org.eclipse.sirius.ext.emf"/> + <plugin id="org.eclipse.sirius.ext.emf.edit"/> + <plugin id="org.eclipse.sirius.ext.emf.tx"/> + <plugin id="org.eclipse.sirius.ext.emf.ui"/> + <plugin id="org.eclipse.sirius.ext.gef"/> + <plugin id="org.eclipse.sirius.ext.gmf.notation"/> + <plugin id="org.eclipse.sirius.ext.gmf.runtime"/> + <plugin id="org.eclipse.sirius.ext.ide"/> + <plugin id="org.eclipse.sirius.ext.jface"/> + <plugin id="org.eclipse.sirius.ext.swt"/> + <plugin id="org.eclipse.sirius.interpreter"/> + <plugin id="org.eclipse.sirius.properties"/> + <plugin id="org.eclipse.sirius.properties.core"/> + <plugin id="org.eclipse.sirius.properties.defaultrules"/> + <plugin id="org.eclipse.sirius.properties.edit"/> + <plugin id="org.eclipse.sirius.properties.ext.widgets.reference"/> + <plugin id="org.eclipse.sirius.properties.ext.widgets.reference.edit"/> + <plugin id="org.eclipse.sirius.synchronizer"/> + <plugin id="org.eclipse.sirius.table"/> + <plugin id="org.eclipse.sirius.table.ui"/> + <plugin id="org.eclipse.sirius.table.ui.ext"/> + <plugin id="org.eclipse.sirius.tree"/> + <plugin id="org.eclipse.sirius.tree.ui"/> + <plugin id="org.eclipse.sirius.tree.ui.ext"/> + <plugin id="org.eclipse.sirius.ui"/> + <plugin id="org.eclipse.sirius.ui.editor"/> + <plugin id="org.eclipse.sirius.ui.ext"/> + <plugin id="org.eclipse.sirius.ui.properties"/> + <plugin id="org.eclipse.sirius.ui.properties.ext.widgets.reference"/> + <plugin id="org.eclipse.swt"/> + <plugin id="org.eclipse.swt.cocoa.macosx.x86_64" fragment="true"/> + <plugin id="org.eclipse.swt.cocoa.macosx.x86_64.source"/> + <plugin id="org.eclipse.team.core"/> + <plugin id="org.eclipse.team.core.source"/> + <plugin id="org.eclipse.team.genericeditor.diff.extension"/> + <plugin id="org.eclipse.team.genericeditor.diff.extension.source"/> + <plugin id="org.eclipse.team.ui"/> + <plugin id="org.eclipse.team.ui.source"/> + <plugin id="org.eclipse.text"/> + <plugin id="org.eclipse.text.quicksearch"/> + <plugin id="org.eclipse.text.quicksearch.source"/> + <plugin id="org.eclipse.text.source"/> + <plugin id="org.eclipse.tips.core"/> + <plugin id="org.eclipse.tips.ide"/> + <plugin id="org.eclipse.tips.json"/> + <plugin id="org.eclipse.tips.ui"/> + <plugin id="org.eclipse.tools.layout.spy"/> + <plugin id="org.eclipse.tools.layout.spy.source"/> + <plugin id="org.eclipse.ui"/> + <plugin id="org.eclipse.ui.browser"/> + <plugin id="org.eclipse.ui.browser.source"/> + <plugin id="org.eclipse.ui.cheatsheets"/> + <plugin id="org.eclipse.ui.cheatsheets.source"/> + <plugin id="org.eclipse.ui.cocoa" fragment="true"/> + <plugin id="org.eclipse.ui.cocoa.source"/> + <plugin id="org.eclipse.ui.console"/> + <plugin id="org.eclipse.ui.console.source"/> + <plugin id="org.eclipse.ui.editors"/> + <plugin id="org.eclipse.ui.editors.source"/> + <plugin id="org.eclipse.ui.externaltools"/> + <plugin id="org.eclipse.ui.externaltools.source"/> + <plugin id="org.eclipse.ui.forms"/> + <plugin id="org.eclipse.ui.forms.source"/> + <plugin id="org.eclipse.ui.genericeditor"/> + <plugin id="org.eclipse.ui.genericeditor.source"/> + <plugin id="org.eclipse.ui.ide"/> + <plugin id="org.eclipse.ui.ide.application"/> + <plugin id="org.eclipse.ui.ide.application.source"/> + <plugin id="org.eclipse.ui.ide.source"/> + <plugin id="org.eclipse.ui.intro"/> + <plugin id="org.eclipse.ui.intro.quicklinks"/> + <plugin id="org.eclipse.ui.intro.quicklinks.source"/> + <plugin id="org.eclipse.ui.intro.source"/> + <plugin id="org.eclipse.ui.intro.universal"/> + <plugin id="org.eclipse.ui.intro.universal.source"/> + <plugin id="org.eclipse.ui.monitoring"/> + <plugin id="org.eclipse.ui.monitoring.source"/> + <plugin id="org.eclipse.ui.navigator"/> + <plugin id="org.eclipse.ui.navigator.resources"/> + <plugin id="org.eclipse.ui.navigator.resources.source"/> + <plugin id="org.eclipse.ui.navigator.source"/> + <plugin id="org.eclipse.ui.net"/> + <plugin id="org.eclipse.ui.net.source"/> + <plugin id="org.eclipse.ui.source"/> + <plugin id="org.eclipse.ui.themes"/> + <plugin id="org.eclipse.ui.themes.source"/> + <plugin id="org.eclipse.ui.trace"/> + <plugin id="org.eclipse.ui.trace.source"/> + <plugin id="org.eclipse.ui.views"/> + <plugin id="org.eclipse.ui.views.log"/> + <plugin id="org.eclipse.ui.views.log.source"/> + <plugin id="org.eclipse.ui.views.properties.tabbed"/> + <plugin id="org.eclipse.ui.views.properties.tabbed.source"/> + <plugin id="org.eclipse.ui.views.source"/> + <plugin id="org.eclipse.ui.workbench"/> + <plugin id="org.eclipse.ui.workbench.source"/> + <plugin id="org.eclipse.ui.workbench.texteditor"/> + <plugin id="org.eclipse.ui.workbench.texteditor.source"/> + <plugin id="org.eclipse.uml2"/> + <plugin id="org.eclipse.uml2.ant"/> + <plugin id="org.eclipse.uml2.codegen.ecore"/> + <plugin id="org.eclipse.uml2.codegen.ecore.ui"/> + <plugin id="org.eclipse.uml2.common"/> + <plugin id="org.eclipse.uml2.common.edit"/> + <plugin id="org.eclipse.uml2.doc"/> + <plugin id="org.eclipse.uml2.examples"/> + <plugin id="org.eclipse.uml2.examples.uml.ui"/> + <plugin id="org.eclipse.uml2.sdk"/> + <plugin id="org.eclipse.uml2.types"/> + <plugin id="org.eclipse.uml2.uml"/> + <plugin id="org.eclipse.uml2.uml.ecore.exporter"/> + <plugin id="org.eclipse.uml2.uml.ecore.importer"/> + <plugin id="org.eclipse.uml2.uml.edit"/> + <plugin id="org.eclipse.uml2.uml.editor"/> + <plugin id="org.eclipse.uml2.uml.profile.standard"/> + <plugin id="org.eclipse.uml2.uml.resources"/> + <plugin id="org.eclipse.uml2.uml.validation"/> + <plugin id="org.eclipse.update.configurator"/> + <plugin id="org.eclipse.update.configurator.source"/> + <plugin id="org.eclipse.urischeme"/> + <plugin id="org.eclipse.urischeme.source"/> + <plugin id="org.eclipse.userstorage"/> + <plugin id="org.eclipse.userstorage.oauth"/> + <plugin id="org.eclipse.userstorage.ui"/> + <plugin id="org.eclipse.xpand"/> + <plugin id="org.eclipse.xpand.activities"/> + <plugin id="org.eclipse.xpand.activities.source"/> + <plugin id="org.eclipse.xpand.doc"/> + <plugin id="org.eclipse.xpand.examples"/> + <plugin id="org.eclipse.xpand.examples.source"/> + <plugin id="org.eclipse.xpand.source"/> + <plugin id="org.eclipse.xpand.support.cdt"/> + <plugin id="org.eclipse.xpand.support.cdt.source"/> + <plugin id="org.eclipse.xpand.ui"/> + <plugin id="org.eclipse.xpand.ui.source"/> + <plugin id="org.eclipse.xsd"/> + <plugin id="org.eclipse.xsd.cheatsheets"/> + <plugin id="org.eclipse.xsd.doc"/> + <plugin id="org.eclipse.xsd.ecore.converter"/> + <plugin id="org.eclipse.xsd.ecore.converter.source"/> + <plugin id="org.eclipse.xsd.ecore.exporter"/> + <plugin id="org.eclipse.xsd.ecore.exporter.source"/> + <plugin id="org.eclipse.xsd.ecore.importer"/> + <plugin id="org.eclipse.xsd.ecore.importer.source"/> + <plugin id="org.eclipse.xsd.edit"/> + <plugin id="org.eclipse.xsd.edit.source"/> + <plugin id="org.eclipse.xsd.editor"/> + <plugin id="org.eclipse.xsd.editor.source"/> + <plugin id="org.eclipse.xsd.example"/> + <plugin id="org.eclipse.xsd.example.installer"/> + <plugin id="org.eclipse.xsd.mapping"/> + <plugin id="org.eclipse.xsd.mapping.editor"/> + <plugin id="org.eclipse.xsd.mapping.editor.source"/> + <plugin id="org.eclipse.xsd.mapping.source"/> + <plugin id="org.eclipse.xsd.source"/> + <plugin id="org.eclipse.xtend"/> + <plugin id="org.eclipse.xtend.backend"/> + <plugin id="org.eclipse.xtend.backend.compiler"/> + <plugin id="org.eclipse.xtend.backend.compiler.source"/> + <plugin id="org.eclipse.xtend.backend.source"/> + <plugin id="org.eclipse.xtend.backend.ui"/> + <plugin id="org.eclipse.xtend.backend.ui.source"/> + <plugin id="org.eclipse.xtend.backend.uml2types"/> + <plugin id="org.eclipse.xtend.backend.uml2types.source"/> + <plugin id="org.eclipse.xtend.backend.xsdtypes"/> + <plugin id="org.eclipse.xtend.backend.xsdtypes.source"/> + <plugin id="org.eclipse.xtend.check.ui"/> + <plugin id="org.eclipse.xtend.check.ui.source"/> + <plugin id="org.eclipse.xtend.core"/> + <plugin id="org.eclipse.xtend.core.source"/> + <plugin id="org.eclipse.xtend.doc"/> + <plugin id="org.eclipse.xtend.examples"/> + <plugin id="org.eclipse.xtend.ide"/> + <plugin id="org.eclipse.xtend.ide.common"/> + <plugin id="org.eclipse.xtend.ide.common.source"/> + <plugin id="org.eclipse.xtend.ide.source"/> + <plugin id="org.eclipse.xtend.lib"/> + <plugin id="org.eclipse.xtend.lib.gwt"/> + <plugin id="org.eclipse.xtend.lib.macro"/> + <plugin id="org.eclipse.xtend.lib.macro.source"/> + <plugin id="org.eclipse.xtend.lib.source"/> + <plugin id="org.eclipse.xtend.m2e"/> + <plugin id="org.eclipse.xtend.m2e.source"/> + <plugin id="org.eclipse.xtend.middleend.xpand"/> + <plugin id="org.eclipse.xtend.middleend.xtend"/> + <plugin id="org.eclipse.xtend.profiler"/> + <plugin id="org.eclipse.xtend.profiler.source"/> + <plugin id="org.eclipse.xtend.shared.ui"/> + <plugin id="org.eclipse.xtend.shared.ui.source"/> + <plugin id="org.eclipse.xtend.source"/> + <plugin id="org.eclipse.xtend.standalone"/> + <plugin id="org.eclipse.xtend.standalone.source"/> + <plugin id="org.eclipse.xtend.typesystem.emf"/> + <plugin id="org.eclipse.xtend.typesystem.emf.source"/> + <plugin id="org.eclipse.xtend.typesystem.emf.ui"/> + <plugin id="org.eclipse.xtend.typesystem.emf.ui.source"/> + <plugin id="org.eclipse.xtend.typesystem.uml2"/> + <plugin id="org.eclipse.xtend.typesystem.uml2.source"/> + <plugin id="org.eclipse.xtend.typesystem.uml2.ui"/> + <plugin id="org.eclipse.xtend.typesystem.uml2.ui.source"/> + <plugin id="org.eclipse.xtend.typesystem.xsd"/> + <plugin id="org.eclipse.xtend.typesystem.xsd.source"/> + <plugin id="org.eclipse.xtend.typesystem.xsd.ui"/> + <plugin id="org.eclipse.xtend.typesystem.xsd.ui.source"/> + <plugin id="org.eclipse.xtend.ui"/> + <plugin id="org.eclipse.xtend.ui.source"/> + <plugin id="org.eclipse.xtend.util.stdlib"/> + <plugin id="org.eclipse.xtend.util.stdlib.source"/> + <plugin id="org.eclipse.xtext"/> + <plugin id="org.eclipse.xtext.activities"/> + <plugin id="org.eclipse.xtext.activities.source"/> + <plugin id="org.eclipse.xtext.builder"/> + <plugin id="org.eclipse.xtext.builder.source"/> + <plugin id="org.eclipse.xtext.builder.standalone"/> + <plugin id="org.eclipse.xtext.builder.standalone.source"/> + <plugin id="org.eclipse.xtext.buildship"/> + <plugin id="org.eclipse.xtext.buildship.source"/> + <plugin id="org.eclipse.xtext.common.types"/> + <plugin id="org.eclipse.xtext.common.types.edit"/> + <plugin id="org.eclipse.xtext.common.types.edit.source"/> + <plugin id="org.eclipse.xtext.common.types.shared"/> + <plugin id="org.eclipse.xtext.common.types.shared.jdt38" fragment="true"/> + <plugin id="org.eclipse.xtext.common.types.shared.jdt38.source"/> + <plugin id="org.eclipse.xtext.common.types.shared.source"/> + <plugin id="org.eclipse.xtext.common.types.source"/> + <plugin id="org.eclipse.xtext.common.types.ui"/> + <plugin id="org.eclipse.xtext.common.types.ui.source"/> + <plugin id="org.eclipse.xtext.doc"/> + <plugin id="org.eclipse.xtext.ecore"/> + <plugin id="org.eclipse.xtext.ecore.source"/> + <plugin id="org.eclipse.xtext.generator"/> + <plugin id="org.eclipse.xtext.generator.source"/> + <plugin id="org.eclipse.xtext.ide"/> + <plugin id="org.eclipse.xtext.ide.source"/> + <plugin id="org.eclipse.xtext.java"/> + <plugin id="org.eclipse.xtext.java.source"/> + <plugin id="org.eclipse.xtext.junit4"/> + <plugin id="org.eclipse.xtext.junit4.source"/> + <plugin id="org.eclipse.xtext.logging" fragment="true"/> + <plugin id="org.eclipse.xtext.logging.source"/> + <plugin id="org.eclipse.xtext.m2e"/> + <plugin id="org.eclipse.xtext.m2e.source"/> + <plugin id="org.eclipse.xtext.purexbase"/> + <plugin id="org.eclipse.xtext.purexbase.ide"/> + <plugin id="org.eclipse.xtext.purexbase.ide.source"/> + <plugin id="org.eclipse.xtext.purexbase.source"/> + <plugin id="org.eclipse.xtext.purexbase.ui"/> + <plugin id="org.eclipse.xtext.purexbase.ui.source"/> + <plugin id="org.eclipse.xtext.smap"/> + <plugin id="org.eclipse.xtext.smap.source"/> + <plugin id="org.eclipse.xtext.source"/> + <plugin id="org.eclipse.xtext.testing"/> + <plugin id="org.eclipse.xtext.testing.source"/> + <plugin id="org.eclipse.xtext.ui"/> + <plugin id="org.eclipse.xtext.ui.codemining"/> + <plugin id="org.eclipse.xtext.ui.codemining.source"/> + <plugin id="org.eclipse.xtext.ui.codetemplates"/> + <plugin id="org.eclipse.xtext.ui.codetemplates.ide"/> + <plugin id="org.eclipse.xtext.ui.codetemplates.ide.source"/> + <plugin id="org.eclipse.xtext.ui.codetemplates.source"/> + <plugin id="org.eclipse.xtext.ui.codetemplates.ui"/> + <plugin id="org.eclipse.xtext.ui.codetemplates.ui.source"/> + <plugin id="org.eclipse.xtext.ui.ecore"/> + <plugin id="org.eclipse.xtext.ui.ecore.source"/> + <plugin id="org.eclipse.xtext.ui.shared"/> + <plugin id="org.eclipse.xtext.ui.shared.source"/> + <plugin id="org.eclipse.xtext.ui.source"/> + <plugin id="org.eclipse.xtext.ui.testing"/> + <plugin id="org.eclipse.xtext.ui.testing.source"/> + <plugin id="org.eclipse.xtext.util"/> + <plugin id="org.eclipse.xtext.util.source"/> + <plugin id="org.eclipse.xtext.xbase"/> + <plugin id="org.eclipse.xtext.xbase.ide"/> + <plugin id="org.eclipse.xtext.xbase.ide.source"/> + <plugin id="org.eclipse.xtext.xbase.junit"/> + <plugin id="org.eclipse.xtext.xbase.junit.source"/> + <plugin id="org.eclipse.xtext.xbase.lib"/> + <plugin id="org.eclipse.xtext.xbase.lib.gwt"/> + <plugin id="org.eclipse.xtext.xbase.lib.source"/> + <plugin id="org.eclipse.xtext.xbase.source"/> + <plugin id="org.eclipse.xtext.xbase.testing"/> + <plugin id="org.eclipse.xtext.xbase.testing.source"/> + <plugin id="org.eclipse.xtext.xbase.ui"/> + <plugin id="org.eclipse.xtext.xbase.ui.source"/> + <plugin id="org.eclipse.xtext.xbase.ui.testing"/> + <plugin id="org.eclipse.xtext.xbase.ui.testing.source"/> + <plugin id="org.eclipse.xtext.xtext.generator"/> + <plugin id="org.eclipse.xtext.xtext.generator.source"/> + <plugin id="org.eclipse.xtext.xtext.ide"/> + <plugin id="org.eclipse.xtext.xtext.ide.source"/> + <plugin id="org.eclipse.xtext.xtext.ui"/> + <plugin id="org.eclipse.xtext.xtext.ui.examples"/> + <plugin id="org.eclipse.xtext.xtext.ui.graph"/> + <plugin id="org.eclipse.xtext.xtext.ui.graph.source"/> + <plugin id="org.eclipse.xtext.xtext.ui.source"/> + <plugin id="org.eclipse.xtext.xtext.wizard"/> + <plugin id="org.eclipse.xtext.xtext.wizard.source"/> + <plugin id="org.h2"/> + <plugin id="org.hamcrest.core"/> + <plugin id="org.hamcrest.core.source"/> + <plugin id="org.jdom"/> + <plugin id="org.jsoup"/> + <plugin id="org.junit"/> + <plugin id="org.junit.jupiter.api"/> + <plugin id="org.junit.jupiter.api.source"/> + <plugin id="org.junit.jupiter.engine"/> + <plugin id="org.junit.jupiter.engine.source"/> + <plugin id="org.junit.jupiter.migrationsupport"/> + <plugin id="org.junit.jupiter.migrationsupport.source"/> + <plugin id="org.junit.jupiter.params"/> + <plugin id="org.junit.jupiter.params.source"/> + <plugin id="org.junit.platform.commons"/> + <plugin id="org.junit.platform.commons.source"/> + <plugin id="org.junit.platform.engine"/> + <plugin id="org.junit.platform.engine.source"/> + <plugin id="org.junit.platform.launcher"/> + <plugin id="org.junit.platform.launcher.source"/> + <plugin id="org.junit.platform.runner"/> + <plugin id="org.junit.platform.runner.source"/> + <plugin id="org.junit.platform.suite.api"/> + <plugin id="org.junit.platform.suite.api.source"/> + <plugin id="org.junit.platform.suite.commons"/> + <plugin id="org.junit.platform.suite.commons.source"/> + <plugin id="org.junit.platform.suite.engine"/> + <plugin id="org.junit.platform.suite.engine.source"/> + <plugin id="org.junit.source"/> + <plugin id="org.junit.vintage.engine"/> + <plugin id="org.junit.vintage.engine.source"/> + <plugin id="org.objectweb.asm"/> + <plugin id="org.objectweb.asm.source"/> + <plugin id="org.objectweb.asm.tree"/> + <plugin id="org.objectweb.asm.tree.source"/> + <plugin id="org.opentest4j"/> + <plugin id="org.opentest4j.source"/> + <plugin id="org.restlet"/> + <plugin id="org.restlet.example"/> + <plugin id="org.restlet.ext.apispark"/> + <plugin id="org.restlet.ext.atom"/> + <plugin id="org.restlet.ext.crypto"/> + <plugin id="org.restlet.ext.e4"/> + <plugin id="org.restlet.ext.emf"/> + <plugin id="org.restlet.ext.fileupload"/> + <plugin id="org.restlet.ext.freemarker"/> + <plugin id="org.restlet.ext.gson"/> + <plugin id="org.restlet.ext.guice"/> + <plugin id="org.restlet.ext.gwt"/> + <plugin id="org.restlet.ext.html"/> + <plugin id="org.restlet.ext.httpclient"/> + <plugin id="org.restlet.ext.jaas"/> + <plugin id="org.restlet.ext.jackson"/> + <plugin id="org.restlet.ext.javamail"/> + <plugin id="org.restlet.ext.jaxb"/> + <plugin id="org.restlet.ext.jaxrs"/> + <plugin id="org.restlet.ext.jdbc"/> + <plugin id="org.restlet.ext.jetty"/> + <plugin id="org.restlet.ext.jibx"/> + <plugin id="org.restlet.ext.json"/> + <plugin id="org.restlet.ext.jsslutils"/> + <plugin id="org.restlet.ext.lucene"/> + <plugin id="org.restlet.ext.nio"/> + <plugin id="org.restlet.ext.oauth"/> + <plugin id="org.restlet.ext.odata"/> + <plugin id="org.restlet.ext.openid"/> + <plugin id="org.restlet.ext.osgi"/> + <plugin id="org.restlet.ext.raml"/> + <plugin id="org.restlet.ext.rdf"/> + <plugin id="org.restlet.ext.rome"/> + <plugin id="org.restlet.ext.sdc"/> + <plugin id="org.restlet.ext.servlet"/> + <plugin id="org.restlet.ext.simple"/> + <plugin id="org.restlet.ext.sip"/> + <plugin id="org.restlet.ext.slf4j"/> + <plugin id="org.restlet.ext.spring"/> + <plugin id="org.restlet.ext.swagger"/> + <plugin id="org.restlet.ext.thymeleaf"/> + <plugin id="org.restlet.ext.velocity"/> + <plugin id="org.restlet.ext.wadl"/> + <plugin id="org.restlet.ext.xdb"/> + <plugin id="org.restlet.ext.xml"/> + <plugin id="org.restlet.ext.xstream"/> + <plugin id="org.sat4j.core"/> + <plugin id="org.sat4j.pb"/> + <plugin id="org.slf4j.api"/> + <plugin id="org.slf4j.api.source"/> + <plugin id="org.tukaani.xz"/> + <plugin id="org.tukaani.xz.source"/> + <plugin id="org.w3c.css.sac"/> + <plugin id="org.w3c.css.sac.source"/> + <plugin id="org.w3c.dom.events"/> + <plugin id="org.w3c.dom.events.source"/> + <plugin id="org.w3c.dom.smil"/> + <plugin id="org.w3c.dom.smil.source"/> + <plugin id="org.w3c.dom.svg"/> + <plugin id="org.w3c.dom.svg.source"/> + <plugin id="org.yaml.snakeyaml"/> + </plugins> + + <configurations> + <plugin id="org.eclipse.core.runtime" autoStart="true" startLevel="0" /> + <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" /> + <plugin id="org.eclipse.equinox.ds" autoStart="true" startLevel="2" /> + <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="2" /> + <plugin id="org.eclipse.equinox.simpleconfigurator" autoStart="true" startLevel="1" /> + </configurations> + + <preferencesInfo> + <targetfile overwrite="false"/> + </preferencesInfo> + + <cssInfo> + </cssInfo> + +</product> diff --git a/Source Code/V2.1/PiacereToolProduct/about.gif b/Source Code/V2.1/PiacereToolProduct/about.gif new file mode 100644 index 0000000000000000000000000000000000000000..ff87a29b1a738ae32540b1f02eed17242bb94393 Binary files /dev/null and b/Source Code/V2.1/PiacereToolProduct/about.gif differ diff --git a/Source Code/V2.1/PiacereToolProduct/build.properties b/Source Code/V2.1/PiacereToolProduct/build.properties new file mode 100755 index 0000000000000000000000000000000000000000..d0d65a25b7404ec7dcbed0abefaf2efdbec4bb4e --- /dev/null +++ b/Source Code/V2.1/PiacereToolProduct/build.properties @@ -0,0 +1,11 @@ +output.. = bin/ +bin.includes = META-INF/,\ + .,\ + plugin_customization.ini,\ + plugin.xml,\ + PiacereToolProduct.product,\ + about.gif,\ + splash.bmp,\ + about.jpg,\ + Piacere/ +source.. = src/ diff --git a/Source Code/V2.1/PiacereToolProduct/plugin.xml b/Source Code/V2.1/PiacereToolProduct/plugin.xml new file mode 100755 index 0000000000000000000000000000000000000000..30547f73ef71151537dc02e887d575eb7b08afd8 --- /dev/null +++ b/Source Code/V2.1/PiacereToolProduct/plugin.xml @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.4"?> +<plugin> + + <extension + id="PiacereProductID" + point="org.eclipse.core.runtime.products"> + <product + application="org.eclipse.ui.ide.workbench" + name="Piacere"> + <property + name="windowImages" + value="Piacere/PiacereIcons/PiacereIcon_16x16.png,Piacere/PiacereIcons/PiacereIcon_32x32.png,Piacere/PiacereIcons/PiacereIcon_48x48.png,Piacere/PiacereIcons/PiacereIcon_64x64.png,Piacere/PiacereIcons/PiacereIcon_128x128.png,Piacere/PiacereIcons/PiacereIcon_256x256.png"> + </property> + <property + name="aboutImage" + value="about.gif"> + </property> + <property + name="startupForegroundColor" + value="3A484E"> + </property> + <property + name="startupProgressRect" + value="2,310,448,10"> + </property> + <property + name="startupMessageRect" + value="7,290,320,20"> + </property> + <property + name="appName" + value="Piacere"> + </property> + <property + name="preferenceCustomization" + value="plugin_customization.ini"> + </property> + </product> + </extension> + +</plugin> diff --git a/Source Code/V2.1/PiacereToolProduct/plugin_customization.ini b/Source Code/V2.1/PiacereToolProduct/plugin_customization.ini new file mode 100755 index 0000000000000000000000000000000000000000..333fab9da760c08792618efc88d4a4c7a17b2fc3 --- /dev/null +++ b/Source Code/V2.1/PiacereToolProduct/plugin_customization.ini @@ -0,0 +1 @@ +org.eclipse.ui/SHOW_PROGRESS_ON_STARTUP = true diff --git a/Source Code/V2.1/PiacereToolProduct/splash.bmp b/Source Code/V2.1/PiacereToolProduct/splash.bmp new file mode 100644 index 0000000000000000000000000000000000000000..37657b9f9b8ec76fe67f585268a1a0efdeca75f6 Binary files /dev/null and b/Source Code/V2.1/PiacereToolProduct/splash.bmp differ diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/README.md b/THEIA (DEPRECATED)/Extensions/DOMLValidator/README.md old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/lib/browser/DOMLValidator-contribution.d.ts b/THEIA (DEPRECATED)/Extensions/DOMLValidator/lib/browser/DOMLValidator-contribution.d.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/lib/browser/DOMLValidator-contribution.d.ts.map b/THEIA (DEPRECATED)/Extensions/DOMLValidator/lib/browser/DOMLValidator-contribution.d.ts.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/lib/browser/DOMLValidator-contribution.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/lib/browser/DOMLValidator-contribution.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/lib/browser/DOMLValidator-contribution.js.map b/THEIA (DEPRECATED)/Extensions/DOMLValidator/lib/browser/DOMLValidator-contribution.js.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/lib/browser/DOMLValidator-frontend-module.d.ts b/THEIA (DEPRECATED)/Extensions/DOMLValidator/lib/browser/DOMLValidator-frontend-module.d.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/lib/browser/DOMLValidator-frontend-module.d.ts.map b/THEIA (DEPRECATED)/Extensions/DOMLValidator/lib/browser/DOMLValidator-frontend-module.d.ts.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/lib/browser/DOMLValidator-frontend-module.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/lib/browser/DOMLValidator-frontend-module.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/lib/browser/DOMLValidator-frontend-module.js.map b/THEIA (DEPRECATED)/Extensions/DOMLValidator/lib/browser/DOMLValidator-frontend-module.js.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/@theia/plugin/LICENSE b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/@theia/plugin/LICENSE old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/@theia/plugin/README.md b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/@theia/plugin/README.md old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/@theia/plugin/package.json b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/@theia/plugin/package.json old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/@theia/plugin/src/package.spec.ts b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/@theia/plugin/src/package.spec.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/@theia/plugin/src/theia-proposed.d.ts b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/@theia/plugin/src/theia-proposed.d.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/@theia/plugin/src/theia.d.ts b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/@theia/plugin/src/theia.d.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/balanced-match/.github/FUNDING.yml b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/balanced-match/.github/FUNDING.yml old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/balanced-match/LICENSE.md b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/balanced-match/LICENSE.md old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/balanced-match/README.md b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/balanced-match/README.md old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/balanced-match/index.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/balanced-match/index.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/balanced-match/package.json b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/balanced-match/package.json old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/brace-expansion/LICENSE b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/brace-expansion/LICENSE old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/brace-expansion/README.md b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/brace-expansion/README.md old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/brace-expansion/index.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/brace-expansion/index.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/brace-expansion/package.json b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/brace-expansion/package.json old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/concat-map/.travis.yml b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/concat-map/.travis.yml old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/concat-map/LICENSE b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/concat-map/LICENSE old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/concat-map/README.markdown b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/concat-map/README.markdown old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/concat-map/example/map.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/concat-map/example/map.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/concat-map/index.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/concat-map/index.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/concat-map/package.json b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/concat-map/package.json old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/concat-map/test/map.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/concat-map/test/map.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/CHANGELOG.md b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/CHANGELOG.md old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/LICENSE b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/LICENSE old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/README.md b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/README.md old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/copy-sync/copy-sync.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/copy-sync/copy-sync.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/copy-sync/index.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/copy-sync/index.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/copy/copy.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/copy/copy.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/copy/index.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/copy/index.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/empty/index.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/empty/index.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/ensure/file.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/ensure/file.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/ensure/index.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/ensure/index.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/ensure/link.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/ensure/link.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/ensure/symlink-paths.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/ensure/symlink-paths.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/ensure/symlink-type.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/ensure/symlink-type.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/ensure/symlink.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/ensure/symlink.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/fs/index.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/fs/index.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/index.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/index.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/json/index.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/json/index.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/json/jsonfile.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/json/jsonfile.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/json/output-json-sync.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/json/output-json-sync.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/json/output-json.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/json/output-json.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/mkdirs/index.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/mkdirs/index.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/mkdirs/make-dir.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/mkdirs/make-dir.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/mkdirs/utils.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/mkdirs/utils.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/move-sync/index.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/move-sync/index.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/move-sync/move-sync.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/move-sync/move-sync.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/move/index.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/move/index.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/move/move.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/move/move.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/output/index.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/output/index.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/path-exists/index.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/path-exists/index.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/remove/index.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/remove/index.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/remove/rimraf.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/remove/rimraf.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/util/stat.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/util/stat.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/util/utimes.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/lib/util/utimes.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/package.json b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs-extra/package.json old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs.realpath/LICENSE b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs.realpath/LICENSE old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs.realpath/README.md b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs.realpath/README.md old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs.realpath/index.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs.realpath/index.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs.realpath/old.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs.realpath/old.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs.realpath/package.json b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs.realpath/package.json old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs/README.md b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs/README.md old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs/package.json b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/fs/package.json old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/glob/LICENSE b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/glob/LICENSE old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/glob/README.md b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/glob/README.md old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/glob/common.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/glob/common.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/glob/glob.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/glob/glob.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/glob/package.json b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/glob/package.json old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/glob/sync.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/glob/sync.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/graceful-fs/LICENSE b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/graceful-fs/LICENSE old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/graceful-fs/README.md b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/graceful-fs/README.md old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/graceful-fs/clone.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/graceful-fs/clone.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/graceful-fs/graceful-fs.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/graceful-fs/graceful-fs.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/graceful-fs/legacy-streams.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/graceful-fs/legacy-streams.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/graceful-fs/package.json b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/graceful-fs/package.json old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/graceful-fs/polyfills.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/graceful-fs/polyfills.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/inflight/LICENSE b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/inflight/LICENSE old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/inflight/README.md b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/inflight/README.md old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/inflight/inflight.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/inflight/inflight.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/inflight/package.json b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/inflight/package.json old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/inherits/LICENSE b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/inherits/LICENSE old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/inherits/README.md b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/inherits/README.md old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/inherits/inherits.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/inherits/inherits.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/inherits/inherits_browser.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/inherits/inherits_browser.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/inherits/package.json b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/inherits/package.json old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/jsonfile/CHANGELOG.md b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/jsonfile/CHANGELOG.md old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/jsonfile/LICENSE b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/jsonfile/LICENSE old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/jsonfile/README.md b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/jsonfile/README.md old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/jsonfile/index.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/jsonfile/index.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/jsonfile/package.json b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/jsonfile/package.json old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/jsonfile/utils.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/jsonfile/utils.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/minimatch/LICENSE b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/minimatch/LICENSE old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/minimatch/README.md b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/minimatch/README.md old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/minimatch/minimatch.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/minimatch/minimatch.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/minimatch/package.json b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/minimatch/package.json old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/once/LICENSE b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/once/LICENSE old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/once/README.md b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/once/README.md old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/once/once.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/once/once.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/once/package.json b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/once/package.json old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/path-is-absolute/index.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/path-is-absolute/index.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/path-is-absolute/license b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/path-is-absolute/license old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/path-is-absolute/package.json b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/path-is-absolute/package.json old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/path-is-absolute/readme.md b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/path-is-absolute/readme.md old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/punycode/LICENSE-MIT.txt b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/punycode/LICENSE-MIT.txt old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/punycode/README.md b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/punycode/README.md old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/punycode/package.json b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/punycode/package.json old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/punycode/punycode.es6.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/punycode/punycode.es6.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/punycode/punycode.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/punycode/punycode.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/rimraf/CHANGELOG.md b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/rimraf/CHANGELOG.md old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/rimraf/LICENSE b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/rimraf/LICENSE old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/rimraf/README.md b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/rimraf/README.md old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/rimraf/package.json b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/rimraf/package.json old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/rimraf/rimraf.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/rimraf/rimraf.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/universalify/LICENSE b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/universalify/LICENSE old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/universalify/README.md b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/universalify/README.md old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/universalify/index.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/universalify/index.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/universalify/package.json b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/universalify/package.json old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/wrappy/LICENSE b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/wrappy/LICENSE old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/wrappy/README.md b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/wrappy/README.md old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/wrappy/package.json b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/wrappy/package.json old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/wrappy/wrappy.js b/THEIA (DEPRECATED)/Extensions/DOMLValidator/node_modules/wrappy/wrappy.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/package-lock.json b/THEIA (DEPRECATED)/Extensions/DOMLValidator/package-lock.json old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/package.json b/THEIA (DEPRECATED)/Extensions/DOMLValidator/package.json old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/src/browser/DOMLValidator-contribution.ts b/THEIA (DEPRECATED)/Extensions/DOMLValidator/src/browser/DOMLValidator-contribution.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/src/browser/DOMLValidator-frontend-module.ts b/THEIA (DEPRECATED)/Extensions/DOMLValidator/src/browser/DOMLValidator-frontend-module.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/DOMLValidator/tsconfig.json b/THEIA (DEPRECATED)/Extensions/DOMLValidator/tsconfig.json old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/README.md b/THEIA (DEPRECATED)/Extensions/domlExt/README.md old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml-contribution.d.ts b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml-contribution.d.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml-contribution.d.ts.map b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml-contribution.d.ts.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml-contribution.js b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml-contribution.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml-contribution.js.map b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml-contribution.js.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml-label-provider-contribution.d.ts b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml-label-provider-contribution.d.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml-label-provider-contribution.d.ts.map b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml-label-provider-contribution.d.ts.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml-label-provider-contribution.js b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml-label-provider-contribution.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml-label-provider-contribution.js.map b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml-label-provider-contribution.js.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-editor-widget.d.ts b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-editor-widget.d.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-editor-widget.d.ts.map b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-editor-widget.d.ts.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-editor-widget.js b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-editor-widget.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-editor-widget.js.map b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-editor-widget.js.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-label-provider.d.ts b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-label-provider.d.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-label-provider.d.ts.map b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-label-provider.d.ts.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-label-provider.js b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-label-provider.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-label-provider.js.map b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-label-provider.js.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-model-service.d.ts b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-model-service.d.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-model-service.d.ts.map b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-model-service.d.ts.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-model-service.js b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-model-service.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-model-service.js.map b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-model-service.js.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-model.d.ts b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-model.d.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-model.d.ts.map b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-model.d.ts.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-model.js b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-model.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-model.js.map b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-model.js.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-node-factory.d.ts b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-node-factory.d.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-node-factory.d.ts.map b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-node-factory.d.ts.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-node-factory.js b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-node-factory.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-node-factory.js.map b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-node-factory.js.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-schema.d.ts b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-schema.d.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-schema.d.ts.map b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-schema.d.ts.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-schema.js b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-schema.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-schema.js.map b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-schema.js.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-views.d.ts b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-views.d.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-views.d.ts.map b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-views.d.ts.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-views.js b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-views.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-views.js.map b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/doml/doml-views.js.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/domlExt-frontend-module.d.ts b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/domlExt-frontend-module.d.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/domlExt-frontend-module.d.ts.map b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/domlExt-frontend-module.d.ts.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/domlExt-frontend-module.js b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/domlExt-frontend-module.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/domlExt-frontend-module.js.map b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/domlExt-frontend-module.js.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/example-file/example-file-command.d.ts b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/example-file/example-file-command.d.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/example-file/example-file-command.d.ts.map b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/example-file/example-file-command.d.ts.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/example-file/example-file-command.js b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/example-file/example-file-command.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/example-file/example-file-command.js.map b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/example-file/example-file-command.js.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/example-file/example-file-contribution.d.ts b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/example-file/example-file-contribution.d.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/example-file/example-file-contribution.d.ts.map b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/example-file/example-file-contribution.d.ts.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/example-file/example-file-contribution.js b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/example-file/example-file-contribution.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/example-file/example-file-contribution.js.map b/THEIA (DEPRECATED)/Extensions/domlExt/lib/browser/example-file/example-file-contribution.js.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/CHANGELOG.md b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/CHANGELOG.md old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/LICENSE b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/LICENSE old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/README.md b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/README.md old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/lib/bundle.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/lib/bundle.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/lib/dereference.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/lib/dereference.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/lib/index.d.ts b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/lib/index.d.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/lib/index.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/lib/index.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/lib/normalize-args.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/lib/normalize-args.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/lib/options.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/lib/options.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/lib/parse.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/lib/parse.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/lib/parsers/binary.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/lib/parsers/binary.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/lib/parsers/json.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/lib/parsers/json.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/lib/parsers/text.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/lib/parsers/text.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/lib/parsers/yaml.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/lib/parsers/yaml.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/lib/pointer.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/lib/pointer.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/lib/ref.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/lib/ref.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/lib/refs.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/lib/refs.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/lib/resolve-external.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/lib/resolve-external.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/lib/resolvers/file.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/lib/resolvers/file.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/lib/resolvers/http.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/lib/resolvers/http.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/lib/util/errors.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/lib/util/errors.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/lib/util/plugins.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/lib/util/plugins.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/lib/util/url.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/lib/util/url.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/package.json b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@apidevtools/json-schema-ref-parser/package.json old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/CHANGELOG.md b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/CHANGELOG.md old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/LICENSE b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/LICENSE old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/README.md b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/README.md old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/constructor.d.ts b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/constructor.d.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/constructor.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/constructor.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/constructor.js.map b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/constructor.js.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/extend-error.d.ts b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/extend-error.d.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/extend-error.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/extend-error.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/extend-error.js.map b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/extend-error.js.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/index.d.ts b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/index.d.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/index.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/index.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/index.js.map b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/index.js.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/isomorphic.browser.d.ts b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/isomorphic.browser.d.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/isomorphic.browser.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/isomorphic.browser.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/isomorphic.browser.js.map b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/isomorphic.browser.js.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/isomorphic.node.d.ts b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/isomorphic.node.d.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/isomorphic.node.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/isomorphic.node.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/isomorphic.node.js.map b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/isomorphic.node.js.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/normalize.d.ts b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/normalize.d.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/normalize.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/normalize.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/normalize.js.map b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/normalize.js.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/singleton.d.ts b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/singleton.d.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/singleton.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/singleton.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/singleton.js.map b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/singleton.js.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/stack.d.ts b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/stack.d.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/stack.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/stack.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/stack.js.map b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/stack.js.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/to-json.d.ts b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/to-json.d.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/to-json.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/to-json.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/to-json.js.map b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/to-json.js.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/types.d.ts b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/types.d.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/types.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/types.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/types.js.map b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/cjs/types.js.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/constructor.d.ts b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/constructor.d.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/constructor.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/constructor.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/constructor.js.map b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/constructor.js.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/extend-error.d.ts b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/extend-error.d.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/extend-error.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/extend-error.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/extend-error.js.map b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/extend-error.js.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/index.d.ts b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/index.d.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/index.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/index.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/index.js.map b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/index.js.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/isomorphic.browser.d.ts b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/isomorphic.browser.d.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/isomorphic.browser.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/isomorphic.browser.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/isomorphic.browser.js.map b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/isomorphic.browser.js.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/isomorphic.node.d.ts b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/isomorphic.node.d.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/isomorphic.node.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/isomorphic.node.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/isomorphic.node.js.map b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/isomorphic.node.js.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/normalize.d.ts b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/normalize.d.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/normalize.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/normalize.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/normalize.js.map b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/normalize.js.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/singleton.d.ts b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/singleton.d.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/singleton.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/singleton.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/singleton.js.map b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/singleton.js.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/stack.d.ts b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/stack.d.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/stack.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/stack.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/stack.js.map b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/stack.js.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/to-json.d.ts b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/to-json.d.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/to-json.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/to-json.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/to-json.js.map b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/to-json.js.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/types.d.ts b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/types.d.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/types.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/types.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/types.js.map b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/esm/types.js.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/package.json b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/@jsdevtools/ono/package.json old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/argparse/CHANGELOG.md b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/argparse/CHANGELOG.md old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/argparse/LICENSE b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/argparse/LICENSE old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/argparse/README.md b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/argparse/README.md old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/argparse/argparse.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/argparse/argparse.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/argparse/lib/sub.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/argparse/lib/sub.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/argparse/lib/textwrap.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/argparse/lib/textwrap.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/argparse/package.json b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/argparse/package.json old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/call-me-maybe/.npmignore b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/call-me-maybe/.npmignore old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/call-me-maybe/.travis.yml b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/call-me-maybe/.travis.yml old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/call-me-maybe/.zuul.yml b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/call-me-maybe/.zuul.yml old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/call-me-maybe/LICENSE b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/call-me-maybe/LICENSE old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/call-me-maybe/README.md b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/call-me-maybe/README.md old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/call-me-maybe/index.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/call-me-maybe/index.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/call-me-maybe/package.json b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/call-me-maybe/package.json old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/call-me-maybe/test/maybeTest.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/call-me-maybe/test/maybeTest.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/CHANGELOG.md b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/CHANGELOG.md old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/LICENSE b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/LICENSE old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/README.md b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/README.md old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/dist/js-yaml.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/dist/js-yaml.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/dist/js-yaml.min.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/dist/js-yaml.min.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/dist/js-yaml.mjs b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/dist/js-yaml.mjs old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/index.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/index.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/common.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/common.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/dumper.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/dumper.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/exception.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/exception.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/loader.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/loader.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/schema.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/schema.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/schema/core.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/schema/core.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/schema/default.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/schema/default.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/schema/failsafe.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/schema/failsafe.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/schema/json.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/schema/json.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/snippet.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/snippet.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/type.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/type.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/type/binary.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/type/binary.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/type/bool.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/type/bool.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/type/float.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/type/float.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/type/int.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/type/int.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/type/map.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/type/map.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/type/merge.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/type/merge.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/type/null.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/type/null.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/type/omap.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/type/omap.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/type/pairs.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/type/pairs.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/type/seq.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/type/seq.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/type/set.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/type/set.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/type/str.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/type/str.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/type/timestamp.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/lib/type/timestamp.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/package.json b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/js-yaml/package.json old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/json-schema-ref-parser/CHANGELOG.md b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/json-schema-ref-parser/CHANGELOG.md old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/json-schema-ref-parser/LICENSE b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/json-schema-ref-parser/LICENSE old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/json-schema-ref-parser/README.md b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/json-schema-ref-parser/README.md old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/json-schema-ref-parser/index.d.ts b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/json-schema-ref-parser/index.d.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/json-schema-ref-parser/index.js b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/json-schema-ref-parser/index.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/json-schema-ref-parser/package.json b/THEIA (DEPRECATED)/Extensions/domlExt/node_modules_bkp/json-schema-ref-parser/package.json old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/package.json b/THEIA (DEPRECATED)/Extensions/domlExt/package.json old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/src/browser/doml-contribution.ts b/THEIA (DEPRECATED)/Extensions/domlExt/src/browser/doml-contribution.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/src/browser/doml-label-provider-contribution.ts b/THEIA (DEPRECATED)/Extensions/domlExt/src/browser/doml-label-provider-contribution.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/src/browser/doml/doml-editor-widget.ts b/THEIA (DEPRECATED)/Extensions/domlExt/src/browser/doml/doml-editor-widget.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/src/browser/doml/doml-label-provider.ts b/THEIA (DEPRECATED)/Extensions/domlExt/src/browser/doml/doml-label-provider.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/src/browser/doml/doml-model-service.ts b/THEIA (DEPRECATED)/Extensions/domlExt/src/browser/doml/doml-model-service.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/src/browser/doml/doml-model.ts b/THEIA (DEPRECATED)/Extensions/domlExt/src/browser/doml/doml-model.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/src/browser/doml/doml-node-factory.ts b/THEIA (DEPRECATED)/Extensions/domlExt/src/browser/doml/doml-node-factory.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/src/browser/doml/doml-schema.ts b/THEIA (DEPRECATED)/Extensions/domlExt/src/browser/doml/doml-schema.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/src/browser/doml/doml-views.ts b/THEIA (DEPRECATED)/Extensions/domlExt/src/browser/doml/doml-views.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/src/browser/domlExt-frontend-module.ts b/THEIA (DEPRECATED)/Extensions/domlExt/src/browser/domlExt-frontend-module.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/src/browser/example-file/example-file-command.ts b/THEIA (DEPRECATED)/Extensions/domlExt/src/browser/example-file/example-file-command.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/src/browser/example-file/example-file-contribution.ts b/THEIA (DEPRECATED)/Extensions/domlExt/src/browser/example-file/example-file-contribution.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/src/browser/style/editor.css b/THEIA (DEPRECATED)/Extensions/domlExt/src/browser/style/editor.css old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/tsconfig.json b/THEIA (DEPRECATED)/Extensions/domlExt/tsconfig.json old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlExt/yarn-error.log b/THEIA (DEPRECATED)/Extensions/domlExt/yarn-error.log old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlgenerator/README.md b/THEIA (DEPRECATED)/Extensions/domlgenerator/README.md old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/browser/domlgenerator-contribution.d.ts b/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/browser/domlgenerator-contribution.d.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/browser/domlgenerator-contribution.d.ts.map b/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/browser/domlgenerator-contribution.d.ts.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/browser/domlgenerator-contribution.js b/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/browser/domlgenerator-contribution.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/browser/domlgenerator-contribution.js.map b/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/browser/domlgenerator-contribution.js.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/browser/domlgenerator-frontend-module.d.ts b/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/browser/domlgenerator-frontend-module.d.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/browser/domlgenerator-frontend-module.d.ts.map b/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/browser/domlgenerator-frontend-module.d.ts.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/browser/domlgenerator-frontend-module.js b/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/browser/domlgenerator-frontend-module.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/browser/domlgenerator-frontend-module.js.map b/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/browser/domlgenerator-frontend-module.js.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/common/protocol.d.ts b/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/common/protocol.d.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/common/protocol.d.ts.map b/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/common/protocol.d.ts.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/common/protocol.js b/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/common/protocol.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/common/protocol.js.map b/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/common/protocol.js.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/node/domlgenerator-backend-module.d.ts b/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/node/domlgenerator-backend-module.d.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/node/domlgenerator-backend-module.d.ts.map b/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/node/domlgenerator-backend-module.d.ts.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/node/domlgenerator-backend-module.js b/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/node/domlgenerator-backend-module.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/node/domlgenerator-backend-module.js.map b/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/node/domlgenerator-backend-module.js.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/node/hello-backend-service.d.ts b/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/node/hello-backend-service.d.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/node/hello-backend-service.d.ts.map b/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/node/hello-backend-service.d.ts.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/node/hello-backend-service.js b/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/node/hello-backend-service.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/node/hello-backend-service.js.map b/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/node/hello-backend-service.js.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/node/hello-backend-with-client-service.d.ts b/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/node/hello-backend-with-client-service.d.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/node/hello-backend-with-client-service.d.ts.map b/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/node/hello-backend-with-client-service.d.ts.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/node/hello-backend-with-client-service.js b/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/node/hello-backend-with-client-service.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/node/hello-backend-with-client-service.js.map b/THEIA (DEPRECATED)/Extensions/domlgenerator/lib/node/hello-backend-with-client-service.js.map old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlgenerator/node_modules/rimraf/CHANGELOG.md b/THEIA (DEPRECATED)/Extensions/domlgenerator/node_modules/rimraf/CHANGELOG.md old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlgenerator/node_modules/rimraf/LICENSE b/THEIA (DEPRECATED)/Extensions/domlgenerator/node_modules/rimraf/LICENSE old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlgenerator/node_modules/rimraf/README.md b/THEIA (DEPRECATED)/Extensions/domlgenerator/node_modules/rimraf/README.md old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlgenerator/node_modules/rimraf/package.json b/THEIA (DEPRECATED)/Extensions/domlgenerator/node_modules/rimraf/package.json old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlgenerator/node_modules/rimraf/rimraf.js b/THEIA (DEPRECATED)/Extensions/domlgenerator/node_modules/rimraf/rimraf.js old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlgenerator/package.json b/THEIA (DEPRECATED)/Extensions/domlgenerator/package.json old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlgenerator/src/browser/domlgenerator-contribution.ts b/THEIA (DEPRECATED)/Extensions/domlgenerator/src/browser/domlgenerator-contribution.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlgenerator/src/browser/domlgenerator-frontend-module.ts b/THEIA (DEPRECATED)/Extensions/domlgenerator/src/browser/domlgenerator-frontend-module.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlgenerator/src/common/protocol.ts b/THEIA (DEPRECATED)/Extensions/domlgenerator/src/common/protocol.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlgenerator/src/node/domlgenerator-backend-module.ts b/THEIA (DEPRECATED)/Extensions/domlgenerator/src/node/domlgenerator-backend-module.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlgenerator/src/node/hello-backend-service.ts b/THEIA (DEPRECATED)/Extensions/domlgenerator/src/node/hello-backend-service.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlgenerator/src/node/hello-backend-with-client-service.ts b/THEIA (DEPRECATED)/Extensions/domlgenerator/src/node/hello-backend-with-client-service.ts old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/Extensions/domlgenerator/tsconfig.json b/THEIA (DEPRECATED)/Extensions/domlgenerator/tsconfig.json old mode 100755 new mode 100644 diff --git a/THEIA (DEPRECATED)/README.md b/THEIA (DEPRECATED)/README.md old mode 100755 new mode 100644 diff --git a/docs/.vscode/configurationCache.log b/docs/.vscode/configurationCache.log old mode 100755 new mode 100644 diff --git a/docs/.vscode/dryrun.log b/docs/.vscode/dryrun.log old mode 100755 new mode 100644 diff --git a/docs/.vscode/settings.json b/docs/.vscode/settings.json old mode 100755 new mode 100644 diff --git a/docs/.vscode/targets.log b/docs/.vscode/targets.log old mode 100755 new mode 100644 diff --git a/docs/Makefile b/docs/Makefile old mode 100755 new mode 100644 diff --git a/docs/_build/doctrees/download.doctree b/docs/_build/doctrees/download.doctree old mode 100755 new mode 100644 diff --git a/docs/_build/doctrees/environment.pickle b/docs/_build/doctrees/environment.pickle old mode 100755 new mode 100644 diff --git a/docs/_build/doctrees/implementation.doctree b/docs/_build/doctrees/implementation.doctree old mode 100755 new mode 100644 diff --git a/docs/_build/doctrees/index.doctree b/docs/_build/doctrees/index.doctree old mode 100755 new mode 100644 diff --git a/docs/_build/doctrees/manual.doctree b/docs/_build/doctrees/manual.doctree old mode 100755 new mode 100644 diff --git a/docs/_build/html/.buildinfo b/docs/_build/html/.buildinfo old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/Ecomponents.png b/docs/_build/html/_images/Ecomponents.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/Generador_domlx.png b/docs/_build/html/_images/Generador_domlx.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/Guardar_resultado_optimizador.png b/docs/_build/html/_images/Guardar_resultado_optimizador.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/Model_validation_nombre.png b/docs/_build/html/_images/Model_validation_nombre.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/Nombre_resultado_optimizador.png b/docs/_build/html/_images/Nombre_resultado_optimizador.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/Perspectiva_Piacere.png b/docs/_build/html/_images/Perspectiva_Piacere.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/Proyecto_nuevo.png b/docs/_build/html/_images/Proyecto_nuevo.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/Resultado_validacion.png b/docs/_build/html/_images/Resultado_validacion.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/Save_result_validation.png b/docs/_build/html/_images/Save_result_validation.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/Security_scan.png b/docs/_build/html/_images/Security_scan.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/Submenu_doml.png b/docs/_build/html/_images/Submenu_doml.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/Submenu_domlx.png b/docs/_build/html/_images/Submenu_domlx.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/Submenu_zip.png b/docs/_build/html/_images/Submenu_zip.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/Ventana_principal.png b/docs/_build/html/_images/Ventana_principal.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/acceleo.png b/docs/_build/html/_images/acceleo.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/alt.png b/docs/_build/html/_images/alt.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/apertura_perspectiva.png b/docs/_build/html/_images/apertura_perspectiva.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/apertura_preferencias.png b/docs/_build/html/_images/apertura_preferencias.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/canary1.png b/docs/_build/html/_images/canary1.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/canary10.png b/docs/_build/html/_images/canary10.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/canary11.png b/docs/_build/html/_images/canary11.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/canary12.png b/docs/_build/html/_images/canary12.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/canary2.png b/docs/_build/html/_images/canary2.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/canary3.png b/docs/_build/html/_images/canary3.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/canary4.png b/docs/_build/html/_images/canary4.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/canary5.png b/docs/_build/html/_images/canary5.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/canary6.png b/docs/_build/html/_images/canary6.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/canary7.png b/docs/_build/html/_images/canary7.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/canary8.png b/docs/_build/html/_images/canary8.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/canary9.png b/docs/_build/html/_images/canary9.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/catalogue1.png b/docs/_build/html/_images/catalogue1.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/catalogue2.png b/docs/_build/html/_images/catalogue2.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/contenido_preferencias.png b/docs/_build/html/_images/contenido_preferencias.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/doml_file.png b/docs/_build/html/_images/doml_file.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/doml_newfile.png b/docs/_build/html/_images/doml_newfile.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/domlx_file.png b/docs/_build/html/_images/domlx_file.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/egit.png b/docs/_build/html/_images/egit.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/generated_doml_success.png b/docs/_build/html/_images/generated_doml_success.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/gmf.png b/docs/_build/html/_images/gmf.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/graphiti.png b/docs/_build/html/_images/graphiti.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/nombre_generadorIAC.png b/docs/_build/html/_images/nombre_generadorIAC.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/optimized.png b/docs/_build/html/_images/optimized.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/papyrus.png b/docs/_build/html/_images/papyrus.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/preferencias.png b/docs/_build/html/_images/preferencias.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/runtime1.png b/docs/_build/html/_images/runtime1.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/runtime10.png b/docs/_build/html/_images/runtime10.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/runtime2.png b/docs/_build/html/_images/runtime2.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/runtime3.png b/docs/_build/html/_images/runtime3.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/runtime4.png b/docs/_build/html/_images/runtime4.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/runtime5.png b/docs/_build/html/_images/runtime5.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/runtime6.png b/docs/_build/html/_images/runtime6.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/runtime7.png b/docs/_build/html/_images/runtime7.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/runtime8.png b/docs/_build/html/_images/runtime8.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/runtime9.png b/docs/_build/html/_images/runtime9.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/scan_result.png b/docs/_build/html/_images/scan_result.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/scan_success.png b/docs/_build/html/_images/scan_success.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/sirius.png b/docs/_build/html/_images/sirius.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/tar_file.png b/docs/_build/html/_images/tar_file.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/tree_view.png b/docs/_build/html/_images/tree_view.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/tree_view_doml.png b/docs/_build/html/_images/tree_view_doml.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_images/xtext.png b/docs/_build/html/_images/xtext.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_sources/download.md.txt b/docs/_build/html/_sources/download.md.txt old mode 100755 new mode 100644 diff --git a/docs/_build/html/_sources/implementation.md.txt b/docs/_build/html/_sources/implementation.md.txt old mode 100755 new mode 100644 diff --git a/docs/_build/html/_sources/index.md.txt b/docs/_build/html/_sources/index.md.txt old mode 100755 new mode 100644 diff --git a/docs/_build/html/_sources/manual.md.txt b/docs/_build/html/_sources/manual.md.txt old mode 100755 new mode 100644 diff --git a/docs/_build/html/_static/_sphinx_javascript_frameworks_compat.js b/docs/_build/html/_static/_sphinx_javascript_frameworks_compat.js old mode 100755 new mode 100644 diff --git a/docs/_build/html/_static/basic.css b/docs/_build/html/_static/basic.css old mode 100755 new mode 100644 diff --git a/docs/_build/html/_static/css/badge_only.css b/docs/_build/html/_static/css/badge_only.css old mode 100755 new mode 100644 diff --git a/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff b/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff old mode 100755 new mode 100644 diff --git a/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff2 b/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff2 old mode 100755 new mode 100644 diff --git a/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff b/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff old mode 100755 new mode 100644 diff --git a/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff2 b/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff2 old mode 100755 new mode 100644 diff --git a/docs/_build/html/_static/css/fonts/fontawesome-webfont.eot b/docs/_build/html/_static/css/fonts/fontawesome-webfont.eot old mode 100755 new mode 100644 diff --git a/docs/_build/html/_static/css/fonts/fontawesome-webfont.svg b/docs/_build/html/_static/css/fonts/fontawesome-webfont.svg old mode 100755 new mode 100644 diff --git a/docs/_build/html/_static/css/fonts/fontawesome-webfont.ttf b/docs/_build/html/_static/css/fonts/fontawesome-webfont.ttf old mode 100755 new mode 100644 diff --git a/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff b/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff old mode 100755 new mode 100644 diff --git a/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff2 b/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff2 old mode 100755 new mode 100644 diff --git a/docs/_build/html/_static/css/fonts/lato-bold-italic.woff b/docs/_build/html/_static/css/fonts/lato-bold-italic.woff old mode 100755 new mode 100644 diff --git a/docs/_build/html/_static/css/fonts/lato-bold-italic.woff2 b/docs/_build/html/_static/css/fonts/lato-bold-italic.woff2 old mode 100755 new mode 100644 diff --git a/docs/_build/html/_static/css/fonts/lato-bold.woff b/docs/_build/html/_static/css/fonts/lato-bold.woff old mode 100755 new mode 100644 diff --git a/docs/_build/html/_static/css/fonts/lato-bold.woff2 b/docs/_build/html/_static/css/fonts/lato-bold.woff2 old mode 100755 new mode 100644 diff --git a/docs/_build/html/_static/css/fonts/lato-normal-italic.woff b/docs/_build/html/_static/css/fonts/lato-normal-italic.woff old mode 100755 new mode 100644 diff --git a/docs/_build/html/_static/css/fonts/lato-normal-italic.woff2 b/docs/_build/html/_static/css/fonts/lato-normal-italic.woff2 old mode 100755 new mode 100644 diff --git a/docs/_build/html/_static/css/fonts/lato-normal.woff b/docs/_build/html/_static/css/fonts/lato-normal.woff old mode 100755 new mode 100644 diff --git a/docs/_build/html/_static/css/fonts/lato-normal.woff2 b/docs/_build/html/_static/css/fonts/lato-normal.woff2 old mode 100755 new mode 100644 diff --git a/docs/_build/html/_static/css/theme.css b/docs/_build/html/_static/css/theme.css old mode 100755 new mode 100644 diff --git a/docs/_build/html/_static/doctools.js b/docs/_build/html/_static/doctools.js old mode 100755 new mode 100644 diff --git a/docs/_build/html/_static/documentation_options.js b/docs/_build/html/_static/documentation_options.js old mode 100755 new mode 100644 diff --git a/docs/_build/html/_static/file.png b/docs/_build/html/_static/file.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_static/jquery-3.6.0.js b/docs/_build/html/_static/jquery-3.6.0.js old mode 100755 new mode 100644 diff --git a/docs/_build/html/_static/jquery.js b/docs/_build/html/_static/jquery.js old mode 100755 new mode 100644 diff --git a/docs/_build/html/_static/js/badge_only.js b/docs/_build/html/_static/js/badge_only.js old mode 100755 new mode 100644 diff --git a/docs/_build/html/_static/js/html5shiv-printshiv.min.js b/docs/_build/html/_static/js/html5shiv-printshiv.min.js old mode 100755 new mode 100644 diff --git a/docs/_build/html/_static/js/html5shiv.min.js b/docs/_build/html/_static/js/html5shiv.min.js old mode 100755 new mode 100644 diff --git a/docs/_build/html/_static/js/theme.js b/docs/_build/html/_static/js/theme.js old mode 100755 new mode 100644 diff --git a/docs/_build/html/_static/language_data.js b/docs/_build/html/_static/language_data.js old mode 100755 new mode 100644 diff --git a/docs/_build/html/_static/minus.png b/docs/_build/html/_static/minus.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_static/plus.png b/docs/_build/html/_static/plus.png old mode 100755 new mode 100644 diff --git a/docs/_build/html/_static/pygments.css b/docs/_build/html/_static/pygments.css old mode 100755 new mode 100644 diff --git a/docs/_build/html/_static/searchtools.js b/docs/_build/html/_static/searchtools.js old mode 100755 new mode 100644 diff --git a/docs/_build/html/_static/underscore-1.13.1.js b/docs/_build/html/_static/underscore-1.13.1.js old mode 100755 new mode 100644 diff --git a/docs/_build/html/_static/underscore.js b/docs/_build/html/_static/underscore.js old mode 100755 new mode 100644 diff --git a/docs/_build/html/download.html b/docs/_build/html/download.html old mode 100755 new mode 100644 diff --git a/docs/_build/html/genindex.html b/docs/_build/html/genindex.html old mode 100755 new mode 100644 diff --git a/docs/_build/html/implementation.html b/docs/_build/html/implementation.html old mode 100755 new mode 100644 diff --git a/docs/_build/html/index.html b/docs/_build/html/index.html old mode 100755 new mode 100644 diff --git a/docs/_build/html/manual.html b/docs/_build/html/manual.html old mode 100755 new mode 100644 diff --git a/docs/_build/html/objects.inv b/docs/_build/html/objects.inv old mode 100755 new mode 100644 diff --git a/docs/_build/html/search.html b/docs/_build/html/search.html old mode 100755 new mode 100644 diff --git a/docs/_build/html/searchindex.js b/docs/_build/html/searchindex.js old mode 100755 new mode 100644 diff --git a/docs/conf.py b/docs/conf.py old mode 100755 new mode 100644 diff --git a/docs/download.md b/docs/download.md old mode 100755 new mode 100644 diff --git a/docs/img/Apertura_vistas.png b/docs/img/Apertura_vistas.png old mode 100755 new mode 100644 diff --git a/docs/img/Catalog_view.png b/docs/img/Catalog_view.png old mode 100755 new mode 100644 diff --git a/docs/img/Deployment_details.png b/docs/img/Deployment_details.png old mode 100755 new mode 100644 diff --git a/docs/img/Ecomponents.png b/docs/img/Ecomponents.png old mode 100755 new mode 100644 diff --git a/docs/img/Generador_domlx.png b/docs/img/Generador_domlx.png old mode 100755 new mode 100644 diff --git a/docs/img/Guardar_resultado_optimizador.png b/docs/img/Guardar_resultado_optimizador.png old mode 100755 new mode 100644 diff --git a/docs/img/Load_info_canary.png b/docs/img/Load_info_canary.png old mode 100755 new mode 100644 diff --git a/docs/img/Menu_canary_sandbox.png b/docs/img/Menu_canary_sandbox.png old mode 100755 new mode 100644 diff --git a/docs/img/Menu_piacere_toolbar.png b/docs/img/Menu_piacere_toolbar.png old mode 100755 new mode 100644 diff --git a/docs/img/Model_check_result.png b/docs/img/Model_check_result.png old mode 100755 new mode 100644 diff --git a/docs/img/Model_validation_nombre.png b/docs/img/Model_validation_nombre.png old mode 100755 new mode 100644 diff --git a/docs/img/Nombre_canary.png b/docs/img/Nombre_canary.png old mode 100755 new mode 100644 diff --git a/docs/img/Nombre_resultado_optimizador.png b/docs/img/Nombre_resultado_optimizador.png old mode 100755 new mode 100644 diff --git a/docs/img/Perspectiva_Piacere.png b/docs/img/Perspectiva_Piacere.png old mode 100755 new mode 100644 diff --git a/docs/img/Proyecto_nuevo.png b/docs/img/Proyecto_nuevo.png old mode 100755 new mode 100644 diff --git a/docs/img/Resultado_validacion.png b/docs/img/Resultado_validacion.png old mode 100755 new mode 100644 diff --git a/docs/img/Runtime_submenu.png b/docs/img/Runtime_submenu.png old mode 100755 new mode 100644 diff --git a/docs/img/Save_result_validation.png b/docs/img/Save_result_validation.png old mode 100755 new mode 100644 diff --git a/docs/img/Security_scan.png b/docs/img/Security_scan.png old mode 100755 new mode 100644 diff --git a/docs/img/Seleccion_vista.png b/docs/img/Seleccion_vista.png old mode 100755 new mode 100644 diff --git a/docs/img/Seleccion_workspace.png b/docs/img/Seleccion_workspace.png old mode 100755 new mode 100644 diff --git a/docs/img/Submenu_doml.png b/docs/img/Submenu_doml.png old mode 100755 new mode 100644 diff --git a/docs/img/Submenu_domlx.png b/docs/img/Submenu_domlx.png old mode 100755 new mode 100644 diff --git a/docs/img/Submenu_json.png b/docs/img/Submenu_json.png old mode 100755 new mode 100644 diff --git a/docs/img/Submenu_zip.png b/docs/img/Submenu_zip.png old mode 100755 new mode 100644 diff --git a/docs/img/Ventana_principal-piacere.png b/docs/img/Ventana_principal-piacere.png old mode 100755 new mode 100644 diff --git a/docs/img/Ventana_principal.png b/docs/img/Ventana_principal.png old mode 100755 new mode 100644 diff --git a/docs/img/acceleo.png b/docs/img/acceleo.png old mode 100755 new mode 100644 diff --git a/docs/img/alt.png b/docs/img/alt.png old mode 100755 new mode 100644 diff --git a/docs/img/apertura_perspectiva.png b/docs/img/apertura_perspectiva.png old mode 100755 new mode 100644 diff --git a/docs/img/apertura_preferencias.png b/docs/img/apertura_preferencias.png old mode 100755 new mode 100644 diff --git a/docs/img/canary/canary1.png b/docs/img/canary/canary1.png old mode 100755 new mode 100644 diff --git a/docs/img/canary/canary10.png b/docs/img/canary/canary10.png old mode 100755 new mode 100644 diff --git a/docs/img/canary/canary11.png b/docs/img/canary/canary11.png old mode 100755 new mode 100644 diff --git a/docs/img/canary/canary12.png b/docs/img/canary/canary12.png old mode 100755 new mode 100644 diff --git a/docs/img/canary/canary2.png b/docs/img/canary/canary2.png old mode 100755 new mode 100644 diff --git a/docs/img/canary/canary3.png b/docs/img/canary/canary3.png old mode 100755 new mode 100644 diff --git a/docs/img/canary/canary4.png b/docs/img/canary/canary4.png old mode 100755 new mode 100644 diff --git a/docs/img/canary/canary5.png b/docs/img/canary/canary5.png old mode 100755 new mode 100644 diff --git a/docs/img/canary/canary6.png b/docs/img/canary/canary6.png old mode 100755 new mode 100644 diff --git a/docs/img/canary/canary7.png b/docs/img/canary/canary7.png old mode 100755 new mode 100644 diff --git a/docs/img/canary/canary8.png b/docs/img/canary/canary8.png old mode 100755 new mode 100644 diff --git a/docs/img/canary/canary9.png b/docs/img/canary/canary9.png old mode 100755 new mode 100644 diff --git a/docs/img/canary_sandbox.png b/docs/img/canary_sandbox.png old mode 100755 new mode 100644 diff --git a/docs/img/catalogue/catalogue1.png b/docs/img/catalogue/catalogue1.png old mode 100755 new mode 100644 diff --git a/docs/img/catalogue/catalogue2.png b/docs/img/catalogue/catalogue2.png old mode 100755 new mode 100644 diff --git a/docs/img/contenido_preferencias.png b/docs/img/contenido_preferencias.png old mode 100755 new mode 100644 diff --git a/docs/img/doml_file.png b/docs/img/doml_file.png old mode 100755 new mode 100644 diff --git a/docs/img/doml_newfile.png b/docs/img/doml_newfile.png old mode 100755 new mode 100644 diff --git a/docs/img/domlx_file.png b/docs/img/domlx_file.png old mode 100755 new mode 100644 diff --git a/docs/img/egit.png b/docs/img/egit.png old mode 100755 new mode 100644 diff --git a/docs/img/generador_doml.png b/docs/img/generador_doml.png old mode 100755 new mode 100644 diff --git a/docs/img/generated_doml_success.png b/docs/img/generated_doml_success.png old mode 100755 new mode 100644 diff --git a/docs/img/gmf.png b/docs/img/gmf.png old mode 100755 new mode 100644 diff --git a/docs/img/graphiti.png b/docs/img/graphiti.png old mode 100755 new mode 100644 diff --git a/docs/img/nombre_generadorIAC.png b/docs/img/nombre_generadorIAC.png old mode 100755 new mode 100644 diff --git a/docs/img/optimized.png b/docs/img/optimized.png old mode 100755 new mode 100644 diff --git a/docs/img/papyrus.png b/docs/img/papyrus.png old mode 100755 new mode 100644 diff --git a/docs/img/preferencias.png b/docs/img/preferencias.png old mode 100755 new mode 100644 diff --git a/docs/img/runtime/runtime1.png b/docs/img/runtime/runtime1.png old mode 100755 new mode 100644 diff --git a/docs/img/runtime/runtime10.png b/docs/img/runtime/runtime10.png old mode 100755 new mode 100644 diff --git a/docs/img/runtime/runtime2.png b/docs/img/runtime/runtime2.png old mode 100755 new mode 100644 diff --git a/docs/img/runtime/runtime3.png b/docs/img/runtime/runtime3.png old mode 100755 new mode 100644 diff --git a/docs/img/runtime/runtime4.png b/docs/img/runtime/runtime4.png old mode 100755 new mode 100644 diff --git a/docs/img/runtime/runtime5.png b/docs/img/runtime/runtime5.png old mode 100755 new mode 100644 diff --git a/docs/img/runtime/runtime6.png b/docs/img/runtime/runtime6.png old mode 100755 new mode 100644 diff --git a/docs/img/runtime/runtime7.png b/docs/img/runtime/runtime7.png old mode 100755 new mode 100644 diff --git a/docs/img/runtime/runtime8.png b/docs/img/runtime/runtime8.png old mode 100755 new mode 100644 diff --git a/docs/img/runtime/runtime9.png b/docs/img/runtime/runtime9.png old mode 100755 new mode 100644 diff --git a/docs/img/scan_result.png b/docs/img/scan_result.png old mode 100755 new mode 100644 diff --git a/docs/img/scan_success.png b/docs/img/scan_success.png old mode 100755 new mode 100644 diff --git a/docs/img/seleccion_carpeta_canary.png b/docs/img/seleccion_carpeta_canary.png old mode 100755 new mode 100644 diff --git a/docs/img/sirius.png b/docs/img/sirius.png old mode 100755 new mode 100644 diff --git a/docs/img/tar_file.png b/docs/img/tar_file.png old mode 100755 new mode 100644 diff --git a/docs/img/tree_view.png b/docs/img/tree_view.png old mode 100755 new mode 100644 diff --git a/docs/img/tree_view_doml.png b/docs/img/tree_view_doml.png old mode 100755 new mode 100644 diff --git a/docs/img/xtext.png b/docs/img/xtext.png old mode 100755 new mode 100644 diff --git a/docs/implementation.md b/docs/implementation.md old mode 100755 new mode 100644 diff --git a/docs/index.md b/docs/index.md old mode 100755 new mode 100644 diff --git a/docs/make.bat b/docs/make.bat old mode 100755 new mode 100644 diff --git a/docs/manual.md b/docs/manual.md old mode 100755 new mode 100644 diff --git a/openapi.json b/openapi.json new file mode 100644 index 0000000000000000000000000000000000000000..d316d3218fb3e3a590d40dfbc5627282912d76b3 --- /dev/null +++ b/openapi.json @@ -0,0 +1,354 @@ +{ + "openapi": "3.0.2", + "info": { + "title": "FastAPI", + "version": "0.1.0" + }, + "servers": [ + { + "url": "https://prc.ci.piacere.digital.tecnalia.dev/", + "description": "ci server" + } + ], + "paths": { + "/deployments": { + "get": { + "summary": "Get All Deployments", + "operationId": "get_all_deployments_deployments_get", + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": {}, + "example": [ + { + "deploymentId": "1001", + "iemStatus": "STARTED" + }, + { + "deploymentId": "1002", + "iemStatus": "ERROR" + } + ] + } + } + } + } + }, + "post": { + "summary": "Create New Deployment", + "operationId": "create_new_deployment_deployments_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NewDeployment" + }, + "examples": { + "openstack": { + "summary": "Openstack demo", + "description": "Using our basic openstack demo project", + "value": { + "repository_url": "https://git.code.tecnalia.com/piacere/public/demos/hello-openstack.git", + "deployment_id": "1001", + "commit_id": "82f10894ff037e984fce930dc2b1091e9b9eac51" + } + }, + "openstack_no_commit_id": { + "summary": "Openstack demo without commit id", + "description": "Using our basic openstack demo project, with the default commit id", + "value": { + "repository_url": "https://git.code.tecnalia.com/piacere/public/demos/hello-openstack.git", + "deployment_id": "1001" + } + } + } + } + } + }, + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": {}, + "example": "Deployment created" + } + } + }, + "400": { + "description": "Deployment ID already exists", + "content": { + "application/json": { + "example": "Deployment with this ID already exists" + } + } + }, + "406": { + "description": "Invalid characters", + "content": { + "application/json": { + "example": "Deployment ID cannot contain comma and underscore characters" + } + } + }, + "500": { + "description": "Server error (most likely BPMN diagram needs an update)", + "content": { + "application/json": { + "example": "Could not parse BPMN diagram. Fix the process definition file" + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/deployments/{deployment_id}/self_heal": { + "post": { + "summary": "Trigger Self Healing", + "operationId": "trigger_self_healing_deployments__deployment_id__self_heal_post", + "parameters": [ + { + "required": true, + "schema": { + "title": "Deployment Id", + "type": "string" + }, + "name": "deployment_id", + "in": "path" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SelfHealingMessage" + }, + "examples": { + "redeploy": { + "summary": "Redeploy", + "description": "Using IEM for the redeployment.", + "value": { + "method": "redeploy" + } + }, + "optimise": { + "summary": "Optimise", + "description": "Using IOP for the optimisation", + "value": { + "method": "optimise" + } + } + } + } + } + }, + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": {}, + "example": { + "message": "Request received" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/deployments/{deployment_id}/finish": { + "post": { + "summary": "Finish The Deployment", + "operationId": "finish_the_deployment_deployments__deployment_id__finish_post", + "parameters": [ + { + "required": true, + "schema": { + "title": "Deployment Id", + "type": "string" + }, + "name": "deployment_id", + "in": "path" + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": {}, + "example": { + "message": "Request received" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/deployments/{deployment_id}": { + "get": { + "summary": "Get Deployment", + "operationId": "get_deployment_deployments__deployment_id__get", + "parameters": [ + { + "required": true, + "schema": { + "title": "Deployment Id", + "type": "string" + }, + "name": "deployment_id", + "in": "path" + } + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": {}, + "example": { + "deploymentId": "1001", + "iemStatus": "STARTED" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + } + }, + "components": { + "schemas": { + "HTTPValidationError": { + "title": "HTTPValidationError", + "type": "object", + "properties": { + "detail": { + "title": "Detail", + "type": "array", + "items": { + "$ref": "#/components/schemas/ValidationError" + } + } + } + }, + "NewDeployment": { + "title": "NewDeployment", + "required": [ + "repository_url", + "deployment_id" + ], + "type": "object", + "properties": { + "repository_url": { + "title": "Repository Url", + "maxLength": 65536, + "minLength": 1, + "type": "string", + "format": "uri" + }, + "deployment_id": { + "title": "Deployment Id", + "type": "string" + }, + "commit_id": { + "title": "Commit Id", + "type": "string", + "default": "master" + } + } + }, + "SelfHealingMessage": { + "title": "SelfHealingMessage", + "required": [ + "method" + ], + "type": "object", + "properties": { + "method": { + "$ref": "#/components/schemas/SelfHealingMethod" + } + } + }, + "SelfHealingMethod": { + "title": "SelfHealingMethod", + "enum": [ + "redeploy", + "optimise" + ], + "type": "string", + "description": "An enumeration." + }, + "ValidationError": { + "title": "ValidationError", + "required": [ + "loc", + "msg", + "type" + ], + "type": "object", + "properties": { + "loc": { + "title": "Location", + "type": "array", + "items": { + "type": "string" + } + }, + "msg": { + "title": "Message", + "type": "string" + }, + "type": { + "title": "Error Type", + "type": "string" + } + } + } + } + } +} \ No newline at end of file