branch feature/editor updated (2d79ad2 -> 3242f1b)
This is an automated email from the git hooks/post-receive script. New change to branch feature/editor in repository eugene. See https://gitlab.nuiton.org/nuiton/eugene.git discards 2d79ad2 Review stereotypes display discards ec10156 Review stereotypes display discards 9460677 Fix stereotype loading discards 67585f8 rebase from develop discards 783de78 use nuiton-config 3.0 + last stable of jaxx discards 07ddf2c Rethink stereotypes and tag values API (See #4042) discards 29801ec POC discards 9025fbd mImprove readme discards 4f989bb Meilleurs icons discards 164cbd8 POC adds 526793d Fix stereotype loading adds 0706519 Fix tag value loading adds a1285a8 update librairies adds e43b611 fix site modules (remove them from menu) adds 7df4f64 [jgitflow-maven-plugin]updating develop poms to master versions to avoid merge conflicts adds c27a544 [jgitflow-maven-plugin]updating poms for 3.0-alpha-8 branch with snapshot versions adds d814d8a Optimize dependencies adds 4073a6d optimize third-parties adds 18ef37e Add missing license header adds e7ce438 [jgitflow-maven-plugin]updating poms for branch'release/3.0-alpha-8' with non-snapshot versions adds f3256eb [jgitflow-maven-plugin]merging 'release/3.0-alpha-8' into 'master' adds dd02a82 [jgitflow-maven-plugin]merging 'master' into 'develop' adds 82a3f3f [jgitflow-maven-plugin]Updating develop poms back to pre merge state adds 22f5073 use last release version adds 61302f5 Fix typos in javadoc adds df817ad Introduce a ng bean transformer (Fixes #4071) adds 3ea5e82 Depreciates (and make them no more usable) old bean transformers (Fixes #4072) adds 1803f2f upate doc adds a43986f update release doc adds 3eb009e upate doc adds 359a65e [jgitflow-maven-plugin]updating develop poms to master versions to avoid merge conflicts adds 4f84fcf use last release version adds d0a2b9d [jgitflow-maven-plugin]updating poms for 3.0-alpha-9 branch with snapshot versions adds ca38a42 [jgitflow-maven-plugin]updating poms for branch'release/3.0-alpha-9' with non-snapshot versions adds 5c6f603 [jgitflow-maven-plugin]merging 'release/3.0-alpha-9' into 'master' adds 7b8064e [jgitflow-maven-plugin]merging 'master' into 'develop' adds d31560a [jgitflow-maven-plugin]Updating develop poms back to pre merge state adds 1f5f566 Fix eugene plugin version new 11fef60 POC new 70d0476 Meilleurs icons new 1287067 mImprove readme new 35a8990 POC new 6c6747b Rethink stereotypes and tag values API (See #4042) new 03c8158 use nuiton-config 3.0 + last stable of jaxx new 8ef2db2 rebase from develop new 3242f1b Review stereotypes display This update added new revisions after undoing existing revisions. That is to say, some revisions that were in the old version of the branch are not in the new version. This situation occurs when a user --force pushes a change and generates a repository containing something like this: * -- * -- B -- O -- O -- O (2d79ad2) \ N -- N -- N refs/heads/feature/editor (3242f1b) You should already have received notification emails for all of the O revisions, and so the following emails describe only the N revisions from the common base, B. Any revisions marked "omits" are not gone; other references still refer to them. Any revisions marked "discards" are gone forever. The 8 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 3242f1b32ff1e6c9f98fe8bc6ed9b6fc43c62a86 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Oct 9 15:58:18 2016 +0200 Review stereotypes display commit 8ef2db22bc3cd190ed2cb7982b035d4613e80f04 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Oct 9 14:37:44 2016 +0200 rebase from develop commit 03c81588d2ee5b8011c5ba86f800837cd5bdbbcd Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Oct 2 19:19:06 2016 +0200 use nuiton-config 3.0 + last stable of jaxx commit 6c6747b174da7fec53993cb989ada8f791820106 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Sep 26 12:29:09 2016 +0200 Rethink stereotypes and tag values API (See #4042) commit 35a8990c3c8d80fc0c5fc13eb974e0d25826c169 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Sep 24 09:49:07 2016 +0200 POC commit 128706748dd31aa442c99e24ca4ba617616821fd Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Sep 21 08:28:14 2016 +0200 mImprove readme commit 70d04763e74bd5a20fb5aabfa704e205c7afb0f1 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Sep 19 13:33:33 2016 +0200 Meilleurs icons commit 11fef607c6117ba7e0ec7b2557edee02adb21a47 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Sep 19 12:23:23 2016 +0200 POC Summary of changes: README.md | 16 +- eugene-editor-maven-plugin/pom.xml | 6 - .../application/ui/content/AttributeContentUI.jaxx | 7 +- .../application/ui/content/ClassContentUI.jaxx | 7 +- .../editor/application/ui/content/ContentUI.jcss | 8 +- .../ui/content/EnumerationContentUI.jaxx | 7 +- .../ui/content/EnumerationContentUIHandler.java | 1 + .../application/ui/content/InterfaceContentUI.jaxx | 7 +- .../application/ui/content/ModelContentUI.jaxx | 7 +- .../application/ui/content/OperationContentUI.jaxx | 6 +- .../application/ui/content/PackageContentUI.jaxx | 7 +- eugene-java-templates/pom.xml | 2 +- ...vaBeanTransformer.java => BeanTransformer.java} | 834 ++++++++++++++++++--- .../eugene/java/BeanTransformerTagValues.java | 476 ++++++++++++ .../nuiton/eugene/java/EugeneJavaTagValues.java | 132 +--- .../nuiton/eugene/java/JavaBeanTransformer.java | 204 +---- .../eugene/java/JavaBeanTransformerTagValues.java | 181 ----- .../eugene/java/SimpleJavaBeanTransformer.java | 520 +------------ .../java/SimpleJavaBeanTransformerTagValues.java | 461 ------------ .../SimpleJavaBeanWithNoInterfaceTransformer.java | 716 +----------------- ...avaBeanWithNoInterfaceTransformerTagValues.java | 421 ----------- ...ion.tagvalue.provider.TagValueMetadatasProvider | 4 +- .../i18n/eugene-java-templates_en_GB.properties | 15 +- .../i18n/eugene-java-templates_fr_FR.properties | 15 +- eugene-java-templates/src/site/rst/index.rst | 3 +- .../eugene/java/BeanTransformerTagValuesTest.java | 74 ++ .../eugene/java/EugeneJavaTagValuesTest.java | 11 +- eugene-maven-plugin/pom.xml | 4 - eugene-maven-plugin/src/it/generate/all/pom.xml | 4 +- .../src/license/THIRD-PARTY.properties | 5 +- .../io/ModelExtensionFileParserIniImpl.java | 13 +- .../models/extension/io/ModelExtensionFormat.java | 22 + .../models/extension/io/ModelExtensionWriter.java | 22 + .../extension/io/ModelExtensionWriterIniImpl.java | 22 + .../io/ModelExtensionWriterPropertiesImpl.java | 22 + pom.xml | 28 +- pom.xml.orig | 700 ----------------- src/site/rst/05-execution.rst.vm | 12 +- src/site/rst/index.rst | 2 +- src/site/site_en.xml | 2 +- src/site/site_fr.xml | 2 +- 41 files changed, 1482 insertions(+), 3526 deletions(-) rename eugene-java-templates/src/main/java/org/nuiton/eugene/java/{AbstractJavaBeanTransformer.java => BeanTransformer.java} (52%) create mode 100644 eugene-java-templates/src/main/java/org/nuiton/eugene/java/BeanTransformerTagValues.java delete mode 100644 eugene-java-templates/src/main/java/org/nuiton/eugene/java/JavaBeanTransformerTagValues.java delete mode 100644 eugene-java-templates/src/main/java/org/nuiton/eugene/java/SimpleJavaBeanTransformerTagValues.java delete mode 100644 eugene-java-templates/src/main/java/org/nuiton/eugene/java/SimpleJavaBeanWithNoInterfaceTransformerTagValues.java create mode 100644 eugene-java-templates/src/test/java/org/nuiton/eugene/java/BeanTransformerTagValuesTest.java delete mode 100644 pom.xml.orig -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/editor in repository eugene. See https://gitlab.nuiton.org/nuiton/eugene.git commit 11fef607c6117ba7e0ec7b2557edee02adb21a47 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Sep 19 12:23:23 2016 +0200 POC --- eugene-editor-maven-plugin/LICENSE.txt | 165 ++ eugene-editor-maven-plugin/README.md | 2 + eugene-editor-maven-plugin/pom.xml | 500 +++++ .../src/license/THIRD-PARTY.properties | 37 + .../src/main/assembly/bin.xml | 73 + .../src/main/assembly/dist/go.bat | 1 + .../src/main/assembly/dist/go.sh | 4 + .../EugeneEditorApplicationContext.java | 77 + .../editor/application/ModelExtensionHelper.java | 161 ++ .../eugene/editor/application/ModelHelper.java | 66 + .../application/config/EugeneEditorConfig.java | 23 + .../config/EugeneEditorConfigOption.java | 103 + .../application/ui/ContentUIInitializer.java | 223 ++ .../editor/application/ui/ContentUIManager.java | 55 + .../editor/application/ui/EugeneEditorCommon.jcss | 26 + .../editor/application/ui/EugeneEditorUI.jaxx | 96 + .../editor/application/ui/EugeneEditorUI.jcss | 164 ++ .../application/ui/EugeneEditorUIHandler.java | 44 + .../editor/application/ui/EugeneEditorUIMode.java | 11 + .../application/ui/actions/ActionSupport.java | 23 + .../ui/actions/ChangeApplicationLocaleAction.java | 53 + .../application/ui/actions/GotoSiteAction.java | 29 + .../ui/actions/QuitApplicationAction.java | 33 + .../application/ui/actions/SaveProjectAction.java | 29 + .../application/ui/actions/ShowAboutAction.java | 29 + .../application/ui/actions/ShowConfigAction.java | 29 + .../application/ui/content/AttributeContentUI.jaxx | 104 + .../application/ui/content/AttributeContentUI.jcss | 69 + .../ui/content/AttributeContentUIHandler.java | 69 + .../application/ui/content/ClassContentUI.jaxx | 84 + .../application/ui/content/ClassContentUI.jcss | 68 + .../ui/content/ClassContentUIHandler.java | 60 + .../application/ui/content/ContenUIHandler.java | 154 ++ .../editor/application/ui/content/ContentUI.java | 29 + .../editor/application/ui/content/ContentUI.jcss | 74 + .../ui/content/EnumerationContentUI.jaxx | 73 + .../ui/content/EnumerationContentUI.jcss | 50 + .../ui/content/EnumerationContentUIHandler.java | 45 + .../application/ui/content/InterfaceContentUI.jaxx | 77 + .../application/ui/content/InterfaceContentUI.jcss | 63 + .../ui/content/InterfaceContentUIHandler.java | 55 + .../application/ui/content/ModelContentUI.jaxx | 62 + .../application/ui/content/ModelContentUI.jcss | 19 + .../ui/content/ModelContentUIHandler.java | 34 + .../application/ui/content/Multiplicity.java | 40 + .../application/ui/content/OperationContentUI.jaxx | 87 + .../application/ui/content/OperationContentUI.jcss | 67 + .../ui/content/OperationContentUIHandler.java | 68 + .../application/ui/content/PackageContentUI.jaxx | 59 + .../application/ui/content/PackageContentUI.jcss | 37 + .../ui/content/PackageContentUIHandler.java | 33 + .../ui/content/ParameterTableModel.java | 103 + .../actions/AddInterfaceFromClassAction.java | 39 + .../actions/AddLiteralFromEnumerationAction.java | 32 + .../actions/AddSuperClassFromInterfaceAction.java | 31 + .../ui/content/actions/ContentActionSupport.java | 55 + .../CreateAttributeFromAttributeAction.java | 44 + .../actions/CreateAttributeFromClassAction.java | 42 + .../CreateAttributeFromInterfaceAction.java | 42 + .../actions/CreateClassFromClassAction.java | 45 + .../actions/CreateClassFromPackageAction.java | 43 + .../CreateEnumerationFromEnumerationAction.java | 44 + .../CreateEnumerationFromPackageAction.java | 43 + .../CreateInterfaceFromInterfaceAction.java | 44 + .../actions/CreateInterfaceFromPackageAction.java | 43 + .../CreateLiteralFromEnumerationAction.java | 21 + .../actions/CreateOperationFromClassAction.java | 43 + .../CreateOperationFromInterfaceAction.java | 43 + .../CreateOperationFromOperationAction.java | 44 + .../actions/CreatePackageFromModelAction.java | 45 + .../actions/CreatePackageFromPackageAction.java | 42 + .../CreateParameterFromOperationAction.java | 35 + .../DeleteAttributeFromAttributeAction.java | 45 + .../actions/DeleteClassFromClassAction.java | 46 + .../DeleteEnumerationFromEnumerationAction.java | 46 + .../DeleteInterfaceFromInterfaceAction.java | 41 + .../DeleteOperationFromOperationAction.java | 45 + .../actions/DeletePackageFromPackageAction.java | 45 + .../DeleteParameterFromOperationAction.java | 50 + .../actions/RemoveInterfaceFromClassAction.java | 38 + .../RemoveLiteralFromEnumerationAction.java | 36 + .../RemoveSuperClassFromInterfaceAction.java | 38 + .../application/ui/tree/EugeneEditorTree.java | 29 + .../ui/tree/EugeneEditorTreeCellRenderer.java | 35 + .../ui/tree/EugeneEditorTreeSelectionModel.java | 99 + .../application/ui/tree/TreeModelBuilder.java | 82 + .../application/ui/tree/node/AttributeNode.java | 71 + .../editor/application/ui/tree/node/ClassNode.java | 71 + .../application/ui/tree/node/EnumerationNode.java | 63 + .../application/ui/tree/node/InterfaceNode.java | 65 + .../editor/application/ui/tree/node/ModelNode.java | 137 ++ .../application/ui/tree/node/NodeSupport.java | 195 ++ .../application/ui/tree/node/OperationNode.java | 97 + .../application/ui/tree/node/PackageNode.java | 49 + .../eugene/editor/plugin/EugeneEditorMojo.java | 169 ++ .../eugene-editor-maven-plugin_en_GB.properties | 102 + .../eugene-editor-maven-plugin_fr_FR.properties | 102 + .../src/main/resources/icons/action-about.png | Bin 0 -> 936 bytes .../src/main/resources/icons/action-add.png | Bin 0 -> 733 bytes .../src/main/resources/icons/action-cancel.png | Bin 0 -> 587 bytes .../src/main/resources/icons/action-close.png | Bin 0 -> 688 bytes .../src/main/resources/icons/action-collapse.png | Bin 0 -> 372 bytes .../src/main/resources/icons/action-config.png | Bin 0 -> 611 bytes .../src/main/resources/icons/action-delete.png | Bin 0 -> 783 bytes .../src/main/resources/icons/action-exit.png | Bin 0 -> 830 bytes .../src/main/resources/icons/action-expand.png | Bin 0 -> 371 bytes .../main/resources/icons/action-fileChooser.png | Bin 0 -> 441 bytes .../src/main/resources/icons/action-help.png | Bin 0 -> 746 bytes .../src/main/resources/icons/action-i18n-en.png | Bin 0 -> 599 bytes .../src/main/resources/icons/action-i18n-fr.png | Bin 0 -> 545 bytes .../src/main/resources/icons/action-i18n-uk.png | Bin 0 -> 599 bytes .../src/main/resources/icons/action-save.png | Bin 0 -> 838 bytes .../src/main/resources/icons/action-select.png | Bin 0 -> 392 bytes .../src/main/resources/icons/action-site.png | Bin 0 -> 928 bytes .../src/main/resources/icons/action-translate.png | Bin 0 -> 790 bytes .../src/main/resources/icons/action-unselect.png | Bin 0 -> 311 bytes .../src/main/resources/icons/modifier-package.png | Bin 0 -> 1400 bytes .../src/main/resources/icons/modifier-private.png | Bin 0 -> 1403 bytes .../main/resources/icons/modifier-protected.png | Bin 0 -> 1403 bytes .../src/main/resources/icons/modifier-public.png | Bin 0 -> 1408 bytes .../src/main/resources/icons/type-attribute.png | Bin 0 -> 1536 bytes .../src/main/resources/icons/type-class.png | Bin 0 -> 1523 bytes .../src/main/resources/icons/type-enumeration.png | Bin 0 -> 1512 bytes .../src/main/resources/icons/type-interface.png | Bin 0 -> 1520 bytes .../src/main/resources/icons/type-model.png | Bin 0 -> 1414 bytes .../src/main/resources/icons/type-operation.png | Bin 0 -> 1518 bytes .../src/main/resources/icons/type-package.png | Bin 0 -> 1409 bytes .../src/main/resources/log4j.properties | 30 + .../tree/node/AttributeNode-error-validation.xml | 44 + .../ui/tree/node/ClassNode-error-validation.xml | 36 + .../tree/node/EnumerationNode-error-validation.xml | 36 + .../tree/node/InterfaceNode-error-validation.xml | 36 + .../ui/tree/node/ModelNode-error-validation.xml | 36 + .../tree/node/OperationNode-error-validation.xml | 44 + .../ui/tree/node/PackageNode-error-validation.xml | 36 + .../src/main/resources/validators.xml | 54 + .../src/site/fr/rst/index.rst | 72 + eugene-editor-maven-plugin/src/site/rst/index.rst | 44 + eugene-editor-maven-plugin/src/site/site_en.xml | 62 + eugene-editor-maven-plugin/src/site/site_fr.xml | 66 + .../observe-entities/observe-common.objectmodel | 670 ++++++ .../observe-entities/observe-longline.objectmodel | 2251 ++++++++++++++++++++ .../observe-entities/observe-seine.objectmodel | 1677 +++++++++++++++ .../observe-entities/observe.objectmodel-ext | 248 +++ .../object/xml/ObjectModelClassifierImpl.java | 16 + .../object/xml/ObjectModelEnumerationImpl.java | 11 + .../object/xml/ObjectModelOperationImpl.java | 10 + pom.xml | 141 +- 148 files changed, 11973 insertions(+), 2 deletions(-) diff --git a/eugene-editor-maven-plugin/LICENSE.txt b/eugene-editor-maven-plugin/LICENSE.txt new file mode 100644 index 0000000..cca7fc2 --- /dev/null +++ b/eugene-editor-maven-plugin/LICENSE.txt @@ -0,0 +1,165 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. diff --git a/eugene-editor-maven-plugin/README.md b/eugene-editor-maven-plugin/README.md new file mode 100644 index 0000000..d2e50d3 --- /dev/null +++ b/eugene-editor-maven-plugin/README.md @@ -0,0 +1,2 @@ +To deploy new version of pom: mvn deploy +To install localy: mvn install diff --git a/eugene-editor-maven-plugin/pom.xml b/eugene-editor-maven-plugin/pom.xml new file mode 100644 index 0000000..27ecd26 --- /dev/null +++ b/eugene-editor-maven-plugin/pom.xml @@ -0,0 +1,500 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + #%L + EUGene :: Maven plugin + + $HeadURL$ + %% + Copyright (C) 2006 - 2010 CodeLutin + %% + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Lesser Public License for more details. + + You should have received a copy of the GNU General Lesser Public + License along with this program. If not, see + <http://www.gnu.org/licenses/lgpl-3.0.html>. + #L% + --> + +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.nuiton</groupId> + <artifactId>eugene</artifactId> + <version>3.0-SNAPSHOT</version> + </parent> + + <groupId>org.nuiton.eugene</groupId> + <artifactId>eugene-editor-maven-plugin</artifactId> + <packaging>maven-plugin</packaging> + + <name>EUGene :: Editor Maven Plugin</name> + <description>EUGene model editor maven plugin</description> + <inceptionYear>2016</inceptionYear> + + <properties> + + <javaVersion>1.8</javaVersion> + <signatureArtifactId>java18</signatureArtifactId> + <signatureVersion>1.0</signatureVersion> + + <!-- jaxx configuration --> + <jaxx.addProjectClassPath>true</jaxx.addProjectClassPath> + <jaxx.addSourcesToClassPath>true</jaxx.addSourcesToClassPath> + <jaxx.defaultErrorUIFQN>jaxx.runtime.validator.swing.ui.ImageValidationUI</jaxx.defaultErrorUIFQN> + <!--<jaxx.useUIManagerForIcon>true</jaxx.useUIManagerForIcon>--> + <jaxx.autoImportCss>true</jaxx.autoImportCss> + <jaxx.autoRecurseInCss>false</jaxx.autoRecurseInCss> + <jaxx.commonCss> + ${project.basedir}/src/main/java/org/nuiton/eugene/editor/application/ui/EugeneEditorUI.jcss + </jaxx.commonCss> + <jaxx.validatorFactoryFQN>jaxx.runtime.validator.swing.SwingValidator</jaxx.validatorFactoryFQN> + <jaxx.cssExtension>jcss</jaxx.cssExtension> + <jaxx.addAutoHandlerUI>true</jaxx.addAutoHandlerUI> + + <applicationName>EugeneEditor</applicationName> + + <!-- generate license bundled files --> + <license.generateBundle>true</license.generateBundle> + <license.bundleThirdPartyPath>META-INF/${applicationName}-THIRD-PARTY.txt</license.bundleThirdPartyPath> + <license.bundleLicensePath>META-INF/${applicationName}-LICENSE.txt</license.bundleLicensePath> + + <!-- i18n configuration --> + <i18n.bundles>fr_FR,en_GB</i18n.bundles> + <i18n.silent>true</i18n.silent> + <!--<i18n.failsIfAnyKeyMissingValue>true</i18n.failsIfAnyKeyMissingValue>--> + <i18n.checkBundle>true</i18n.checkBundle> + <i18n.showEmpty>true</i18n.showEmpty> + + <i18n.bundleOutputName>${applicationName}-i18n</i18n.bundleOutputName> + <i18n.bundleCsvFile>${applicationName}-i18n.csv</i18n.bundleCsvFile> + <i18n.bundleCsvSeparator>|</i18n.bundleCsvSeparator> + + <maven.build.timestamp.format>dd/MM/yyyy HH:mm z</maven.build.timestamp.format> + <buildDate>${maven.build.timestamp}</buildDate> + <buildNumber/> + + </properties> + + <dependencies> + + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>eugene</artifactId> + <version>${project.version}</version> + <scope>compile</scope> + </dependency> + + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-plugin-api</artifactId> + </dependency> + + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-core</artifactId> + </dependency> + + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-model</artifactId> + </dependency> + + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-artifact</artifactId> + </dependency> + + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-settings</artifactId> + </dependency> + + <dependency> + <groupId>org.apache.maven.plugin-tools</groupId> + <artifactId>maven-plugin-annotations</artifactId> + </dependency> + + <dependency> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-utils</artifactId> + </dependency> + + <dependency> + <groupId>org.nuiton</groupId> + <artifactId>helper-maven-plugin-api</artifactId> + </dependency> + + <dependency> + <groupId>org.nuiton</groupId> + <artifactId>nuiton-utils</artifactId> + </dependency> + <dependency> + <groupId>org.nuiton</groupId> + <artifactId>nuiton-config</artifactId> + </dependency> + + <!-- TODO pk devoir rajouter ça ? --> + <dependency> + <groupId>net.sf.saxon</groupId> + <artifactId>saxon</artifactId> + <version>8.7</version> + <scope>runtime</scope> + </dependency> + <!-- TODO pk devoir rajouter ça ? --> + <dependency> + <groupId>net.sf.saxon</groupId> + <artifactId>saxon-dom</artifactId> + <version>8.7</version> + <scope>runtime</scope> + </dependency> + + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-lang3</artifactId> + </dependency> + + <dependency> + <groupId>commons-collections</groupId> + <artifactId>commons-collections</artifactId> + </dependency> + + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-collections4</artifactId> + </dependency> + + <dependency> + <groupId>com.google.guava</groupId> + <artifactId>guava</artifactId> + </dependency> + + <!-- jaxx dependencies --> + + <dependency> + <groupId>org.nuiton.jaxx</groupId> + <artifactId>jaxx-runtime</artifactId> + </dependency> + <dependency> + <groupId>org.nuiton.jaxx</groupId> + <artifactId>jaxx-validator</artifactId> + </dependency> + <dependency> + <groupId>org.nuiton.jaxx</groupId> + <artifactId>jaxx-widgets</artifactId> + </dependency> + <dependency> + <groupId>org.nuiton.jaxx</groupId> + <artifactId>jaxx-widgets-select</artifactId> + </dependency> + <dependency> + <groupId>org.nuiton.jaxx</groupId> + <artifactId>jaxx-widgets-about</artifactId> + </dependency> + <dependency> + <groupId>org.nuiton.jaxx</groupId> + <artifactId>jaxx-config</artifactId> + </dependency> + <dependency> + <groupId>org.nuiton.jaxx</groupId> + <artifactId>jaxx-application-api</artifactId> + </dependency> + + <!-- SwingX --> + <dependency> + <groupId>org.swinglabs.swingx</groupId> + <artifactId>swingx-core</artifactId> + </dependency> + <dependency> + <groupId>org.swinglabs.swingx</groupId> + <artifactId>swingx-painters</artifactId> + </dependency> + <dependency> + <groupId>org.swinglabs.swingx</groupId> + <artifactId>swingx-common</artifactId> + </dependency> + <dependency> + <groupId>org.swinglabs.swingx</groupId> + <artifactId>swingx-autocomplete</artifactId> + </dependency> + <dependency> + <groupId>org.swinglabs</groupId> + <artifactId>jxlayer</artifactId> + </dependency> + + <dependency> + <groupId>log4j</groupId> + <artifactId>log4j</artifactId> + <scope>runtime</scope> + </dependency> + + </dependencies> + + <build> + + <pluginManagement> + <plugins> + + <plugin> + <artifactId>maven-plugin-plugin</artifactId> + <configuration> + <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound> + </configuration> + <executions> + <execution> + <goals> + <goal>helpmojo</goal> + <goal>descriptor</goal> + </goals> + </execution> + </executions> + </plugin> + + </plugins> + </pluginManagement> + + <plugins> + + <!-- expose new plexus components --> + <plugin> + <groupId>org.codehaus.plexus</groupId> + <artifactId>plexus-component-metadata</artifactId> + <executions> + <execution> + <goals> + <goal>generate-metadata</goal> + </goals> + </execution> + </executions> + </plugin> + + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>buildnumber-maven-plugin</artifactId> + <executions> + <execution> + <inherited>false</inherited> + <goals> + <goal>create</goal> + </goals> + <phase>validate</phase> + </execution> + </executions> + <configuration> + <doCheck>false</doCheck> + <doUpdate>false</doUpdate> + </configuration> + </plugin> + + <plugin> + <groupId>${project.groupId}</groupId> + <artifactId>eugene-maven-plugin</artifactId> + <version>${project.version}</version> + <executions> + <execution> + <phase>generate-sources</phase> + <id>generate-config</id> + <configuration> + <modelName>EugeneEditor</modelName> + <packageName>org.nuiton.eugene.editor.application.config</packageName> + </configuration> + <goals> + <goal>generate-config</goal> + </goals> + </execution> + </executions> + </plugin> + + <plugin> + <groupId>org.nuiton.jaxx</groupId> + <artifactId>jaxx-maven-plugin</artifactId> + <executions> + <execution> + <goals> + <goal>generate</goal> + </goals> + </execution> + </executions> + </plugin> + + <plugin> + <groupId>org.nuiton.i18n</groupId> + <artifactId>i18n-maven-plugin</artifactId> + <executions> + <execution> + <id>parse-java</id> + <goals> + <goal>parserJava</goal> + </goals> + <configuration> + <entries> + <entry> + <specificGoal>parserJava</specificGoal> + <basedir>${project.build.directory}/generated-sources/java/</basedir> + </entry> + </entries> + </configuration> + </execution> + <execution> + <id>parse-validation</id> + <goals> + <goal>parserValidation</goal> + </goals> + <configuration> + <entries> + <entry> + <basedir>${project.basedir}/src/main/resources/</basedir> + <includes> + <param>**/**-validation.xml</param> + </includes> + </entry> + </entries> + </configuration> + </execution> + <execution> + <id>gen</id> + <goals> + <goal>gen</goal> + </goals> + </execution> + <execution> + <id>make-bundle</id> + <goals> + <goal>bundle</goal> + <goal>generate-csv-bundle</goal> + </goals> + </execution> + </executions> + </plugin> + + </plugins> + </build> + + <profiles> + + <profile> + <id>changelog-profile</id> + <activation> + <property> + <name>performRelease</name> + <value>true</value> + </property> + </activation> + <build> + <defaultGoal>generate-resources</defaultGoal> + + <plugins> + + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>build-helper-maven-plugin</artifactId> + <executions> + <execution> + <id>parse-version</id> + <goals> + <goal>parse-version</goal> + </goals> + </execution> + </executions> + </plugin> + + <plugin> + <artifactId>maven-dependency-plugin</artifactId> + <executions> + <execution> + <id>get-changelog</id> + <phase>generate-resources</phase> + <goals> + <goal>copy</goal> + </goals> + <configuration> + <outputDirectory>${project.build.directory}/changelog</outputDirectory> + <artifactItems> + <artifactItem> + <groupId>${project.parent.groupId}</groupId> + <artifactId>${project.parent.artifactId}</artifactId> + <version>${project.version}</version> + <classifier>changelog</classifier> + <type>pom</type> + </artifactItem> + </artifactItems> + </configuration> + </execution> + </executions> + </plugin> + + <plugin> + <artifactId>maven-antrun-plugin</artifactId> + <executions> + <execution> + <id>Copy changelog</id> + <phase>process-resources</phase> + <configuration> + <target> + <copy failonerror="true" overwrite="true" + file="${project.build.directory}/changelog/${project.parent.artifactId}-${project.version}-changelog.pom" + tofile="${project.build.directory}/generated-sources/license/${applicationName}.txt"/> + <copy failonerror="true" overwrite="true" + file="${project.build.directory}/changelog/${project.parent.artifactId}-${project.version}-changelog.pom" + tofile="${project.build.directory}/generated-sources/license/META-INF/${applicationName}-CHANGELOG.txt"/> + </target> + </configuration> + <goals> + <goal>run</goal> + </goals> + </execution> + </executions> + </plugin> + + </plugins> + </build> + </profile> + + <profile> + <id>run-observe-entities</id> + + <properties> + <sourceDirectory>${project.basedir}/src/test/resources/observe-entities</sourceDirectory> + </properties> + + <build> + <defaultGoal>compile</defaultGoal> + <plugins> + <plugin> + <groupId>${project.groupId}</groupId> + <artifactId>${project.artifactId}</artifactId> + <version>${project.version}</version> + <executions> + <execution> + <phase>compile</phase> + <goals><goal>run</goal></goals> + <configuration> + <sourceDirectory>${sourceDirectory}</sourceDirectory> + <generatedSourceDirectory>${sourceDirectory}</generatedSourceDirectory> + </configuration> + </execution> + </executions> + <dependencies> + <dependency> + <groupId>org.nuiton.topia</groupId> + <artifactId>topia-templates</artifactId> + <version>3.1.3</version> + <scope>compile</scope> + </dependency> + </dependencies> + </plugin> + </plugins> + </build> + </profile> + + </profiles> +</project> diff --git a/eugene-editor-maven-plugin/src/license/THIRD-PARTY.properties b/eugene-editor-maven-plugin/src/license/THIRD-PARTY.properties new file mode 100644 index 0000000..fc3ffd2 --- /dev/null +++ b/eugene-editor-maven-plugin/src/license/THIRD-PARTY.properties @@ -0,0 +1,37 @@ +# Generated by org.codehaus.mojo.license.AddThirdPartyMojo +#------------------------------------------------------------------------------- +# Already used licenses in project : +# - Apache License +# - Apache License Version 2.0 +# - Apache Software License, Version 1.1 +# - BSD License +# - COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0 +# - Eclipse Public License 1.0 +# - Eclipse Public License, Version 1.0 +# - Indiana University Extreme! Lab Software License, vesion 1.1.1 +# - Lesser General Public License (LGPL) v 3.0 +# - Lesser General Public License (LPGL) +# - Lesser General Public License (LPGL) v 2.1 +# - MIT License +# - Mozilla Public License Version 1.0 +# - New BSD License +# - Public Domain +# - The Apache Software License, Version 2.0 +# - The GNU General Public License +# - The SAX License +# - The W3C License +# - http://classworlds.codehaus.org/license.html +# - http://jaxen.codehaus.org/license.html +#------------------------------------------------------------------------------- +# Please fill the missing licenses for dependencies : +# +# +#Sun Aug 09 09:53:01 CEST 2015 +antlr--antlr--2.7.2=BSD License +classworlds--classworlds--1.1-alpha-2=http\://classworlds.codehaus.org/license.html +commons-primitives--commons-primitives--1.0=The Apache Software License, Version 2.0 +dom4j--dom4j--1.1=BSD License +org.codehaus.plexus--plexus-container-default--1.0-alpha-9-stable-1=The Apache Software License, Version 2.0 +org.codehaus.plexus--plexus-i18n--1.0-beta-10=The Apache Software License, Version 2.0 +org.codehaus.plexus--plexus-velocity--1.1.7=The Apache Software License, Version 2.0 +oro--oro--2.0.8=The Apache Software License, Version 2.0 diff --git a/eugene-editor-maven-plugin/src/main/assembly/bin.xml b/eugene-editor-maven-plugin/src/main/assembly/bin.xml new file mode 100644 index 0000000..17504b2 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/assembly/bin.xml @@ -0,0 +1,73 @@ +<!-- + #%L + ObServe :: Application Swing + %% + Copyright (C) 2008 - 2016 IRD, Codelutin, Tony Chemit + %% + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public + License along with this program. If not, see + <http://www.gnu.org/licenses/gpl-3.0.html>. + #L% + --> +<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd"> + <id>bin</id> + <formats> + <format>zip</format> + </formats> + + <fileSets> + + <fileSet> + <directory>target</directory> + <outputDirectory/> + <fileMode>0755</fileMode> + <includes> + <include>${project.build.finalName}.jar</include> + <include>${applicationName}.exe</include> + </includes> + </fileSet> + + <fileSet> + <directory>target/classes</directory> + <outputDirectory/> + <includes> + <include>THIRD-PARTY.txt</include> + <include>LICENSE.txt</include> + </includes> + </fileSet> + + <fileSet> + <directory>src/main/assembly/dist</directory> + <outputDirectory/> + <includes> + <include>**/*</include> + </includes> + <excludes> + <exclude>**/*.sh</exclude> + <exclude>**/*.bat</exclude> + </excludes> + </fileSet> + + <fileSet> + <directory>src/main/assembly/dist</directory> + <outputDirectory/> + <fileMode>0755</fileMode> + <filtered>true</filtered> + <includes> + <include>**/*.sh</include> + <include>**/*.bat</include> + </includes> + </fileSet> + </fileSets> +</assembly> diff --git a/eugene-editor-maven-plugin/src/main/assembly/dist/go.bat b/eugene-editor-maven-plugin/src/main/assembly/dist/go.bat new file mode 100755 index 0000000..cffa0cc --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/assembly/dist/go.bat @@ -0,0 +1 @@ +java -Xmx512M -Xms512M -jar ${project.build.finalName}.jar %1 %2 %3 %4 %5 %6 %7 %8 %9 \ No newline at end of file diff --git a/eugene-editor-maven-plugin/src/main/assembly/dist/go.sh b/eugene-editor-maven-plugin/src/main/assembly/dist/go.sh new file mode 100755 index 0000000..065be9f --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/assembly/dist/go.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +MX=512M +java -Xmx${MX} -Xms${MX} -jar ${project.build.finalName}.jar "$@" \ No newline at end of file diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/EugeneEditorApplicationContext.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/EugeneEditorApplicationContext.java new file mode 100644 index 0000000..d23a2e9 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/EugeneEditorApplicationContext.java @@ -0,0 +1,77 @@ +package org.nuiton.eugene.editor.application; + +import org.nuiton.eugene.editor.application.config.EugeneEditorConfig; +import org.nuiton.eugene.models.object.ObjectModel; +import org.nuiton.eugene.models.stereotype.AggregateStereotypeDefinitionProvider; +import org.nuiton.eugene.models.tagvalue.AggregateTagValueDefinitionProvider; +import org.nuiton.i18n.I18n; +import org.nuiton.i18n.init.DefaultI18nInitializer; + +import javax.swing.ActionMap; +import java.util.Locale; + +/** + * Created on 15/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class EugeneEditorApplicationContext { + + protected final EugeneEditorConfig config; + protected final ClassLoader classLoader; + protected final ObjectModel objectModel; + protected final Object lock; + protected final ActionMap actionMap; + protected final ModelExtensionHelper modelExtensionHelper; + protected final ModelHelper modelHelper; + + public EugeneEditorApplicationContext(EugeneEditorConfig config, + ClassLoader classLoader, + AggregateTagValueDefinitionProvider tagValueDefinitionProvider, + AggregateStereotypeDefinitionProvider stereotypeDefinitionProvider, + ObjectModel objectModel) { + + I18n.init(new DefaultI18nInitializer("EugeneEditor-i18n"), Locale.FRANCE); + + this.config = config; + this.classLoader = classLoader; + this.modelExtensionHelper = new ModelExtensionHelper(tagValueDefinitionProvider, stereotypeDefinitionProvider); + this.modelHelper = new ModelHelper(objectModel); + this.objectModel = objectModel; + this.lock = new Object(); + this.actionMap = new ActionMap(); + + } + + public EugeneEditorConfig getConfig() { + return config; + } + + public ModelExtensionHelper getModelExtensionHelper() { + return modelExtensionHelper; + } + + public ModelHelper getModelHelper() { + return modelHelper; + } + + public ObjectModel getObjectModel() { + return objectModel; + } + + public ActionMap getActionMap() { + return actionMap; + } + + public void lock() throws InterruptedException { + synchronized (lock) { + lock.wait(); + } + } + + public void unlock() { + synchronized (lock) { + lock.notifyAll(); + } + } +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ModelExtensionHelper.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ModelExtensionHelper.java new file mode 100644 index 0000000..a2451b5 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ModelExtensionHelper.java @@ -0,0 +1,161 @@ +package org.nuiton.eugene.editor.application; + +import org.nuiton.eugene.models.object.ObjectModel; +import org.nuiton.eugene.models.object.ObjectModelAttribute; +import org.nuiton.eugene.models.object.ObjectModelClassifier; +import org.nuiton.eugene.models.object.ObjectModelEnumeration; +import org.nuiton.eugene.models.object.ObjectModelInterface; +import org.nuiton.eugene.models.object.ObjectModelOperation; +import org.nuiton.eugene.models.object.ObjectModelPackage; +import org.nuiton.eugene.models.stereotype.AggregateStereotypeDefinitionProvider; +import org.nuiton.eugene.models.stereotype.StereotypeDefinition; +import org.nuiton.eugene.models.stereotype.StereotypeDefinitionProvider; +import org.nuiton.eugene.models.tagvalue.AggregateTagValueDefinitionProvider; +import org.nuiton.eugene.models.tagvalue.TagValueDefinition; +import org.nuiton.eugene.models.tagvalue.TagValueDefinitionProvider; + +import java.util.Arrays; +import java.util.Map; +import java.util.Set; +import java.util.TreeMap; +import java.util.stream.Collectors; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class ModelExtensionHelper { + + private final AggregateTagValueDefinitionProvider tagValueDefinitionProvider; + private final AggregateStereotypeDefinitionProvider stereotypeDefinitionProvider; + + private final Map<String, TagValueDefinition> modelTagValues; + private final Map<String, TagValueDefinition> packageTagValues; + private final Map<String, TagValueDefinition> classTagValues; + private final Map<String, TagValueDefinition> interfaceTagValues; + private final Map<String, TagValueDefinition> enumerationTagValues; + private final Map<String, TagValueDefinition> attributeTagValues; + private final Map<String, TagValueDefinition> operationTagValues; + + private final Map<String, StereotypeDefinition> modelStereotypes; + private final Map<String, StereotypeDefinition> packageStereotypes; + private final Map<String, StereotypeDefinition> classStereotypes; + private final Map<String, StereotypeDefinition> interfaceStereotypes; + private final Map<String, StereotypeDefinition> enumerationStereotypes; + private final Map<String, StereotypeDefinition> attributeStereotypes; + private final Map<String, StereotypeDefinition> operationStereotypes; + + public ModelExtensionHelper(AggregateTagValueDefinitionProvider tagValueDefinitionProvider, + AggregateStereotypeDefinitionProvider stereotypeDefinitionProvider) { + this.tagValueDefinitionProvider = tagValueDefinitionProvider; + this.stereotypeDefinitionProvider = stereotypeDefinitionProvider; + this.modelStereotypes = filterStereotypes(stereotypeDefinitionProvider, ObjectModel.class); + this.packageStereotypes = filterStereotypes(stereotypeDefinitionProvider, ObjectModelPackage.class); + this.classStereotypes = filterStereotypes(stereotypeDefinitionProvider, ObjectModelClassifier.class); + this.interfaceStereotypes = filterStereotypes(stereotypeDefinitionProvider, ObjectModelInterface.class); + this.enumerationStereotypes = filterStereotypes(stereotypeDefinitionProvider, ObjectModelEnumeration.class); + this.attributeStereotypes = filterStereotypes(stereotypeDefinitionProvider, ObjectModelAttribute.class); + this.operationStereotypes = filterStereotypes(stereotypeDefinitionProvider, ObjectModelOperation.class); + this.modelTagValues = filterTagValues(tagValueDefinitionProvider, ObjectModel.class); + this.packageTagValues = filterTagValues(tagValueDefinitionProvider, ObjectModelPackage.class); + this.classTagValues = filterTagValues(tagValueDefinitionProvider, ObjectModelClassifier.class); + this.interfaceTagValues = filterTagValues(tagValueDefinitionProvider, ObjectModelInterface.class); + this.enumerationTagValues = filterTagValues(tagValueDefinitionProvider, ObjectModelEnumeration.class); + this.attributeTagValues = filterTagValues(tagValueDefinitionProvider, ObjectModelAttribute.class); + this.operationTagValues = filterTagValues(tagValueDefinitionProvider, ObjectModelOperation.class); + + } + + public AggregateTagValueDefinitionProvider getTagValueDefinitionProvider() { + return tagValueDefinitionProvider; + } + + public AggregateStereotypeDefinitionProvider getStereotypeDefinitionProvider() { + return stereotypeDefinitionProvider; + } + + public Map<String, StereotypeDefinition> getModelStereotypes() { + return modelStereotypes; + } + + public Map<String, StereotypeDefinition> getPackageStereotypes() { + return packageStereotypes; + } + + public Map<String, StereotypeDefinition> getClassStereotypes() { + return classStereotypes; + } + + public Map<String, StereotypeDefinition> getInterfaceStereotypes() { + return interfaceStereotypes; + } + + public Map<String, StereotypeDefinition> getEnumerationStereotypes() { + return enumerationStereotypes; + } + + public Map<String, StereotypeDefinition> getAttributeStereotypes() { + return attributeStereotypes; + } + + public Map<String, StereotypeDefinition> getOperationStereotypes() { + return operationStereotypes; + } + + public Map<String, TagValueDefinition> getModelTagValues() { + return modelTagValues; + } + + public Map<String, TagValueDefinition> getPackageTagValues() { + return packageTagValues; + } + + public Map<String, TagValueDefinition> getClassTagValues() { + return classTagValues; + } + + public Map<String, TagValueDefinition> getInterfaceTagValues() { + return interfaceTagValues; + } + + public Map<String, TagValueDefinition> getEnumerationTagValues() { + return enumerationTagValues; + } + + public Map<String, TagValueDefinition> getAttributeTagValues() { + return attributeTagValues; + } + + public Map<String, TagValueDefinition> getOperationTagValues() { + return operationTagValues; + } + + protected <O> Map<String, StereotypeDefinition> filterStereotypes(AggregateStereotypeDefinitionProvider stereotypeDefinitionProvider, Class<O> type) { + + Map<String, StereotypeDefinition> allDefinitions = new TreeMap<>(); + for (StereotypeDefinitionProvider definitionProvider : stereotypeDefinitionProvider) { + + Set<Map.Entry<String, StereotypeDefinition>> definitions = definitionProvider.getDefinition().entrySet().stream() + .filter(d -> Arrays.asList(d.getValue().target()).contains(type)) + .collect(Collectors.toSet()); + definitions.forEach(e -> allDefinitions.put(e.getKey(), e.getValue())); + } + return allDefinitions; + } + + protected <O> Map<String, TagValueDefinition> filterTagValues(AggregateTagValueDefinitionProvider tagValueDefinitionProvider, Class<O> type) { + + Map<String, TagValueDefinition> allDefinitions = new TreeMap<>(); + for (TagValueDefinitionProvider definitionProvider : tagValueDefinitionProvider) { + + Set<Map.Entry<String, TagValueDefinition>> definitions = definitionProvider.getDefinition().entrySet().stream() + .filter(d -> Arrays.asList(d.getValue().target()).contains(type)) + .collect(Collectors.toSet()); + definitions.forEach(e -> allDefinitions.put(e.getKey(), e.getValue())); + } + return allDefinitions; + } + + +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ModelHelper.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ModelHelper.java new file mode 100644 index 0000000..9b50184 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ModelHelper.java @@ -0,0 +1,66 @@ +package org.nuiton.eugene.editor.application; + +import org.nuiton.eugene.models.object.ObjectModel; +import org.nuiton.eugene.models.object.ObjectModelClass; +import org.nuiton.eugene.models.object.ObjectModelInterface; + +import java.util.Set; +import java.util.stream.Collectors; + +/** + * Created on 17/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class ModelHelper { + + private final ObjectModel model; + + public ModelHelper(ObjectModel model) { + this.model = model; + } + + public Set<String> getAllClasses() { + return model.getClasses().stream().map(ObjectModelClass::getQualifiedName).collect(Collectors.toSet()); + } + + public Set<String> getAllClassesWithJava() { + Set<String> result = getAllClasses(); + result.add("byte"); + result.add("boolean"); + result.add("char"); + result.add("int"); + result.add("long"); + result.add("float"); + result.add("double"); + result.add("void"); + result.add("Byte"); + result.add("Boolean"); + result.add("Char"); + result.add("Int"); + result.add("Long"); + result.add("Float"); + result.add("Double"); + result.add("java.lang.Byte"); + result.add("java.lang.Boolean"); + result.add("java.lang.Character"); + result.add("java.lang.Integer"); + result.add("java.lang.Long"); + result.add("java.lang.Float"); + result.add("java.lang.Double"); + result.add("String"); + result.add("java.lang.String"); + result.add("java.util.Date"); + result.add("java.sql.Timestamp"); + result.add("java.sql.Time"); + return result; + } + + public Set<String> getAllInterfaces() { + return model.getInterfaces().stream().map(ObjectModelInterface::getQualifiedName).collect(Collectors.toSet()); + } + + public ObjectModel getModel() { + return model; + } +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/config/EugeneEditorConfig.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/config/EugeneEditorConfig.java new file mode 100644 index 0000000..fe6f97e --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/config/EugeneEditorConfig.java @@ -0,0 +1,23 @@ +package org.nuiton.eugene.editor.application.config; + +import com.google.common.base.Charsets; +import org.nuiton.config.ApplicationConfig; +import org.nuiton.config.ArgumentsParserException; + +/** + * Created on 15/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class EugeneEditorConfig extends GeneratedEugeneEditorConfig { + + public EugeneEditorConfig(String... args) throws ArgumentsParserException { + + ApplicationConfig delegate = get(); + delegate.setEncoding(Charsets.UTF_8.name()); + delegate.setConfigFileName("EugeneEditor.conf"); + delegate.parse(args); + + } + +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/config/EugeneEditorConfigOption.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/config/EugeneEditorConfigOption.java new file mode 100644 index 0000000..2ce2930 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/config/EugeneEditorConfigOption.java @@ -0,0 +1,103 @@ +package org.nuiton.eugene.editor.application.config; + +import org.nuiton.config.ApplicationConfig; +import org.nuiton.config.ConfigOptionDef; + +import java.io.File; + +import static org.nuiton.i18n.I18n.n; + +/** + * Created on 15/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public enum EugeneEditorConfigOption implements ConfigOptionDef { + + /** le nom du fichier de configuration (sans le prefix .) */ + CONFIG_FILE( + String.class, ApplicationConfig.CONFIG_FILE_NAME, + n("eugene.editor.config.configFileName.description"), + null + ), + /** le repertoire de stoquage local */ + WORKING_DIRECTORY( + File.class, "eugene.editor.working.directory", + n("eugene.editor.config.workingDirectory.description"), + null + ), + /** le repertoire de stoquage local */ + MODEL_EXTENSION_FILE( + File.class, "eugene.editor.modelExtensionFile", + n("eugene.editor.config.modelExtensionFile.description"), + null + ); + + + /** + * Clef qui represente l'option (c'est celle enregistrée dans le fichier de + * configuration). + */ + protected final String key; + + /** Clef i18n de description de l'option */ + protected final String description; + + /** Type de l'option */ + protected final Class<?> type; + + /** Valeur par défaut de l'option */ + protected String defaultValue; + + EugeneEditorConfigOption(Class<?> type, String key, String description, String defaultValue) { + this.key = key; + this.description = description; + this.type = type; + this.defaultValue = defaultValue; + } + + @Override + public String getKey() { + return key; + } + + @Override + public String getDescription() { + return description; + } + + @Override + public Class<?> getType() { + return type; + } + + @Override + public String getDefaultValue() { + return defaultValue; + } + + @Override + public void setDefaultValue(String defaultValue) { + this.defaultValue = defaultValue; + } + + @Override + public boolean isTransient() { + // pour le moment on ne sauvegarde rien + return true; + } + + @Override + public void setTransient(boolean b) { + } + + @Override + public boolean isFinal() { + return false; + } + + @Override + public void setFinal(boolean b) { + } + +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/ContentUIInitializer.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/ContentUIInitializer.java new file mode 100644 index 0000000..e05c029 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/ContentUIInitializer.java @@ -0,0 +1,223 @@ +package org.nuiton.eugene.editor.application.ui; + +import com.google.common.collect.ImmutableMap; +import jaxx.runtime.swing.editor.EnumEditor; +import jaxx.runtime.swing.editor.NumberEditor; +import jaxx.runtime.swing.renderer.EnumEditorRenderer; +import org.apache.commons.lang3.BooleanUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.reflect.ConstructorUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.eugene.editor.application.ui.content.ContentUI; +import org.nuiton.jaxx.application.bean.JavaBeanObjectUtil; + +import javax.swing.Action; +import javax.swing.Icon; +import javax.swing.JButton; +import javax.swing.JCheckBox; +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JTextField; +import javax.swing.SwingUtilities; +import javax.swing.text.JTextComponent; +import java.awt.Component; +import java.awt.event.FocusAdapter; +import java.awt.event.FocusEvent; +import java.awt.event.KeyAdapter; +import java.awt.event.KeyEvent; +import java.lang.reflect.InvocationTargetException; +import java.util.EnumSet; +import java.util.LinkedHashMap; +import java.util.Map; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class ContentUIInitializer { + + public static final String CLIENT_PROPERTY_PROPERTY_NAME = "property"; + /** Logger. */ + private static final Log log = LogFactory.getLog(ContentUIInitializer.class); + private final Map<Class, Callback> callbacks; + + public ContentUIInitializer(Map<Class, Callback> callbacks) { + this.callbacks = callbacks; + } + + public static <U extends ContentUI> ContentUIInitializer newInitializer() { + + return ContentUIInitializer.<U>builder() + .addCallback(JButton.class, (ui, editor) -> { + + String actionId = editor.getName(); + + String actionFqn = ui.getClass().getPackage().getName() + ".actions." + StringUtils.capitalize(actionId) + "Action"; + + try { + Class<? extends Action> aClass = (Class<? extends Action>) Class.forName(actionFqn); + if (log.isDebugEnabled()) { + log.debug("Found action: " + actionFqn); + } + Action action = ConstructorUtils.invokeConstructor(aClass, ui); + Icon icon = editor.getIcon(); + if (icon != null) { + action.putValue(Action.SMALL_ICON, icon); + } + String text = editor.getText(); + if (text != null) { + action.putValue(Action.NAME, text); + } + String tip = editor.getToolTipText(); + if (tip != null) { + action.putValue(Action.SHORT_DESCRIPTION, tip); + } + action.setEnabled(editor.isEnabled()); + editor.setAction(action); + } catch (ClassNotFoundException e) { + // no action foud + } catch (NoSuchMethodException | InstantiationException | InvocationTargetException | IllegalAccessException e) { + + //TODO use a specialized exception + throw new RuntimeException("Could not init action: " + actionId, e); + } + }) + .addCallback(NumberEditor.class, (ui, editor) -> { + if (log.isDebugEnabled()) { + log.debug("init number editor " + editor.getName()); + } + editor.init(); + }) + .addCallback(JLabel.class, (ui, editor) -> { + String name = editor.getName(); + if (name != null && name.endsWith("Label")) { + name = StringUtils.removeEnd(name, "Label"); + + Component objectById = (Component) ui.getObjectById(name); + if (objectById != null) { + + if (log.isDebugEnabled()) { + log.debug("Set labelFor " + objectById.getName()); + } + editor.setLabelFor(objectById); + } + } + }) + .addCallback(JTextField.class, (ui, editor) -> { + addAutoSelectOnFocus(editor); + + String propertyName = (String) editor.getClientProperty(CLIENT_PROPERTY_PROPERTY_NAME); + if (propertyName != null) { + editor.addKeyListener(new KeyAdapter() { + + @Override + public void keyReleased(KeyEvent e) { + JTextField source = (JTextField) e.getSource(); + String text = source.getText(); + JavaBeanObjectUtil.setProperty(ui.getModel(), propertyName, text); + } + }); + } + + }) + .addCallback(JCheckBox.class, (ui, editor) -> { + if (log.isDebugEnabled()) { + log.debug("init simple boolean editor " + editor.getName()); + } + final String propertyName = (String) editor.getClientProperty(CLIENT_PROPERTY_PROPERTY_NAME); + if (propertyName != null) { + editor.addItemListener(event -> { + Boolean newValue = ((JCheckBox) event.getSource()).isSelected(); + JavaBeanObjectUtil.setProperty(ui.getModel(), propertyName, newValue); + }); + } + }) + .addCallback(EnumEditor.class, (ui, editor) -> { + if (log.isDebugEnabled()) { + log.debug("init enumEditor editor " + editor.getName()); + } + ImmutableMap.Builder<Enum, String> labelsBuilder = ImmutableMap.builder(); + for (Object e : EnumSet.allOf(editor.getType())) { + labelsBuilder.put((Enum) e, e.toString()); + } + editor.setRenderer(new EnumEditorRenderer<>(labelsBuilder.build())); + }) + + .build(); + + } + + public static <U extends ContentUI> Builder<U> builder() { + return new Builder<>(); + } + + protected static void addAutoSelectOnFocus(JTextComponent jTextField) { + jTextField.addFocusListener(new FocusAdapter() { + + @Override + public void focusGained(final FocusEvent e) { + SwingUtilities.invokeLater(() -> { + JTextField source = (JTextField) e.getSource(); + source.selectAll(); + }); + + } + }); + } + + public <U extends ContentUI> U initUI(U ui) { + + if (log.isDebugEnabled()) { + log.debug("ui " + getClass()); + } + + for (String name : ui.get$objectMap().keySet()) { + Object o = ui.getObjectById(name); + + if (o == null) { + continue; + } + if (o instanceof Component) { + + Component o1 = (Component) o; + Callback<U, Component> callback = callbacks.get(o1.getClass()); + if (callback != null) { + if (log.isDebugEnabled()) { + log.debug("Found callback for component: " + o1.getName() + " → " + callback); + } + callback.onComponentFound(ui, o1); + } + } + + } + + return ui; + } + + protected boolean isAutoSelectOnFocus(JComponent comp) { + Boolean selectOnFocus = (Boolean) comp.getClientProperty("selectOnFocus"); + return BooleanUtils.isTrue(selectOnFocus); + } + + interface Callback<U extends ContentUI, C extends Component> { + + void onComponentFound(U ui, C component); + } + + public static class Builder<U extends ContentUI> { + + protected final Map<Class, Callback> callbacks = new LinkedHashMap<>(); + + public <C extends Component> Builder<U> addCallback(Class<C> type, Callback<U, C> callback) { + callbacks.put(type, callback); + return this; + } + + public ContentUIInitializer build() { + return new ContentUIInitializer(callbacks); + } + } + +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/ContentUIManager.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/ContentUIManager.java new file mode 100644 index 0000000..885ece1 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/ContentUIManager.java @@ -0,0 +1,55 @@ +package org.nuiton.eugene.editor.application.ui; + +import org.nuiton.eugene.editor.application.ui.content.AttributeContentUI; +import org.nuiton.eugene.editor.application.ui.content.ClassContentUI; +import org.nuiton.eugene.editor.application.ui.content.ContentUI; +import org.nuiton.eugene.editor.application.ui.content.EnumerationContentUI; +import org.nuiton.eugene.editor.application.ui.content.InterfaceContentUI; +import org.nuiton.eugene.editor.application.ui.content.ModelContentUI; +import org.nuiton.eugene.editor.application.ui.content.OperationContentUI; +import org.nuiton.eugene.editor.application.ui.content.PackageContentUI; +import org.nuiton.eugene.editor.application.ui.tree.node.AttributeNode; +import org.nuiton.eugene.editor.application.ui.tree.node.ClassNode; +import org.nuiton.eugene.editor.application.ui.tree.node.EnumerationNode; +import org.nuiton.eugene.editor.application.ui.tree.node.InterfaceNode; +import org.nuiton.eugene.editor.application.ui.tree.node.ModelNode; +import org.nuiton.eugene.editor.application.ui.tree.node.NodeSupport; +import org.nuiton.eugene.editor.application.ui.tree.node.OperationNode; +import org.nuiton.eugene.editor.application.ui.tree.node.PackageNode; + +import java.util.Collections; +import java.util.Map; +import java.util.Objects; +import java.util.TreeMap; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class ContentUIManager { + + protected final Map<String, ContentUI> contents; + + public ContentUIManager(EugeneEditorUI ui) { + + Map<String, ContentUI> contents = new TreeMap<>(); + + ContentUIInitializer initializer = ContentUIInitializer.newInitializer(); + + contents.put(ModelNode.class.getName(), initializer.initUI(new ModelContentUI(ui))); + contents.put(PackageNode.class.getName(), initializer.initUI(new PackageContentUI(ui))); + contents.put(ClassNode.class.getName(), initializer.initUI(new ClassContentUI(ui))); + contents.put(InterfaceNode.class.getName(), initializer.initUI(new InterfaceContentUI(ui))); + contents.put(EnumerationNode.class.getName(), initializer.initUI(new EnumerationContentUI(ui))); + contents.put(AttributeNode.class.getName(), initializer.initUI(new AttributeContentUI(ui))); + contents.put(OperationNode.class.getName(), initializer.initUI(new OperationContentUI(ui))); + this.contents = Collections.unmodifiableMap(contents); + + } + + public <M, N extends NodeSupport<M>> ContentUI<N> getContent(N node) { + Objects.requireNonNull(node); + return contents.get(node.getClass().getName()); + } +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/EugeneEditorCommon.jcss b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/EugeneEditorCommon.jcss new file mode 100644 index 0000000..a133fec --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/EugeneEditorCommon.jcss @@ -0,0 +1,26 @@ + +JToolBar { + borderPainted:false; + floatable:false; + opaque:false; +} + +JTabbedPane { + _notBlocking: true; +} + +FilterableDoubleList { + showDecorator:false; + showReset:true; + showSelectPopupEnabled: true; + filterable:false; + _notBlocking: true; +} + +BeanComboBox { + showReset:true; +} + +BlockingLayerUI { + acceptedComponentTypes: {javax.swing.JScrollBar.class}; +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/EugeneEditorUI.jaxx b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/EugeneEditorUI.jaxx new file mode 100644 index 0000000..87588ba --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/EugeneEditorUI.jaxx @@ -0,0 +1,96 @@ +<JFrame id='mainFrame' width='1600' height='900' + onWindowClosing='new QuitApplicationAction(this).actionPerformed(null)'> + + <import> + + jaxx.runtime.swing.CardLayout2 + jaxx.runtime.swing.CardLayout2Ext + jaxx.runtime.swing.BlockingLayerUI + jaxx.runtime.swing.StatusMessagePanel + jaxx.runtime.validator.swing.SwingValidatorMessageTableModel + + org.nuiton.eugene.editor.application.ui.actions.ChangeApplicationLocaleAction + org.nuiton.eugene.editor.application.ui.actions.SaveProjectAction + org.nuiton.eugene.editor.application.ui.actions.GotoSiteAction + org.nuiton.eugene.editor.application.ui.actions.QuitApplicationAction + org.nuiton.eugene.editor.application.ui.actions.ShowAboutAction + org.nuiton.eugene.editor.application.ui.actions.ShowConfigAction + + org.nuiton.eugene.editor.application.ui.tree.EugeneEditorTree + + org.jdesktop.swingx.JXTitledPanel + + java.util.Locale + + javax.swing.UIManager + + </import> + + <script><![CDATA[ +public boolean canQuitContent() { + return handler.canQuitContent(this); +} +]]> </script> + + <Boolean id='busy' javaBean='false'/> + <EugeneEditorUIMode id='mode' javaBean="EugeneEditorUIMode.PROJECT"/> + + <CardLayout2 id='contentLayout'/> + <CardLayout2Ext id='bodyLayout' constructorParams='this, "body"'/> + <BlockingLayerUI id='busyBlockLayerUI'/> + + <!-- menu --> + <JMenuBar id='menu'> + + <JMenu id='menuFile'> + <JMenuItem id='menuFileSaveProject'/> + <JMenuItem id='menuFileQuitApplication'/> + </JMenu> + + <JMenu id='menuConfiguration'> + <JMenu id='menuLanguage'> + <JMenuItem id='menuLanguageUK'/> + <JMenuItem id='menuLanguageFR'/> + </JMenu> + <JSeparator/> + <JMenuItem id='menuShowConfiguration'/> + </JMenu> + + <JMenu id='menuHelp'> + <JMenuItem id='menuHelpSite'/> + <JMenuItem id='menuHelpAbout'/> + </JMenu> + + </JMenuBar> + + <JPanel id='body' constraints="BorderLayout.CENTER" decorator='boxed'> + + <JSplitPane id='projectPane' constraints="EugeneEditorUIMode.PROJECT.name()"> + + <JXTitledPanel id='projectNavigationView'> + <JScrollPane id='projectNavigationScrollPane'> + <!--columnHeaderView='{navigationTreeHeader}'>--> + <EugeneEditorTree id="projectNavigation" constructorParams="this"/> + <!--<BeanTreeHeader id='navigationTreeHeader' tree='{navigation}'/>--> + </JScrollPane> + </JXTitledPanel> + + <JSplitPane id='splitpane2'> + + <JPanel id="content"/> + + <JXTitledPanel id='messageView'> + <JScrollPane> + <JTable id='errorTable'/> + </JScrollPane> + </JXTitledPanel> + + </JSplitPane> + + </JSplitPane> + + </JPanel> + + <StatusMessagePanel id='status' constraints="BorderLayout.SOUTH"/> + +</JFrame> \ No newline at end of file diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/EugeneEditorUI.jcss b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/EugeneEditorUI.jcss new file mode 100644 index 0000000..5fcc0d8 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/EugeneEditorUI.jcss @@ -0,0 +1,164 @@ +/* + * #%L + * ObServe :: Swing + * %% + * Copyright (C) 2008 - 2010 IRD, Codelutin, Tony Chemit + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +JToolBar { + borderPainted: false; + floatable: false; + opaque: false; +} + +JSplitPane { + oneTouchExpandable: true; + continuousLayout: false; + dividerSize: 6; +} + +#mainFrame { + defaultCloseOperation: "do_nothing_on_close"; + /*iconImage: {SwingUtil.createImageIcon("logo-OT_web.png").getImage()};*/ +} + +#menu { + enabled: {!isBusy()}; +} + +#menuFile { + text: "eugene.editor.menu.file"; + mnemonic: F; + /*enabled: {getHandler().acceptMode(getMode(), !isBusy(), !isMainFromSynchro(), ObserveUIMode.NO_DB, ObserveUIMode.DB)};*/ +} + +#menuFileSaveProject { + action: {new SaveProjectAction(this)}; +} + +#menuFileQuitApplication { + action: {new QuitApplicationAction(this)}; +} + + +#menuConfiguration { + text: "eugene.editor.menu.configuration"; + toolTipText: "eugene.editor.menu.configuration.tip"; + mnemonic: C; + /*enabled: {getHandler().acceptMode(getMode(), !isBusy(), !isMainFromSynchro(), ObserveUIMode.DB, ObserveUIMode.NO_DB)};*/ +} + +#menuShowConfiguration { + action: {new ShowConfigAction(this)}; +} + +#menuLanguage { + text: "eugene.editor.menu.locale"; + toolTipText: "eugene.editor.menu.locale"; + actionIcon: "translate"; + mnemonic: L; + /*enabled: {getHandler().acceptMode(getMode(), !isBusy(), !isMainFromSynchro(), ObserveUIMode.DB, ObserveUIMode.NO_DB)};*/ +} + +#menuLanguageFR { + action: {new ChangeApplicationLocaleAction(this, Locale.FRANCE, t("eugene.editor.action.locale.fr"), t("eugene.editor.action.locale.fr.tip"))}; + /*enabled: {!getHandler().acceptLocale(getConfig().getLocale(), "fr_FR")};*/ +} + +#menuLanguageUK { + action: {new ChangeApplicationLocaleAction(this, Locale.UK, t("eugene.editor.action.locale.uk"), t("eugene.editor.action.locale.uk.tip"))}; + /*enabled: {!getHandler().acceptLocale(getConfig().getLocale(), "en_GB")};*/ +} + +#menuHelp { + text: "eugene.editor.menu.help"; + mnemonic: A; + enabled: {!isBusy()}; +} + +#menuHelpSite { + action: {new GotoSiteAction(this)}; +} + +#menuHelpAbout { + action: {new ShowAboutAction(this)}; +} + +#errorTable { + rowSelectionAllowed: true; + autoCreateRowSorter: true; + autoResizeMode: 2; + cellSelectionEnabled: false; + selectionMode: 0; + minimumSize: {SwingUtil.newMinDimension()}; + model: {getContextValue(SwingValidatorMessageTableModel.class)}; +} + +#busyBlockLayerUI { + useIcon: false; + blockingColor: {UIManager.getColor("BlockingLayerUI.blockingColor")}; + block: {isBusy()}; + /*acceptedComponentNames: {SwingUtil.ACCEPTABLE_COMPONENTS};*/ +} + +#projectPane { + orientation: {JSplitPane.HORIZONTAL_SPLIT}; + resizeWeight: 0.0; +} + +#splitpane2 { + orientation: {JSplitPane.VERTICAL_SPLIT}; + resizeWeight: 1.0; +} + +#contentLayout { + useOnlyVisibleComponentDimension: true; +} + +#projectNavigationView { + title: "eugene.editor.title.view.navigation"; +} + +#projectNavigation { + minimumSize: {SwingUtil.newMinDimension()}; +} + +#projectNavigationTreeHeader { + showSelectActions: false; +} + +#messageView { + title: "eugene.editor.view.message"; +} + +#bodyLayout { + selected: {getMode().name()}; +} + +#body { + layout: {bodyLayout}; +} + +#content { + layout: {contentLayout}; +} + +#status { + showBusy: {true}; + busy: {isBusy()}; +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/EugeneEditorUIHandler.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/EugeneEditorUIHandler.java new file mode 100644 index 0000000..c76bdb1 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/EugeneEditorUIHandler.java @@ -0,0 +1,44 @@ +package org.nuiton.eugene.editor.application.ui; + +import jaxx.runtime.spi.UIHandler; +import jaxx.runtime.validator.swing.SwingValidatorMessageTableModel; +import org.nuiton.eugene.editor.application.EugeneEditorApplicationContext; +import org.nuiton.eugene.editor.application.ui.tree.TreeModelBuilder; +import org.nuiton.eugene.models.object.ObjectModel; + +import javax.swing.SwingUtilities; +import javax.swing.tree.TreeModel; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.0 + */ +public class EugeneEditorUIHandler implements UIHandler<EugeneEditorUI> { + + @Override + public void beforeInit(EugeneEditorUI ui) { + + SwingValidatorMessageTableModel errorModel = new SwingValidatorMessageTableModel(); + ui.setContextValue(errorModel); + + ObjectModel objectModel = ui.getContextValue(EugeneEditorApplicationContext.class).getObjectModel(); + + TreeModel treeModel = TreeModelBuilder.build(objectModel); + ui.setContextValue(treeModel); + } + + @Override + public void afterInit(EugeneEditorUI ui) { + + SwingUtilities.invokeLater(() -> ui.getProjectNavigation().setSelectionRow(0)); + + } + + public boolean canQuitContent(EugeneEditorUI ui) { + + //TODO vérifier que le content est valide + return true; + } +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/EugeneEditorUIMode.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/EugeneEditorUIMode.java new file mode 100644 index 0000000..918d895 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/EugeneEditorUIMode.java @@ -0,0 +1,11 @@ +package org.nuiton.eugene.editor.application.ui; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public enum EugeneEditorUIMode { + + PROJECT, CONFIG +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/actions/ActionSupport.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/actions/ActionSupport.java new file mode 100644 index 0000000..889a696 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/actions/ActionSupport.java @@ -0,0 +1,23 @@ +package org.nuiton.eugene.editor.application.ui.actions; + +import org.nuiton.eugene.editor.application.ui.EugeneEditorUI; + +import javax.swing.AbstractAction; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public abstract class ActionSupport extends AbstractAction { + + private final EugeneEditorUI ui; + + public ActionSupport(EugeneEditorUI ui) { + this.ui = ui; + } + + protected EugeneEditorUI getUi() { + return ui; + } +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/actions/ChangeApplicationLocaleAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/actions/ChangeApplicationLocaleAction.java new file mode 100644 index 0000000..9e20a6c --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/actions/ChangeApplicationLocaleAction.java @@ -0,0 +1,53 @@ +package org.nuiton.eugene.editor.application.ui.actions; + +import jaxx.runtime.SwingUtil; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.eugene.editor.application.EugeneEditorApplicationContext; +import org.nuiton.eugene.editor.application.config.EugeneEditorConfig; +import org.nuiton.eugene.editor.application.ui.EugeneEditorUI; + +import java.awt.event.ActionEvent; +import java.util.Locale; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class ChangeApplicationLocaleAction extends ActionSupport { + + /** Logger. */ + private static final Log log = LogFactory.getLog(ChangeApplicationLocaleAction.class); + + private final Locale newLocale; + + public ChangeApplicationLocaleAction(EugeneEditorUI ui, Locale newLocale, String name, String description) { + super(ui); + this.newLocale = newLocale; + putValue(NAME, name); + putValue(SMALL_ICON, SwingUtil.createActionIcon("i18n-" + newLocale.getLanguage())); + putValue(SHORT_DESCRIPTION, description); + putValue(MNEMONIC_KEY, (int) newLocale.getLanguage().toUpperCase().charAt(0)); + + } + + @Override + public void actionPerformed(ActionEvent e) { + + if (log.isInfoEnabled()) { + log.info("Changing application language..."); + } + boolean canContinue = true; + if (canContinue) { + + EugeneEditorConfig config = getUi().getContextValue(EugeneEditorApplicationContext.class).getConfig(); + + // sauvegarde de la nouvelle locale + //config.setLocale(newLocale); + + //ObserveUICallback.ui.run(); + } + + } +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/actions/GotoSiteAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/actions/GotoSiteAction.java new file mode 100644 index 0000000..2f7a26e --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/actions/GotoSiteAction.java @@ -0,0 +1,29 @@ +package org.nuiton.eugene.editor.application.ui.actions; + +import jaxx.runtime.SwingUtil; +import org.nuiton.eugene.editor.application.ui.EugeneEditorUI; + +import java.awt.event.ActionEvent; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class GotoSiteAction extends ActionSupport { + + public GotoSiteAction(EugeneEditorUI ui) { + super(ui); + putValue(NAME, t("eugene.editor.action.site")); + putValue(SMALL_ICON, SwingUtil.createActionIcon("site")); + putValue(SHORT_DESCRIPTION, t("eugene.editor.action.site.tip")); + putValue(MNEMONIC_KEY, (int) 's'); + } + + @Override + public void actionPerformed(ActionEvent e) { + + } +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/actions/QuitApplicationAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/actions/QuitApplicationAction.java new file mode 100644 index 0000000..176253b --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/actions/QuitApplicationAction.java @@ -0,0 +1,33 @@ +package org.nuiton.eugene.editor.application.ui.actions; + +import jaxx.runtime.SwingUtil; +import org.nuiton.eugene.editor.application.EugeneEditorApplicationContext; +import org.nuiton.eugene.editor.application.ui.EugeneEditorUI; + +import java.awt.event.ActionEvent; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class QuitApplicationAction extends ActionSupport { + + public QuitApplicationAction(EugeneEditorUI ui) { + super(ui); + putValue(NAME, t("eugene.editor.action.exit")); + putValue(SMALL_ICON, SwingUtil.createActionIcon("exit")); + putValue(SHORT_DESCRIPTION, t("eugene.editor.action.exit.tip")); + putValue(MNEMONIC_KEY, (int) 'q'); + } + + @Override + public void actionPerformed(ActionEvent e) { + + getUi().dispose(); + + getUi().getContextValue(EugeneEditorApplicationContext.class).unlock(); + } +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/actions/SaveProjectAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/actions/SaveProjectAction.java new file mode 100644 index 0000000..034c8ba --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/actions/SaveProjectAction.java @@ -0,0 +1,29 @@ +package org.nuiton.eugene.editor.application.ui.actions; + +import jaxx.runtime.SwingUtil; +import org.nuiton.eugene.editor.application.ui.EugeneEditorUI; + +import java.awt.event.ActionEvent; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class SaveProjectAction extends ActionSupport { + + public SaveProjectAction(EugeneEditorUI ui) { + super(ui); + putValue(NAME, t("eugene.editor.action.saveProject")); + putValue(SMALL_ICON, SwingUtil.createActionIcon("save")); + putValue(SHORT_DESCRIPTION, t("eugene.editor.action.saveProject.tip")); + putValue(MNEMONIC_KEY, (int) 'e'); + } + + @Override + public void actionPerformed(ActionEvent e) { + + } +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/actions/ShowAboutAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/actions/ShowAboutAction.java new file mode 100644 index 0000000..55d4f0b --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/actions/ShowAboutAction.java @@ -0,0 +1,29 @@ +package org.nuiton.eugene.editor.application.ui.actions; + +import jaxx.runtime.SwingUtil; +import org.nuiton.eugene.editor.application.ui.EugeneEditorUI; + +import java.awt.event.ActionEvent; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class ShowAboutAction extends ActionSupport { + + public ShowAboutAction(EugeneEditorUI ui) { + super(ui); + putValue(NAME, t("eugene.editor.action.showAbout")); + putValue(SMALL_ICON, SwingUtil.createActionIcon("about")); + putValue(SHORT_DESCRIPTION, t("eugene.editor.action.showAbout.tip")); + putValue(MNEMONIC_KEY, (int) 'p'); + } + + @Override + public void actionPerformed(ActionEvent e) { + + } +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/actions/ShowConfigAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/actions/ShowConfigAction.java new file mode 100644 index 0000000..a1a7087 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/actions/ShowConfigAction.java @@ -0,0 +1,29 @@ +package org.nuiton.eugene.editor.application.ui.actions; + +import jaxx.runtime.SwingUtil; +import org.nuiton.eugene.editor.application.ui.EugeneEditorUI; + +import java.awt.event.ActionEvent; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class ShowConfigAction extends ActionSupport { + + public ShowConfigAction(EugeneEditorUI ui) { + super(ui); + putValue(NAME, t("eugene.editor.action.showConfig")); + putValue(SMALL_ICON, SwingUtil.createActionIcon("config")); + putValue(SHORT_DESCRIPTION, t("eugene.editor.action.showConfig.tip")); + putValue(MNEMONIC_KEY, (int) 'c'); + } + + @Override + public void actionPerformed(ActionEvent e) { + + } +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/AttributeContentUI.jaxx b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/AttributeContentUI.jaxx new file mode 100644 index 0000000..b898689 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/AttributeContentUI.jaxx @@ -0,0 +1,104 @@ +<org.jdesktop.swingx.JXTitledPanel id="attributeMainContent" implements="ContentUI<AttributeNode>" + styleClass="top"> + + <style source="ContentUI.jcss"/> + <import> + org.nuiton.eugene.editor.application.ui.content.Multiplicity + org.nuiton.eugene.editor.application.ui.tree.node.AttributeNode + </import> + <script><![CDATA[ +public void open(AttributeNode data) { handler.open(this, data); } +public void close() { handler.close(); } +]]> </script> + + <AttributeNode id="model" javaBean="null"/> + + <ButtonGroup id='visibilityMode'/> + <ButtonGroup id='aggregationMode'/> + + <JToolBar id="actions"> + <JButton id="createAttributeFromAttribute"/> + <JButton id="deleteAttributeFromAttribute"/> + </JToolBar> + + <JScrollPane> + + <org.jdesktop.swingx.JXTaskPaneContainer id="form"> + <org.jdesktop.swingx.JXTaskPane id="generalPane"> + <Table fill="both"> + <row> + <cell columns="2"> + <JLabel id="attributeNameLabel"/> + </cell> + <cell weightx="1"> + <JTextField id="attributeName" onKeyReleased="model.setName(attributeName.getText())"/> + </cell> + </row> + <row> + <cell columns="2"> + <JLabel id="attributeTypeLabel"/> + </cell> + <cell> + <JComboBox id="attributeType" genericType="String" onActionPerformed="model.setType((String)attributeType.getSelectedItem())"/> + </cell> + </row> + <row> + <cell columns="2"> + <JLabel id="attributeDefaultValueLabel"/> + </cell> + <cell weightx="1"> + <JTextField id="attributeDefaultValue"/> + </cell> + </row> + <row> + <cell columns="3"> + <JPanel id="visibility"> + <JRadioButton id="visibilityPublic" value="public" styleClass="visibilityMode"/> + <JRadioButton id="visibilityPackage" value="" styleClass="visibilityMode"/> + <JRadioButton id="visibilityProtected" value="protected" styleClass="visibilityMode"/> + <JRadioButton id="visibilityPrivate" value="private" styleClass="visibilityMode"/> + </JPanel> + </cell> + </row> + <row> + <cell> + <JLabel id="multiplicityLabel"/> + </cell> + <cell> + <JComboBox id="multiplicity" genericType="Multiplicity"/> + </cell> + <cell> + <JPanel id="aggregation"> + <JRadioButton id="aggregationAggregate" value="aggregate" styleClass="aggregationMode"/> + <JRadioButton id="aggregationCompose" value="compose" styleClass="aggregationMode"/> + <JRadioButton id="aggregationNone" value="none" styleClass="aggregationMode"/> + <JCheckBox id="bidi" constraints="BorderLayout.EAST"/> + </JPanel> + </cell> + </row> + </Table> + </org.jdesktop.swingx.JXTaskPane> + <org.jdesktop.swingx.JXTaskPane id="stereotypesAndTagValuesPane"> + <Table fill="both"> + <row> + <cell weightx="1"> + <JPanel id="stereotypes"> + <JLabel id="noStereotype"/> + </JPanel> + </cell> + </row> + <row> + <cell weightx="1"> + <JPanel id="tagValues"> + <JLabel id="noTagValue"/> + </JPanel> + </cell> + </row> + </Table> + + </org.jdesktop.swingx.JXTaskPane> + + </org.jdesktop.swingx.JXTaskPaneContainer> + </JScrollPane> + +</org.jdesktop.swingx.JXTitledPanel> \ No newline at end of file diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/AttributeContentUI.jcss b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/AttributeContentUI.jcss new file mode 100644 index 0000000..d521a84 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/AttributeContentUI.jcss @@ -0,0 +1,69 @@ + +#attributeMainContent { + title:"eugene.editor.attribute"; +} + +#attributeNameLabel { + text:"eugene.editor.attribute.name"; +} + +#attributeName { + text:{getModel().getUserObject().getName()}; + _property:{"name"}; +} + +#attributeDefaultValueLabel { + text:"eugene.editor.attribute.defaultValue"; +} + +#attributeDefaultValue { + text:{getModel().getUserObject().getDefaultValue()}; + _property:{"defaultValue"}; +} + +#attributeTypeLabel { + text:"eugene.editor.attribute.type"; +} + +#attributeType { + selectedItem:{getModel().getUserObject().getType()}; + _property:{"type"}; +} + +#createAttributeFromAttribute { + text:"eugene.editor.create.attribute"; + actionIcon:add; +} + +#deleteAttributeFromAttribute { + text:"eugene.editor.delete.attribute"; + actionIcon:delete; +} + +#aggregationAggregate { + text:"eugene.editor.aggregation.aggregate"; + selected:{"aggregate".equals(aggregationMode.getSelectedValue())}; +} + +#aggregationCompose { + text:"eugene.editor.aggregation.compose"; + selected:{"compose".equals(aggregationMode.getSelectedValue())}; +} + +#aggregationNone { + text:"eugene.editor.aggregation.none"; + selected:{"none".equals(aggregationMode.getSelectedValue())}; +} + +#aggregation { + border: {new javax.swing.border.TitledBorder(t("eugene.editor.aggregation"))}; + layout: {new GridLayout(1, 0)}; +} + +.aggregationMode { + buttonGroup:"aggregationMode"; +} + +#bidi { + text:"eugene.editor.bidi"; +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/AttributeContentUIHandler.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/AttributeContentUIHandler.java new file mode 100644 index 0000000..9571351 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/AttributeContentUIHandler.java @@ -0,0 +1,69 @@ +package org.nuiton.eugene.editor.application.ui.content; + +import jaxx.runtime.SwingUtil; +import org.nuiton.eugene.editor.application.ModelExtensionHelper; +import org.nuiton.eugene.editor.application.ModelHelper; +import org.nuiton.eugene.editor.application.ui.tree.node.AttributeNode; +import org.nuiton.eugene.models.object.ObjectModelAttribute; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class AttributeContentUIHandler extends ContenUIHandler<AttributeNode, AttributeContentUI> { + + @Override + public void beforeInit(AttributeContentUI ui) { + + } + + @Override + public void afterInit(AttributeContentUI ui) { + + ModelExtensionHelper helper = getApplicationContext(ui).getModelExtensionHelper(); + afterInit(ui, helper.getAttributeTagValues(), helper.getAttributeStereotypes()); + + } + + @Override + protected void open(AttributeContentUI ui, AttributeNode node) { + + ObjectModelAttribute data = node.getUserObject(); + + open(ui, node, data.getStereotypes(), data.getTagValues()); + ui.getVisibilityMode().setSelectedValue(data.getVisibility()); + + ModelHelper modelHelper = getApplicationContext(ui).getModelHelper(); + List<String> allClasses = new ArrayList<>(modelHelper.getAllClassesWithJava()); + Collections.sort(allClasses); + allClasses.add(0, null); + + SwingUtil.fillComboBox(ui.getAttributeType(), allClasses, data.getType()); + + List<Multiplicity> multiplicities = Arrays.asList(Multiplicity.values()); + + SwingUtil.fillComboBox(ui.getMultiplicity(), multiplicities, Multiplicity.valueOf(data.getMinMultiplicity(), data.getMaxMultiplicity())); + + ui.getAggregationMode().setSelectedValue("none"); + if (data.isAggregate()) { + + ui.getAggregationMode().setSelectedValue("aggregate"); + } + if (data.isComposite()) { + ui.getAggregationMode().setSelectedValue("compose"); + } + + ObjectModelAttribute reverseAttribute = data.getReverseAttribute(); + + ui.getBidi().setSelected(reverseAttribute != null && reverseAttribute.isNavigable()); + + ui.getAttributeDefaultValue().setText(data.getDefaultValue()); + + } +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ClassContentUI.jaxx b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ClassContentUI.jaxx new file mode 100644 index 0000000..3317648 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ClassContentUI.jaxx @@ -0,0 +1,84 @@ +<org.jdesktop.swingx.JXTitledPanel id="classMainContent" implements="ContentUI<ClassNode>" styleClass="top"> + + <style source="ContentUI.jcss"/> + <import> + org.nuiton.eugene.editor.application.ui.tree.node.ClassNode + javax.swing.DefaultListModel + </import> + <script><![CDATA[ +public void open(ClassNode data) { handler.open(this, data); } +public void close() { handler.close(); } +]]> </script> + + <ClassNode id="model" javaBean="null"/> + + <JToolBar id="actions"> + <JButton id="createAttributeFromClass"/> + <JButton id="createOperationFromClass"/> + <JSeparator/> + <JButton id="createClassFromClass"/> + <JButton id="deleteClassFromClass"/> + </JToolBar> + + <org.jdesktop.swingx.JXTaskPaneContainer id="form"> + <org.jdesktop.swingx.JXTaskPane id="generalPane"> + <Table fill="both"> + <row> + <cell> + <JLabel id="classNameLabel"/> + </cell> + <cell weightx="1"> + <JTextField id="className" onKeyReleased="model.setName(className.getText())"/> + </cell> + </row> + <row> + <cell> + <JLabel id="superClassLabel"/> + </cell> + <cell weightx="1"> + <JComboBox id="superClass" genericType="String"/> + </cell> + </row> + <row> + <cell columns="2"> + + <JScrollPane id="interfacesScrollPane" columnHeaderView="{interfacesHeader}"> + <JList id="interfaces" genericType="String"/> + <JPanel id="interfacesHeader" layout="{new BorderLayout()}"> + <JComboBox id="interfacesHeaderType" constraints="BorderLayout.CENTER" genericType="String" + onItemStateChanged="addInterfaceFromClass.setEnabled(event.getStateChange() == ItemEvent.SELECTED)"/> + <JToolBar id="interfacesHeaderActions" constraints="BorderLayout.EAST"> + <JButton id="addInterfaceFromClass"/> + <JButton id="removeInterfaceFromClass"/> + </JToolBar> + </JPanel> + </JScrollPane> + + </cell> + </row> + </Table> + </org.jdesktop.swingx.JXTaskPane> + + <org.jdesktop.swingx.JXTaskPane id="stereotypesAndTagValuesPane"> + <Table fill="both"> + <row> + <cell weightx="1"> + <JPanel id="stereotypes"> + <JLabel id="noStereotype"/> + </JPanel> + </cell> + </row> + <row> + <cell weightx="1"> + <JPanel id="tagValues"> + <JLabel id="noTagValue"/> + </JPanel> + </cell> + </row> + </Table> + + </org.jdesktop.swingx.JXTaskPane> + + </org.jdesktop.swingx.JXTaskPaneContainer> + +</org.jdesktop.swingx.JXTitledPanel> \ No newline at end of file diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ClassContentUI.jcss b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ClassContentUI.jcss new file mode 100644 index 0000000..23a071c --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ClassContentUI.jcss @@ -0,0 +1,68 @@ + + +#classMainContent { + title:"eugene.editor.class"; +} + +#superClassLabel { + text:"eugene.editor.superClass"; +} + +#classNameLabel { + text:"eugene.editor.class.name"; +} + +#className { + text:{getModel().getUserObject().getName()}; + _property:{"name"}; +} + +#createClassFromClass { + text:"eugene.editor.create.class"; + actionIcon:add; +} + +#createAttributeFromClass { + text:"eugene.editor.create.attribute"; + actionIcon:add; +} + +#createOperationFromClass { + text:"eugene.editor.create.operation"; + actionIcon:add; +} + +#deleteClassFromClass { + text:"eugene.editor.delete.class"; + actionIcon:delete; +} + +#addInterfaceFromClass { + text:"eugene.editor.add.interface"; + actionIcon:add; + enabled:false; +} + +#removeInterfaceFromClass { + text:"eugene.editor.delete.interface"; + actionIcon:delete; + enabled:false; +} + +#interfaces { + model:{new DefaultListModel()}; +} + +#interfacesHeaderPanel { + layout: {new BorderLayout()}; +} + +#interfacesPane { + title:"eugene.editor.interfaces"; + icon:{SwingUtil.createIcon("type", "interface")}; +} + +#interfacesScrollPane { + horizontalScrollBarPolicy:{JScrollPane.HORIZONTAL_SCROLLBAR_NEVER}; + border: {new javax.swing.border.TitledBorder(t("eugene.editor.interfaces"))}; +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ClassContentUIHandler.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ClassContentUIHandler.java new file mode 100644 index 0000000..f4792bd --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ClassContentUIHandler.java @@ -0,0 +1,60 @@ +package org.nuiton.eugene.editor.application.ui.content; + +import jaxx.runtime.SwingUtil; +import org.nuiton.eugene.editor.application.ModelExtensionHelper; +import org.nuiton.eugene.editor.application.ModelHelper; +import org.nuiton.eugene.editor.application.ui.tree.node.ClassNode; +import org.nuiton.eugene.models.object.ObjectModelClass; + +import javax.swing.ListSelectionModel; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class ClassContentUIHandler extends ContenUIHandler<ClassNode, ClassContentUI> { + + @Override + public void beforeInit(ClassContentUI ui) { + + } + + @Override + public void afterInit(ClassContentUI ui) { + + ModelExtensionHelper helper = getApplicationContext(ui).getModelExtensionHelper(); + afterInit(ui, helper.getClassTagValues(), helper.getClassStereotypes()); + + ui.getInterfaces().getSelectionModel().addListSelectionListener(e -> ui.getRemoveInterfaceFromClass().setEnabled(!((ListSelectionModel) e.getSource()).isSelectionEmpty())); + + } + + @Override + protected void open(ClassContentUI ui, ClassNode node) { + + ObjectModelClass data = node.getUserObject(); + open(ui, node, data.getStereotypes(), data.getTagValues()); + + ModelHelper modelHelper = getApplicationContext(ui).getModelHelper(); + List<String> allClasses = new ArrayList<>(modelHelper.getAllClasses()); + Collections.sort(allClasses); + allClasses.add(0, null); + + String superClass = node.getSuperClass(); + + SwingUtil.fillComboBox(ui.getSuperClass(), allClasses, superClass); + + addInterfaces(ui, data.getInterfaces(), ui.getInterfaces(), allClasses); + + //TODO Supprimer toutes les classes qui héritent de celle ci + allClasses.remove(superClass); + SwingUtil.fillComboBox(ui.getInterfacesHeaderType(), allClasses, null); + ui.getInterfacesHeaderType().setSelectedItem(null); + + } + +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ContenUIHandler.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ContenUIHandler.java new file mode 100644 index 0000000..d4ba542 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ContenUIHandler.java @@ -0,0 +1,154 @@ +package org.nuiton.eugene.editor.application.ui.content; + +import jaxx.runtime.SwingUtil; +import jaxx.runtime.spi.UIHandler; +import org.nuiton.eugene.editor.application.EugeneEditorApplicationContext; +import org.nuiton.eugene.editor.application.ui.tree.node.NodeSupport; +import org.nuiton.eugene.models.object.ObjectModelInterface; +import org.nuiton.eugene.models.stereotype.StereotypeDefinition; +import org.nuiton.eugene.models.tagvalue.TagValueDefinition; + +import javax.swing.JCheckBox; +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.JPanel; +import javax.swing.JTextField; +import java.awt.GridLayout; +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public abstract class ContenUIHandler<M extends NodeSupport, U extends ContentUI<M>> implements UIHandler<U> { + + protected abstract void open(U ui, M data); + + protected void close() { + + } + + protected void afterInit(U ui, + Map<String, TagValueDefinition> availableTagValues, + Map<String, StereotypeDefinition> availableStereotypes) { + + Map<String, Object> $objectMap = ui.get$objectMap(); + if (!availableStereotypes.isEmpty()) { + + JPanel stereotypes = ui.getStereotypes(); + stereotypes.putClientProperty("stereotypes", availableStereotypes); + stereotypes.setLayout(new GridLayout(1, 0)); + stereotypes.removeAll(); + for (Map.Entry<String, StereotypeDefinition> entry : availableStereotypes.entrySet()) { + String stereotype = entry.getKey(); + JCheckBox b = new JCheckBox(); + b.setText(stereotype); + b.setToolTipText(entry.getValue().documentation()); + stereotypes.add(b); + $objectMap.put("stereotype-" + stereotype, b); + } + } + + if (!availableTagValues.isEmpty()) { + + JPanel tagValues = ui.getTagValues(); + tagValues.putClientProperty("tagValues", availableTagValues); + tagValues.setLayout(new GridLayout(0, 2)); + tagValues.removeAll(); + + for (Map.Entry<String, TagValueDefinition> entry : availableTagValues.entrySet()) { + + JTextField field = new JTextField(); + + String tagValue = entry.getKey(); + JLabel label = new JLabel(tagValue); + $objectMap.put("tagValue-" + tagValue, field); + label.setToolTipText(entry.getValue().documentation()); + label.setLabelFor(field); + + tagValues.add(label); + tagValues.add(field); + } + } + + } + + protected void open(U ui, M model, Set<String> stereotypes, Map<String, String> tagValues) { + + ui.setModel(model); + + JPanel stereotypesPanel = ui.getStereotypes(); + Map<String, StereotypeDefinition> stereotyps = (Map) stereotypesPanel.getClientProperty("stereotypes"); + + if (stereotyps != null) { + + for (String tagValue : stereotyps.keySet()) { + + JCheckBox objectById = (JCheckBox) ui.getObjectById("stereotype-" + tagValue); + if (objectById != null) { + objectById.setSelected(false); + } + + } + } + + for (String stereotype : stereotypes) { + + JCheckBox objectById = (JCheckBox) ui.getObjectById("stereotype-" + stereotype); + if (objectById != null) { + objectById.setSelected(true); + } + } + + JPanel tagValuesPanel = ui.getTagValues(); + Map<String, TagValueDefinition> tags = (Map) tagValuesPanel.getClientProperty("tagValues"); + + if (tags != null) { + + for (String tagValue : tags.keySet()) { + + JTextField objectById = (JTextField) ui.getObjectById("tagValue-" + tagValue); + if (objectById != null) { + objectById.setText(null); + } + + } + } + + for (Map.Entry<String, String> entry : tagValues.entrySet()) { + JTextField objectById = (JTextField) ui.getObjectById("tagValue-" + entry.getKey()); + if (objectById != null) { + objectById.setText(entry.getValue()); + } + } + + } + + protected void addInterfaces(U ui, Collection<ObjectModelInterface> interfaces, JList interfacesPanel, List<String> allClasses) { + + List<String> interfaceNames; + + if (interfaces.isEmpty()) { + interfaceNames = Collections.emptyList(); + } else { + + interfaceNames = interfaces.stream().map(ObjectModelInterface::getQualifiedName).collect(Collectors.toList()); + Collections.sort(interfaceNames); + interfaceNames.add(0, null); + allClasses.removeAll(interfaceNames); + } + + SwingUtil.fillList(interfacesPanel, interfaceNames, null); + + } + + protected EugeneEditorApplicationContext getApplicationContext(U ui) { + return ui.getContextValue(EugeneEditorApplicationContext.class); + } +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ContentUI.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ContentUI.java new file mode 100644 index 0000000..29737dd --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ContentUI.java @@ -0,0 +1,29 @@ +package org.nuiton.eugene.editor.application.ui.content; + +import jaxx.runtime.JAXXObject; +import org.nuiton.eugene.editor.application.ui.tree.node.NodeSupport; + +import javax.swing.JComponent; +import javax.swing.JPanel; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public interface ContentUI<M extends NodeSupport> extends JAXXObject { + + void setLeftDecoration(JComponent component); + + M getModel(); + + void setModel(M model); + + void open(M model); + + JPanel getStereotypes(); + + JPanel getTagValues(); + + void close(); +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ContentUI.jcss b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ContentUI.jcss new file mode 100644 index 0000000..162b820 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ContentUI.jcss @@ -0,0 +1,74 @@ +.top { + rightDecoration:{actions}; +} + +/* #model {} */ + +/* #actions {} */ + +#generalPane { + title:"eugene.editor.general"; +} + +#stereotypesAndTagValuesPane { + title:"eugene.editor.stereotypesAndTagValues"; +} +#stereotypes { + border: {new javax.swing.border.TitledBorder(t("eugene.editor.stereotypes"))}; + layout: {new BorderLayout()}; +} + +#tagValues { + border: {new javax.swing.border.TitledBorder(t("eugene.editor.tagValues"))}; + layout: {new BorderLayout()}; +} + +#visibility { + border: {new javax.swing.border.TitledBorder(t("eugene.editor.visibility"))}; + layout: {new GridLayout(1, 0)}; +} + +.visibilityMode { + buttonGroup:"visibilityMode"; +} + +#visibilityPublic { + text:"eugene.editor.visibility.public"; + selected:{"public".equals(getModel().getUserObject().getVisibility())}; +} + +#visibilityPackage { + text:"eugene.editor.visibility.package"; + selected:{"".equals(getModel().getUserObject().getVisibility())}; +} + +#visibilityProtected { + text:"eugene.editor.visibility.protected"; + selected:{"protected".equals(getModel().getUserObject().getVisibility())}; +} + +#visibilityPrivate { + text:"eugene.editor.visibility.private"; + selected:{"private".equals(getModel().getUserObject().getVisibility())}; +} + +#noInterface { + text:"eugene.no.interface.defined"; + horizontalAlignment: {JLabel.CENTER}; + verticalAlignment: {JLabel.CENTER}; + enabled: false; +} + +#noStereotype { + text:"eugene.no.stereotype.found"; + horizontalAlignment: {JLabel.CENTER}; + verticalAlignment: {JLabel.CENTER}; + enabled: false; +} + +#noTagValue { + text:"eugene.no.tagValue.found"; + horizontalAlignment: {JLabel.CENTER}; + verticalAlignment: {JLabel.CENTER}; + enabled: false; +} \ No newline at end of file diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/EnumerationContentUI.jaxx b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/EnumerationContentUI.jaxx new file mode 100644 index 0000000..a045def --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/EnumerationContentUI.jaxx @@ -0,0 +1,73 @@ +<org.jdesktop.swingx.JXTitledPanel id="enumerationMainContent" implements="ContentUI<EnumerationNode>" + styleClass="top"> + + <style source="ContentUI.jcss"/> + <import> + org.nuiton.eugene.editor.application.ui.tree.node.EnumerationNode + </import> + <script><![CDATA[ +public void open(EnumerationNode data) { handler.open(this, data); } +public void close() { handler.close(); } +]]> </script> + + <EnumerationNode id="model" javaBean="null"/> + + <JToolBar id="actions"> + <JButton id="createEnumerationFromEnumeration"/> + <JButton id="deleteEnumerationFromEnumeration"/> + </JToolBar> + + <org.jdesktop.swingx.JXTaskPaneContainer id="form"> + <org.jdesktop.swingx.JXTaskPane id="generalPane"> + <Table fill="both"> + <row> + <cell> + <JLabel id="enumerationNameLabel"/> + </cell> + <cell weightx="1"> + <JTextField id="enumerationName" onKeyReleased="model.setName(enumerationName.getText())"/> + </cell> + </row> + <row> + <cell columns="2"> + + <JScrollPane id="literalsScrollPane" columnHeaderView="{literalsHeader}"> + <JList id="literals" genericType="String"/> + <JPanel id="literalsHeader" layout="{new BorderLayout()}"> + <JTextField id="literalsHeaderName" constraints="BorderLayout.WEST" + onKeyReleased="addLiteralFromEnumeration.setEnabled(!literalsHeaderName.getText().trim().isEmpty())"/> + <JToolBar id="literalsHeaderActions" constraints="BorderLayout.EAST"> + <JButton id="addLiteralFromEnumeration"/> + <JButton id="removeLiteralFromEnumeration"/> + </JToolBar> + </JPanel> + </JScrollPane> + + </cell> + </row> + </Table> + </org.jdesktop.swingx.JXTaskPane> + + <org.jdesktop.swingx.JXTaskPane id="stereotypesAndTagValuesPane"> + <Table fill="both"> + <row> + <cell weightx="1"> + <JPanel id="stereotypes"> + <JLabel id="noStereotype"/> + </JPanel> + </cell> + </row> + <row> + <cell weightx="1"> + <JPanel id="tagValues"> + <JLabel id="noTagValue"/> + </JPanel> + </cell> + </row> + </Table> + + </org.jdesktop.swingx.JXTaskPane> + + </org.jdesktop.swingx.JXTaskPaneContainer> + +</org.jdesktop.swingx.JXTitledPanel> \ No newline at end of file diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/EnumerationContentUI.jcss b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/EnumerationContentUI.jcss new file mode 100644 index 0000000..f0a9e13 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/EnumerationContentUI.jcss @@ -0,0 +1,50 @@ + + +#enumerationMainContent { + title:"eugene.editor.enumeration"; +} + +#enumerationNameLabel { + text:"eugene.editor.enumeration.name"; +} + +#enumerationName { + text:{getModel().getUserObject().getName()}; + _property:{"name"}; +} + +#createEnumerationFromEnumeration { + text:"eugene.editor.create.enumeration"; + actionIcon:add; +} + +#deleteEnumerationFromEnumeration { + text:"eugene.editor.delete.enumeration"; + actionIcon:delete; +} + +#addLiteralFromEnumeration { + text:"eugene.editor.add.literal"; + actionIcon:add; + enabled:false; +} + +#removeLiteralFromEnumeration { + text:"eugene.editor.delete.literal"; + actionIcon:delete; + enabled:false; +} + +#literalsHeaderPanel { + layout: {new BorderLayout()}; +} + +#literalsPane { + title:"eugene.editor.literals"; + icon:{SwingUtil.createIcon("type", "enumeration")}; +} + +#literalsScrollPane { + horizontalScrollBarPolicy:{JScrollPane.HORIZONTAL_SCROLLBAR_NEVER}; + border: {new javax.swing.border.TitledBorder(t("eugene.editor.literals"))}; +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/EnumerationContentUIHandler.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/EnumerationContentUIHandler.java new file mode 100644 index 0000000..a89461b --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/EnumerationContentUIHandler.java @@ -0,0 +1,45 @@ +package org.nuiton.eugene.editor.application.ui.content; + +import org.nuiton.eugene.editor.application.ModelExtensionHelper; +import org.nuiton.eugene.editor.application.ui.tree.node.EnumerationNode; +import org.nuiton.eugene.models.object.ObjectModelEnumeration; + +import javax.swing.DefaultListModel; +import javax.swing.ListSelectionModel; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class EnumerationContentUIHandler extends ContenUIHandler<EnumerationNode, EnumerationContentUI> { + + @Override + public void beforeInit(EnumerationContentUI ui) { + + } + + @Override + public void afterInit(EnumerationContentUI ui) { + + ModelExtensionHelper helper = getApplicationContext(ui).getModelExtensionHelper(); + afterInit(ui, helper.getEnumerationTagValues(), helper.getEnumerationStereotypes()); + ui.getLiterals().setModel(new DefaultListModel<>()); + ui.getLiterals().getSelectionModel().addListSelectionListener(e -> ui.getRemoveLiteralFromEnumeration().setEnabled(!((ListSelectionModel) e.getSource()).isSelectionEmpty())); + //ui.getLiteralsHeaderName().addPropertyChangeListener( e -> ui.getAddLiteralFromEnumeration().setEnabled(!Strings.isNullOrEmpty(((JTextField) e.getSource()).getText()))); + + } + + @Override + protected void open(EnumerationContentUI ui, EnumerationNode node) { + ObjectModelEnumeration data = node.getUserObject(); + open(ui, node, data.getStereotypes(), data.getTagValues()); + + DefaultListModel<String> listModel = (DefaultListModel<String>) ui.getLiterals().getModel(); + listModel.clear(); + + data.getLiterals().forEach(listModel::addElement); + + } + +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/InterfaceContentUI.jaxx b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/InterfaceContentUI.jaxx new file mode 100644 index 0000000..4f229c9 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/InterfaceContentUI.jaxx @@ -0,0 +1,77 @@ +<org.jdesktop.swingx.JXTitledPanel id="interfaceMainContent" implements="ContentUI<InterfaceNode>" + styleClass="top"> + + <style source="ContentUI.jcss"/> + <import> + org.nuiton.eugene.editor.application.ui.tree.node.InterfaceNode + javax.swing.DefaultListModel + </import> + <script><![CDATA[ +public void open(InterfaceNode data) { handler.open(this, data); } +public void close() { handler.close(); } +]]> </script> + + <InterfaceNode id="model" javaBean="null"/> + + <JToolBar id="actions"> + <JButton id="createAttributeFromInterface"/> + <JButton id="createOperationFromInterface"/> + <JSeparator/> + <JButton id="createInterfaceFromInterface"/> + <JButton id="deleteInterfaceFromInterface"/> + </JToolBar> + + <org.jdesktop.swingx.JXTaskPaneContainer id="form"> + <org.jdesktop.swingx.JXTaskPane id="generalPane"> + <Table fill="both"> + <row> + <cell> + <JLabel id="interfaceNameLabel"/> + </cell> + <cell weightx="1"> + <JTextField id="interfaceName" onKeyReleased="model.setName(interfaceName.getText())"/> + </cell> + </row> + <row> + <cell columns="2"> + + <JScrollPane id="superClassesScrollPane" columnHeaderView="{superClassesHeader}"> + <JList id="superClasses" genericType="String"/> + <JPanel id="superClassesHeader" layout="{new BorderLayout()}"> + <JComboBox id="superClassesHeaderType" constraints="BorderLayout.WEST" genericType="String" + onItemStateChanged="addSuperClassFromInterface.setEnabled(event.getStateChange() == ItemEvent.SELECTED)"/> + <JToolBar id="superClassesHeaderActions" constraints="BorderLayout.EAST"> + <JButton id="addSuperClassFromInterface"/> + <JButton id="removeSuperClassFromInterface"/> + </JToolBar> + </JPanel> + </JScrollPane> + + </cell> + </row> + </Table> + </org.jdesktop.swingx.JXTaskPane> + + <org.jdesktop.swingx.JXTaskPane id="stereotypesAndTagValuesPane"> + <Table fill="both"> + <row> + <cell weightx="1"> + <JPanel id="stereotypes"> + <JLabel id="noStereotype"/> + </JPanel> + </cell> + </row> + <row> + <cell weightx="1"> + <JPanel id="tagValues"> + <JLabel id="noTagValue"/> + </JPanel> + </cell> + </row> + </Table> + + </org.jdesktop.swingx.JXTaskPane> + + </org.jdesktop.swingx.JXTaskPaneContainer> + +</org.jdesktop.swingx.JXTitledPanel> \ No newline at end of file diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/InterfaceContentUI.jcss b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/InterfaceContentUI.jcss new file mode 100644 index 0000000..407dbf8 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/InterfaceContentUI.jcss @@ -0,0 +1,63 @@ + + +#interfaceMainContent { + title:"eugene.editor.interface"; +} + +#interfaceNameLabel { + text:"eugene.editor.interface.name"; +} + +#interfaceName { + text:{getModel().getUserObject().getName()}; + _property:{"name"}; +} + +#createInterfaceFromInterface { + text:"eugene.editor.create.interface"; + actionIcon:add; +} + +#createAttributeFromInterface { + text:"eugene.editor.create.attribute"; + actionIcon:add; +} + +#createOperationFromInterface { + text:"eugene.editor.create.operation"; + actionIcon:add; +} + +#deleteInterfaceFromInterface { + text:"eugene.editor.delete.interface"; + actionIcon:delete; +} + +#addSuperClassFromInterface { + text:"eugene.editor.add.superClass"; + actionIcon:add; + enabled:false; +} + +#removeSuperClassFromInterface { + text:"eugene.editor.delete.superClass"; + actionIcon:delete; + enabled:false; +} + +#superClasses { + model:{new DefaultListModel()}; +} +#superClassesHeaderPanel { + layout: {new BorderLayout()}; +} + +#superClassesPane { + title:"eugene.editor.superClasses"; + icon:{SwingUtil.createIcon("type", "class")}; +} + +#superClassesScrollPane { + horizontalScrollBarPolicy:{JScrollPane.HORIZONTAL_SCROLLBAR_NEVER}; + border: {new javax.swing.border.TitledBorder(t("eugene.editor.superClasses"))}; +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/InterfaceContentUIHandler.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/InterfaceContentUIHandler.java new file mode 100644 index 0000000..0c0d914 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/InterfaceContentUIHandler.java @@ -0,0 +1,55 @@ +package org.nuiton.eugene.editor.application.ui.content; + +import jaxx.runtime.SwingUtil; +import org.nuiton.eugene.editor.application.ModelExtensionHelper; +import org.nuiton.eugene.editor.application.ModelHelper; +import org.nuiton.eugene.editor.application.ui.tree.node.InterfaceNode; +import org.nuiton.eugene.models.object.ObjectModelInterface; + +import javax.swing.ListSelectionModel; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class InterfaceContentUIHandler extends ContenUIHandler<InterfaceNode, InterfaceContentUI> { + + @Override + public void beforeInit(InterfaceContentUI ui) { + + } + + @Override + public void afterInit(InterfaceContentUI ui) { + + ModelExtensionHelper helper = getApplicationContext(ui).getModelExtensionHelper(); + afterInit(ui, helper.getInterfaceTagValues(), helper.getInterfaceStereotypes()); +// ui.getSuperClasses().setModel(new DefaultListModel<>()); + ui.getSuperClasses().getSelectionModel().addListSelectionListener(e -> ui.getRemoveSuperClassFromInterface().setEnabled(!((ListSelectionModel) e.getSource()).isSelectionEmpty())); + + } + + @Override + protected void open(InterfaceContentUI ui, InterfaceNode node) { + ObjectModelInterface data = node.getUserObject(); + open(ui, node, data.getStereotypes(), data.getTagValues()); + + ModelHelper modelHelper = getApplicationContext(ui).getModelHelper(); + + List<String> allInterfaces = new ArrayList<>(modelHelper.getAllInterfaces()); + + addInterfaces(ui, data.getInterfaces(), ui.getSuperClasses(), allInterfaces); + + //TODO Supprimer toutes les interfaces qui héritent de celle ci + Collections.sort(allInterfaces); + allInterfaces.add(0, null); + + SwingUtil.fillComboBox(ui.getSuperClassesHeaderType(), allInterfaces, null); + ui.getSuperClassesHeaderType().setSelectedItem(null); + + } +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ModelContentUI.jaxx b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ModelContentUI.jaxx new file mode 100644 index 0000000..f6c1994 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ModelContentUI.jaxx @@ -0,0 +1,62 @@ +<org.jdesktop.swingx.JXTitledPanel id="modelMainContent" implements="ContentUI<ModelNode>" styleClass="top"> + + <style source="ContentUI.jcss"/> + <import> + org.nuiton.eugene.editor.application.ui.tree.node.ModelNode + jaxx.runtime.validator.swing.SwingValidatorMessageTableModel + </import> + <script><![CDATA[ +public void open(ModelNode data) { handler.open(this, data); } +public void close() { handler.close(); } +]]> </script> + + <ModelNode id="model" javaBean="null"/> + + <BeanValidator id='validator' + beanClass='org.nuiton.eugene.editor.application.ui.tree.node.ModelNode' + bean="{getModel()}" + errorTableModel='{getContextValue(SwingValidatorMessageTableModel.class)}'> + <field name='name' component='modelName'/> + </BeanValidator> + + <JToolBar id="actions"> + <JButton id="createPackageFromModel"/> + </JToolBar> + + <org.jdesktop.swingx.JXTaskPaneContainer id="form"> + <org.jdesktop.swingx.JXTaskPane id="generalPane"> + <Table fill="both"> + <row> + <cell> + <JLabel id="modelNameLabel"/> + </cell> + <cell weightx="1"> + <JTextField id="modelName" onKeyReleased="model.setName(modelName.getText())"/> + </cell> + </row> + </Table> + </org.jdesktop.swingx.JXTaskPane> + + <org.jdesktop.swingx.JXTaskPane id="stereotypesAndTagValuesPane"> + <Table fill="both"> + <row> + <cell weightx="1"> + <JPanel id="stereotypes"> + <JLabel id="noStereotype"/> + </JPanel> + </cell> + </row> + <row> + <cell weightx="1"> + <JPanel id="tagValues"> + <JLabel id="noTagValue"/> + </JPanel> + </cell> + </row> + </Table> + + </org.jdesktop.swingx.JXTaskPane> + + </org.jdesktop.swingx.JXTaskPaneContainer> + +</org.jdesktop.swingx.JXTitledPanel> \ No newline at end of file diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ModelContentUI.jcss b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ModelContentUI.jcss new file mode 100644 index 0000000..660a226 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ModelContentUI.jcss @@ -0,0 +1,19 @@ + + +#modelMainContent { + title:"eugene.editor.model"; +} + +#modelNameLabel { + text:"eugene.editor.model.name"; +} + +#modelName { + text:{getModel().getUserObject().getName()}; + _property:{"name"}; +} + +#createPackageFromModel { + text:"eugene.editor.create.package"; + actionIcon: add; +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ModelContentUIHandler.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ModelContentUIHandler.java new file mode 100644 index 0000000..b884171 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ModelContentUIHandler.java @@ -0,0 +1,34 @@ +package org.nuiton.eugene.editor.application.ui.content; + +import org.nuiton.eugene.editor.application.ModelExtensionHelper; +import org.nuiton.eugene.editor.application.ui.tree.node.ModelNode; +import org.nuiton.eugene.models.object.ObjectModel; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class ModelContentUIHandler extends ContenUIHandler<ModelNode, ModelContentUI> { + + @Override + public void beforeInit(ModelContentUI ui) { + + } + + @Override + public void afterInit(ModelContentUI ui) { + + ModelExtensionHelper helper = getApplicationContext(ui).getModelExtensionHelper(); + afterInit(ui, helper.getModelTagValues(), helper.getModelStereotypes()); + + } + + @Override + protected void open(ModelContentUI ui, ModelNode node) { + + ObjectModel data = node.getUserObject(); + open(ui, node, data.getStereotypes(), data.getTagValues()); + + } +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/Multiplicity.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/Multiplicity.java new file mode 100644 index 0000000..1466188 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/Multiplicity.java @@ -0,0 +1,40 @@ +package org.nuiton.eugene.editor.application.ui.content; + +/** + * Created on 18/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public enum Multiplicity { + + ONE(1, 1, "1"), + ZERO_OR_ONE(0, 1, "0..1"), + ZERO_TO_MANY(0, -1, "0..*"), + ONE_TO_MANY(1, -1, "1..*"), + MANY_TO_MANY(-1, -1, "*..*"); + + private final int min; + private final int max; + + private final String text; + + Multiplicity(int min, int max, String text) { + this.min = min; + this.max = max; + this.text = text; + } + + @Override + public String toString() { + return text; + } + + public static Multiplicity valueOf(int min, int max) { + for (Multiplicity multiplicity : values()) { + if (min == multiplicity.min && max == multiplicity.max) { + return multiplicity; + } + } + return null; + } +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/OperationContentUI.jaxx b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/OperationContentUI.jaxx new file mode 100644 index 0000000..c53f7e6 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/OperationContentUI.jaxx @@ -0,0 +1,87 @@ +<org.jdesktop.swingx.JXTitledPanel id="operationMainContent" implements="ContentUI<OperationNode>" + styleClass="top"> + + <style source="ContentUI.jcss"/> + <import> + org.nuiton.eugene.editor.application.ui.tree.node.OperationNode + </import> + <script><![CDATA[ +public void open(OperationNode data) { handler.open(this, data); } +public void close() { handler.close(); } +]]> </script> + + <OperationNode id="model" javaBean="null"/> + <ButtonGroup id='visibilityMode'/> + + <JToolBar id="actions"> + <JButton id="createOperationFromOperation"/> + <JButton id="deleteOperationFromOperation"/> + </JToolBar> + <JScrollPane> + <org.jdesktop.swingx.JXTaskPaneContainer id="form"> + <org.jdesktop.swingx.JXTaskPane id="generalPane"> + <Table fill="both"> + <row> + <cell> + <JLabel id="operationNameLabel"/> + </cell> + <cell weightx="1"> + <JTextField id="operationName" onKeyReleased="model.setName(operationName.getText())"/> + </cell> + </row> + <row> + <cell> + <JLabel id="operationReturnTypeLabel"/> + </cell> + <cell> + <JComboBox id="operationReturnType" genericType="String" onActionPerformed="model.setReturnType((String)operationReturnType.getSelectedItem())"/> + </cell> + </row> + <row> + <cell columns="2"> + <JPanel id="visibility"> + <JRadioButton id="visibilityPublic" value="public" styleClass="visibilityMode"/> + <JRadioButton id="visibilityPackage" value="" styleClass="visibilityMode"/> + <JRadioButton id="visibilityProtected" value="protected" styleClass="visibilityMode"/> + <JRadioButton id="visibilityPrivate" value="private" styleClass="visibilityMode"/> + </JPanel> + </cell> + </row> + </Table> + </org.jdesktop.swingx.JXTaskPane> + + <org.jdesktop.swingx.JXTaskPane id="stereotypesAndTagValuesPane"> + <Table fill="both"> + <row> + <cell weightx="1"> + <JPanel id="stereotypes"> + <JLabel id="noStereotype"/> + </JPanel> + </cell> + </row> + <row> + <cell weightx="1"> + <JPanel id="tagValues"> + <JLabel id="noTagValue"/> + </JPanel> + </cell> + </row> + </Table> + </org.jdesktop.swingx.JXTaskPane> + + <org.jdesktop.swingx.JXTaskPane id="parametersPane" layout="{new BorderLayout()}"> + <JPanel id="parametersHeader" constraints="BorderLayout.NORTH" layout="{new BorderLayout()}"> + <JToolBar id="parametersHeaderActions" constraints="BorderLayout.EAST"> + <JButton id="createParameterFromOperation"/> + <JButton id="deleteParameterFromOperation"/> + </JToolBar> + </JPanel> + <JScrollPane id="parametersScrollPane" constraints="BorderLayout.CENTER"> + <JTable id="parameters"/> + </JScrollPane> + </org.jdesktop.swingx.JXTaskPane> + + </org.jdesktop.swingx.JXTaskPaneContainer> + </JScrollPane> + +</org.jdesktop.swingx.JXTitledPanel> \ No newline at end of file diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/OperationContentUI.jcss b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/OperationContentUI.jcss new file mode 100644 index 0000000..4e84c08 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/OperationContentUI.jcss @@ -0,0 +1,67 @@ + +#operationMainContent { + title:"eugene.editor.operation"; +} + +#operationNameLabel { + text:"eugene.editor.operation.name"; +} + +#operationName { + text:{getModel().getUserObject().getName()}; + _property:{"name"}; +} + +#operationReturnTypeLabel { + text:"eugene.editor.operation.returnType"; +} + +#operationReturnType { + selectedItem:{getModel().getUserObject().getReturnType()}; + _property:{"returnType"}; +} + +#createOperationFromOperation { + text:"eugene.editor.create.operation"; + actionIcon:add; +} + +#deleteOperationFromOperation { + text:"eugene.editor.delete.operation"; + actionIcon:delete; +} + +#createParameterFromOperation { + text:"eugene.editor.create.parameter"; + actionIcon:add; +} + +#deleteParameterFromOperation { + text:"eugene.editor.delete.parameter"; + actionIcon:delete; + enabled:false; +} + +#parametersHeaderPanel { + layout: {new BorderLayout()}; +} + +#parametersPane { + title:"eugene.editor.parameters"; + icon:{SwingUtil.createIcon("type", "attribute")}; +} + +#parametersScrollPane { + horizontalScrollBarPolicy:{JScrollPane.HORIZONTAL_SCROLLBAR_NEVER}; +} + +#parameters { + model: {new ParameterTableModel()}; +} + +#noParameter { + text:"eugene.no.parameter.defined"; + horizontalAlignment: {JLabel.CENTER}; + verticalAlignment: {JLabel.CENTER}; + enabled: false; +} \ No newline at end of file diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/OperationContentUIHandler.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/OperationContentUIHandler.java new file mode 100644 index 0000000..3c5bb69 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/OperationContentUIHandler.java @@ -0,0 +1,68 @@ +package org.nuiton.eugene.editor.application.ui.content; + +import jaxx.runtime.SwingUtil; +import org.jdesktop.swingx.JXComboBox; +import org.jdesktop.swingx.autocomplete.ComboBoxCellEditor; +import org.nuiton.eugene.editor.application.ModelExtensionHelper; +import org.nuiton.eugene.editor.application.ModelHelper; +import org.nuiton.eugene.editor.application.ui.tree.node.OperationNode; +import org.nuiton.eugene.models.object.ObjectModelOperation; +import org.nuiton.eugene.models.object.ObjectModelParameter; + +import javax.swing.JTable; +import javax.swing.ListSelectionModel; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class OperationContentUIHandler extends ContenUIHandler<OperationNode, OperationContentUI> { + + @Override + public void beforeInit(OperationContentUI ui) { + + } + + @Override + public void afterInit(OperationContentUI ui) { + + ModelExtensionHelper helper = getApplicationContext(ui).getModelExtensionHelper(); + afterInit(ui, helper.getOperationTagValues(), helper.getOperationStereotypes()); + ui.getParameters().getSelectionModel().addListSelectionListener(e -> ui.getDeleteParameterFromOperation().setEnabled(!((ListSelectionModel) e.getSource()).isSelectionEmpty())); + + } + + @Override + protected void open(OperationContentUI ui, OperationNode node) { + + ObjectModelOperation data = node.getUserObject(); + open(ui, node, data.getStereotypes(), data.getTagValues()); + ui.getVisibilityMode().setSelectedValue(data.getVisibility()); + + Collection<ObjectModelParameter> parameters = data.getParameters(); + JTable parametersPanel = ui.getParameters(); + + ParameterTableModel tableModel = (ParameterTableModel) parametersPanel.getModel(); + tableModel.clear(); + + if (!parameters.isEmpty()) { + parameters.forEach(tableModel::add); + } + + ModelHelper modelHelper = getApplicationContext(ui).getModelHelper(); + List<String> allClasses = new ArrayList<>(modelHelper.getAllClassesWithJava()); + Collections.sort(allClasses); + allClasses.add(0, null); + + SwingUtil.fillComboBox(ui.getOperationReturnType(), allClasses, data.getReturnType()); + + ui.getParameters().setDefaultEditor(Class.class, new ComboBoxCellEditor(new JXComboBox(allClasses.toArray(new String[allClasses.size()])))); + + } + +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/PackageContentUI.jaxx b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/PackageContentUI.jaxx new file mode 100644 index 0000000..751491b --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/PackageContentUI.jaxx @@ -0,0 +1,59 @@ +<org.jdesktop.swingx.JXTitledPanel id="packageMainContent" implements="ContentUI<PackageNode>" styleClass="top"> + + <style source="ContentUI.jcss"/> + <import> + org.nuiton.eugene.editor.application.ui.tree.node.PackageNode + </import> + <script><![CDATA[ +public void open(PackageNode data) { handler.open(this, data); } +public void close() { handler.close(); } +]]> </script> + + <PackageNode id="model" javaBean="null"/> + + <JToolBar id="actions"> + <JButton id="createClassFromPackage"/> + <JButton id="createInterfaceFromPackage"/> + <JButton id="createEnumerationFromPackage"/> + <JSeparator/> + <JButton id="createPackageFromPackage"/> + <JButton id="deletePackageFromPackage"/> + </JToolBar> + + <org.jdesktop.swingx.JXTaskPaneContainer id="form"> + <org.jdesktop.swingx.JXTaskPane id="generalPane"> + <Table fill="both"> + <row> + <cell> + <JLabel id="packageNameLabel"/> + </cell> + <cell weightx="1"> + <JTextField id="packageName" onKeyReleased="model.setName(packageName.getText())"/> + </cell> + </row> + </Table> + </org.jdesktop.swingx.JXTaskPane> + + <org.jdesktop.swingx.JXTaskPane id="stereotypesAndTagValuesPane"> + <Table fill="both"> + <row> + <cell weightx="1"> + <JPanel id="stereotypes"> + <JLabel id="noStereotype"/> + </JPanel> + </cell> + </row> + <row> + <cell weightx="1"> + <JPanel id="tagValues"> + <JLabel id="noTagValue"/> + </JPanel> + </cell> + </row> + </Table> + + </org.jdesktop.swingx.JXTaskPane> + + </org.jdesktop.swingx.JXTaskPaneContainer> + +</org.jdesktop.swingx.JXTitledPanel> \ No newline at end of file diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/PackageContentUI.jcss b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/PackageContentUI.jcss new file mode 100644 index 0000000..5d657fc --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/PackageContentUI.jcss @@ -0,0 +1,37 @@ +#packageMainContent { + title:"eugene.editor.package"; +} + +#packageNameLabel { + text:"eugene.editor.package.name"; +} + +#packageName { + text:{getModel().getUserObject().getName()}; + _property:{"name"}; +} + +#createPackageFromPackage { + text:"eugene.editor.create.package"; + actionIcon:add; +} + +#createClassFromPackage { + text:"eugene.editor.create.class"; + actionIcon:add; +} + +#createInterfaceFromPackage { + text:"eugene.editor.create.interface"; + actionIcon:add; +} + +#createEnumerationFromPackage { + text:"eugene.editor.create.enumeration"; + actionIcon:add; +} + +#deletePackageFromPackage { + text:"eugene.editor.delete.package"; + actionIcon:delete; +} \ No newline at end of file diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/PackageContentUIHandler.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/PackageContentUIHandler.java new file mode 100644 index 0000000..962c4e0 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/PackageContentUIHandler.java @@ -0,0 +1,33 @@ +package org.nuiton.eugene.editor.application.ui.content; + +import org.nuiton.eugene.editor.application.ModelExtensionHelper; +import org.nuiton.eugene.editor.application.ui.tree.node.PackageNode; +import org.nuiton.eugene.models.object.ObjectModelPackage; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class PackageContentUIHandler extends ContenUIHandler<PackageNode, PackageContentUI> { + + @Override + public void beforeInit(PackageContentUI ui) { + } + + @Override + public void afterInit(PackageContentUI ui) { + + ModelExtensionHelper helper = getApplicationContext(ui).getModelExtensionHelper(); + afterInit(ui, helper.getPackageTagValues(), helper.getPackageStereotypes()); + + } + + @Override + protected void open(PackageContentUI ui, PackageNode node) { + + ObjectModelPackage data = node.getUserObject(); + open(ui, node, data.getStereotypes(), data.getTagValues()); + + } +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ParameterTableModel.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ParameterTableModel.java new file mode 100644 index 0000000..b01e084 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ParameterTableModel.java @@ -0,0 +1,103 @@ +package org.nuiton.eugene.editor.application.ui.content; + +import org.nuiton.eugene.models.object.ObjectModelParameter; +import org.nuiton.eugene.models.object.xml.ObjectModelParameterImpl; + +import javax.swing.table.AbstractTableModel; +import java.util.ArrayList; +import java.util.List; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 17/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class ParameterTableModel extends AbstractTableModel { + + private final List<ObjectModelParameter> parameters = new ArrayList<>(); + + public void add(ObjectModelParameter parameter) { + this.parameters.add(parameter); + fireTableRowsInserted(getRowCount() - 1, getRowCount() - 1); + } + + public void remove(int rowIndex) { + this.parameters.remove(rowIndex); + fireTableRowsDeleted(rowIndex, rowIndex); + } + + public void clear() { + int rowCount = getRowCount(); + parameters.clear(); + fireTableRowsDeleted(0, rowCount); + } + + public ObjectModelParameter get(int rowIndex) { + return parameters.get(rowIndex); + } + + @Override + public String getColumnName(int column) { + switch (column) { + case 0: + return t("eugene.editor.parameter.name"); + case 1: + return t("eugene.editor.parameter.type"); + default: + return null; + } + } + + @Override + public Class<?> getColumnClass(int columnIndex) { + switch (columnIndex) { + case 0: + return String.class; + case 1: + return Class.class; + default: + return null; + } + } + + @Override + public int getRowCount() { + return parameters.size(); + } + + @Override + public int getColumnCount() { + return 2; + } + + @Override + public boolean isCellEditable(int rowIndex, int columnIndex) { + return true; + } + + @Override + public Object getValueAt(int rowIndex, int columnIndex) { + ObjectModelParameter parameter = parameters.get(rowIndex); + switch (columnIndex) { + case 0: + return parameter.getName(); + case 1: + return parameter.getType(); + } + return null; + } + + @Override + public void setValueAt(Object aValue, int rowIndex, int columnIndex) { + ObjectModelParameter parameter = parameters.get(rowIndex); + switch (columnIndex) { + case 0: + ((ObjectModelParameterImpl) parameter).setName((String) aValue); + case 1: + ((ObjectModelParameterImpl) parameter).setType((String) aValue); + } + fireTableRowsUpdated(rowIndex, rowIndex); + } +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/AddInterfaceFromClassAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/AddInterfaceFromClassAction.java new file mode 100644 index 0000000..427feec --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/AddInterfaceFromClassAction.java @@ -0,0 +1,39 @@ +package org.nuiton.eugene.editor.application.ui.content.actions; + +import org.apache.commons.lang3.StringUtils; +import org.nuiton.eugene.editor.application.ui.content.ClassContentUI; +import org.nuiton.eugene.models.object.xml.ObjectModelInterfaceImpl; + +import javax.swing.DefaultComboBoxModel; +import javax.swing.DefaultListModel; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class AddInterfaceFromClassAction extends ContentActionSupport<ClassContentUI> { + + public AddInterfaceFromClassAction(ClassContentUI ui) { + super(ui); + } + + @Override + protected void execute(ClassContentUI ui) { + + String interfaceName = (String) ui.getInterfacesHeaderType().getSelectedItem(); + String[] split = interfaceName.split("\\."); + + ObjectModelInterfaceImpl newInterface = new ObjectModelInterfaceImpl(); + newInterface.setName(split[split.length - 1]); + newInterface.setPackage(StringUtils.removeEnd(interfaceName, "." + newInterface.getName())); + newInterface.postInit(); + + ui.getModel().getUserObject().getInterfaces().add(newInterface); + + ((DefaultListModel<String>) ui.getInterfaces().getModel()).addElement(interfaceName); + ((DefaultComboBoxModel) ui.getInterfacesHeaderType().getModel()).removeElement(interfaceName); + + } + +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/AddLiteralFromEnumerationAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/AddLiteralFromEnumerationAction.java new file mode 100644 index 0000000..fd45704 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/AddLiteralFromEnumerationAction.java @@ -0,0 +1,32 @@ +package org.nuiton.eugene.editor.application.ui.content.actions; + +import org.nuiton.eugene.editor.application.ui.content.EnumerationContentUI; + +import javax.swing.DefaultListModel; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class AddLiteralFromEnumerationAction extends ContentActionSupport<EnumerationContentUI> { + + public AddLiteralFromEnumerationAction(EnumerationContentUI ui) { + super(ui); + } + + @Override + protected void execute(EnumerationContentUI ui) { + + String text = ui.getLiteralsHeaderName().getText().trim(); + + ui.getModel().addLiteral(text); + + ((DefaultListModel<String>) ui.getLiterals().getModel()).addElement(text); + ui.getLiteralsHeaderName().setText(""); + //TODO Comprendre pk le binding ne fonctionne pas + ui.getAddLiteralFromEnumeration().setEnabled(false); + + } + +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/AddSuperClassFromInterfaceAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/AddSuperClassFromInterfaceAction.java new file mode 100644 index 0000000..a39bfa6 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/AddSuperClassFromInterfaceAction.java @@ -0,0 +1,31 @@ +package org.nuiton.eugene.editor.application.ui.content.actions; + +import org.nuiton.eugene.editor.application.ui.content.InterfaceContentUI; + +import javax.swing.DefaultComboBoxModel; +import javax.swing.DefaultListModel; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class AddSuperClassFromInterfaceAction extends ContentActionSupport<InterfaceContentUI> { + + public AddSuperClassFromInterfaceAction(InterfaceContentUI ui) { + super(ui); + } + + @Override + protected void execute(InterfaceContentUI ui) { + + String superClassName = (String) ui.getSuperClassesHeaderType().getSelectedItem(); + + ui.getModel().addInterface(superClassName); + + ((DefaultListModel<String>) ui.getSuperClasses().getModel()).addElement(superClassName); + ((DefaultComboBoxModel) ui.getSuperClassesHeaderType().getModel()).removeElement(superClassName); + + } + +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/ContentActionSupport.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/ContentActionSupport.java new file mode 100644 index 0000000..424f45a --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/ContentActionSupport.java @@ -0,0 +1,55 @@ +package org.nuiton.eugene.editor.application.ui.content.actions; + +import org.nuiton.eugene.editor.application.ui.EugeneEditorUI; +import org.nuiton.eugene.editor.application.ui.content.ContentUI; +import org.nuiton.eugene.editor.application.ui.tree.EugeneEditorTree; +import org.nuiton.eugene.editor.application.ui.tree.node.NodeSupport; + +import javax.swing.AbstractAction; +import java.awt.event.ActionEvent; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public abstract class ContentActionSupport<U extends ContentUI<?>> extends AbstractAction { + + private final U ui; + + public ContentActionSupport(U ui) { + this.ui = ui; + } + + protected abstract void execute(U ui); + + protected boolean canExecute(U ui) { + return true; + } + + @Override + public final void actionPerformed(ActionEvent e) { + + boolean canExecute = canExecute(ui); + if (canExecute) { + execute(ui); + } + } + + protected EugeneEditorUI getMainUi(U ui) { + return ui.getParentContainer(EugeneEditorUI.class); + } + + protected EugeneEditorTree getTree(U ui) { + return getMainUi(ui).getProjectNavigation(); + } + + protected NodeSupport getSelectedNode(NodeSupport currentNode) { + NodeSupport parentNode = currentNode.getParent(); + NodeSupport newSelectedNode = parentNode.getChildBefore(currentNode); + if (newSelectedNode == null) { + newSelectedNode = parentNode; + } + return newSelectedNode; + } +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateAttributeFromAttributeAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateAttributeFromAttributeAction.java new file mode 100644 index 0000000..a2df3ad --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateAttributeFromAttributeAction.java @@ -0,0 +1,44 @@ +package org.nuiton.eugene.editor.application.ui.content.actions; + +import org.nuiton.eugene.editor.application.ui.content.AttributeContentUI; +import org.nuiton.eugene.editor.application.ui.tree.EugeneEditorTree; +import org.nuiton.eugene.editor.application.ui.tree.node.AttributeNode; +import org.nuiton.eugene.editor.application.ui.tree.node.NodeSupport; + +import javax.swing.tree.DefaultTreeModel; +import javax.swing.tree.TreePath; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class CreateAttributeFromAttributeAction extends ContentActionSupport<AttributeContentUI> { + + public CreateAttributeFromAttributeAction(AttributeContentUI ui) { + super(ui); + } + + @Override + protected boolean canExecute(AttributeContentUI ui) { + return getMainUi(ui).canQuitContent(); + } + + @Override + protected void execute(AttributeContentUI ui) { + + AttributeNode currentNode = ui.getModel(); + NodeSupport parentNode = currentNode.getParent(); + + AttributeNode newNode = parentNode.addAttribute(); + + EugeneEditorTree tree = getTree(ui); + + DefaultTreeModel treeModel = tree.getModel(); + treeModel.insertNodeInto(newNode, parentNode, parentNode.getChildCount()); + + tree.setSelectionPath(new TreePath(treeModel.getPathToRoot(newNode))); + + } + +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateAttributeFromClassAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateAttributeFromClassAction.java new file mode 100644 index 0000000..2273630 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateAttributeFromClassAction.java @@ -0,0 +1,42 @@ +package org.nuiton.eugene.editor.application.ui.content.actions; + +import org.nuiton.eugene.editor.application.ui.content.ClassContentUI; +import org.nuiton.eugene.editor.application.ui.tree.EugeneEditorTree; +import org.nuiton.eugene.editor.application.ui.tree.node.AttributeNode; +import org.nuiton.eugene.editor.application.ui.tree.node.NodeSupport; + +import javax.swing.tree.DefaultTreeModel; +import javax.swing.tree.TreePath; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class CreateAttributeFromClassAction extends ContentActionSupport<ClassContentUI> { + + public CreateAttributeFromClassAction(ClassContentUI ui) { + super(ui); + } + + @Override + protected boolean canExecute(ClassContentUI ui) { + return getMainUi(ui).canQuitContent(); + } + + @Override + protected void execute(ClassContentUI ui) { + + NodeSupport currentNode = ui.getModel(); + AttributeNode newNode = currentNode.addAttribute(); + + EugeneEditorTree tree = getTree(ui); + + DefaultTreeModel treeModel = tree.getModel(); + treeModel.insertNodeInto(newNode, currentNode, currentNode.getChildCount()); + + tree.setSelectionPath(new TreePath(treeModel.getPathToRoot(newNode))); + + } + +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateAttributeFromInterfaceAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateAttributeFromInterfaceAction.java new file mode 100644 index 0000000..f75fa25 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateAttributeFromInterfaceAction.java @@ -0,0 +1,42 @@ +package org.nuiton.eugene.editor.application.ui.content.actions; + +import org.nuiton.eugene.editor.application.ui.content.InterfaceContentUI; +import org.nuiton.eugene.editor.application.ui.tree.EugeneEditorTree; +import org.nuiton.eugene.editor.application.ui.tree.node.AttributeNode; +import org.nuiton.eugene.editor.application.ui.tree.node.NodeSupport; + +import javax.swing.tree.DefaultTreeModel; +import javax.swing.tree.TreePath; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class CreateAttributeFromInterfaceAction extends ContentActionSupport<InterfaceContentUI> { + + public CreateAttributeFromInterfaceAction(InterfaceContentUI ui) { + super(ui); + } + + @Override + protected boolean canExecute(InterfaceContentUI ui) { + return getMainUi(ui).canQuitContent(); + } + + @Override + protected void execute(InterfaceContentUI ui) { + + NodeSupport currentNode = ui.getModel(); + AttributeNode newNode = currentNode.addAttribute(); + + EugeneEditorTree tree = getTree(ui); + + DefaultTreeModel treeModel = tree.getModel(); + treeModel.insertNodeInto(newNode, currentNode, currentNode.getChildCount()); + + tree.setSelectionPath(new TreePath(treeModel.getPathToRoot(newNode))); + + } + +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateClassFromClassAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateClassFromClassAction.java new file mode 100644 index 0000000..6dd1f99 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateClassFromClassAction.java @@ -0,0 +1,45 @@ +package org.nuiton.eugene.editor.application.ui.content.actions; + +import org.nuiton.eugene.editor.application.ui.content.ClassContentUI; +import org.nuiton.eugene.editor.application.ui.tree.EugeneEditorTree; +import org.nuiton.eugene.editor.application.ui.tree.node.ClassNode; +import org.nuiton.eugene.editor.application.ui.tree.node.NodeSupport; + +import javax.swing.tree.DefaultTreeModel; +import javax.swing.tree.TreePath; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class CreateClassFromClassAction extends ContentActionSupport<ClassContentUI> { + + public CreateClassFromClassAction(ClassContentUI ui) { + super(ui); + } + + @Override + protected boolean canExecute(ClassContentUI ui) { + return getMainUi(ui).canQuitContent(); + } + + @Override + protected void execute(ClassContentUI ui) { + + ClassNode currentNode = ui.getModel(); + + ClassNode newNode = currentNode.getRoot().addClass(currentNode.getPackageName()); + + EugeneEditorTree tree = getTree(ui); + + DefaultTreeModel treeModel = tree.getModel(); + NodeSupport parentNode = currentNode.getParent(); + treeModel.insertNodeInto(newNode, parentNode, parentNode.getChildCount()); + + tree.setSelectionPath(new TreePath(treeModel.getPathToRoot(newNode))); + + } + + +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateClassFromPackageAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateClassFromPackageAction.java new file mode 100644 index 0000000..4e69e2c --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateClassFromPackageAction.java @@ -0,0 +1,43 @@ +package org.nuiton.eugene.editor.application.ui.content.actions; + +import org.nuiton.eugene.editor.application.ui.content.PackageContentUI; +import org.nuiton.eugene.editor.application.ui.tree.EugeneEditorTree; +import org.nuiton.eugene.editor.application.ui.tree.node.ClassNode; +import org.nuiton.eugene.editor.application.ui.tree.node.PackageNode; + +import javax.swing.tree.DefaultTreeModel; +import javax.swing.tree.TreePath; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class CreateClassFromPackageAction extends ContentActionSupport<PackageContentUI> { + + public CreateClassFromPackageAction(PackageContentUI ui) { + super(ui); + } + + @Override + protected boolean canExecute(PackageContentUI ui) { + return getMainUi(ui).canQuitContent(); + } + + @Override + protected void execute(PackageContentUI ui) { + + PackageNode currentNode = ui.getModel(); + + ClassNode newNode = currentNode.getRoot().addClass(currentNode.getName()); + + EugeneEditorTree tree = getTree(ui); + + DefaultTreeModel treeModel = tree.getModel(); + treeModel.insertNodeInto(newNode, currentNode, currentNode.getChildCount()); + + tree.setSelectionPath(new TreePath(treeModel.getPathToRoot(newNode))); + + } + +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateEnumerationFromEnumerationAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateEnumerationFromEnumerationAction.java new file mode 100644 index 0000000..02494fb --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateEnumerationFromEnumerationAction.java @@ -0,0 +1,44 @@ +package org.nuiton.eugene.editor.application.ui.content.actions; + +import org.nuiton.eugene.editor.application.ui.content.EnumerationContentUI; +import org.nuiton.eugene.editor.application.ui.tree.EugeneEditorTree; +import org.nuiton.eugene.editor.application.ui.tree.node.EnumerationNode; +import org.nuiton.eugene.editor.application.ui.tree.node.NodeSupport; + +import javax.swing.tree.DefaultTreeModel; +import javax.swing.tree.TreePath; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class CreateEnumerationFromEnumerationAction extends ContentActionSupport<EnumerationContentUI> { + + public CreateEnumerationFromEnumerationAction(EnumerationContentUI ui) { + super(ui); + } + + @Override + protected boolean canExecute(EnumerationContentUI ui) { + return getMainUi(ui).canQuitContent(); + } + + @Override + protected void execute(EnumerationContentUI ui) { + + EnumerationNode currentNode = ui.getModel(); + + EnumerationNode newNode = currentNode.getRoot().addEnumeration(currentNode.getPackageName()); + + EugeneEditorTree tree = getTree(ui); + + DefaultTreeModel treeModel = tree.getModel(); + NodeSupport parentNode = currentNode.getParent(); + treeModel.insertNodeInto(newNode, parentNode, parentNode.getChildCount()); + + tree.setSelectionPath(new TreePath(treeModel.getPathToRoot(newNode))); + + } + +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateEnumerationFromPackageAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateEnumerationFromPackageAction.java new file mode 100644 index 0000000..27f444c --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateEnumerationFromPackageAction.java @@ -0,0 +1,43 @@ +package org.nuiton.eugene.editor.application.ui.content.actions; + +import org.nuiton.eugene.editor.application.ui.content.PackageContentUI; +import org.nuiton.eugene.editor.application.ui.tree.EugeneEditorTree; +import org.nuiton.eugene.editor.application.ui.tree.node.EnumerationNode; +import org.nuiton.eugene.editor.application.ui.tree.node.PackageNode; + +import javax.swing.tree.DefaultTreeModel; +import javax.swing.tree.TreePath; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class CreateEnumerationFromPackageAction extends ContentActionSupport<PackageContentUI> { + + public CreateEnumerationFromPackageAction(PackageContentUI ui) { + super(ui); + } + + @Override + protected boolean canExecute(PackageContentUI ui) { + return getMainUi(ui).canQuitContent(); + } + + @Override + protected void execute(PackageContentUI ui) { + + PackageNode currentNode = ui.getModel(); + + EnumerationNode newNode = currentNode.getRoot().addEnumeration(currentNode.getName()); + + EugeneEditorTree tree = getTree(ui); + + DefaultTreeModel treeModel = tree.getModel(); + treeModel.insertNodeInto(newNode, currentNode, currentNode.getChildCount()); + + tree.setSelectionPath(new TreePath(treeModel.getPathToRoot(newNode))); + + } + +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateInterfaceFromInterfaceAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateInterfaceFromInterfaceAction.java new file mode 100644 index 0000000..e5cb464 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateInterfaceFromInterfaceAction.java @@ -0,0 +1,44 @@ +package org.nuiton.eugene.editor.application.ui.content.actions; + +import org.nuiton.eugene.editor.application.ui.content.InterfaceContentUI; +import org.nuiton.eugene.editor.application.ui.tree.EugeneEditorTree; +import org.nuiton.eugene.editor.application.ui.tree.node.InterfaceNode; +import org.nuiton.eugene.editor.application.ui.tree.node.NodeSupport; + +import javax.swing.tree.DefaultTreeModel; +import javax.swing.tree.TreePath; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class CreateInterfaceFromInterfaceAction extends ContentActionSupport<InterfaceContentUI> { + + public CreateInterfaceFromInterfaceAction(InterfaceContentUI ui) { + super(ui); + } + + @Override + protected boolean canExecute(InterfaceContentUI ui) { + return getMainUi(ui).canQuitContent(); + } + + @Override + protected void execute(InterfaceContentUI ui) { + + InterfaceNode currentNode = ui.getModel(); + + InterfaceNode newNode = currentNode.getRoot().addInterface(currentNode.getPackageName()); + + EugeneEditorTree tree = getTree(ui); + + DefaultTreeModel treeModel = tree.getModel(); + NodeSupport parentNode = currentNode.getParent(); + treeModel.insertNodeInto(newNode, parentNode, parentNode.getChildCount()); + + tree.setSelectionPath(new TreePath(treeModel.getPathToRoot(newNode))); + + } + +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateInterfaceFromPackageAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateInterfaceFromPackageAction.java new file mode 100644 index 0000000..89b2818 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateInterfaceFromPackageAction.java @@ -0,0 +1,43 @@ +package org.nuiton.eugene.editor.application.ui.content.actions; + +import org.nuiton.eugene.editor.application.ui.content.PackageContentUI; +import org.nuiton.eugene.editor.application.ui.tree.EugeneEditorTree; +import org.nuiton.eugene.editor.application.ui.tree.node.InterfaceNode; +import org.nuiton.eugene.editor.application.ui.tree.node.PackageNode; + +import javax.swing.tree.DefaultTreeModel; +import javax.swing.tree.TreePath; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class CreateInterfaceFromPackageAction extends ContentActionSupport<PackageContentUI> { + + public CreateInterfaceFromPackageAction(PackageContentUI ui) { + super(ui); + } + + @Override + protected boolean canExecute(PackageContentUI ui) { + return getMainUi(ui).canQuitContent(); + } + + @Override + protected void execute(PackageContentUI ui) { + + PackageNode currentNode = ui.getModel(); + + InterfaceNode newNode = currentNode.getRoot().addInterface(currentNode.getName()); + + EugeneEditorTree tree = getTree(ui); + + DefaultTreeModel treeModel = tree.getModel(); + treeModel.insertNodeInto(newNode, currentNode, currentNode.getChildCount()); + + tree.setSelectionPath(new TreePath(treeModel.getPathToRoot(newNode))); + + } + +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateLiteralFromEnumerationAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateLiteralFromEnumerationAction.java new file mode 100644 index 0000000..7ef273c --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateLiteralFromEnumerationAction.java @@ -0,0 +1,21 @@ +package org.nuiton.eugene.editor.application.ui.content.actions; + +import org.nuiton.eugene.editor.application.ui.content.EnumerationContentUI; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class CreateLiteralFromEnumerationAction extends ContentActionSupport<EnumerationContentUI> { + + public CreateLiteralFromEnumerationAction(EnumerationContentUI ui) { + super(ui); + } + + @Override + protected void execute(EnumerationContentUI ui) { + + } + +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateOperationFromClassAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateOperationFromClassAction.java new file mode 100644 index 0000000..af6fa7a --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateOperationFromClassAction.java @@ -0,0 +1,43 @@ +package org.nuiton.eugene.editor.application.ui.content.actions; + +import org.nuiton.eugene.editor.application.ui.content.ClassContentUI; +import org.nuiton.eugene.editor.application.ui.tree.EugeneEditorTree; +import org.nuiton.eugene.editor.application.ui.tree.node.ClassNode; +import org.nuiton.eugene.editor.application.ui.tree.node.OperationNode; + +import javax.swing.tree.DefaultTreeModel; +import javax.swing.tree.TreePath; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class CreateOperationFromClassAction extends ContentActionSupport<ClassContentUI> { + + public CreateOperationFromClassAction(ClassContentUI ui) { + super(ui); + } + + @Override + protected boolean canExecute(ClassContentUI ui) { + return getMainUi(ui).canQuitContent(); + } + + @Override + protected void execute(ClassContentUI ui) { + + ClassNode currentNode = ui.getModel(); + + OperationNode newNode = currentNode.addOperation(); + + EugeneEditorTree tree = getTree(ui); + + DefaultTreeModel treeModel = tree.getModel(); + treeModel.insertNodeInto(newNode, currentNode, currentNode.getChildCount()); + + tree.setSelectionPath(new TreePath(treeModel.getPathToRoot(newNode))); + + } + +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateOperationFromInterfaceAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateOperationFromInterfaceAction.java new file mode 100644 index 0000000..76fce52 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateOperationFromInterfaceAction.java @@ -0,0 +1,43 @@ +package org.nuiton.eugene.editor.application.ui.content.actions; + +import org.nuiton.eugene.editor.application.ui.content.InterfaceContentUI; +import org.nuiton.eugene.editor.application.ui.tree.EugeneEditorTree; +import org.nuiton.eugene.editor.application.ui.tree.node.InterfaceNode; +import org.nuiton.eugene.editor.application.ui.tree.node.OperationNode; + +import javax.swing.tree.DefaultTreeModel; +import javax.swing.tree.TreePath; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class CreateOperationFromInterfaceAction extends ContentActionSupport<InterfaceContentUI> { + + public CreateOperationFromInterfaceAction(InterfaceContentUI ui) { + super(ui); + } + + @Override + protected boolean canExecute(InterfaceContentUI ui) { + return getMainUi(ui).canQuitContent(); + } + + @Override + protected void execute(InterfaceContentUI ui) { + + InterfaceNode currentNode = ui.getModel(); + + OperationNode newNode = currentNode.addOperation(); + + EugeneEditorTree tree = getTree(ui); + + DefaultTreeModel treeModel = tree.getModel(); + treeModel.insertNodeInto(newNode, currentNode, currentNode.getChildCount()); + + tree.setSelectionPath(new TreePath(treeModel.getPathToRoot(newNode))); + + } + +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateOperationFromOperationAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateOperationFromOperationAction.java new file mode 100644 index 0000000..882f9f4 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateOperationFromOperationAction.java @@ -0,0 +1,44 @@ +package org.nuiton.eugene.editor.application.ui.content.actions; + +import org.nuiton.eugene.editor.application.ui.content.OperationContentUI; +import org.nuiton.eugene.editor.application.ui.tree.EugeneEditorTree; +import org.nuiton.eugene.editor.application.ui.tree.node.NodeSupport; +import org.nuiton.eugene.editor.application.ui.tree.node.OperationNode; + +import javax.swing.tree.DefaultTreeModel; +import javax.swing.tree.TreePath; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class CreateOperationFromOperationAction extends ContentActionSupport<OperationContentUI> { + + public CreateOperationFromOperationAction(OperationContentUI ui) { + super(ui); + } + + @Override + protected boolean canExecute(OperationContentUI ui) { + return getMainUi(ui).canQuitContent(); + } + + @Override + protected void execute(OperationContentUI ui) { + + OperationNode currentNode = ui.getModel(); + NodeSupport parentNode = currentNode.getParent(); + + OperationNode newNode = parentNode.addOperation(); + + EugeneEditorTree tree = getTree(ui); + + DefaultTreeModel treeModel = tree.getModel(); + treeModel.insertNodeInto(newNode, parentNode, parentNode.getChildCount()); + + tree.setSelectionPath(new TreePath(treeModel.getPathToRoot(newNode))); + + } + +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreatePackageFromModelAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreatePackageFromModelAction.java new file mode 100644 index 0000000..26e8495 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreatePackageFromModelAction.java @@ -0,0 +1,45 @@ +package org.nuiton.eugene.editor.application.ui.content.actions; + +import org.nuiton.eugene.editor.application.ui.content.ModelContentUI; +import org.nuiton.eugene.editor.application.ui.tree.EugeneEditorTree; +import org.nuiton.eugene.editor.application.ui.tree.node.ModelNode; +import org.nuiton.eugene.editor.application.ui.tree.node.PackageNode; + +import javax.swing.tree.DefaultTreeModel; +import javax.swing.tree.TreePath; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class CreatePackageFromModelAction extends ContentActionSupport<ModelContentUI> { + + public CreatePackageFromModelAction(ModelContentUI ui) { + super(ui); + } + + @Override + protected boolean canExecute(ModelContentUI ui) { + return getMainUi(ui).canQuitContent(); + } + + @Override + protected void execute(ModelContentUI ui) { + + ModelNode currentNode = ui.getModel(); + + PackageNode newNode = currentNode.addPackage(""); + + EugeneEditorTree tree = getTree(ui); + + DefaultTreeModel treeModel = tree.getModel(); + ModelNode root = (ModelNode) treeModel.getRoot(); + treeModel.insertNodeInto(newNode, root, root.getChildCount()); + + TreePath path = new TreePath(treeModel.getPathToRoot(newNode)); + tree.setSelectionPath(path); + + } + +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreatePackageFromPackageAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreatePackageFromPackageAction.java new file mode 100644 index 0000000..8411afb --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreatePackageFromPackageAction.java @@ -0,0 +1,42 @@ +package org.nuiton.eugene.editor.application.ui.content.actions; + +import org.nuiton.eugene.editor.application.ui.content.PackageContentUI; +import org.nuiton.eugene.editor.application.ui.tree.EugeneEditorTree; +import org.nuiton.eugene.editor.application.ui.tree.node.ModelNode; +import org.nuiton.eugene.editor.application.ui.tree.node.PackageNode; + +import javax.swing.tree.DefaultTreeModel; +import javax.swing.tree.TreePath; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class CreatePackageFromPackageAction extends ContentActionSupport<PackageContentUI> { + + public CreatePackageFromPackageAction(PackageContentUI ui) { + super(ui); + } + + @Override + protected void execute(PackageContentUI ui) { + + PackageNode currentNode = ui.getModel(); + ModelNode root = currentNode.getRoot(); + + PackageNode newNode = root.addPackage(currentNode.getName() + "."); + + EugeneEditorTree tree = getTree(ui); + + DefaultTreeModel treeModel = tree.getModel(); + + treeModel.insertNodeInto(newNode, root, root.getChildCount()); + + TreePath path = new TreePath(treeModel.getPathToRoot(newNode)); + tree.setSelectionPath(path); + + } + + +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateParameterFromOperationAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateParameterFromOperationAction.java new file mode 100644 index 0000000..32c0424 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateParameterFromOperationAction.java @@ -0,0 +1,35 @@ +package org.nuiton.eugene.editor.application.ui.content.actions; + +import org.nuiton.eugene.editor.application.ui.content.OperationContentUI; +import org.nuiton.eugene.editor.application.ui.content.ParameterTableModel; +import org.nuiton.eugene.editor.application.ui.tree.node.OperationNode; +import org.nuiton.eugene.models.object.xml.ObjectModelParameterImpl; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class CreateParameterFromOperationAction extends ContentActionSupport<OperationContentUI> { + + public CreateParameterFromOperationAction(OperationContentUI ui) { + super(ui); + } + + @Override + protected boolean canExecute(OperationContentUI ui) { + return getMainUi(ui).canQuitContent(); + } + + @Override + protected void execute(OperationContentUI ui) { + + OperationNode currentNode = ui.getModel(); + + ObjectModelParameterImpl newData = currentNode.addParameter(); + + ((ParameterTableModel) ui.getParameters().getModel()).add(newData); + + } + +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeleteAttributeFromAttributeAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeleteAttributeFromAttributeAction.java new file mode 100644 index 0000000..61dc3db --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeleteAttributeFromAttributeAction.java @@ -0,0 +1,45 @@ +package org.nuiton.eugene.editor.application.ui.content.actions; + +import org.nuiton.eugene.editor.application.ui.content.AttributeContentUI; +import org.nuiton.eugene.editor.application.ui.tree.EugeneEditorTree; +import org.nuiton.eugene.editor.application.ui.tree.node.NodeSupport; + +import javax.swing.tree.DefaultTreeModel; +import javax.swing.tree.TreePath; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class DeleteAttributeFromAttributeAction extends ContentActionSupport<AttributeContentUI> { + + public DeleteAttributeFromAttributeAction(AttributeContentUI ui) { + super(ui); + } + + @Override + protected boolean canExecute(AttributeContentUI ui) { + return getMainUi(ui).canQuitContent(); + } + + @Override + protected void execute(AttributeContentUI ui) { + + NodeSupport currentNode = ui.getModel(); + + currentNode.getParent().removeAttribute(ui.getModel().getName()); + + EugeneEditorTree tree = getTree(ui); + + NodeSupport newSelectedNode = getSelectedNode(currentNode); + + DefaultTreeModel treeModel = tree.getModel(); + treeModel.removeNodeFromParent(currentNode); + + TreePath path = new TreePath(treeModel.getPathToRoot(newSelectedNode)); + tree.setSelectionPath(path); + + } + +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeleteClassFromClassAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeleteClassFromClassAction.java new file mode 100644 index 0000000..96e324e --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeleteClassFromClassAction.java @@ -0,0 +1,46 @@ +package org.nuiton.eugene.editor.application.ui.content.actions; + +import org.nuiton.eugene.editor.application.ui.content.ClassContentUI; +import org.nuiton.eugene.editor.application.ui.tree.EugeneEditorTree; +import org.nuiton.eugene.editor.application.ui.tree.node.ClassNode; +import org.nuiton.eugene.editor.application.ui.tree.node.NodeSupport; + +import javax.swing.tree.DefaultTreeModel; +import javax.swing.tree.TreePath; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class DeleteClassFromClassAction extends ContentActionSupport<ClassContentUI> { + + public DeleteClassFromClassAction(ClassContentUI ui) { + super(ui); + } + + @Override + protected boolean canExecute(ClassContentUI ui) { + return getMainUi(ui).canQuitContent(); + } + + @Override + protected void execute(ClassContentUI ui) { + + ClassNode currentNode = ui.getModel(); + + currentNode.getRoot().removeClass(ui.getModel().getUserObject().getQualifiedName()); + + EugeneEditorTree tree = getTree(ui); + + NodeSupport newSelectedNode = getSelectedNode(currentNode); + + DefaultTreeModel treeModel = tree.getModel(); + treeModel.removeNodeFromParent(currentNode); + + TreePath path = new TreePath(treeModel.getPathToRoot(newSelectedNode)); + tree.setSelectionPath(path); + + } + +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeleteEnumerationFromEnumerationAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeleteEnumerationFromEnumerationAction.java new file mode 100644 index 0000000..d8774c6 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeleteEnumerationFromEnumerationAction.java @@ -0,0 +1,46 @@ +package org.nuiton.eugene.editor.application.ui.content.actions; + +import org.nuiton.eugene.editor.application.ui.content.EnumerationContentUI; +import org.nuiton.eugene.editor.application.ui.tree.EugeneEditorTree; +import org.nuiton.eugene.editor.application.ui.tree.node.EnumerationNode; +import org.nuiton.eugene.editor.application.ui.tree.node.NodeSupport; + +import javax.swing.tree.DefaultTreeModel; +import javax.swing.tree.TreePath; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class DeleteEnumerationFromEnumerationAction extends ContentActionSupport<EnumerationContentUI> { + + public DeleteEnumerationFromEnumerationAction(EnumerationContentUI ui) { + super(ui); + } + + @Override + protected boolean canExecute(EnumerationContentUI ui) { + return getMainUi(ui).canQuitContent(); + } + + @Override + protected void execute(EnumerationContentUI ui) { + + EnumerationNode currentNode = ui.getModel(); + + currentNode.getRoot().removeEnumeration(ui.getModel().getUserObject().getQualifiedName()); + + EugeneEditorTree tree = getTree(ui); + + NodeSupport newSelectedNode = getSelectedNode(currentNode); + + DefaultTreeModel treeModel = tree.getModel(); + treeModel.removeNodeFromParent(currentNode); + + TreePath path = new TreePath(treeModel.getPathToRoot(newSelectedNode)); + tree.setSelectionPath(path); + + } + +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeleteInterfaceFromInterfaceAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeleteInterfaceFromInterfaceAction.java new file mode 100644 index 0000000..bb2fb40 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeleteInterfaceFromInterfaceAction.java @@ -0,0 +1,41 @@ +package org.nuiton.eugene.editor.application.ui.content.actions; + +import org.nuiton.eugene.editor.application.ui.content.InterfaceContentUI; +import org.nuiton.eugene.editor.application.ui.tree.EugeneEditorTree; +import org.nuiton.eugene.editor.application.ui.tree.node.InterfaceNode; +import org.nuiton.eugene.editor.application.ui.tree.node.NodeSupport; + +import javax.swing.tree.DefaultTreeModel; +import javax.swing.tree.TreePath; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class DeleteInterfaceFromInterfaceAction extends ContentActionSupport<InterfaceContentUI> { + + public DeleteInterfaceFromInterfaceAction(InterfaceContentUI ui) { + super(ui); + } + + @Override + protected void execute(InterfaceContentUI ui) { + + InterfaceNode currentNode = ui.getModel(); + + currentNode.getRoot().removeInterface(currentNode.getUserObject().getQualifiedName()); + + EugeneEditorTree tree = getTree(ui); + + NodeSupport newSelectedNode = getSelectedNode(currentNode); + + DefaultTreeModel treeModel = tree.getModel(); + treeModel.removeNodeFromParent(currentNode); + + TreePath path = new TreePath(treeModel.getPathToRoot(newSelectedNode)); + tree.setSelectionPath(path); + + } + +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeleteOperationFromOperationAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeleteOperationFromOperationAction.java new file mode 100644 index 0000000..522d36d --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeleteOperationFromOperationAction.java @@ -0,0 +1,45 @@ +package org.nuiton.eugene.editor.application.ui.content.actions; + +import org.nuiton.eugene.editor.application.ui.content.OperationContentUI; +import org.nuiton.eugene.editor.application.ui.tree.EugeneEditorTree; +import org.nuiton.eugene.editor.application.ui.tree.node.NodeSupport; +import org.nuiton.eugene.editor.application.ui.tree.node.OperationNode; + +import javax.swing.tree.DefaultTreeModel; +import javax.swing.tree.TreePath; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class DeleteOperationFromOperationAction extends ContentActionSupport<OperationContentUI> { + + public DeleteOperationFromOperationAction(OperationContentUI ui) { + super(ui); + } + + @Override + protected boolean canExecute(OperationContentUI ui) { + return getMainUi(ui).canQuitContent(); + } + + @Override + protected void execute(OperationContentUI ui) { + + OperationNode currentNode = ui.getModel(); + + currentNode.getParent().removeOperation(ui.getModel().getName()); + + EugeneEditorTree tree = getTree(ui); + + NodeSupport newSelectedNode = getSelectedNode(currentNode); + + DefaultTreeModel treeModel = tree.getModel(); + treeModel.removeNodeFromParent(currentNode); + + tree.setSelectionPath(new TreePath(treeModel.getPathToRoot(newSelectedNode))); + + } + +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeletePackageFromPackageAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeletePackageFromPackageAction.java new file mode 100644 index 0000000..90cfb1a --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeletePackageFromPackageAction.java @@ -0,0 +1,45 @@ +package org.nuiton.eugene.editor.application.ui.content.actions; + +import org.nuiton.eugene.editor.application.ui.content.PackageContentUI; +import org.nuiton.eugene.editor.application.ui.tree.EugeneEditorTree; +import org.nuiton.eugene.editor.application.ui.tree.node.NodeSupport; +import org.nuiton.eugene.editor.application.ui.tree.node.PackageNode; + +import javax.swing.tree.DefaultTreeModel; +import javax.swing.tree.TreePath; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class DeletePackageFromPackageAction extends ContentActionSupport<PackageContentUI> { + + public DeletePackageFromPackageAction(PackageContentUI ui) { + super(ui); + } + + @Override + protected boolean canExecute(PackageContentUI ui) { + return getMainUi(ui).canQuitContent(); + } + + @Override + protected void execute(PackageContentUI ui) { + + PackageNode currentNode = ui.getModel(); + currentNode.getRoot().removePackage(ui.getModel().getName()); + + EugeneEditorTree tree = getTree(ui); + + NodeSupport newSelectedNode = getSelectedNode(currentNode); + + DefaultTreeModel treeModel = tree.getModel(); + treeModel.removeNodeFromParent(currentNode); + + tree.setSelectionPath(new TreePath(treeModel.getPathToRoot(newSelectedNode))); + + } + + +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeleteParameterFromOperationAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeleteParameterFromOperationAction.java new file mode 100644 index 0000000..1233dc2 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeleteParameterFromOperationAction.java @@ -0,0 +1,50 @@ +package org.nuiton.eugene.editor.application.ui.content.actions; + +import org.nuiton.eugene.editor.application.ui.content.OperationContentUI; +import org.nuiton.eugene.editor.application.ui.content.ParameterTableModel; +import org.nuiton.eugene.editor.application.ui.tree.node.OperationNode; + +import java.util.Arrays; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class DeleteParameterFromOperationAction extends ContentActionSupport<OperationContentUI> { + + public DeleteParameterFromOperationAction(OperationContentUI ui) { + super(ui); + } + + @Override + protected boolean canExecute(OperationContentUI ui) { + return getMainUi(ui).canQuitContent(); + } + + @Override + protected void execute(OperationContentUI ui) { + + int[] selectedRows = ui.getParameters().getSelectedRows(); + if (selectedRows.length == 0) { + return; + } + + Arrays.sort(selectedRows); + + ParameterTableModel tableModel = (ParameterTableModel) ui.getParameters().getModel(); + OperationNode currentNode = ui.getModel(); + + for (int i = selectedRows.length - 1; i > -1; i--) { + + int selectedRow = selectedRows[i]; + + currentNode.removeParameter(tableModel.get(selectedRow).getName()); + + tableModel.remove(selectedRow); + + } + + } + +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/RemoveInterfaceFromClassAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/RemoveInterfaceFromClassAction.java new file mode 100644 index 0000000..267a4bf --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/RemoveInterfaceFromClassAction.java @@ -0,0 +1,38 @@ +package org.nuiton.eugene.editor.application.ui.content.actions; + +import org.nuiton.eugene.editor.application.ui.content.ClassContentUI; +import org.nuiton.eugene.editor.application.ui.tree.node.ModelNode; + +import javax.swing.DefaultListModel; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class RemoveInterfaceFromClassAction extends ContentActionSupport<ClassContentUI> { + + public RemoveInterfaceFromClassAction(ClassContentUI ui) { + super(ui); + } + + @Override + protected void execute(ClassContentUI ui) { + + ModelNode modelNode = ui.getModel().getRoot(); + + DefaultListModel listModel = (DefaultListModel) ui.getInterfaces().getModel(); + + for (String interfaceName : ui.getInterfaces().getSelectedValuesList()) { + + modelNode.removeInterface(interfaceName); + + listModel.removeElement(interfaceName); + + ui.getInterfacesHeaderType().addItem(interfaceName); + + } + + } + +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/RemoveLiteralFromEnumerationAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/RemoveLiteralFromEnumerationAction.java new file mode 100644 index 0000000..f223c0a --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/RemoveLiteralFromEnumerationAction.java @@ -0,0 +1,36 @@ +package org.nuiton.eugene.editor.application.ui.content.actions; + +import org.nuiton.eugene.editor.application.ui.content.EnumerationContentUI; +import org.nuiton.eugene.editor.application.ui.tree.node.EnumerationNode; + +import javax.swing.DefaultListModel; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class RemoveLiteralFromEnumerationAction extends ContentActionSupport<EnumerationContentUI> { + + public RemoveLiteralFromEnumerationAction(EnumerationContentUI ui) { + super(ui); + } + + @Override + protected void execute(EnumerationContentUI ui) { + + EnumerationNode currentNode = ui.getModel(); + + DefaultListModel listModel = (DefaultListModel) ui.getLiterals().getModel(); + + for (String literal : ui.getLiterals().getSelectedValuesList()) { + + currentNode.removeLiteral(literal); + + listModel.removeElement(literal); + + } + + } + +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/RemoveSuperClassFromInterfaceAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/RemoveSuperClassFromInterfaceAction.java new file mode 100644 index 0000000..f042a3d --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/RemoveSuperClassFromInterfaceAction.java @@ -0,0 +1,38 @@ +package org.nuiton.eugene.editor.application.ui.content.actions; + +import org.nuiton.eugene.editor.application.ui.content.InterfaceContentUI; +import org.nuiton.eugene.editor.application.ui.tree.node.ModelNode; + +import javax.swing.DefaultListModel; +import java.util.List; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class RemoveSuperClassFromInterfaceAction extends ContentActionSupport<InterfaceContentUI> { + + public RemoveSuperClassFromInterfaceAction(InterfaceContentUI ui) { + super(ui); + } + + @Override + protected void execute(InterfaceContentUI ui) { + + List<String> interfaceNames = ui.getSuperClasses().getSelectedValuesList(); + + ModelNode currentNode = ui.getModel().getRoot(); + + for (String interfaceName : interfaceNames) { + + currentNode.removeInterface(interfaceName); + + ((DefaultListModel) ui.getSuperClasses().getModel()).removeElement(interfaceName); + ui.getSuperClassesHeaderType().addItem(interfaceName); + + } + + } + +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/EugeneEditorTree.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/EugeneEditorTree.java new file mode 100644 index 0000000..d19b113 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/EugeneEditorTree.java @@ -0,0 +1,29 @@ +package org.nuiton.eugene.editor.application.ui.tree; + +import org.nuiton.eugene.editor.application.ui.EugeneEditorUI; + +import javax.swing.JTree; +import javax.swing.tree.DefaultTreeModel; + +/** + * Created on 19/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class EugeneEditorTree extends JTree { + + public EugeneEditorTree(EugeneEditorUI ui) { + setModel(ui.getContextValue(DefaultTreeModel.class)); + setSelectionModel(new EugeneEditorTreeSelectionModel(ui)); + setCellRenderer(new EugeneEditorTreeCellRenderer()); + setLargeModel(true); + setShowsRootHandles(false); + setRowHeight(16); + } + + @Override + public DefaultTreeModel getModel() { + return (DefaultTreeModel) super.getModel(); + } + +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/EugeneEditorTreeCellRenderer.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/EugeneEditorTreeCellRenderer.java new file mode 100644 index 0000000..7660983 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/EugeneEditorTreeCellRenderer.java @@ -0,0 +1,35 @@ +package org.nuiton.eugene.editor.application.ui.tree; + +import org.nuiton.eugene.editor.application.ui.tree.node.NodeSupport; + +import javax.swing.JTree; +import javax.swing.tree.DefaultTreeCellRenderer; +import java.awt.Component; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class EugeneEditorTreeCellRenderer extends DefaultTreeCellRenderer { + + @Override + public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) { + + NodeSupport node = (NodeSupport) value; + + if (node.isCreate()) { + value = node.getCreateName(); + } + + if (node.isModified()) { + value = value + " *"; + } + super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus); + + setIcon(node.getIcon()); + + return this; + + } +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/EugeneEditorTreeSelectionModel.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/EugeneEditorTreeSelectionModel.java new file mode 100644 index 0000000..29cfa94 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/EugeneEditorTreeSelectionModel.java @@ -0,0 +1,99 @@ +package org.nuiton.eugene.editor.application.ui.tree; + +import org.nuiton.eugene.editor.application.ui.ContentUIManager; +import org.nuiton.eugene.editor.application.ui.EugeneEditorUI; +import org.nuiton.eugene.editor.application.ui.content.ContentUI; +import org.nuiton.eugene.editor.application.ui.tree.node.NodeSupport; + +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.SwingUtilities; +import javax.swing.tree.DefaultTreeSelectionModel; +import javax.swing.tree.TreePath; +import java.beans.PropertyChangeListener; + +/** + * Created on 18/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class EugeneEditorTreeSelectionModel extends DefaultTreeSelectionModel { + + public static final String CLIENT_PROPERTY_NODE = "node"; + private final EugeneEditorUI ui; + private final PropertyChangeListener reloadNodeChangeListener; + private final ContentUIManager contentUIManager; + + public EugeneEditorTreeSelectionModel(EugeneEditorUI ui) { + this.ui = ui; + this.contentUIManager = new ContentUIManager(ui); + setSelectionMode(SINGLE_TREE_SELECTION); + reloadNodeChangeListener = evt -> { + NodeSupport source = (NodeSupport) evt.getSource(); + if (source.getReloadProperties().contains(evt.getPropertyName())) { + ui.getProjectNavigation().getModel().nodeChanged(source); + } + }; + } + + @Override + public void setSelectionPaths(TreePath[] paths) { + if (paths.length == 1) { + setSelectionPath(paths[0]); + } else { + super.setSelectionPaths(paths); + } + } + + @Override + public void setSelectionPath(TreePath path) { + + if (!isSelectionEmpty()) { + + NodeSupport node = (NodeSupport) getSelectionPath().getLastPathComponent(); + ContentUI contentUi = contentUIManager.getContent(node); + boolean canQuit = ui.canQuitContent(); + + if (!canQuit) { + return; + } + + contentUi.close(); + + if (node.isCreate()) { + node.setCreate(false); + + //TODO Do some post create actions (resort tree) + + } + + } + + NodeSupport node = (NodeSupport) path.getLastPathComponent(); + + openNode(node, contentUIManager); + + SwingUtilities.invokeLater(ui.getProjectPane()::revalidate); + + super.setSelectionPaths(new TreePath[]{path}); + + } + + protected <M, N extends NodeSupport<M>> void openNode(N node, ContentUIManager contentUIManager) { + + node.removePropertyChangeListener(reloadNodeChangeListener); + node.addPropertyChangeListener(reloadNodeChangeListener); + + ContentUI<N> content = contentUIManager.getContent(node); + + content.setContextValue(node, CLIENT_PROPERTY_NODE); + + content.setLeftDecoration(new JLabel(node.getIcon())); + + content.open(node); + + ui.getSplitpane2().setLeftComponent((JComponent) content); + + } + +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/TreeModelBuilder.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/TreeModelBuilder.java new file mode 100644 index 0000000..cbcd7cd --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/TreeModelBuilder.java @@ -0,0 +1,82 @@ +package org.nuiton.eugene.editor.application.ui.tree; + +import org.nuiton.eugene.editor.application.ui.tree.node.AttributeNode; +import org.nuiton.eugene.editor.application.ui.tree.node.ClassNode; +import org.nuiton.eugene.editor.application.ui.tree.node.EnumerationNode; +import org.nuiton.eugene.editor.application.ui.tree.node.InterfaceNode; +import org.nuiton.eugene.editor.application.ui.tree.node.ModelNode; +import org.nuiton.eugene.editor.application.ui.tree.node.OperationNode; +import org.nuiton.eugene.editor.application.ui.tree.node.PackageNode; +import org.nuiton.eugene.models.object.ObjectModel; +import org.nuiton.eugene.models.object.ObjectModelAttribute; +import org.nuiton.eugene.models.object.ObjectModelClass; +import org.nuiton.eugene.models.object.ObjectModelEnumeration; +import org.nuiton.eugene.models.object.ObjectModelInterface; +import org.nuiton.eugene.models.object.ObjectModelOperation; +import org.nuiton.eugene.models.object.ObjectModelPackage; +import org.nuiton.eugene.models.object.xml.ObjectModelAttributeImpl; +import org.nuiton.eugene.models.object.xml.ObjectModelClassImpl; +import org.nuiton.eugene.models.object.xml.ObjectModelEnumerationImpl; +import org.nuiton.eugene.models.object.xml.ObjectModelImpl; +import org.nuiton.eugene.models.object.xml.ObjectModelInterfaceImpl; +import org.nuiton.eugene.models.object.xml.ObjectModelOperationImpl; +import org.nuiton.eugene.models.object.xml.ObjectModelPackageImpl; + +import javax.swing.tree.DefaultTreeModel; +import javax.swing.tree.TreeModel; +import java.util.Map; +import java.util.TreeMap; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class TreeModelBuilder { + + public static TreeModel build(ObjectModel objectModel) { + + ModelNode modelNode = new ModelNode((ObjectModelImpl) objectModel); + + Map<String, PackageNode> packages = new TreeMap<>(); + + for (ObjectModelPackage objectModelPackage : objectModel.getPackages()) { + PackageNode packageNode = new PackageNode((ObjectModelPackageImpl) objectModelPackage); + packages.put(objectModelPackage.getName(), packageNode); + } + + for (ObjectModelClass objectModelClass : objectModel.getClasses()) { + ClassNode classNode = new ClassNode((ObjectModelClassImpl) objectModelClass); + packages.get(objectModelClass.getPackageName()).add(classNode); + objectModelClass.getAttributes().stream() + .filter(ObjectModelAttribute::isNavigable) + .forEach(objectModelAttribute -> classNode.add(new AttributeNode((ObjectModelAttributeImpl) objectModelAttribute))); + for (ObjectModelOperation objectModelOperation : objectModelClass.getOperations()) { + classNode.add(new OperationNode((ObjectModelOperationImpl) objectModelOperation)); + } + } + for (ObjectModelInterface objectModelInterface : objectModel.getInterfaces()) { + InterfaceNode interfaceNode = new InterfaceNode((ObjectModelInterfaceImpl) objectModelInterface); + packages.get(objectModelInterface.getPackageName()).add(interfaceNode); + objectModelInterface.getAttributes().stream() + .filter(ObjectModelAttribute::isNavigable) + .forEach(objectModelAttribute -> interfaceNode.add(new AttributeNode((ObjectModelAttributeImpl) objectModelAttribute))); + for (ObjectModelOperation objectModelOperation : objectModelInterface.getOperations()) { + interfaceNode.add(new OperationNode((ObjectModelOperationImpl) objectModelOperation)); + } + } + for (ObjectModelEnumeration objectModelEnumeration : objectModel.getEnumerations()) { + EnumerationNode enumerationNode = new EnumerationNode((ObjectModelEnumerationImpl) objectModelEnumeration); + packages.get(objectModelEnumeration.getPackageName()).add(enumerationNode); + objectModelEnumeration.getAttributes().stream() + .filter(ObjectModelAttribute::isNavigable) + .forEach(objectModelAttribute -> enumerationNode.add(new AttributeNode((ObjectModelAttributeImpl) objectModelAttribute))); + } + + packages.values().stream().filter(packageNode -> !packageNode.isLeaf()).forEach(modelNode::add); + + return new DefaultTreeModel(modelNode); + } + + +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/AttributeNode.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/AttributeNode.java new file mode 100644 index 0000000..457cca4 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/AttributeNode.java @@ -0,0 +1,71 @@ +package org.nuiton.eugene.editor.application.ui.tree.node; + +import com.google.common.collect.ImmutableSet; +import org.nuiton.eugene.models.object.xml.ObjectModelAttributeImpl; + +import java.util.Set; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class AttributeNode extends NodeSupport<ObjectModelAttributeImpl> { + + private static final String PROPERTY_VISIBILITY = "visibility"; + private static final String PROPERTY_TYPE = "type"; + + public AttributeNode(ObjectModelAttributeImpl objectModelAttribute) { + super(objectModelAttribute, PROPERTY_NAME, PROPERTY_TYPE, PROPERTY_VISIBILITY); + } + + @Override + public String getName() { + return getUserObject().getName(); + } + + @Override + public void setName(String name) { + String oldValue = getName(); + getUserObject().setName(name); + getUserObject().postInit(); + firePropertyChange(PROPERTY_NAME, oldValue, name); + } + + public String getVisibility() { + return getUserObject().getVisibility(); + } + + public void setVisibility(String visibility) { + String oldValue = getVisibility(); + getUserObject().setVisibility(visibility); + firePropertyChange(PROPERTY_VISIBILITY, oldValue, visibility); + } + + public String getType() { + return getUserObject().getType(); + } + + public void setType(String type) { + String oldValue = getType(); + getUserObject().setType(type); + firePropertyChange(PROPERTY_TYPE, oldValue, type); + } + + @Override + public String getCreateName() { + return t("eugene.editor.new.attribute"); + } + + @Override + public Set<String> getReloadProperties() { + return ImmutableSet.of(PROPERTY_NAME, PROPERTY_MODIFIED); + } + + @Override + public String toString() { + return getName(); + } +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/ClassNode.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/ClassNode.java new file mode 100644 index 0000000..1b0b4d5 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/ClassNode.java @@ -0,0 +1,71 @@ +package org.nuiton.eugene.editor.application.ui.tree.node; + +import com.google.common.collect.ImmutableSet; +import org.nuiton.eugene.models.object.ObjectModelClass; +import org.nuiton.eugene.models.object.xml.ObjectModelClassImpl; + +import java.util.Collection; +import java.util.Set; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class ClassNode extends NodeSupport<ObjectModelClassImpl> { + + public static final String PROPERTY_SUPER_CLASS = "superClass"; + + public ClassNode(ObjectModelClassImpl objectModelClass) { + super(objectModelClass, PROPERTY_NAME); + } + + @Override + public String getName() { + return getUserObject().getName(); + } + + @Override + public void setName(String name) { + String oldValue = getName(); + getUserObject().setName(name); + getUserObject().postInit(); + firePropertyChange(PROPERTY_NAME, oldValue, name); + } + + public String getSuperClass() { + Collection<ObjectModelClass> superclasses = getUserObject().getSuperclasses(); + return superclasses.isEmpty() ? null : superclasses.iterator().next().getQualifiedName(); + } + + public void setSuperClass(String superClass) { + Object oldValue = getSuperClass(); + ObjectModelClass modelSuperClass = getRoot().getUserObject().getClass(superClass); + Collection<ObjectModelClass> superclasses = getUserObject().getSuperclasses(); + superclasses.clear(); + superclasses.add(modelSuperClass); + firePropertyChange(PROPERTY_SUPER_CLASS, oldValue, superClass); + } + + @Override + public String getCreateName() { + return t("eugene.editor.new.class"); + } + + @Override + public Set<String> getReloadProperties() { + return ImmutableSet.of(PROPERTY_NAME, PROPERTY_MODIFIED); + } + + @Override + public String toString() { + return getName(); + } + + public String getPackageName() { + return getParent().getName(); + } + +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/EnumerationNode.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/EnumerationNode.java new file mode 100644 index 0000000..5b4fa1b --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/EnumerationNode.java @@ -0,0 +1,63 @@ +package org.nuiton.eugene.editor.application.ui.tree.node; + +import com.google.common.collect.ImmutableSet; +import org.nuiton.eugene.models.object.xml.ObjectModelEnumerationImpl; +import org.nuiton.eugene.models.object.xml.ObjectModelImplRef; + +import java.util.Set; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class EnumerationNode extends NodeSupport<ObjectModelEnumerationImpl> { + + public EnumerationNode(ObjectModelEnumerationImpl objectModelEnumeration) { + super(objectModelEnumeration, PROPERTY_NAME); + } + + @Override + public String getName() { + return getUserObject().getName(); + } + + @Override + public void setName(String name) { + String oldValue = getName(); + getUserObject().setName(name); + getUserObject().postInit(); + firePropertyChange(PROPERTY_NAME, oldValue, name); + } + + @Override + public String getCreateName() { + return t("eugene.editor.new.enumeration"); + } + + @Override + public Set<String> getReloadProperties() { + return ImmutableSet.of(PROPERTY_NAME, PROPERTY_MODIFIED); + } + + @Override + public String toString() { + return getName(); + } + + public String getPackageName() { + return getParent().getName(); + } + + public void addLiteral(String literal) { + ObjectModelImplRef ref = new ObjectModelImplRef(); + ref.setName(literal); + getUserObject().addLiteral(ref); + } + + public void removeLiteral(String literal) { + getUserObject().removeLiteral(literal); + } +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/InterfaceNode.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/InterfaceNode.java new file mode 100644 index 0000000..c2a5fca --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/InterfaceNode.java @@ -0,0 +1,65 @@ +package org.nuiton.eugene.editor.application.ui.tree.node; + +import com.google.common.collect.ImmutableSet; +import org.apache.commons.lang3.StringUtils; +import org.nuiton.eugene.models.object.xml.ObjectModelInterfaceImpl; + +import java.util.Set; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class InterfaceNode extends NodeSupport<ObjectModelInterfaceImpl> { + + public InterfaceNode(ObjectModelInterfaceImpl objectModelInterface) { + super(objectModelInterface, PROPERTY_NAME); + } + + @Override + public String getName() { + return getUserObject().getName(); + } + + @Override + public void setName(String name) { + String oldValue = getName(); + getUserObject().setName(name); + getUserObject().postInit(); + firePropertyChange(PROPERTY_NAME, oldValue, name); + } + + @Override + public String getCreateName() { + return t("eugene.editor.new.interface"); + } + + @Override + public Set<String> getReloadProperties() { + return ImmutableSet.of(PROPERTY_NAME, PROPERTY_MODIFIED); + } + + @Override + public String toString() { + return getName(); + } + + public void addInterface(String superClassName) { + + String[] split = superClassName.split("\\."); + + ObjectModelInterfaceImpl newInterface = new ObjectModelInterfaceImpl(); + newInterface.setName(split[split.length - 1]); + newInterface.setPackage(StringUtils.removeEnd(superClassName, "." + newInterface.getName())); + newInterface.postInit(); + + getUserObject().getInterfaces().add(newInterface); + } + + public String getPackageName() { + return getParent().getName(); + } +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/ModelNode.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/ModelNode.java new file mode 100644 index 0000000..337a404 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/ModelNode.java @@ -0,0 +1,137 @@ +package org.nuiton.eugene.editor.application.ui.tree.node; + +import com.google.common.collect.ImmutableSet; +import org.nuiton.eugene.models.object.ObjectModelClass; +import org.nuiton.eugene.models.object.ObjectModelEnumeration; +import org.nuiton.eugene.models.object.ObjectModelInterface; +import org.nuiton.eugene.models.object.ObjectModelPackage; +import org.nuiton.eugene.models.object.xml.ObjectModelClassImpl; +import org.nuiton.eugene.models.object.xml.ObjectModelEnumerationImpl; +import org.nuiton.eugene.models.object.xml.ObjectModelImpl; +import org.nuiton.eugene.models.object.xml.ObjectModelInterfaceImpl; +import org.nuiton.eugene.models.object.xml.ObjectModelPackageImpl; + +import java.util.Set; +import java.util.stream.Collectors; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class ModelNode extends NodeSupport<ObjectModelImpl> { + + public static final String PROPERTY_CLASSES = "classes"; + public static final String PROPERTY_INTERFACES = "interfaces"; + public static final String PROPERTY_ENUMERATIONS = "enumerations"; + public static final String PROPERTY_PACKAGES = "packages"; + + public ModelNode(ObjectModelImpl objectModel) { + super(objectModel, PROPERTY_NAME); + } + + @Override + public String getName() { + return getUserObject().getName(); + } + + @Override + public void setName(String name) { + String oldValue = getName(); + getUserObject().setName(name); + firePropertyChange(PROPERTY_NAME, oldValue, name); + } + + @Override + public String getCreateName() { + return t("eugene.editor.new.model"); + } + + @Override + public Set<String> getReloadProperties() { + return ImmutableSet.of(PROPERTY_NAME, PROPERTY_MODIFIED); + } + + @Override + public String toString() { + return getName(); + } + + public void add(PackageNode packageNode) { + super.add(packageNode); + } + + + public PackageNode addPackage(String packageName) { + + ObjectModelPackageImpl newData = new ObjectModelPackageImpl(); + newData.setName(""); + + getUserObject().addPackage(newData); + firePropertyChange(PROPERTY_PACKAGES, null, getUserObject().getPackages().stream().map(ObjectModelPackage::getName).collect(Collectors.toList())); + PackageNode node = new PackageNode(newData); + node.setCreate(true); + return node; + } + + public void removePackage(String name) { + getUserObject().removePackage(name); + firePropertyChange(PROPERTY_PACKAGES, null, getUserObject().getPackages().stream().map(ObjectModelPackage::getName).collect(Collectors.toList())); + } + + public ClassNode addClass(String packageName) { + + ObjectModelClassImpl newData = new ObjectModelClassImpl(); + newData.setName(""); + newData.setPackage(packageName); + + getUserObject().addClass(newData); + firePropertyChange(PROPERTY_CLASSES, null, getUserObject().getClasses().stream().map(ObjectModelClass::getName).collect(Collectors.toList())); + ClassNode node = new ClassNode(newData); + node.setCreate(true); + return node; + } + + public void removeClass(String qualifiedName) { + getUserObject().removeClass(qualifiedName); + firePropertyChange(PROPERTY_CLASSES, null, getUserObject().getClasses().stream().map(ObjectModelClass::getName).collect(Collectors.toList())); + } + + public InterfaceNode addInterface(String packageName) { + + ObjectModelInterfaceImpl newData = new ObjectModelInterfaceImpl(); + newData.setName(""); + newData.setPackage(packageName); + + getUserObject().addInterface(newData); + firePropertyChange(PROPERTY_INTERFACES, null, getUserObject().getInterfaces().stream().map(ObjectModelInterface::getName).collect(Collectors.toList())); + InterfaceNode node = new InterfaceNode(newData); + node.setCreate(true); + return node; + } + + public void removeInterface(String qualifiedName) { + getUserObject().removeInterface(qualifiedName); + firePropertyChange(PROPERTY_INTERFACES, null, getUserObject().getInterfaces().stream().map(ObjectModelInterface::getName).collect(Collectors.toList())); + } + + public EnumerationNode addEnumeration(String packageName) { + ObjectModelEnumerationImpl newData = new ObjectModelEnumerationImpl(); + newData.setName(""); + newData.setPackage(packageName); + + getUserObject().addEnumeration(newData); + firePropertyChange(PROPERTY_ENUMERATIONS, null, getUserObject().getEnumerations().stream().map(ObjectModelEnumeration::getName).collect(Collectors.toList())); + EnumerationNode node = new EnumerationNode(newData); + node.setCreate(true); + return node; + } + + public void removeEnumeration(String qualifiedName) { + getUserObject().removeEnumeration(qualifiedName); + firePropertyChange(PROPERTY_ENUMERATIONS, null, getUserObject().getEnumerations().stream().map(ObjectModelEnumeration::getName).collect(Collectors.toList())); + } + +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/NodeSupport.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/NodeSupport.java new file mode 100644 index 0000000..c22170f --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/NodeSupport.java @@ -0,0 +1,195 @@ +package org.nuiton.eugene.editor.application.ui.tree.node; + +import jaxx.runtime.SwingUtil; +import org.apache.commons.lang3.StringUtils; +import org.nuiton.eugene.models.object.xml.ObjectModelAttributeImpl; +import org.nuiton.eugene.models.object.xml.ObjectModelClassifierImpl; +import org.nuiton.eugene.models.object.xml.ObjectModelOperationImpl; +import org.nuiton.util.beans.BeanMonitor; + +import javax.swing.Icon; +import javax.swing.ImageIcon; +import javax.swing.event.SwingPropertyChangeSupport; +import javax.swing.tree.DefaultMutableTreeNode; +import javax.swing.tree.TreeNode; +import java.beans.Introspector; +import java.beans.PropertyChangeListener; +import java.util.Enumeration; +import java.util.Objects; +import java.util.Set; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public abstract class NodeSupport<M> extends DefaultMutableTreeNode { + + public static final String PROPERTY_NAME = "name"; + public static final String PROPERTY_MODIFIED = "modified"; + public static final String PROPERTY_VALID = "valid"; + public static final String PROPERTY_CREATE = "create"; + protected ImageIcon icon; + + private boolean create; + private boolean modified; + private boolean valid; + + private final SwingPropertyChangeSupport pcs = new SwingPropertyChangeSupport(this); + private final BeanMonitor monitor = new BeanMonitor(); + + public NodeSupport(M userObject, String... monitorProperties) { + super(userObject); + monitor.setBean(this); + monitor.setProperties(monitorProperties); + addPropertyChangeListener(evt -> { + if (!Objects.equals(NodeSupport.PROPERTY_MODIFIED, evt.getPropertyName())) { + setModified(monitor.wasModified()); + } + }); + } + + @Override + public M getUserObject() { + return (M) super.getUserObject(); + } + + public Icon getIcon() { + if (icon == null) { + icon = SwingUtil.createIcon("type", Introspector.decapitalize(StringUtils.removeEnd(getClass().getSimpleName(), "Node"))); + } + return icon; + } + + public abstract String getName(); + + public abstract void setName(String name); + + public abstract String getCreateName(); + + public abstract Set<String> getReloadProperties(); + + public boolean isCreate() { + return create; + } + + public void setCreate(boolean create) { + boolean oldValue = this.create; + this.create = create; + firePropertyChange(PROPERTY_CREATE, oldValue, create); + } + + @Override + public NodeSupport getParent() { + return (NodeSupport) super.getParent(); + } + + @Override + public ModelNode getRoot() { + return (ModelNode) super.getRoot(); + } + + @Override + public NodeSupport getChildBefore(TreeNode aChild) { + return (NodeSupport) super.getChildBefore(aChild); + } + + public boolean isModified() { + return modified; + } + + public void setModified(boolean modified) { + Object oldValue = isModified(); + this.modified = modified; + firePropertyChange(PROPERTY_MODIFIED, oldValue, modified); + if (getParent() != null) { + getParent().recomputeModified(); + } + } + + public void recomputeModified() { + + boolean modified = false; + Enumeration children = children(); + while (children.hasMoreElements()) { + NodeSupport node = (NodeSupport) children.nextElement(); + if (node.isModified()) { + modified = true; + break; + } + } + setModified(modified); + } + + public boolean isValid() { + return valid; + } + + public void setValid(boolean valid) { + Object oldValue = isValid(); + this.valid = valid; + pcs.firePropertyChange(PROPERTY_VALID, oldValue, valid); + } + + public void addPropertyChangeListener(PropertyChangeListener listener) { + pcs.addPropertyChangeListener(listener); + } + + public void removePropertyChangeListener(PropertyChangeListener listener) { + pcs.removePropertyChangeListener(listener); + } + + public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) { + pcs.addPropertyChangeListener(propertyName, listener); + } + + public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener) { + pcs.removePropertyChangeListener(propertyName, listener); + } + + public void reset() { + monitor.clearModified(); + } + + protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) { + pcs.firePropertyChange(propertyName, oldValue, newValue); + } + + public AttributeNode addAttribute() { + + ObjectModelAttributeImpl newData = new ObjectModelAttributeImpl(); + newData.setName(""); + + ObjectModelClassifierImpl classifier = (ObjectModelClassifierImpl) getUserObject(); + classifier.addAttribute(newData); + + AttributeNode node = new AttributeNode(newData); + node.setCreate(true); + return node; + } + + public void removeOperation(String name) { + + ObjectModelClassifierImpl classifier = (ObjectModelClassifierImpl) getUserObject(); + classifier.removeOperation(name); + + } + + public void removeAttribute(String name) { + ObjectModelClassifierImpl classifier = (ObjectModelClassifierImpl) getUserObject(); + classifier.removeAttribute(name); + } + + public OperationNode addOperation() { + + ObjectModelOperationImpl newData = new ObjectModelOperationImpl(); + newData.setName(""); + + ObjectModelClassifierImpl classifier = (ObjectModelClassifierImpl) getUserObject(); + classifier.addOperation(newData); + + OperationNode node = new OperationNode(newData); + node.setCreate(true); + return node; + } +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/OperationNode.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/OperationNode.java new file mode 100644 index 0000000..49a6be2 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/OperationNode.java @@ -0,0 +1,97 @@ +package org.nuiton.eugene.editor.application.ui.tree.node; + +import com.google.common.collect.ImmutableSet; +import org.nuiton.eugene.models.object.xml.ObjectModelOperationImpl; +import org.nuiton.eugene.models.object.xml.ObjectModelParameterImpl; + +import java.util.Set; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class OperationNode extends NodeSupport<ObjectModelOperationImpl> { + + private static final String PROPERTY_VISIBILITY = "visibility"; + private static final String PROPERTY_RETURN_TYPE = "returnType"; + private static final String PROPERTY_ABSTRACT = "abstract"; + + public OperationNode(ObjectModelOperationImpl objectModelAttribute) { + super(objectModelAttribute, PROPERTY_NAME, PROPERTY_ABSTRACT, PROPERTY_RETURN_TYPE); + } + + @Override + public String getName() { + return getUserObject().getName(); + } + + @Override + public void setName(String name) { + String oldValue = getName(); + getUserObject().setName(name); + getUserObject().postInit(); + firePropertyChange(PROPERTY_NAME, oldValue, name); + } + + public String getVisibility() { + return getUserObject().getVisibility(); + } + + public void setVisibility(String visibility) { + String oldValue = getVisibility(); + getUserObject().setVisibility(visibility); + firePropertyChange(PROPERTY_VISIBILITY, oldValue, visibility); + } + + public String getReturnType() { + return getUserObject().getReturnType(); + } + + public void setReturnType(String returnType) { + String oldValue = getReturnType(); + ObjectModelParameterImpl returnParameter = new ObjectModelParameterImpl(); + returnParameter.setType(returnType); + getUserObject().setReturnParameter(returnParameter); + firePropertyChange(PROPERTY_RETURN_TYPE, oldValue, returnType); + } + + public boolean isAbstract() { + return getUserObject().isAbstract(); + } + + public void setAbstract(boolean abstractz) { + boolean oldValue = isAbstract(); + getUserObject().setAbstract(abstractz); + firePropertyChange(PROPERTY_ABSTRACT, oldValue, abstractz); + } + + @Override + public String getCreateName() { + return t("eugene.editor.new.operation"); + } + + @Override + public Set<String> getReloadProperties() { + return ImmutableSet.of(PROPERTY_NAME, PROPERTY_MODIFIED); + } + + @Override + public String toString() { + return getName(); + } + + public void removeParameter(String name) { + getUserObject().removeParameter(name); + } + + public ObjectModelParameterImpl addParameter() { + + ObjectModelParameterImpl newData = new ObjectModelParameterImpl(); + newData.setName(""); + getUserObject().addParameter(newData); + return newData; + } +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/PackageNode.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/PackageNode.java new file mode 100644 index 0000000..457f305 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/PackageNode.java @@ -0,0 +1,49 @@ +package org.nuiton.eugene.editor.application.ui.tree.node; + +import com.google.common.collect.ImmutableSet; +import org.nuiton.eugene.models.object.xml.ObjectModelPackageImpl; + +import java.util.Set; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class PackageNode extends NodeSupport<ObjectModelPackageImpl> { + + public PackageNode(ObjectModelPackageImpl objectModelPackage) { + super(objectModelPackage, PROPERTY_NAME); + } + + @Override + public String getName() { + return getUserObject().getName(); + } + + @Override + public void setName(String name) { + String oldValue = getName(); + getUserObject().setName(name); + getUserObject().postInit(); + firePropertyChange(PROPERTY_NAME, oldValue, name); + } + + @Override + public String getCreateName() { + return t("eugene.editor.new.package"); + } + + @Override + public Set<String> getReloadProperties() { + return ImmutableSet.of(PROPERTY_NAME, PROPERTY_MODIFIED); + } + + @Override + public String toString() { + return getName(); + } + +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/plugin/EugeneEditorMojo.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/plugin/EugeneEditorMojo.java new file mode 100644 index 0000000..74beda9 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/plugin/EugeneEditorMojo.java @@ -0,0 +1,169 @@ +package org.nuiton.eugene.editor.plugin; + +import jaxx.runtime.context.JAXXInitialContext; +import org.apache.maven.plugins.annotations.Component; +import org.apache.maven.plugins.annotations.Mojo; +import org.apache.maven.plugins.annotations.Parameter; +import org.apache.maven.plugins.annotations.ResolutionScope; +import org.apache.maven.project.MavenProject; +import org.nuiton.eugene.ModelReader; +import org.nuiton.eugene.editor.application.EugeneEditorApplicationContext; +import org.nuiton.eugene.editor.application.config.EugeneEditorConfig; +import org.nuiton.eugene.editor.application.ui.EugeneEditorUI; +import org.nuiton.eugene.models.object.ObjectModel; +import org.nuiton.eugene.models.object.reader.extension.LoadModelExtension; +import org.nuiton.eugene.models.stereotype.AggregateStereotypeDefinitionProvider; +import org.nuiton.eugene.models.stereotype.StereotypeDefinitionProvider; +import org.nuiton.eugene.models.stereotype.StereotypeDefinitionProviders; +import org.nuiton.eugene.models.tagvalue.AggregateTagValueDefinitionProvider; +import org.nuiton.eugene.models.tagvalue.TagValueDefinitionProvider; +import org.nuiton.eugene.models.tagvalue.TagValueDefinitionProviders; +import org.nuiton.plugin.AbstractPlugin; + +import javax.swing.SwingUtilities; +import java.io.File; +import java.net.URLClassLoader; +import java.util.Map; + +/** + * Laucnh the editor on models detected in project. + * + * Created on 16/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.0 + */ +@Mojo(name = "run", requiresDependencyResolution = ResolutionScope.RUNTIME) +public class EugeneEditorMojo extends AbstractPlugin { + + /** + * Pour activer le mode verbeux. + */ + @Parameter(property = "eugene.verbose", defaultValue = "${maven.verbose}") + protected boolean verbose; + + /** + * Encoding to be used for generation of files. + */ + @Parameter(property = "eugene.encoding", defaultValue = "${project.build.sourceEncoding}") + protected String encoding; + /** + * Maven project. + */ + @Parameter(defaultValue = "${project}", readonly = true) + protected MavenProject project; + /** + * All available tag value providers introspects via plexus. + */ + @Component(role = TagValueDefinitionProvider.class) + protected Map<String, TagValueDefinitionProvider> tagValueDefinitionProviders; + /** + * All available stereotype providers introspects via plexus. + */ + @Component(role = StereotypeDefinitionProvider.class) + protected Map<String, StereotypeDefinitionProvider> stereotypeDefinitionProviders; + @Component(hint = "xmlobjectmodel") + protected ModelReader modelReader; + protected ObjectModel model; + protected AggregateTagValueDefinitionProvider tagValueDefinitionProvider; + protected AggregateStereotypeDefinitionProvider stereotypeDefinitionProvider; + protected ClassLoader contextClassLoader; + protected URLClassLoader classLoader; + /** + * The source directory where to scan options java file. + */ + @Parameter(property = "eugene.sourceDirectory", defaultValue = "${basedir}/src/main/xmi", required = true) + private File sourceDirectory; + /** + * The source directory where to scan options java file. + */ + @Parameter(property = "eugene.generatedSourceDirectory", defaultValue = "${project.build.directory}/generated-sources/models", required = true) + private File generatedSourceDirectory; + /** + * The source directory where to scan options java file. + */ + @Parameter(property = "eugene.workingDirectory", defaultValue = "${project.build.directory}/eugeneEditor", required = true) + private File workingDirectory; + + @Override + protected void init() throws Exception { + + contextClassLoader = Thread.currentThread().getContextClassLoader(); + classLoader = initClassLoader(getProject(), generatedSourceDirectory, true, false, false, true, true); + + tagValueDefinitionProvider = TagValueDefinitionProviders.newProvider(tagValueDefinitionProviders.values(), verbose); + stereotypeDefinitionProvider = StereotypeDefinitionProviders.newProvider(stereotypeDefinitionProviders.values(), verbose); + + modelReader.setVerbose(verbose); + modelReader.setTagValueDefinitionProvider(tagValueDefinitionProvider); + modelReader.setStereotypeDefinitionProvider(stereotypeDefinitionProvider); + + File[] files = generatedSourceDirectory.listFiles(f -> f.getName().endsWith(".objectmodel")); + if (files != null) { + + getLog().info("Found " + files.length + " model file(s)."); + model = (ObjectModel) modelReader.read(files); + } + + LoadModelExtension<ObjectModel> loadModelExtension = new LoadModelExtension<>(verbose, false, model); + + File[] extensionFiles = sourceDirectory.listFiles(f -> f.getName().endsWith(".objectmodel-ext")); + if (extensionFiles != null) { + + getLog().info("Found " + extensionFiles.length + " model extension file(s)."); + + for (File file : extensionFiles) { + getLog().info("Loading extension file: " + file); + loadModelExtension.load(file); + } + + } + + } + + @Override + protected void doAction() throws Exception { + + Thread.currentThread().setContextClassLoader(classLoader); + try { + + EugeneEditorConfig config = new EugeneEditorConfig(); + config.setWorkingDirectory(workingDirectory); + EugeneEditorApplicationContext applicationContext = new EugeneEditorApplicationContext( + config, + classLoader, + tagValueDefinitionProvider, + stereotypeDefinitionProvider, + model); + + JAXXInitialContext ctx = new JAXXInitialContext().add(applicationContext); + SwingUtilities.invokeLater(() -> new EugeneEditorUI(ctx).setVisible(true)); + + applicationContext.lock(); + + } finally { + + Thread.currentThread().setContextClassLoader(contextClassLoader); + } + } + + @Override + public boolean isVerbose() { + return verbose; + } + + @Override + public void setVerbose(boolean verbose) { + this.verbose = verbose; + } + + @Override + public MavenProject getProject() { + return project; + } + + @Override + public void setProject(MavenProject project) { + this.project = project; + } +} diff --git a/eugene-editor-maven-plugin/src/main/resources/i18n/eugene-editor-maven-plugin_en_GB.properties b/eugene-editor-maven-plugin/src/main/resources/i18n/eugene-editor-maven-plugin_en_GB.properties new file mode 100644 index 0000000..6281c5d --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/resources/i18n/eugene-editor-maven-plugin_en_GB.properties @@ -0,0 +1,102 @@ +eugene.editor.action.exit=Quit +eugene.editor.action.exit.tip=Quit editor +eugene.editor.action.locale.fr=FR +eugene.editor.action.locale.fr.tip=French +eugene.editor.action.locale.uk=EN +eugene.editor.action.locale.uk.tip=English +eugene.editor.action.saveProject=Save project +eugene.editor.action.saveProject.tip=Save project +eugene.editor.action.showAbout=About +eugene.editor.action.showAbout.tip=About +eugene.editor.action.showConfig=Config +eugene.editor.action.showConfig.tip=Open config +eugene.editor.action.site=Site +eugene.editor.action.site.tip=Go to site +eugene.editor.add.interface=Add interface +eugene.editor.add.literal=Literal +eugene.editor.add.superClass=Add super class +eugene.editor.aggregation=Aggregation +eugene.editor.aggregation.aggregate=Aggregate +eugene.editor.aggregation.compose=Compose +eugene.editor.aggregation.none=None +eugene.editor.attribute=Attribute +eugene.editor.attribute.defaultValue=Default value +eugene.editor.attribute.name=Name +eugene.editor.attribute.type=Type +eugene.editor.bidi=Bidirectional +eugene.editor.class=Class +eugene.editor.class.name=Name +eugene.editor.config.configFileName.description=Configuration file +eugene.editor.config.modelExtensionFile.description=PRoject in edition +eugene.editor.config.workingDirectory.description=Data directory +eugene.editor.create.attribute=Create an attribute +eugene.editor.create.class=Create a class +eugene.editor.create.enumeration=Create a enumeration +eugene.editor.create.interface=Create a interface +eugene.editor.create.literal=Create a literal +eugene.editor.create.operation=Create an operation +eugene.editor.create.package=Create a package +eugene.editor.create.parameter=Create a parameter +eugene.editor.delete.attribute=Delete attribute +eugene.editor.delete.class=Delete class +eugene.editor.delete.enumeration=Delete enumeration +eugene.editor.delete.interface=Delete interface +eugene.editor.delete.literal=Literal +eugene.editor.delete.operation=Delete Operation +eugene.editor.delete.package=Delete package +eugene.editor.delete.parameter=Delete parameter +eugene.editor.delete.superClass=Delete super class +eugene.editor.enumeration=Enumeration +eugene.editor.enumeration.name=Name +eugene.editor.general=General +eugene.editor.interface=Interface +eugene.editor.interface.name=Name +eugene.editor.interfaces=Interfaces +eugene.editor.literals=Literals +eugene.editor.menu.configuration=Configuration +eugene.editor.menu.configuration.tip=Configuration +eugene.editor.menu.file=File +eugene.editor.menu.help=Help +eugene.editor.menu.locale=Languages +eugene.editor.model=Model +eugene.editor.model.name=Name +eugene.editor.new.attribute=New attribute +eugene.editor.new.class=New class +eugene.editor.new.enumeration=New enumeration +eugene.editor.new.interface=New interface +eugene.editor.new.model=New model +eugene.editor.new.operation=New operation +eugene.editor.new.package=New package +eugene.editor.operation=Operation +eugene.editor.operation.name=Name +eugene.editor.operation.returnType=Return type +eugene.editor.package=Package +eugene.editor.package.name=Name +eugene.editor.parameter.name=Name +eugene.editor.parameter.type=Type +eugene.editor.parameters=Parameters +eugene.editor.stereotypes=Stereotypes +eugene.editor.stereotypesAndTagValues=Stereotypes and tag values +eugene.editor.superClass=Super class +eugene.editor.superClasses=Super classes +eugene.editor.tagValues=Tag values +eugene.editor.title.view.navigation=Navigation +eugene.editor.validator.attribute.mandatory.name= +eugene.editor.validator.attribute.mandatory.type= +eugene.editor.validator.enumeration.mandatory.name= +eugene.editor.validator.interface.mandatory.name= +eugene.editor.validator.model.mandatory.name= +eugene.editor.validator.operation.mandatory.name= +eugene.editor.validator.operation.mandatory.type= +eugene.editor.validator.package.mandatory.name= +eugene.editor.view.message=Messages +eugene.editor.visibility=Visibility +eugene.editor.visibility.package=package +eugene.editor.visibility.private=private +eugene.editor.visibility.protected=protected +eugene.editor.visibility.public=public +eugene.no.interface.defined=< No interface defined > +eugene.no.parameter.defined=< No paramter defined > +eugene.no.stereotype.found=< No stereotype available > +eugene.no.superClass.defined=< No super class defined > +eugene.no.tagValue.found=< No tag vaue available > diff --git a/eugene-editor-maven-plugin/src/main/resources/i18n/eugene-editor-maven-plugin_fr_FR.properties b/eugene-editor-maven-plugin/src/main/resources/i18n/eugene-editor-maven-plugin_fr_FR.properties new file mode 100644 index 0000000..78aa015 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/resources/i18n/eugene-editor-maven-plugin_fr_FR.properties @@ -0,0 +1,102 @@ +eugene.editor.action.exit=Quitter +eugene.editor.action.exit.tip=Quitter l'éditeur +eugene.editor.action.locale.fr=FR +eugene.editor.action.locale.fr.tip=Français +eugene.editor.action.locale.uk=EN +eugene.editor.action.locale.uk.tip=Anglais +eugene.editor.action.saveProject=Enregistrer le projet +eugene.editor.action.saveProject.tip=Enregister le projet +eugene.editor.action.showAbout=À propos +eugene.editor.action.showAbout.tip=À propos +eugene.editor.action.showConfig=Préférences +eugene.editor.action.showConfig.tip=Préférences +eugene.editor.action.site=Site web +eugene.editor.action.site.tip=Accéder au site web de l'éditeur +eugene.editor.add.interface=Ajouter une interface +eugene.editor.add.literal=Ajouter un literal +eugene.editor.add.superClass=Ajouter une classe parent +eugene.editor.aggregation=Aggrégation +eugene.editor.aggregation.aggregate=Aggrège +eugene.editor.aggregation.compose=Compose +eugene.editor.aggregation.none=Aucun +eugene.editor.attribute=Attribut +eugene.editor.attribute.defaultValue=Valuer par défaut +eugene.editor.attribute.name=Nom +eugene.editor.attribute.type=Type +eugene.editor.bidi=Bi directionnel +eugene.editor.class=Classe +eugene.editor.class.name=Nom +eugene.editor.config.configFileName.description=Fichier de configuration +eugene.editor.config.modelExtensionFile.description=Fichier en cours d'édition +eugene.editor.config.workingDirectory.description=Répertoire de données de l'application +eugene.editor.create.attribute=Créer un attribut +eugene.editor.create.class=Créer une classe +eugene.editor.create.enumeration=Créer une énumération +eugene.editor.create.interface=Créer une interface +eugene.editor.create.literal=Créer un litéral +eugene.editor.create.operation=Créer une opération +eugene.editor.create.package=Créer un paquetage +eugene.editor.create.parameter=Créer un Paramètre +eugene.editor.delete.attribute=Supprimer l'attribut +eugene.editor.delete.class=Supprimer la classe +eugene.editor.delete.enumeration=Supprimer l'énumération +eugene.editor.delete.interface=Supprimer l'interface +eugene.editor.delete.literal=Supprimer le litéral +eugene.editor.delete.operation=Supprimer l'opération +eugene.editor.delete.package=Supprimer le paquetage +eugene.editor.delete.parameter=Supprimer le paramètre +eugene.editor.delete.superClass=Supprimer la classe parent +eugene.editor.enumeration=Énumération +eugene.editor.enumeration.name=Nom +eugene.editor.general=Général +eugene.editor.interface=Interface +eugene.editor.interface.name=Nom +eugene.editor.interfaces=Interfaces +eugene.editor.literals=Litérals +eugene.editor.menu.configuration=Configuration +eugene.editor.menu.configuration.tip=Configuration +eugene.editor.menu.file=Fichier +eugene.editor.menu.help=Aide +eugene.editor.menu.locale=Langues +eugene.editor.model=Modèle +eugene.editor.model.name=Nom +eugene.editor.new.attribute=Nouvel attribut +eugene.editor.new.class=Nouvelle classe +eugene.editor.new.enumeration=Nouvelle énumération +eugene.editor.new.interface=Nouvelle interface +eugene.editor.new.model=Nouveau modèle +eugene.editor.new.operation=Nouvelle opération +eugene.editor.new.package=Nouveau paquetage +eugene.editor.operation=Opération +eugene.editor.operation.name=Nom +eugene.editor.operation.returnType=Type de retour +eugene.editor.package=Paquetage +eugene.editor.package.name=Nom +eugene.editor.parameter.name=Nom +eugene.editor.parameter.type=Type +eugene.editor.parameters=Paramètres +eugene.editor.stereotypes=Stéréotypes +eugene.editor.stereotypesAndTagValues=Stéréotypes et tag values +eugene.editor.superClass=Classe parent +eugene.editor.superClasses=Classes parent +eugene.editor.tagValues=Tag values +eugene.editor.title.view.navigation=Navigation +eugene.editor.validator.attribute.mandatory.name= +eugene.editor.validator.attribute.mandatory.type= +eugene.editor.validator.enumeration.mandatory.name= +eugene.editor.validator.interface.mandatory.name= +eugene.editor.validator.model.mandatory.name= +eugene.editor.validator.operation.mandatory.name= +eugene.editor.validator.operation.mandatory.type= +eugene.editor.validator.package.mandatory.name= +eugene.editor.view.message=Messages +eugene.editor.visibility=Visibilité +eugene.editor.visibility.package=paquetage +eugene.editor.visibility.private=privé +eugene.editor.visibility.protected=protégé +eugene.editor.visibility.public=public +eugene.no.interface.defined=< Pas d'interface définie > +eugene.no.parameter.defined=< Pas de paramètre défini > +eugene.no.stereotype.found=< Pas de stéréotype disponible > +eugene.no.superClass.defined=< Pas de classe parent définie > +eugene.no.tagValue.found=< Pas de tag value disponible > diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/action-about.png b/eugene-editor-maven-plugin/src/main/resources/icons/action-about.png new file mode 100644 index 0000000..0d826bb Binary files /dev/null and b/eugene-editor-maven-plugin/src/main/resources/icons/action-about.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/action-add.png b/eugene-editor-maven-plugin/src/main/resources/icons/action-add.png new file mode 100644 index 0000000..6332fef Binary files /dev/null and b/eugene-editor-maven-plugin/src/main/resources/icons/action-add.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/action-cancel.png b/eugene-editor-maven-plugin/src/main/resources/icons/action-cancel.png new file mode 100644 index 0000000..c149c2b Binary files /dev/null and b/eugene-editor-maven-plugin/src/main/resources/icons/action-cancel.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/action-close.png b/eugene-editor-maven-plugin/src/main/resources/icons/action-close.png new file mode 100644 index 0000000..2541d2b Binary files /dev/null and b/eugene-editor-maven-plugin/src/main/resources/icons/action-close.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/action-collapse.png b/eugene-editor-maven-plugin/src/main/resources/icons/action-collapse.png new file mode 100644 index 0000000..f88a24a Binary files /dev/null and b/eugene-editor-maven-plugin/src/main/resources/icons/action-collapse.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/action-config.png b/eugene-editor-maven-plugin/src/main/resources/icons/action-config.png new file mode 100644 index 0000000..9460dfc Binary files /dev/null and b/eugene-editor-maven-plugin/src/main/resources/icons/action-config.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/action-delete.png b/eugene-editor-maven-plugin/src/main/resources/icons/action-delete.png new file mode 100644 index 0000000..184f762 Binary files /dev/null and b/eugene-editor-maven-plugin/src/main/resources/icons/action-delete.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/action-exit.png b/eugene-editor-maven-plugin/src/main/resources/icons/action-exit.png new file mode 100644 index 0000000..a77152b Binary files /dev/null and b/eugene-editor-maven-plugin/src/main/resources/icons/action-exit.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/action-expand.png b/eugene-editor-maven-plugin/src/main/resources/icons/action-expand.png new file mode 100644 index 0000000..3c19e48 Binary files /dev/null and b/eugene-editor-maven-plugin/src/main/resources/icons/action-expand.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/action-fileChooser.png b/eugene-editor-maven-plugin/src/main/resources/icons/action-fileChooser.png new file mode 100755 index 0000000..523a651 Binary files /dev/null and b/eugene-editor-maven-plugin/src/main/resources/icons/action-fileChooser.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/action-help.png b/eugene-editor-maven-plugin/src/main/resources/icons/action-help.png new file mode 100755 index 0000000..4ed65a9 Binary files /dev/null and b/eugene-editor-maven-plugin/src/main/resources/icons/action-help.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/action-i18n-en.png b/eugene-editor-maven-plugin/src/main/resources/icons/action-i18n-en.png new file mode 100644 index 0000000..ff701e1 Binary files /dev/null and b/eugene-editor-maven-plugin/src/main/resources/icons/action-i18n-en.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/action-i18n-fr.png b/eugene-editor-maven-plugin/src/main/resources/icons/action-i18n-fr.png new file mode 100644 index 0000000..8332c4e Binary files /dev/null and b/eugene-editor-maven-plugin/src/main/resources/icons/action-i18n-fr.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/action-i18n-uk.png b/eugene-editor-maven-plugin/src/main/resources/icons/action-i18n-uk.png new file mode 100644 index 0000000..ff701e1 Binary files /dev/null and b/eugene-editor-maven-plugin/src/main/resources/icons/action-i18n-uk.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/action-save.png b/eugene-editor-maven-plugin/src/main/resources/icons/action-save.png new file mode 100644 index 0000000..41b3f43 Binary files /dev/null and b/eugene-editor-maven-plugin/src/main/resources/icons/action-save.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/action-select.png b/eugene-editor-maven-plugin/src/main/resources/icons/action-select.png new file mode 100644 index 0000000..bbee129 Binary files /dev/null and b/eugene-editor-maven-plugin/src/main/resources/icons/action-select.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/action-site.png b/eugene-editor-maven-plugin/src/main/resources/icons/action-site.png new file mode 100644 index 0000000..ac5957a Binary files /dev/null and b/eugene-editor-maven-plugin/src/main/resources/icons/action-site.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/action-translate.png b/eugene-editor-maven-plugin/src/main/resources/icons/action-translate.png new file mode 100644 index 0000000..63ce64d Binary files /dev/null and b/eugene-editor-maven-plugin/src/main/resources/icons/action-translate.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/action-unselect.png b/eugene-editor-maven-plugin/src/main/resources/icons/action-unselect.png new file mode 100644 index 0000000..3b49008 Binary files /dev/null and b/eugene-editor-maven-plugin/src/main/resources/icons/action-unselect.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/modifier-package.png b/eugene-editor-maven-plugin/src/main/resources/icons/modifier-package.png new file mode 100644 index 0000000..7a22d1f Binary files /dev/null and b/eugene-editor-maven-plugin/src/main/resources/icons/modifier-package.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/modifier-private.png b/eugene-editor-maven-plugin/src/main/resources/icons/modifier-private.png new file mode 100644 index 0000000..a6a4741 Binary files /dev/null and b/eugene-editor-maven-plugin/src/main/resources/icons/modifier-private.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/modifier-protected.png b/eugene-editor-maven-plugin/src/main/resources/icons/modifier-protected.png new file mode 100644 index 0000000..a342bef Binary files /dev/null and b/eugene-editor-maven-plugin/src/main/resources/icons/modifier-protected.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/modifier-public.png b/eugene-editor-maven-plugin/src/main/resources/icons/modifier-public.png new file mode 100644 index 0000000..62bada6 Binary files /dev/null and b/eugene-editor-maven-plugin/src/main/resources/icons/modifier-public.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/type-attribute.png b/eugene-editor-maven-plugin/src/main/resources/icons/type-attribute.png new file mode 100644 index 0000000..85d50ee Binary files /dev/null and b/eugene-editor-maven-plugin/src/main/resources/icons/type-attribute.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/type-class.png b/eugene-editor-maven-plugin/src/main/resources/icons/type-class.png new file mode 100644 index 0000000..b2813ef Binary files /dev/null and b/eugene-editor-maven-plugin/src/main/resources/icons/type-class.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/type-enumeration.png b/eugene-editor-maven-plugin/src/main/resources/icons/type-enumeration.png new file mode 100644 index 0000000..d9a937b Binary files /dev/null and b/eugene-editor-maven-plugin/src/main/resources/icons/type-enumeration.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/type-interface.png b/eugene-editor-maven-plugin/src/main/resources/icons/type-interface.png new file mode 100644 index 0000000..bd94fd7 Binary files /dev/null and b/eugene-editor-maven-plugin/src/main/resources/icons/type-interface.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/type-model.png b/eugene-editor-maven-plugin/src/main/resources/icons/type-model.png new file mode 100644 index 0000000..36c21a8 Binary files /dev/null and b/eugene-editor-maven-plugin/src/main/resources/icons/type-model.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/type-operation.png b/eugene-editor-maven-plugin/src/main/resources/icons/type-operation.png new file mode 100644 index 0000000..f96248d Binary files /dev/null and b/eugene-editor-maven-plugin/src/main/resources/icons/type-operation.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/type-package.png b/eugene-editor-maven-plugin/src/main/resources/icons/type-package.png new file mode 100644 index 0000000..9d926e5 Binary files /dev/null and b/eugene-editor-maven-plugin/src/main/resources/icons/type-package.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/log4j.properties b/eugene-editor-maven-plugin/src/main/resources/log4j.properties new file mode 100644 index 0000000..647902a --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/resources/log4j.properties @@ -0,0 +1,30 @@ +### +# #%L +# EUGene :: Maven plugin +# %% +# Copyright (C) 2006 - 2010 CodeLutin +# %% +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Lesser Public License for more details. +# +# You should have received a copy of the GNU General Lesser Public +# License along with this program. If not, see +# <http://www.gnu.org/licenses/lgpl-3.0.html>. +# #L% +### +# Global logging configuration +log4j.rootLogger=ERROR, stdout +# Console output... +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) %M - %m%n +# package level +log4j.logger.org.nuiton=WARN +log4j.logger.org.nuiton.eugene.editor=INFO diff --git a/eugene-editor-maven-plugin/src/main/resources/org/nuiton/eugene/editor/application/ui/tree/node/AttributeNode-error-validation.xml b/eugene-editor-maven-plugin/src/main/resources/org/nuiton/eugene/editor/application/ui/tree/node/AttributeNode-error-validation.xml new file mode 100644 index 0000000..40fe7d2 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/resources/org/nuiton/eugene/editor/application/ui/tree/node/AttributeNode-error-validation.xml @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + #%L + ObServe :: Application Swing Validation + %% + Copyright (C) 2008 - 2016 IRD, Codelutin, Tony Chemit + %% + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public + License along with this program. If not, see + <http://www.gnu.org/licenses/gpl-3.0.html>. + #L% + --> + +<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN" + "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> +<validators> + + <field name="name"> + + <field-validator type="requiredstring" short-circuit="true"> + <message>eugene.editor.validator.attribute.mandatory.name</message> + </field-validator> + + </field> + + <field name="type"> + + <field-validator type="requiredstring" short-circuit="true"> + <message>eugene.editor.validator.attribute.mandatory.type</message> + </field-validator> + + </field> + +</validators> diff --git a/eugene-editor-maven-plugin/src/main/resources/org/nuiton/eugene/editor/application/ui/tree/node/ClassNode-error-validation.xml b/eugene-editor-maven-plugin/src/main/resources/org/nuiton/eugene/editor/application/ui/tree/node/ClassNode-error-validation.xml new file mode 100644 index 0000000..0f68e18 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/resources/org/nuiton/eugene/editor/application/ui/tree/node/ClassNode-error-validation.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + #%L + ObServe :: Application Swing Validation + %% + Copyright (C) 2008 - 2016 IRD, Codelutin, Tony Chemit + %% + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public + License along with this program. If not, see + <http://www.gnu.org/licenses/gpl-3.0.html>. + #L% + --> + +<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN" + "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> +<validators> + + <field name="name"> + + <field-validator type="requiredstring" short-circuit="true"> + <message>eugene.editor.validator.model.mandatory.name</message> + </field-validator> + + </field> + +</validators> diff --git a/eugene-editor-maven-plugin/src/main/resources/org/nuiton/eugene/editor/application/ui/tree/node/EnumerationNode-error-validation.xml b/eugene-editor-maven-plugin/src/main/resources/org/nuiton/eugene/editor/application/ui/tree/node/EnumerationNode-error-validation.xml new file mode 100644 index 0000000..0e8e5b4 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/resources/org/nuiton/eugene/editor/application/ui/tree/node/EnumerationNode-error-validation.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + #%L + ObServe :: Application Swing Validation + %% + Copyright (C) 2008 - 2016 IRD, Codelutin, Tony Chemit + %% + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public + License along with this program. If not, see + <http://www.gnu.org/licenses/gpl-3.0.html>. + #L% + --> + +<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN" + "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> +<validators> + + <field name="name"> + + <field-validator type="requiredstring" short-circuit="true"> + <message>eugene.editor.validator.enumeration.mandatory.name</message> + </field-validator> + + </field> + +</validators> diff --git a/eugene-editor-maven-plugin/src/main/resources/org/nuiton/eugene/editor/application/ui/tree/node/InterfaceNode-error-validation.xml b/eugene-editor-maven-plugin/src/main/resources/org/nuiton/eugene/editor/application/ui/tree/node/InterfaceNode-error-validation.xml new file mode 100644 index 0000000..2517577 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/resources/org/nuiton/eugene/editor/application/ui/tree/node/InterfaceNode-error-validation.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + #%L + ObServe :: Application Swing Validation + %% + Copyright (C) 2008 - 2016 IRD, Codelutin, Tony Chemit + %% + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public + License along with this program. If not, see + <http://www.gnu.org/licenses/gpl-3.0.html>. + #L% + --> + +<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN" + "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> +<validators> + + <field name="name"> + + <field-validator type="requiredstring" short-circuit="true"> + <message>eugene.editor.validator.interface.mandatory.name</message> + </field-validator> + + </field> + +</validators> diff --git a/eugene-editor-maven-plugin/src/main/resources/org/nuiton/eugene/editor/application/ui/tree/node/ModelNode-error-validation.xml b/eugene-editor-maven-plugin/src/main/resources/org/nuiton/eugene/editor/application/ui/tree/node/ModelNode-error-validation.xml new file mode 100644 index 0000000..0f68e18 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/resources/org/nuiton/eugene/editor/application/ui/tree/node/ModelNode-error-validation.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + #%L + ObServe :: Application Swing Validation + %% + Copyright (C) 2008 - 2016 IRD, Codelutin, Tony Chemit + %% + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public + License along with this program. If not, see + <http://www.gnu.org/licenses/gpl-3.0.html>. + #L% + --> + +<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN" + "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> +<validators> + + <field name="name"> + + <field-validator type="requiredstring" short-circuit="true"> + <message>eugene.editor.validator.model.mandatory.name</message> + </field-validator> + + </field> + +</validators> diff --git a/eugene-editor-maven-plugin/src/main/resources/org/nuiton/eugene/editor/application/ui/tree/node/OperationNode-error-validation.xml b/eugene-editor-maven-plugin/src/main/resources/org/nuiton/eugene/editor/application/ui/tree/node/OperationNode-error-validation.xml new file mode 100644 index 0000000..f492323 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/resources/org/nuiton/eugene/editor/application/ui/tree/node/OperationNode-error-validation.xml @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + #%L + ObServe :: Application Swing Validation + %% + Copyright (C) 2008 - 2016 IRD, Codelutin, Tony Chemit + %% + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public + License along with this program. If not, see + <http://www.gnu.org/licenses/gpl-3.0.html>. + #L% + --> + +<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN" + "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> +<validators> + + <field name="name"> + + <field-validator type="requiredstring" short-circuit="true"> + <message>eugene.editor.validator.operation.mandatory.name</message> + </field-validator> + + </field> + + <field name="returnType"> + + <field-validator type="requiredstring" short-circuit="true"> + <message>eugene.editor.validator.operation.mandatory.type</message> + </field-validator> + + </field> + +</validators> diff --git a/eugene-editor-maven-plugin/src/main/resources/org/nuiton/eugene/editor/application/ui/tree/node/PackageNode-error-validation.xml b/eugene-editor-maven-plugin/src/main/resources/org/nuiton/eugene/editor/application/ui/tree/node/PackageNode-error-validation.xml new file mode 100644 index 0000000..f300a9b --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/resources/org/nuiton/eugene/editor/application/ui/tree/node/PackageNode-error-validation.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + #%L + ObServe :: Application Swing Validation + %% + Copyright (C) 2008 - 2016 IRD, Codelutin, Tony Chemit + %% + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public + License along with this program. If not, see + <http://www.gnu.org/licenses/gpl-3.0.html>. + #L% + --> + +<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN" + "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> +<validators> + + <field name="name"> + + <field-validator type="requiredstring" short-circuit="true"> + <message>eugene.editor.validator.package.mandatory.name</message> + </field-validator> + + </field> + +</validators> diff --git a/eugene-editor-maven-plugin/src/main/resources/validators.xml b/eugene-editor-maven-plugin/src/main/resources/validators.xml new file mode 100644 index 0000000..2e14eca --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/resources/validators.xml @@ -0,0 +1,54 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + #%L + ObServe :: Application Swing + %% + Copyright (C) 2008 - 2016 IRD, Codelutin, Tony Chemit + %% + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public + License along with this program. If not, see + <http://www.gnu.org/licenses/gpl-3.0.html>. + #L% + --> + +<!DOCTYPE validators PUBLIC + "-//Apache Struts//XWork Validator Config 1.0//EN" + "http://struts.apache.org/dtds/xwork-validator-config-1.0.dtd"> +<validators> + <!-- les validateurs fournis par XWork --> + <validator name="required" class="com.opensymphony.xwork2.validator.validators.RequiredFieldValidator"/> + <validator name="requiredstring" class="com.opensymphony.xwork2.validator.validators.RequiredStringValidator"/> + <validator name="regex" class="com.opensymphony.xwork2.validator.validators.RegexFieldValidator"/> + <validator name="stringlength" class="com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator"/> + <validator name="int" class="com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator"/> + <validator name="long" class="com.opensymphony.xwork2.validator.validators.LongRangeFieldValidator"/> + <validator name="short" class="com.opensymphony.xwork2.validator.validators.ShortRangeFieldValidator"/> + <validator name="double" class="com.opensymphony.xwork2.validator.validators.DoubleRangeFieldValidator"/> + <validator name="date" class="com.opensymphony.xwork2.validator.validators.DateRangeFieldValidator"/> + <validator name="fieldexpression" class="com.opensymphony.xwork2.validator.validators.FieldExpressionValidator"/> + <validator name="email" class="com.opensymphony.xwork2.validator.validators.EmailValidator"/> + <validator name="url" class="com.opensymphony.xwork2.validator.validators.URLValidator"/> + + <validator name="visitor" class="com.opensymphony.xwork2.validator.validators.VisitorFieldValidator"/> + <validator name="conditionalvisitor" class="com.opensymphony.xwork2.validator.validators.ConditionalVisitorFieldValidator"/> + + <!-- les validateurs fournis par Nuiton-validator --> + <validator name="collectionFieldExpression" class="org.nuiton.validator.xwork2.field.CollectionFieldExpressionValidator"/> + <validator name="requiredFile" class="org.nuiton.validator.xwork2.field.RequiredFileFieldValidator"/> + <validator name="existingFile" class="org.nuiton.validator.xwork2.field.ExistingFileFieldValidator"/> + <validator name="notExistingFile" class="org.nuiton.validator.xwork2.field.NotExistingFileFieldValidator"/> + <validator name="existingDirectory" class="org.nuiton.validator.xwork2.field.ExistingDirectoryFieldValidator"/> + <validator name="notExistingDirectory" class="org.nuiton.validator.xwork2.field.NotExistingDirectoryFieldValidator"/> + <validator name="fieldexpressionwithparams" class="org.nuiton.validator.xwork2.field.FieldExpressionWithParamsValidator"/> + +</validators> diff --git a/eugene-editor-maven-plugin/src/site/fr/rst/index.rst b/eugene-editor-maven-plugin/src/site/fr/rst/index.rst new file mode 100644 index 0000000..f98996d --- /dev/null +++ b/eugene-editor-maven-plugin/src/site/fr/rst/index.rst @@ -0,0 +1,72 @@ +.. - +.. * #%L +.. * EUGene :: Maven plugin +.. * %% +.. * Copyright (C) 2006 - 2010 CodeLutin +.. * %% +.. * This program is free software: you can redistribute it and/or modify +.. * it under the terms of the GNU Lesser General Public License as +.. * published by the Free Software Foundation, either version 3 of the +.. * License, or (at your option) any later version. +.. * +.. * This program is distributed in the hope that it will be useful, +.. * but WITHOUT ANY WARRANTY; without even the implied warranty of +.. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +.. * GNU General Lesser Public License for more details. +.. * +.. * You should have received a copy of the GNU General Lesser Public +.. * License along with this program. If not, see +.. * <http://www.gnu.org/licenses/lgpl-3.0.html>. +.. * #L% +.. - + +=================== +Maven-eugene-plugin +=================== + +.. contents:: + +Présentation +------------ + +Le plugin eugene-maven-plugin permet l'utilisation depuis maven de +Eugene. Pour plus de détails sur Eugene veuillez consulter +l'adresse suivante http://doc.nuiton.org/eugene/eugene + +Nouvautés dans la version 2.2 +----------------------------- + +Recherche de fichiers dans le class-path +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Il est possible désormais d'utiliser des fichiers contenus dans le class-path, +que ce soit des modèles zargo, xmi ou model. + +La page d'`usage`_ explique comment cela fonctionne. + +Respect des hiérarchies répertoires +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +On respecte conserve désormais de bout en bout les répertoires relatifs dont +sont extrait les données lors d'un cycle de génération et ceci afin d'éviter +toute collision de noms de fichiers et mieux s'y retrouver. + +Meilleure copie des ressources +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +L'algorithme de recopie des rsesources a été revu et est désormais spécifique à +chaque type de writer. + +Globalement, pour tous les writers fournis par le plugin, à chaque fichier +à traiter par un writer, on y associe un fichier de properties du même nom. + +Ce mécanisme n'est pas actuellement extensible mais pourrait le devenir si le +besoin est présent. + +Utilisation dans le pom.xml +--------------------------- + +Voir la `page`_ de détail des goals ou bien la page d'`usage`_ des goals. + +.. _page: plugin-info.html +.. _usage: usage.html diff --git a/eugene-editor-maven-plugin/src/site/rst/index.rst b/eugene-editor-maven-plugin/src/site/rst/index.rst new file mode 100644 index 0000000..e970fe1 --- /dev/null +++ b/eugene-editor-maven-plugin/src/site/rst/index.rst @@ -0,0 +1,44 @@ +.. - +.. * #%L +.. * EUGene :: Maven plugin +.. * %% +.. * Copyright (C) 2006 - 2010 CodeLutin +.. * %% +.. * This program is free software: you can redistribute it and/or modify +.. * it under the terms of the GNU Lesser General Public License as +.. * published by the Free Software Foundation, either version 3 of the +.. * License, or (at your option) any later version. +.. * +.. * This program is distributed in the hope that it will be useful, +.. * but WITHOUT ANY WARRANTY; without even the implied warranty of +.. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +.. * GNU General Lesser Public License for more details. +.. * +.. * You should have received a copy of the GNU General Lesser Public +.. * License along with this program. If not, see +.. * <http://www.gnu.org/licenses/lgpl-3.0.html>. +.. * #L% +.. - + +=================== +Maven-eugene-plugin +=================== + +.. contents:: + + +Abstract +-------- + +The *eugene-maven-plugin* permits to use the *EUGene* api from maven. + +For more information about *EUGene* api, see documention here : +http://doc.nuiton.org/eugene/eugene + +Usage in your pom.xml +--------------------- + +See the `details`_ page of goal or the `usage`_ page. + +.. _details: ./plugin-info.html +.. _usage: ./usage.html diff --git a/eugene-editor-maven-plugin/src/site/site_en.xml b/eugene-editor-maven-plugin/src/site/site_en.xml new file mode 100644 index 0000000..28e482f --- /dev/null +++ b/eugene-editor-maven-plugin/src/site/site_en.xml @@ -0,0 +1,62 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + #%L + EUGene :: Maven plugin + %% + Copyright (C) 2006 - 2012 CodeLutin, Tony Chemit + %% + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Lesser Public License for more details. + + You should have received a copy of the GNU General Lesser Public + License along with this program. If not, see + <http://www.gnu.org/licenses/lgpl-3.0.html>. + #L% + --> + +<project name="${project.name}" + xmlns="http://maven.apache.org/DECORATION/1.4.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/DECORATION/1.4.0 http://maven.apache.org/xsd/decoration-1.4.0.xsd"> + + <bannerLeft> + <name>${project.name}</name> + </bannerLeft> + + <body> + + <links> + <item name="[fr" href="fr/index.html"/> + <item name="en]" href="index.html"/> + </links> + + <breadcrumbs> + <item name="${project.name}" href="./index.html"/> + </breadcrumbs> + + <menu ref="parent"/> + + <menu name="User"> + <item href="index.html" name="Index"/> + <item href="usage.html" name="Usage"/> + <item href="example.html" name="Examples"/> + <item name="Goals" href="plugin-info.html"> + <item name="generate" href="generate-mojo.html"/> + <item name="available-data" href="available-data-mojo.html"/> + <item name="tag-values-report" href="tag-values-report.html"/> + <item name="stereotypes-report" href="stereotypes-report.html"/> + <item name="help" href="help-mojo.html"/> + </item> + </menu> + + <menu ref="reports"/> + + </body> +</project> diff --git a/eugene-editor-maven-plugin/src/site/site_fr.xml b/eugene-editor-maven-plugin/src/site/site_fr.xml new file mode 100644 index 0000000..21ca847 --- /dev/null +++ b/eugene-editor-maven-plugin/src/site/site_fr.xml @@ -0,0 +1,66 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + #%L + EUGene :: Maven plugin + %% + Copyright (C) 2006 - 2012 CodeLutin, Tony Chemit + %% + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Lesser Public License for more details. + + You should have received a copy of the GNU General Lesser Public + License along with this program. If not, see + <http://www.gnu.org/licenses/lgpl-3.0.html>. + #L% + --> + +<project name="${project.name}" + xmlns="http://maven.apache.org/DECORATION/1.4.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/DECORATION/1.4.0 http://maven.apache.org/xsd/decoration-1.4.0.xsd"> + + <bannerLeft> + <name>${project.name}</name> + </bannerLeft> + + <body> + + <links> + <item name="[fr" href="index.html"/> + <item name="en]" href="../index.html"/> + </links> + + <breadcrumbs> + <item name="${project.name}" href="./index.html"/> + </breadcrumbs> + + <!-- TC-20100117 : ne fonctionne pas sur une langue non principale --> + <!--<menu ref="parent"/>--> + <menu name="Parent Projet"> + <item name="Eugene" href="../../fr/index.html"/> + </menu> + + <menu name="Utilisateur"> + <item href="index.html" name="Accueil"/> + <item href="usage.html" name="Utilisation"/> + <item href="example.html" name="Examples"/> + <item name="Goals" href="plugin-info.html"> + <item name="generate" href="generate-mojo.html"/> + <item name="available-data" href="available-data-mojo.html"/> + <item name="tag-values-report" href="tag-values-report.html"/> + <item name="stereotypes-report" href="stereotypes-report.html"/> + <item name="help" href="help-mojo.html"/> + </item> + </menu> + + <menu ref="reports"/> + + </body> +</project> diff --git a/eugene-editor-maven-plugin/src/test/resources/observe-entities/observe-common.objectmodel b/eugene-editor-maven-plugin/src/test/resources/observe-entities/observe-common.objectmodel new file mode 100644 index 0000000..4532f1f --- /dev/null +++ b/eugene-editor-maven-plugin/src/test/resources/observe-entities/observe-common.objectmodel @@ -0,0 +1,670 @@ +<?xml version="1.0" encoding="UTF-8"?> +<objectModel xmlns="http://nuiton.org/eugene/objectModel/v1" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://nuiton.org/eugene/objectModel/v1 http://doc.nuiton.org/eugene/xsd/v1/objectmodel.xsd" + name="Observe" + version=""> + <package name="fr.ird.observe.entities.referentiel"/> + <class name="Vessel" package="fr.ird.observe.entities.referentiel"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute name="keelCode" associationType="composite" visibility="public" type="Integer" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="fleetCountry" associationType="composite" visibility="public" + type="Integer" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="changeDate" associationType="composite" visibility="public" + type="java.util.Date" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="yearService" associationType="composite" visibility="public" + type="Integer" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="length" associationType="composite" visibility="public" + type="java.lang.Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="capacity" associationType="composite" visibility="public" + type="java.lang.Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="power" associationType="composite" visibility="public" type="Integer" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="searchMaximum" associationType="composite" visibility="public" + type="java.lang.Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="comment" associationType="composite" visibility="public" type="String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.VesselSizeCategory" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.VesselType" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute name="flagCountry" visibility="public" + type="fr.ird.observe.entities.referentiel.Country" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + </class> + <class name="VesselType" package="fr.ird.observe.entities.referentiel"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Vessel" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="VesselSizeCategory" package="fr.ird.observe.entities.referentiel"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.ObserveReferentialEntity" + discriminator=""/> + <attribute name="capacityLabel" associationType="composite" visibility="public" + type="String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="gaugeLabel" associationType="composite" visibility="public" type="String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Vessel" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="Species" package="fr.ird.observe.entities.referentiel"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute name="faoCode" associationType="composite" visibility="public" type="String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="scientificLabel" associationType="composite" visibility="public" + type="String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="homeId" associationType="composite" visibility="public" type="String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="wormsId" associationType="composite" visibility="public" + type="java.lang.Long" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="lengthMeasureType" associationType="composite" visibility="public" + type="String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="minLength" associationType="composite" visibility="public" + type="java.lang.Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="maxLength" associationType="composite" visibility="public" + type="java.lang.Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="minWeight" associationType="composite" visibility="public" + type="java.lang.Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="maxWeight" associationType="composite" visibility="public" + type="java.lang.Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.SpeciesGroup" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.LengthWeightParameter" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Ocean" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.SpeciesList" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="SpeciesList" package="fr.ird.observe.entities.referentiel"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Species" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + </class> + <class name="SpeciesGroup" package="fr.ird.observe.entities.referentiel"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Species" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="ObserveReferentialEntity" abstract="true" + package="fr.ird.observe.entities.referentiel"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.ObserveEntity" discriminator=""/> + <attribute name="code" associationType="composite" visibility="public" type="String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="uri" associationType="composite" visibility="public" type="String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="needComment" associationType="composite" visibility="public" + type="boolean" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="status" associationType="composite" visibility="public" + type="fr.ird.observe.entities.constants.ReferenceStatusPersist" + minMultiplicity="1" + maxMultiplicity="1"/> + <operation name="isEnabled" visibility="public"> + <returnParameter type="boolean"/> + </operation> + <operation name="isDisabled" visibility="public"> + <returnParameter type="boolean"/> + </operation> + </class> + <class name="Program" package="fr.ird.observe.entities.referentiel"> + <dependency name="constants" + supplierName="fr.ird.observe.entities.referentiel.ProgramConstants"/> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute name="nonTargetObservation" associationType="composite" visibility="public" + type="int" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="targetDiscardsObservation" associationType="composite" + visibility="public" + type="int" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="samplesObservation" associationType="composite" visibility="public" + type="int" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="objectsObservation" associationType="composite" visibility="public" + type="int" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="detailledActivitiesObservation" associationType="composite" + visibility="public" + type="int" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="mammalsObservation" associationType="composite" visibility="public" + type="int" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="birdsObservation" associationType="composite" visibility="public" + type="int" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="baitObservation" associationType="composite" visibility="public" + type="int" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="startDate" associationType="composite" visibility="public" + type="java.util.Date" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="endDate" associationType="composite" visibility="public" + type="java.util.Date" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="comment" associationType="composite" visibility="public" type="String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="gearType" associationType="composite" visibility="public" + type="fr.ird.observe.entities.constants.GearTypePersist" + minMultiplicity="1" + maxMultiplicity="1"/> + <operation name="getGearTypePrefix" visibility="public"> + <returnParameter type="String"/> + </operation> + <operation name="setGearTypePrefix" visibility="public"> + <returnParameter type="void"/> + <parameter name="gearTypePrefix" type="String"/> + </operation> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Organism" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + </class> + <class name="Person" package="fr.ird.observe.entities.referentiel"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.ObserveReferentialEntity" + discriminator=""/> + <attribute name="lastName" associationType="composite" visibility="public" type="String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="firstName" associationType="composite" visibility="public" type="String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="observer" associationType="composite" visibility="public" type="boolean" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="captain" associationType="composite" visibility="public" type="boolean" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="dataEntryOperator" associationType="composite" visibility="public" + type="boolean" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Country" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + </class> + <class name="Ocean" package="fr.ird.observe.entities.referentiel"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.LengthWeightParameter" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Species" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="Organism" package="fr.ird.observe.entities.referentiel"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute name="description" associationType="composite" visibility="public" + type="String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Program" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Country" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + </class> + <class name="I18nReferentialEntity" abstract="true" + package="fr.ird.observe.entities.referentiel"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.ObserveReferentialEntity" + discriminator=""/> + <attribute name="label1" associationType="composite" visibility="public" type="String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="label2" associationType="composite" visibility="public" type="String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="label3" associationType="composite" visibility="public" type="String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="label4" associationType="composite" visibility="public" type="String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="label5" associationType="composite" visibility="public" type="String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="label6" associationType="composite" visibility="public" type="String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="label7" associationType="composite" visibility="public" type="String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="label8" associationType="composite" visibility="public" type="String" + minMultiplicity="1" + maxMultiplicity="1"/> + </class> + <class name="Country" package="fr.ird.observe.entities.referentiel"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute name="iso2Code" associationType="composite" visibility="public" type="String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="iso3Code" associationType="composite" visibility="public" type="String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Organism" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Vessel" + reverseAttributeName="flagCountry" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Person" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Harbour" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="LengthWeightParameter" package="fr.ird.observe.entities.referentiel"> + <dependency name="constants" + supplierName="fr.ird.observe.entities.referentiel.LengthWeightParameterConstants"/> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.ObserveReferentialEntity" + discriminator=""/> + <attribute name="startDate" associationType="composite" visibility="public" + type="java.util.Date" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="endDate" associationType="composite" visibility="public" + type="java.util.Date" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="coefficients" associationType="composite" visibility="public" + type="String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="lengthWeightFormula" associationType="composite" visibility="public" + type="String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="weightLengthFormula" associationType="composite" visibility="public" + type="String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="meanLength" associationType="composite" visibility="public" + type="java.lang.Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="meanWeight" associationType="composite" visibility="public" + type="java.lang.Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <operation name="getCoefficientNames" visibility="public"> + <returnParameter type="java.util.Set<String>"/> + </operation> + <operation name="isLengthWeightFormulaValid" visibility="public"> + <returnParameter type="boolean"/> + </operation> + <operation name="isWeightLengthFormulaValid" visibility="public"> + <returnParameter type="boolean"/> + </operation> + <operation name="setLengthWeightFormulaValid" visibility="public"> + <returnParameter type="void"/> + <parameter name="lengthWeightFormulaValid" type="boolean"/> + </operation> + <operation name="setWeightLengthFormulaValid" visibility="public"> + <returnParameter type="void"/> + <parameter name="weightLengthFormulaValid" type="boolean"/> + </operation> + <operation name="computeWeight" visibility="public"> + <returnParameter type="java.lang.Float"/> + <parameter name="length" type="float"/> + </operation> + <operation name="computeLength" visibility="public"> + <returnParameter type="java.lang.Float"/> + <parameter name="weight" type="float"/> + </operation> + <operation name="getCoefficientValues" visibility="public"> + <returnParameter type="java.util.Map<String, Double>"/> + </operation> + <operation name="getCoefficientValue" visibility="public"> + <returnParameter type="java.lang.Double"/> + <parameter name="coefficientName" type="String"/> + </operation> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Ocean" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Species" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Sex" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + </class> + <class name="Sex" package="fr.ird.observe.entities.referentiel"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.LengthWeightParameter" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="FpaZone" package="fr.ird.observe.entities.referentiel"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute name="startDate" associationType="composite" visibility="public" + type="java.util.Date" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="endDate" associationType="composite" visibility="public" + type="java.util.Date" + minMultiplicity="1" + maxMultiplicity="1"/> + </class> + <class name="Harbour" package="fr.ird.observe.entities.referentiel"> + <dependency name="constants" + supplierName="fr.ird.observe.entities.referentiel.HarbourConstants"/> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.ObserveReferentialEntity" + discriminator=""/> + <attribute name="locode" associationType="composite" visibility="public" type="String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="name" associationType="composite" visibility="public" type="String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="latitude" associationType="composite" visibility="public" + type="java.lang.Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="longitude" associationType="composite" visibility="public" + type="java.lang.Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <operation name="getQuadrant" visibility="public"> + <returnParameter type="Integer"/> + </operation> + <operation name="setQuadrant" visibility="public"> + <returnParameter type="void"/> + <parameter name="quadrant" type="Integer"/> + </operation> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Country" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + </class> + <class name="Gear" package="fr.ird.observe.entities.referentiel"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.GearCaracteristic" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + </class> + <class name="GearCaracteristic" package="fr.ird.observe.entities.referentiel"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute name="unit" associationType="composite" visibility="public" type="String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Gear" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.GearCaracteristicType" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + </class> + <class name="GearCaracteristicType" package="fr.ird.observe.entities.referentiel"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.GearCaracteristic" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="ReferenceStatusPersist" package="fr.ird.observe.entities.referentiel"/> + <enumeration name="LengthWeightParameterConstants" + package="fr.ird.observe.entities.referentiel"> + <literal name="lengthWeightFormulaValid"/> + <literal name="weightLengthFormulaValid"/> + </enumeration> + <enumeration name="HarbourConstants" package="fr.ird.observe.entities.referentiel"> + <literal name="quadrant"/> + </enumeration> + <enumeration name="ProgramConstants" package="fr.ird.observe.entities.referentiel"> + <literal name="gearTypePrefix"/> + </enumeration> + <package name="fr.ird.observe.entities"/> + <class name="CommentableEntity" abstract="true" package="fr.ird.observe.entities"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.ObserveDataEntity" discriminator=""/> + <attribute name="comment" associationType="composite" visibility="public" type="String" + minMultiplicity="1" + maxMultiplicity="1"/> + </class> + <class name="ObserveEntity" abstract="true" package="fr.ird.observe.entities"> + <stereotype name="entity"/> + <attribute name="lastUpdateDate" associationType="composite" visibility="public" + type="java.util.Date" + minMultiplicity="1" + maxMultiplicity="1"/> + </class> + <class name="ObserveDataEntity" abstract="true" package="fr.ird.observe.entities"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.ObserveEntity" discriminator=""/> + </class> + <class name="LastUpdateDate" package="fr.ird.observe.entities"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.ObserveEntity" discriminator=""/> + <attribute name="type" associationType="composite" visibility="public" type="String" + minMultiplicity="1" + maxMultiplicity="1"/> + </class> + <interface name="Trip" package="fr.ird.observe.entities"/> + <interface name="Activity" package="fr.ird.observe.entities"/> + <interface name="ObserveSet" package="fr.ird.observe.entities"/> + <package name="java.util"/> + <package name="fr.ird.observe.entities.constants"/> + <enumeration name="ReferenceStatusPersist" package="fr.ird.observe.entities.constants"/> + <enumeration name="GearTypePersist" package="fr.ird.observe.entities.constants"/> +</objectModel> \ No newline at end of file diff --git a/eugene-editor-maven-plugin/src/test/resources/observe-entities/observe-longline.objectmodel b/eugene-editor-maven-plugin/src/test/resources/observe-entities/observe-longline.objectmodel new file mode 100644 index 0000000..687bb51 --- /dev/null +++ b/eugene-editor-maven-plugin/src/test/resources/observe-entities/observe-longline.objectmodel @@ -0,0 +1,2251 @@ +<?xml version="1.0" encoding="UTF-8"?> +<objectModel xmlns="http://nuiton.org/eugene/objectModel/v1" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://nuiton.org/eugene/objectModel/v1 http://doc.nuiton.org/eugene/xsd/v1/objectmodel.xsd" + name="Observe" + version=""> + <package name="java"/> + <package name="fr.ird.observe.entities.longline"/> + <class name="SetLongline" package="fr.ird.observe.entities.longline"> + <dependency name="constants" + supplierName="fr.ird.observe.entities.longline.SetLonglineConstants"/> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.CommentableEntity" discriminator=""/> + <interface name="fr.ird.observe.entities.ObserveSet"/> + <attribute name="homeId" associationType="composite" visibility="public" type="String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="number" associationType="composite" visibility="public" type="Integer" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="basketsPerSectionCount" associationType="composite" visibility="public" + type="Integer" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="branchlinesPerBasketCount" associationType="composite" + visibility="public" + type="Integer" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="totalSectionsCount" associationType="composite" visibility="public" + type="Integer" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="totalBasketsCount" associationType="composite" visibility="public" + type="Integer" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="totalHooksCount" associationType="composite" visibility="public" + type="Integer" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="weightedSnap" associationType="composite" visibility="public" + type="Boolean" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="snapWeight" associationType="composite" visibility="public" type="Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="weightedSwivel" associationType="composite" visibility="public" + type="Boolean" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="swivelWeight" associationType="composite" visibility="public" + type="Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="lightsticksPerBasketCount" associationType="composite" + visibility="public" + type="Integer" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="timeBetweenHooks" associationType="composite" visibility="public" + type="Long" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="shooterUsed" associationType="composite" visibility="public" + type="Boolean" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="shooterSpeed" associationType="composite" visibility="public" + type="Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="maxDepthTargeted" associationType="composite" visibility="public" + type="Integer" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="settingStartTimeStamp" associationType="composite" visibility="public" + type="java.util.Date" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="settingStartLatitude" associationType="composite" visibility="public" + type="Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="settingStartLongitude" associationType="composite" visibility="public" + type="Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="settingEndTimeStamp" associationType="composite" visibility="public" + type="java.util.Date" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="settingEndLatitude" associationType="composite" visibility="public" + type="Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="settingEndLongitude" associationType="composite" visibility="public" + type="Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="settingVesselSpeed" associationType="composite" visibility="public" + type="Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="haulingDirectionSameAsSetting" associationType="composite" + visibility="public" + type="Boolean" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="haulingStartTimeStamp" associationType="composite" visibility="public" + type="java.util.Date" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="haulingStartLatitude" associationType="composite" visibility="public" + type="Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="haulingStartLongitude" associationType="composite" visibility="public" + type="Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="haulingEndTimeStamp" associationType="composite" visibility="public" + type="java.util.Date" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="haulingEndLatitude" associationType="composite" visibility="public" + type="Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="haulingEndLongitude" associationType="composite" visibility="public" + type="Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="haulingBreaks" associationType="composite" visibility="public" + type="Integer" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="monitored" associationType="composite" visibility="public" type="Boolean" + minMultiplicity="1" + maxMultiplicity="1"/> + <operation name="getSettingStartTime" visibility="public"> + <returnParameter type="java.util.Date"/> + </operation> + <operation name="getSettingStartDate" visibility="public"> + <returnParameter type="java.util.Date"/> + </operation> + <operation name="setSettingStartDate" visibility="public"> + <parameter name="date" type="java.util.Date"/> + </operation> + <operation name="setSettingStartTime" visibility="public"> + <parameter name="time" type="java.util.Date"/> + </operation> + <operation name="getSettingEndDate" visibility="public"> + <returnParameter type="java.util.Date"/> + </operation> + <operation name="getSettingEndTime" visibility="public"> + <returnParameter type="java.util.Date"/> + </operation> + <operation name="setSettingEndDate" visibility="public"> + <parameter name="date" type="java.util.Date"/> + </operation> + <operation name="setSettingEndTime" visibility="public"> + <parameter name="time" type="java.util.Date"/> + </operation> + <operation name="getHaulingStartDate" visibility="public"> + <returnParameter type="java.util.Date"/> + </operation> + <operation name="getHaulingStartTime" visibility="public"> + <returnParameter type="java.util.Date"/> + </operation> + <operation name="setHaulingStartDate" visibility="public"> + <parameter name="date" type="java.util.Date"/> + </operation> + <operation name="setHaulingStartTime" visibility="public"> + <parameter name="time" type="java.util.Date"/> + </operation> + <operation name="getHaulingEndDate" visibility="public"> + <returnParameter type="java.util.Date"/> + </operation> + <operation name="getHaulingEndTime" visibility="public"> + <returnParameter type="java.util.Date"/> + </operation> + <operation name="setHaulingEndDate" visibility="public"> + <parameter name="date" type="java.util.Date"/> + </operation> + <operation name="setHaulingEndTime" visibility="public"> + <parameter name="time" type="java.util.Date"/> + </operation> + <operation name="getSettingEndQuadrant" visibility="public"> + <returnParameter type="Integer"/> + </operation> + <operation name="getHaulingStartQuadrant" visibility="public"> + <returnParameter type="Integer"/> + </operation> + <operation name="getHaulingEndQuadrant" visibility="public"> + <returnParameter type="Integer"/> + </operation> + <operation name="setSettingStartQuadrant" visibility="public"> + <parameter name="quadrant" type="Integer"/> + </operation> + <operation name="setSettingEndQuadrant" visibility="public"> + <parameter name="quadrant" type="Integer"/> + </operation> + <operation name="setHaulingStartQuadrant" visibility="public"> + <parameter name="quadrant" type="Integer"/> + </operation> + <operation name="setHaulingEndQuadrant" visibility="public"> + <parameter name="quadrant" type="Integer"/> + </operation> + <operation name="getSettingStartQuadrant" visibility="public"> + <returnParameter type="Integer"/> + </operation> + <operation name="getFloatlinesCompositionProportionSum" visibility="public"> + <returnParameter type="int"/> + </operation> + <operation name="getBranchlinesCompositionProportionSum" visibility="public"> + <returnParameter type="int"/> + </operation> + <operation name="getHooksCompositionProportionSum" visibility="public"> + <returnParameter type="int"/> + </operation> + <operation name="getBaitsCompositionProportionSum" visibility="public"> + <returnParameter type="int"/> + </operation> + <operation name="setFloatlinesCompositionProportionSum" visibility="public"> + <parameter name="sum" type="int"/> + </operation> + <operation name="setBranchlinesCompositionProportionSum" visibility="public"> + <parameter name="sum" type="int"/> + </operation> + <operation name="setHooksCompositionProportionSum" visibility="public"> + <parameter name="sum" type="int"/> + </operation> + <operation name="setBaitsCompositionProportionSum" visibility="public"> + <parameter name="sum" type="int"/> + </operation> + <attribute visibility="public" type="fr.ird.observe.entities.longline.BaitsComposition" + reverseAttributeName="" + associationType="composite" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.longline.FloatlinesComposition" + reverseAttributeName="" + associationType="composite" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.HooksComposition" + reverseAttributeName="" + associationType="composite" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.Section" + reverseAttributeName="" + associationType="composite" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.longline.SettingShape" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.Tdr" + reverseAttributeName="" + associationType="composite" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.CatchLongline" + reverseAttributeName="" + associationType="composite" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.ActivityLongline" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.longline.LineType" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.longline.LightsticksType" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.longline.LightsticksColor" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.longline.MitigationType" + reverseAttributeName="set" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.longline.BranchlinesComposition" + reverseAttributeName="" + associationType="composite" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + </class> + <class name="HooksComposition" package="fr.ird.observe.entities.longline"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.ObserveDataEntity" discriminator=""/> + <attribute name="proportion" associationType="composite" visibility="public" + type="Integer" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="hookOffset" associationType="composite" visibility="public" + type="Integer" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.longline.HookType" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.SetLongline" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.longline.HookSize" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + </class> + <class name="Section" package="fr.ird.observe.entities.longline"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.ObserveDataEntity" discriminator=""/> + <interface name="fr.ird.observe.entities.longline.LonglineCompositionEntity"/> + <attribute name="settingIdentifier" associationType="composite" visibility="public" + type="Integer" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="haulingIdentifier" associationType="composite" visibility="public" + type="Integer" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.SetLongline" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.Basket" + reverseAttributeName="" + associationType="composite" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.Tdr" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.CatchLongline" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + </class> + <class name="SensorUsed" package="fr.ird.observe.entities.longline"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.ObserveDataEntity" discriminator=""/> + <attribute name="data" associationType="composite" visibility="public" + type="java.sql.Blob" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="dataFilename" associationType="composite" visibility="public" + type="String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="dataLocation" associationType="composite" visibility="public" + type="String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="sensorSerialNo" associationType="composite" visibility="public" + type="String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.longline.SensorType" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.ActivityLongline" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.longline.SensorDataFormat" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.longline.SensorBrand" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + </class> + <class name="SizeMeasure" package="fr.ird.observe.entities.longline"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.ObserveDataEntity" discriminator=""/> + <attribute name="size" associationType="composite" visibility="public" type="Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.CatchLongline" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.longline.SizeMeasureType" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + </class> + <class name="Tdr" package="fr.ird.observe.entities.longline"> + <dependency name="constants" supplierName="fr.ird.observe.entities.longline.TdrConstants"/> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.ObserveDataEntity" discriminator=""/> + <interface name="fr.ird.observe.entities.longline.LonglinePositionAware"/> + <attribute name="homeId" associationType="composite" visibility="public" type="String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="floatline1Length" associationType="composite" visibility="public" + type="Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="floatline2Length" associationType="composite" visibility="public" + type="Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="serialNo" associationType="composite" visibility="public" type="String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="data" associationType="composite" visibility="public" + type="java.sql.Blob" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="dataFilename" associationType="composite" visibility="public" + type="String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="dataLocation" associationType="composite" visibility="public" + type="String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="deployementStart" associationType="composite" visibility="public" + type="java.util.Date" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="deployementEnd" associationType="composite" visibility="public" + type="java.util.Date" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="fishingStart" associationType="composite" visibility="public" + type="java.util.Date" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="fishingEnd" associationType="composite" visibility="public" + type="java.util.Date" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="fishingStartDepth" associationType="composite" visibility="public" + type="Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="fishingEndDepth" associationType="composite" visibility="public" + type="Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="meanDeployementDepth" associationType="composite" visibility="public" + type="Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="medianDeployementDepth" associationType="composite" visibility="public" + type="Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="minFishingDepth" associationType="composite" visibility="public" + type="Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="maxFishingDepth" associationType="composite" visibility="public" + type="Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="meanFishingDepth" associationType="composite" visibility="public" + type="Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="medianFishingDepth" associationType="composite" visibility="public" + type="Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <operation name="getDeployementStartDate" visibility="public"> + <returnParameter type="java.util.Date"/> + </operation> + <operation name="getDeployementStartTime" visibility="public"> + <returnParameter type="java.util.Date"/> + </operation> + <operation name="getDeployementEndDate" visibility="public"> + <returnParameter type="java.util.Date"/> + </operation> + <operation name="getDeployementEndTime" visibility="public"> + <returnParameter type="java.util.Date"/> + </operation> + <operation name="getFishingStartDate" visibility="public"> + <returnParameter type="java.util.Date"/> + </operation> + <operation name="getFishingStartTime" visibility="public"> + <returnParameter type="java.util.Date"/> + </operation> + <operation name="getFishingEndDate" visibility="public"> + <returnParameter type="java.util.Date"/> + </operation> + <operation name="getFishingEndTime" visibility="public"> + <returnParameter type="java.util.Date"/> + </operation> + <operation name="setDeployementStartDate" visibility="public"> + <parameter name="date" type="java.util.Date"/> + </operation> + <operation name="setDeployementEndDate" visibility="public"> + <parameter name="date" type="java.util.Date"/> + </operation> + <operation name="setDeployementStartTime" visibility="public"> + <parameter name="time" type="java.util.Date"/> + </operation> + <operation name="setDeployementEndTime" visibility="public"> + <parameter name="time" type="java.util.Date"/> + </operation> + <operation name="setFishingStartDate" visibility="public"> + <parameter name="date" type="java.util.Date"/> + </operation> + <operation name="setFishingStartTime" visibility="public"> + <parameter name="time" type="java.util.Date"/> + </operation> + <operation name="setFishingEndDate" visibility="public"> + <parameter name="date" type="java.util.Date"/> + </operation> + <operation name="setFishingEndTime" visibility="public"> + <parameter name="time" type="java.util.Date"/> + </operation> + <attribute visibility="public" type="fr.ird.observe.entities.longline.Branchline" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.TdrRecord" + reverseAttributeName="" + associationType="composite" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.longline.SensorBrand" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Species" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.Section" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.Basket" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.SetLongline" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.longline.ItemHorizontalPosition" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.longline.ItemVerticalPosition" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + </class> + <class name="TdrRecord" package="fr.ird.observe.entities.longline"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.ObserveDataEntity" discriminator=""/> + <attribute name="timeStamp" associationType="composite" visibility="public" + type="java.util.Date" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="temperature" associationType="composite" visibility="public" type="Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="depth" associationType="composite" visibility="public" type="Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.Basket" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.Tdr" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="false" + ordering="unordered"/> + </class> + <class name="TripLongline" package="fr.ird.observe.entities.longline"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.CommentableEntity" discriminator=""/> + <interface name="fr.ird.observe.entities.Trip"/> + <attribute name="startDate" associationType="composite" visibility="private" + type="java.util.Date" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="endDate" associationType="composite" visibility="private" + type="java.util.Date" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="totalFishingOperationsNumber" associationType="composite" + visibility="private" + type="Integer" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="homeId" associationType="composite" visibility="public" type="String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.ActivityLongline" + reverseAttributeName="" + associationType="composite" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.longline.TripType" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute name="observer" visibility="public" + type="fr.ird.observe.entities.referentiel.Person" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Vessel" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute name="captain" visibility="public" + type="fr.ird.observe.entities.referentiel.Person" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute name="dataEntryOperator" visibility="public" + type="fr.ird.observe.entities.referentiel.Person" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Program" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Ocean" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute name="departureHarbour" visibility="public" + type="fr.ird.observe.entities.referentiel.Harbour" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute name="landingHarbour" visibility="public" + type="fr.ird.observe.entities.referentiel.Harbour" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.longline.GearUseFeaturesLongline" + reverseAttributeName="" + associationType="composite" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + </class> + <class name="FloatlinesComposition" package="fr.ird.observe.entities.longline"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.ObserveDataEntity" discriminator=""/> + <attribute name="length" associationType="composite" visibility="public" type="Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="proportion" associationType="composite" visibility="public" + type="Integer" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.SetLongline" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.longline.LineType" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + </class> + <class name="Encounter" package="fr.ird.observe.entities.longline"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.ObserveDataEntity" discriminator=""/> + <attribute name="distance" associationType="composite" visibility="public" type="Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="count" associationType="composite" visibility="public" type="Integer" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.longline.EncounterType" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.ActivityLongline" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Species" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + </class> + <class name="CatchLongline" package="fr.ird.observe.entities.longline"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.CommentableEntity" discriminator=""/> + <interface name="fr.ird.observe.entities.longline.LonglinePositionAware"/> + <attribute name="homeId" associationType="composite" visibility="public" type="String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="count" associationType="composite" visibility="public" type="Integer" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="totalWeight" associationType="composite" visibility="public" type="Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="hookWhenDiscarded" associationType="composite" visibility="public" + type="Boolean" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="depredated" associationType="composite" visibility="public" + type="Boolean" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="beatDiameter" associationType="composite" visibility="public" + type="Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="gonadeWeight" associationType="composite" visibility="public" + type="Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="photoReferences" associationType="composite" visibility="public" + type="String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="number" associationType="composite" visibility="public" type="Integer" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="acquisitionMode" associationType="composite" visibility="public" + type="int" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.Basket" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.Branchline" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.longline.CatchFateLongline" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute name="discardHealthness" visibility="public" + type="fr.ird.observe.entities.referentiel.longline.Healthness" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.SizeMeasure" + reverseAttributeName="" + associationType="composite" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + <attribute name="speciesCatch" visibility="public" + type="fr.ird.observe.entities.referentiel.Species" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute name="predator" visibility="public" + type="fr.ird.observe.entities.referentiel.Species" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.SetLongline" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.Section" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.longline.MaturityStatus" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.longline.StomacFullness" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.longline.HookPosition" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.WeightMeasure" + reverseAttributeName="" + associationType="composite" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + <attribute name="catchHealthness" visibility="public" + type="fr.ird.observe.entities.referentiel.longline.Healthness" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Sex" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + </class> + <class name="BranchlinesComposition" package="fr.ird.observe.entities.longline"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.ObserveDataEntity" discriminator=""/> + <attribute name="length" associationType="composite" visibility="public" type="Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="proportion" associationType="composite" visibility="public" + type="Integer" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.SetLongline" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="false" + ordering="unordered"/> + <attribute name="topType" visibility="public" + type="fr.ird.observe.entities.referentiel.longline.LineType" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute name="tracelineType" visibility="public" + type="fr.ird.observe.entities.referentiel.longline.LineType" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + </class> + <class name="Basket" package="fr.ird.observe.entities.longline"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.ObserveDataEntity" discriminator=""/> + <interface name="fr.ird.observe.entities.longline.LonglineCompositionEntity"/> + <attribute name="settingIdentifier" associationType="composite" visibility="public" + type="Integer" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="haulingIdentifier" associationType="composite" visibility="public" + type="Integer" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="floatline1Length" associationType="composite" visibility="public" + type="Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="floatline2Length" associationType="composite" visibility="public" + type="Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.Branchline" + reverseAttributeName="" + associationType="composite" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.Section" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.TdrRecord" + reverseAttributeName="" + associationType="composite" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.CatchLongline" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.Tdr" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + </class> + <class name="Branchline" package="fr.ird.observe.entities.longline"> + <dependency name="constants" + supplierName="fr.ird.observe.entities.longline.BranchlineConstants"/> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.CommentableEntity" discriminator=""/> + <interface name="fr.ird.observe.entities.longline.LonglineCompositionEntity"/> + <attribute name="settingIdentifier" associationType="composite" visibility="public" + type="Integer" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="haulingIdentifier" associationType="composite" visibility="public" + type="Integer" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="depthRecorder" associationType="composite" visibility="public" + type="Boolean" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="timer" associationType="composite" visibility="public" type="Boolean" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="timeSinceContact" associationType="composite" visibility="public" + type="Long" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="hookOffset" associationType="composite" visibility="public" + type="Integer" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="branchlineLength" associationType="composite" visibility="public" + type="Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="weightedSwivel" associationType="composite" visibility="public" + type="Boolean" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="timerTimeOnBoard" associationType="composite" visibility="public" + type="java.util.Date" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="weightedSnap" associationType="composite" visibility="public" + type="Boolean" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="swivelWeight" associationType="composite" visibility="public" + type="Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="snapWeight" associationType="composite" visibility="public" type="Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="tracelineLength" associationType="composite" visibility="public" + type="Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="hookLost" associationType="composite" visibility="public" type="Boolean" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="traceCutOff" associationType="composite" visibility="public" + type="Boolean" + minMultiplicity="1" + maxMultiplicity="1"/> + <operation name="getTimerTimeOnBoardDate" visibility="public"> + <returnParameter type="java.util.Date"/> + </operation> + <operation name="setTimerTimeOnBoardDate" visibility="public"> + <parameter name="timerTimeOnboardDate" type="java.util.Date"/> + </operation> + <operation name="getTimerTimeOnBoardTime" visibility="public"> + <returnParameter type="java.util.Date"/> + </operation> + <operation name="setTimerTimeOnBoardTime" visibility="public"> + <parameter name="timerTimeOnboardTime" type="java.util.Date"/> + </operation> + <attribute visibility="public" type="fr.ird.observe.entities.longline.Basket" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.longline.HookType" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.Tdr" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.CatchLongline" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.longline.BaitType" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute name="topType" visibility="public" + type="fr.ird.observe.entities.referentiel.longline.LineType" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute name="tracelineType" visibility="public" + type="fr.ird.observe.entities.referentiel.longline.LineType" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.longline.BaitSettingStatus" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.longline.BaitHaulingStatus" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.longline.HookSize" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + </class> + <class name="BaitsComposition" package="fr.ird.observe.entities.longline"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.ObserveDataEntity" discriminator=""/> + <attribute name="proportion" associationType="composite" visibility="public" + type="Integer" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="individualSize" associationType="composite" visibility="public" + type="Integer" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="individualWeight" associationType="composite" visibility="public" + type="Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.SetLongline" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.longline.BaitSettingStatus" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.longline.BaitType" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + </class> + <class name="ActivityLongline" package="fr.ird.observe.entities.longline"> + <dependency name="constants" + supplierName="fr.ird.observe.entities.longline.ActivityLonglineConstants"/> + <dependency name="constants" + supplierName="fr.ird.observe.entities.longline.ActivityLonglineConstants"/> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.CommentableEntity" discriminator=""/> + <interface name="fr.ird.observe.entities.Activity"/> + <attribute name="timeStamp" associationType="composite" visibility="public" + type="java.util.Date" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="latitude" associationType="composite" visibility="public" type="Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="longitude" associationType="composite" visibility="public" type="Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="seaSurfaceTemperature" associationType="composite" visibility="public" + type="Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <operation name="getDate" visibility="public"> + <returnParameter type="java.util.Date"/> + </operation> + <operation name="getTime" visibility="public"> + <returnParameter type="java.util.Date"/> + </operation> + <operation name="setDate" visibility="public"> + <parameter name="date" type="java.util.Date"/> + </operation> + <operation name="setTime" visibility="public"> + <parameter name="time" type="java.util.Date"/> + </operation> + <attribute visibility="public" type="fr.ird.observe.entities.longline.TripLongline" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.SetLongline" + reverseAttributeName="" + associationType="composite" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.Encounter" + reverseAttributeName="" + associationType="composite" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.longline.VesselActivityLongline" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.SensorUsed" + reverseAttributeName="" + associationType="composite" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.FpaZone" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + </class> + <class name="WeightMeasure" package="fr.ird.observe.entities.longline"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.ObserveDataEntity" discriminator=""/> + <attribute name="weight" associationType="composite" visibility="public" type="Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.longline.WeightMeasureType" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.CatchLongline" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="false" + ordering="unordered"/> + </class> + <class name="GearUseFeaturesLongline" package="fr.ird.observe.entities.longline"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.CommentableEntity" discriminator=""/> + <attribute name="number" associationType="composite" visibility="public" type="Integer" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="usedInTrip" associationType="composite" visibility="public" + type="Boolean" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.TripLongline" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="false" + ordering="unordered"/> + <attribute name="gearUseFeaturesMeasurement" visibility="public" + type="fr.ird.observe.entities.longline.GearUseFeaturesMeasurementLongline" + reverseAttributeName="" + associationType="composite" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Gear" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + </class> + <class name="GearUseFeaturesMeasurementLongline" + package="fr.ird.observe.entities.longline"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.ObserveDataEntity" discriminator=""/> + <attribute name="measurementValue" associationType="composite" visibility="public" + type="String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute visibility="public" + type="fr.ird.observe.entities.longline.GearUseFeaturesLongline" + reverseAttributeName="gearUseFeaturesMeasurement" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.GearCaracteristic" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + </class> + <interface name="LonglineCompositionEntity" package="fr.ird.observe.entities.longline"> + <operation name="getSettingIdentifier" visibility="public"> + <returnParameter type="Integer"/> + </operation> + <operation name="setSettingIdentifier" visibility="public"> + <returnParameter type=""/> + <parameter name="identifier" type="Integer"/> + </operation> + <operation name="getHaulingIdentifier" visibility="public"> + <returnParameter type="Integer"/> + </operation> + <operation name="setHaulingIdentifier" visibility="public"> + <returnParameter type=""/> + <parameter name="identifier" type="Integer"/> + </operation> + </interface> + <interface name="LonglinePositionAware" package="fr.ird.observe.entities.longline"> + <operation name="getSection" visibility="public"> + <returnParameter type="fr.ird.observe.entities.longline.Section"/> + </operation> + <operation name="setSection" visibility="public"> + <returnParameter type=""/> + <parameter name="section" type="fr.ird.observe.entities.longline.Section"/> + </operation> + <operation name="getBasket" visibility="public"> + <returnParameter type="fr.ird.observe.entities.longline.Basket"/> + </operation> + <operation name="setBasket" visibility="public"> + <returnParameter type=""/> + <parameter name="basket" type="fr.ird.observe.entities.longline.Basket"/> + </operation> + <operation name="getBranchline" visibility="public"> + <returnParameter type="fr.ird.observe.entities.longline.Branchline"/> + </operation> + <operation name="getBranchline" visibility="public"> + <returnParameter type=""/> + <parameter name="branchline" type="fr.ird.observe.entities.longline.Branchline"/> + </operation> + </interface> + <enumeration name="ActivityLonglineConstants" package="fr.ird.observe.entities.longline"> + <literal name="latitudeAsDegre"/> + <literal name="latitudeAsMinute"/> + <literal name="latitudeAsSeconde"/> + <literal name="longitudeAsDegre"/> + <literal name="longitudeAsMinute"/> + <literal name="longitudeAsSeconde"/> + <literal name="useSexagecimalFormat"/> + <literal name="absoluteLongitude"/> + <literal name="absoluteLatitude"/> + <literal name="quadrant"/> + </enumeration> + <enumeration name="ActivityLonglineConstants" package="fr.ird.observe.entities.longline"> + <literal name="date"/> + <literal name="time"/> + </enumeration> + <enumeration name="SetLonglineConstants" package="fr.ird.observe.entities.longline"> + <literal name="settingStartDate"/> + <literal name="settingStartTime"/> + <literal name="settingStartQuadrant"/> + <literal name="settingEndDate"/> + <literal name="settingEndTime"/> + <literal name="settingEndQuadrant"/> + <literal name="haulingStartDate"/> + <literal name="haulingStartTime"/> + <literal name="haulingStartQuadrant"/> + <literal name="haulingEndDate"/> + <literal name="haulingEndTime"/> + <literal name="haulingEndQuadrant"/> + <literal name="floatlinesCompositionProportionSum"/> + <literal name="branchlinesCompositionProportionSum"/> + <literal name="hooksCompositionProportionSum"/> + <literal name="baitsCompositionProportionSum"/> + </enumeration> + <enumeration name="TdrConstants" package="fr.ird.observe.entities.longline"> + <literal name="deployementStartDate"/> + <literal name="deployementStartTime"/> + <literal name="deployementEndDate"/> + <literal name="deployementEndTime"/> + <literal name="fishingStartDate"/> + <literal name="fishingStartTime"/> + <literal name="fishingEndDate"/> + <literal name="fishingEndTime"/> + </enumeration> + <enumeration name="BranchlineConstants" package="fr.ird.observe.entities.longline"> + <literal name="timerTimeOnBoardDate"/> + <literal name="timerTimeOnBoardTime"/> + </enumeration> + <package name="fr.ird.observe.entities.referentiel.longline"/> + <class name="WeightMeasureType" package="fr.ird.observe.entities.referentiel.longline"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.WeightMeasure" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="VesselActivityLongline" + package="fr.ird.observe.entities.referentiel.longline"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.ActivityLongline" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="TripType" package="fr.ird.observe.entities.referentiel.longline"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.TripLongline" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="StomacFullness" package="fr.ird.observe.entities.referentiel.longline"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.CatchLongline" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="SizeMeasureType" package="fr.ird.observe.entities.referentiel.longline"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.SizeMeasure" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="SettingShape" package="fr.ird.observe.entities.referentiel.longline"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.SetLongline" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="SensorType" package="fr.ird.observe.entities.referentiel.longline"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.SensorUsed" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="SensorDataFormat" package="fr.ird.observe.entities.referentiel.longline"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.SensorUsed" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="SensorBrand" package="fr.ird.observe.entities.referentiel.longline"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.ObserveReferentialEntity" + discriminator=""/> + <attribute name="brandName" associationType="composite" visibility="public" type="String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.Tdr" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.SensorUsed" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="MitigationType" package="fr.ird.observe.entities.referentiel.longline"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute name="set" visibility="public" + type="fr.ird.observe.entities.longline.SetLongline" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="MaturityStatus" package="fr.ird.observe.entities.referentiel.longline"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute name="lowerValue" associationType="composite" visibility="public" type="String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="upperValue" associationType="composite" visibility="public" type="String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.CatchLongline" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="LineType" package="fr.ird.observe.entities.referentiel.longline"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute visibility="public" + type="fr.ird.observe.entities.longline.FloatlinesComposition" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.Branchline" + reverseAttributeName="topType" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.SetLongline" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.Branchline" + reverseAttributeName="tracelineType" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.longline.BranchlinesComposition" + reverseAttributeName="topType" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.longline.BranchlinesComposition" + reverseAttributeName="tracelineType" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="LightsticksType" package="fr.ird.observe.entities.referentiel.longline"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.SetLongline" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="LightsticksColor" package="fr.ird.observe.entities.referentiel.longline"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.SetLongline" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="ItemHorizontalPosition" + package="fr.ird.observe.entities.referentiel.longline"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.Tdr" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="ItemVerticalPosition" + package="fr.ird.observe.entities.referentiel.longline"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.Tdr" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="HookType" package="fr.ird.observe.entities.referentiel.longline"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.HooksComposition" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.Branchline" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="Healthness" package="fr.ird.observe.entities.referentiel.longline"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.CatchLongline" + reverseAttributeName="discardHealthness" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.CatchLongline" + reverseAttributeName="catchHealthness" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="EncounterType" package="fr.ird.observe.entities.referentiel.longline"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.Encounter" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="CatchFateLongline" package="fr.ird.observe.entities.referentiel.longline"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.CatchLongline" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="BaitType" package="fr.ird.observe.entities.referentiel.longline"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.BaitsComposition" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.Branchline" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="BaitSettingStatus" package="fr.ird.observe.entities.referentiel.longline"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.BaitsComposition" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.Branchline" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="HookPosition" package="fr.ird.observe.entities.referentiel.longline"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.CatchLongline" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="BaitHaulingStatus" package="fr.ird.observe.entities.referentiel.longline"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.Branchline" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="HookSize" package="fr.ird.observe.entities.referentiel.longline"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.Branchline" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.HooksComposition" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <package name="fr.ird.observe.entities.referentiel"/> + <class name="Species" package="fr.ird.observe.entities.referentiel"> + <attribute visibility="public" type="fr.ird.observe.entities.longline.CatchLongline" + reverseAttributeName="speciesCatch" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.CatchLongline" + reverseAttributeName="predator" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.Tdr" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.Encounter" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.SpeciesList" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.SpeciesGroup" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + </class> + <class name="SpeciesList" package="fr.ird.observe.entities.referentiel"> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Species" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + </class> + <class name="SpeciesGroup" package="fr.ird.observe.entities.referentiel"> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Species" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="Organism" package="fr.ird.observe.entities.referentiel"> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Country" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Program" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="Program" package="fr.ird.observe.entities.referentiel"> + <attribute visibility="public" type="fr.ird.observe.entities.longline.TripLongline" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Organism" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + </class> + <class name="Country" package="fr.ird.observe.entities.referentiel"> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Organism" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Vessel" + reverseAttributeName="flagCountry" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Harbour" + reverseAttributeName="" + navigable="false" + ordering="unordered"/> + </class> + <class name="VesselSizeCategory" package="fr.ird.observe.entities.referentiel"> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Vessel" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="VesselType" package="fr.ird.observe.entities.referentiel"> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Vessel" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="Vessel" package="fr.ird.observe.entities.referentiel"> + <attribute visibility="public" type="fr.ird.observe.entities.longline.TripLongline" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.VesselSizeCategory" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.VesselType" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute name="flagCountry" visibility="public" + type="fr.ird.observe.entities.referentiel.Country" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + </class> + <class name="I18nReferentialEntity" abstract="true" + package="fr.ird.observe.entities.referentiel"> + <superclass name="fr.ird.observe.entities.referentiel.ObserveReferentialEntity" + discriminator=""/> + </class> + <class name="ObserveReferentialEntity" abstract="true" + package="fr.ird.observe.entities.referentiel"/> + <class name="Sex" package="fr.ird.observe.entities.referentiel"> + <attribute visibility="public" type="fr.ird.observe.entities.longline.CatchLongline" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="Person" package="fr.ird.observe.entities.referentiel"> + <attribute visibility="public" type="fr.ird.observe.entities.longline.TripLongline" + reverseAttributeName="observer" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.TripLongline" + reverseAttributeName="captain" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.TripLongline" + reverseAttributeName="dataEntryOperator" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="FpaZone" package="fr.ird.observe.entities.referentiel"> + <attribute visibility="public" type="fr.ird.observe.entities.longline.ActivityLongline" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="Ocean" package="fr.ird.observe.entities.referentiel"> + <attribute visibility="public" type="fr.ird.observe.entities.longline.TripLongline" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="Harbour" package="fr.ird.observe.entities.referentiel"> + <attribute visibility="public" type="fr.ird.observe.entities.longline.TripLongline" + reverseAttributeName="departureHarbour" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.longline.TripLongline" + reverseAttributeName="landingHarbour" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Country" + reverseAttributeName="" + navigable="true" + ordering="unordered"/> + </class> + <class name="Gear" package="fr.ird.observe.entities.referentiel"> + <attribute visibility="public" + type="fr.ird.observe.entities.longline.GearUseFeaturesLongline" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.GearCaracteristic" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + </class> + <class name="GearCaracteristic" package="fr.ird.observe.entities.referentiel"> + <attribute visibility="public" + type="fr.ird.observe.entities.longline.GearUseFeaturesMeasurementLongline" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Gear" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <package name="fr.ird.observe.entities"/> + <class name="CommentableEntity" abstract="true" package="fr.ird.observe.entities"> + <superclass name="fr.ird.observe.entities.ObserveDataEntity" discriminator=""/> + </class> + <class name="ObserveEntity" abstract="true" package="fr.ird.observe.entities"/> + <class name="ObserveDataEntity" abstract="true" package="fr.ird.observe.entities"/> + <interface name="Trip" package="fr.ird.observe.entities"/> + <interface name="Activity" package="fr.ird.observe.entities"/> + <interface name="ObserveSet" package="fr.ird.observe.entities"/> +</objectModel> \ No newline at end of file diff --git a/eugene-editor-maven-plugin/src/test/resources/observe-entities/observe-seine.objectmodel b/eugene-editor-maven-plugin/src/test/resources/observe-entities/observe-seine.objectmodel new file mode 100644 index 0000000..1cf5028 --- /dev/null +++ b/eugene-editor-maven-plugin/src/test/resources/observe-entities/observe-seine.objectmodel @@ -0,0 +1,1677 @@ +<?xml version="1.0" encoding="UTF-8"?> +<objectModel xmlns="http://nuiton.org/eugene/objectModel/v1" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://nuiton.org/eugene/objectModel/v1 http://doc.nuiton.org/eugene/xsd/v1/objectmodel.xsd" + name="Observe" + version="1.9.1"> + <package name="fr.ird.observe.entities.seine"/> + <class name="TripSeine" package="fr.ird.observe.entities.seine"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.CommentableEntity" discriminator=""/> + <interface name="fr.ird.observe.entities.Trip"/> + <attribute name="startDate" associationType="composite" visibility="public" + type="java.util.Date" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="endDate" associationType="composite" visibility="public" + type="java.util.Date" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="checkLevel" associationType="composite" visibility="public" type="int" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="formsUrl" associationType="composite" visibility="public" + type="java.lang.String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="reportsUrl" associationType="composite" visibility="public" + type="java.lang.String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="historicalData" associationType="composite" visibility="public" + type="boolean" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="ersId" associationType="composite" visibility="public" + type="java.lang.String" + minMultiplicity="1" + maxMultiplicity="1"/> + <operation name="getObserverLabel" visibility="public"> + <returnParameter type="java.lang.String"/> + </operation> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Ocean" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.Route" + reverseAttributeName="" + associationType="composite" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"> + <tagValue name="orderBy" value="date"/> + </attribute> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Vessel" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Program" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute name="observer" visibility="public" + type="fr.ird.observe.entities.referentiel.Person" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute name="captain" visibility="public" + type="fr.ird.observe.entities.referentiel.Person" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute name="dataEntryOperator" visibility="public" + type="fr.ird.observe.entities.referentiel.Person" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute name="departureHarbour" visibility="public" + type="fr.ird.observe.entities.referentiel.Harbour" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute name="landingHarbour" visibility="public" + type="fr.ird.observe.entities.referentiel.Harbour" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.GearUseFeaturesSeine" + reverseAttributeName="" + associationType="composite" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + </class> + <class name="TargetCatch" package="fr.ird.observe.entities.seine"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.CommentableEntity" discriminator=""/> + <attribute name="catchWeight" associationType="composite" visibility="public" + type="java.lang.Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="well" associationType="composite" visibility="public" + type="java.lang.String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="broughtOnDeck" associationType="composite" visibility="public" + type="java.lang.Boolean" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="discarded" associationType="composite" visibility="public" type="boolean" + minMultiplicity="1" + maxMultiplicity="1"/> + <operation name="getSpecies" visibility="public"> + <returnParameter type="fr.ird.observe.entities.referentiel.Species"/> + </operation> + <operation name="setSpecies" visibility="public"> + <returnParameter type="void"/> + <parameter name="species" type="fr.ird.observe.entities.referentiel.Species"/> + </operation> + <attribute visibility="public" type="fr.ird.observe.entities.seine.SetSeine" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.seine.WeightCategory" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.seine.ReasonForDiscard" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + </class> + <class name="SchoolEstimate" package="fr.ird.observe.entities.seine"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.ObserveDataEntity" discriminator=""/> + <attribute name="totalWeight" associationType="composite" visibility="public" + type="java.lang.Integer" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="meanWeight" associationType="composite" visibility="public" + type="java.lang.Integer" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.SetSeine" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Species" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + </class> + <class name="TransmittingBuoy" package="fr.ird.observe.entities.seine"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.ObserveDataEntity" discriminator=""/> + <attribute name="code" associationType="composite" visibility="public" + type="java.lang.String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="brand" associationType="composite" visibility="public" + type="java.lang.String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="ownership" associationType="composite" visibility="public" + type="fr.ird.observe.entities.constants.seine.OwnershipPersist" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.FloatingObject" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.seine.TransmittingBuoyType" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.seine.TransmittingBuoyOperation" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Country" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + </class> + <class name="TargetSample" package="fr.ird.observe.entities.seine"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.CommentableEntity" discriminator=""/> + <attribute name="nature" associationType="composite" visibility="public" + type="java.lang.String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="discarded" associationType="composite" visibility="public" + type="java.lang.Boolean" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.SetSeine" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.TargetLength" + reverseAttributeName="" + associationType="composite" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + </class> + <class name="TargetLength" package="fr.ird.observe.entities.seine"> + <dependency name="constants" + supplierName="fr.ird.observe.entities.seine.TargetLengthConstants"/> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.ObserveDataEntity" discriminator=""/> + <interface name="fr.ird.observe.entities.LengthWeightComputable"/> + <attribute name="measureType" associationType="composite" visibility="public" type="int" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="length" associationType="composite" visibility="public" + type="java.lang.Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="lengthSource" associationType="composite" visibility="public" + type="boolean" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="count" associationType="composite" visibility="public" + type="java.lang.Integer" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="weight" associationType="composite" visibility="public" + type="java.lang.Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="weightSource" associationType="composite" visibility="public" + type="boolean" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="acquisitionMode" associationType="composite" visibility="public" + type="int" + minMultiplicity="1" + maxMultiplicity="1"/> + <operation name="getTotalWeight" visibility="public"> + <tagValue name="documentation" + value="Pour obtenir la valeur du weight total échantillonné (uniquement si un poids individuel et un count est renseigné)"/> + <returnParameter type="java.lang.Float"/> + </operation> + <attribute visibility="public" type="fr.ird.observe.entities.seine.TargetSample" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Species" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + </class> + <class name="SetSeine" package="fr.ird.observe.entities.seine"> + <dependency name="constants" supplierName="fr.ird.observe.entities.seine.SetConstants"/> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.CommentableEntity" discriminator=""/> + <interface name="fr.ird.observe.entities.ObserveSet"/> + <attribute name="startTime" associationType="composite" visibility="public" + type="java.util.Date" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="endPursingTimeStamp" associationType="composite" visibility="public" + type="java.util.Date" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="endSetTimeStamp" associationType="composite" visibility="public" + type="java.util.Date" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="maxGearDepth" associationType="composite" visibility="public" + type="java.lang.Integer" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="currentSpeed" associationType="composite" visibility="public" + type="java.lang.Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="currentDirection" associationType="composite" visibility="public" + type="java.lang.Integer" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="schoolTopDepth" associationType="composite" visibility="public" + type="java.lang.Integer" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="schoolMeanDepth" associationType="composite" visibility="public" + type="java.lang.Integer" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="schoolThickness" associationType="composite" visibility="public" + type="java.lang.Integer" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="sonarUsed" associationType="composite" visibility="public" type="boolean" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="supportVesselName" associationType="composite" visibility="public" + type="java.lang.String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="targetDiscarded" associationType="composite" visibility="public" + type="java.lang.Boolean" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="nonTargetDiscarded" associationType="composite" visibility="public" + type="java.lang.Boolean" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="currentMeasureDepth" associationType="composite" visibility="public" + type="java.lang.Integer" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="schoolType" associationType="composite" visibility="public" + type="fr.ird.observe.entities.constants.seine.SchoolTypePersist" + minMultiplicity="1" + maxMultiplicity="1"/> + <operation name="hasTargetCatch" visibility="public"> + <returnParameter type="boolean"/> + </operation> + <operation name="hasRejetThon" visibility="public"> + <returnParameter type="boolean"/> + </operation> + <operation name="canUseTargetSample" visibility="public"> + <returnParameter type="boolean"/> + <parameter name="discarded" type="boolean"/> + </operation> + <operation name="canUseNonTargetSample" visibility="public"> + <returnParameter type="boolean"/> + </operation> + <operation name="getTargetSample" visibility="public"> + <returnParameter type="fr.ird.observe.entities.seine.TargetSample"/> + <parameter name="discarded" type="boolean"/> + </operation> + <operation name="isFreeSchoolType" visibility="public"> + <returnParameter type="boolean"/> + </operation> + <operation name="isSchoolObjectType" visibility="public"> + <returnParameter type="boolean"/> + </operation> + <operation name="isUnknownSchoolType" visibility="public"> + <returnParameter type="boolean"/> + </operation> + <operation name="setEndSetDate" visibility="public"> + <returnParameter type="void"/> + <parameter name="endSetDate" type="java.util.Date"/> + </operation> + <operation name="setEndPursingDate" visibility="public"> + <returnParameter type="void"/> + <parameter name="endPursingDate" type="java.util.Date"/> + </operation> + <operation name="getEndSetDate" visibility="public"> + <returnParameter type="java.util.Date"/> + </operation> + <operation name="getEndPursingDate" visibility="public"> + <returnParameter type="java.util.Date"/> + </operation> + <operation name="getEndSetTime" visibility="public"> + <returnParameter type="java.util.Date"/> + </operation> + <operation name="setEndSetTime" visibility="public"> + <returnParameter type="void"/> + <parameter name="endSetTime" type="java.util.Date"/> + </operation> + <operation name="getEndPursingTime" visibility="public"> + <returnParameter type="java.util.Date"/> + </operation> + <operation name="setEndPursingTime" visibility="public"> + <returnParameter type="void"/> + <parameter name="endPursingTime" type="java.util.Date"/> + </operation> + <attribute visibility="public" type="fr.ird.observe.entities.seine.NonTargetCatch" + reverseAttributeName="" + associationType="composite" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.seine.ReasonForNullSet" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.NonTargetSample" + reverseAttributeName="" + associationType="composite" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.TargetSample" + reverseAttributeName="" + associationType="composite" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.TargetCatch" + reverseAttributeName="" + associationType="composite" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.ActivitySeine" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.SchoolEstimate" + reverseAttributeName="" + associationType="composite" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + </class> + <class name="Route" package="fr.ird.observe.entities.seine"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.CommentableEntity" discriminator=""/> + <attribute name="date" associationType="composite" visibility="public" + type="java.util.Date" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="startLogValue" associationType="composite" visibility="public" + type="java.lang.Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="endLogValue" associationType="composite" visibility="public" + type="java.lang.Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="checkLevel" associationType="composite" visibility="public" type="int" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.ActivitySeine" + reverseAttributeName="" + associationType="composite" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.TripSeine" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="false" + ordering="unordered"/> + </class> + <class name="ObjectSchoolEstimate" package="fr.ird.observe.entities.seine"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.ObserveDataEntity" discriminator=""/> + <attribute name="totalWeight" associationType="composite" visibility="public" + type="java.lang.Integer" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.FloatingObject" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Species" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + </class> + <class name="ObjectObservedSpecies" package="fr.ird.observe.entities.seine"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.ObserveDataEntity" discriminator=""/> + <attribute name="count" associationType="composite" visibility="public" + type="java.lang.Integer" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="statut" associationType="composite" visibility="public" + type="java.lang.Integer" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.FloatingObject" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Species" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.seine.SpeciesStatus" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + </class> + <class name="NonTargetSample" package="fr.ird.observe.entities.seine"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.CommentableEntity" discriminator=""/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.SetSeine" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.NonTargetLength" + reverseAttributeName="" + associationType="composite" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + </class> + <class name="NonTargetLength" package="fr.ird.observe.entities.seine"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.ObserveDataEntity" discriminator=""/> + <interface name="fr.ird.observe.entities.LengthWeightComputable"/> + <attribute name="length" associationType="composite" visibility="public" + type="java.lang.Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="lengthSource" associationType="composite" visibility="public" + type="boolean" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="picturesReferences" associationType="composite" visibility="public" + type="java.lang.String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="weight" associationType="composite" visibility="public" + type="java.lang.Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="weightSource" associationType="composite" visibility="public" + type="boolean" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="count" associationType="composite" visibility="public" + type="java.lang.Integer" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="acquisitionMode" associationType="composite" visibility="public" + type="int" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.NonTargetSample" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Species" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Sex" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + </class> + <class name="NonTargetCatch" package="fr.ird.observe.entities.seine"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.CommentableEntity" discriminator=""/> + <interface name="fr.ird.observe.entities.LengthWeightComputable"/> + <attribute name="catchWeight" associationType="composite" visibility="public" + type="java.lang.Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="catchWeightComputedSource" associationType="composite" + visibility="public" + type="fr.ird.observe.entities.constants.seine.NonTargetCatchComputedValueSourcePersist" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="meanWeight" associationType="composite" visibility="public" + type="java.lang.Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="meanWeightComputedSource" associationType="composite" visibility="public" + type="fr.ird.observe.entities.constants.seine.NonTargetCatchComputedValueSourcePersist" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="meanLength" associationType="composite" visibility="public" + type="java.lang.Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="meanLengthComputedSource" associationType="composite" visibility="public" + type="fr.ird.observe.entities.constants.seine.NonTargetCatchComputedValueSourcePersist" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="totalCount" associationType="composite" visibility="public" + type="java.lang.Integer" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="totalCountComputedSource" associationType="composite" visibility="public" + type="fr.ird.observe.entities.constants.seine.NonTargetCatchComputedValueSourcePersist" + minMultiplicity="1" + maxMultiplicity="1"/> + <operation name="isCatchWeightComputed" visibility="public"> + <returnParameter type="boolean"/> + </operation> + <operation name="isMeanWeightComputed" visibility="public"> + <returnParameter type="boolean"/> + </operation> + <operation name="isTotalCountComputed" visibility="public"> + <returnParameter type="boolean"/> + </operation> + <operation name="isMeanLengthComputed" visibility="public"> + <returnParameter type="boolean"/> + </operation> + <attribute visibility="public" type="fr.ird.observe.entities.seine.SetSeine" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.seine.ReasonForDiscard" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Species" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.seine.SpeciesFate" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + </class> + <class name="FloatingObject" package="fr.ird.observe.entities.seine"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.CommentableEntity" discriminator=""/> + <attribute name="daysAtSeaCount" associationType="composite" visibility="public" + type="java.lang.Integer" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="supportVesselName" associationType="composite" visibility="public" + type="java.lang.String" + minMultiplicity="1" + maxMultiplicity="1"/> + <operation name="getTypeTransmittingBuoyOperation" visibility="public"> + <returnParameter type="fr.ird.observe.entities.constants.seine.TypeTransmittingBuoyOperationPersist"/> + </operation> + <attribute visibility="public" type="fr.ird.observe.entities.seine.ActivitySeine" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.ObjectSchoolEstimate" + reverseAttributeName="" + associationType="composite" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.ObjectObservedSpecies" + reverseAttributeName="" + associationType="composite" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.seine.ObjectType" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.seine.ObjectOperation" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.seine.ObjectFate" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.TransmittingBuoy" + reverseAttributeName="" + associationType="composite" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + </class> + <class name="ActivitySeine" package="fr.ird.observe.entities.seine"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.CommentableEntity" discriminator=""/> + <interface name="fr.ird.observe.entities.Activity"/> + <attribute name="time" associationType="composite" visibility="public" + type="java.util.Date" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="latitude" associationType="composite" visibility="public" + type="java.lang.Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="longitude" associationType="composite" visibility="public" + type="java.lang.Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="vesselSpeed" associationType="composite" visibility="public" + type="java.lang.Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="seaSurfaceTemperature" associationType="composite" visibility="public" + type="java.lang.Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="observedSystemDistance" associationType="composite" visibility="public" + type="java.lang.Float" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="ersId" associationType="composite" visibility="public" + type="java.lang.String" + minMultiplicity="1" + maxMultiplicity="1"/> + <operation name="isDCPOperation" visibility="public"> + <returnParameter type="boolean"/> + </operation> + <operation name="isSetOperation" visibility="public"> + <returnParameter type="boolean"/> + </operation> + <operation name="isObservedSystemOperation" visibility="public"> + <returnParameter type="boolean"/> + </operation> + <operation name="getSchoolType" visibility="public"> + <returnParameter type="fr.ird.observe.entities.constants.seine.SchoolTypePersist"/> + </operation> + <operation name="isActivityFinDeVeille" visibility="public"> + <returnParameter type="boolean"/> + </operation> + <operation name="isActivityDebutDePechePositive" visibility="public"> + <returnParameter type="boolean"/> + </operation> + <operation name="isActivityFinDePeche" visibility="public"> + <returnParameter type="boolean"/> + </operation> + <operation name="isChangedZoneOperation" visibility="public"> + <returnParameter type="boolean"/> + </operation> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.seine.VesselActivitySeine" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.seine.SurroundingActivity" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.seine.Wind" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.seine.DetectionMode" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.seine.ReasonForNoFishing" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.Route" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.FloatingObject" + reverseAttributeName="" + associationType="composite" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.seine.ObservedSystem" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.SetSeine" + reverseAttributeName="" + associationType="composite" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute name="currentFpaZone" visibility="public" + type="fr.ird.observe.entities.referentiel.FpaZone" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute name="previousFpaZone" visibility="public" + type="fr.ird.observe.entities.referentiel.FpaZone" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute name="nextFpaZone" visibility="public" + type="fr.ird.observe.entities.referentiel.FpaZone" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + </class> + <class name="GearUseFeaturesSeine" package="fr.ird.observe.entities.seine"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.CommentableEntity" discriminator=""/> + <attribute name="number" associationType="composite" visibility="public" + type="java.lang.Integer" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="usedInTrip" associationType="composite" visibility="public" + type="Boolean" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.TripSeine" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Gear" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute name="gearUseFeaturesMeasurement" visibility="public" + type="fr.ird.observe.entities.seine.GearUseFeaturesMeasurementSeine" + reverseAttributeName="" + associationType="composite" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + </class> + <class name="GearUseFeaturesMeasurementSeine" package="fr.ird.observe.entities.seine"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.ObserveDataEntity" discriminator=""/> + <attribute name="measurementValue" associationType="composite" visibility="public" + type="java.lang.String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.GearUseFeaturesSeine" + reverseAttributeName="gearUseFeaturesMeasurement" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.GearCaracteristic" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + </class> + <enumeration name="TargetLengthConstants" package="fr.ird.observe.entities.seine"> + <literal name="totalWeight"/> + </enumeration> + <enumeration name="SetConstants" package="fr.ird.observe.entities.seine"> + <literal name="targetSampleCapture"/> + <literal name="endSetDate"/> + <literal name="endPursingDate"/> + <literal name="endSetTime"/> + <literal name="endPursingTime"/> + </enumeration> + <package name="java"/> + <package name="org"/> + <package name="fr.ird.observe.entities.referentiel.seine"/> + <class name="VesselActivitySeine" package="fr.ird.observe.entities.referentiel.seine"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.ActivitySeine" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="Wind" package="fr.ird.observe.entities.referentiel.seine"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute name="speedRange" associationType="composite" visibility="public" + type="java.lang.String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute name="waveHeight" associationType="composite" visibility="public" + type="java.lang.String" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.ActivitySeine" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="WeightCategory" package="fr.ird.observe.entities.referentiel.seine"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.TargetCatch" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Species" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + </class> + <class name="TransmittingBuoyType" package="fr.ird.observe.entities.referentiel.seine"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.TransmittingBuoy" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="TransmittingBuoyOperation" + package="fr.ird.observe.entities.referentiel.seine"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.TransmittingBuoy" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="SurroundingActivity" package="fr.ird.observe.entities.referentiel.seine"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.ActivitySeine" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="SpeciesStatus" package="fr.ird.observe.entities.referentiel.seine"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.ObjectObservedSpecies" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="SpeciesFate" package="fr.ird.observe.entities.referentiel.seine"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.NonTargetCatch" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="ReasonForNullSet" package="fr.ird.observe.entities.referentiel.seine"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.SetSeine" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="ReasonForNoFishing" package="fr.ird.observe.entities.referentiel.seine"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.ActivitySeine" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="ReasonForDiscard" package="fr.ird.observe.entities.referentiel.seine"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.TargetCatch" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.NonTargetCatch" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="ObservedSystem" package="fr.ird.observe.entities.referentiel.seine"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute name="schoolType" associationType="composite" visibility="public" + type="fr.ird.observe.entities.constants.seine.SchoolTypePersist" + minMultiplicity="1" + maxMultiplicity="1"/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.ActivitySeine" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="ObjectType" package="fr.ird.observe.entities.referentiel.seine"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.FloatingObject" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="ObjectOperation" package="fr.ird.observe.entities.referentiel.seine"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.FloatingObject" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="ObjectFate" package="fr.ird.observe.entities.referentiel.seine"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.FloatingObject" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="DetectionMode" package="fr.ird.observe.entities.referentiel.seine"> + <stereotype name="entity"/> + <superclass name="fr.ird.observe.entities.referentiel.I18nReferentialEntity" + discriminator=""/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.ActivitySeine" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <package name="fr.ird.observe.entities.referentiel"/> + <class name="Vessel" package="fr.ird.observe.entities.referentiel"> + <attribute visibility="public" type="fr.ird.observe.entities.seine.TripSeine" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.VesselSizeCategory" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.VesselType" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute name="flagCountry" visibility="public" + type="fr.ird.observe.entities.referentiel.Country" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + </class> + <class name="VesselType" package="fr.ird.observe.entities.referentiel"> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Vessel" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="VesselSizeCategory" package="fr.ird.observe.entities.referentiel"> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Vessel" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="Species" package="fr.ird.observe.entities.referentiel"> + <attribute visibility="public" type="fr.ird.observe.entities.seine.NonTargetCatch" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.ObjectObservedSpecies" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.NonTargetLength" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.TargetLength" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.ObjectSchoolEstimate" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.SchoolEstimate" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.seine.WeightCategory" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.SpeciesGroup" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.LengthWeightParameter" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Ocean" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.SpeciesList" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="SpeciesList" package="fr.ird.observe.entities.referentiel"> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Species" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + </class> + <class name="SpeciesGroup" package="fr.ird.observe.entities.referentiel"> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Species" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="ObserveReferentialEntity" abstract="true" + package="fr.ird.observe.entities.referentiel"/> + <class name="Program" package="fr.ird.observe.entities.referentiel"> + <attribute visibility="public" type="fr.ird.observe.entities.seine.TripSeine" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Organism" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + </class> + <class name="Person" package="fr.ird.observe.entities.referentiel"> + <attribute visibility="public" type="fr.ird.observe.entities.seine.TripSeine" + reverseAttributeName="observer" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.TripSeine" + reverseAttributeName="captain" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.TripSeine" + reverseAttributeName="dataEntryOperator" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="Ocean" package="fr.ird.observe.entities.referentiel"> + <attribute visibility="public" type="fr.ird.observe.entities.seine.TripSeine" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.LengthWeightParameter" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Species" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="Organism" package="fr.ird.observe.entities.referentiel"> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Program" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Country" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + </class> + <class name="I18nReferentialEntity" abstract="true" + package="fr.ird.observe.entities.referentiel"> + <superclass name="fr.ird.observe.entities.referentiel.ObserveReferentialEntity" + discriminator=""/> + </class> + <class name="Country" package="fr.ird.observe.entities.referentiel"> + <attribute visibility="public" type="fr.ird.observe.entities.seine.TransmittingBuoy" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Organism" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Vessel" + reverseAttributeName="flagCountry" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="LengthWeightAble" abstract="true" + package="fr.ird.observe.entities.referentiel"/> + <class name="LengthWeightParameter" package="fr.ird.observe.entities.referentiel"> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Ocean" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Species" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Sex" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="1" + maxMultiplicity="1" + navigable="true" + ordering="unordered"/> + </class> + <class name="Sex" package="fr.ird.observe.entities.referentiel"> + <attribute visibility="public" type="fr.ird.observe.entities.seine.NonTargetLength" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.LengthWeightParameter" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="FpaZone" package="fr.ird.observe.entities.referentiel"> + <attribute visibility="public" type="fr.ird.observe.entities.seine.ActivitySeine" + reverseAttributeName="currentFpaZone" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.ActivitySeine" + reverseAttributeName="previousFpaZone" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.ActivitySeine" + reverseAttributeName="nextFpaZone" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="Harbour" package="fr.ird.observe.entities.referentiel"> + <attribute visibility="public" type="fr.ird.observe.entities.seine.TripSeine" + reverseAttributeName="departureHarbour" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.seine.TripSeine" + reverseAttributeName="landingHarbour" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <class name="Gear" package="fr.ird.observe.entities.referentiel"> + <attribute visibility="public" type="fr.ird.observe.entities.seine.GearUseFeaturesSeine" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" + type="fr.ird.observe.entities.referentiel.GearCaracteristic" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="true" + ordering="unordered"/> + </class> + <class name="GearCaracteristic" package="fr.ird.observe.entities.referentiel"> + <attribute visibility="public" + type="fr.ird.observe.entities.seine.GearUseFeaturesMeasurementSeine" + reverseAttributeName="" + reverseMaxMultiplicity="1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + <attribute visibility="public" type="fr.ird.observe.entities.referentiel.Gear" + reverseAttributeName="" + reverseMaxMultiplicity="-1" + minMultiplicity="0" + maxMultiplicity="-1" + navigable="false" + ordering="unordered"/> + </class> + <package name="fr.ird.observe.entities"/> + <class name="CommentableEntity" abstract="true" package="fr.ird.observe.entities"> + <superclass name="fr.ird.observe.entities.ObserveDataEntity" discriminator=""/> + </class> + <class name="ObserveDataEntity" abstract="true" package="fr.ird.observe.entities"/> + <interface name="LengthWeightComputable" package="fr.ird.observe.entities"> + <tagValue name="documentation" + value="Pour les entités dont on peut calculer la taille ou le weight à partir de l'autre valeurs. <p/> Si les deux valeurs sont saisies par l'observer, alors on ne fait rien. </p> Les indicateurs {@link #isLengthSource()} et {@link #isWeightSource()} permettent de savoir une fois les calculs effectués, ce qui a été calculé et ce qui a été saisi."/> + <tagValue name="author" value="chemit (chemit@codelutin.com)"/> + <tagValue name="version" value=""/> + <tagValue name="since" value="1.5"/> + <operation name="getLength" visibility="public"> + <returnParameter type="java.lang.Float"/> + </operation> + <operation name="setLength" visibility="public"> + <returnParameter type="void"/> + <parameter name="length" type="java.lang.Float"/> + </operation> + <operation name="isLengthSource" visibility="public"> + <returnParameter type="boolean"/> + </operation> + <operation name="setLengthSource" visibility="public"> + <returnParameter type="void"/> + <parameter name="lengthSource" type="boolean"/> + </operation> + <operation name="getWeight" visibility="public"> + <returnParameter type="java.lang.Float"/> + </operation> + <operation name="setWeight" visibility="public"> + <returnParameter type="void"/> + <parameter name="weight" type="java.lang.Float"/> + </operation> + <operation name="isWeightSource" visibility="public"> + <returnParameter type="boolean"/> + </operation> + <operation name="setWeightSource" visibility="public"> + <returnParameter type="void"/> + <parameter name="weightSource" type="boolean"/> + </operation> + </interface> + <interface name="Trip" package="fr.ird.observe.entities"/> + <interface name="Activity" package="fr.ird.observe.entities"/> + <interface name="ObserveSet" package="fr.ird.observe.entities"/> + <package name="fr.ird.observe.entities.constants.seine"/> + <enumeration name="OwnershipPersist" package="fr.ird.observe.entities.constants.seine"/> + <enumeration name="SchoolTypePersist" package="fr.ird.observe.entities.constants.seine"/> + <enumeration name="TypeTransmittingBuoyOperationPersist" + package="fr.ird.observe.entities.constants.seine"/> + <enumeration name="NonTargetCatchComputedValueSourcePersist" + package="fr.ird.observe.entities.constants.seine"> + <literal name="FROM_DATA"/> + <literal name="FROM_SAMPLE"/> + <literal name="FROM_REFERENTIEL"/> + </enumeration> +</objectModel> \ No newline at end of file diff --git a/eugene-editor-maven-plugin/src/test/resources/observe-entities/observe.objectmodel-ext b/eugene-editor-maven-plugin/src/test/resources/observe-entities/observe.objectmodel-ext new file mode 100644 index 0000000..c3ad97f --- /dev/null +++ b/eugene-editor-maven-plugin/src/test/resources/observe-entities/observe.objectmodel-ext @@ -0,0 +1,248 @@ +[model] +attributeType.Boolean java.lang.Boolean +attributeType.Float java.lang.Float +attributeType.Integer java.lang.Integer +attributeType.Long java.lang.Long +attributeType.String java.lang.String +generateForeignKeyNames true +generateOperatorForDAOHelper true +generatePropertyChangeSupport true +indexForeignKeys true +notGenerateToString true +useEnumerationName false +version @observe.model.version@ + +[package] +fr.ird.observe.entities + dbSchema OBSERVE_COMMON +fr.ird.observe.entities.longline + dbSchema OBSERVE_LONGLINE +fr.ird.observe.entities.referentiel + dbSchema OBSERVE_COMMON +fr.ird.observe.entities.referentiel.longline + dbSchema OBSERVE_LONGLINE +fr.ird.observe.entities.referentiel.seine + dbSchema OBSERVE_SEINE +fr.ird.observe.entities.seine + dbSchema OBSERVE_SEINE + +[class] +fr.ird.observe.entities.CommentableEntity + comment.hibernateAttributeType text +fr.ird.observe.entities.ObserveEntity + lastUpdateDate.notNull true +fr.ird.observe.entities.longline.ActivityLongline + dbName Activity + encounter.reverseDbName activity + sensorUsed.reverseDbName activity + setLongline.dbName set + vesselActivityLongline.dbName vesselActivity + vesselActivityLongline.lazy false +fr.ird.observe.entities.longline.Basket + branchline.orderBy settingIdentifier + settingIdentifier.notNull true + branchline.unique +fr.ird.observe.entities.longline.Branchline + branchlineLength.sqlType numeric + catchLongline.dbName catch + hookSize.sqlType numeric + settingIdentifier.notNull true + snapWeight.sqlType numeric + swivelWeight.sqlType numeric + tracelineLength.sqlType numeric +fr.ird.observe.entities.longline.BranchlinesComposition + length.sqlType numeric +fr.ird.observe.entities.longline.CatchLongline + dbName Catch + beatDiameter.sqlType numeric + catchFateLongline.dbName catchFate + gonadeWeight.sqlType numeric + predator.manyToManyTableName catch_predator + predator.reverseDbName catch + sizeMeasure.reverseDbName catch + totalWeight.sqlType numeric + weightMeasure.reverseDbName catch +fr.ird.observe.entities.longline.Encounter + distance.sqlType numeric +fr.ird.observe.entities.longline.FloatlinesComposition + length.sqlType numeric +fr.ird.observe.entities.longline.GearUseFeaturesLongline + dbName GearUseFeatures + gearUseFeaturesMeasurement.orderBy topiaCreateDate + gearUseFeaturesMeasurement.reverseDbName gearUseFeatures + gearUseFeaturesMeasurement.unique +fr.ird.observe.entities.longline.GearUseFeaturesMeasurementLongline + dbName GearUseFeaturesMeasurement + gearCaracteristic.notNull true +fr.ird.observe.entities.longline.HooksComposition + hookSize.sqlType numeric +fr.ird.observe.entities.longline.Section + basket.orderBy settingIdentifier + setLongline.dbName set + settingIdentifier.notNull true + basket.unique +fr.ird.observe.entities.longline.SetLongline + dbName Set + baitsComposition.reverseDbName set + branchlinesComposition.reverseDbName set + catchLongline.reverseDbName set + floatlinesComposition.reverseDbName set + haulingEndLatitude.sqlType numeric + haulingEndLongitude.sqlType numeric + haulingStartLatitude.sqlType numeric + haulingStartLongitude.sqlType numeric + hooksComposition.reverseDbName set + mitigationType.manyToManyTableName mitigationtype_set + mitigationType.reverseDbName set + section.orderBy settingIdentifier + section.reverseDbName set + settingEndLatitude.sqlType numeric + settingEndLongitude.sqlType numeric + settingStartLatitude.sqlType numeric + settingStartLongitude.sqlType numeric + settingVesselSpeed.sqlType numeric + shooterSpeed.sqlType numeric + snapWeight.sqlType numeric + swivelWeight.sqlType numeric + tdr.reverseDbName set + catchLongline.unique + section.unique +fr.ird.observe.entities.longline.SizeMeasure + size.sqlType numeric +fr.ird.observe.entities.longline.Tdr + floatline1Length.sqlType numeric + floatline2Length.sqlType numeric +fr.ird.observe.entities.longline.TdrRecord + depth.sqlType numeric + temperature.sqlType numeric +fr.ird.observe.entities.longline.TripLongline + dbName Trip + activityLongline.reverseDbName trip + gearUseFeaturesLongline.orderBy topiaCreateDate + gearUseFeaturesLongline.reverseDbName trip + activityLongline.unique + gearUseFeaturesLongline.unique +fr.ird.observe.entities.longline.WeightMeasure + weight.sqlType numeric +fr.ird.observe.entities.referentiel.Gear + gearCaracteristic.lazy false +fr.ird.observe.entities.referentiel.GearCaracteristic + gearCaracteristicType.lazy false +fr.ird.observe.entities.referentiel.LengthWeightParameter + ocean.lazy false + ocean.notNull true + sex.lazy false + sex.notNull true + species.lazy false + species.notNull true +fr.ird.observe.entities.referentiel.Organism + country.lazy false +fr.ird.observe.entities.referentiel.Program + comment.hibernateAttributeType text + organism.lazy false +fr.ird.observe.entities.referentiel.Species + maxLength.sqlType numeric + maxWeight.sqlType numeric + minLength.sqlType numeric + minWeight.sqlType numeric + ocean.lazy false + speciesGroup.lazy false +fr.ird.observe.entities.referentiel.SpeciesList + species.lazy false +fr.ird.observe.entities.referentiel.Vessel + capacity.sqlType numeric + comment.hibernateAttributeType text + flagCountry.lazy false + length.sqlType numeric + searchMaximum.sqlType numeric + vesselSizeCategory.lazy false + vesselType.lazy false +fr.ird.observe.entities.referentiel.longline.CatchFateLongline + dbName CatchFate +fr.ird.observe.entities.referentiel.longline.VesselActivityLongline + dbName VesselActivity +fr.ird.observe.entities.referentiel.seine.VesselActivitySeine + dbName VesselActivity +fr.ird.observe.entities.referentiel.seine.WeightCategory + species.lazy false +fr.ird.observe.entities.seine.ActivitySeine + dbName Activity + floatingObject.reverseDbName activity + latitude.sqlType numeric + longitude.sqlType numeric + observedSystem.manyToManyTableName activity_observedSystem + observedSystem.reverseDbName activity + observedSystemDistance.sqlType numeric + seaSurfaceTemperature.sqlType numeric + setSeine.dbName set + time.hibernateAttributeType.java.util.Date time + vesselActivitySeine.dbName vesselActivity + vesselSpeed.sqlType numeric + floatingObject.unique + observedSystem.unique +fr.ird.observe.entities.seine.FloatingObject + transmittingBuoy.unique +fr.ird.observe.entities.seine.GearUseFeaturesMeasurementSeine + dbName GearUseFeaturesMeasurement + gearCaracteristic.notNull true +fr.ird.observe.entities.seine.GearUseFeaturesSeine + dbName GearUseFeatures + gearUseFeaturesMeasurement.orderBy topiaCreateDate + gearUseFeaturesMeasurement.reverseDbName gearUseFeatures +fr.ird.observe.entities.seine.NonTargetCatch + catchWeight.sqlType numeric + meanLength.sqlType numeric + meanWeight.sqlType numeric +fr.ird.observe.entities.seine.NonTargetLength + length.sqlType numeric + sex.lazy false + weight.sqlType numeric +fr.ird.observe.entities.seine.NonTargetSample + nonTargetLength.unique +fr.ird.observe.entities.seine.Route + activitySeine.orderBy time + date.hibernateAttributeType.java.util.Date date + endLogValue.sqlType numeric + startLogValue.sqlType numeric + activitySeine.unique +fr.ird.observe.entities.seine.SchoolEstimate + naturalIdMutable true + setSeine.dbName set + setSeine.naturalId true + species.naturalId true +fr.ird.observe.entities.seine.SetSeine + dbName Set + currentSpeed.sqlType numeric + nonTargetCatch.reverseDbName set + nonTargetSample.reverseDbName set + schoolEstimate.reverseDbName set + startTime.hibernateAttributeType.java.util.Date time + targetCatch.reverseDbName set + targetSample.reverseDbName set + nonTargetSample.unique + targetSample.unique +fr.ird.observe.entities.seine.TargetCatch + naturalIdMutable true + catchWeight.sqlType numeric + discarded.naturalId true + reasonForDiscard.naturalId true + reasonForDiscard.notNull false + setSeine.dbName set + setSeine.naturalId true + weightCategory.naturalId true + well.naturalId true + well.notNull false +fr.ird.observe.entities.seine.TargetLength + length.sqlType numeric + weight.sqlType numeric +fr.ird.observe.entities.seine.TargetSample + targetLength.unique +fr.ird.observe.entities.seine.TripSeine + dbName Trip + endDate.hibernateAttributeType.java.util.Date date + gearUseFeaturesSeine.orderBy topiaCreateDate + gearUseFeaturesSeine.reverseDbName trip + route.orderBy date + route.reverseDbName trip + startDate.hibernateAttributeType.java.util.Date date + route.unique diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassifierImpl.java b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassifierImpl.java index 99bf8c1..965b61d 100644 --- a/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassifierImpl.java +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassifierImpl.java @@ -34,6 +34,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; +import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -286,4 +287,19 @@ public abstract class ObjectModelClassifierImpl extends ObjectModelElementImpl i public final boolean isEnum() { return this instanceof ObjectModelEnumeration; } + + public void removeAttribute(String name) { + attributes.remove(name); + } + + public void removeOperation(String name) { + Iterator<ObjectModelOperation> iterator = operations.iterator(); + while (iterator.hasNext()) { + ObjectModelOperation operation = iterator.next(); + if (name.equals(operation.getName())) { + iterator.remove(); + break; + } + } + } } diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelEnumerationImpl.java b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelEnumerationImpl.java index 56d2f6f..3e779b8 100644 --- a/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelEnumerationImpl.java +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelEnumerationImpl.java @@ -28,6 +28,7 @@ import org.nuiton.eugene.models.object.ObjectModelModifier; import java.util.ArrayList; import java.util.Collection; +import java.util.Iterator; import java.util.Set; /** @@ -73,4 +74,14 @@ public class ObjectModelEnumerationImpl extends ObjectModelClassifierImpl implem return results; } + public void removeLiteral(String literal) { + Iterator<ObjectModelImplRef> iterator = literalRefs.iterator(); + while (iterator.hasNext()) { + ObjectModelImplRef ref = iterator.next(); + if (literal.equals(ref.getName())) { + iterator.remove(); + break; + } + } + } } diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelOperationImpl.java b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelOperationImpl.java index 4143783..85ab684 100644 --- a/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelOperationImpl.java +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelOperationImpl.java @@ -217,4 +217,14 @@ public class ObjectModelOperationImpl extends ObjectModelElementImpl implements return bodyCode; } + public void removeParameter(String name) { + Iterator<ObjectModelParameter> iterator = parameters.iterator(); + while (iterator.hasNext()) { + ObjectModelParameter parameter = iterator.next(); + if (name.equals(parameter.getName())) { + iterator.remove(); + break; + } + } + } } diff --git a/pom.xml b/pom.xml index 2316304..1c784d9 100644 --- a/pom.xml +++ b/pom.xml @@ -120,10 +120,12 @@ <modules> <module>eugene</module> + <module>eugene-config-templates</module> <module>eugene-java-templates</module> <module>eugene-plantuml-templates</module> <module>eugene-yaml-templates</module> <module>eugene-maven-plugin</module> + <module>eugene-editor-maven-plugin</module> </modules> <scm> @@ -152,8 +154,11 @@ <plexusPluginVersion>1.3.8</plexusPluginVersion> <doxiaVersion>1.7</doxiaVersion> <mavenVersion>3.3.9</mavenVersion> - - <!-- Java level configuration --> + <jaxxVersion>2.33-SNAPSHOT</jaxxVersion> + <i18nVersion>3.6.2</i18nVersion> + <swingXVersion>1.6.5-1</swingXVersion> + + <ciViewId>Eugene</ciViewId> <javaVersion>1.7</javaVersion> <signatureArtifactId>java17</signatureArtifactId> <signatureVersion>1.0</signatureVersion> @@ -437,6 +442,75 @@ <scope>runtime</scope> </dependency> + + <dependency> + <groupId>org.nuiton.jaxx</groupId> + <artifactId>jaxx-runtime</artifactId> + <version>${jaxxVersion}</version> + </dependency> + <dependency> + <groupId>org.nuiton.jaxx</groupId> + <artifactId>jaxx-validator</artifactId> + <version>${jaxxVersion}</version> + </dependency> + <dependency> + <groupId>org.nuiton.jaxx</groupId> + <artifactId>jaxx-widgets</artifactId> + <version>${jaxxVersion}</version> + </dependency> + + <dependency> + <groupId>org.nuiton.jaxx</groupId> + <artifactId>jaxx-widgets-select</artifactId> + <version>${jaxxVersion}</version> + </dependency> + <dependency> + <groupId>org.nuiton.jaxx</groupId> + <artifactId>jaxx-widgets-about</artifactId> + <version>${jaxxVersion}</version> + </dependency> + <dependency> + <groupId>org.nuiton.jaxx</groupId> + <artifactId>jaxx-config</artifactId> + <version>${jaxxVersion}</version> + </dependency> + <dependency> + <groupId>org.nuiton.jaxx</groupId> + <artifactId>jaxx-application-api</artifactId> + <version>${jaxxVersion}</version> + </dependency> + <dependency> + <groupId>org.nuiton.jaxx</groupId> + <artifactId>jaxx-application-swing</artifactId> + <version>${jaxxVersion}</version> + </dependency> + + <dependency> + <groupId>org.swinglabs</groupId> + <artifactId>jxlayer</artifactId> + <version>3.0.4</version> + </dependency> + <dependency> + <groupId>org.swinglabs.swingx</groupId> + <artifactId>swingx-core</artifactId> + <version>${swingXVersion}</version> + </dependency> + <dependency> + <groupId>org.swinglabs.swingx</groupId> + <artifactId>swingx-painters</artifactId> + <version>${swingXVersion}</version> + </dependency> + <dependency> + <groupId>org.swinglabs.swingx</groupId> + <artifactId>swingx-common</artifactId> + <version>${swingXVersion}</version> + </dependency> + <dependency> + <groupId>org.swinglabs.swingx</groupId> + <artifactId>swingx-autocomplete</artifactId> + <version>${swingXVersion}</version> + </dependency> + <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> @@ -490,6 +564,17 @@ </configuration> </plugin> + <plugin> + <groupId>org.nuiton.i18n</groupId> + <artifactId>i18n-maven-plugin</artifactId> + <version>${i18nVersion}</version> + </plugin> + <plugin> + <groupId>org.nuiton.jaxx</groupId> + <artifactId>jaxx-maven-plugin</artifactId> + <version>${jaxxVersion}</version> + </plugin> + </plugins> </pluginManagement> <extensions> @@ -544,5 +629,57 @@ </plugins> </build> </profile> + + <profile> + <id>generate-changelog</id> + <activation> + <property> + <name>performRelease</name> + <value>true</value> + </property> + </activation> + + <properties> + + <redmine.xmlPath>${project.build.directory}/changes/changes.xml</redmine.xmlPath> + </properties> + <build> + <defaultGoal>process-classes</defaultGoal> + <plugins> + + <!-- Generate changelog.txt and attach it to project --> + <plugin> + <groupId>org.nuiton.jredmine</groupId> + <artifactId>jredmine-maven-plugin</artifactId> + <executions> + <execution> + <id>generate-changes</id> + <goals> + <goal>generate-changes</goal> + </goals> + <phase>process-classes</phase> + <configuration> + <generateOnce>true</generateOnce> + <actionMapping>fix:1, add:2, update:4</actionMapping> + </configuration> + </execution> + <execution> + <id>generate-changelog</id> + <inherited>false</inherited> + <goals> + <goal>generate-changelog</goal> + </goals> + <phase>process-classes</phase> + <configuration> + <attach>true</attach> + </configuration> + </execution> + </executions> + </plugin> + + </plugins> + </build> + </profile> + </profiles> </project> -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/editor in repository eugene. See https://gitlab.nuiton.org/nuiton/eugene.git commit 70d04763e74bd5a20fb5aabfa704e205c7afb0f1 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Sep 19 13:33:33 2016 +0200 Meilleurs icons --- .../src/main/resources/icons/type-attribute.png | Bin 1536 -> 502 bytes .../src/main/resources/icons/type-class.png | Bin 1523 -> 497 bytes .../src/main/resources/icons/type-enumeration.png | Bin 1512 -> 456 bytes .../src/main/resources/icons/type-interface.png | Bin 1520 -> 479 bytes .../src/main/resources/icons/type-model.png | Bin 1414 -> 142 bytes .../src/main/resources/icons/type-operation.png | Bin 1518 -> 459 bytes .../src/main/resources/icons/type-package.png | Bin 1409 -> 147 bytes 7 files changed, 0 insertions(+), 0 deletions(-) diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/type-attribute.png b/eugene-editor-maven-plugin/src/main/resources/icons/type-attribute.png index 85d50ee..3a06c68 100644 Binary files a/eugene-editor-maven-plugin/src/main/resources/icons/type-attribute.png and b/eugene-editor-maven-plugin/src/main/resources/icons/type-attribute.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/type-class.png b/eugene-editor-maven-plugin/src/main/resources/icons/type-class.png index b2813ef..98337ca 100644 Binary files a/eugene-editor-maven-plugin/src/main/resources/icons/type-class.png and b/eugene-editor-maven-plugin/src/main/resources/icons/type-class.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/type-enumeration.png b/eugene-editor-maven-plugin/src/main/resources/icons/type-enumeration.png index d9a937b..4c3395a 100644 Binary files a/eugene-editor-maven-plugin/src/main/resources/icons/type-enumeration.png and b/eugene-editor-maven-plugin/src/main/resources/icons/type-enumeration.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/type-interface.png b/eugene-editor-maven-plugin/src/main/resources/icons/type-interface.png index bd94fd7..f98b1aa 100644 Binary files a/eugene-editor-maven-plugin/src/main/resources/icons/type-interface.png and b/eugene-editor-maven-plugin/src/main/resources/icons/type-interface.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/type-model.png b/eugene-editor-maven-plugin/src/main/resources/icons/type-model.png index 36c21a8..c323909 100644 Binary files a/eugene-editor-maven-plugin/src/main/resources/icons/type-model.png and b/eugene-editor-maven-plugin/src/main/resources/icons/type-model.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/type-operation.png b/eugene-editor-maven-plugin/src/main/resources/icons/type-operation.png index f96248d..b55765f 100644 Binary files a/eugene-editor-maven-plugin/src/main/resources/icons/type-operation.png and b/eugene-editor-maven-plugin/src/main/resources/icons/type-operation.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/type-package.png b/eugene-editor-maven-plugin/src/main/resources/icons/type-package.png index 9d926e5..d244776 100644 Binary files a/eugene-editor-maven-plugin/src/main/resources/icons/type-package.png and b/eugene-editor-maven-plugin/src/main/resources/icons/type-package.png differ -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/editor in repository eugene. See https://gitlab.nuiton.org/nuiton/eugene.git commit 128706748dd31aa442c99e24ca4ba617616821fd Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Sep 21 08:28:14 2016 +0200 mImprove readme --- eugene-editor-maven-plugin/README.md | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/eugene-editor-maven-plugin/README.md b/eugene-editor-maven-plugin/README.md index d2e50d3..fa7b915 100644 --- a/eugene-editor-maven-plugin/README.md +++ b/eugene-editor-maven-plugin/README.md @@ -1,2 +1,22 @@ -To deploy new version of pom: mvn deploy -To install localy: mvn install +# Abstract + +This plugin aims to edit any objectmodel in a nice GUI. + +# Build + +Classical maven build with no suprise: + +To install localy: + +```mvn install``` + +To deploy new version: + +```mvn deploy``` + +#Try me + +You can try the plugin on an embbeded model: +``` +mvn -Prun-observe-entities +``` \ No newline at end of file -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/editor in repository eugene. See https://gitlab.nuiton.org/nuiton/eugene.git commit 35a8990c3c8d80fc0c5fc13eb974e0d25826c169 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Sep 24 09:49:07 2016 +0200 POC --- .../application/ui/ContentUIInitializer.java | 63 +++++++++++ .../editor/application/ui/ContentUIManager.java | 4 +- .../application/ui/content/AggregationMode.java | 12 +++ .../application/ui/content/AttributeContentUI.jaxx | 22 ++-- .../application/ui/content/AttributeContentUI.jcss | 42 +++++--- .../ui/content/AttributeContentUIHandler.java | 28 ++--- .../application/ui/content/ClassContentUI.jaxx | 8 +- .../application/ui/content/ClassContentUI.jcss | 9 +- .../ui/content/ClassContentUIHandler.java | 40 +++++-- .../editor/application/ui/content/ContentUI.java | 6 ++ .../editor/application/ui/content/ContentUI.jcss | 13 ++- ...{ContenUIHandler.java => ContentUIHandler.java} | 119 +++++++++------------ .../ui/content/EnumerationContentUI.jaxx | 8 +- .../ui/content/EnumerationContentUI.jcss | 6 +- .../ui/content/EnumerationContentUIHandler.java | 13 ++- .../application/ui/content/InterfaceContentUI.jaxx | 2 +- .../application/ui/content/InterfaceContentUI.jcss | 4 +- .../ui/content/InterfaceContentUIHandler.java | 13 ++- .../application/ui/content/ModelContentUI.jcss | 2 +- .../ui/content/ModelContentUIHandler.java | 11 +- .../application/ui/content/Multiplicity.java | 22 +++- .../application/ui/content/OperationContentUI.jaxx | 18 +++- .../application/ui/content/OperationContentUI.jcss | 10 +- .../ui/content/OperationContentUIHandler.java | 8 +- .../application/ui/content/PackageContentUI.jcss | 2 +- .../ui/content/PackageContentUIHandler.java | 11 +- .../editor/application/ui/content/Visibility.java | 33 ++++++ .../actions/AddInterfaceFromClassAction.java | 10 +- .../actions/AddLiteralFromEnumerationAction.java | 32 ------ .../actions/AddSuperClassFromInterfaceAction.java | 4 +- .../ui/content/actions/ContentActionSupport.java | 16 ++- .../CreateAttributeFromAttributeAction.java | 4 +- .../actions/CreateAttributeFromClassAction.java | 4 +- .../CreateAttributeFromInterfaceAction.java | 4 +- .../CreateLiteralFromEnumerationAction.java | 11 ++ .../CreateOperationFromOperationAction.java | 4 +- .../actions/CreatePackageFromModelAction.java | 2 +- .../CreateParameterFromOperationAction.java | 1 + .../DeleteAttributeFromAttributeAction.java | 19 ++-- .../actions/DeleteClassFromClassAction.java | 12 +-- .../DeleteEnumerationFromEnumerationAction.java | 12 +-- .../DeleteInterfaceFromInterfaceAction.java | 12 +-- ...va => DeleteLiteralsFromEnumerationAction.java} | 4 +- .../DeleteOperationFromOperationAction.java | 15 +-- .../actions/DeletePackageFromPackageAction.java | 11 +- ...n.java => RemoveInterfacesFromClassAction.java} | 12 +-- ... => RemoveSuperClassesFromInterfaceAction.java} | 10 +- .../ui/tree/EugeneEditorTreeSelectionModel.java | 12 ++- .../application/ui/tree/node/AttributeNode.java | 98 ++++++++++++++--- .../editor/application/ui/tree/node/ClassNode.java | 55 +++++----- .../ui/tree/node/ClassifierNodeSupport.java | 103 ++++++++++++++++++ .../application/ui/tree/node/EnumerationNode.java | 22 ++-- .../application/ui/tree/node/InterfaceNode.java | 44 +++----- .../editor/application/ui/tree/node/ModelNode.java | 48 ++++++--- .../application/ui/tree/node/NodeSupport.java | 97 +++++++++-------- .../application/ui/tree/node/OperationNode.java | 39 ++++--- .../application/ui/tree/node/PackageNode.java | 10 +- .../eugene-editor-maven-plugin_en_GB.properties | 17 +-- .../eugene-editor-maven-plugin_fr_FR.properties | 19 ++-- .../src/main/resources/icons/action-redo.png | Bin 0 -> 458 bytes .../src/main/resources/icons/action-rollback.png | Bin 0 -> 469 bytes .../src/main/resources/icons/action-undo.png | Bin 0 -> 458 bytes .../src/main/resources/icons/type-attribute2x.png | Bin 0 -> 991 bytes .../src/main/resources/icons/type-class2x.png | Bin 0 -> 991 bytes .../main/resources/icons/type-enumeration2x.png | Bin 0 -> 803 bytes .../src/main/resources/icons/type-field.png | Bin 0 -> 499 bytes .../src/main/resources/icons/type-field2x.png | Bin 0 -> 925 bytes .../src/main/resources/icons/type-interface2x.png | Bin 0 -> 832 bytes .../src/main/resources/icons/type-model2x.png | Bin 0 -> 175 bytes .../src/main/resources/icons/type-operation2x.png | Bin 0 -> 870 bytes .../src/main/resources/icons/type-package2x.png | Bin 0 -> 218 bytes .../src/main/resources/icons/type-value.png | Bin 0 -> 95 bytes .../src/main/resources/icons/type-value2x.png | Bin 0 -> 122 bytes .../src/main/resources/icons/type-variable.png | Bin 0 -> 515 bytes .../src/main/resources/icons/type-variable2x.png | Bin 0 -> 911 bytes .../tree/node/OperationNode-error-validation.xml | 2 +- .../object/xml/ObjectModelAttributeImpl.java | 8 ++ .../object/xml/ObjectModelClassifierImpl.java | 11 ++ pom.xml | 2 +- 79 files changed, 813 insertions(+), 502 deletions(-) diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/ContentUIInitializer.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/ContentUIInitializer.java index e05c029..5364871 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/ContentUIInitializer.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/ContentUIInitializer.java @@ -9,6 +9,7 @@ import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.reflect.ConstructorUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.jdesktop.swingx.JXTitledPanel; import org.nuiton.eugene.editor.application.ui.content.ContentUI; import org.nuiton.jaxx.application.bean.JavaBeanObjectUtil; @@ -16,20 +17,28 @@ import javax.swing.Action; import javax.swing.Icon; import javax.swing.JButton; import javax.swing.JCheckBox; +import javax.swing.JComboBox; import javax.swing.JComponent; import javax.swing.JLabel; +import javax.swing.JRadioButton; import javax.swing.JTextField; +import javax.swing.KeyStroke; import javax.swing.SwingUtilities; +import javax.swing.UIDefaults; +import javax.swing.UIManager; import javax.swing.text.JTextComponent; import java.awt.Component; +import java.awt.Insets; import java.awt.event.FocusAdapter; import java.awt.event.FocusEvent; +import java.awt.event.ItemEvent; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.lang.reflect.InvocationTargetException; import java.util.EnumSet; import java.util.LinkedHashMap; import java.util.Map; +import java.util.Objects; /** * Created on 16/09/16. @@ -47,6 +56,9 @@ public class ContentUIInitializer { this.callbacks = callbacks; } + //TODO Utilisiter ça sur les JXTitledPanel + //UIManager.getInsets("JXTitledPanel.captionInsets") + public static <U extends ContentUI> ContentUIInitializer newInitializer() { return ContentUIInitializer.<U>builder() @@ -75,6 +87,15 @@ public class ContentUIInitializer { action.putValue(Action.SHORT_DESCRIPTION, tip); } action.setEnabled(editor.isEnabled()); + String accelerator = (String) editor.getClientProperty("accelerator"); + if (accelerator != null) { + + KeyStroke keyStroke = KeyStroke.getKeyStroke(accelerator); + Objects.requireNonNull(keyStroke, "cant find keystroke for accelerator: " + accelerator); + action.putValue(Action.ACCELERATOR_KEY, keyStroke); + action.putValue(Action.ACTION_COMMAND_KEY, action.getClass().getName()); + + } editor.setAction(action); } catch (ClassNotFoundException e) { // no action foud @@ -90,6 +111,19 @@ public class ContentUIInitializer { } editor.init(); }) + .addCallback(JXTitledPanel.class, (ui, editor) -> { + if (log.isDebugEnabled()) { + log.debug("init jx title panel" + editor.getName()); + } + UIDefaults defaults = UIManager.getLookAndFeelDefaults(); + defaults.put("JXTitledPanel.captionInsets", new Insets(5, 5, 5, 5)); + + editor.putClientProperty("Nimbus.Overrides.InheritDefaults", true); + editor.putClientProperty("Nimbus.Overrides", defaults); + + SwingUtilities.updateComponentTreeUI(editor); + + }) .addCallback(JLabel.class, (ui, editor) -> { String name = editor.getName(); if (name != null && name.endsWith("Label")) { @@ -122,6 +156,35 @@ public class ContentUIInitializer { } }) + .addCallback(JComboBox.class, (ui, editor) -> { + + String propertyName = (String) editor.getClientProperty(CLIENT_PROPERTY_PROPERTY_NAME); + if (propertyName != null) { + editor.addItemListener( + e -> { + if (e.getStateChange() == ItemEvent.SELECTED) { + JComboBox source = (JComboBox) e.getSource(); + JavaBeanObjectUtil.setProperty(ui.getModel(), propertyName, source.getSelectedItem()); + } + }); + } + + }) + .addCallback(JRadioButton.class, (ui, editor) -> { + + String propertyName = (String) editor.getClientProperty(CLIENT_PROPERTY_PROPERTY_NAME); + if (propertyName != null) { + editor.addItemListener( + e -> { + if (e.getStateChange() == ItemEvent.SELECTED) { + JRadioButton source = (JRadioButton) e.getSource(); + Object selectedValue = source.getClientProperty("$value"); + JavaBeanObjectUtil.setProperty(ui.getModel(), propertyName, selectedValue); + } + }); + } + + }) .addCallback(JCheckBox.class, (ui, editor) -> { if (log.isDebugEnabled()) { log.debug("init simple boolean editor " + editor.getName()); diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/ContentUIManager.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/ContentUIManager.java index 885ece1..7089661 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/ContentUIManager.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/ContentUIManager.java @@ -16,6 +16,8 @@ import org.nuiton.eugene.editor.application.ui.tree.node.ModelNode; import org.nuiton.eugene.editor.application.ui.tree.node.NodeSupport; import org.nuiton.eugene.editor.application.ui.tree.node.OperationNode; import org.nuiton.eugene.editor.application.ui.tree.node.PackageNode; +import org.nuiton.eugene.models.stereotype.StereotypeAble; +import org.nuiton.eugene.models.tagvalue.TagValueAble; import java.util.Collections; import java.util.Map; @@ -48,7 +50,7 @@ public class ContentUIManager { } - public <M, N extends NodeSupport<M>> ContentUI<N> getContent(N node) { + public <M extends StereotypeAble & TagValueAble, N extends NodeSupport<M>> ContentUI<N> getContent(N node) { Objects.requireNonNull(node); return contents.get(node.getClass().getName()); } diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/AggregationMode.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/AggregationMode.java new file mode 100644 index 0000000..08eedb5 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/AggregationMode.java @@ -0,0 +1,12 @@ +package org.nuiton.eugene.editor.application.ui.content; + +/** + * Created on 21/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public enum AggregationMode { + NONE, + AGGREGATE, + COMPOSE +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/AttributeContentUI.jaxx b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/AttributeContentUI.jaxx index b898689..ca9353c 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/AttributeContentUI.jaxx +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/AttributeContentUI.jaxx @@ -3,7 +3,9 @@ <style source="ContentUI.jcss"/> <import> + org.nuiton.eugene.editor.application.ui.content.AggregationMode org.nuiton.eugene.editor.application.ui.content.Multiplicity + org.nuiton.eugene.editor.application.ui.content.Visibility org.nuiton.eugene.editor.application.ui.tree.node.AttributeNode </import> <script><![CDATA[ @@ -31,7 +33,7 @@ public void close() { handler.close(); } <JLabel id="attributeNameLabel"/> </cell> <cell weightx="1"> - <JTextField id="attributeName" onKeyReleased="model.setName(attributeName.getText())"/> + <JTextField id="attributeName"/> </cell> </row> <row> @@ -39,7 +41,7 @@ public void close() { handler.close(); } <JLabel id="attributeTypeLabel"/> </cell> <cell> - <JComboBox id="attributeType" genericType="String" onActionPerformed="model.setType((String)attributeType.getSelectedItem())"/> + <JComboBox id="attributeType" genericType="String"/> </cell> </row> <row> @@ -53,10 +55,10 @@ public void close() { handler.close(); } <row> <cell columns="3"> <JPanel id="visibility"> - <JRadioButton id="visibilityPublic" value="public" styleClass="visibilityMode"/> - <JRadioButton id="visibilityPackage" value="" styleClass="visibilityMode"/> - <JRadioButton id="visibilityProtected" value="protected" styleClass="visibilityMode"/> - <JRadioButton id="visibilityPrivate" value="private" styleClass="visibilityMode"/> + <JRadioButton id="visibilityPublic" value="{Visibility.PUBLIC}" styleClass="visibilityMode"/> + <JRadioButton id="visibilityPackage" value="{Visibility.PACKAGE}" styleClass="visibilityMode"/> + <JRadioButton id="visibilityProtected" value="{Visibility.PROTECTED}" styleClass="visibilityMode"/> + <JRadioButton id="visibilityPrivate" value="{Visibility.PRIVATE}" styleClass="visibilityMode"/> </JPanel> </cell> </row> @@ -69,9 +71,11 @@ public void close() { handler.close(); } </cell> <cell> <JPanel id="aggregation"> - <JRadioButton id="aggregationAggregate" value="aggregate" styleClass="aggregationMode"/> - <JRadioButton id="aggregationCompose" value="compose" styleClass="aggregationMode"/> - <JRadioButton id="aggregationNone" value="none" styleClass="aggregationMode"/> + <JRadioButton id="aggregationAggregate" value="{AggregationMode.AGGREGATE}" + styleClass="aggregationMode"/> + <JRadioButton id="aggregationCompose" value="{AggregationMode.COMPOSE}" styleClass="aggregationMode"/> + <JRadioButton id="aggregationNone" value="{AggregationMode.NONE}" styleClass="aggregationMode"/> + <JSeparator constructorParams="JSeparator.VERTICAL"/> <JCheckBox id="bidi" constraints="BorderLayout.EAST"/> </JPanel> </cell> diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/AttributeContentUI.jcss b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/AttributeContentUI.jcss index d521a84..7d05087 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/AttributeContentUI.jcss +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/AttributeContentUI.jcss @@ -8,7 +8,7 @@ } #attributeName { - text:{getModel().getUserObject().getName()}; + text:{getModel().getName()}; _property:{"name"}; } @@ -17,7 +17,7 @@ } #attributeDefaultValue { - text:{getModel().getUserObject().getDefaultValue()}; + text:{getModel().getDefaultValue()}; _property:{"defaultValue"}; } @@ -26,7 +26,7 @@ } #attributeType { - selectedItem:{getModel().getUserObject().getType()}; + selectedItem:{getModel().getType()}; _property:{"type"}; } @@ -40,30 +40,42 @@ actionIcon:delete; } +#multiplicity { + selectedItem:{getModel().getMultiplicity()}; + _property:{"multiplicity"}; +} + +#aggregation { + border: {new javax.swing.border.TitledBorder(t("eugene.editor.aggregation"))}; + layout: {new GridLayout(1, 0)}; +} + +.aggregationMode { + buttonGroup:"aggregationMode"; + _property:{"aggregationMode"}; +} + +#aggregationMode { + selectedValue: {getModel().getAggregationMode()}; +} + #aggregationAggregate { text:"eugene.editor.aggregation.aggregate"; - selected:{"aggregate".equals(aggregationMode.getSelectedValue())}; + selected:{AggregationMode.AGGREGATE.equals(aggregationMode.getSelectedValue())}; } #aggregationCompose { text:"eugene.editor.aggregation.compose"; - selected:{"compose".equals(aggregationMode.getSelectedValue())}; + selected:{AggregationMode.COMPOSE.equals(aggregationMode.getSelectedValue())}; } #aggregationNone { text:"eugene.editor.aggregation.none"; - selected:{"none".equals(aggregationMode.getSelectedValue())}; -} - -#aggregation { - border: {new javax.swing.border.TitledBorder(t("eugene.editor.aggregation"))}; - layout: {new GridLayout(1, 0)}; -} - -.aggregationMode { - buttonGroup:"aggregationMode"; + selected:{AggregationMode.NONE.equals(aggregationMode.getSelectedValue())}; } #bidi { text:"eugene.editor.bidi"; + selected:{getModel().isBidi()}; + _property:{"bidi"}; } diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/AttributeContentUIHandler.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/AttributeContentUIHandler.java index 9571351..646e375 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/AttributeContentUIHandler.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/AttributeContentUIHandler.java @@ -4,7 +4,7 @@ import jaxx.runtime.SwingUtil; import org.nuiton.eugene.editor.application.ModelExtensionHelper; import org.nuiton.eugene.editor.application.ModelHelper; import org.nuiton.eugene.editor.application.ui.tree.node.AttributeNode; -import org.nuiton.eugene.models.object.ObjectModelAttribute; +import org.nuiton.eugene.models.object.xml.ObjectModelAttributeImpl; import java.util.ArrayList; import java.util.Arrays; @@ -16,7 +16,7 @@ import java.util.List; * * @author Tony Chemit - chemit@codelutin.com */ -public class AttributeContentUIHandler extends ContenUIHandler<AttributeNode, AttributeContentUI> { +public class AttributeContentUIHandler extends ContentUIHandler<ObjectModelAttributeImpl, AttributeNode, AttributeContentUI> { @Override public void beforeInit(AttributeContentUI ui) { @@ -34,36 +34,26 @@ public class AttributeContentUIHandler extends ContenUIHandler<AttributeNode, At @Override protected void open(AttributeContentUI ui, AttributeNode node) { - ObjectModelAttribute data = node.getUserObject(); + super.open(ui, node); - open(ui, node, data.getStereotypes(), data.getTagValues()); - ui.getVisibilityMode().setSelectedValue(data.getVisibility()); +// ui.getVisibilityMode().setSelectedValue(node.getVisibility()); ModelHelper modelHelper = getApplicationContext(ui).getModelHelper(); List<String> allClasses = new ArrayList<>(modelHelper.getAllClassesWithJava()); Collections.sort(allClasses); allClasses.add(0, null); - SwingUtil.fillComboBox(ui.getAttributeType(), allClasses, data.getType()); + SwingUtil.fillComboBox(ui.getAttributeType(), allClasses, node.getType()); List<Multiplicity> multiplicities = Arrays.asList(Multiplicity.values()); - SwingUtil.fillComboBox(ui.getMultiplicity(), multiplicities, Multiplicity.valueOf(data.getMinMultiplicity(), data.getMaxMultiplicity())); + SwingUtil.fillComboBox(ui.getMultiplicity(), multiplicities, node.getMultiplicity()); - ui.getAggregationMode().setSelectedValue("none"); - if (data.isAggregate()) { +// ui.getAggregationMode().setSelectedValue(node.getAggregationMode()); - ui.getAggregationMode().setSelectedValue("aggregate"); - } - if (data.isComposite()) { - ui.getAggregationMode().setSelectedValue("compose"); - } +// ui.getBidi().setSelected(node.isBidi()); - ObjectModelAttribute reverseAttribute = data.getReverseAttribute(); - - ui.getBidi().setSelected(reverseAttribute != null && reverseAttribute.isNavigable()); - - ui.getAttributeDefaultValue().setText(data.getDefaultValue()); + ui.getAttributeDefaultValue().setText(node.getDefaultValue()); } } diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ClassContentUI.jaxx b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ClassContentUI.jaxx index 3317648..688992c 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ClassContentUI.jaxx +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ClassContentUI.jaxx @@ -1,4 +1,5 @@ -<org.jdesktop.swingx.JXTitledPanel id="classMainContent" implements="ContentUI<ClassNode>" styleClass="top"> +<org.jdesktop.swingx.JXTitledPanel id="classMainContent" implements="ContentUI<ClassNode>" styleClass="top" + onKeyPressed="log.info(event)"> <style source="ContentUI.jcss"/> <import> @@ -36,7 +37,8 @@ public void close() { handler.close(); } <JLabel id="superClassLabel"/> </cell> <cell weightx="1"> - <JComboBox id="superClass" genericType="String"/> + <JComboBox id="superClass" genericType="String" + onItemStateChanged="if( event.getStateChange() == ItemEvent.SELECTED) { model.setSuperClass((String)superClass.getSelectedItem()); }"/> </cell> </row> <row> @@ -49,7 +51,7 @@ public void close() { handler.close(); } onItemStateChanged="addInterfaceFromClass.setEnabled(event.getStateChange() == ItemEvent.SELECTED)"/> <JToolBar id="interfacesHeaderActions" constraints="BorderLayout.EAST"> <JButton id="addInterfaceFromClass"/> - <JButton id="removeInterfaceFromClass"/> + <JButton id="removeInterfacesFromClass"/> </JToolBar> </JPanel> </JScrollPane> diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ClassContentUI.jcss b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ClassContentUI.jcss index 23a071c..dfd4433 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ClassContentUI.jcss +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ClassContentUI.jcss @@ -1,5 +1,4 @@ - #classMainContent { title:"eugene.editor.class"; } @@ -13,7 +12,7 @@ } #className { - text:{getModel().getUserObject().getName()}; + text:{getModel().getName()}; _property:{"name"}; } @@ -41,12 +40,16 @@ text:"eugene.editor.add.interface"; actionIcon:add; enabled:false; + _accelerator:{"ctrl INSERT"}; + _acceleratorComponent:{generalPane.getContentPane()}; } -#removeInterfaceFromClass { +#removeInterfacesFromClass { text:"eugene.editor.delete.interface"; actionIcon:delete; enabled:false; + _accelerator:{"ctrl DELETE"}; + _acceleratorComponent:{generalPane.getContentPane()}; } #interfaces { diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ClassContentUIHandler.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ClassContentUIHandler.java index f4792bd..bfa4399 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ClassContentUIHandler.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ClassContentUIHandler.java @@ -4,19 +4,25 @@ import jaxx.runtime.SwingUtil; import org.nuiton.eugene.editor.application.ModelExtensionHelper; import org.nuiton.eugene.editor.application.ModelHelper; import org.nuiton.eugene.editor.application.ui.tree.node.ClassNode; -import org.nuiton.eugene.models.object.ObjectModelClass; +import org.nuiton.eugene.models.object.xml.ObjectModelClassImpl; +import javax.swing.Action; +import javax.swing.JButton; +import javax.swing.JComponent; +import javax.swing.JRootPane; +import javax.swing.KeyStroke; import javax.swing.ListSelectionModel; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Objects; /** * Created on 16/09/16. * * @author Tony Chemit - chemit@codelutin.com */ -public class ClassContentUIHandler extends ContenUIHandler<ClassNode, ClassContentUI> { +public class ClassContentUIHandler extends ContentUIHandler<ObjectModelClassImpl, ClassNode, ClassContentUI> { @Override public void beforeInit(ClassContentUI ui) { @@ -29,15 +35,14 @@ public class ClassContentUIHandler extends ContenUIHandler<ClassNode, ClassConte ModelExtensionHelper helper = getApplicationContext(ui).getModelExtensionHelper(); afterInit(ui, helper.getClassTagValues(), helper.getClassStereotypes()); - ui.getInterfaces().getSelectionModel().addListSelectionListener(e -> ui.getRemoveInterfaceFromClass().setEnabled(!((ListSelectionModel) e.getSource()).isSelectionEmpty())); + ui.getInterfaces().getSelectionModel().addListSelectionListener(e -> ui.getRemoveInterfacesFromClass().setEnabled(!((ListSelectionModel) e.getSource()).isSelectionEmpty())); } @Override protected void open(ClassContentUI ui, ClassNode node) { - ObjectModelClass data = node.getUserObject(); - open(ui, node, data.getStereotypes(), data.getTagValues()); + super.open(ui, node); ModelHelper modelHelper = getApplicationContext(ui).getModelHelper(); List<String> allClasses = new ArrayList<>(modelHelper.getAllClasses()); @@ -48,13 +53,36 @@ public class ClassContentUIHandler extends ContenUIHandler<ClassNode, ClassConte SwingUtil.fillComboBox(ui.getSuperClass(), allClasses, superClass); - addInterfaces(ui, data.getInterfaces(), ui.getInterfaces(), allClasses); + addInterfaces(ui, node.getInterfaces(), ui.getInterfaces(), allClasses); //TODO Supprimer toutes les classes qui héritent de celle ci allClasses.remove(superClass); SwingUtil.fillComboBox(ui.getInterfacesHeaderType(), allClasses, null); ui.getInterfacesHeaderType().setSelectedItem(null); + registerAction(ui, ui.getAddInterfaceFromClass()); + registerAction(ui, ui.getRemoveInterfacesFromClass()); + + } + + protected void registerAction(ClassContentUI ui, JButton editor) { + + JRootPane rootPane = ui.getRootPane(); + Objects.requireNonNull(rootPane); + + Action action = editor.getAction(); + Objects.requireNonNull(action); + + KeyStroke keyStroke = (KeyStroke) action.getValue(Action.ACCELERATOR_KEY); + Objects.requireNonNull(keyStroke); + + String actionKey = (String) action.getValue(Action.ACTION_COMMAND_KEY); + Objects.requireNonNull(actionKey); + + rootPane.getActionMap().put(actionKey, action); + rootPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(keyStroke, actionKey); + } + } diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ContentUI.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ContentUI.java index 29737dd..aaa3295 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ContentUI.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ContentUI.java @@ -3,6 +3,8 @@ package org.nuiton.eugene.editor.application.ui.content; import jaxx.runtime.JAXXObject; import org.nuiton.eugene.editor.application.ui.tree.node.NodeSupport; +import javax.swing.ActionMap; +import javax.swing.InputMap; import javax.swing.JComponent; import javax.swing.JPanel; @@ -26,4 +28,8 @@ public interface ContentUI<M extends NodeSupport> extends JAXXObject { JPanel getTagValues(); void close(); + + ActionMap getActionMap(); + + InputMap getInputMap(int condition); } diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ContentUI.jcss b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ContentUI.jcss index 162b820..8387121 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ContentUI.jcss +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ContentUI.jcss @@ -28,28 +28,33 @@ layout: {new GridLayout(1, 0)}; } +#visibilityMode { + selectedValue: {getModel().getVisibility()}; +} + .visibilityMode { buttonGroup:"visibilityMode"; + _property: {"visibility"}; } #visibilityPublic { text:"eugene.editor.visibility.public"; - selected:{"public".equals(getModel().getUserObject().getVisibility())}; + selected:{Visibility.PUBLIC.equals(getModel().getVisibility())}; } #visibilityPackage { text:"eugene.editor.visibility.package"; - selected:{"".equals(getModel().getUserObject().getVisibility())}; + selected:{Visibility.PACKAGE.equals(getModel().getVisibility())}; } #visibilityProtected { text:"eugene.editor.visibility.protected"; - selected:{"protected".equals(getModel().getUserObject().getVisibility())}; + selected:{Visibility.PROTECTED.equals(getModel().getVisibility())}; } #visibilityPrivate { text:"eugene.editor.visibility.private"; - selected:{"private".equals(getModel().getUserObject().getVisibility())}; + selected:{Visibility.PRIVATE.equals(getModel().getVisibility())}; } #noInterface { diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ContenUIHandler.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ContentUIHandler.java similarity index 80% rename from eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ContenUIHandler.java rename to eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ContentUIHandler.java index d4ba542..a7db6d9 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ContenUIHandler.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ContentUIHandler.java @@ -4,8 +4,9 @@ import jaxx.runtime.SwingUtil; import jaxx.runtime.spi.UIHandler; import org.nuiton.eugene.editor.application.EugeneEditorApplicationContext; import org.nuiton.eugene.editor.application.ui.tree.node.NodeSupport; -import org.nuiton.eugene.models.object.ObjectModelInterface; +import org.nuiton.eugene.models.stereotype.StereotypeAble; import org.nuiton.eugene.models.stereotype.StereotypeDefinition; +import org.nuiton.eugene.models.tagvalue.TagValueAble; import org.nuiton.eugene.models.tagvalue.TagValueDefinition; import javax.swing.JCheckBox; @@ -15,71 +16,20 @@ import javax.swing.JPanel; import javax.swing.JTextField; import java.awt.GridLayout; import java.util.Collection; -import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Set; -import java.util.stream.Collectors; /** * Created on 16/09/16. * * @author Tony Chemit - chemit@codelutin.com */ -public abstract class ContenUIHandler<M extends NodeSupport, U extends ContentUI<M>> implements UIHandler<U> { +public abstract class ContentUIHandler<X extends StereotypeAble & TagValueAble, M extends NodeSupport<X>, U extends ContentUI<M>> implements UIHandler<U> { - protected abstract void open(U ui, M data); - - protected void close() { - - } - - protected void afterInit(U ui, - Map<String, TagValueDefinition> availableTagValues, - Map<String, StereotypeDefinition> availableStereotypes) { - - Map<String, Object> $objectMap = ui.get$objectMap(); - if (!availableStereotypes.isEmpty()) { - - JPanel stereotypes = ui.getStereotypes(); - stereotypes.putClientProperty("stereotypes", availableStereotypes); - stereotypes.setLayout(new GridLayout(1, 0)); - stereotypes.removeAll(); - for (Map.Entry<String, StereotypeDefinition> entry : availableStereotypes.entrySet()) { - String stereotype = entry.getKey(); - JCheckBox b = new JCheckBox(); - b.setText(stereotype); - b.setToolTipText(entry.getValue().documentation()); - stereotypes.add(b); - $objectMap.put("stereotype-" + stereotype, b); - } - } - - if (!availableTagValues.isEmpty()) { - - JPanel tagValues = ui.getTagValues(); - tagValues.putClientProperty("tagValues", availableTagValues); - tagValues.setLayout(new GridLayout(0, 2)); - tagValues.removeAll(); - - for (Map.Entry<String, TagValueDefinition> entry : availableTagValues.entrySet()) { - - JTextField field = new JTextField(); - - String tagValue = entry.getKey(); - JLabel label = new JLabel(tagValue); - $objectMap.put("tagValue-" + tagValue, field); - label.setToolTipText(entry.getValue().documentation()); - label.setLabelFor(field); - - tagValues.add(label); - tagValues.add(field); - } - } - - } - - protected void open(U ui, M model, Set<String> stereotypes, Map<String, String> tagValues) { + protected void open(U ui, M model) { + Set<String> stereotypes = model.getStereotypes(); + Map<String, String> tagValues = model.getTagValues(); ui.setModel(model); @@ -127,24 +77,61 @@ public abstract class ContenUIHandler<M extends NodeSupport, U extends ContentUI objectById.setText(entry.getValue()); } } + } + + protected void close() { } - protected void addInterfaces(U ui, Collection<ObjectModelInterface> interfaces, JList interfacesPanel, List<String> allClasses) { + protected void afterInit(U ui, + Map<String, TagValueDefinition> availableTagValues, + Map<String, StereotypeDefinition> availableStereotypes) { - List<String> interfaceNames; + Map<String, Object> $objectMap = ui.get$objectMap(); + if (!availableStereotypes.isEmpty()) { - if (interfaces.isEmpty()) { - interfaceNames = Collections.emptyList(); - } else { + JPanel stereotypes = ui.getStereotypes(); + stereotypes.putClientProperty("stereotypes", availableStereotypes); + stereotypes.setLayout(new GridLayout(1, 0)); + stereotypes.removeAll(); + for (Map.Entry<String, StereotypeDefinition> entry : availableStereotypes.entrySet()) { + String stereotype = entry.getKey(); + JCheckBox b = new JCheckBox(); + b.setText(stereotype); + b.setToolTipText(entry.getValue().documentation()); + stereotypes.add(b); + $objectMap.put("stereotype-" + stereotype, b); + } + } - interfaceNames = interfaces.stream().map(ObjectModelInterface::getQualifiedName).collect(Collectors.toList()); - Collections.sort(interfaceNames); - interfaceNames.add(0, null); - allClasses.removeAll(interfaceNames); + if (!availableTagValues.isEmpty()) { + + JPanel tagValues = ui.getTagValues(); + tagValues.putClientProperty("tagValues", availableTagValues); + tagValues.setLayout(new GridLayout(0, 2)); + tagValues.removeAll(); + + for (Map.Entry<String, TagValueDefinition> entry : availableTagValues.entrySet()) { + + JTextField field = new JTextField(); + + String tagValue = entry.getKey(); + JLabel label = new JLabel(tagValue); + $objectMap.put("tagValue-" + tagValue, field); + label.setToolTipText(entry.getValue().documentation()); + label.setLabelFor(field); + + tagValues.add(label); + tagValues.add(field); + } } - SwingUtil.fillList(interfacesPanel, interfaceNames, null); + } + + protected void addInterfaces(U ui, Collection<String> interfaces, JList interfacesPanel, List<String> allClasses) { + + allClasses.removeAll(interfaces); + SwingUtil.fillList(interfacesPanel, interfaces, null); } diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/EnumerationContentUI.jaxx b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/EnumerationContentUI.jaxx index a045def..3e8f19e 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/EnumerationContentUI.jaxx +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/EnumerationContentUI.jaxx @@ -34,11 +34,11 @@ public void close() { handler.close(); } <JScrollPane id="literalsScrollPane" columnHeaderView="{literalsHeader}"> <JList id="literals" genericType="String"/> <JPanel id="literalsHeader" layout="{new BorderLayout()}"> - <JTextField id="literalsHeaderName" constraints="BorderLayout.WEST" - onKeyReleased="addLiteralFromEnumeration.setEnabled(!literalsHeaderName.getText().trim().isEmpty())"/> + <JTextField id="literalsHeaderName" constraints="BorderLayout.CENTER" + onKeyReleased="createLiteralFromEnumeration.setEnabled(!literalsHeaderName.getText().trim().isEmpty())"/> <JToolBar id="literalsHeaderActions" constraints="BorderLayout.EAST"> - <JButton id="addLiteralFromEnumeration"/> - <JButton id="removeLiteralFromEnumeration"/> + <JButton id="createLiteralFromEnumeration"/> + <JButton id="deleteLiteralsFromEnumeration"/> </JToolBar> </JPanel> </JScrollPane> diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/EnumerationContentUI.jcss b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/EnumerationContentUI.jcss index f0a9e13..2d7a82a 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/EnumerationContentUI.jcss +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/EnumerationContentUI.jcss @@ -9,7 +9,7 @@ } #enumerationName { - text:{getModel().getUserObject().getName()}; + text:{getModel().getName()}; _property:{"name"}; } @@ -23,13 +23,13 @@ actionIcon:delete; } -#addLiteralFromEnumeration { +#createLiteralFromEnumeration { text:"eugene.editor.add.literal"; actionIcon:add; enabled:false; } -#removeLiteralFromEnumeration { +#deleteLiteralsFromEnumeration { text:"eugene.editor.delete.literal"; actionIcon:delete; enabled:false; diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/EnumerationContentUIHandler.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/EnumerationContentUIHandler.java index a89461b..388e162 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/EnumerationContentUIHandler.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/EnumerationContentUIHandler.java @@ -2,7 +2,7 @@ package org.nuiton.eugene.editor.application.ui.content; import org.nuiton.eugene.editor.application.ModelExtensionHelper; import org.nuiton.eugene.editor.application.ui.tree.node.EnumerationNode; -import org.nuiton.eugene.models.object.ObjectModelEnumeration; +import org.nuiton.eugene.models.object.xml.ObjectModelEnumerationImpl; import javax.swing.DefaultListModel; import javax.swing.ListSelectionModel; @@ -12,7 +12,7 @@ import javax.swing.ListSelectionModel; * * @author Tony Chemit - chemit@codelutin.com */ -public class EnumerationContentUIHandler extends ContenUIHandler<EnumerationNode, EnumerationContentUI> { +public class EnumerationContentUIHandler extends ContentUIHandler<ObjectModelEnumerationImpl, EnumerationNode, EnumerationContentUI> { @Override public void beforeInit(EnumerationContentUI ui) { @@ -25,20 +25,19 @@ public class EnumerationContentUIHandler extends ContenUIHandler<EnumerationNode ModelExtensionHelper helper = getApplicationContext(ui).getModelExtensionHelper(); afterInit(ui, helper.getEnumerationTagValues(), helper.getEnumerationStereotypes()); ui.getLiterals().setModel(new DefaultListModel<>()); - ui.getLiterals().getSelectionModel().addListSelectionListener(e -> ui.getRemoveLiteralFromEnumeration().setEnabled(!((ListSelectionModel) e.getSource()).isSelectionEmpty())); - //ui.getLiteralsHeaderName().addPropertyChangeListener( e -> ui.getAddLiteralFromEnumeration().setEnabled(!Strings.isNullOrEmpty(((JTextField) e.getSource()).getText()))); + ui.getLiterals().getSelectionModel().addListSelectionListener(e -> ui.getDeleteLiteralsFromEnumeration().setEnabled(!((ListSelectionModel) e.getSource()).isSelectionEmpty())); } @Override protected void open(EnumerationContentUI ui, EnumerationNode node) { - ObjectModelEnumeration data = node.getUserObject(); - open(ui, node, data.getStereotypes(), data.getTagValues()); + + super.open(ui, node); DefaultListModel<String> listModel = (DefaultListModel<String>) ui.getLiterals().getModel(); listModel.clear(); - data.getLiterals().forEach(listModel::addElement); + node.getLiterals().forEach(listModel::addElement); } diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/InterfaceContentUI.jaxx b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/InterfaceContentUI.jaxx index 4f229c9..f72ea9f 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/InterfaceContentUI.jaxx +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/InterfaceContentUI.jaxx @@ -42,7 +42,7 @@ public void close() { handler.close(); } onItemStateChanged="addSuperClassFromInterface.setEnabled(event.getStateChange() == ItemEvent.SELECTED)"/> <JToolBar id="superClassesHeaderActions" constraints="BorderLayout.EAST"> <JButton id="addSuperClassFromInterface"/> - <JButton id="removeSuperClassFromInterface"/> + <JButton id="removeSuperClassesFromInterface"/> </JToolBar> </JPanel> </JScrollPane> diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/InterfaceContentUI.jcss b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/InterfaceContentUI.jcss index 407dbf8..7c13f4a 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/InterfaceContentUI.jcss +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/InterfaceContentUI.jcss @@ -9,7 +9,7 @@ } #interfaceName { - text:{getModel().getUserObject().getName()}; + text:{getModel().getName()}; _property:{"name"}; } @@ -39,7 +39,7 @@ enabled:false; } -#removeSuperClassFromInterface { +#removeSuperClassesFromInterface { text:"eugene.editor.delete.superClass"; actionIcon:delete; enabled:false; diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/InterfaceContentUIHandler.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/InterfaceContentUIHandler.java index 0c0d914..f2d6fd5 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/InterfaceContentUIHandler.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/InterfaceContentUIHandler.java @@ -4,7 +4,7 @@ import jaxx.runtime.SwingUtil; import org.nuiton.eugene.editor.application.ModelExtensionHelper; import org.nuiton.eugene.editor.application.ModelHelper; import org.nuiton.eugene.editor.application.ui.tree.node.InterfaceNode; -import org.nuiton.eugene.models.object.ObjectModelInterface; +import org.nuiton.eugene.models.object.xml.ObjectModelInterfaceImpl; import javax.swing.ListSelectionModel; import java.util.ArrayList; @@ -16,7 +16,7 @@ import java.util.List; * * @author Tony Chemit - chemit@codelutin.com */ -public class InterfaceContentUIHandler extends ContenUIHandler<InterfaceNode, InterfaceContentUI> { +public class InterfaceContentUIHandler extends ContentUIHandler<ObjectModelInterfaceImpl, InterfaceNode, InterfaceContentUI> { @Override public void beforeInit(InterfaceContentUI ui) { @@ -28,21 +28,20 @@ public class InterfaceContentUIHandler extends ContenUIHandler<InterfaceNode, In ModelExtensionHelper helper = getApplicationContext(ui).getModelExtensionHelper(); afterInit(ui, helper.getInterfaceTagValues(), helper.getInterfaceStereotypes()); -// ui.getSuperClasses().setModel(new DefaultListModel<>()); - ui.getSuperClasses().getSelectionModel().addListSelectionListener(e -> ui.getRemoveSuperClassFromInterface().setEnabled(!((ListSelectionModel) e.getSource()).isSelectionEmpty())); + ui.getSuperClasses().getSelectionModel().addListSelectionListener(e -> ui.getRemoveSuperClassesFromInterface().setEnabled(!((ListSelectionModel) e.getSource()).isSelectionEmpty())); } @Override protected void open(InterfaceContentUI ui, InterfaceNode node) { - ObjectModelInterface data = node.getUserObject(); - open(ui, node, data.getStereotypes(), data.getTagValues()); + + super.open(ui, node); ModelHelper modelHelper = getApplicationContext(ui).getModelHelper(); List<String> allInterfaces = new ArrayList<>(modelHelper.getAllInterfaces()); - addInterfaces(ui, data.getInterfaces(), ui.getSuperClasses(), allInterfaces); + addInterfaces(ui, node.getSuperClasses(), ui.getSuperClasses(), allInterfaces); //TODO Supprimer toutes les interfaces qui héritent de celle ci Collections.sort(allInterfaces); diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ModelContentUI.jcss b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ModelContentUI.jcss index 660a226..d0edf59 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ModelContentUI.jcss +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ModelContentUI.jcss @@ -9,7 +9,7 @@ } #modelName { - text:{getModel().getUserObject().getName()}; + text:{getModel().getName()}; _property:{"name"}; } diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ModelContentUIHandler.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ModelContentUIHandler.java index b884171..70b63dd 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ModelContentUIHandler.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ModelContentUIHandler.java @@ -2,14 +2,14 @@ package org.nuiton.eugene.editor.application.ui.content; import org.nuiton.eugene.editor.application.ModelExtensionHelper; import org.nuiton.eugene.editor.application.ui.tree.node.ModelNode; -import org.nuiton.eugene.models.object.ObjectModel; +import org.nuiton.eugene.models.object.xml.ObjectModelImpl; /** * Created on 16/09/16. * * @author Tony Chemit - chemit@codelutin.com */ -public class ModelContentUIHandler extends ContenUIHandler<ModelNode, ModelContentUI> { +public class ModelContentUIHandler extends ContentUIHandler<ObjectModelImpl, ModelNode, ModelContentUI> { @Override public void beforeInit(ModelContentUI ui) { @@ -24,11 +24,4 @@ public class ModelContentUIHandler extends ContenUIHandler<ModelNode, ModelConte } - @Override - protected void open(ModelContentUI ui, ModelNode node) { - - ObjectModel data = node.getUserObject(); - open(ui, node, data.getStereotypes(), data.getTagValues()); - - } } diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/Multiplicity.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/Multiplicity.java index 1466188..03fcec5 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/Multiplicity.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/Multiplicity.java @@ -24,11 +24,6 @@ public enum Multiplicity { this.text = text; } - @Override - public String toString() { - return text; - } - public static Multiplicity valueOf(int min, int max) { for (Multiplicity multiplicity : values()) { if (min == multiplicity.min && max == multiplicity.max) { @@ -37,4 +32,21 @@ public enum Multiplicity { } return null; } + + public boolean isMultiple() { + return max == -1; + } + + public int getMin() { + return min; + } + + public int getMax() { + return max; + } + + @Override + public String toString() { + return text; + } } diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/OperationContentUI.jaxx b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/OperationContentUI.jaxx index c53f7e6..1a4c87c 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/OperationContentUI.jaxx +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/OperationContentUI.jaxx @@ -34,19 +34,27 @@ public void close() { handler.close(); } <JLabel id="operationReturnTypeLabel"/> </cell> <cell> - <JComboBox id="operationReturnType" genericType="String" onActionPerformed="model.setReturnType((String)operationReturnType.getSelectedItem())"/> + <JComboBox id="operationReturnType" genericType="String" + onActionPerformed="model.setReturnType((String)operationReturnType.getSelectedItem())"/> </cell> </row> <row> <cell columns="2"> <JPanel id="visibility"> - <JRadioButton id="visibilityPublic" value="public" styleClass="visibilityMode"/> - <JRadioButton id="visibilityPackage" value="" styleClass="visibilityMode"/> - <JRadioButton id="visibilityProtected" value="protected" styleClass="visibilityMode"/> - <JRadioButton id="visibilityPrivate" value="private" styleClass="visibilityMode"/> + <JRadioButton id="visibilityPublic" value="{Visibility.PUBLIC}" styleClass="visibilityMode"/> + <JRadioButton id="visibilityPackage" value="{Visibility.PACKAGE}" styleClass="visibilityMode"/> + <JRadioButton id="visibilityProtected" value="{Visibility.PROTECTED}" styleClass="visibilityMode"/> + <JRadioButton id="visibilityPrivate" value="{Visibility.PRIVATE}" styleClass="visibilityMode"/> + <JSeparator constructorParams="JSeparator.VERTICAL"/> + <JCheckBox id="operationAbstract"/> </JPanel> </cell> </row> + <!--row> + <cell columns="2"> + <JCheckBox id="operationAbstract"/> + </cell> + </row--> </Table> </org.jdesktop.swingx.JXTaskPane> diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/OperationContentUI.jcss b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/OperationContentUI.jcss index 4e84c08..60f4390 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/OperationContentUI.jcss +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/OperationContentUI.jcss @@ -8,7 +8,7 @@ } #operationName { - text:{getModel().getUserObject().getName()}; + text:{getModel().getName()}; _property:{"name"}; } @@ -17,10 +17,16 @@ } #operationReturnType { - selectedItem:{getModel().getUserObject().getReturnType()}; + selectedItem:{getModel().getReturnType()}; _property:{"returnType"}; } +#operationAbstract { + text:"eugene.editor.operation.abstract"; + selected:{getModel().isAbstract()}; + _property:{"abstract"}; +} + #createOperationFromOperation { text:"eugene.editor.create.operation"; actionIcon:add; diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/OperationContentUIHandler.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/OperationContentUIHandler.java index 3c5bb69..a678cd1 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/OperationContentUIHandler.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/OperationContentUIHandler.java @@ -8,6 +8,7 @@ import org.nuiton.eugene.editor.application.ModelHelper; import org.nuiton.eugene.editor.application.ui.tree.node.OperationNode; import org.nuiton.eugene.models.object.ObjectModelOperation; import org.nuiton.eugene.models.object.ObjectModelParameter; +import org.nuiton.eugene.models.object.xml.ObjectModelOperationImpl; import javax.swing.JTable; import javax.swing.ListSelectionModel; @@ -21,7 +22,7 @@ import java.util.List; * * @author Tony Chemit - chemit@codelutin.com */ -public class OperationContentUIHandler extends ContenUIHandler<OperationNode, OperationContentUI> { +public class OperationContentUIHandler extends ContentUIHandler<ObjectModelOperationImpl, OperationNode, OperationContentUI> { @Override public void beforeInit(OperationContentUI ui) { @@ -41,8 +42,9 @@ public class OperationContentUIHandler extends ContenUIHandler<OperationNode, Op protected void open(OperationContentUI ui, OperationNode node) { ObjectModelOperation data = node.getUserObject(); - open(ui, node, data.getStereotypes(), data.getTagValues()); - ui.getVisibilityMode().setSelectedValue(data.getVisibility()); + super.open(ui, node); + + ui.getVisibilityMode().setSelectedValue(node.getVisibility()); Collection<ObjectModelParameter> parameters = data.getParameters(); JTable parametersPanel = ui.getParameters(); diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/PackageContentUI.jcss b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/PackageContentUI.jcss index 5d657fc..a885b7f 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/PackageContentUI.jcss +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/PackageContentUI.jcss @@ -7,7 +7,7 @@ } #packageName { - text:{getModel().getUserObject().getName()}; + text:{getModel().getName()}; _property:{"name"}; } diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/PackageContentUIHandler.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/PackageContentUIHandler.java index 962c4e0..e4f74fd 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/PackageContentUIHandler.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/PackageContentUIHandler.java @@ -2,14 +2,14 @@ package org.nuiton.eugene.editor.application.ui.content; import org.nuiton.eugene.editor.application.ModelExtensionHelper; import org.nuiton.eugene.editor.application.ui.tree.node.PackageNode; -import org.nuiton.eugene.models.object.ObjectModelPackage; +import org.nuiton.eugene.models.object.xml.ObjectModelPackageImpl; /** * Created on 16/09/16. * * @author Tony Chemit - chemit@codelutin.com */ -public class PackageContentUIHandler extends ContenUIHandler<PackageNode, PackageContentUI> { +public class PackageContentUIHandler extends ContentUIHandler<ObjectModelPackageImpl, PackageNode, PackageContentUI> { @Override public void beforeInit(PackageContentUI ui) { @@ -23,11 +23,4 @@ public class PackageContentUIHandler extends ContenUIHandler<PackageNode, Packag } - @Override - protected void open(PackageContentUI ui, PackageNode node) { - - ObjectModelPackage data = node.getUserObject(); - open(ui, node, data.getStereotypes(), data.getTagValues()); - - } } diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/Visibility.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/Visibility.java new file mode 100644 index 0000000..3c2d76a --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/Visibility.java @@ -0,0 +1,33 @@ +package org.nuiton.eugene.editor.application.ui.content; + +/** + * Created on 21/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public enum Visibility { + + PUBLIC("public"), + PACKAGE(""), + PROTECTED("protected"), + PRIVATE("private"); + + private final String model; + + Visibility(String model) { + this.model = model; + } + + public static Visibility fromModel(String model) { + for (Visibility visibility : values()) { + if (model.equals(visibility.model)) { + return visibility; + } + } + return null; + } + + public String toModel() { + return model; + } +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/AddInterfaceFromClassAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/AddInterfaceFromClassAction.java index 427feec..ad0ee7f 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/AddInterfaceFromClassAction.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/AddInterfaceFromClassAction.java @@ -1,8 +1,6 @@ package org.nuiton.eugene.editor.application.ui.content.actions; -import org.apache.commons.lang3.StringUtils; import org.nuiton.eugene.editor.application.ui.content.ClassContentUI; -import org.nuiton.eugene.models.object.xml.ObjectModelInterfaceImpl; import javax.swing.DefaultComboBoxModel; import javax.swing.DefaultListModel; @@ -22,14 +20,8 @@ public class AddInterfaceFromClassAction extends ContentActionSupport<ClassConte protected void execute(ClassContentUI ui) { String interfaceName = (String) ui.getInterfacesHeaderType().getSelectedItem(); - String[] split = interfaceName.split("\\."); - ObjectModelInterfaceImpl newInterface = new ObjectModelInterfaceImpl(); - newInterface.setName(split[split.length - 1]); - newInterface.setPackage(StringUtils.removeEnd(interfaceName, "." + newInterface.getName())); - newInterface.postInit(); - - ui.getModel().getUserObject().getInterfaces().add(newInterface); + ui.getModel().addInterface(interfaceName); ((DefaultListModel<String>) ui.getInterfaces().getModel()).addElement(interfaceName); ((DefaultComboBoxModel) ui.getInterfacesHeaderType().getModel()).removeElement(interfaceName); diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/AddLiteralFromEnumerationAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/AddLiteralFromEnumerationAction.java deleted file mode 100644 index fd45704..0000000 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/AddLiteralFromEnumerationAction.java +++ /dev/null @@ -1,32 +0,0 @@ -package org.nuiton.eugene.editor.application.ui.content.actions; - -import org.nuiton.eugene.editor.application.ui.content.EnumerationContentUI; - -import javax.swing.DefaultListModel; - -/** - * Created on 16/09/16. - * - * @author Tony Chemit - chemit@codelutin.com - */ -public class AddLiteralFromEnumerationAction extends ContentActionSupport<EnumerationContentUI> { - - public AddLiteralFromEnumerationAction(EnumerationContentUI ui) { - super(ui); - } - - @Override - protected void execute(EnumerationContentUI ui) { - - String text = ui.getLiteralsHeaderName().getText().trim(); - - ui.getModel().addLiteral(text); - - ((DefaultListModel<String>) ui.getLiterals().getModel()).addElement(text); - ui.getLiteralsHeaderName().setText(""); - //TODO Comprendre pk le binding ne fonctionne pas - ui.getAddLiteralFromEnumeration().setEnabled(false); - - } - -} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/AddSuperClassFromInterfaceAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/AddSuperClassFromInterfaceAction.java index a39bfa6..5893d1f 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/AddSuperClassFromInterfaceAction.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/AddSuperClassFromInterfaceAction.java @@ -20,8 +20,8 @@ public class AddSuperClassFromInterfaceAction extends ContentActionSupport<Inter protected void execute(InterfaceContentUI ui) { String superClassName = (String) ui.getSuperClassesHeaderType().getSelectedItem(); - - ui.getModel().addInterface(superClassName); + + ui.getModel().addSuperClass(superClassName); ((DefaultListModel<String>) ui.getSuperClasses().getModel()).addElement(superClassName); ((DefaultComboBoxModel) ui.getSuperClassesHeaderType().getModel()).removeElement(superClassName); diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/ContentActionSupport.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/ContentActionSupport.java index 424f45a..0e4855a 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/ContentActionSupport.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/ContentActionSupport.java @@ -6,6 +6,8 @@ import org.nuiton.eugene.editor.application.ui.tree.EugeneEditorTree; import org.nuiton.eugene.editor.application.ui.tree.node.NodeSupport; import javax.swing.AbstractAction; +import javax.swing.tree.DefaultTreeModel; +import javax.swing.tree.TreePath; import java.awt.event.ActionEvent; /** @@ -41,7 +43,7 @@ public abstract class ContentActionSupport<U extends ContentUI<?>> extends Abstr } protected EugeneEditorTree getTree(U ui) { - return getMainUi(ui).getProjectNavigation(); + return getMainUi(ui).getProjectNavigation(); } protected NodeSupport getSelectedNode(NodeSupport currentNode) { @@ -52,4 +54,16 @@ public abstract class ContentActionSupport<U extends ContentUI<?>> extends Abstr } return newSelectedNode; } + + protected void removeNodeThenSelected(U ui, NodeSupport currentNode, NodeSupport newSelectedNode) { + + EugeneEditorTree tree = getTree(ui); + + DefaultTreeModel treeModel = tree.getModel(); + treeModel.removeNodeFromParent(currentNode); + + TreePath path = new TreePath(treeModel.getPathToRoot(newSelectedNode)); + tree.setSelectionPath(path); + + } } diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateAttributeFromAttributeAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateAttributeFromAttributeAction.java index a2df3ad..350b9c0 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateAttributeFromAttributeAction.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateAttributeFromAttributeAction.java @@ -3,7 +3,7 @@ package org.nuiton.eugene.editor.application.ui.content.actions; import org.nuiton.eugene.editor.application.ui.content.AttributeContentUI; import org.nuiton.eugene.editor.application.ui.tree.EugeneEditorTree; import org.nuiton.eugene.editor.application.ui.tree.node.AttributeNode; -import org.nuiton.eugene.editor.application.ui.tree.node.NodeSupport; +import org.nuiton.eugene.editor.application.ui.tree.node.ClassifierNodeSupport; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreePath; @@ -28,7 +28,7 @@ public class CreateAttributeFromAttributeAction extends ContentActionSupport<Att protected void execute(AttributeContentUI ui) { AttributeNode currentNode = ui.getModel(); - NodeSupport parentNode = currentNode.getParent(); + ClassifierNodeSupport parentNode = (ClassifierNodeSupport) currentNode.getParent(); AttributeNode newNode = parentNode.addAttribute(); diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateAttributeFromClassAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateAttributeFromClassAction.java index 2273630..b356df7 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateAttributeFromClassAction.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateAttributeFromClassAction.java @@ -3,7 +3,7 @@ package org.nuiton.eugene.editor.application.ui.content.actions; import org.nuiton.eugene.editor.application.ui.content.ClassContentUI; import org.nuiton.eugene.editor.application.ui.tree.EugeneEditorTree; import org.nuiton.eugene.editor.application.ui.tree.node.AttributeNode; -import org.nuiton.eugene.editor.application.ui.tree.node.NodeSupport; +import org.nuiton.eugene.editor.application.ui.tree.node.ClassNode; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreePath; @@ -27,7 +27,7 @@ public class CreateAttributeFromClassAction extends ContentActionSupport<ClassCo @Override protected void execute(ClassContentUI ui) { - NodeSupport currentNode = ui.getModel(); + ClassNode currentNode = ui.getModel(); AttributeNode newNode = currentNode.addAttribute(); EugeneEditorTree tree = getTree(ui); diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateAttributeFromInterfaceAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateAttributeFromInterfaceAction.java index f75fa25..01a28fd 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateAttributeFromInterfaceAction.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateAttributeFromInterfaceAction.java @@ -3,7 +3,7 @@ package org.nuiton.eugene.editor.application.ui.content.actions; import org.nuiton.eugene.editor.application.ui.content.InterfaceContentUI; import org.nuiton.eugene.editor.application.ui.tree.EugeneEditorTree; import org.nuiton.eugene.editor.application.ui.tree.node.AttributeNode; -import org.nuiton.eugene.editor.application.ui.tree.node.NodeSupport; +import org.nuiton.eugene.editor.application.ui.tree.node.InterfaceNode; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreePath; @@ -27,7 +27,7 @@ public class CreateAttributeFromInterfaceAction extends ContentActionSupport<Int @Override protected void execute(InterfaceContentUI ui) { - NodeSupport currentNode = ui.getModel(); + InterfaceNode currentNode = ui.getModel(); AttributeNode newNode = currentNode.addAttribute(); EugeneEditorTree tree = getTree(ui); diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateLiteralFromEnumerationAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateLiteralFromEnumerationAction.java index 7ef273c..b202947 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateLiteralFromEnumerationAction.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateLiteralFromEnumerationAction.java @@ -2,6 +2,8 @@ package org.nuiton.eugene.editor.application.ui.content.actions; import org.nuiton.eugene.editor.application.ui.content.EnumerationContentUI; +import javax.swing.DefaultListModel; + /** * Created on 16/09/16. * @@ -16,6 +18,15 @@ public class CreateLiteralFromEnumerationAction extends ContentActionSupport<Enu @Override protected void execute(EnumerationContentUI ui) { + String text = ui.getLiteralsHeaderName().getText().trim(); + + ui.getModel().addLiteral(text); + + ((DefaultListModel<String>) ui.getLiterals().getModel()).addElement(text); + ui.getLiteralsHeaderName().setText(""); + //TODO Comprendre pk le binding ne fonctionne pas + ui.getCreateLiteralFromEnumeration().setEnabled(false); + } } diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateOperationFromOperationAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateOperationFromOperationAction.java index 882f9f4..dd5c2af 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateOperationFromOperationAction.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateOperationFromOperationAction.java @@ -2,7 +2,7 @@ package org.nuiton.eugene.editor.application.ui.content.actions; import org.nuiton.eugene.editor.application.ui.content.OperationContentUI; import org.nuiton.eugene.editor.application.ui.tree.EugeneEditorTree; -import org.nuiton.eugene.editor.application.ui.tree.node.NodeSupport; +import org.nuiton.eugene.editor.application.ui.tree.node.ClassifierNodeSupport; import org.nuiton.eugene.editor.application.ui.tree.node.OperationNode; import javax.swing.tree.DefaultTreeModel; @@ -28,7 +28,7 @@ public class CreateOperationFromOperationAction extends ContentActionSupport<Ope protected void execute(OperationContentUI ui) { OperationNode currentNode = ui.getModel(); - NodeSupport parentNode = currentNode.getParent(); + ClassifierNodeSupport parentNode = (ClassifierNodeSupport) currentNode.getParent(); OperationNode newNode = parentNode.addOperation(); diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreatePackageFromModelAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreatePackageFromModelAction.java index 26e8495..58d735c 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreatePackageFromModelAction.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreatePackageFromModelAction.java @@ -28,7 +28,7 @@ public class CreatePackageFromModelAction extends ContentActionSupport<ModelCont protected void execute(ModelContentUI ui) { ModelNode currentNode = ui.getModel(); - + PackageNode newNode = currentNode.addPackage(""); EugeneEditorTree tree = getTree(ui); diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateParameterFromOperationAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateParameterFromOperationAction.java index 32c0424..2c38ffe 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateParameterFromOperationAction.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateParameterFromOperationAction.java @@ -26,6 +26,7 @@ public class CreateParameterFromOperationAction extends ContentActionSupport<Ope OperationNode currentNode = ui.getModel(); + //FIXME Utiliser un bean d'ui ObjectModelParameterImpl newData = currentNode.addParameter(); ((ParameterTableModel) ui.getParameters().getModel()).add(newData); diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeleteAttributeFromAttributeAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeleteAttributeFromAttributeAction.java index 61dc3db..62f38a7 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeleteAttributeFromAttributeAction.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeleteAttributeFromAttributeAction.java @@ -1,12 +1,10 @@ package org.nuiton.eugene.editor.application.ui.content.actions; import org.nuiton.eugene.editor.application.ui.content.AttributeContentUI; -import org.nuiton.eugene.editor.application.ui.tree.EugeneEditorTree; +import org.nuiton.eugene.editor.application.ui.tree.node.AttributeNode; +import org.nuiton.eugene.editor.application.ui.tree.node.ClassifierNodeSupport; import org.nuiton.eugene.editor.application.ui.tree.node.NodeSupport; -import javax.swing.tree.DefaultTreeModel; -import javax.swing.tree.TreePath; - /** * Created on 16/09/16. * @@ -26,19 +24,14 @@ public class DeleteAttributeFromAttributeAction extends ContentActionSupport<Att @Override protected void execute(AttributeContentUI ui) { - NodeSupport currentNode = ui.getModel(); - - currentNode.getParent().removeAttribute(ui.getModel().getName()); + AttributeNode currentNode = ui.getModel(); - EugeneEditorTree tree = getTree(ui); + ClassifierNodeSupport parent = (ClassifierNodeSupport) currentNode.getParent(); + parent.removeAttribute(ui.getModel().getName()); NodeSupport newSelectedNode = getSelectedNode(currentNode); - DefaultTreeModel treeModel = tree.getModel(); - treeModel.removeNodeFromParent(currentNode); - - TreePath path = new TreePath(treeModel.getPathToRoot(newSelectedNode)); - tree.setSelectionPath(path); + removeNodeThenSelected(ui, currentNode, newSelectedNode); } diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeleteClassFromClassAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeleteClassFromClassAction.java index 96e324e..3caf0fa 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeleteClassFromClassAction.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeleteClassFromClassAction.java @@ -1,13 +1,9 @@ package org.nuiton.eugene.editor.application.ui.content.actions; import org.nuiton.eugene.editor.application.ui.content.ClassContentUI; -import org.nuiton.eugene.editor.application.ui.tree.EugeneEditorTree; import org.nuiton.eugene.editor.application.ui.tree.node.ClassNode; import org.nuiton.eugene.editor.application.ui.tree.node.NodeSupport; -import javax.swing.tree.DefaultTreeModel; -import javax.swing.tree.TreePath; - /** * Created on 16/09/16. * @@ -31,15 +27,9 @@ public class DeleteClassFromClassAction extends ContentActionSupport<ClassConten currentNode.getRoot().removeClass(ui.getModel().getUserObject().getQualifiedName()); - EugeneEditorTree tree = getTree(ui); - NodeSupport newSelectedNode = getSelectedNode(currentNode); - DefaultTreeModel treeModel = tree.getModel(); - treeModel.removeNodeFromParent(currentNode); - - TreePath path = new TreePath(treeModel.getPathToRoot(newSelectedNode)); - tree.setSelectionPath(path); + removeNodeThenSelected(ui, currentNode, newSelectedNode); } diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeleteEnumerationFromEnumerationAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeleteEnumerationFromEnumerationAction.java index d8774c6..b99de40 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeleteEnumerationFromEnumerationAction.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeleteEnumerationFromEnumerationAction.java @@ -1,13 +1,9 @@ package org.nuiton.eugene.editor.application.ui.content.actions; import org.nuiton.eugene.editor.application.ui.content.EnumerationContentUI; -import org.nuiton.eugene.editor.application.ui.tree.EugeneEditorTree; import org.nuiton.eugene.editor.application.ui.tree.node.EnumerationNode; import org.nuiton.eugene.editor.application.ui.tree.node.NodeSupport; -import javax.swing.tree.DefaultTreeModel; -import javax.swing.tree.TreePath; - /** * Created on 16/09/16. * @@ -31,15 +27,9 @@ public class DeleteEnumerationFromEnumerationAction extends ContentActionSupport currentNode.getRoot().removeEnumeration(ui.getModel().getUserObject().getQualifiedName()); - EugeneEditorTree tree = getTree(ui); - NodeSupport newSelectedNode = getSelectedNode(currentNode); - DefaultTreeModel treeModel = tree.getModel(); - treeModel.removeNodeFromParent(currentNode); - - TreePath path = new TreePath(treeModel.getPathToRoot(newSelectedNode)); - tree.setSelectionPath(path); + removeNodeThenSelected(ui, currentNode, newSelectedNode); } diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeleteInterfaceFromInterfaceAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeleteInterfaceFromInterfaceAction.java index bb2fb40..aa6140f 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeleteInterfaceFromInterfaceAction.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeleteInterfaceFromInterfaceAction.java @@ -1,13 +1,9 @@ package org.nuiton.eugene.editor.application.ui.content.actions; import org.nuiton.eugene.editor.application.ui.content.InterfaceContentUI; -import org.nuiton.eugene.editor.application.ui.tree.EugeneEditorTree; import org.nuiton.eugene.editor.application.ui.tree.node.InterfaceNode; import org.nuiton.eugene.editor.application.ui.tree.node.NodeSupport; -import javax.swing.tree.DefaultTreeModel; -import javax.swing.tree.TreePath; - /** * Created on 16/09/16. * @@ -26,15 +22,9 @@ public class DeleteInterfaceFromInterfaceAction extends ContentActionSupport<Int currentNode.getRoot().removeInterface(currentNode.getUserObject().getQualifiedName()); - EugeneEditorTree tree = getTree(ui); - NodeSupport newSelectedNode = getSelectedNode(currentNode); - DefaultTreeModel treeModel = tree.getModel(); - treeModel.removeNodeFromParent(currentNode); - - TreePath path = new TreePath(treeModel.getPathToRoot(newSelectedNode)); - tree.setSelectionPath(path); + removeNodeThenSelected(ui, currentNode, newSelectedNode); } diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/RemoveLiteralFromEnumerationAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeleteLiteralsFromEnumerationAction.java similarity index 81% rename from eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/RemoveLiteralFromEnumerationAction.java rename to eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeleteLiteralsFromEnumerationAction.java index f223c0a..0049982 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/RemoveLiteralFromEnumerationAction.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeleteLiteralsFromEnumerationAction.java @@ -10,9 +10,9 @@ import javax.swing.DefaultListModel; * * @author Tony Chemit - chemit@codelutin.com */ -public class RemoveLiteralFromEnumerationAction extends ContentActionSupport<EnumerationContentUI> { +public class DeleteLiteralsFromEnumerationAction extends ContentActionSupport<EnumerationContentUI> { - public RemoveLiteralFromEnumerationAction(EnumerationContentUI ui) { + public DeleteLiteralsFromEnumerationAction(EnumerationContentUI ui) { super(ui); } diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeleteOperationFromOperationAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeleteOperationFromOperationAction.java index 522d36d..8af0415 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeleteOperationFromOperationAction.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeleteOperationFromOperationAction.java @@ -1,13 +1,10 @@ package org.nuiton.eugene.editor.application.ui.content.actions; import org.nuiton.eugene.editor.application.ui.content.OperationContentUI; -import org.nuiton.eugene.editor.application.ui.tree.EugeneEditorTree; +import org.nuiton.eugene.editor.application.ui.tree.node.ClassifierNodeSupport; import org.nuiton.eugene.editor.application.ui.tree.node.NodeSupport; import org.nuiton.eugene.editor.application.ui.tree.node.OperationNode; -import javax.swing.tree.DefaultTreeModel; -import javax.swing.tree.TreePath; - /** * Created on 16/09/16. * @@ -29,16 +26,12 @@ public class DeleteOperationFromOperationAction extends ContentActionSupport<Ope OperationNode currentNode = ui.getModel(); - currentNode.getParent().removeOperation(ui.getModel().getName()); - - EugeneEditorTree tree = getTree(ui); + ClassifierNodeSupport parentNode = (ClassifierNodeSupport) currentNode.getParent(); + parentNode.removeOperation(ui.getModel().getName()); NodeSupport newSelectedNode = getSelectedNode(currentNode); - DefaultTreeModel treeModel = tree.getModel(); - treeModel.removeNodeFromParent(currentNode); - - tree.setSelectionPath(new TreePath(treeModel.getPathToRoot(newSelectedNode))); + removeNodeThenSelected(ui, currentNode, newSelectedNode); } diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeletePackageFromPackageAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeletePackageFromPackageAction.java index 90cfb1a..338e64e 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeletePackageFromPackageAction.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeletePackageFromPackageAction.java @@ -1,13 +1,9 @@ package org.nuiton.eugene.editor.application.ui.content.actions; import org.nuiton.eugene.editor.application.ui.content.PackageContentUI; -import org.nuiton.eugene.editor.application.ui.tree.EugeneEditorTree; import org.nuiton.eugene.editor.application.ui.tree.node.NodeSupport; import org.nuiton.eugene.editor.application.ui.tree.node.PackageNode; -import javax.swing.tree.DefaultTreeModel; -import javax.swing.tree.TreePath; - /** * Created on 16/09/16. * @@ -30,14 +26,9 @@ public class DeletePackageFromPackageAction extends ContentActionSupport<Package PackageNode currentNode = ui.getModel(); currentNode.getRoot().removePackage(ui.getModel().getName()); - EugeneEditorTree tree = getTree(ui); - NodeSupport newSelectedNode = getSelectedNode(currentNode); - DefaultTreeModel treeModel = tree.getModel(); - treeModel.removeNodeFromParent(currentNode); - - tree.setSelectionPath(new TreePath(treeModel.getPathToRoot(newSelectedNode))); + removeNodeThenSelected(ui, currentNode, newSelectedNode); } diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/RemoveInterfaceFromClassAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/RemoveInterfacesFromClassAction.java similarity index 66% rename from eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/RemoveInterfaceFromClassAction.java rename to eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/RemoveInterfacesFromClassAction.java index 267a4bf..f2ef925 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/RemoveInterfaceFromClassAction.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/RemoveInterfacesFromClassAction.java @@ -1,7 +1,7 @@ package org.nuiton.eugene.editor.application.ui.content.actions; import org.nuiton.eugene.editor.application.ui.content.ClassContentUI; -import org.nuiton.eugene.editor.application.ui.tree.node.ModelNode; +import org.nuiton.eugene.editor.application.ui.tree.node.ClassNode; import javax.swing.DefaultListModel; @@ -10,22 +10,22 @@ import javax.swing.DefaultListModel; * * @author Tony Chemit - chemit@codelutin.com */ -public class RemoveInterfaceFromClassAction extends ContentActionSupport<ClassContentUI> { +public class RemoveInterfacesFromClassAction extends ContentActionSupport<ClassContentUI> { - public RemoveInterfaceFromClassAction(ClassContentUI ui) { + public RemoveInterfacesFromClassAction(ClassContentUI ui) { super(ui); } @Override protected void execute(ClassContentUI ui) { - ModelNode modelNode = ui.getModel().getRoot(); + ClassNode currentNode = ui.getModel(); DefaultListModel listModel = (DefaultListModel) ui.getInterfaces().getModel(); - + for (String interfaceName : ui.getInterfaces().getSelectedValuesList()) { - modelNode.removeInterface(interfaceName); + currentNode.removeInterface(interfaceName); listModel.removeElement(interfaceName); diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/RemoveSuperClassFromInterfaceAction.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/RemoveSuperClassesFromInterfaceAction.java similarity index 66% rename from eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/RemoveSuperClassFromInterfaceAction.java rename to eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/RemoveSuperClassesFromInterfaceAction.java index f042a3d..b165dbd 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/RemoveSuperClassFromInterfaceAction.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/RemoveSuperClassesFromInterfaceAction.java @@ -1,7 +1,7 @@ package org.nuiton.eugene.editor.application.ui.content.actions; import org.nuiton.eugene.editor.application.ui.content.InterfaceContentUI; -import org.nuiton.eugene.editor.application.ui.tree.node.ModelNode; +import org.nuiton.eugene.editor.application.ui.tree.node.InterfaceNode; import javax.swing.DefaultListModel; import java.util.List; @@ -11,9 +11,9 @@ import java.util.List; * * @author Tony Chemit - chemit@codelutin.com */ -public class RemoveSuperClassFromInterfaceAction extends ContentActionSupport<InterfaceContentUI> { +public class RemoveSuperClassesFromInterfaceAction extends ContentActionSupport<InterfaceContentUI> { - public RemoveSuperClassFromInterfaceAction(InterfaceContentUI ui) { + public RemoveSuperClassesFromInterfaceAction(InterfaceContentUI ui) { super(ui); } @@ -22,11 +22,11 @@ public class RemoveSuperClassFromInterfaceAction extends ContentActionSupport<In List<String> interfaceNames = ui.getSuperClasses().getSelectedValuesList(); - ModelNode currentNode = ui.getModel().getRoot(); + InterfaceNode currentNode = ui.getModel(); for (String interfaceName : interfaceNames) { - currentNode.removeInterface(interfaceName); + currentNode.removeSuperClass(interfaceName); ((DefaultListModel) ui.getSuperClasses().getModel()).removeElement(interfaceName); ui.getSuperClassesHeaderType().addItem(interfaceName); diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/EugeneEditorTreeSelectionModel.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/EugeneEditorTreeSelectionModel.java index 29cfa94..776baa7 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/EugeneEditorTreeSelectionModel.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/EugeneEditorTreeSelectionModel.java @@ -4,6 +4,8 @@ import org.nuiton.eugene.editor.application.ui.ContentUIManager; import org.nuiton.eugene.editor.application.ui.EugeneEditorUI; import org.nuiton.eugene.editor.application.ui.content.ContentUI; import org.nuiton.eugene.editor.application.ui.tree.node.NodeSupport; +import org.nuiton.eugene.models.stereotype.StereotypeAble; +import org.nuiton.eugene.models.tagvalue.TagValueAble; import javax.swing.JComponent; import javax.swing.JLabel; @@ -79,7 +81,7 @@ public class EugeneEditorTreeSelectionModel extends DefaultTreeSelectionModel { } - protected <M, N extends NodeSupport<M>> void openNode(N node, ContentUIManager contentUIManager) { + protected <M extends StereotypeAble & TagValueAble, N extends NodeSupport<M>> void openNode(N node, ContentUIManager contentUIManager) { node.removePropertyChangeListener(reloadNodeChangeListener); node.addPropertyChangeListener(reloadNodeChangeListener); @@ -88,12 +90,16 @@ public class EugeneEditorTreeSelectionModel extends DefaultTreeSelectionModel { content.setContextValue(node, CLIENT_PROPERTY_NODE); - content.setLeftDecoration(new JLabel(node.getIcon())); + JLabel leftDecoration = new JLabel(node.getBigIcon()); + leftDecoration.setHorizontalAlignment(JLabel.CENTER); + leftDecoration.setSize(32,32); - content.open(node); + content.setLeftDecoration(leftDecoration); ui.getSplitpane2().setLeftComponent((JComponent) content); + content.open(node); + } } diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/AttributeNode.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/AttributeNode.java index 457cca4..e325fd1 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/AttributeNode.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/AttributeNode.java @@ -1,10 +1,11 @@ package org.nuiton.eugene.editor.application.ui.tree.node; -import com.google.common.collect.ImmutableSet; +import org.nuiton.eugene.editor.application.ui.content.AggregationMode; +import org.nuiton.eugene.editor.application.ui.content.Multiplicity; +import org.nuiton.eugene.editor.application.ui.content.Visibility; +import org.nuiton.eugene.models.object.ObjectModelAttribute; import org.nuiton.eugene.models.object.xml.ObjectModelAttributeImpl; -import java.util.Set; - import static org.nuiton.i18n.I18n.t; /** @@ -14,11 +15,16 @@ import static org.nuiton.i18n.I18n.t; */ public class AttributeNode extends NodeSupport<ObjectModelAttributeImpl> { + private static final String PROPERTY_NAME = "name"; private static final String PROPERTY_VISIBILITY = "visibility"; private static final String PROPERTY_TYPE = "type"; + private static final String PROPERTY_BIDI = "bidi"; + private static final String PROPERTY_AGGREGATION_MODE = "aggregationMode"; + private static final String PROPERTY_MULTIPLICITY = "multiplicity"; + private static final String PROPERTY_DEFAULT_VALUE = "defaultValue"; public AttributeNode(ObjectModelAttributeImpl objectModelAttribute) { - super(objectModelAttribute, PROPERTY_NAME, PROPERTY_TYPE, PROPERTY_VISIBILITY); + super(objectModelAttribute, PROPERTY_NAME); } @Override @@ -34,13 +40,13 @@ public class AttributeNode extends NodeSupport<ObjectModelAttributeImpl> { firePropertyChange(PROPERTY_NAME, oldValue, name); } - public String getVisibility() { - return getUserObject().getVisibility(); + public Visibility getVisibility() { + return Visibility.fromModel(getUserObject().getVisibility()); } - public void setVisibility(String visibility) { - String oldValue = getVisibility(); - getUserObject().setVisibility(visibility); + public void setVisibility(Visibility visibility) { + Visibility oldValue = getVisibility(); + getUserObject().setVisibility(visibility.toModel()); firePropertyChange(PROPERTY_VISIBILITY, oldValue, visibility); } @@ -60,12 +66,76 @@ public class AttributeNode extends NodeSupport<ObjectModelAttributeImpl> { } @Override - public Set<String> getReloadProperties() { - return ImmutableSet.of(PROPERTY_NAME, PROPERTY_MODIFIED); - } - - @Override public String toString() { return getName(); } + + public boolean isBidi() { + ObjectModelAttribute reverseAttribute = getUserObject().getReverseAttribute(); + return reverseAttribute != null && reverseAttribute.isNavigable(); + } + + public void setBidi(boolean bidi) { + boolean oldValue = isBidi(); + + ObjectModelAttributeImpl reverseAttribute = (ObjectModelAttributeImpl) getUserObject().getReverseAttribute(); + //TODO Traiter la cas où il n'y a pas de reverser attribute + if (reverseAttribute != null) { + reverseAttribute.setNavigable(bidi); + } + firePropertyChange(PROPERTY_BIDI, oldValue, bidi); + } + + public AggregationMode getAggregationMode() { + if (getUserObject().isComposite()) { + return AggregationMode.COMPOSE; + } + if (getUserObject().isAggregate()) { + return AggregationMode.AGGREGATE; + } + return AggregationMode.NONE; + } + + public void setAggregationMode(AggregationMode aggregationMode) { + AggregationMode oldValue = getAggregationMode(); + switch (aggregationMode) { + case NONE: + getUserObject().setComposite(false); + getUserObject().setAggregate(false); + break; + case AGGREGATE: + getUserObject().setComposite(false); + getUserObject().setAggregate(true); + break; + case COMPOSE: + getUserObject().setComposite(true); + getUserObject().setAggregate(false); + break; + } + firePropertyChange(PROPERTY_AGGREGATION_MODE, oldValue, aggregationMode); + } + + public String getDefaultValue() { + return getUserObject().getDefaultValue(); + } + + public void setDefaultValue(String defaultValue) { + if ("".equals(defaultValue)) { + defaultValue = null; + } + String oldValue = getDefaultValue(); + getUserObject().setDefaultValue(defaultValue); + firePropertyChange(PROPERTY_DEFAULT_VALUE, oldValue, defaultValue); + } + + public Multiplicity getMultiplicity() { + return Multiplicity.valueOf(getUserObject().getMinMultiplicity(), getUserObject().getMaxMultiplicity()); + } + + public void setMultiplicity(Multiplicity multiplicity) { + Multiplicity oldValue = getMultiplicity(); + getUserObject().setMinMultiplicity(multiplicity.getMin()); + getUserObject().setMaxMultiplicity(multiplicity.getMax()); + firePropertyChange(PROPERTY_MULTIPLICITY, oldValue, multiplicity); + } } diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/ClassNode.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/ClassNode.java index 1b0b4d5..f294ff7 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/ClassNode.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/ClassNode.java @@ -1,11 +1,15 @@ package org.nuiton.eugene.editor.application.ui.tree.node; -import com.google.common.collect.ImmutableSet; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.nuiton.eugene.models.object.ObjectModelClass; +import org.nuiton.eugene.models.object.ObjectModelInterface; import org.nuiton.eugene.models.object.xml.ObjectModelClassImpl; +import org.nuiton.eugene.models.object.xml.ObjectModelInterfaceImpl; import java.util.Collection; -import java.util.Set; +import java.util.List; +import java.util.stream.Collectors; import static org.nuiton.i18n.I18n.t; @@ -14,30 +18,23 @@ import static org.nuiton.i18n.I18n.t; * * @author Tony Chemit - chemit@codelutin.com */ -public class ClassNode extends NodeSupport<ObjectModelClassImpl> { +public class ClassNode extends ClassifierNodeSupport<ObjectModelClassImpl> { public static final String PROPERTY_SUPER_CLASS = "superClass"; + public static final String PROPERTY_INTERFACES = "interfaces"; public ClassNode(ObjectModelClassImpl objectModelClass) { - super(objectModelClass, PROPERTY_NAME); + super(objectModelClass, ClassifierNodeSupport.PROPERTY_NAME); } @Override - public String getName() { - return getUserObject().getName(); - } - - @Override - public void setName(String name) { - String oldValue = getName(); - getUserObject().setName(name); - getUserObject().postInit(); - firePropertyChange(PROPERTY_NAME, oldValue, name); + public String getCreateName() { + return t("eugene.editor.new.class"); } public String getSuperClass() { Collection<ObjectModelClass> superclasses = getUserObject().getSuperclasses(); - return superclasses.isEmpty() ? null : superclasses.iterator().next().getQualifiedName(); + return CollectionUtils.isEmpty(superclasses) ? null : superclasses.iterator().next().getQualifiedName(); } public void setSuperClass(String superClass) { @@ -49,23 +46,27 @@ public class ClassNode extends NodeSupport<ObjectModelClassImpl> { firePropertyChange(PROPERTY_SUPER_CLASS, oldValue, superClass); } - @Override - public String getCreateName() { - return t("eugene.editor.new.class"); + public List<String> getInterfaces() { + return getUserObject().getInterfaces().stream().map(ObjectModelInterface::getQualifiedName).collect(Collectors.toList()); } - @Override - public Set<String> getReloadProperties() { - return ImmutableSet.of(PROPERTY_NAME, PROPERTY_MODIFIED); - } + public void addInterface(String interfaceName) { + String[] split = interfaceName.split("\\."); - @Override - public String toString() { - return getName(); + ObjectModelInterfaceImpl newInterface = new ObjectModelInterfaceImpl(); + newInterface.setName(split[split.length - 1]); + newInterface.setPackage(StringUtils.removeEnd(interfaceName, "." + newInterface.getName())); + newInterface.postInit(); + + List<String> oldValue = getInterfaces(); + getUserObject().getInterfaces().add(newInterface); + firePropertyChange(PROPERTY_INTERFACES, oldValue, getInterfaces()); } - public String getPackageName() { - return getParent().getName(); + public void removeInterface(String interfaceName) { + List<String> oldValue = getInterfaces(); + getUserObject().removeInterface(interfaceName); + firePropertyChange(PROPERTY_INTERFACES, oldValue, getInterfaces()); } } diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/ClassifierNodeSupport.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/ClassifierNodeSupport.java new file mode 100644 index 0000000..9a18d3f --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/ClassifierNodeSupport.java @@ -0,0 +1,103 @@ +package org.nuiton.eugene.editor.application.ui.tree.node; + +import org.nuiton.eugene.models.object.ObjectModelAttribute; +import org.nuiton.eugene.models.object.ObjectModelOperation; +import org.nuiton.eugene.models.object.xml.ObjectModelAttributeImpl; +import org.nuiton.eugene.models.object.xml.ObjectModelClassifierImpl; +import org.nuiton.eugene.models.object.xml.ObjectModelOperationImpl; + +import java.util.ArrayList; +import java.util.Collection; + +/** + * Created on 21/09/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public abstract class ClassifierNodeSupport<M extends ObjectModelClassifierImpl> extends NodeSupport<M> { + + static final String PROPERTY_NAME = "name"; + static final String PROPERTY_ATTRIBUTES = "attributes"; + static final String PROPERTY_OPERATIONS = "operations"; + + protected ClassifierNodeSupport(M userObject, String... reloadProperties) { + super(userObject, reloadProperties); + } + + @Override + public String getName() { + return getUserObject().getName(); + } + + @Override + public void setName(String name) { + String oldValue = getName(); + getUserObject().setName(name); + getUserObject().postInit(); + firePropertyChange(PROPERTY_NAME, oldValue, name); + } + + public Collection<ObjectModelAttribute> getAttributes() { + return getUserObject().getAttributes(); + } + + public void setAttributes(Collection<ObjectModelAttribute> attributes) { + // non utilisé mais nécessaire pour l'écoute sur la propriété stereotypes + } + + public AttributeNode addAttribute() { + Collection<ObjectModelAttribute> oldValue = new ArrayList<>(getAttributes()); + + ObjectModelAttributeImpl newData = new ObjectModelAttributeImpl(); + newData.setName(""); + + getUserObject().addAttribute(newData); + + AttributeNode node = new AttributeNode(newData); + node.setCreate(true); + firePropertyChange(PROPERTY_ATTRIBUTES, oldValue, getAttributes()); + return node; + } + + public void removeAttribute(String name) { + Collection<ObjectModelAttribute> oldValue = new ArrayList<>(getAttributes()); + getUserObject().removeAttribute(name); + firePropertyChange(PROPERTY_ATTRIBUTES, oldValue, getAttributes()); + } + + public Collection<ObjectModelOperation> getOperations() { + return getUserObject().getOperations(); + } + + public void setOperations(Collection<ObjectModelOperation> operations) { + // non utilisé mais nécessaire pour l'écoute sur la propriété stereotypes + } + + public OperationNode addOperation() { + Collection<ObjectModelOperation> oldValue = new ArrayList<>(getOperations()); + ObjectModelOperationImpl newData = new ObjectModelOperationImpl(); + newData.setName(""); + + getUserObject().addOperation(newData); + + OperationNode node = new OperationNode(newData); + node.setCreate(true); + firePropertyChange(PROPERTY_OPERATIONS, oldValue, getOperations()); + return node; + } + + public void removeOperation(String name) { + Collection<ObjectModelOperation> oldValue = new ArrayList<>(getOperations()); + getUserObject().removeOperation(name); + firePropertyChange(PROPERTY_OPERATIONS, oldValue, getOperations()); + } + + public String getPackageName() { + return getUserObject().getPackageName(); + } + + @Override + public String toString() { + return getName(); + } +} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/EnumerationNode.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/EnumerationNode.java index 5b4fa1b..4a154ee 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/EnumerationNode.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/EnumerationNode.java @@ -1,10 +1,10 @@ package org.nuiton.eugene.editor.application.ui.tree.node; -import com.google.common.collect.ImmutableSet; import org.nuiton.eugene.models.object.xml.ObjectModelEnumerationImpl; import org.nuiton.eugene.models.object.xml.ObjectModelImplRef; -import java.util.Set; +import java.util.ArrayList; +import java.util.List; import static org.nuiton.i18n.I18n.t; @@ -15,6 +15,9 @@ import static org.nuiton.i18n.I18n.t; */ public class EnumerationNode extends NodeSupport<ObjectModelEnumerationImpl> { + private static final String PROPERTY_NAME = "name"; + private static final String PROPERTY_LITERALS = "literals"; + public EnumerationNode(ObjectModelEnumerationImpl objectModelEnumeration) { super(objectModelEnumeration, PROPERTY_NAME); } @@ -38,26 +41,29 @@ public class EnumerationNode extends NodeSupport<ObjectModelEnumerationImpl> { } @Override - public Set<String> getReloadProperties() { - return ImmutableSet.of(PROPERTY_NAME, PROPERTY_MODIFIED); - } - - @Override public String toString() { return getName(); } public String getPackageName() { - return getParent().getName(); + return getUserObject().getPackageName(); + } + + public List<String> getLiterals() { + return new ArrayList<>(getUserObject().getLiterals()); } public void addLiteral(String literal) { ObjectModelImplRef ref = new ObjectModelImplRef(); ref.setName(literal); + List<String> oldValue = getLiterals(); getUserObject().addLiteral(ref); + firePropertyChange(PROPERTY_LITERALS, oldValue, getLiterals()); } public void removeLiteral(String literal) { + List<String> oldValue = getLiterals(); getUserObject().removeLiteral(literal); + firePropertyChange(PROPERTY_LITERALS, oldValue, getLiterals()); } } diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/InterfaceNode.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/InterfaceNode.java index c2a5fca..1fe26d0 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/InterfaceNode.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/InterfaceNode.java @@ -1,10 +1,11 @@ package org.nuiton.eugene.editor.application.ui.tree.node; -import com.google.common.collect.ImmutableSet; import org.apache.commons.lang3.StringUtils; +import org.nuiton.eugene.models.object.ObjectModelInterface; import org.nuiton.eugene.models.object.xml.ObjectModelInterfaceImpl; -import java.util.Set; +import java.util.List; +import java.util.stream.Collectors; import static org.nuiton.i18n.I18n.t; @@ -13,23 +14,12 @@ import static org.nuiton.i18n.I18n.t; * * @author Tony Chemit - chemit@codelutin.com */ -public class InterfaceNode extends NodeSupport<ObjectModelInterfaceImpl> { +public class InterfaceNode extends ClassifierNodeSupport<ObjectModelInterfaceImpl> { - public InterfaceNode(ObjectModelInterfaceImpl objectModelInterface) { - super(objectModelInterface, PROPERTY_NAME); - } - - @Override - public String getName() { - return getUserObject().getName(); - } + private static final String PROPERTY_SUPER_CLASSSES = "superClasses"; - @Override - public void setName(String name) { - String oldValue = getName(); - getUserObject().setName(name); - getUserObject().postInit(); - firePropertyChange(PROPERTY_NAME, oldValue, name); + public InterfaceNode(ObjectModelInterfaceImpl objectModelInterface) { + super(objectModelInterface, ClassifierNodeSupport.PROPERTY_NAME); } @Override @@ -37,17 +27,13 @@ public class InterfaceNode extends NodeSupport<ObjectModelInterfaceImpl> { return t("eugene.editor.new.interface"); } - @Override - public Set<String> getReloadProperties() { - return ImmutableSet.of(PROPERTY_NAME, PROPERTY_MODIFIED); + public List<String> getSuperClasses() { + return getUserObject().getInterfaces().stream().map(ObjectModelInterface::getQualifiedName).collect(Collectors.toList()); } - @Override - public String toString() { - return getName(); - } + public void addSuperClass(String superClassName) { - public void addInterface(String superClassName) { + List<String> oldValue = getSuperClasses(); String[] split = superClassName.split("\\."); @@ -57,9 +43,13 @@ public class InterfaceNode extends NodeSupport<ObjectModelInterfaceImpl> { newInterface.postInit(); getUserObject().getInterfaces().add(newInterface); + firePropertyChange(PROPERTY_SUPER_CLASSSES, oldValue, getSuperClasses()); } - public String getPackageName() { - return getParent().getName(); + public void removeSuperClass(String superClassName) { + List<String> oldValue = getSuperClasses(); + getUserObject().removeInterface(superClassName); + firePropertyChange(PROPERTY_SUPER_CLASSSES, oldValue, getSuperClasses()); } + } diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/ModelNode.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/ModelNode.java index 337a404..73a749d 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/ModelNode.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/ModelNode.java @@ -1,6 +1,5 @@ package org.nuiton.eugene.editor.application.ui.tree.node; -import com.google.common.collect.ImmutableSet; import org.nuiton.eugene.models.object.ObjectModelClass; import org.nuiton.eugene.models.object.ObjectModelEnumeration; import org.nuiton.eugene.models.object.ObjectModelInterface; @@ -11,7 +10,7 @@ import org.nuiton.eugene.models.object.xml.ObjectModelImpl; import org.nuiton.eugene.models.object.xml.ObjectModelInterfaceImpl; import org.nuiton.eugene.models.object.xml.ObjectModelPackageImpl; -import java.util.Set; +import java.util.List; import java.util.stream.Collectors; import static org.nuiton.i18n.I18n.t; @@ -23,6 +22,7 @@ import static org.nuiton.i18n.I18n.t; */ public class ModelNode extends NodeSupport<ObjectModelImpl> { + private static final String PROPERTY_NAME = "name"; public static final String PROPERTY_CLASSES = "classes"; public static final String PROPERTY_INTERFACES = "interfaces"; public static final String PROPERTY_ENUMERATIONS = "enumerations"; @@ -50,11 +50,6 @@ public class ModelNode extends NodeSupport<ObjectModelImpl> { } @Override - public Set<String> getReloadProperties() { - return ImmutableSet.of(PROPERTY_NAME, PROPERTY_MODIFIED); - } - - @Override public String toString() { return getName(); } @@ -63,22 +58,31 @@ public class ModelNode extends NodeSupport<ObjectModelImpl> { super.add(packageNode); } + public List<String> getPackages() { + return getUserObject().getPackages().stream().map(ObjectModelPackage::getName).collect(Collectors.toList()); + } public PackageNode addPackage(String packageName) { ObjectModelPackageImpl newData = new ObjectModelPackageImpl(); newData.setName(""); + List<String> oldValue = getPackages(); getUserObject().addPackage(newData); - firePropertyChange(PROPERTY_PACKAGES, null, getUserObject().getPackages().stream().map(ObjectModelPackage::getName).collect(Collectors.toList())); + firePropertyChange(PROPERTY_PACKAGES, oldValue, getPackages()); PackageNode node = new PackageNode(newData); node.setCreate(true); return node; } public void removePackage(String name) { + List<String> oldValue = getPackages(); getUserObject().removePackage(name); - firePropertyChange(PROPERTY_PACKAGES, null, getUserObject().getPackages().stream().map(ObjectModelPackage::getName).collect(Collectors.toList())); + firePropertyChange(PROPERTY_PACKAGES, oldValue, getPackages()); + } + + public List<String> getClasses() { + return getUserObject().getClasses().stream().map(ObjectModelClass::getName).collect(Collectors.toList()); } public ClassNode addClass(String packageName) { @@ -87,16 +91,22 @@ public class ModelNode extends NodeSupport<ObjectModelImpl> { newData.setName(""); newData.setPackage(packageName); + List<String> oldValue = getClasses(); getUserObject().addClass(newData); - firePropertyChange(PROPERTY_CLASSES, null, getUserObject().getClasses().stream().map(ObjectModelClass::getName).collect(Collectors.toList())); + firePropertyChange(PROPERTY_CLASSES, oldValue, getClasses()); ClassNode node = new ClassNode(newData); node.setCreate(true); return node; } public void removeClass(String qualifiedName) { + List<String> oldValue = getClasses(); getUserObject().removeClass(qualifiedName); - firePropertyChange(PROPERTY_CLASSES, null, getUserObject().getClasses().stream().map(ObjectModelClass::getName).collect(Collectors.toList())); + firePropertyChange(PROPERTY_CLASSES, oldValue, getClasses()); + } + + public List<String> getInterfaces() { + return getUserObject().getInterfaces().stream().map(ObjectModelInterface::getName).collect(Collectors.toList()); } public InterfaceNode addInterface(String packageName) { @@ -105,16 +115,22 @@ public class ModelNode extends NodeSupport<ObjectModelImpl> { newData.setName(""); newData.setPackage(packageName); + List<String> oldValue = getInterfaces(); getUserObject().addInterface(newData); - firePropertyChange(PROPERTY_INTERFACES, null, getUserObject().getInterfaces().stream().map(ObjectModelInterface::getName).collect(Collectors.toList())); + firePropertyChange(PROPERTY_INTERFACES, oldValue, getInterfaces()); InterfaceNode node = new InterfaceNode(newData); node.setCreate(true); return node; } public void removeInterface(String qualifiedName) { + List<String> oldValue = getInterfaces(); getUserObject().removeInterface(qualifiedName); - firePropertyChange(PROPERTY_INTERFACES, null, getUserObject().getInterfaces().stream().map(ObjectModelInterface::getName).collect(Collectors.toList())); + firePropertyChange(PROPERTY_INTERFACES, oldValue, getInterfaces()); + } + + public List<String> getEnumerations() { + return getUserObject().getEnumerations().stream().map(ObjectModelEnumeration::getName).collect(Collectors.toList()); } public EnumerationNode addEnumeration(String packageName) { @@ -122,16 +138,18 @@ public class ModelNode extends NodeSupport<ObjectModelImpl> { newData.setName(""); newData.setPackage(packageName); + List<String> oldValue = getEnumerations(); getUserObject().addEnumeration(newData); - firePropertyChange(PROPERTY_ENUMERATIONS, null, getUserObject().getEnumerations().stream().map(ObjectModelEnumeration::getName).collect(Collectors.toList())); + firePropertyChange(PROPERTY_ENUMERATIONS, oldValue, getEnumerations()); EnumerationNode node = new EnumerationNode(newData); node.setCreate(true); return node; } public void removeEnumeration(String qualifiedName) { + List<String> oldValue = getEnumerations(); getUserObject().removeEnumeration(qualifiedName); - firePropertyChange(PROPERTY_ENUMERATIONS, null, getUserObject().getEnumerations().stream().map(ObjectModelEnumeration::getName).collect(Collectors.toList())); + firePropertyChange(PROPERTY_ENUMERATIONS, oldValue, getEnumerations()); } } diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/NodeSupport.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/NodeSupport.java index c22170f..986db74 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/NodeSupport.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/NodeSupport.java @@ -1,10 +1,12 @@ package org.nuiton.eugene.editor.application.ui.tree.node; +import com.google.common.collect.ImmutableSet; import jaxx.runtime.SwingUtil; import org.apache.commons.lang3.StringUtils; -import org.nuiton.eugene.models.object.xml.ObjectModelAttributeImpl; -import org.nuiton.eugene.models.object.xml.ObjectModelClassifierImpl; -import org.nuiton.eugene.models.object.xml.ObjectModelOperationImpl; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.eugene.models.stereotype.StereotypeAble; +import org.nuiton.eugene.models.tagvalue.TagValueAble; import org.nuiton.util.beans.BeanMonitor; import javax.swing.Icon; @@ -15,6 +17,9 @@ import javax.swing.tree.TreeNode; import java.beans.Introspector; import java.beans.PropertyChangeListener; import java.util.Enumeration; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; import java.util.Objects; import java.util.Set; @@ -23,25 +28,32 @@ import java.util.Set; * * @author Tony Chemit - chemit@codelutin.com */ -public abstract class NodeSupport<M> extends DefaultMutableTreeNode { +public abstract class NodeSupport<M extends StereotypeAble & TagValueAble> extends DefaultMutableTreeNode { + + /** Logger. */ + private static final Log log = LogFactory.getLog(NodeSupport.class); - public static final String PROPERTY_NAME = "name"; public static final String PROPERTY_MODIFIED = "modified"; public static final String PROPERTY_VALID = "valid"; public static final String PROPERTY_CREATE = "create"; + public static final String PROPERTY_STEREOTYPES = "stereotypes"; + public static final String PROPERTY_TAG_VALUES = "tagValues"; protected ImageIcon icon; + protected ImageIcon bigIcon; private boolean create; private boolean modified; private boolean valid; private final SwingPropertyChangeSupport pcs = new SwingPropertyChangeSupport(this); - private final BeanMonitor monitor = new BeanMonitor(); + private final BeanMonitor monitor; + private final Set<String> reloadProperties; - public NodeSupport(M userObject, String... monitorProperties) { + public NodeSupport(M userObject, String... reloadProperties) { super(userObject); + this.reloadProperties = ImmutableSet.<String>builder().add(reloadProperties).add(PROPERTY_MODIFIED).build(); + monitor = new BeanMonitor(true, PROPERTY_MODIFIED); monitor.setBean(this); - monitor.setProperties(monitorProperties); addPropertyChangeListener(evt -> { if (!Objects.equals(NodeSupport.PROPERTY_MODIFIED, evt.getPropertyName())) { setModified(monitor.wasModified()); @@ -61,13 +73,42 @@ public abstract class NodeSupport<M> extends DefaultMutableTreeNode { return icon; } + public Icon getBigIcon() { + if (bigIcon == null) { + bigIcon = SwingUtil.createIcon("type", Introspector.decapitalize(StringUtils.removeEnd(getClass().getSimpleName(), "Node") + "2x")); + } + return icon; + } + public abstract String getName(); public abstract void setName(String name); public abstract String getCreateName(); - public abstract Set<String> getReloadProperties(); + public Set<String> getReloadProperties() { + return reloadProperties; + } + + public Set<String> getStereotypes() { + return getUserObject().getStereotypes(); + } + + public void addStereotype(String stereotype) { + Set<String> oldValue = new HashSet<>(getStereotypes()); + getUserObject().addStereotype(stereotype); + firePropertyChange(PROPERTY_STEREOTYPES, oldValue, getStereotypes()); + } + + public Map<String, String> getTagValues() { + return getUserObject().getTagValues(); + } + + public void addTagValue(String tagValue, String value) { + Map<String, String> oldValue = new HashMap<>(getTagValues()); + getUserObject().addTagValue(tagValue, value); + firePropertyChange(PROPERTY_TAG_VALUES, oldValue, getTagValues()); + } public boolean isCreate() { return create; @@ -154,42 +195,4 @@ public abstract class NodeSupport<M> extends DefaultMutableTreeNode { protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) { pcs.firePropertyChange(propertyName, oldValue, newValue); } - - public AttributeNode addAttribute() { - - ObjectModelAttributeImpl newData = new ObjectModelAttributeImpl(); - newData.setName(""); - - ObjectModelClassifierImpl classifier = (ObjectModelClassifierImpl) getUserObject(); - classifier.addAttribute(newData); - - AttributeNode node = new AttributeNode(newData); - node.setCreate(true); - return node; - } - - public void removeOperation(String name) { - - ObjectModelClassifierImpl classifier = (ObjectModelClassifierImpl) getUserObject(); - classifier.removeOperation(name); - - } - - public void removeAttribute(String name) { - ObjectModelClassifierImpl classifier = (ObjectModelClassifierImpl) getUserObject(); - classifier.removeAttribute(name); - } - - public OperationNode addOperation() { - - ObjectModelOperationImpl newData = new ObjectModelOperationImpl(); - newData.setName(""); - - ObjectModelClassifierImpl classifier = (ObjectModelClassifierImpl) getUserObject(); - classifier.addOperation(newData); - - OperationNode node = new OperationNode(newData); - node.setCreate(true); - return node; - } } diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/OperationNode.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/OperationNode.java index 49a6be2..e8ec815 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/OperationNode.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/OperationNode.java @@ -1,10 +1,12 @@ package org.nuiton.eugene.editor.application.ui.tree.node; -import com.google.common.collect.ImmutableSet; +import org.nuiton.eugene.editor.application.ui.content.Visibility; +import org.nuiton.eugene.models.object.ObjectModelParameter; import org.nuiton.eugene.models.object.xml.ObjectModelOperationImpl; import org.nuiton.eugene.models.object.xml.ObjectModelParameterImpl; -import java.util.Set; +import java.util.ArrayList; +import java.util.List; import static org.nuiton.i18n.I18n.t; @@ -15,12 +17,14 @@ import static org.nuiton.i18n.I18n.t; */ public class OperationNode extends NodeSupport<ObjectModelOperationImpl> { + private static final String PROPERTY_NAME = "name"; private static final String PROPERTY_VISIBILITY = "visibility"; private static final String PROPERTY_RETURN_TYPE = "returnType"; private static final String PROPERTY_ABSTRACT = "abstract"; + private static final String PROPERTY_PARAMETERS = "parameters"; public OperationNode(ObjectModelOperationImpl objectModelAttribute) { - super(objectModelAttribute, PROPERTY_NAME, PROPERTY_ABSTRACT, PROPERTY_RETURN_TYPE); + super(objectModelAttribute, PROPERTY_NAME); } @Override @@ -36,13 +40,13 @@ public class OperationNode extends NodeSupport<ObjectModelOperationImpl> { firePropertyChange(PROPERTY_NAME, oldValue, name); } - public String getVisibility() { - return getUserObject().getVisibility(); + public Visibility getVisibility() { + return Visibility.fromModel(getUserObject().getVisibility()); } - public void setVisibility(String visibility) { - String oldValue = getVisibility(); - getUserObject().setVisibility(visibility); + public void setVisibility(Visibility visibility) { + Visibility oldValue = getVisibility(); + getUserObject().setVisibility(visibility.toModel()); firePropertyChange(PROPERTY_VISIBILITY, oldValue, visibility); } @@ -74,24 +78,27 @@ public class OperationNode extends NodeSupport<ObjectModelOperationImpl> { } @Override - public Set<String> getReloadProperties() { - return ImmutableSet.of(PROPERTY_NAME, PROPERTY_MODIFIED); - } - - @Override public String toString() { return getName(); } - public void removeParameter(String name) { - getUserObject().removeParameter(name); + public List<ObjectModelParameter> getParameters() { + return new ArrayList<>(getUserObject().getParameters()); } public ObjectModelParameterImpl addParameter() { - + Object oldValue = getParameters(); ObjectModelParameterImpl newData = new ObjectModelParameterImpl(); newData.setName(""); getUserObject().addParameter(newData); + firePropertyChange(PROPERTY_PARAMETERS, oldValue, getParameters()); return newData; } + + public void removeParameter(String name) { + + Object oldValue = getParameters(); + getUserObject().removeParameter(name); + firePropertyChange(PROPERTY_PARAMETERS, oldValue, getParameters()); + } } diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/PackageNode.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/PackageNode.java index 457f305..ab556fc 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/PackageNode.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/PackageNode.java @@ -1,10 +1,7 @@ package org.nuiton.eugene.editor.application.ui.tree.node; -import com.google.common.collect.ImmutableSet; import org.nuiton.eugene.models.object.xml.ObjectModelPackageImpl; -import java.util.Set; - import static org.nuiton.i18n.I18n.t; /** @@ -14,6 +11,8 @@ import static org.nuiton.i18n.I18n.t; */ public class PackageNode extends NodeSupport<ObjectModelPackageImpl> { + private static final String PROPERTY_NAME = "name"; + public PackageNode(ObjectModelPackageImpl objectModelPackage) { super(objectModelPackage, PROPERTY_NAME); } @@ -37,11 +36,6 @@ public class PackageNode extends NodeSupport<ObjectModelPackageImpl> { } @Override - public Set<String> getReloadProperties() { - return ImmutableSet.of(PROPERTY_NAME, PROPERTY_MODIFIED); - } - - @Override public String toString() { return getName(); } diff --git a/eugene-editor-maven-plugin/src/main/resources/i18n/eugene-editor-maven-plugin_en_GB.properties b/eugene-editor-maven-plugin/src/main/resources/i18n/eugene-editor-maven-plugin_en_GB.properties index 6281c5d..c97d278 100644 --- a/eugene-editor-maven-plugin/src/main/resources/i18n/eugene-editor-maven-plugin_en_GB.properties +++ b/eugene-editor-maven-plugin/src/main/resources/i18n/eugene-editor-maven-plugin_en_GB.properties @@ -68,6 +68,7 @@ eugene.editor.new.model=New model eugene.editor.new.operation=New operation eugene.editor.new.package=New package eugene.editor.operation=Operation +eugene.editor.operation.abstract=Abstract eugene.editor.operation.name=Name eugene.editor.operation.returnType=Return type eugene.editor.package=Package @@ -81,14 +82,14 @@ eugene.editor.superClass=Super class eugene.editor.superClasses=Super classes eugene.editor.tagValues=Tag values eugene.editor.title.view.navigation=Navigation -eugene.editor.validator.attribute.mandatory.name= -eugene.editor.validator.attribute.mandatory.type= -eugene.editor.validator.enumeration.mandatory.name= -eugene.editor.validator.interface.mandatory.name= -eugene.editor.validator.model.mandatory.name= -eugene.editor.validator.operation.mandatory.name= -eugene.editor.validator.operation.mandatory.type= -eugene.editor.validator.package.mandatory.name= +eugene.editor.validator.attribute.mandatory.name=Name is mandatory. +eugene.editor.validator.attribute.mandatory.type=Type is mandatory. +eugene.editor.validator.enumeration.mandatory.name=Name is mandatory. +eugene.editor.validator.interface.mandatory.name=Name is mandatory. +eugene.editor.validator.model.mandatory.name=Name is mandatory. +eugene.editor.validator.operation.mandatory.name=Name is mandatory. +eugene.editor.validator.operation.mandatory.returnType=Return type is mandatory. +eugene.editor.validator.package.mandatory.name=Name is mandatory. eugene.editor.view.message=Messages eugene.editor.visibility=Visibility eugene.editor.visibility.package=package diff --git a/eugene-editor-maven-plugin/src/main/resources/i18n/eugene-editor-maven-plugin_fr_FR.properties b/eugene-editor-maven-plugin/src/main/resources/i18n/eugene-editor-maven-plugin_fr_FR.properties index 78aa015..d631246 100644 --- a/eugene-editor-maven-plugin/src/main/resources/i18n/eugene-editor-maven-plugin_fr_FR.properties +++ b/eugene-editor-maven-plugin/src/main/resources/i18n/eugene-editor-maven-plugin_fr_FR.properties @@ -20,7 +20,7 @@ eugene.editor.aggregation.aggregate=Aggrège eugene.editor.aggregation.compose=Compose eugene.editor.aggregation.none=Aucun eugene.editor.attribute=Attribut -eugene.editor.attribute.defaultValue=Valuer par défaut +eugene.editor.attribute.defaultValue=Valeur par défaut eugene.editor.attribute.name=Nom eugene.editor.attribute.type=Type eugene.editor.bidi=Bi directionnel @@ -68,6 +68,7 @@ eugene.editor.new.model=Nouveau modèle eugene.editor.new.operation=Nouvelle opération eugene.editor.new.package=Nouveau paquetage eugene.editor.operation=Opération +eugene.editor.operation.abstract=Abstrait eugene.editor.operation.name=Nom eugene.editor.operation.returnType=Type de retour eugene.editor.package=Paquetage @@ -81,14 +82,14 @@ eugene.editor.superClass=Classe parent eugene.editor.superClasses=Classes parent eugene.editor.tagValues=Tag values eugene.editor.title.view.navigation=Navigation -eugene.editor.validator.attribute.mandatory.name= -eugene.editor.validator.attribute.mandatory.type= -eugene.editor.validator.enumeration.mandatory.name= -eugene.editor.validator.interface.mandatory.name= -eugene.editor.validator.model.mandatory.name= -eugene.editor.validator.operation.mandatory.name= -eugene.editor.validator.operation.mandatory.type= -eugene.editor.validator.package.mandatory.name= +eugene.editor.validator.attribute.mandatory.name=Nom obligatoire. +eugene.editor.validator.attribute.mandatory.type=Type obligatoire. +eugene.editor.validator.enumeration.mandatory.name=Nom obligatoire. +eugene.editor.validator.interface.mandatory.name=Nom obligatoire. +eugene.editor.validator.model.mandatory.name=Nom obligatoire. +eugene.editor.validator.operation.mandatory.name=Nom obligatoire. +eugene.editor.validator.operation.mandatory.returnType=Type de retour obligatoire. +eugene.editor.validator.package.mandatory.name=Nom obligatoire. eugene.editor.view.message=Messages eugene.editor.visibility=Visibilité eugene.editor.visibility.package=paquetage diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/action-redo.png b/eugene-editor-maven-plugin/src/main/resources/icons/action-redo.png new file mode 100644 index 0000000..8254518 Binary files /dev/null and b/eugene-editor-maven-plugin/src/main/resources/icons/action-redo.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/action-rollback.png b/eugene-editor-maven-plugin/src/main/resources/icons/action-rollback.png new file mode 100644 index 0000000..4271001 Binary files /dev/null and b/eugene-editor-maven-plugin/src/main/resources/icons/action-rollback.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/action-undo.png b/eugene-editor-maven-plugin/src/main/resources/icons/action-undo.png new file mode 100644 index 0000000..c237634 Binary files /dev/null and b/eugene-editor-maven-plugin/src/main/resources/icons/action-undo.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/type-attribute2x.png b/eugene-editor-maven-plugin/src/main/resources/icons/type-attribute2x.png new file mode 100644 index 0000000..23a3f03 Binary files /dev/null and b/eugene-editor-maven-plugin/src/main/resources/icons/type-attribute2x.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/type-class2x.png b/eugene-editor-maven-plugin/src/main/resources/icons/type-class2x.png new file mode 100644 index 0000000..c185028 Binary files /dev/null and b/eugene-editor-maven-plugin/src/main/resources/icons/type-class2x.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/type-enumeration2x.png b/eugene-editor-maven-plugin/src/main/resources/icons/type-enumeration2x.png new file mode 100644 index 0000000..7945a77 Binary files /dev/null and b/eugene-editor-maven-plugin/src/main/resources/icons/type-enumeration2x.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/type-field.png b/eugene-editor-maven-plugin/src/main/resources/icons/type-field.png new file mode 100644 index 0000000..7c91fcf Binary files /dev/null and b/eugene-editor-maven-plugin/src/main/resources/icons/type-field.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/type-field2x.png b/eugene-editor-maven-plugin/src/main/resources/icons/type-field2x.png new file mode 100644 index 0000000..f55d6f6 Binary files /dev/null and b/eugene-editor-maven-plugin/src/main/resources/icons/type-field2x.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/type-interface2x.png b/eugene-editor-maven-plugin/src/main/resources/icons/type-interface2x.png new file mode 100644 index 0000000..fdebfd6 Binary files /dev/null and b/eugene-editor-maven-plugin/src/main/resources/icons/type-interface2x.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/type-model2x.png b/eugene-editor-maven-plugin/src/main/resources/icons/type-model2x.png new file mode 100644 index 0000000..696f6c6 Binary files /dev/null and b/eugene-editor-maven-plugin/src/main/resources/icons/type-model2x.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/type-operation2x.png b/eugene-editor-maven-plugin/src/main/resources/icons/type-operation2x.png new file mode 100644 index 0000000..3921232 Binary files /dev/null and b/eugene-editor-maven-plugin/src/main/resources/icons/type-operation2x.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/type-package2x.png b/eugene-editor-maven-plugin/src/main/resources/icons/type-package2x.png new file mode 100644 index 0000000..e85b674 Binary files /dev/null and b/eugene-editor-maven-plugin/src/main/resources/icons/type-package2x.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/type-value.png b/eugene-editor-maven-plugin/src/main/resources/icons/type-value.png new file mode 100644 index 0000000..3b6ccb8 Binary files /dev/null and b/eugene-editor-maven-plugin/src/main/resources/icons/type-value.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/type-value2x.png b/eugene-editor-maven-plugin/src/main/resources/icons/type-value2x.png new file mode 100644 index 0000000..32f913c Binary files /dev/null and b/eugene-editor-maven-plugin/src/main/resources/icons/type-value2x.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/type-variable.png b/eugene-editor-maven-plugin/src/main/resources/icons/type-variable.png new file mode 100644 index 0000000..074107a Binary files /dev/null and b/eugene-editor-maven-plugin/src/main/resources/icons/type-variable.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/icons/type-variable2x.png b/eugene-editor-maven-plugin/src/main/resources/icons/type-variable2x.png new file mode 100644 index 0000000..9bff27e Binary files /dev/null and b/eugene-editor-maven-plugin/src/main/resources/icons/type-variable2x.png differ diff --git a/eugene-editor-maven-plugin/src/main/resources/org/nuiton/eugene/editor/application/ui/tree/node/OperationNode-error-validation.xml b/eugene-editor-maven-plugin/src/main/resources/org/nuiton/eugene/editor/application/ui/tree/node/OperationNode-error-validation.xml index f492323..f5e1960 100644 --- a/eugene-editor-maven-plugin/src/main/resources/org/nuiton/eugene/editor/application/ui/tree/node/OperationNode-error-validation.xml +++ b/eugene-editor-maven-plugin/src/main/resources/org/nuiton/eugene/editor/application/ui/tree/node/OperationNode-error-validation.xml @@ -36,7 +36,7 @@ <field name="returnType"> <field-validator type="requiredstring" short-circuit="true"> - <message>eugene.editor.validator.operation.mandatory.type</message> + <message>eugene.editor.validator.operation.mandatory.returnType</message> </field-validator> </field> diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelAttributeImpl.java b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelAttributeImpl.java index 2dc8fc0..8a17d10 100644 --- a/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelAttributeImpl.java +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelAttributeImpl.java @@ -112,6 +112,14 @@ public class ObjectModelAttributeImpl extends ObjectModelParameterImpl addOrRemoveModifier(ObjectModelJavaModifier.TRANSIENT, isTransient); } + public void setAggregate(boolean isTransient) { + addOrRemoveModifier(ObjectModelUMLModifier.AGGREGATE, isTransient); + } + + public void setComposite(boolean isTransient) { + addOrRemoveModifier(ObjectModelUMLModifier.COMPOSITE, isTransient); + } + public void setStatic(boolean isStatic) { super.setStatic(isStatic); } diff --git a/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassifierImpl.java b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassifierImpl.java index 965b61d..1a66f4c 100644 --- a/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassifierImpl.java +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassifierImpl.java @@ -302,4 +302,15 @@ public abstract class ObjectModelClassifierImpl extends ObjectModelElementImpl i } } } + + public void removeInterface(String interfaceName) { + Iterator<ObjectModelInterface> iterator = interfaces.iterator(); + while (iterator.hasNext()) { + ObjectModelInterface modelInterface = iterator.next(); + if (interfaceName.equals(modelInterface.getQualifiedName())) { + iterator.remove(); + break; + } + } + } } diff --git a/pom.xml b/pom.xml index 1c784d9..da5fcc8 100644 --- a/pom.xml +++ b/pom.xml @@ -141,7 +141,7 @@ <ciViewId>Eugene</ciViewId> <processorPluginVersion>1.3</processorPluginVersion> - <nuitonUtilsVersion>3.0-rc-15</nuitonUtilsVersion> + <nuitonUtilsVersion>3.0-SNAPSHOT</nuitonUtilsVersion> <nuitonI18nVersion>3.6.2</nuitonI18nVersion> <plantumlVersion>8048</plantumlVersion> <snakeyamlVersion>1.17</snakeyamlVersion> -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/editor in repository eugene. See https://gitlab.nuiton.org/nuiton/eugene.git commit 6c6747b174da7fec53993cb989ada8f791820106 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Sep 26 12:29:09 2016 +0200 Rethink stereotypes and tag values API (See #4042) --- .../EugeneEditorApplicationContext.java | 10 +- .../editor/application/ModelExtensionHelper.java | 167 ++++++++++----------- .../editor/application/ui/ContentUIManager.java | 6 +- .../application/ui/content/ContentUIHandler.java | 28 ++-- .../ui/tree/EugeneEditorTreeSelectionModel.java | 6 +- .../application/ui/tree/node/NodeSupport.java | 6 +- .../eugene/editor/plugin/EugeneEditorMojo.java | 37 +++-- 7 files changed, 130 insertions(+), 130 deletions(-) diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/EugeneEditorApplicationContext.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/EugeneEditorApplicationContext.java index d23a2e9..26d8bc3 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/EugeneEditorApplicationContext.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/EugeneEditorApplicationContext.java @@ -1,9 +1,9 @@ package org.nuiton.eugene.editor.application; import org.nuiton.eugene.editor.application.config.EugeneEditorConfig; +import org.nuiton.eugene.models.extension.stereotype.provider.AggregateStereotypeMetadatasProvider; +import org.nuiton.eugene.models.extension.tagvalue.provider.AggregateTagValueMetadatasProvider; import org.nuiton.eugene.models.object.ObjectModel; -import org.nuiton.eugene.models.stereotype.AggregateStereotypeDefinitionProvider; -import org.nuiton.eugene.models.tagvalue.AggregateTagValueDefinitionProvider; import org.nuiton.i18n.I18n; import org.nuiton.i18n.init.DefaultI18nInitializer; @@ -27,15 +27,15 @@ public class EugeneEditorApplicationContext { public EugeneEditorApplicationContext(EugeneEditorConfig config, ClassLoader classLoader, - AggregateTagValueDefinitionProvider tagValueDefinitionProvider, - AggregateStereotypeDefinitionProvider stereotypeDefinitionProvider, + AggregateTagValueMetadatasProvider tagValueMetadatasProvider, + AggregateStereotypeMetadatasProvider stereotypeMetadatasProvider, ObjectModel objectModel) { I18n.init(new DefaultI18nInitializer("EugeneEditor-i18n"), Locale.FRANCE); this.config = config; this.classLoader = classLoader; - this.modelExtensionHelper = new ModelExtensionHelper(tagValueDefinitionProvider, stereotypeDefinitionProvider); + this.modelExtensionHelper = new ModelExtensionHelper(tagValueMetadatasProvider, stereotypeMetadatasProvider); this.modelHelper = new ModelHelper(objectModel); this.objectModel = objectModel; this.lock = new Object(); diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ModelExtensionHelper.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ModelExtensionHelper.java index a2451b5..ffab245 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ModelExtensionHelper.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ModelExtensionHelper.java @@ -1,5 +1,11 @@ package org.nuiton.eugene.editor.application; +import org.nuiton.eugene.models.extension.stereotype.StereotypeMetadata; +import org.nuiton.eugene.models.extension.stereotype.provider.AggregateStereotypeMetadatasProvider; +import org.nuiton.eugene.models.extension.stereotype.provider.StereotypeMetadatasProvider; +import org.nuiton.eugene.models.extension.tagvalue.TagValueMetadata; +import org.nuiton.eugene.models.extension.tagvalue.provider.AggregateTagValueMetadatasProvider; +import org.nuiton.eugene.models.extension.tagvalue.provider.TagValueMetadatasProvider; import org.nuiton.eugene.models.object.ObjectModel; import org.nuiton.eugene.models.object.ObjectModelAttribute; import org.nuiton.eugene.models.object.ObjectModelClassifier; @@ -7,14 +13,7 @@ import org.nuiton.eugene.models.object.ObjectModelEnumeration; import org.nuiton.eugene.models.object.ObjectModelInterface; import org.nuiton.eugene.models.object.ObjectModelOperation; import org.nuiton.eugene.models.object.ObjectModelPackage; -import org.nuiton.eugene.models.stereotype.AggregateStereotypeDefinitionProvider; -import org.nuiton.eugene.models.stereotype.StereotypeDefinition; -import org.nuiton.eugene.models.stereotype.StereotypeDefinitionProvider; -import org.nuiton.eugene.models.tagvalue.AggregateTagValueDefinitionProvider; -import org.nuiton.eugene.models.tagvalue.TagValueDefinition; -import org.nuiton.eugene.models.tagvalue.TagValueDefinitionProvider; - -import java.util.Arrays; + import java.util.Map; import java.util.Set; import java.util.TreeMap; @@ -27,132 +26,132 @@ import java.util.stream.Collectors; */ public class ModelExtensionHelper { - private final AggregateTagValueDefinitionProvider tagValueDefinitionProvider; - private final AggregateStereotypeDefinitionProvider stereotypeDefinitionProvider; - - private final Map<String, TagValueDefinition> modelTagValues; - private final Map<String, TagValueDefinition> packageTagValues; - private final Map<String, TagValueDefinition> classTagValues; - private final Map<String, TagValueDefinition> interfaceTagValues; - private final Map<String, TagValueDefinition> enumerationTagValues; - private final Map<String, TagValueDefinition> attributeTagValues; - private final Map<String, TagValueDefinition> operationTagValues; - - private final Map<String, StereotypeDefinition> modelStereotypes; - private final Map<String, StereotypeDefinition> packageStereotypes; - private final Map<String, StereotypeDefinition> classStereotypes; - private final Map<String, StereotypeDefinition> interfaceStereotypes; - private final Map<String, StereotypeDefinition> enumerationStereotypes; - private final Map<String, StereotypeDefinition> attributeStereotypes; - private final Map<String, StereotypeDefinition> operationStereotypes; - - public ModelExtensionHelper(AggregateTagValueDefinitionProvider tagValueDefinitionProvider, - AggregateStereotypeDefinitionProvider stereotypeDefinitionProvider) { - this.tagValueDefinitionProvider = tagValueDefinitionProvider; - this.stereotypeDefinitionProvider = stereotypeDefinitionProvider; - this.modelStereotypes = filterStereotypes(stereotypeDefinitionProvider, ObjectModel.class); - this.packageStereotypes = filterStereotypes(stereotypeDefinitionProvider, ObjectModelPackage.class); - this.classStereotypes = filterStereotypes(stereotypeDefinitionProvider, ObjectModelClassifier.class); - this.interfaceStereotypes = filterStereotypes(stereotypeDefinitionProvider, ObjectModelInterface.class); - this.enumerationStereotypes = filterStereotypes(stereotypeDefinitionProvider, ObjectModelEnumeration.class); - this.attributeStereotypes = filterStereotypes(stereotypeDefinitionProvider, ObjectModelAttribute.class); - this.operationStereotypes = filterStereotypes(stereotypeDefinitionProvider, ObjectModelOperation.class); - this.modelTagValues = filterTagValues(tagValueDefinitionProvider, ObjectModel.class); - this.packageTagValues = filterTagValues(tagValueDefinitionProvider, ObjectModelPackage.class); - this.classTagValues = filterTagValues(tagValueDefinitionProvider, ObjectModelClassifier.class); - this.interfaceTagValues = filterTagValues(tagValueDefinitionProvider, ObjectModelInterface.class); - this.enumerationTagValues = filterTagValues(tagValueDefinitionProvider, ObjectModelEnumeration.class); - this.attributeTagValues = filterTagValues(tagValueDefinitionProvider, ObjectModelAttribute.class); - this.operationTagValues = filterTagValues(tagValueDefinitionProvider, ObjectModelOperation.class); - - } - - public AggregateTagValueDefinitionProvider getTagValueDefinitionProvider() { - return tagValueDefinitionProvider; - } - - public AggregateStereotypeDefinitionProvider getStereotypeDefinitionProvider() { - return stereotypeDefinitionProvider; - } - - public Map<String, StereotypeDefinition> getModelStereotypes() { + private final AggregateTagValueMetadatasProvider tagValueMetadatasProvider; + private final AggregateStereotypeMetadatasProvider stereotypeMetadatasProvider; + + private final Map<String, TagValueMetadata> modelTagValues; + private final Map<String, TagValueMetadata> packageTagValues; + private final Map<String, TagValueMetadata> classTagValues; + private final Map<String, TagValueMetadata> interfaceTagValues; + private final Map<String, TagValueMetadata> enumerationTagValues; + private final Map<String, TagValueMetadata> attributeTagValues; + private final Map<String, TagValueMetadata> operationTagValues; + + private final Map<String, StereotypeMetadata> modelStereotypes; + private final Map<String, StereotypeMetadata> packageStereotypes; + private final Map<String, StereotypeMetadata> classStereotypes; + private final Map<String, StereotypeMetadata> interfaceStereotypes; + private final Map<String, StereotypeMetadata> enumerationStereotypes; + private final Map<String, StereotypeMetadata> attributeStereotypes; + private final Map<String, StereotypeMetadata> operationStereotypes; + + public ModelExtensionHelper(AggregateTagValueMetadatasProvider tagValueMetadatasProvider, + AggregateStereotypeMetadatasProvider stereotypeMetadatasProvider) { + this.tagValueMetadatasProvider = tagValueMetadatasProvider; + this.stereotypeMetadatasProvider = stereotypeMetadatasProvider; + this.modelStereotypes = filterStereotypes(stereotypeMetadatasProvider, ObjectModel.class); + this.packageStereotypes = filterStereotypes(stereotypeMetadatasProvider, ObjectModelPackage.class); + this.classStereotypes = filterStereotypes(stereotypeMetadatasProvider, ObjectModelClassifier.class); + this.interfaceStereotypes = filterStereotypes(stereotypeMetadatasProvider, ObjectModelInterface.class); + this.enumerationStereotypes = filterStereotypes(stereotypeMetadatasProvider, ObjectModelEnumeration.class); + this.attributeStereotypes = filterStereotypes(stereotypeMetadatasProvider, ObjectModelAttribute.class); + this.operationStereotypes = filterStereotypes(stereotypeMetadatasProvider, ObjectModelOperation.class); + this.modelTagValues = filterTagValues(tagValueMetadatasProvider, ObjectModel.class); + this.packageTagValues = filterTagValues(tagValueMetadatasProvider, ObjectModelPackage.class); + this.classTagValues = filterTagValues(tagValueMetadatasProvider, ObjectModelClassifier.class); + this.interfaceTagValues = filterTagValues(tagValueMetadatasProvider, ObjectModelInterface.class); + this.enumerationTagValues = filterTagValues(tagValueMetadatasProvider, ObjectModelEnumeration.class); + this.attributeTagValues = filterTagValues(tagValueMetadatasProvider, ObjectModelAttribute.class); + this.operationTagValues = filterTagValues(tagValueMetadatasProvider, ObjectModelOperation.class); + + } + + public AggregateTagValueMetadatasProvider getTagValueMetadatasProvider() { + return tagValueMetadatasProvider; + } + + public AggregateStereotypeMetadatasProvider getStereotypeMetadatasProvider() { + return stereotypeMetadatasProvider; + } + + public Map<String, StereotypeMetadata> getModelStereotypes() { return modelStereotypes; } - public Map<String, StereotypeDefinition> getPackageStereotypes() { + public Map<String, StereotypeMetadata> getPackageStereotypes() { return packageStereotypes; } - public Map<String, StereotypeDefinition> getClassStereotypes() { + public Map<String, StereotypeMetadata> getClassStereotypes() { return classStereotypes; } - public Map<String, StereotypeDefinition> getInterfaceStereotypes() { + public Map<String, StereotypeMetadata> getInterfaceStereotypes() { return interfaceStereotypes; } - public Map<String, StereotypeDefinition> getEnumerationStereotypes() { + public Map<String, StereotypeMetadata> getEnumerationStereotypes() { return enumerationStereotypes; } - public Map<String, StereotypeDefinition> getAttributeStereotypes() { + public Map<String, StereotypeMetadata> getAttributeStereotypes() { return attributeStereotypes; } - public Map<String, StereotypeDefinition> getOperationStereotypes() { + public Map<String, StereotypeMetadata> getOperationStereotypes() { return operationStereotypes; } - public Map<String, TagValueDefinition> getModelTagValues() { + public Map<String, TagValueMetadata> getModelTagValues() { return modelTagValues; } - public Map<String, TagValueDefinition> getPackageTagValues() { + public Map<String, TagValueMetadata> getPackageTagValues() { return packageTagValues; } - public Map<String, TagValueDefinition> getClassTagValues() { + public Map<String, TagValueMetadata> getClassTagValues() { return classTagValues; } - public Map<String, TagValueDefinition> getInterfaceTagValues() { + public Map<String, TagValueMetadata> getInterfaceTagValues() { return interfaceTagValues; } - public Map<String, TagValueDefinition> getEnumerationTagValues() { + public Map<String, TagValueMetadata> getEnumerationTagValues() { return enumerationTagValues; } - public Map<String, TagValueDefinition> getAttributeTagValues() { + public Map<String, TagValueMetadata> getAttributeTagValues() { return attributeTagValues; } - public Map<String, TagValueDefinition> getOperationTagValues() { + public Map<String, TagValueMetadata> getOperationTagValues() { return operationTagValues; } - protected <O> Map<String, StereotypeDefinition> filterStereotypes(AggregateStereotypeDefinitionProvider stereotypeDefinitionProvider, Class<O> type) { + protected <O> Map<String, StereotypeMetadata> filterStereotypes(AggregateStereotypeMetadatasProvider stereotypeMetadatasProvider, Class<O> type) { - Map<String, StereotypeDefinition> allDefinitions = new TreeMap<>(); - for (StereotypeDefinitionProvider definitionProvider : stereotypeDefinitionProvider) { + Map<String, StereotypeMetadata> allDefinitions = new TreeMap<>(); + for (StereotypeMetadatasProvider definitionProvider : stereotypeMetadatasProvider) { - Set<Map.Entry<String, StereotypeDefinition>> definitions = definitionProvider.getDefinition().entrySet().stream() - .filter(d -> Arrays.asList(d.getValue().target()).contains(type)) - .collect(Collectors.toSet()); - definitions.forEach(e -> allDefinitions.put(e.getKey(), e.getValue())); + Set<StereotypeMetadata> definitions = definitionProvider.getStereotypes().stream() + .filter(d -> d.getTargets().contains(type)) + .collect(Collectors.toSet()); + definitions.forEach(e -> allDefinitions.put(e.getName(), e)); } return allDefinitions; } - protected <O> Map<String, TagValueDefinition> filterTagValues(AggregateTagValueDefinitionProvider tagValueDefinitionProvider, Class<O> type) { + protected <O> Map<String, TagValueMetadata> filterTagValues(AggregateTagValueMetadatasProvider tagValueMetadatasProvider, Class<O> type) { - Map<String, TagValueDefinition> allDefinitions = new TreeMap<>(); - for (TagValueDefinitionProvider definitionProvider : tagValueDefinitionProvider) { + Map<String, TagValueMetadata> allDefinitions = new TreeMap<>(); + for (TagValueMetadatasProvider definitionProvider : tagValueMetadatasProvider) { - Set<Map.Entry<String, TagValueDefinition>> definitions = definitionProvider.getDefinition().entrySet().stream() - .filter(d -> Arrays.asList(d.getValue().target()).contains(type)) - .collect(Collectors.toSet()); - definitions.forEach(e -> allDefinitions.put(e.getKey(), e.getValue())); + Set<TagValueMetadata> definitions = definitionProvider.getTagValues().stream() + .filter(d -> d.getTargets().contains(type)) + .collect(Collectors.toSet()); + definitions.forEach(e -> allDefinitions.put(e.getName(), e)); } return allDefinitions; } diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/ContentUIManager.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/ContentUIManager.java index 7089661..69c0a08 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/ContentUIManager.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/ContentUIManager.java @@ -16,8 +16,8 @@ import org.nuiton.eugene.editor.application.ui.tree.node.ModelNode; import org.nuiton.eugene.editor.application.ui.tree.node.NodeSupport; import org.nuiton.eugene.editor.application.ui.tree.node.OperationNode; import org.nuiton.eugene.editor.application.ui.tree.node.PackageNode; -import org.nuiton.eugene.models.stereotype.StereotypeAble; -import org.nuiton.eugene.models.tagvalue.TagValueAble; +import org.nuiton.eugene.models.extension.stereotype.WithStereotypes; +import org.nuiton.eugene.models.extension.tagvalue.WithTagValues; import java.util.Collections; import java.util.Map; @@ -50,7 +50,7 @@ public class ContentUIManager { } - public <M extends StereotypeAble & TagValueAble, N extends NodeSupport<M>> ContentUI<N> getContent(N node) { + public <M extends WithStereotypes & WithTagValues, N extends NodeSupport<M>> ContentUI<N> getContent(N node) { Objects.requireNonNull(node); return contents.get(node.getClass().getName()); } diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ContentUIHandler.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ContentUIHandler.java index a7db6d9..48bd69f 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ContentUIHandler.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ContentUIHandler.java @@ -4,10 +4,10 @@ import jaxx.runtime.SwingUtil; import jaxx.runtime.spi.UIHandler; import org.nuiton.eugene.editor.application.EugeneEditorApplicationContext; import org.nuiton.eugene.editor.application.ui.tree.node.NodeSupport; -import org.nuiton.eugene.models.stereotype.StereotypeAble; -import org.nuiton.eugene.models.stereotype.StereotypeDefinition; -import org.nuiton.eugene.models.tagvalue.TagValueAble; -import org.nuiton.eugene.models.tagvalue.TagValueDefinition; +import org.nuiton.eugene.models.extension.stereotype.StereotypeMetadata; +import org.nuiton.eugene.models.extension.stereotype.WithStereotypes; +import org.nuiton.eugene.models.extension.tagvalue.TagValueMetadata; +import org.nuiton.eugene.models.extension.tagvalue.WithTagValues; import javax.swing.JCheckBox; import javax.swing.JLabel; @@ -20,12 +20,14 @@ import java.util.List; import java.util.Map; import java.util.Set; +import static org.nuiton.i18n.I18n.t; + /** * Created on 16/09/16. * * @author Tony Chemit - chemit@codelutin.com */ -public abstract class ContentUIHandler<X extends StereotypeAble & TagValueAble, M extends NodeSupport<X>, U extends ContentUI<M>> implements UIHandler<U> { +public abstract class ContentUIHandler<X extends WithStereotypes & WithTagValues, M extends NodeSupport<X>, U extends ContentUI<M>> implements UIHandler<U> { protected void open(U ui, M model) { Set<String> stereotypes = model.getStereotypes(); @@ -34,7 +36,7 @@ public abstract class ContentUIHandler<X extends StereotypeAble & TagValueAble, ui.setModel(model); JPanel stereotypesPanel = ui.getStereotypes(); - Map<String, StereotypeDefinition> stereotyps = (Map) stereotypesPanel.getClientProperty("stereotypes"); + Map<String, StereotypeMetadata> stereotyps = (Map) stereotypesPanel.getClientProperty("stereotypes"); if (stereotyps != null) { @@ -57,7 +59,7 @@ public abstract class ContentUIHandler<X extends StereotypeAble & TagValueAble, } JPanel tagValuesPanel = ui.getTagValues(); - Map<String, TagValueDefinition> tags = (Map) tagValuesPanel.getClientProperty("tagValues"); + Map<String, TagValueMetadata> tags = (Map) tagValuesPanel.getClientProperty("tagValues"); if (tags != null) { @@ -84,8 +86,8 @@ public abstract class ContentUIHandler<X extends StereotypeAble & TagValueAble, } protected void afterInit(U ui, - Map<String, TagValueDefinition> availableTagValues, - Map<String, StereotypeDefinition> availableStereotypes) { + Map<String, TagValueMetadata> availableTagValues, + Map<String, StereotypeMetadata> availableStereotypes) { Map<String, Object> $objectMap = ui.get$objectMap(); if (!availableStereotypes.isEmpty()) { @@ -94,11 +96,11 @@ public abstract class ContentUIHandler<X extends StereotypeAble & TagValueAble, stereotypes.putClientProperty("stereotypes", availableStereotypes); stereotypes.setLayout(new GridLayout(1, 0)); stereotypes.removeAll(); - for (Map.Entry<String, StereotypeDefinition> entry : availableStereotypes.entrySet()) { + for (Map.Entry<String, StereotypeMetadata> entry : availableStereotypes.entrySet()) { String stereotype = entry.getKey(); JCheckBox b = new JCheckBox(); b.setText(stereotype); - b.setToolTipText(entry.getValue().documentation()); + b.setToolTipText(t(entry.getValue().getI18nDocumentationKey())); stereotypes.add(b); $objectMap.put("stereotype-" + stereotype, b); } @@ -111,14 +113,14 @@ public abstract class ContentUIHandler<X extends StereotypeAble & TagValueAble, tagValues.setLayout(new GridLayout(0, 2)); tagValues.removeAll(); - for (Map.Entry<String, TagValueDefinition> entry : availableTagValues.entrySet()) { + for (Map.Entry<String, TagValueMetadata> entry : availableTagValues.entrySet()) { JTextField field = new JTextField(); String tagValue = entry.getKey(); JLabel label = new JLabel(tagValue); $objectMap.put("tagValue-" + tagValue, field); - label.setToolTipText(entry.getValue().documentation()); + label.setToolTipText(t(entry.getValue().getI18nDocumentationKey())); label.setLabelFor(field); tagValues.add(label); diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/EugeneEditorTreeSelectionModel.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/EugeneEditorTreeSelectionModel.java index 776baa7..df99538 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/EugeneEditorTreeSelectionModel.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/EugeneEditorTreeSelectionModel.java @@ -4,8 +4,8 @@ import org.nuiton.eugene.editor.application.ui.ContentUIManager; import org.nuiton.eugene.editor.application.ui.EugeneEditorUI; import org.nuiton.eugene.editor.application.ui.content.ContentUI; import org.nuiton.eugene.editor.application.ui.tree.node.NodeSupport; -import org.nuiton.eugene.models.stereotype.StereotypeAble; -import org.nuiton.eugene.models.tagvalue.TagValueAble; +import org.nuiton.eugene.models.extension.stereotype.WithStereotypes; +import org.nuiton.eugene.models.extension.tagvalue.WithTagValues; import javax.swing.JComponent; import javax.swing.JLabel; @@ -81,7 +81,7 @@ public class EugeneEditorTreeSelectionModel extends DefaultTreeSelectionModel { } - protected <M extends StereotypeAble & TagValueAble, N extends NodeSupport<M>> void openNode(N node, ContentUIManager contentUIManager) { + protected <M extends WithStereotypes & WithTagValues, N extends NodeSupport<M>> void openNode(N node, ContentUIManager contentUIManager) { node.removePropertyChangeListener(reloadNodeChangeListener); node.addPropertyChangeListener(reloadNodeChangeListener); diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/NodeSupport.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/NodeSupport.java index 986db74..22df377 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/NodeSupport.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/NodeSupport.java @@ -5,8 +5,8 @@ import jaxx.runtime.SwingUtil; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.eugene.models.stereotype.StereotypeAble; -import org.nuiton.eugene.models.tagvalue.TagValueAble; +import org.nuiton.eugene.models.extension.stereotype.WithStereotypes; +import org.nuiton.eugene.models.extension.tagvalue.WithTagValues; import org.nuiton.util.beans.BeanMonitor; import javax.swing.Icon; @@ -28,7 +28,7 @@ import java.util.Set; * * @author Tony Chemit - chemit@codelutin.com */ -public abstract class NodeSupport<M extends StereotypeAble & TagValueAble> extends DefaultMutableTreeNode { +public abstract class NodeSupport<M extends WithStereotypes & WithTagValues> extends DefaultMutableTreeNode { /** Logger. */ private static final Log log = LogFactory.getLog(NodeSupport.class); diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/plugin/EugeneEditorMojo.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/plugin/EugeneEditorMojo.java index 74beda9..823c537 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/plugin/EugeneEditorMojo.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/plugin/EugeneEditorMojo.java @@ -10,20 +10,18 @@ import org.nuiton.eugene.ModelReader; import org.nuiton.eugene.editor.application.EugeneEditorApplicationContext; import org.nuiton.eugene.editor.application.config.EugeneEditorConfig; import org.nuiton.eugene.editor.application.ui.EugeneEditorUI; +import org.nuiton.eugene.models.extension.stereotype.provider.AggregateStereotypeMetadatasProvider; +import org.nuiton.eugene.models.extension.stereotype.provider.StereotypeMetadatasProvider; +import org.nuiton.eugene.models.extension.tagvalue.provider.AggregateTagValueMetadatasProvider; +import org.nuiton.eugene.models.extension.tagvalue.provider.TagValueMetadatasProvider; import org.nuiton.eugene.models.object.ObjectModel; import org.nuiton.eugene.models.object.reader.extension.LoadModelExtension; -import org.nuiton.eugene.models.stereotype.AggregateStereotypeDefinitionProvider; -import org.nuiton.eugene.models.stereotype.StereotypeDefinitionProvider; -import org.nuiton.eugene.models.stereotype.StereotypeDefinitionProviders; -import org.nuiton.eugene.models.tagvalue.AggregateTagValueDefinitionProvider; -import org.nuiton.eugene.models.tagvalue.TagValueDefinitionProvider; -import org.nuiton.eugene.models.tagvalue.TagValueDefinitionProviders; import org.nuiton.plugin.AbstractPlugin; import javax.swing.SwingUtilities; import java.io.File; import java.net.URLClassLoader; -import java.util.Map; +import java.util.Set; /** * Laucnh the editor on models detected in project. @@ -55,18 +53,19 @@ public class EugeneEditorMojo extends AbstractPlugin { /** * All available tag value providers introspects via plexus. */ - @Component(role = TagValueDefinitionProvider.class) - protected Map<String, TagValueDefinitionProvider> tagValueDefinitionProviders; + @Component(role = TagValueMetadatasProvider.class) + protected Set<TagValueMetadatasProvider> tagValueMetadatasProviders; /** * All available stereotype providers introspects via plexus. */ - @Component(role = StereotypeDefinitionProvider.class) - protected Map<String, StereotypeDefinitionProvider> stereotypeDefinitionProviders; + @Component(role = StereotypeMetadatasProvider.class) + protected Set<StereotypeMetadatasProvider> stereotypeMetadatasProviders; + @Component(hint = "xmlobjectmodel") protected ModelReader modelReader; protected ObjectModel model; - protected AggregateTagValueDefinitionProvider tagValueDefinitionProvider; - protected AggregateStereotypeDefinitionProvider stereotypeDefinitionProvider; + protected AggregateTagValueMetadatasProvider tagValueMetadatasProvider; + protected AggregateStereotypeMetadatasProvider stereotypeMetadatasProvider; protected ClassLoader contextClassLoader; protected URLClassLoader classLoader; /** @@ -91,12 +90,12 @@ public class EugeneEditorMojo extends AbstractPlugin { contextClassLoader = Thread.currentThread().getContextClassLoader(); classLoader = initClassLoader(getProject(), generatedSourceDirectory, true, false, false, true, true); - tagValueDefinitionProvider = TagValueDefinitionProviders.newProvider(tagValueDefinitionProviders.values(), verbose); - stereotypeDefinitionProvider = StereotypeDefinitionProviders.newProvider(stereotypeDefinitionProviders.values(), verbose); + tagValueMetadatasProvider = new AggregateTagValueMetadatasProvider(tagValueMetadatasProviders); + stereotypeMetadatasProvider = new AggregateStereotypeMetadatasProvider(stereotypeMetadatasProviders); modelReader.setVerbose(verbose); - modelReader.setTagValueDefinitionProvider(tagValueDefinitionProvider); - modelReader.setStereotypeDefinitionProvider(stereotypeDefinitionProvider); + modelReader.setTagValueMetadatasProvider(tagValueMetadatasProvider); + modelReader.setStereotypeMetadatasProvider(stereotypeMetadatasProvider); File[] files = generatedSourceDirectory.listFiles(f -> f.getName().endsWith(".objectmodel")); if (files != null) { @@ -132,8 +131,8 @@ public class EugeneEditorMojo extends AbstractPlugin { EugeneEditorApplicationContext applicationContext = new EugeneEditorApplicationContext( config, classLoader, - tagValueDefinitionProvider, - stereotypeDefinitionProvider, + tagValueMetadatasProvider, + stereotypeMetadatasProvider, model); JAXXInitialContext ctx = new JAXXInitialContext().add(applicationContext); -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/editor in repository eugene. See https://gitlab.nuiton.org/nuiton/eugene.git commit 03c81588d2ee5b8011c5ba86f800837cd5bdbbcd Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Oct 2 19:19:06 2016 +0200 use nuiton-config 3.0 + last stable of jaxx --- eugene-editor-maven-plugin/pom.xml | 46 ++++----- .../src/main/config/EugeneEditor.toml | 11 +++ .../config/EugeneEditorConfigOption.java | 103 --------------------- .../application/ui/content/ContentUIHandler.java | 6 +- .../eugene/editor/plugin/EugeneEditorMojo.java | 11 +-- pom.xml | 34 ++++++- 6 files changed, 70 insertions(+), 141 deletions(-) diff --git a/eugene-editor-maven-plugin/pom.xml b/eugene-editor-maven-plugin/pom.xml index 27ecd26..8c2a888 100644 --- a/eugene-editor-maven-plugin/pom.xml +++ b/eugene-editor-maven-plugin/pom.xml @@ -246,14 +246,15 @@ <plugin> <artifactId>maven-plugin-plugin</artifactId> - <configuration> - <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound> - </configuration> <executions> <execution> + <id>default-descriptor</id> + <phase>process-classes</phase> + </execution> + <execution> + <id>help-goal</id> <goals> <goal>helpmojo</goal> - <goal>descriptor</goal> </goals> </execution> </executions> @@ -265,17 +266,17 @@ <plugins> <!-- expose new plexus components --> - <plugin> - <groupId>org.codehaus.plexus</groupId> - <artifactId>plexus-component-metadata</artifactId> - <executions> - <execution> - <goals> - <goal>generate-metadata</goal> - </goals> - </execution> - </executions> - </plugin> + <!--<plugin>--> + <!--<groupId>org.codehaus.plexus</groupId>--> + <!--<artifactId>plexus-component-metadata</artifactId>--> + <!--<executions>--> + <!--<execution>--> + <!--<goals>--> + <!--<goal>generate-metadata</goal>--> + <!--</goals>--> + <!--</execution>--> + <!--</executions>--> + <!--</plugin>--> <plugin> <groupId>org.codehaus.mojo</groupId> @@ -296,9 +297,8 @@ </plugin> <plugin> - <groupId>${project.groupId}</groupId> - <artifactId>eugene-maven-plugin</artifactId> - <version>${project.version}</version> + <groupId>org.nuiton</groupId> + <artifactId>nuiton-config-maven-plugin</artifactId> <executions> <execution> <phase>generate-sources</phase> @@ -306,9 +306,11 @@ <configuration> <modelName>EugeneEditor</modelName> <packageName>org.nuiton.eugene.editor.application.config</packageName> + <!-- FIXME-tchemit error with m-plugin-p ! find out why. --> + <useNuitonI18n>false</useNuitonI18n> </configuration> <goals> - <goal>generate-config</goal> + <goal>generate</goal> </goals> </execution> </executions> @@ -476,7 +478,9 @@ <executions> <execution> <phase>compile</phase> - <goals><goal>run</goal></goals> + <goals> + <goal>run</goal> + </goals> <configuration> <sourceDirectory>${sourceDirectory}</sourceDirectory> <generatedSourceDirectory>${sourceDirectory}</generatedSourceDirectory> @@ -487,7 +491,7 @@ <dependency> <groupId>org.nuiton.topia</groupId> <artifactId>topia-templates</artifactId> - <version>3.1.3</version> + <version>3.2-SNAPSHOT</version> <scope>compile</scope> </dependency> </dependencies> diff --git a/eugene-editor-maven-plugin/src/main/config/EugeneEditor.toml b/eugene-editor-maven-plugin/src/main/config/EugeneEditor.toml new file mode 100644 index 0000000..229a083 --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/config/EugeneEditor.toml @@ -0,0 +1,11 @@ +description = "eugene.editor.config" +[[options]] +name = "workingDirectory" +key = "eugene.editor.working.directory" +type = "file" +description = "eugene.editor.config.workingDirectory.description" +[[options]] +name = "modelExtensionFile" +key = "eugene.editor.modelExtensionFile" +type = "file" +description = "eugene.editor.config.modelExtensionFile.description" \ No newline at end of file diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/config/EugeneEditorConfigOption.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/config/EugeneEditorConfigOption.java deleted file mode 100644 index 2ce2930..0000000 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/config/EugeneEditorConfigOption.java +++ /dev/null @@ -1,103 +0,0 @@ -package org.nuiton.eugene.editor.application.config; - -import org.nuiton.config.ApplicationConfig; -import org.nuiton.config.ConfigOptionDef; - -import java.io.File; - -import static org.nuiton.i18n.I18n.n; - -/** - * Created on 15/09/16. - * - * @author Tony Chemit - chemit@codelutin.com - */ -public enum EugeneEditorConfigOption implements ConfigOptionDef { - - /** le nom du fichier de configuration (sans le prefix .) */ - CONFIG_FILE( - String.class, ApplicationConfig.CONFIG_FILE_NAME, - n("eugene.editor.config.configFileName.description"), - null - ), - /** le repertoire de stoquage local */ - WORKING_DIRECTORY( - File.class, "eugene.editor.working.directory", - n("eugene.editor.config.workingDirectory.description"), - null - ), - /** le repertoire de stoquage local */ - MODEL_EXTENSION_FILE( - File.class, "eugene.editor.modelExtensionFile", - n("eugene.editor.config.modelExtensionFile.description"), - null - ); - - - /** - * Clef qui represente l'option (c'est celle enregistrée dans le fichier de - * configuration). - */ - protected final String key; - - /** Clef i18n de description de l'option */ - protected final String description; - - /** Type de l'option */ - protected final Class<?> type; - - /** Valeur par défaut de l'option */ - protected String defaultValue; - - EugeneEditorConfigOption(Class<?> type, String key, String description, String defaultValue) { - this.key = key; - this.description = description; - this.type = type; - this.defaultValue = defaultValue; - } - - @Override - public String getKey() { - return key; - } - - @Override - public String getDescription() { - return description; - } - - @Override - public Class<?> getType() { - return type; - } - - @Override - public String getDefaultValue() { - return defaultValue; - } - - @Override - public void setDefaultValue(String defaultValue) { - this.defaultValue = defaultValue; - } - - @Override - public boolean isTransient() { - // pour le moment on ne sauvegarde rien - return true; - } - - @Override - public void setTransient(boolean b) { - } - - @Override - public boolean isFinal() { - return false; - } - - @Override - public void setFinal(boolean b) { - } - -} diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ContentUIHandler.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ContentUIHandler.java index 48bd69f..d77b240 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ContentUIHandler.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ContentUIHandler.java @@ -20,8 +20,6 @@ import java.util.List; import java.util.Map; import java.util.Set; -import static org.nuiton.i18n.I18n.t; - /** * Created on 16/09/16. * @@ -100,7 +98,7 @@ public abstract class ContentUIHandler<X extends WithStereotypes & WithTagValues String stereotype = entry.getKey(); JCheckBox b = new JCheckBox(); b.setText(stereotype); - b.setToolTipText(t(entry.getValue().getI18nDocumentationKey())); + b.setToolTipText(entry.getValue().getDescription()); stereotypes.add(b); $objectMap.put("stereotype-" + stereotype, b); } @@ -120,7 +118,7 @@ public abstract class ContentUIHandler<X extends WithStereotypes & WithTagValues String tagValue = entry.getKey(); JLabel label = new JLabel(tagValue); $objectMap.put("tagValue-" + tagValue, field); - label.setToolTipText(t(entry.getValue().getI18nDocumentationKey())); + label.setToolTipText(entry.getValue().getDescription()); label.setLabelFor(field); tagValues.add(label); diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/plugin/EugeneEditorMojo.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/plugin/EugeneEditorMojo.java index 823c537..c8237bd 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/plugin/EugeneEditorMojo.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/plugin/EugeneEditorMojo.java @@ -64,8 +64,6 @@ public class EugeneEditorMojo extends AbstractPlugin { @Component(hint = "xmlobjectmodel") protected ModelReader modelReader; protected ObjectModel model; - protected AggregateTagValueMetadatasProvider tagValueMetadatasProvider; - protected AggregateStereotypeMetadatasProvider stereotypeMetadatasProvider; protected ClassLoader contextClassLoader; protected URLClassLoader classLoader; /** @@ -90,12 +88,7 @@ public class EugeneEditorMojo extends AbstractPlugin { contextClassLoader = Thread.currentThread().getContextClassLoader(); classLoader = initClassLoader(getProject(), generatedSourceDirectory, true, false, false, true, true); - tagValueMetadatasProvider = new AggregateTagValueMetadatasProvider(tagValueMetadatasProviders); - stereotypeMetadatasProvider = new AggregateStereotypeMetadatasProvider(stereotypeMetadatasProviders); - modelReader.setVerbose(verbose); - modelReader.setTagValueMetadatasProvider(tagValueMetadatasProvider); - modelReader.setStereotypeMetadatasProvider(stereotypeMetadatasProvider); File[] files = generatedSourceDirectory.listFiles(f -> f.getName().endsWith(".objectmodel")); if (files != null) { @@ -131,8 +124,8 @@ public class EugeneEditorMojo extends AbstractPlugin { EugeneEditorApplicationContext applicationContext = new EugeneEditorApplicationContext( config, classLoader, - tagValueMetadatasProvider, - stereotypeMetadatasProvider, + new AggregateTagValueMetadatasProvider(tagValueMetadatasProviders), + new AggregateStereotypeMetadatasProvider(stereotypeMetadatasProviders), model); JAXXInitialContext ctx = new JAXXInitialContext().add(applicationContext); diff --git a/pom.xml b/pom.xml index da5fcc8..71e9a1b 100644 --- a/pom.xml +++ b/pom.xml @@ -143,6 +143,7 @@ <processorPluginVersion>1.3</processorPluginVersion> <nuitonUtilsVersion>3.0-SNAPSHOT</nuitonUtilsVersion> <nuitonI18nVersion>3.6.2</nuitonI18nVersion> + <nuitonConfigVersion>3.0</nuitonConfigVersion> <plantumlVersion>8048</plantumlVersion> <snakeyamlVersion>1.17</snakeyamlVersion> <antlr4Version>4.5.3</antlr4Version> @@ -158,7 +159,6 @@ <i18nVersion>3.6.2</i18nVersion> <swingXVersion>1.6.5-1</swingXVersion> - <ciViewId>Eugene</ciViewId> <javaVersion>1.7</javaVersion> <signatureArtifactId>java17</signatureArtifactId> <signatureVersion>1.0</signatureVersion> @@ -221,6 +221,12 @@ </dependency> <dependency> + <groupId>org.nuiton</groupId> + <artifactId>nuiton-config</artifactId> + <version>${nuitonConfigVersion}</version> + </dependency> + + <dependency> <groupId>org.nuiton.i18n</groupId> <artifactId>nuiton-i18n</artifactId> <version>${nuitonI18nVersion}</version> @@ -228,6 +234,13 @@ </dependency> <dependency> + <groupId>org.nuiton</groupId> + <artifactId>nuiton-version</artifactId> + <version>1.0-rc-2</version> + <scope>compile</scope> + </dependency> + + <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-digester3</artifactId> <version>3.2</version> @@ -299,6 +312,12 @@ </dependency> <dependency> + <groupId>org.hibernate.javax.persistence</groupId> + <artifactId>hibernate-jpa-2.0-api</artifactId> + <version>1.0.1.Final</version> + </dependency> + + <dependency> <groupId>org.nuiton</groupId> <artifactId>helper-maven-plugin-api</artifactId> <version>${helperPluginVersion}</version> @@ -575,6 +594,12 @@ <version>${jaxxVersion}</version> </plugin> + <plugin> + <groupId>org.nuiton</groupId> + <artifactId>nuiton-config-maven-plugin</artifactId> + <version>${nuitonConfigVersion}</version> + </plugin> + </plugins> </pluginManagement> <extensions> @@ -599,7 +624,8 @@ <build> <plugins> - <plugin><!-- copy object model xsd to site --> + <plugin> + <!-- copy object model xsd to site --> <artifactId>maven-antrun-plugin</artifactId> <executions> @@ -610,12 +636,12 @@ <tasks> <copy todir="target/site/xsd/v1" verbose="${maven.verbose}" failonerror="false" overwrite="true"> <fileset dir="${basedir}/eugene/src/main/resources/xsd"> - <include name="**/*.xsd" /> + <include name="**/*.xsd"/> </fileset> </copy> <copy todir="target/site/dtd/v1" verbose="${maven.verbose}" failonerror="false" overwrite="true"> <fileset dir="${basedir}/eugene/src/main/resources/dtd"> - <include name="**/*.dtd" /> + <include name="**/*.dtd"/> </fileset> </copy> </tasks> -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/editor in repository eugene. See https://gitlab.nuiton.org/nuiton/eugene.git commit 8ef2db22bc3cd190ed2cb7982b035d4613e80f04 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Oct 9 14:37:44 2016 +0200 rebase from develop --- eugene-editor-maven-plugin/pom.xml | 72 ++--- .../src/main/config/EugeneEditor.ini | 9 + .../src/main/config/EugeneEditor.toml | 11 - .../EugeneEditorApplicationContext.java | 4 +- .../editor/application/ModelExtensionHelper.java | 69 +---- .../editor/application/ui/ContentUIManager.java | 5 +- .../ui/content/AttributeContentUIHandler.java | 2 +- .../ui/content/ClassContentUIHandler.java | 2 +- .../application/ui/content/ContentUIHandler.java | 198 ++++++++++---- .../ui/content/EnumerationContentUIHandler.java | 2 +- .../ui/content/InterfaceContentUIHandler.java | 2 +- .../ui/content/ModelContentUIHandler.java | 2 +- .../ui/content/OperationContentUIHandler.java | 2 +- .../ui/content/PackageContentUIHandler.java | 2 +- .../ui/tree/EugeneEditorTreeSelectionModel.java | 7 +- .../editor/application/ui/tree/node/ClassNode.java | 2 +- .../application/ui/tree/node/NodeSupport.java | 5 +- .../eugene/editor/plugin/EugeneEditorMojo.java | 40 ++- .../test/resources/observe-entities/observe.ini | 295 +++++++++++++++++++++ .../observe-entities/observe.objectmodel-ext | 248 ----------------- pom.xml | 18 +- 21 files changed, 533 insertions(+), 464 deletions(-) diff --git a/eugene-editor-maven-plugin/pom.xml b/eugene-editor-maven-plugin/pom.xml index 8c2a888..fa392d1 100644 --- a/eugene-editor-maven-plugin/pom.xml +++ b/eugene-editor-maven-plugin/pom.xml @@ -124,10 +124,10 @@ <artifactId>maven-plugin-annotations</artifactId> </dependency> - <dependency> - <groupId>org.codehaus.plexus</groupId> - <artifactId>plexus-utils</artifactId> - </dependency> + <!--<dependency>--> + <!--<groupId>org.codehaus.plexus</groupId>--> + <!--<artifactId>plexus-utils</artifactId>--> + <!--</dependency>--> <dependency> <groupId>org.nuiton</groupId> @@ -142,6 +142,14 @@ <groupId>org.nuiton</groupId> <artifactId>nuiton-config</artifactId> </dependency> + <dependency> + <groupId>org.nuiton.i18n</groupId> + <artifactId>nuiton-i18n</artifactId> + </dependency> + <dependency> + <groupId>org.nuiton</groupId> + <artifactId>nuiton-validator</artifactId> + </dependency> <!-- TODO pk devoir rajouter ça ? --> <dependency> @@ -164,13 +172,13 @@ </dependency> <dependency> - <groupId>commons-collections</groupId> - <artifactId>commons-collections</artifactId> + <groupId>org.apache.commons</groupId> + <artifactId>commons-collections4</artifactId> </dependency> <dependency> - <groupId>org.apache.commons</groupId> - <artifactId>commons-collections4</artifactId> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> </dependency> <dependency> @@ -192,18 +200,18 @@ <groupId>org.nuiton.jaxx</groupId> <artifactId>jaxx-widgets</artifactId> </dependency> - <dependency> - <groupId>org.nuiton.jaxx</groupId> - <artifactId>jaxx-widgets-select</artifactId> - </dependency> - <dependency> - <groupId>org.nuiton.jaxx</groupId> - <artifactId>jaxx-widgets-about</artifactId> - </dependency> - <dependency> - <groupId>org.nuiton.jaxx</groupId> - <artifactId>jaxx-config</artifactId> - </dependency> + <!--<dependency>--> + <!--<groupId>org.nuiton.jaxx</groupId>--> + <!--<artifactId>jaxx-widgets-select</artifactId>--> + <!--</dependency>--> + <!--<dependency>--> + <!--<groupId>org.nuiton.jaxx</groupId>--> + <!--<artifactId>jaxx-widgets-about</artifactId>--> + <!--</dependency>--> + <!--<dependency>--> + <!--<groupId>org.nuiton.jaxx</groupId>--> + <!--<artifactId>jaxx-config</artifactId>--> + <!--</dependency>--> <dependency> <groupId>org.nuiton.jaxx</groupId> <artifactId>jaxx-application-api</artifactId> @@ -214,22 +222,22 @@ <groupId>org.swinglabs.swingx</groupId> <artifactId>swingx-core</artifactId> </dependency> - <dependency> - <groupId>org.swinglabs.swingx</groupId> - <artifactId>swingx-painters</artifactId> - </dependency> - <dependency> - <groupId>org.swinglabs.swingx</groupId> - <artifactId>swingx-common</artifactId> - </dependency> + <!--<dependency>--> + <!--<groupId>org.swinglabs.swingx</groupId>--> + <!--<artifactId>swingx-painters</artifactId>--> + <!--</dependency>--> + <!--<dependency>--> + <!--<groupId>org.swinglabs.swingx</groupId>--> + <!--<artifactId>swingx-common</artifactId>--> + <!--</dependency>--> <dependency> <groupId>org.swinglabs.swingx</groupId> <artifactId>swingx-autocomplete</artifactId> </dependency> - <dependency> - <groupId>org.swinglabs</groupId> - <artifactId>jxlayer</artifactId> - </dependency> + <!--<dependency>--> + <!--<groupId>org.swinglabs</groupId>--> + <!--<artifactId>jxlayer</artifactId>--> + <!--</dependency>--> <dependency> <groupId>log4j</groupId> diff --git a/eugene-editor-maven-plugin/src/main/config/EugeneEditor.ini b/eugene-editor-maven-plugin/src/main/config/EugeneEditor.ini new file mode 100644 index 0000000..a11c45a --- /dev/null +++ b/eugene-editor-maven-plugin/src/main/config/EugeneEditor.ini @@ -0,0 +1,9 @@ +description = eugene.editor.config +[option workingDirectory] +key = eugene.editor.working.directory +type = file +description = eugene.editor.config.workingDirectory.description +[option modelExtensionFile] +key = eugene.editor.modelExtensionFile +type = file +description = eugene.editor.config.modelExtensionFile.description \ No newline at end of file diff --git a/eugene-editor-maven-plugin/src/main/config/EugeneEditor.toml b/eugene-editor-maven-plugin/src/main/config/EugeneEditor.toml deleted file mode 100644 index 229a083..0000000 --- a/eugene-editor-maven-plugin/src/main/config/EugeneEditor.toml +++ /dev/null @@ -1,11 +0,0 @@ -description = "eugene.editor.config" -[[options]] -name = "workingDirectory" -key = "eugene.editor.working.directory" -type = "file" -description = "eugene.editor.config.workingDirectory.description" -[[options]] -name = "modelExtensionFile" -key = "eugene.editor.modelExtensionFile" -type = "file" -description = "eugene.editor.config.modelExtensionFile.description" \ No newline at end of file diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/EugeneEditorApplicationContext.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/EugeneEditorApplicationContext.java index 26d8bc3..fa7d018 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/EugeneEditorApplicationContext.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/EugeneEditorApplicationContext.java @@ -1,7 +1,6 @@ package org.nuiton.eugene.editor.application; import org.nuiton.eugene.editor.application.config.EugeneEditorConfig; -import org.nuiton.eugene.models.extension.stereotype.provider.AggregateStereotypeMetadatasProvider; import org.nuiton.eugene.models.extension.tagvalue.provider.AggregateTagValueMetadatasProvider; import org.nuiton.eugene.models.object.ObjectModel; import org.nuiton.i18n.I18n; @@ -28,14 +27,13 @@ public class EugeneEditorApplicationContext { public EugeneEditorApplicationContext(EugeneEditorConfig config, ClassLoader classLoader, AggregateTagValueMetadatasProvider tagValueMetadatasProvider, - AggregateStereotypeMetadatasProvider stereotypeMetadatasProvider, ObjectModel objectModel) { I18n.init(new DefaultI18nInitializer("EugeneEditor-i18n"), Locale.FRANCE); this.config = config; this.classLoader = classLoader; - this.modelExtensionHelper = new ModelExtensionHelper(tagValueMetadatasProvider, stereotypeMetadatasProvider); + this.modelExtensionHelper = new ModelExtensionHelper(tagValueMetadatasProvider); this.modelHelper = new ModelHelper(objectModel); this.objectModel = objectModel; this.lock = new Object(); diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ModelExtensionHelper.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ModelExtensionHelper.java index ffab245..03fd551 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ModelExtensionHelper.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ModelExtensionHelper.java @@ -1,8 +1,5 @@ package org.nuiton.eugene.editor.application; -import org.nuiton.eugene.models.extension.stereotype.StereotypeMetadata; -import org.nuiton.eugene.models.extension.stereotype.provider.AggregateStereotypeMetadatasProvider; -import org.nuiton.eugene.models.extension.stereotype.provider.StereotypeMetadatasProvider; import org.nuiton.eugene.models.extension.tagvalue.TagValueMetadata; import org.nuiton.eugene.models.extension.tagvalue.provider.AggregateTagValueMetadatasProvider; import org.nuiton.eugene.models.extension.tagvalue.provider.TagValueMetadatasProvider; @@ -27,7 +24,6 @@ import java.util.stream.Collectors; public class ModelExtensionHelper { private final AggregateTagValueMetadatasProvider tagValueMetadatasProvider; - private final AggregateStereotypeMetadatasProvider stereotypeMetadatasProvider; private final Map<String, TagValueMetadata> modelTagValues; private final Map<String, TagValueMetadata> packageTagValues; @@ -37,25 +33,9 @@ public class ModelExtensionHelper { private final Map<String, TagValueMetadata> attributeTagValues; private final Map<String, TagValueMetadata> operationTagValues; - private final Map<String, StereotypeMetadata> modelStereotypes; - private final Map<String, StereotypeMetadata> packageStereotypes; - private final Map<String, StereotypeMetadata> classStereotypes; - private final Map<String, StereotypeMetadata> interfaceStereotypes; - private final Map<String, StereotypeMetadata> enumerationStereotypes; - private final Map<String, StereotypeMetadata> attributeStereotypes; - private final Map<String, StereotypeMetadata> operationStereotypes; - - public ModelExtensionHelper(AggregateTagValueMetadatasProvider tagValueMetadatasProvider, - AggregateStereotypeMetadatasProvider stereotypeMetadatasProvider) { + public ModelExtensionHelper(AggregateTagValueMetadatasProvider tagValueMetadatasProvider + ) { this.tagValueMetadatasProvider = tagValueMetadatasProvider; - this.stereotypeMetadatasProvider = stereotypeMetadatasProvider; - this.modelStereotypes = filterStereotypes(stereotypeMetadatasProvider, ObjectModel.class); - this.packageStereotypes = filterStereotypes(stereotypeMetadatasProvider, ObjectModelPackage.class); - this.classStereotypes = filterStereotypes(stereotypeMetadatasProvider, ObjectModelClassifier.class); - this.interfaceStereotypes = filterStereotypes(stereotypeMetadatasProvider, ObjectModelInterface.class); - this.enumerationStereotypes = filterStereotypes(stereotypeMetadatasProvider, ObjectModelEnumeration.class); - this.attributeStereotypes = filterStereotypes(stereotypeMetadatasProvider, ObjectModelAttribute.class); - this.operationStereotypes = filterStereotypes(stereotypeMetadatasProvider, ObjectModelOperation.class); this.modelTagValues = filterTagValues(tagValueMetadatasProvider, ObjectModel.class); this.packageTagValues = filterTagValues(tagValueMetadatasProvider, ObjectModelPackage.class); this.classTagValues = filterTagValues(tagValueMetadatasProvider, ObjectModelClassifier.class); @@ -70,38 +50,6 @@ public class ModelExtensionHelper { return tagValueMetadatasProvider; } - public AggregateStereotypeMetadatasProvider getStereotypeMetadatasProvider() { - return stereotypeMetadatasProvider; - } - - public Map<String, StereotypeMetadata> getModelStereotypes() { - return modelStereotypes; - } - - public Map<String, StereotypeMetadata> getPackageStereotypes() { - return packageStereotypes; - } - - public Map<String, StereotypeMetadata> getClassStereotypes() { - return classStereotypes; - } - - public Map<String, StereotypeMetadata> getInterfaceStereotypes() { - return interfaceStereotypes; - } - - public Map<String, StereotypeMetadata> getEnumerationStereotypes() { - return enumerationStereotypes; - } - - public Map<String, StereotypeMetadata> getAttributeStereotypes() { - return attributeStereotypes; - } - - public Map<String, StereotypeMetadata> getOperationStereotypes() { - return operationStereotypes; - } - public Map<String, TagValueMetadata> getModelTagValues() { return modelTagValues; } @@ -130,19 +78,6 @@ public class ModelExtensionHelper { return operationTagValues; } - protected <O> Map<String, StereotypeMetadata> filterStereotypes(AggregateStereotypeMetadatasProvider stereotypeMetadatasProvider, Class<O> type) { - - Map<String, StereotypeMetadata> allDefinitions = new TreeMap<>(); - for (StereotypeMetadatasProvider definitionProvider : stereotypeMetadatasProvider) { - - Set<StereotypeMetadata> definitions = definitionProvider.getStereotypes().stream() - .filter(d -> d.getTargets().contains(type)) - .collect(Collectors.toSet()); - definitions.forEach(e -> allDefinitions.put(e.getName(), e)); - } - return allDefinitions; - } - protected <O> Map<String, TagValueMetadata> filterTagValues(AggregateTagValueMetadatasProvider tagValueMetadatasProvider, Class<O> type) { Map<String, TagValueMetadata> allDefinitions = new TreeMap<>(); diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/ContentUIManager.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/ContentUIManager.java index 69c0a08..35ab435 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/ContentUIManager.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/ContentUIManager.java @@ -16,8 +16,7 @@ import org.nuiton.eugene.editor.application.ui.tree.node.ModelNode; import org.nuiton.eugene.editor.application.ui.tree.node.NodeSupport; import org.nuiton.eugene.editor.application.ui.tree.node.OperationNode; import org.nuiton.eugene.editor.application.ui.tree.node.PackageNode; -import org.nuiton.eugene.models.extension.stereotype.WithStereotypes; -import org.nuiton.eugene.models.extension.tagvalue.WithTagValues; +import org.nuiton.eugene.models.extension.tagvalue.WithTagValuesOrStereotypes; import java.util.Collections; import java.util.Map; @@ -50,7 +49,7 @@ public class ContentUIManager { } - public <M extends WithStereotypes & WithTagValues, N extends NodeSupport<M>> ContentUI<N> getContent(N node) { + public <M extends WithTagValuesOrStereotypes, N extends NodeSupport<M>> ContentUI<N> getContent(N node) { Objects.requireNonNull(node); return contents.get(node.getClass().getName()); } diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/AttributeContentUIHandler.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/AttributeContentUIHandler.java index 646e375..27f796a 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/AttributeContentUIHandler.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/AttributeContentUIHandler.java @@ -27,7 +27,7 @@ public class AttributeContentUIHandler extends ContentUIHandler<ObjectModelAttri public void afterInit(AttributeContentUI ui) { ModelExtensionHelper helper = getApplicationContext(ui).getModelExtensionHelper(); - afterInit(ui, helper.getAttributeTagValues(), helper.getAttributeStereotypes()); + afterInit(ui, helper.getAttributeTagValues()); } diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ClassContentUIHandler.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ClassContentUIHandler.java index bfa4399..3c163d3 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ClassContentUIHandler.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ClassContentUIHandler.java @@ -33,7 +33,7 @@ public class ClassContentUIHandler extends ContentUIHandler<ObjectModelClassImpl public void afterInit(ClassContentUI ui) { ModelExtensionHelper helper = getApplicationContext(ui).getModelExtensionHelper(); - afterInit(ui, helper.getClassTagValues(), helper.getClassStereotypes()); + afterInit(ui, helper.getClassTagValues()); ui.getInterfaces().getSelectionModel().addListSelectionListener(e -> ui.getRemoveInterfacesFromClass().setEnabled(!((ListSelectionModel) e.getSource()).isSelectionEmpty())); diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ContentUIHandler.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ContentUIHandler.java index d77b240..50a9a4e 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ContentUIHandler.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ContentUIHandler.java @@ -2,77 +2,118 @@ package org.nuiton.eugene.editor.application.ui.content; import jaxx.runtime.SwingUtil; import jaxx.runtime.spi.UIHandler; +import jaxx.runtime.swing.JAXXButtonGroup; import org.nuiton.eugene.editor.application.EugeneEditorApplicationContext; import org.nuiton.eugene.editor.application.ui.tree.node.NodeSupport; -import org.nuiton.eugene.models.extension.stereotype.StereotypeMetadata; -import org.nuiton.eugene.models.extension.stereotype.WithStereotypes; import org.nuiton.eugene.models.extension.tagvalue.TagValueMetadata; -import org.nuiton.eugene.models.extension.tagvalue.WithTagValues; +import org.nuiton.eugene.models.extension.tagvalue.WithTagValuesOrStereotypes; -import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JPanel; +import javax.swing.JRadioButton; import javax.swing.JTextField; import java.awt.GridLayout; import java.util.Collection; import java.util.List; import java.util.Map; -import java.util.Set; /** * Created on 16/09/16. * * @author Tony Chemit - chemit@codelutin.com */ -public abstract class ContentUIHandler<X extends WithStereotypes & WithTagValues, M extends NodeSupport<X>, U extends ContentUI<M>> implements UIHandler<U> { +public abstract class ContentUIHandler<X extends WithTagValuesOrStereotypes, M extends NodeSupport<X>, U extends ContentUI<M>> implements UIHandler<U> { protected void open(U ui, M model) { - Set<String> stereotypes = model.getStereotypes(); +// Set<String> stereotypes = model.getStereotypes(); Map<String, String> tagValues = model.getTagValues(); ui.setModel(model); - JPanel stereotypesPanel = ui.getStereotypes(); - Map<String, StereotypeMetadata> stereotyps = (Map) stereotypesPanel.getClientProperty("stereotypes"); +// JPanel stereotypesPanel = ui.getStereotypes(); +// +// Map<String, StereotypeMetadata> stereotyps = (Map) stereotypesPanel.getClientProperty("stereotypes"); +// +// if (stereotyps != null) { +// +// for (String tagValue : stereotyps.keySet()) { +// +// JCheckBox objectById = (JCheckBox) ui.getObjectById("stereotype-" + tagValue); +// if (objectById != null) { +// objectById.setSelected(false); +// } +// +// } +// } +// +// for (String stereotype : stereotypes) { +// +// JCheckBox objectById = (JCheckBox) ui.getObjectById("stereotype-" + stereotype); +// if (objectById != null) { +// objectById.setSelected(true); +// } +// } - if (stereotyps != null) { - - for (String tagValue : stereotyps.keySet()) { - - JCheckBox objectById = (JCheckBox) ui.getObjectById("stereotype-" + tagValue); - if (objectById != null) { - objectById.setSelected(false); - } + JPanel tagValuesPanel = ui.getTagValues(); + Map<String, TagValueMetadata> tags = (Map) tagValuesPanel.getClientProperty("tagValues"); - } - } +// if (tags != null) { - for (String stereotype : stereotypes) { + for (String tagValue : tags.keySet()) { - JCheckBox objectById = (JCheckBox) ui.getObjectById("stereotype-" + stereotype); + JTextField objectById = (JTextField) ui.getObjectById("tagValue-" + tagValue); if (objectById != null) { - objectById.setSelected(true); + objectById.setText(null); } - } - - JPanel tagValuesPanel = ui.getTagValues(); - Map<String, TagValueMetadata> tags = (Map) tagValuesPanel.getClientProperty("tagValues"); + JAXXButtonGroup buttonGroup = (JAXXButtonGroup) ui.getObjectById("tagValue-" + tagValue + "-rb"); + if (buttonGroup != null) { + buttonGroup.setSelectedValue(null); + } +// JRadioButton buttonTrue = (JRadioButton) ui.getObjectById("tagValue-" + tagValue + "-true"); +// if (buttonTrue != null) { +// buttonTrue.setSelected(false); +// } +// JRadioButton buttonFalse = (JRadioButton) ui.getObjectById("tagValue-" + tagValue + "-false"); +// if (buttonFalse != null) { +// buttonFalse.setSelected(false); +// } +// JRadioButton buttonUndefined = (JRadioButton) ui.getObjectById("tagValue-" + tagValue + "-undefined"); +// if (buttonUndefined != null) { +// buttonUndefined.setSelected(false); +// } - if (tags != null) { + } +// } - for (String tagValue : tags.keySet()) { + // first pass for boolean tag values (= stereotype) + for (Map.Entry<String, String> entry : tagValues.entrySet()) { + String tagValueKey = entry.getKey(); + TagValueMetadata tagValueMetadata = tags.get(tagValueKey); + if (tagValueMetadata == null || !boolean.class.equals(tagValueMetadata.getType())) { + continue; + } - JTextField objectById = (JTextField) ui.getObjectById("tagValue-" + tagValue); - if (objectById != null) { - objectById.setText(null); - } + JAXXButtonGroup buttonGroup = (JAXXButtonGroup) ui.getObjectById("tagValue-" + tagValueKey + "-rb"); + String value = entry.getValue(); + buttonGroup.setSelectedValue(value == null ? "undefined" : value); +// +// JRadioButton buttonTrue = (JRadioButton) ui.getObjectById("tagValue-" + tagValueKey + "-true"); +// buttonTrue.setSelected(false); +// JRadioButton buttonFalse = (JRadioButton) ui.getObjectById("tagValue-" + tagValueKey + "-false"); +// buttonFalse.setSelected(false); +// JRadioButton buttonUndefined = (JRadioButton) ui.getObjectById("tagValue-" + tagValueKey + "-undefined"); +// buttonUndefined.setSelected(false); - } } for (Map.Entry<String, String> entry : tagValues.entrySet()) { - JTextField objectById = (JTextField) ui.getObjectById("tagValue-" + entry.getKey()); + String tagValueKey = entry.getKey(); + TagValueMetadata tagValueMetadata = tags.get(tagValueKey); + if (tagValueMetadata == null || boolean.class.equals(tagValueMetadata.getType())) { + continue; + } + JTextField objectById = (JTextField) ui.getObjectById("tagValue-" + tagValueKey); if (objectById != null) { objectById.setText(entry.getValue()); } @@ -83,46 +124,93 @@ public abstract class ContentUIHandler<X extends WithStereotypes & WithTagValues } - protected void afterInit(U ui, - Map<String, TagValueMetadata> availableTagValues, - Map<String, StereotypeMetadata> availableStereotypes) { + protected void afterInit(U ui, Map<String, TagValueMetadata> availableTagValues) { Map<String, Object> $objectMap = ui.get$objectMap(); - if (!availableStereotypes.isEmpty()) { - - JPanel stereotypes = ui.getStereotypes(); - stereotypes.putClientProperty("stereotypes", availableStereotypes); - stereotypes.setLayout(new GridLayout(1, 0)); - stereotypes.removeAll(); - for (Map.Entry<String, StereotypeMetadata> entry : availableStereotypes.entrySet()) { - String stereotype = entry.getKey(); - JCheckBox b = new JCheckBox(); - b.setText(stereotype); - b.setToolTipText(entry.getValue().getDescription()); - stereotypes.add(b); - $objectMap.put("stereotype-" + stereotype, b); - } - } + + JPanel stereotypes = ui.getStereotypes(); + + JPanel tagValues = ui.getTagValues(); + tagValues.putClientProperty("tagValues", availableTagValues); if (!availableTagValues.isEmpty()) { - JPanel tagValues = ui.getTagValues(); - tagValues.putClientProperty("tagValues", availableTagValues); tagValues.setLayout(new GridLayout(0, 2)); tagValues.removeAll(); + boolean withStereotypes = false; + for (Map.Entry<String, TagValueMetadata> entry : availableTagValues.entrySet()) { + + TagValueMetadata tagValueMetadata = entry.getValue(); + if (boolean.class.equals(tagValueMetadata.getType())) { + withStereotypes = true; + break; + } + + } + + if (withStereotypes) { + stereotypes.setLayout(new GridLayout(0, 2)); + stereotypes.removeAll(); + } + for (Map.Entry<String, TagValueMetadata> entry : availableTagValues.entrySet()) { + TagValueMetadata tagValueMetadata = entry.getValue(); + if (!boolean.class.equals(tagValueMetadata.getType())) { + continue; + } + + // boolean tag value + JRadioButton buttonTrue = new JRadioButton("Oui"); + buttonTrue.putClientProperty("$value", "true"); + JRadioButton buttonFalse = new JRadioButton("Non"); + buttonFalse.putClientProperty("$value", "false"); + JRadioButton buttonUndefined = new JRadioButton("Non défini"); + buttonUndefined.putClientProperty("$value", "undefined"); + + JAXXButtonGroup buttonGroup = new JAXXButtonGroup(); + buttonGroup.add(buttonTrue); + buttonGroup.add(buttonFalse); + buttonGroup.add(buttonUndefined); + + String tagValue = entry.getKey(); + JLabel label = new JLabel(tagValue); + $objectMap.put("tagValue-" + tagValue + "-true", buttonTrue); + $objectMap.put("tagValue-" + tagValue + "-false", buttonFalse); + $objectMap.put("tagValue-" + tagValue + "-undefined", buttonUndefined); + $objectMap.put("tagValue-" + tagValue + "-rb", buttonGroup); + + JPanel panel = new JPanel(new GridLayout()); + panel.add(buttonTrue); + panel.add(buttonFalse); + panel.add(buttonUndefined); + + label.setToolTipText(tagValueMetadata.getDescription()); + label.setLabelFor(panel); + stereotypes.add(label); + stereotypes.add(panel); + + } + + for (Map.Entry<String, TagValueMetadata> entry : availableTagValues.entrySet()) { + + TagValueMetadata tagValueMetadata = entry.getValue(); + if (boolean.class.equals(tagValueMetadata.getType())) { + + continue; + } JTextField field = new JTextField(); String tagValue = entry.getKey(); JLabel label = new JLabel(tagValue); $objectMap.put("tagValue-" + tagValue, field); - label.setToolTipText(entry.getValue().getDescription()); + label.setToolTipText(tagValueMetadata.getDescription()); label.setLabelFor(field); tagValues.add(label); tagValues.add(field); + } } diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/EnumerationContentUIHandler.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/EnumerationContentUIHandler.java index 388e162..6017d64 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/EnumerationContentUIHandler.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/EnumerationContentUIHandler.java @@ -23,7 +23,7 @@ public class EnumerationContentUIHandler extends ContentUIHandler<ObjectModelEnu public void afterInit(EnumerationContentUI ui) { ModelExtensionHelper helper = getApplicationContext(ui).getModelExtensionHelper(); - afterInit(ui, helper.getEnumerationTagValues(), helper.getEnumerationStereotypes()); + afterInit(ui, helper.getEnumerationTagValues()); ui.getLiterals().setModel(new DefaultListModel<>()); ui.getLiterals().getSelectionModel().addListSelectionListener(e -> ui.getDeleteLiteralsFromEnumeration().setEnabled(!((ListSelectionModel) e.getSource()).isSelectionEmpty())); diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/InterfaceContentUIHandler.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/InterfaceContentUIHandler.java index f2d6fd5..de2b7aa 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/InterfaceContentUIHandler.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/InterfaceContentUIHandler.java @@ -27,7 +27,7 @@ public class InterfaceContentUIHandler extends ContentUIHandler<ObjectModelInter public void afterInit(InterfaceContentUI ui) { ModelExtensionHelper helper = getApplicationContext(ui).getModelExtensionHelper(); - afterInit(ui, helper.getInterfaceTagValues(), helper.getInterfaceStereotypes()); + afterInit(ui, helper.getInterfaceTagValues()); ui.getSuperClasses().getSelectionModel().addListSelectionListener(e -> ui.getRemoveSuperClassesFromInterface().setEnabled(!((ListSelectionModel) e.getSource()).isSelectionEmpty())); } diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ModelContentUIHandler.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ModelContentUIHandler.java index 70b63dd..672e0aa 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ModelContentUIHandler.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ModelContentUIHandler.java @@ -20,7 +20,7 @@ public class ModelContentUIHandler extends ContentUIHandler<ObjectModelImpl, Mod public void afterInit(ModelContentUI ui) { ModelExtensionHelper helper = getApplicationContext(ui).getModelExtensionHelper(); - afterInit(ui, helper.getModelTagValues(), helper.getModelStereotypes()); + afterInit(ui, helper.getModelTagValues()); } diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/OperationContentUIHandler.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/OperationContentUIHandler.java index a678cd1..aa09e4a 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/OperationContentUIHandler.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/OperationContentUIHandler.java @@ -33,7 +33,7 @@ public class OperationContentUIHandler extends ContentUIHandler<ObjectModelOpera public void afterInit(OperationContentUI ui) { ModelExtensionHelper helper = getApplicationContext(ui).getModelExtensionHelper(); - afterInit(ui, helper.getOperationTagValues(), helper.getOperationStereotypes()); + afterInit(ui, helper.getOperationTagValues()); ui.getParameters().getSelectionModel().addListSelectionListener(e -> ui.getDeleteParameterFromOperation().setEnabled(!((ListSelectionModel) e.getSource()).isSelectionEmpty())); } diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/PackageContentUIHandler.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/PackageContentUIHandler.java index e4f74fd..b865995 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/PackageContentUIHandler.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/PackageContentUIHandler.java @@ -19,7 +19,7 @@ public class PackageContentUIHandler extends ContentUIHandler<ObjectModelPackage public void afterInit(PackageContentUI ui) { ModelExtensionHelper helper = getApplicationContext(ui).getModelExtensionHelper(); - afterInit(ui, helper.getPackageTagValues(), helper.getPackageStereotypes()); + afterInit(ui, helper.getPackageTagValues()); } diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/EugeneEditorTreeSelectionModel.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/EugeneEditorTreeSelectionModel.java index df99538..ef8ff54 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/EugeneEditorTreeSelectionModel.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/EugeneEditorTreeSelectionModel.java @@ -4,8 +4,7 @@ import org.nuiton.eugene.editor.application.ui.ContentUIManager; import org.nuiton.eugene.editor.application.ui.EugeneEditorUI; import org.nuiton.eugene.editor.application.ui.content.ContentUI; import org.nuiton.eugene.editor.application.ui.tree.node.NodeSupport; -import org.nuiton.eugene.models.extension.stereotype.WithStereotypes; -import org.nuiton.eugene.models.extension.tagvalue.WithTagValues; +import org.nuiton.eugene.models.extension.tagvalue.WithTagValuesOrStereotypes; import javax.swing.JComponent; import javax.swing.JLabel; @@ -81,7 +80,7 @@ public class EugeneEditorTreeSelectionModel extends DefaultTreeSelectionModel { } - protected <M extends WithStereotypes & WithTagValues, N extends NodeSupport<M>> void openNode(N node, ContentUIManager contentUIManager) { + protected <M extends WithTagValuesOrStereotypes, N extends NodeSupport<M>> void openNode(N node, ContentUIManager contentUIManager) { node.removePropertyChangeListener(reloadNodeChangeListener); node.addPropertyChangeListener(reloadNodeChangeListener); @@ -92,7 +91,7 @@ public class EugeneEditorTreeSelectionModel extends DefaultTreeSelectionModel { JLabel leftDecoration = new JLabel(node.getBigIcon()); leftDecoration.setHorizontalAlignment(JLabel.CENTER); - leftDecoration.setSize(32,32); + leftDecoration.setSize(32, 32); content.setLeftDecoration(leftDecoration); diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/ClassNode.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/ClassNode.java index f294ff7..b5583de 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/ClassNode.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/ClassNode.java @@ -1,6 +1,6 @@ package org.nuiton.eugene.editor.application.ui.tree.node; -import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.nuiton.eugene.models.object.ObjectModelClass; import org.nuiton.eugene.models.object.ObjectModelInterface; diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/NodeSupport.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/NodeSupport.java index 22df377..4ae10e2 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/NodeSupport.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/NodeSupport.java @@ -5,8 +5,7 @@ import jaxx.runtime.SwingUtil; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.eugene.models.extension.stereotype.WithStereotypes; -import org.nuiton.eugene.models.extension.tagvalue.WithTagValues; +import org.nuiton.eugene.models.extension.tagvalue.WithTagValuesOrStereotypes; import org.nuiton.util.beans.BeanMonitor; import javax.swing.Icon; @@ -28,7 +27,7 @@ import java.util.Set; * * @author Tony Chemit - chemit@codelutin.com */ -public abstract class NodeSupport<M extends WithStereotypes & WithTagValues> extends DefaultMutableTreeNode { +public abstract class NodeSupport<M extends WithTagValuesOrStereotypes> extends DefaultMutableTreeNode { /** Logger. */ private static final Log log = LogFactory.getLog(NodeSupport.class); diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/plugin/EugeneEditorMojo.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/plugin/EugeneEditorMojo.java index c8237bd..cc8c318 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/plugin/EugeneEditorMojo.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/plugin/EugeneEditorMojo.java @@ -10,12 +10,10 @@ import org.nuiton.eugene.ModelReader; import org.nuiton.eugene.editor.application.EugeneEditorApplicationContext; import org.nuiton.eugene.editor.application.config.EugeneEditorConfig; import org.nuiton.eugene.editor.application.ui.EugeneEditorUI; -import org.nuiton.eugene.models.extension.stereotype.provider.AggregateStereotypeMetadatasProvider; -import org.nuiton.eugene.models.extension.stereotype.provider.StereotypeMetadatasProvider; +import org.nuiton.eugene.models.extension.io.ModelExtensionReader; import org.nuiton.eugene.models.extension.tagvalue.provider.AggregateTagValueMetadatasProvider; import org.nuiton.eugene.models.extension.tagvalue.provider.TagValueMetadatasProvider; import org.nuiton.eugene.models.object.ObjectModel; -import org.nuiton.eugene.models.object.reader.extension.LoadModelExtension; import org.nuiton.plugin.AbstractPlugin; import javax.swing.SwingUtilities; @@ -50,27 +48,13 @@ public class EugeneEditorMojo extends AbstractPlugin { */ @Parameter(defaultValue = "${project}", readonly = true) protected MavenProject project; - /** - * All available tag value providers introspects via plexus. - */ - @Component(role = TagValueMetadatasProvider.class) - protected Set<TagValueMetadatasProvider> tagValueMetadatasProviders; - /** - * All available stereotype providers introspects via plexus. - */ - @Component(role = StereotypeMetadatasProvider.class) - protected Set<StereotypeMetadatasProvider> stereotypeMetadatasProviders; - @Component(hint = "xmlobjectmodel") - protected ModelReader modelReader; - protected ObjectModel model; - protected ClassLoader contextClassLoader; - protected URLClassLoader classLoader; /** * The source directory where to scan options java file. */ @Parameter(property = "eugene.sourceDirectory", defaultValue = "${basedir}/src/main/xmi", required = true) private File sourceDirectory; + /** * The source directory where to scan options java file. */ @@ -82,6 +66,19 @@ public class EugeneEditorMojo extends AbstractPlugin { @Parameter(property = "eugene.workingDirectory", defaultValue = "${project.build.directory}/eugeneEditor", required = true) private File workingDirectory; + /** + * All available tag value providers introspects via plexus. + */ + @Component(role = TagValueMetadatasProvider.class) + protected Set<TagValueMetadatasProvider> tagValueMetadatasProviders; + + @Component(hint = "xmlobjectmodel") + protected ModelReader modelReader; + + private ObjectModel model; + private ClassLoader contextClassLoader; + private URLClassLoader classLoader; + @Override protected void init() throws Exception { @@ -97,16 +94,16 @@ public class EugeneEditorMojo extends AbstractPlugin { model = (ObjectModel) modelReader.read(files); } - LoadModelExtension<ObjectModel> loadModelExtension = new LoadModelExtension<>(verbose, false, model); + ModelExtensionReader<ObjectModel> loadModelExtension = new ModelExtensionReader<>(verbose, false, model); - File[] extensionFiles = sourceDirectory.listFiles(f -> f.getName().endsWith(".objectmodel-ext")); + File[] extensionFiles = sourceDirectory.listFiles(f -> f.getName().endsWith(".ini")); if (extensionFiles != null) { getLog().info("Found " + extensionFiles.length + " model extension file(s)."); for (File file : extensionFiles) { getLog().info("Loading extension file: " + file); - loadModelExtension.load(file); + loadModelExtension.read(file); } } @@ -125,7 +122,6 @@ public class EugeneEditorMojo extends AbstractPlugin { config, classLoader, new AggregateTagValueMetadatasProvider(tagValueMetadatasProviders), - new AggregateStereotypeMetadatasProvider(stereotypeMetadatasProviders), model); JAXXInitialContext ctx = new JAXXInitialContext().add(applicationContext); diff --git a/eugene-editor-maven-plugin/src/test/resources/observe-entities/observe.ini b/eugene-editor-maven-plugin/src/test/resources/observe-entities/observe.ini new file mode 100644 index 0000000..b4d52f9 --- /dev/null +++ b/eugene-editor-maven-plugin/src/test/resources/observe-entities/observe.ini @@ -0,0 +1,295 @@ +[model] +attributeType.Boolean = java.lang.Boolean +attributeType.Float = java.lang.Float +attributeType.Integer = java.lang.Integer +attributeType.Long = java.lang.Long +attributeType.String = java.lang.String +generateForeignKeyNames = true +generateOperatorForDAOHelper = true +generatePropertyChangeSupport = true +indexForeignKeys = true +notGenerateToString = true +useEnumerationName = false +version = @observe.model.version@ + +[package fr.ird.observe.entities] +dbSchema = OBSERVE_COMMON + +[package fr.ird.observe.entities.longline] +dbSchema = OBSERVE_LONGLINE + +[package fr.ird.observe.entities.referentiel] +dbSchema = OBSERVE_COMMON + +[package fr.ird.observe.entities.referentiel.longline] +dbSchema = OBSERVE_LONGLINE + +[package fr.ird.observe.entities.referentiel.seine] +dbSchema = OBSERVE_SEINE + +[package fr.ird.observe.entities.seine] +dbSchema = OBSERVE_SEINE + +[class fr.ird.observe.entities.CommentableEntity] +comment.hibernateAttributeType = text + +[class fr.ird.observe.entities.ObserveEntity] +lastUpdateDate.notNull = true + +[class fr.ird.observe.entities.longline.ActivityLongline] +dbName = Activity +encounter.reverseDbName = activity +sensorUsed.reverseDbName = activity +setLongline.dbName = set +vesselActivityLongline.dbName = vesselActivity +vesselActivityLongline.lazy = false + +[class fr.ird.observe.entities.longline.Basket] +branchline.orderBy = settingIdentifier +branchline.unique = true +settingIdentifier.notNull = true + +[class fr.ird.observe.entities.longline.Branchline] +branchlineLength.sqlType = numeric +catchLongline.dbName = catch +hookSize.sqlType = numeric +settingIdentifier.notNull = true +snapWeight.sqlType = numeric +swivelWeight.sqlType = numeric +tracelineLength.sqlType = numeric + +[class fr.ird.observe.entities.longline.BranchlinesComposition] +length.sqlType = numeric + +[class fr.ird.observe.entities.longline.CatchLongline] +dbName = Catch +beatDiameter.sqlType = numeric +catchFateLongline.dbName = catchFate +gonadeWeight.sqlType = numeric +predator.manyToManyTableName = catch_predator +predator.reverseDbName = catch +sizeMeasure.reverseDbName = catch +totalWeight.sqlType = numeric +weightMeasure.reverseDbName = catch + +[class fr.ird.observe.entities.longline.Encounter] +distance.sqlType = numeric + +[class fr.ird.observe.entities.longline.FloatlinesComposition] +length.sqlType = numeric + +[class fr.ird.observe.entities.longline.GearUseFeaturesLongline] +dbName = GearUseFeatures +gearUseFeaturesMeasurement.orderBy = topiaCreateDate +gearUseFeaturesMeasurement.reverseDbName = gearUseFeatures +gearUseFeaturesMeasurement.unique = true + +[class fr.ird.observe.entities.longline.GearUseFeaturesMeasurementLongline] +dbName = GearUseFeaturesMeasurement +gearCaracteristic.notNull = true + +[class fr.ird.observe.entities.longline.HooksComposition] +hookSize.sqlType = numeric + +[class fr.ird.observe.entities.longline.Section] +basket.orderBy = settingIdentifier +basket.unique = true +setLongline.dbName = set +settingIdentifier.notNull = true + +[class fr.ird.observe.entities.longline.SetLongline] +dbName = Set +baitsComposition.reverseDbName = set +branchlinesComposition.reverseDbName = set +catchLongline.reverseDbName = set +catchLongline.unique = true +floatlinesComposition.reverseDbName = set +haulingEndLatitude.sqlType = numeric +haulingEndLongitude.sqlType = numeric +haulingStartLatitude.sqlType = numeric +haulingStartLongitude.sqlType = numeric +hooksComposition.reverseDbName = set +mitigationType.manyToManyTableName = mitigationtype_set +mitigationType.reverseDbName = set +section.orderBy = settingIdentifier +section.reverseDbName = set +section.unique = true +settingEndLatitude.sqlType = numeric +settingEndLongitude.sqlType = numeric +settingStartLatitude.sqlType = numeric +settingStartLongitude.sqlType = numeric +settingVesselSpeed.sqlType = numeric +shooterSpeed.sqlType = numeric +snapWeight.sqlType = numeric +swivelWeight.sqlType = numeric +tdr.reverseDbName = set + +[class fr.ird.observe.entities.longline.SizeMeasure] +size.sqlType = numeric + +[class fr.ird.observe.entities.longline.Tdr] +floatline1Length.sqlType = numeric +floatline2Length.sqlType = numeric + +[class fr.ird.observe.entities.longline.TdrRecord] +depth.sqlType = numeric +temperature.sqlType = numeric + +[class fr.ird.observe.entities.longline.TripLongline] +dbName = Trip +activityLongline.reverseDbName = trip +activityLongline.unique = true +gearUseFeaturesLongline.orderBy = topiaCreateDate +gearUseFeaturesLongline.reverseDbName = trip +gearUseFeaturesLongline.unique = true + +[class fr.ird.observe.entities.longline.WeightMeasure] +weight.sqlType = numeric + +[class fr.ird.observe.entities.referentiel.Gear] +gearCaracteristic.lazy = false + +[class fr.ird.observe.entities.referentiel.GearCaracteristic] +gearCaracteristicType.lazy = false + +[class fr.ird.observe.entities.referentiel.LengthWeightParameter] +ocean.lazy = false +ocean.notNull = true +sex.lazy = false +sex.notNull = true +species.lazy = false +species.notNull = true + +[class fr.ird.observe.entities.referentiel.Organism] +country.lazy = false + +[class fr.ird.observe.entities.referentiel.Program] +comment.hibernateAttributeType = text +organism.lazy = false + +[class fr.ird.observe.entities.referentiel.Species] +maxLength.sqlType = numeric +maxWeight.sqlType = numeric +minLength.sqlType = numeric +minWeight.sqlType = numeric +ocean.lazy = false +speciesGroup.lazy = false + +[class fr.ird.observe.entities.referentiel.SpeciesList] +species.lazy = false + +[class fr.ird.observe.entities.referentiel.Vessel] +capacity.sqlType = numeric +comment.hibernateAttributeType = text +flagCountry.lazy = false +length.sqlType = numeric +searchMaximum.sqlType = numeric +vesselSizeCategory.lazy = false +vesselType.lazy = false + +[class fr.ird.observe.entities.referentiel.longline.CatchFateLongline] +dbName = CatchFate + +[class fr.ird.observe.entities.referentiel.longline.VesselActivityLongline] +dbName = VesselActivity + +[class fr.ird.observe.entities.referentiel.seine.VesselActivitySeine] +dbName = VesselActivity + +[class fr.ird.observe.entities.referentiel.seine.WeightCategory] +species.lazy = false + +[class fr.ird.observe.entities.seine.ActivitySeine] +dbName = Activity +floatingObject.reverseDbName = activity +floatingObject.unique = true +latitude.sqlType = numeric +longitude.sqlType = numeric +observedSystem.manyToManyTableName = activity_observedSystem +observedSystem.reverseDbName = activity +observedSystem.unique = true +observedSystemDistance.sqlType = numeric +seaSurfaceTemperature.sqlType = numeric +setSeine.dbName = set +time.hibernateAttributeType.java.util.Date = time +vesselActivitySeine.dbName = vesselActivity +vesselSpeed.sqlType = numeric + +[class fr.ird.observe.entities.seine.FloatingObject] +transmittingBuoy.unique = true + +[class fr.ird.observe.entities.seine.GearUseFeaturesMeasurementSeine] +dbName = GearUseFeaturesMeasurement +gearCaracteristic.notNull = true + +[class fr.ird.observe.entities.seine.GearUseFeaturesSeine] +dbName = GearUseFeatures +gearUseFeaturesMeasurement.orderBy = topiaCreateDate +gearUseFeaturesMeasurement.reverseDbName = gearUseFeatures + +[class fr.ird.observe.entities.seine.NonTargetCatch] +catchWeight.sqlType = numeric +meanLength.sqlType = numeric +meanWeight.sqlType = numeric + +[class fr.ird.observe.entities.seine.NonTargetLength] +length.sqlType = numeric +sex.lazy = false +weight.sqlType = numeric + +[class fr.ird.observe.entities.seine.NonTargetSample] +nonTargetLength.unique = true + +[class fr.ird.observe.entities.seine.Route] +activitySeine.orderBy = time +activitySeine.unique = true +date.hibernateAttributeType.java.util.Date = date +endLogValue.sqlType = numeric +startLogValue.sqlType = numeric + +[class fr.ird.observe.entities.seine.SchoolEstimate] +naturalIdMutable = true +setSeine.dbName = set +setSeine.naturalId = true +species.naturalId = true + +[class fr.ird.observe.entities.seine.SetSeine] +dbName = Set +currentSpeed.sqlType = numeric +nonTargetCatch.reverseDbName = set +nonTargetSample.reverseDbName = set +nonTargetSample.unique = true +schoolEstimate.reverseDbName = set +startTime.hibernateAttributeType.java.util.Date = time +targetCatch.reverseDbName = set +targetSample.reverseDbName = set +targetSample.unique = true + +[class fr.ird.observe.entities.seine.TargetCatch] +naturalIdMutable = true +catchWeight.sqlType = numeric +discarded.naturalId = true +reasonForDiscard.naturalId = true +reasonForDiscard.notNull = false +setSeine.dbName = set +setSeine.naturalId = true +weightCategory.naturalId = true +well.naturalId = true +well.notNull = false + +[class fr.ird.observe.entities.seine.TargetLength] +length.sqlType = numeric +weight.sqlType = numeric + +[class fr.ird.observe.entities.seine.TargetSample] +targetLength.unique = true + +[class fr.ird.observe.entities.seine.TripSeine] +dbName = Trip +endDate.hibernateAttributeType.java.util.Date = date +gearUseFeaturesSeine.orderBy = topiaCreateDate +gearUseFeaturesSeine.reverseDbName = trip +route.orderBy = date +route.reverseDbName = trip +route.unique = true +startDate.hibernateAttributeType.java.util.Date = date diff --git a/eugene-editor-maven-plugin/src/test/resources/observe-entities/observe.objectmodel-ext b/eugene-editor-maven-plugin/src/test/resources/observe-entities/observe.objectmodel-ext deleted file mode 100644 index c3ad97f..0000000 --- a/eugene-editor-maven-plugin/src/test/resources/observe-entities/observe.objectmodel-ext +++ /dev/null @@ -1,248 +0,0 @@ -[model] -attributeType.Boolean java.lang.Boolean -attributeType.Float java.lang.Float -attributeType.Integer java.lang.Integer -attributeType.Long java.lang.Long -attributeType.String java.lang.String -generateForeignKeyNames true -generateOperatorForDAOHelper true -generatePropertyChangeSupport true -indexForeignKeys true -notGenerateToString true -useEnumerationName false -version @observe.model.version@ - -[package] -fr.ird.observe.entities - dbSchema OBSERVE_COMMON -fr.ird.observe.entities.longline - dbSchema OBSERVE_LONGLINE -fr.ird.observe.entities.referentiel - dbSchema OBSERVE_COMMON -fr.ird.observe.entities.referentiel.longline - dbSchema OBSERVE_LONGLINE -fr.ird.observe.entities.referentiel.seine - dbSchema OBSERVE_SEINE -fr.ird.observe.entities.seine - dbSchema OBSERVE_SEINE - -[class] -fr.ird.observe.entities.CommentableEntity - comment.hibernateAttributeType text -fr.ird.observe.entities.ObserveEntity - lastUpdateDate.notNull true -fr.ird.observe.entities.longline.ActivityLongline - dbName Activity - encounter.reverseDbName activity - sensorUsed.reverseDbName activity - setLongline.dbName set - vesselActivityLongline.dbName vesselActivity - vesselActivityLongline.lazy false -fr.ird.observe.entities.longline.Basket - branchline.orderBy settingIdentifier - settingIdentifier.notNull true - branchline.unique -fr.ird.observe.entities.longline.Branchline - branchlineLength.sqlType numeric - catchLongline.dbName catch - hookSize.sqlType numeric - settingIdentifier.notNull true - snapWeight.sqlType numeric - swivelWeight.sqlType numeric - tracelineLength.sqlType numeric -fr.ird.observe.entities.longline.BranchlinesComposition - length.sqlType numeric -fr.ird.observe.entities.longline.CatchLongline - dbName Catch - beatDiameter.sqlType numeric - catchFateLongline.dbName catchFate - gonadeWeight.sqlType numeric - predator.manyToManyTableName catch_predator - predator.reverseDbName catch - sizeMeasure.reverseDbName catch - totalWeight.sqlType numeric - weightMeasure.reverseDbName catch -fr.ird.observe.entities.longline.Encounter - distance.sqlType numeric -fr.ird.observe.entities.longline.FloatlinesComposition - length.sqlType numeric -fr.ird.observe.entities.longline.GearUseFeaturesLongline - dbName GearUseFeatures - gearUseFeaturesMeasurement.orderBy topiaCreateDate - gearUseFeaturesMeasurement.reverseDbName gearUseFeatures - gearUseFeaturesMeasurement.unique -fr.ird.observe.entities.longline.GearUseFeaturesMeasurementLongline - dbName GearUseFeaturesMeasurement - gearCaracteristic.notNull true -fr.ird.observe.entities.longline.HooksComposition - hookSize.sqlType numeric -fr.ird.observe.entities.longline.Section - basket.orderBy settingIdentifier - setLongline.dbName set - settingIdentifier.notNull true - basket.unique -fr.ird.observe.entities.longline.SetLongline - dbName Set - baitsComposition.reverseDbName set - branchlinesComposition.reverseDbName set - catchLongline.reverseDbName set - floatlinesComposition.reverseDbName set - haulingEndLatitude.sqlType numeric - haulingEndLongitude.sqlType numeric - haulingStartLatitude.sqlType numeric - haulingStartLongitude.sqlType numeric - hooksComposition.reverseDbName set - mitigationType.manyToManyTableName mitigationtype_set - mitigationType.reverseDbName set - section.orderBy settingIdentifier - section.reverseDbName set - settingEndLatitude.sqlType numeric - settingEndLongitude.sqlType numeric - settingStartLatitude.sqlType numeric - settingStartLongitude.sqlType numeric - settingVesselSpeed.sqlType numeric - shooterSpeed.sqlType numeric - snapWeight.sqlType numeric - swivelWeight.sqlType numeric - tdr.reverseDbName set - catchLongline.unique - section.unique -fr.ird.observe.entities.longline.SizeMeasure - size.sqlType numeric -fr.ird.observe.entities.longline.Tdr - floatline1Length.sqlType numeric - floatline2Length.sqlType numeric -fr.ird.observe.entities.longline.TdrRecord - depth.sqlType numeric - temperature.sqlType numeric -fr.ird.observe.entities.longline.TripLongline - dbName Trip - activityLongline.reverseDbName trip - gearUseFeaturesLongline.orderBy topiaCreateDate - gearUseFeaturesLongline.reverseDbName trip - activityLongline.unique - gearUseFeaturesLongline.unique -fr.ird.observe.entities.longline.WeightMeasure - weight.sqlType numeric -fr.ird.observe.entities.referentiel.Gear - gearCaracteristic.lazy false -fr.ird.observe.entities.referentiel.GearCaracteristic - gearCaracteristicType.lazy false -fr.ird.observe.entities.referentiel.LengthWeightParameter - ocean.lazy false - ocean.notNull true - sex.lazy false - sex.notNull true - species.lazy false - species.notNull true -fr.ird.observe.entities.referentiel.Organism - country.lazy false -fr.ird.observe.entities.referentiel.Program - comment.hibernateAttributeType text - organism.lazy false -fr.ird.observe.entities.referentiel.Species - maxLength.sqlType numeric - maxWeight.sqlType numeric - minLength.sqlType numeric - minWeight.sqlType numeric - ocean.lazy false - speciesGroup.lazy false -fr.ird.observe.entities.referentiel.SpeciesList - species.lazy false -fr.ird.observe.entities.referentiel.Vessel - capacity.sqlType numeric - comment.hibernateAttributeType text - flagCountry.lazy false - length.sqlType numeric - searchMaximum.sqlType numeric - vesselSizeCategory.lazy false - vesselType.lazy false -fr.ird.observe.entities.referentiel.longline.CatchFateLongline - dbName CatchFate -fr.ird.observe.entities.referentiel.longline.VesselActivityLongline - dbName VesselActivity -fr.ird.observe.entities.referentiel.seine.VesselActivitySeine - dbName VesselActivity -fr.ird.observe.entities.referentiel.seine.WeightCategory - species.lazy false -fr.ird.observe.entities.seine.ActivitySeine - dbName Activity - floatingObject.reverseDbName activity - latitude.sqlType numeric - longitude.sqlType numeric - observedSystem.manyToManyTableName activity_observedSystem - observedSystem.reverseDbName activity - observedSystemDistance.sqlType numeric - seaSurfaceTemperature.sqlType numeric - setSeine.dbName set - time.hibernateAttributeType.java.util.Date time - vesselActivitySeine.dbName vesselActivity - vesselSpeed.sqlType numeric - floatingObject.unique - observedSystem.unique -fr.ird.observe.entities.seine.FloatingObject - transmittingBuoy.unique -fr.ird.observe.entities.seine.GearUseFeaturesMeasurementSeine - dbName GearUseFeaturesMeasurement - gearCaracteristic.notNull true -fr.ird.observe.entities.seine.GearUseFeaturesSeine - dbName GearUseFeatures - gearUseFeaturesMeasurement.orderBy topiaCreateDate - gearUseFeaturesMeasurement.reverseDbName gearUseFeatures -fr.ird.observe.entities.seine.NonTargetCatch - catchWeight.sqlType numeric - meanLength.sqlType numeric - meanWeight.sqlType numeric -fr.ird.observe.entities.seine.NonTargetLength - length.sqlType numeric - sex.lazy false - weight.sqlType numeric -fr.ird.observe.entities.seine.NonTargetSample - nonTargetLength.unique -fr.ird.observe.entities.seine.Route - activitySeine.orderBy time - date.hibernateAttributeType.java.util.Date date - endLogValue.sqlType numeric - startLogValue.sqlType numeric - activitySeine.unique -fr.ird.observe.entities.seine.SchoolEstimate - naturalIdMutable true - setSeine.dbName set - setSeine.naturalId true - species.naturalId true -fr.ird.observe.entities.seine.SetSeine - dbName Set - currentSpeed.sqlType numeric - nonTargetCatch.reverseDbName set - nonTargetSample.reverseDbName set - schoolEstimate.reverseDbName set - startTime.hibernateAttributeType.java.util.Date time - targetCatch.reverseDbName set - targetSample.reverseDbName set - nonTargetSample.unique - targetSample.unique -fr.ird.observe.entities.seine.TargetCatch - naturalIdMutable true - catchWeight.sqlType numeric - discarded.naturalId true - reasonForDiscard.naturalId true - reasonForDiscard.notNull false - setSeine.dbName set - setSeine.naturalId true - weightCategory.naturalId true - well.naturalId true - well.notNull false -fr.ird.observe.entities.seine.TargetLength - length.sqlType numeric - weight.sqlType numeric -fr.ird.observe.entities.seine.TargetSample - targetLength.unique -fr.ird.observe.entities.seine.TripSeine - dbName Trip - endDate.hibernateAttributeType.java.util.Date date - gearUseFeaturesSeine.orderBy topiaCreateDate - gearUseFeaturesSeine.reverseDbName trip - route.orderBy date - route.reverseDbName trip - startDate.hibernateAttributeType.java.util.Date date - route.unique diff --git a/pom.xml b/pom.xml index 71e9a1b..10e48d0 100644 --- a/pom.xml +++ b/pom.xml @@ -143,7 +143,7 @@ <processorPluginVersion>1.3</processorPluginVersion> <nuitonUtilsVersion>3.0-SNAPSHOT</nuitonUtilsVersion> <nuitonI18nVersion>3.6.2</nuitonI18nVersion> - <nuitonConfigVersion>3.0</nuitonConfigVersion> + <nuitonConfigVersion>3.1</nuitonConfigVersion> <plantumlVersion>8048</plantumlVersion> <snakeyamlVersion>1.17</snakeyamlVersion> <antlr4Version>4.5.3</antlr4Version> @@ -155,10 +155,10 @@ <plexusPluginVersion>1.3.8</plexusPluginVersion> <doxiaVersion>1.7</doxiaVersion> <mavenVersion>3.3.9</mavenVersion> - <jaxxVersion>2.33-SNAPSHOT</jaxxVersion> + <jaxxVersion>2.33</jaxxVersion> <i18nVersion>3.6.2</i18nVersion> <swingXVersion>1.6.5-1</swingXVersion> - + <javaVersion>1.7</javaVersion> <signatureArtifactId>java17</signatureArtifactId> <signatureVersion>1.0</signatureVersion> @@ -241,6 +241,13 @@ </dependency> <dependency> + <groupId>org.nuiton</groupId> + <artifactId>nuiton-validator</artifactId> + <version>3.0.1</version> + <scope>compile</scope> + </dependency> + + <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-digester3</artifactId> <version>3.2</version> @@ -568,11 +575,6 @@ </plugin> <plugin> - <groupId>org.nuiton.i18n</groupId> - <artifactId>i18n-maven-plugin</artifactId> - <version>${nuitonI18nVersion}</version> - </plugin> - <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>license-maven-plugin</artifactId> <configuration> -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/editor in repository eugene. See https://gitlab.nuiton.org/nuiton/eugene.git commit 3242f1b32ff1e6c9f98fe8bc6ed9b6fc43c62a86 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Oct 9 15:58:18 2016 +0200 Review stereotypes display --- .../ui/content/AttributeContentUIHandler.java | 10 ++++ .../ui/content/ClassContentUIHandler.java | 8 +++ .../application/ui/content/ContentUIHandler.java | 63 +++++----------------- .../ui/content/EnumerationContentUIHandler.java | 8 +++ .../ui/content/InterfaceContentUIHandler.java | 9 ++++ .../ui/content/ModelContentUIHandler.java | 8 +++ .../ui/content/OperationContentUIHandler.java | 6 +++ .../ui/content/PackageContentUIHandler.java | 8 +++ 8 files changed, 69 insertions(+), 51 deletions(-) diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/AttributeContentUIHandler.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/AttributeContentUIHandler.java index 27f796a..621dd24 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/AttributeContentUIHandler.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/AttributeContentUIHandler.java @@ -4,12 +4,16 @@ import jaxx.runtime.SwingUtil; import org.nuiton.eugene.editor.application.ModelExtensionHelper; import org.nuiton.eugene.editor.application.ModelHelper; import org.nuiton.eugene.editor.application.ui.tree.node.AttributeNode; +import org.nuiton.eugene.models.object.ObjectModelAttribute; +import org.nuiton.eugene.models.object.ObjectModelClassifier; +import org.nuiton.eugene.models.object.ObjectModelInterface; import org.nuiton.eugene.models.object.xml.ObjectModelAttributeImpl; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; +import java.util.Set; /** * Created on 16/09/16. @@ -56,4 +60,10 @@ public class AttributeContentUIHandler extends ContentUIHandler<ObjectModelAttri ui.getAttributeDefaultValue().setText(node.getDefaultValue()); } + + @Override + protected boolean acceptTarget(Set<Class<?>> targets) { + return targets.contains(ObjectModelAttribute.class); + } + } diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ClassContentUIHandler.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ClassContentUIHandler.java index 3c163d3..ddc95ff 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ClassContentUIHandler.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ClassContentUIHandler.java @@ -4,6 +4,8 @@ import jaxx.runtime.SwingUtil; import org.nuiton.eugene.editor.application.ModelExtensionHelper; import org.nuiton.eugene.editor.application.ModelHelper; import org.nuiton.eugene.editor.application.ui.tree.node.ClassNode; +import org.nuiton.eugene.models.object.ObjectModelClass; +import org.nuiton.eugene.models.object.ObjectModelClassifier; import org.nuiton.eugene.models.object.xml.ObjectModelClassImpl; import javax.swing.Action; @@ -16,6 +18,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Objects; +import java.util.Set; /** * Created on 16/09/16. @@ -65,6 +68,11 @@ public class ClassContentUIHandler extends ContentUIHandler<ObjectModelClassImpl } + @Override + protected boolean acceptTarget(Set<Class<?>> targets) { + return targets.contains(ObjectModelClassifier.class) || targets.contains(ObjectModelClass.class); + } + protected void registerAction(ClassContentUI ui, JButton editor) { JRootPane rootPane = ui.getRootPane(); diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ContentUIHandler.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ContentUIHandler.java index 50a9a4e..69d95be 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ContentUIHandler.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ContentUIHandler.java @@ -17,6 +17,7 @@ import java.awt.GridLayout; import java.util.Collection; import java.util.List; import java.util.Map; +import java.util.Set; /** * Created on 16/09/16. @@ -31,35 +32,9 @@ public abstract class ContentUIHandler<X extends WithTagValuesOrStereotypes, M e ui.setModel(model); -// JPanel stereotypesPanel = ui.getStereotypes(); -// -// Map<String, StereotypeMetadata> stereotyps = (Map) stereotypesPanel.getClientProperty("stereotypes"); -// -// if (stereotyps != null) { -// -// for (String tagValue : stereotyps.keySet()) { -// -// JCheckBox objectById = (JCheckBox) ui.getObjectById("stereotype-" + tagValue); -// if (objectById != null) { -// objectById.setSelected(false); -// } -// -// } -// } -// -// for (String stereotype : stereotypes) { -// -// JCheckBox objectById = (JCheckBox) ui.getObjectById("stereotype-" + stereotype); -// if (objectById != null) { -// objectById.setSelected(true); -// } -// } - JPanel tagValuesPanel = ui.getTagValues(); Map<String, TagValueMetadata> tags = (Map) tagValuesPanel.getClientProperty("tagValues"); -// if (tags != null) { - for (String tagValue : tags.keySet()) { JTextField objectById = (JTextField) ui.getObjectById("tagValue-" + tagValue); @@ -68,23 +43,9 @@ public abstract class ContentUIHandler<X extends WithTagValuesOrStereotypes, M e } JAXXButtonGroup buttonGroup = (JAXXButtonGroup) ui.getObjectById("tagValue-" + tagValue + "-rb"); if (buttonGroup != null) { - buttonGroup.setSelectedValue(null); + buttonGroup.setSelectedButton(null); } -// JRadioButton buttonTrue = (JRadioButton) ui.getObjectById("tagValue-" + tagValue + "-true"); -// if (buttonTrue != null) { -// buttonTrue.setSelected(false); -// } -// JRadioButton buttonFalse = (JRadioButton) ui.getObjectById("tagValue-" + tagValue + "-false"); -// if (buttonFalse != null) { -// buttonFalse.setSelected(false); -// } -// JRadioButton buttonUndefined = (JRadioButton) ui.getObjectById("tagValue-" + tagValue + "-undefined"); -// if (buttonUndefined != null) { -// buttonUndefined.setSelected(false); -// } - } -// } // first pass for boolean tag values (= stereotype) for (Map.Entry<String, String> entry : tagValues.entrySet()) { @@ -93,26 +54,24 @@ public abstract class ContentUIHandler<X extends WithTagValuesOrStereotypes, M e if (tagValueMetadata == null || !boolean.class.equals(tagValueMetadata.getType())) { continue; } - + if (!acceptTarget(tagValueMetadata.getTargets())) { + continue; + } JAXXButtonGroup buttonGroup = (JAXXButtonGroup) ui.getObjectById("tagValue-" + tagValueKey + "-rb"); String value = entry.getValue(); - buttonGroup.setSelectedValue(value == null ? "undefined" : value); -// -// JRadioButton buttonTrue = (JRadioButton) ui.getObjectById("tagValue-" + tagValueKey + "-true"); -// buttonTrue.setSelected(false); -// JRadioButton buttonFalse = (JRadioButton) ui.getObjectById("tagValue-" + tagValueKey + "-false"); -// buttonFalse.setSelected(false); -// JRadioButton buttonUndefined = (JRadioButton) ui.getObjectById("tagValue-" + tagValueKey + "-undefined"); -// buttonUndefined.setSelected(false); - + buttonGroup.setSelectedButton(value == null ? "undefined" : value); } + // second pass for other tag values for (Map.Entry<String, String> entry : tagValues.entrySet()) { String tagValueKey = entry.getKey(); TagValueMetadata tagValueMetadata = tags.get(tagValueKey); if (tagValueMetadata == null || boolean.class.equals(tagValueMetadata.getType())) { continue; } + if (!acceptTarget(tagValueMetadata.getTargets())) { + continue; + } JTextField objectById = (JTextField) ui.getObjectById("tagValue-" + tagValueKey); if (objectById != null) { objectById.setText(entry.getValue()); @@ -120,6 +79,8 @@ public abstract class ContentUIHandler<X extends WithTagValuesOrStereotypes, M e } } + protected abstract boolean acceptTarget(Set<Class<?>> targets); + protected void close() { } diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/EnumerationContentUIHandler.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/EnumerationContentUIHandler.java index 6017d64..a932a67 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/EnumerationContentUIHandler.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/EnumerationContentUIHandler.java @@ -2,10 +2,13 @@ package org.nuiton.eugene.editor.application.ui.content; import org.nuiton.eugene.editor.application.ModelExtensionHelper; import org.nuiton.eugene.editor.application.ui.tree.node.EnumerationNode; +import org.nuiton.eugene.models.object.ObjectModelClassifier; +import org.nuiton.eugene.models.object.ObjectModelEnumeration; import org.nuiton.eugene.models.object.xml.ObjectModelEnumerationImpl; import javax.swing.DefaultListModel; import javax.swing.ListSelectionModel; +import java.util.Set; /** * Created on 16/09/16. @@ -41,4 +44,9 @@ public class EnumerationContentUIHandler extends ContentUIHandler<ObjectModelEnu } + @Override + protected boolean acceptTarget(Set<Class<?>> targets) { + return targets.contains(ObjectModelClassifier.class) || targets.contains(ObjectModelEnumeration.class); + } + } diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/InterfaceContentUIHandler.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/InterfaceContentUIHandler.java index de2b7aa..f1952ef 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/InterfaceContentUIHandler.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/InterfaceContentUIHandler.java @@ -4,12 +4,15 @@ import jaxx.runtime.SwingUtil; import org.nuiton.eugene.editor.application.ModelExtensionHelper; import org.nuiton.eugene.editor.application.ModelHelper; import org.nuiton.eugene.editor.application.ui.tree.node.InterfaceNode; +import org.nuiton.eugene.models.object.ObjectModelClassifier; +import org.nuiton.eugene.models.object.ObjectModelInterface; import org.nuiton.eugene.models.object.xml.ObjectModelInterfaceImpl; import javax.swing.ListSelectionModel; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Set; /** * Created on 16/09/16. @@ -51,4 +54,10 @@ public class InterfaceContentUIHandler extends ContentUIHandler<ObjectModelInter ui.getSuperClassesHeaderType().setSelectedItem(null); } + + @Override + protected boolean acceptTarget(Set<Class<?>> targets) { + return targets.contains(ObjectModelClassifier.class) || targets.contains(ObjectModelInterface.class); + } + } diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ModelContentUIHandler.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ModelContentUIHandler.java index 672e0aa..c7c8db5 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ModelContentUIHandler.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ModelContentUIHandler.java @@ -2,8 +2,11 @@ package org.nuiton.eugene.editor.application.ui.content; import org.nuiton.eugene.editor.application.ModelExtensionHelper; import org.nuiton.eugene.editor.application.ui.tree.node.ModelNode; +import org.nuiton.eugene.models.object.ObjectModel; import org.nuiton.eugene.models.object.xml.ObjectModelImpl; +import java.util.Set; + /** * Created on 16/09/16. * @@ -24,4 +27,9 @@ public class ModelContentUIHandler extends ContentUIHandler<ObjectModelImpl, Mod } + @Override + protected boolean acceptTarget(Set<Class<?>> targets) { + return targets.contains(ObjectModel.class); + } + } diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/OperationContentUIHandler.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/OperationContentUIHandler.java index aa09e4a..ddb9d25 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/OperationContentUIHandler.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/OperationContentUIHandler.java @@ -16,6 +16,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; +import java.util.Set; /** * Created on 16/09/16. @@ -67,4 +68,9 @@ public class OperationContentUIHandler extends ContentUIHandler<ObjectModelOpera } + @Override + protected boolean acceptTarget(Set<Class<?>> targets) { + return targets.contains(ObjectModelOperation.class); + } + } diff --git a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/PackageContentUIHandler.java b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/PackageContentUIHandler.java index b865995..d39ea59 100644 --- a/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/PackageContentUIHandler.java +++ b/eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/PackageContentUIHandler.java @@ -2,8 +2,11 @@ package org.nuiton.eugene.editor.application.ui.content; import org.nuiton.eugene.editor.application.ModelExtensionHelper; import org.nuiton.eugene.editor.application.ui.tree.node.PackageNode; +import org.nuiton.eugene.models.object.ObjectModelPackage; import org.nuiton.eugene.models.object.xml.ObjectModelPackageImpl; +import java.util.Set; + /** * Created on 16/09/16. * @@ -23,4 +26,9 @@ public class PackageContentUIHandler extends ContentUIHandler<ObjectModelPackage } + @Override + protected boolean acceptTarget(Set<Class<?>> targets) { + return targets.contains(ObjectModelPackage.class); + } + } -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.
participants (1)
-
nuiton.org scm