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>.