branch feature/editor updated (444fcb8 -> 96756da)
This is an automated email from the git hooks/post-receive script. New change to branch feature/editor in repository eugene. See https://gitlab.nuiton.org/nuiton/eugene.git discards 444fcb8 POC new 96756da POC This update added new revisions after undoing existing revisions. That is to say, some revisions that were in the old version of the branch are not in the new version. This situation occurs when a user --force pushes a change and generates a repository containing something like this: * -- * -- B -- O -- O -- O (444fcb8) \ N -- N -- N refs/heads/feature/editor (96756da) You should already have received notification emails for all of the O revisions, and so the following emails describe only the N revisions from the common base, B. Any revisions marked "omits" are not gone; other references still refer to them. Any revisions marked "discards" are gone forever. The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 96756daafb68e1fa955cd44dce76eccdd299f9f3 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Sep 19 12:23:23 2016 +0200 POC Summary of changes: eugene-editor-maven-plugin/pom.xml | 80 +- .../EugeneEditorApplicationContext.java | 49 +- .../editor/application/ModelExtensionHelper.java | 161 ++ .../eugene/editor/application/ModelHelper.java | 66 + .../config/EugeneEditorConfigOption.java | 16 +- .../application/ui/ContentUIInitializer.java | 223 ++ .../editor/application/ui/ContentUIManager.java | 55 + .../editor/application/ui/EugeneEditorUI.jaxx | 22 +- .../editor/application/ui/EugeneEditorUI.jcss | 18 +- .../application/ui/EugeneEditorUIHandler.java | 18 + .../application/ui/actions/ActionSupport.java | 2 +- .../ui/actions/ChangeApplicationLocaleAction.java | 4 +- .../application/ui/actions/CloseProjectAction.java | 29 - .../application/ui/actions/GotoSiteAction.java | 2 +- .../ui/actions/QuitApplicationAction.java | 4 +- ...enProjectAction.java => SaveProjectAction.java} | 12 +- .../application/ui/actions/ShowAboutAction.java | 2 +- .../application/ui/actions/ShowConfigAction.java | 2 +- .../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 | 45 +- .../eugene-editor-maven-plugin_en_GB.properties | 87 +- .../eugene-editor-maven-plugin_fr_FR.properties | 87 +- .../src/main/resources/icons/action-add.png | Bin 0 -> 733 bytes .../src/main/resources/icons/action-delete.png | Bin 0 -> 783 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 .../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 + .../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 + .../eugene/models/object/xml/ObjectModelImpl.java | 36 + .../object/xml/ObjectModelOperationImpl.java | 10 + 118 files changed, 10015 insertions(+), 136 deletions(-) create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ModelExtensionHelper.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ModelHelper.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/ContentUIInitializer.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/ContentUIManager.java delete mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/actions/CloseProjectAction.java rename eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/actions/{OpenProjectAction.java => SaveProjectAction.java} (54%) create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/AttributeContentUI.jaxx create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/AttributeContentUI.jcss create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/AttributeContentUIHandler.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ClassContentUI.jaxx create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ClassContentUI.jcss create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ClassContentUIHandler.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ContenUIHandler.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ContentUI.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ContentUI.jcss create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/EnumerationContentUI.jaxx create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/EnumerationContentUI.jcss create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/EnumerationContentUIHandler.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/InterfaceContentUI.jaxx create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/InterfaceContentUI.jcss create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/InterfaceContentUIHandler.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ModelContentUI.jaxx create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ModelContentUI.jcss create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ModelContentUIHandler.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/Multiplicity.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/OperationContentUI.jaxx create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/OperationContentUI.jcss create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/OperationContentUIHandler.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/PackageContentUI.jaxx create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/PackageContentUI.jcss create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/PackageContentUIHandler.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/ParameterTableModel.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/AddInterfaceFromClassAction.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/AddLiteralFromEnumerationAction.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/AddSuperClassFromInterfaceAction.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/ContentActionSupport.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateAttributeFromAttributeAction.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateAttributeFromClassAction.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateAttributeFromInterfaceAction.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateClassFromClassAction.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateClassFromPackageAction.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateEnumerationFromEnumerationAction.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateEnumerationFromPackageAction.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateInterfaceFromInterfaceAction.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateInterfaceFromPackageAction.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateLiteralFromEnumerationAction.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateOperationFromClassAction.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateOperationFromInterfaceAction.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateOperationFromOperationAction.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreatePackageFromModelAction.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreatePackageFromPackageAction.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/CreateParameterFromOperationAction.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeleteAttributeFromAttributeAction.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeleteClassFromClassAction.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeleteEnumerationFromEnumerationAction.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeleteInterfaceFromInterfaceAction.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeleteOperationFromOperationAction.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeletePackageFromPackageAction.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/DeleteParameterFromOperationAction.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/RemoveInterfaceFromClassAction.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/RemoveLiteralFromEnumerationAction.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/content/actions/RemoveSuperClassFromInterfaceAction.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/EugeneEditorTree.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/EugeneEditorTreeCellRenderer.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/EugeneEditorTreeSelectionModel.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/TreeModelBuilder.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/AttributeNode.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/ClassNode.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/EnumerationNode.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/InterfaceNode.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/ModelNode.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/NodeSupport.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/OperationNode.java create mode 100644 eugene-editor-maven-plugin/src/main/java/org/nuiton/eugene/editor/application/ui/tree/node/PackageNode.java create mode 100644 eugene-editor-maven-plugin/src/main/resources/icons/action-add.png create mode 100644 eugene-editor-maven-plugin/src/main/resources/icons/action-delete.png create mode 100644 eugene-editor-maven-plugin/src/main/resources/icons/modifier-package.png create mode 100644 eugene-editor-maven-plugin/src/main/resources/icons/modifier-private.png create mode 100644 eugene-editor-maven-plugin/src/main/resources/icons/modifier-protected.png create mode 100644 eugene-editor-maven-plugin/src/main/resources/icons/modifier-public.png create mode 100644 eugene-editor-maven-plugin/src/main/resources/icons/type-attribute.png create mode 100644 eugene-editor-maven-plugin/src/main/resources/icons/type-class.png create mode 100644 eugene-editor-maven-plugin/src/main/resources/icons/type-enumeration.png create mode 100644 eugene-editor-maven-plugin/src/main/resources/icons/type-interface.png create mode 100644 eugene-editor-maven-plugin/src/main/resources/icons/type-model.png create mode 100644 eugene-editor-maven-plugin/src/main/resources/icons/type-operation.png create mode 100644 eugene-editor-maven-plugin/src/main/resources/icons/type-package.png create mode 100644 eugene-editor-maven-plugin/src/main/resources/org/nuiton/eugene/editor/application/ui/tree/node/AttributeNode-error-validation.xml create mode 100644 eugene-editor-maven-plugin/src/main/resources/org/nuiton/eugene/editor/application/ui/tree/node/ClassNode-error-validation.xml create mode 100644 eugene-editor-maven-plugin/src/main/resources/org/nuiton/eugene/editor/application/ui/tree/node/EnumerationNode-error-validation.xml create mode 100644 eugene-editor-maven-plugin/src/main/resources/org/nuiton/eugene/editor/application/ui/tree/node/InterfaceNode-error-validation.xml create mode 100644 eugene-editor-maven-plugin/src/main/resources/org/nuiton/eugene/editor/application/ui/tree/node/ModelNode-error-validation.xml create mode 100644 eugene-editor-maven-plugin/src/main/resources/org/nuiton/eugene/editor/application/ui/tree/node/OperationNode-error-validation.xml create mode 100644 eugene-editor-maven-plugin/src/main/resources/org/nuiton/eugene/editor/application/ui/tree/node/PackageNode-error-validation.xml create mode 100644 eugene-editor-maven-plugin/src/main/resources/validators.xml create mode 100644 eugene-editor-maven-plugin/src/test/resources/observe-entities/observe-common.objectmodel create mode 100644 eugene-editor-maven-plugin/src/test/resources/observe-entities/observe-longline.objectmodel create mode 100644 eugene-editor-maven-plugin/src/test/resources/observe-entities/observe-seine.objectmodel create mode 100644 eugene-editor-maven-plugin/src/test/resources/observe-entities/observe.objectmodel-ext -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/editor in repository eugene. See https://gitlab.nuiton.org/nuiton/eugene.git commit 96756daafb68e1fa955cd44dce76eccdd299f9f3 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 +++ .../org/nuiton/eugene/plugin/GenerateMojo.java | 6 +- .../object/xml/ObjectModelClassifierImpl.java | 16 + .../object/xml/ObjectModelEnumerationImpl.java | 11 + .../eugene/models/object/xml/ObjectModelImpl.java | 36 + .../object/xml/ObjectModelOperationImpl.java | 10 + pom.xml | 136 ++ 150 files changed, 12009 insertions(+), 3 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-maven-plugin/src/main/java/org/nuiton/eugene/plugin/GenerateMojo.java b/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/GenerateMojo.java index a76908c..0bdde81 100644 --- a/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/GenerateMojo.java +++ b/eugene-maven-plugin/src/main/java/org/nuiton/eugene/plugin/GenerateMojo.java @@ -67,7 +67,7 @@ import java.net.MalformedURLException; import java.net.URL; import java.net.URLClassLoader; import java.util.ArrayList; -import java.util.Arrays; +import java.util.Collections; import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; @@ -929,7 +929,7 @@ public class GenerateMojo extends AbstractPlugin implements ChainedFileWriterCon project.addTestCompileSourceRoot(destDirGen.getPath()); Resource resources = new Resource(); resources.setDirectory(destDirGen.getAbsolutePath()); - resources.setExcludes(Arrays.asList("**/*.java")); + resources.setExcludes(Collections.singletonList("**/*.java")); if (isVerbose()) { getLog().info("Add test resource root :" + resources); } @@ -944,7 +944,7 @@ public class GenerateMojo extends AbstractPlugin implements ChainedFileWriterCon project.addCompileSourceRoot(destDirGen.getPath()); Resource resources = new Resource(); resources.setDirectory(destDirGen.getAbsolutePath()); - resources.setExcludes(Arrays.asList("**/*.java")); + resources.setExcludes(Collections.singletonList("**/*.java")); if (isVerbose()) { getLog().info("Add resource root :" + resources); } 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/ObjectModelImpl.java b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImpl.java index 9a58dfa..dc315b8 100644 --- a/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImpl.java +++ b/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImpl.java @@ -39,6 +39,7 @@ import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; +import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -396,6 +397,41 @@ public class ObjectModelImpl implements ObjectModel { stereotypes.add(stereotype); } + public void removePackage(String packageName) { + + for (ObjectModelClass objectModelClass : new LinkedHashSet<>(classes.values()) ) { + if (objectModelClass.getQualifiedName().startsWith(packageName+".")) { + classes.remove(objectModelClass.getQualifiedName()); + } + } + for (ObjectModelInterface objectModelInterface : new LinkedHashSet<>(interfaces.values()) ) { + if (objectModelInterface.getQualifiedName().startsWith(packageName+".")) { + classes.remove(objectModelInterface.getQualifiedName()); + } + } + for (ObjectModelEnumeration objectModelEnumeration : new LinkedHashSet<>(enumerations.values()) ) { + if (objectModelEnumeration.getQualifiedName().startsWith(packageName+".")) { + classes.remove(objectModelEnumeration.getQualifiedName()); + } + } + packages.remove(packageName); + + } + + public void removeClass(String className) { + + classes.remove(className); + + } + + public void removeInterface(String interfaceName) { + interfaces.remove(interfaceName); + } + + public void removeEnumeration(String enumerationName) { + enumerations.remove(enumerationName); + } + protected void mergePackages( ObjectModelPackageImpl initialPackage, ObjectModelPackageImpl additionalPackage) { 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 9b2f645..34a1f59 100644 --- a/pom.xml +++ b/pom.xml @@ -125,6 +125,7 @@ <module>eugene-plantuml-templates</module> <module>eugene-yaml-templates</module> <module>eugene-maven-plugin</module> + <module>eugene-editor-maven-plugin</module> </modules> <scm> @@ -152,6 +153,9 @@ <plexusPluginVersion>1.3.8</plexusPluginVersion> <doxiaVersion>1.6</doxiaVersion> <mavenVersion>3.3.9</mavenVersion> + <jaxxVersion>2.33-SNAPSHOT</jaxxVersion> + <i18nVersion>3.6.2</i18nVersion> + <swingXVersion>1.6.5-1</swingXVersion> <ciViewId>Eugene</ciViewId> <javaVersion>1.7</javaVersion> @@ -450,6 +454,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> @@ -499,6 +572,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> @@ -554,5 +638,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>.
participants (1)
-
nuiton.org scm