From 898077d783c8e33b965c4abb4a8573f79b597316 Mon Sep 17 00:00:00 2001
From: Vincent Lorenzo
Date: Wed, 27 Jan 2021 11:14:48 +0100
Subject: Bug 563982: [Model2Doc] update IEEE plugins and doc generation -
provide the template - provide an action to create the required UML
structure - update the documentation
Change-Id: I48a1ada6d43e06dbc39144538fa0bf54b8983c1a
Signed-off-by: Vincent Lorenzo
---
.../feature.xml | 7 +
.../org.eclipse.papyrus.model2doc.doc/plugin.xml | 12 +
.../IEEE_For_SysML-papyrusUserDoc-main-toc.xml | 4 +
.../IEEE_For_SysML-papyrusUserDoc.mediawiki | 43 +++
.../images/ieee/IEEE_Create_Document_Template.png | Bin 0 -> 22440 bytes
.../ieee/IEEE_Create_Requirements_Structure.png | Bin 0 -> 14533 bytes
.../ieee/IEEE_Created_Packages_Structure.png | Bin 0 -> 17015 bytes
.../.classpath | 8 +
.../.project | 28 ++
.../.settings/org.eclipse.core.resources.prefs | 2 +
.../.settings/org.eclipse.core.runtime.prefs | 2 +
.../.settings/org.eclipse.jdt.core.prefs | 319 +++++++++++++++++++
.../.settings/org.eclipse.jdt.ui.prefs | 127 ++++++++
.../.settings/org.eclipse.pde.api.tools.prefs | 104 +++++++
.../IEEERequirementsProcess.mediawiki | 31 ++
.../META-INF/MANIFEST.MF | 34 ++
.../OSGI-INF/l10n/bundle.properties | 14 +
.../about.html | 28 ++
.../build.properties | 10 +
.../plugin.xml | 74 +++++
.../pom.xml | 17 +
.../resources/ODT_IEEE_For_SysML14.pdst | 148 +++++++++
.../resources/icons/srs_document.png | Bin 0 -> 557 bytes
.../odt_sysml14_ieee_requirements.architecture | 26 ++
.../resources/srs_template_ieee.ott | Bin 0 -> 16037 bytes
.../odt/architecture/utils/IEEEConstants.java | 36 +++
.../sysml14/odt/architecture/Activator.java | 63 ++++
.../CreateIEEEDocumentTemplateEditorCommand.java | 87 ++++++
...reateIEEEDocumentTemplateEditorViewCommand.java | 120 +++++++
...IEEERequirementsStructureForSysML14Command.java | 58 ++++
.../CreateIEEERequirementsStructureHandler.java | 91 ++++++
.../internal/handlers/PropertyTester.java | 63 ++++
.../.classpath | 2 +-
.../META-INF/MANIFEST.MF | 16 +-
.../build.properties | 2 +-
.../profile/IEEERequirementsDocumentation.ecore | 56 ----
.../IEEERequirementsDocumentation.profile.ecore | 56 ++++
.../IEEERequirementsDocumentation.profile.genmodel | 46 +--
.../IEEERequirementsDocumentation.profile.uml | 344 ++++++++++-----------
...EEERequirementsDocumentationProfileCommand.java | 114 +++++++
.../CreateIEEERequirementsStructureCommand.java | 337 ++++++++++++++++++++
.../utils/IEEERequirementsConstants.java | 64 ++++
...IEEERequirementsDocumentationProfileHelper.java | 245 +++++++++++++++
.../documentation/IEEERequirementCategory.java | 71 ++++-
.../impl/AbstractRequirementsImpl.java | 2 +-
.../impl/IEEEFunctionalRequirementsImpl.java | 2 +-
.../IEEERequirementsDocumentationPackageImpl.java | 10 +-
.../documentation/impl/IEEERequirementsImpl.java | 2 +-
...IEEERequirementsDocumentationProfileHelper.java | 242 ---------------
plugins/integration/ieee/pom.xml | 1 +
50 files changed, 2645 insertions(+), 523 deletions(-)
create mode 100755 plugins/doc/org.eclipse.papyrus.model2doc.doc/src/site/mediawiki/IEEE_For_SysML-papyrusUserDoc-main-toc.xml
create mode 100755 plugins/doc/org.eclipse.papyrus.model2doc.doc/src/site/mediawiki/IEEE_For_SysML-papyrusUserDoc.mediawiki
create mode 100755 plugins/doc/org.eclipse.papyrus.model2doc.doc/src/site/mediawiki/images/ieee/IEEE_Create_Document_Template.png
create mode 100755 plugins/doc/org.eclipse.papyrus.model2doc.doc/src/site/mediawiki/images/ieee/IEEE_Create_Requirements_Structure.png
create mode 100755 plugins/doc/org.eclipse.papyrus.model2doc.doc/src/site/mediawiki/images/ieee/IEEE_Created_Packages_Structure.png
create mode 100755 plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/.classpath
create mode 100755 plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/.project
create mode 100755 plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/.settings/org.eclipse.core.resources.prefs
create mode 100755 plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/.settings/org.eclipse.core.runtime.prefs
create mode 100755 plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/.settings/org.eclipse.jdt.core.prefs
create mode 100755 plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/.settings/org.eclipse.jdt.ui.prefs
create mode 100755 plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/.settings/org.eclipse.pde.api.tools.prefs
create mode 100755 plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/IEEERequirementsProcess.mediawiki
create mode 100755 plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/META-INF/MANIFEST.MF
create mode 100755 plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/OSGI-INF/l10n/bundle.properties
create mode 100755 plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/about.html
create mode 100755 plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/build.properties
create mode 100755 plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/plugin.xml
create mode 100755 plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/pom.xml
create mode 100755 plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/resources/ODT_IEEE_For_SysML14.pdst
create mode 100755 plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/resources/icons/srs_document.png
create mode 100755 plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/resources/odt_sysml14_ieee_requirements.architecture
create mode 100755 plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/resources/srs_template_ieee.ott
create mode 100755 plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/src-api/org/eclipse/papyrus/model2doc/integration/ieee/requirements/sysml14/odt/architecture/utils/IEEEConstants.java
create mode 100755 plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/src/org/eclipse/papyrus/model2doc/integration/ieee/requirements/sysml14/odt/architecture/Activator.java
create mode 100755 plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/src/org/eclipse/papyrus/model2doc/integration/ieee/requirements/sysml14/odt/architecture/internal/commands/CreateIEEEDocumentTemplateEditorCommand.java
create mode 100755 plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/src/org/eclipse/papyrus/model2doc/integration/ieee/requirements/sysml14/odt/architecture/internal/commands/CreateIEEEDocumentTemplateEditorViewCommand.java
create mode 100755 plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/src/org/eclipse/papyrus/model2doc/integration/ieee/requirements/sysml14/odt/architecture/internal/commands/CreateIEEERequirementsStructureForSysML14Command.java
create mode 100755 plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/src/org/eclipse/papyrus/model2doc/integration/ieee/requirements/sysml14/odt/architecture/internal/handlers/CreateIEEERequirementsStructureHandler.java
create mode 100755 plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/src/org/eclipse/papyrus/model2doc/integration/ieee/requirements/sysml14/odt/architecture/internal/handlers/PropertyTester.java
delete mode 100755 plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/profile/IEEERequirementsDocumentation.ecore
create mode 100755 plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/profile/IEEERequirementsDocumentation.profile.ecore
create mode 100755 plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/src-api/org/eclipse/papyrus/model2doc/integration/ieee/requirements/commands/ApplyIEEERequirementsDocumentationProfileCommand.java
create mode 100755 plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/src-api/org/eclipse/papyrus/model2doc/integration/ieee/requirements/commands/CreateIEEERequirementsStructureCommand.java
create mode 100755 plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/src-api/org/eclipse/papyrus/model2doc/integration/ieee/requirements/utils/IEEERequirementsConstants.java
create mode 100755 plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/src-api/org/eclipse/papyrus/model2doc/integration/ieee/requirements/utils/IEEERequirementsDocumentationProfileHelper.java
delete mode 100755 plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/src/org/eclipse/papyrus/model2doc/integration/ieee/requirements/utils/IEEERequirementsDocumentationProfileHelper.java
diff --git a/features/org.eclipse.papyrus.model2doc.integration.ieee.sysml14.odt.feature/feature.xml b/features/org.eclipse.papyrus.model2doc.integration.ieee.sysml14.odt.feature/feature.xml
index 7cc739ff..89be4a23 100755
--- a/features/org.eclipse.papyrus.model2doc.integration.ieee.sysml14.odt.feature/feature.xml
+++ b/features/org.eclipse.papyrus.model2doc.integration.ieee.sysml14.odt.feature/feature.xml
@@ -48,4 +48,11 @@
install-size="0"
version="0.0.0"/>
+
+
diff --git a/plugins/doc/org.eclipse.papyrus.model2doc.doc/plugin.xml b/plugins/doc/org.eclipse.papyrus.model2doc.doc/plugin.xml
index f82ecd27..6590b540 100755
--- a/plugins/doc/org.eclipse.papyrus.model2doc.doc/plugin.xml
+++ b/plugins/doc/org.eclipse.papyrus.model2doc.doc/plugin.xml
@@ -29,10 +29,12 @@
primary="false">
@@ -46,6 +48,16 @@
file="target/site/generated-eclipse-help/model2doc-papyrusDevDoc-toc.xml"
primary="false">
+
+
+
+
diff --git a/plugins/doc/org.eclipse.papyrus.model2doc.doc/src/site/mediawiki/IEEE_For_SysML-papyrusUserDoc-main-toc.xml b/plugins/doc/org.eclipse.papyrus.model2doc.doc/src/site/mediawiki/IEEE_For_SysML-papyrusUserDoc-main-toc.xml
new file mode 100755
index 00000000..d0292f39
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.model2doc.doc/src/site/mediawiki/IEEE_For_SysML-papyrusUserDoc-main-toc.xml
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/plugins/doc/org.eclipse.papyrus.model2doc.doc/src/site/mediawiki/IEEE_For_SysML-papyrusUserDoc.mediawiki b/plugins/doc/org.eclipse.papyrus.model2doc.doc/src/site/mediawiki/IEEE_For_SysML-papyrusUserDoc.mediawiki
new file mode 100755
index 00000000..b58bf068
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.model2doc.doc/src/site/mediawiki/IEEE_For_SysML-papyrusUserDoc.mediawiki
@@ -0,0 +1,43 @@
+=IEEE For SysML=
+==Description==
+This feature provides a template to generate the documentation of SysML Requirements according to the IEEE Recommendation ('''[https://ieeexplore.ieee.org/document/720574 830-1998 - IEEE Recommended Practice for Software Requirements Specifications]''').
+Currently '''Papyrus-Model2doc''' only provides this feature for '''SysML 1.4''' and only allows to generate an odt file (LibreOffice format).
+
+This feature has been though as a demonstrator of Model2Doc capacities, but it can easily be customized for your own application.
+
+==Requirements==
+*'''LibreOffice''' must be installed on your computer (read ''Model2Doc Installation'' chapter for further information)
+*You need to install the model2doc feature called '''Papyrus-Model2Doc Papyrus IEEE Integration for SysML 1.4 (ODT format)'''
+**This feature requires '''Papyrus''' and the Papyrus Add-on '''SysML 1.4'''
+
+==How to use it?==
+* Create a new SysML model as usual
+* In the ModelExplorer View, select the root element of your model, then '''Right-Click > Create IEEE Requirements Structure For SysML 1.4'''
+** This action applies the required profile '''IEEERequirementsDocumentation'''
+[[Image:images/ieee/IEEE_Create_Requirements_Structure.png|frame|The menu to select to create the IEEE Structure]]
+** This action creates several stereotyped Packages (The applied stereotypes come from the profile '''IEEERequirementsDocumentation''').
+[[Image:images/ieee/IEEE_Created_Packages_Structure.png|frame|The created Structure]]
+* Now you can create your requirements, but they must be owned by one of these created Packages:
+** UserInterfaceRequirements
+** HWInterfacesRequirements
+** SWInterfacesRequirements
+** CommunicationInterfacesRequirements
+** FunctionalRequirements_Mode_1
+** FunctionalRequirements_Mode_2
+** FunctionalRequirements_Mode_3
+*** NB: Your can create more FunctionRequirements_Mode_x package if required. Don't forgot to apply on it the Stereotype '''<>''' and to configure these properties '''mode''' and '''category'''. in addition, you need to complete the provide DocumentStructureTemplate before launching the document generation.
+** PerformanceRequirements
+** DesignConstraintsRequirements
+** SoftwareSystemAttributeRequirements
+** OtherRequirements
+
+Please notice, that the document generation only use the field '''name''' and '''text''' of your requirements, so it is better if you fill these fields.
+Once you created your requirements, you can use the Document Template provided for IEEE.
+* In the ModelExplorer View, select the root of your model, then '''Right-Click > New Document Template -> ODT - IEEE SysML 1.4 Requirements Documentation'''
+[[Image:images/ieee/IEEE_Create_Document_Template.png|frame|The menu to create the Document Template]]
+* This action creates the IEEE Document Template, and open the editor. If you created new Package in your model, you need to adapt the provided Template to your structure.
+* From the opened editor, select the root element named '''Text Document Template xxx''', then '''Right-Click > Generate All (Structure + ODT)'''.
+** The created odt file will appears in your workspace inside a created '''output''' folder.
+
+===Result===
+The result is a LibreOffice document with the same structure than your SysML model, where the UML Package becomes titles, the '''Requirement#name''' becomes sub-title, and the '''Requirement#text''' becomes a paragraph.
\ No newline at end of file
diff --git a/plugins/doc/org.eclipse.papyrus.model2doc.doc/src/site/mediawiki/images/ieee/IEEE_Create_Document_Template.png b/plugins/doc/org.eclipse.papyrus.model2doc.doc/src/site/mediawiki/images/ieee/IEEE_Create_Document_Template.png
new file mode 100755
index 00000000..f7e34a85
Binary files /dev/null and b/plugins/doc/org.eclipse.papyrus.model2doc.doc/src/site/mediawiki/images/ieee/IEEE_Create_Document_Template.png differ
diff --git a/plugins/doc/org.eclipse.papyrus.model2doc.doc/src/site/mediawiki/images/ieee/IEEE_Create_Requirements_Structure.png b/plugins/doc/org.eclipse.papyrus.model2doc.doc/src/site/mediawiki/images/ieee/IEEE_Create_Requirements_Structure.png
new file mode 100755
index 00000000..1784f6c8
Binary files /dev/null and b/plugins/doc/org.eclipse.papyrus.model2doc.doc/src/site/mediawiki/images/ieee/IEEE_Create_Requirements_Structure.png differ
diff --git a/plugins/doc/org.eclipse.papyrus.model2doc.doc/src/site/mediawiki/images/ieee/IEEE_Created_Packages_Structure.png b/plugins/doc/org.eclipse.papyrus.model2doc.doc/src/site/mediawiki/images/ieee/IEEE_Created_Packages_Structure.png
new file mode 100755
index 00000000..e908eaaa
Binary files /dev/null and b/plugins/doc/org.eclipse.papyrus.model2doc.doc/src/site/mediawiki/images/ieee/IEEE_Created_Packages_Structure.png differ
diff --git a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/.classpath b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/.classpath
new file mode 100755
index 00000000..ee0fccb5
--- /dev/null
+++ b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/.classpath
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/.project b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/.project
new file mode 100755
index 00000000..5a9125ec
--- /dev/null
+++ b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/.project
@@ -0,0 +1,28 @@
+
+
+ org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+ org.eclipse.pde.ManifestBuilder
+
+
+
+
+ org.eclipse.pde.SchemaBuilder
+
+
+
+
+
+ org.eclipse.pde.PluginNature
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/.settings/org.eclipse.core.resources.prefs b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/.settings/org.eclipse.core.resources.prefs
new file mode 100755
index 00000000..896a9a53
--- /dev/null
+++ b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/=UTF-8
\ No newline at end of file
diff --git a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/.settings/org.eclipse.core.runtime.prefs b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/.settings/org.eclipse.core.runtime.prefs
new file mode 100755
index 00000000..5a0ad22d
--- /dev/null
+++ b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/.settings/org.eclipse.jdt.core.prefs b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/.settings/org.eclipse.jdt.core.prefs
new file mode 100755
index 00000000..037f04a0
--- /dev/null
+++ b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,319 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
+org.eclipse.jdt.core.formatter.comment.line_length=260
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=false
+org.eclipse.jdt.core.formatter.join_wrapped_lines=false
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=260
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=5
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=false
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
diff --git a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/.settings/org.eclipse.jdt.ui.prefs b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/.settings/org.eclipse.jdt.ui.prefs
new file mode 100755
index 00000000..1a3bd02c
--- /dev/null
+++ b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,127 @@
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.correct_indentation=false
+cleanup.format_source_code=false
+cleanup.format_source_code_changes_only=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.organize_imports=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=true
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=true
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_blocks=true
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_type_arguments=false
+cleanup_profile=_Papyrus
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_Papyrus
+formatter_settings_version=12
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.staticondemandthreshold=99
+org.eclipse.jdt.ui.text.custom_code_templates=/**\n * @return the ${bare_field_name}\n *//**\n * @param ${param} the ${bare_field_name} to set\n *//**\n * Constructor.\n *\n * ${tags}\n *//*****************************************************************************\n * Copyright (c) ${year} CEA LIST and others.\n * \n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License 2.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-2.0/\n *\n * SPDX-License-Identifier: EPL-2.0\n *\n * Contributors\:\n * CEA LIST - Initial API and implementation\n * \n *****************************************************************************/\n/**\n *\n * ${tags}\n *//**\n * \n *//**\n * ${tags}\n *//**\n * ${see_to_overridden}\n *\n * ${tags}\n *//**\n * ${see_to_target}\n *\n * ${tags}\n */${filecomment}\n${package_declaration}\n\n${typecomment}\n${type_declaration}\n\n\n\n// ${todo} Auto-generated catch block\n${exception_var}.printStackTrace();// ${todo} Auto-generated method stub\n${body_statement}${body_statement}\n// ${todo} Auto-generated constructor stubreturn ${field};${field} \= ${param};
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=true
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=true
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/.settings/org.eclipse.pde.api.tools.prefs b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100755
index 00000000..b2260f87
--- /dev/null
+++ b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,104 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Warning
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Warning
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Warning
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Warning
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Warning
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Ignore
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Ignore
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Ignore
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+MISSING_EE_DESCRIPTIONS=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=Enabled
+changed_execution_env=Warning
+eclipse.preferences.version=1
+incompatible_api_component_version=Warning
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Error
+incompatible_api_component_version_report_minor_without_api_change=Error
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/IEEERequirementsProcess.mediawiki b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/IEEERequirementsProcess.mediawiki
new file mode 100755
index 00000000..4cc71b51
--- /dev/null
+++ b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/IEEERequirementsProcess.mediawiki
@@ -0,0 +1,31 @@
+The IEEERequirementsTranscriber generate a document with this pattern:
+#Title 'Specific Requirements'
+##Title 'External interfaces Requirements'
+###Title 'User Interface'
+####A Title for each of these requirements
+#####A paragraph with the text of the requirement
+###Title 'Hardwares Interfaces'
+####A Title for each of these requirements
+#####A paragraph with the text of the requirement
+###Title 'Software Interfaces'
+####A Title for each of these requirements
+#####A paragraph with the text of the requirement
+###Title 'Communication Interfaces'
+####A Title for each of these requirements
+#####A paragraph with the text of the requirement
+#Title 'Functional Requirements'
+##A title per mode of the requirements
+###A Title for each of these requirements
+####A paragraph with the text of the requirement
+#Title 'Performance Requirements'
+##A Title for each of these requirements
+###A paragraph with the text of the requirement
+#Title 'Design Constraints'
+##A Title for each of these requirements
+###A paragraph with the text of the requirement
+#Title 'Software System Attributes'
+##A Title for each of these requirements
+###A paragraph with the text of the requirement
+#Title 'Other Requirements'
+##A Title for each of these requirements
+###A paragraph with the text of the requirement
\ No newline at end of file
diff --git a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/META-INF/MANIFEST.MF b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/META-INF/MANIFEST.MF
new file mode 100755
index 00000000..3a39303f
--- /dev/null
+++ b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/META-INF/MANIFEST.MF
@@ -0,0 +1,34 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %Bundle-Name
+Bundle-SymbolicName: org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture;singleton:=true
+Bundle-Version: 0.8.0.qualifier
+Bundle-Activator: org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture.Activator
+Bundle-Vendor: %Bundle-Vendor
+Require-Bundle: org.eclipse.ui;bundle-version="[3.118.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.20.0,4.0.0)",
+ org.eclipse.papyrus.model2doc.integration.ieee.requirements;bundle-version="[0.8.0,1.0.0)",
+ org.eclipse.papyrus.model2doc.integration.emf.documentstructuretemplate.modelexplorer;bundle-version="[0.8.0,1.0.0)",
+ org.eclipse.papyrus.infra.architecture;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.uml2.uml;bundle-version="[5.5.0,6.0.0)",
+ org.eclipse.gmf.runtime.emf.commands.core;bundle-version="[1.7.0,2.0.0)",
+ org.eclipse.core.expressions;bundle-version="[3.7.0,4.0.0)",
+ org.eclipse.papyrus.infra.emf.gmf;bundle-version="[2.0.0,3.0.0)",
+ org.eclipse.papyrus.infra.emf;bundle-version="[4.0.0,5.0.0)",
+ org.eclipse.papyrus.model2doc.integration.emf.documentstructuretemplate.representation.architecture;bundle-version="[0.8.0,1.0.0)",
+ org.eclipse.papyrus.model2doc.integration.emf.documentstructuretemplate.ui;bundle-version="[0.8.0,1.0.0)",
+ org.eclipse.papyrus.model2doc.integration.emf.documentstructuretemplate.representation;bundle-version="[0.8.0,1.0.0)",
+ org.eclipse.papyrus.model2doc.emf.documentstructuretemplate;bundle-version="[0.8.0,1.0.0)",
+ org.eclipse.papyrus.infra.viewpoints.policy;bundle-version="[4.0.0,5.0.0)",
+ org.eclipse.papyrus.infra.core;bundle-version="[4.0.0,5.0.0)",
+ org.eclipse.papyrus.infra.core.sasheditor;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.papyrus.infra.core.sashwindows.di;bundle-version="[2.0.0,3.0.0)",
+ org.eclipse.papyrus.uml.architecture;bundle-version="[2.0.0,3.0.0)",
+ org.eclipse.papyrus.infra.tools;bundle-version="[4.0.0,5.0.0)",
+ org.eclipse.papyrus.sysml14.architecture;bundle-version="[2.0.0,3.0.0)",
+ org.eclipse.papyrus.infra.core.log;bundle-version="[2.0.0,3.0.0)"
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Automatic-Module-Name: org.eclipse.papyrus.model2doc.integration.ieee.sysml14.architecture
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture.internal.commands,
+ org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture.utils
diff --git a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/OSGI-INF/l10n/bundle.properties b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/OSGI-INF/l10n/bundle.properties
new file mode 100755
index 00000000..01bb60bd
--- /dev/null
+++ b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/OSGI-INF/l10n/bundle.properties
@@ -0,0 +1,14 @@
+# Copyright (c) 2021 CEA LIST.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+#Properties file for org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture
+Bundle-Vendor = Eclipse Modeling Project
+Bundle-Name = Papyrus-Model2Doc - IEEE/SysML 1.4 Requirements Documentation Generator (ODT) Architecture (Incubation)
\ No newline at end of file
diff --git a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/about.html b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/about.html
new file mode 100755
index 00000000..ef2872f2
--- /dev/null
+++ b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/about.html
@@ -0,0 +1,28 @@
+
+
+
+
+About
+
+
+
About This Content
+
+
November 30, 2017
+
License
+
+
The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 2.0 ("EPL"). A copy of the EPL is available
+at https://www.eclipse.org/legal/epl-2.0/.
+For purposes of the EPL, "Program" will mean the Content.
+
+
If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at http://www.eclipse.org.
+
+
+
\ No newline at end of file
diff --git a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/build.properties b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/build.properties
new file mode 100755
index 00000000..406e9654
--- /dev/null
+++ b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/build.properties
@@ -0,0 +1,10 @@
+source.. = src/,\
+ src-api/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ resources/,\
+ about.html,\
+ plugin.xml,\
+ OSGI-INF/
+src.includes = about.html
diff --git a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/plugin.xml b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/plugin.xml
new file mode 100755
index 00000000..d774b3bd
--- /dev/null
+++ b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/plugin.xml
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/pom.xml b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/pom.xml
new file mode 100755
index 00000000..1a08236f
--- /dev/null
+++ b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/pom.xml
@@ -0,0 +1,17 @@
+
+
+ 4.0.0
+
+
+ org.eclipse.papyrus.model2doc.plugins.integration-ieee
+ org.eclipse.papyrus.model2doc.plugins.integration.ieee
+ 0.7.0-SNAPSHOT
+
+
+ org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture
+ 0.8.0-SNAPSHOT
+ eclipse-plugin
+
+
diff --git a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/resources/ODT_IEEE_For_SysML14.pdst b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/resources/ODT_IEEE_For_SysML14.pdst
new file mode 100755
index 00000000..86c717b2
--- /dev/null
+++ b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/resources/ODT_IEEE_For_SysML14.pdst
@@ -0,0 +1,148 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/resources/icons/srs_document.png b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/resources/icons/srs_document.png
new file mode 100755
index 00000000..eb89aa4c
Binary files /dev/null and b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/resources/icons/srs_document.png differ
diff --git a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/resources/odt_sysml14_ieee_requirements.architecture b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/resources/odt_sysml14_ieee_requirements.architecture
new file mode 100755
index 00000000..1b150c16
--- /dev/null
+++ b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/resources/odt_sysml14_ieee_requirements.architecture
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/resources/srs_template_ieee.ott b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/resources/srs_template_ieee.ott
new file mode 100755
index 00000000..2924d384
Binary files /dev/null and b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/resources/srs_template_ieee.ott differ
diff --git a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/src-api/org/eclipse/papyrus/model2doc/integration/ieee/requirements/sysml14/odt/architecture/utils/IEEEConstants.java b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/src-api/org/eclipse/papyrus/model2doc/integration/ieee/requirements/sysml14/odt/architecture/utils/IEEEConstants.java
new file mode 100755
index 00000000..8eddbace
--- /dev/null
+++ b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/src-api/org/eclipse/papyrus/model2doc/integration/ieee/requirements/sysml14/odt/architecture/utils/IEEEConstants.java
@@ -0,0 +1,36 @@
+/*****************************************************************************
+ * Copyright (c) 2021 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture.utils;
+
+/**
+ * Constants declared for IEEE SysML 1.4 ODT Architecture
+ */
+public final class IEEEConstants {
+
+ private IEEEConstants() {
+ // to prevent instantiation
+ }
+
+ /**
+ * the declared type for the template prototype
+ */
+ public static final String IEEE_ODT_SYSML_14_TEMPLATE_TYPE = "IEEE_For_Sysml14_ODT_DocumentStructureTemplateType"; //$NON-NLS-1$
+
+ /**
+ * the id of the Eclipse command allowing to create the UML Package structure required for the provided documentation template
+ */
+ public static final String CREATE_IEEE_STRUCTURE_COMMAND_ID = "org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture.createIEEEStructureForSysML14"; //$NON-NLS-1$
+}
diff --git a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/src/org/eclipse/papyrus/model2doc/integration/ieee/requirements/sysml14/odt/architecture/Activator.java b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/src/org/eclipse/papyrus/model2doc/integration/ieee/requirements/sysml14/odt/architecture/Activator.java
new file mode 100755
index 00000000..9e60a75c
--- /dev/null
+++ b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/src/org/eclipse/papyrus/model2doc/integration/ieee/requirements/sysml14/odt/architecture/Activator.java
@@ -0,0 +1,63 @@
+/*****************************************************************************
+ * Copyright (c) 2021 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture;
+
+import org.eclipse.papyrus.infra.core.log.LogHelper;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ public static LogHelper log;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ log = new LogHelper(this);
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+}
diff --git a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/src/org/eclipse/papyrus/model2doc/integration/ieee/requirements/sysml14/odt/architecture/internal/commands/CreateIEEEDocumentTemplateEditorCommand.java b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/src/org/eclipse/papyrus/model2doc/integration/ieee/requirements/sysml14/odt/architecture/internal/commands/CreateIEEEDocumentTemplateEditorCommand.java
new file mode 100755
index 00000000..5af26cac
--- /dev/null
+++ b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/src/org/eclipse/papyrus/model2doc/integration/ieee/requirements/sysml14/odt/architecture/internal/commands/CreateIEEEDocumentTemplateEditorCommand.java
@@ -0,0 +1,87 @@
+/*****************************************************************************
+ * Copyright (c) 2021 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture.internal.commands;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.DocumentTemplate;
+import org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.DocumentTemplatePrototype;
+import org.eclipse.papyrus.model2doc.integration.emf.documentstructuretemplate.representation.architecture.CreatePapyrusDocumentTemplateEditorCommand;
+import org.eclipse.papyrus.model2doc.integration.emf.documentstructuretemplate.representation.architecture.commands.CreateDocumentTemplateEditorViewCommand;
+
+/**
+ * Create the TemplateEditor and apply the IEEE Requirements profile if required
+ */
+public class CreateIEEEDocumentTemplateEditorCommand extends CreatePapyrusDocumentTemplateEditorCommand {
+
+ /**
+ *
+ * @param editingDomain
+ * the editing domain to use for the command
+ * @param documentPrototype
+ * * the document template prototype used to create the {@link DocumentTemplate}
+ * @param documentName
+ * the name of the created document
+ * @param documentMainTitle
+ * the main title of the document
+ * @param semanticContext
+ * the semantic context used for the creation of the {@link DocumentTemplate}
+ * @param graphicalContext
+ * the graphical context used for the creation of the {@link DocumentTemplate}
+ * @param openAfterCreation
+ * if true the editor will be opened after the creation
+ * @return
+ * the created {@link DocumentTemplate}
+ */
+ @Override
+ public CreateDocumentTemplateEditorViewCommand createDocumentTemplateEditorCreationCommand(final TransactionalEditingDomain editingDomain,
+ final DocumentTemplatePrototype documentPrototype,
+ final String documentName,
+ final String documentMainTitle,
+ final EObject semanticContext,
+ final EObject graphicalContext,
+ final boolean openAfterCreation) {
+ return new CreateIEEEDocumentTemplateEditorViewCommand(editingDomain, documentPrototype, documentName, documentMainTitle, semanticContext, graphicalContext, openAfterCreation);
+ }
+
+ /**
+ *
+ * @param editingDomain
+ * the editing domain to use for the command
+ * @param documentPrototype
+ * * the document template prototype used to create the {@link DocumentTemplate}
+ * @param documentName
+ * the name of the created document
+ * @param documentMainTitle
+ * the main title of the document
+ * @param semanticContext
+ * the semantic context used for the creation of the {@link DocumentTemplate}
+ * @param openAfterCreation
+ * if true the editor will be opened after the creation
+ * @return
+ * the created {@link DocumentTemplate}
+ */
+ @Override
+ public CreateDocumentTemplateEditorViewCommand createDocumentTemplateEditorCreationCommand(final TransactionalEditingDomain editingDomain,
+ final DocumentTemplatePrototype documentPrototype,
+ final String documentName,
+ final String documentMainTitle,
+ final EObject semanticContext,
+ final boolean openAfterCreation) {
+ return new CreateIEEEDocumentTemplateEditorViewCommand(editingDomain, documentPrototype, documentName, documentMainTitle, semanticContext, openAfterCreation);
+ }
+
+}
diff --git a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/src/org/eclipse/papyrus/model2doc/integration/ieee/requirements/sysml14/odt/architecture/internal/commands/CreateIEEEDocumentTemplateEditorViewCommand.java b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/src/org/eclipse/papyrus/model2doc/integration/ieee/requirements/sysml14/odt/architecture/internal/commands/CreateIEEEDocumentTemplateEditorViewCommand.java
new file mode 100755
index 00000000..fa09a701
--- /dev/null
+++ b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/src/org/eclipse/papyrus/model2doc/integration/ieee/requirements/sysml14/odt/architecture/internal/commands/CreateIEEEDocumentTemplateEditorViewCommand.java
@@ -0,0 +1,120 @@
+/*****************************************************************************
+ * Copyright (c) 2021 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture.internal.commands;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.emf.transaction.util.TransactionUtil;
+import org.eclipse.papyrus.model2doc.emf.documentstructuretemplate.DocumentTemplatePrototype;
+import org.eclipse.papyrus.model2doc.integration.emf.documentstructuretemplate.representation.architecture.commands.CreateDocumentTemplateEditorViewCommand;
+import org.eclipse.papyrus.model2doc.integration.ieee.requirements.commands.ApplyIEEERequirementsDocumentationProfileCommand;
+import org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture.Activator;
+import org.eclipse.uml2.uml.Package;
+
+/**
+ * This class creates the DocumentStructureTemplate for IEEE and apply the IEEERequirements profile if required
+ */
+public class CreateIEEEDocumentTemplateEditorViewCommand extends CreateDocumentTemplateEditorViewCommand {
+
+ /**
+ * Constructor.
+ *
+ * @param domain
+ * @param documentTemplatePrototype
+ * @param documentName
+ * @param documentMainTitle
+ * @param semanticContext
+ * @param openAfterCreation
+ */
+ public CreateIEEEDocumentTemplateEditorViewCommand(TransactionalEditingDomain domain, DocumentTemplatePrototype documentTemplatePrototype, String documentName, String documentMainTitle, EObject semanticContext, boolean openAfterCreation) {
+ super(domain, documentTemplatePrototype, documentName, documentMainTitle, semanticContext, openAfterCreation);
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param domain
+ * @param documentTemplatePrototype
+ * @param documentName
+ * @param documentMainTitle
+ * @param semanticContext
+ * @param graphicalContext
+ * @param openAfterCreation
+ */
+ public CreateIEEEDocumentTemplateEditorViewCommand(TransactionalEditingDomain domain, DocumentTemplatePrototype documentTemplatePrototype, String documentName, String documentMainTitle, EObject semanticContext, EObject graphicalContext,
+ boolean openAfterCreation) {
+ super(domain, documentTemplatePrototype, documentName, documentMainTitle, semanticContext, graphicalContext, openAfterCreation);
+ }
+
+ /**
+ * @see org.eclipse.papyrus.model2doc.integration.emf.documentstructuretemplate.representation.architecture.commands.CreateDocumentTemplateEditorViewCommand#doExecute()
+ *
+ */
+ @Override
+ protected void doExecute() {
+ super.doExecute();
+ final Package rootPackage = getRootPackage();
+ if (rootPackage != null) {
+ final TransactionalEditingDomain domain = TransactionUtil.getEditingDomain(rootPackage);
+ try {
+ new ApplyIEEERequirementsDocumentationProfileCommand(domain, rootPackage).execute(new NullProgressMonitor(), null);
+ } catch (ExecutionException e) {
+ Activator.log.error(e);
+ }
+ }
+ }
+
+ /**
+ * @see org.eclipse.emf.common.command.AbstractCommand#canExecute()
+ *
+ * @return
+ */
+ @Override
+ public boolean canExecute() {
+ return super.canExecute() && canApplyIEEERequirementsProfile();
+ }
+
+ /**
+ *
+ * @return
+ * true if we can apply the required profile
+ */
+ private boolean canApplyIEEERequirementsProfile() {
+ final Package rootPackage = getRootPackage();
+ if (rootPackage != null) {
+ final TransactionalEditingDomain domain = TransactionUtil.getEditingDomain(rootPackage);
+ if (domain != null) {
+ return new ApplyIEEERequirementsDocumentationProfileCommand(domain, rootPackage).canExecute();
+ }
+ }
+ return false;
+ }
+
+ /**
+ *
+ * @return
+ * the rootPackage of the model or null
+ */
+ private Package getRootPackage() {
+ EObject owner = this.semanticContext;
+ while (owner.eContainer() != null) {
+ owner = owner.eContainer();
+ }
+ return owner instanceof Package ? (Package) owner : null;
+ }
+}
diff --git a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/src/org/eclipse/papyrus/model2doc/integration/ieee/requirements/sysml14/odt/architecture/internal/commands/CreateIEEERequirementsStructureForSysML14Command.java b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/src/org/eclipse/papyrus/model2doc/integration/ieee/requirements/sysml14/odt/architecture/internal/commands/CreateIEEERequirementsStructureForSysML14Command.java
new file mode 100755
index 00000000..bce01654
--- /dev/null
+++ b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/src/org/eclipse/papyrus/model2doc/integration/ieee/requirements/sysml14/odt/architecture/internal/commands/CreateIEEERequirementsStructureForSysML14Command.java
@@ -0,0 +1,58 @@
+/*****************************************************************************
+ * Copyright (c) 2021 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture.internal.commands;
+
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.papyrus.model2doc.integration.ieee.requirements.commands.CreateIEEERequirementsStructureCommand;
+import org.eclipse.uml2.uml.Package;
+
+/**
+ * This command allows to create the UML Structure expected by the DocumentStructuretemplate in a SysML 1.4 environnement
+ */
+public class CreateIEEERequirementsStructureForSysML14Command extends CreateIEEERequirementsStructureCommand {
+
+ /**
+ *
+ * Constructor.
+ *
+ * @param domain
+ * the editing domain
+ * @param pack
+ * the UML package used to contains the created IEEE packages structures
+ */
+ public CreateIEEERequirementsStructureForSysML14Command(final TransactionalEditingDomain domain, final Package pack) {
+ super(domain, pack);
+ }
+
+ /**
+ * @see org.eclipse.papyrus.model2doc.integration.ieee.requirements.commands.CreateIEEERequirementsStructureCommand#canExecute()
+ *
+ * @return
+ */
+ @Override
+ public boolean canExecute() {
+ return super.canExecute() && isSysMLProfileRequirementsApplied();
+ }
+
+ /**
+ *
+ * @return
+ * true if the SysML::Requirements profile is applied
+ */
+ protected boolean isSysMLProfileRequirementsApplied() {
+ return this.pack.getAppliedProfile("SysML::Requirements") != null; //$NON-NLS-1$
+ }
+}
diff --git a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/src/org/eclipse/papyrus/model2doc/integration/ieee/requirements/sysml14/odt/architecture/internal/handlers/CreateIEEERequirementsStructureHandler.java b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/src/org/eclipse/papyrus/model2doc/integration/ieee/requirements/sysml14/odt/architecture/internal/handlers/CreateIEEERequirementsStructureHandler.java
new file mode 100755
index 00000000..be70277b
--- /dev/null
+++ b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/src/org/eclipse/papyrus/model2doc/integration/ieee/requirements/sysml14/odt/architecture/internal/handlers/CreateIEEERequirementsStructureHandler.java
@@ -0,0 +1,91 @@
+/*****************************************************************************
+ * Copyright (c) 2021 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture.internal.handlers;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.expressions.IEvaluationContext;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.emf.transaction.util.TransactionUtil;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.papyrus.infra.emf.gmf.command.GMFtoEMFCommandWrapper;
+import org.eclipse.papyrus.infra.emf.utils.EMFHelper;
+import org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture.internal.commands.CreateIEEERequirementsStructureForSysML14Command;
+import org.eclipse.uml2.uml.Package;
+
+/**
+ * Handler creating the expected model structure
+ */
+public class CreateIEEERequirementsStructureHandler extends AbstractHandler {
+
+ /**
+ * the command creating the structure
+ */
+ private CreateIEEERequirementsStructureForSysML14Command cmd;
+
+ /**
+ * the editing domain
+ */
+ private TransactionalEditingDomain domain;
+
+ /**
+ * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+ *
+ * @param event
+ * @return
+ * @throws ExecutionException
+ */
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ if (cmd != null && domain != null) {
+ domain.getCommandStack().execute(new GMFtoEMFCommandWrapper(cmd));
+ }
+
+ return null;
+ }
+
+
+ /**
+ * @see org.eclipse.core.commands.AbstractHandler#setEnabled(java.lang.Object)
+ *
+ * @param evaluationContext
+ */
+ @Override
+ public void setEnabled(Object evaluationContext) {
+ boolean enabled = false;
+ this.cmd = null;
+ this.domain = null;
+ if (evaluationContext instanceof IEvaluationContext) {
+ final IEvaluationContext iEvaluationContext = (IEvaluationContext) evaluationContext;
+ final Object tmp = iEvaluationContext.getVariable("selection"); //$NON-NLS-1$
+ if (tmp instanceof IStructuredSelection) {
+ final Object selectedElement = ((IStructuredSelection) tmp).getFirstElement();
+ final EObject eobject = EMFHelper.getEObject(selectedElement);
+ if (eobject instanceof Package) {
+ this.domain = TransactionUtil.getEditingDomain(eobject);
+ this.cmd = new CreateIEEERequirementsStructureForSysML14Command(domain, (Package) eobject);
+ enabled = this.cmd.canExecute();
+ }
+
+ }
+ }
+ setBaseEnabled(enabled);
+ }
+
+
+}
diff --git a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/src/org/eclipse/papyrus/model2doc/integration/ieee/requirements/sysml14/odt/architecture/internal/handlers/PropertyTester.java b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/src/org/eclipse/papyrus/model2doc/integration/ieee/requirements/sysml14/odt/architecture/internal/handlers/PropertyTester.java
new file mode 100755
index 00000000..f15e6efa
--- /dev/null
+++ b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture/src/org/eclipse/papyrus/model2doc/integration/ieee/requirements/sysml14/odt/architecture/internal/handlers/PropertyTester.java
@@ -0,0 +1,63 @@
+/*****************************************************************************
+ * Copyright (c) 2021 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture.internal.handlers;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.infra.architecture.ArchitectureDescriptionUtils;
+import org.eclipse.papyrus.infra.core.architecture.merged.MergedArchitectureContext;
+import org.eclipse.papyrus.infra.core.resource.ModelSet;
+import org.eclipse.uml2.uml.Package;
+
+/**
+ * Property tester used to check if we are in a SysML 1.4 environement
+ */
+public class PropertyTester extends org.eclipse.core.expressions.PropertyTester {
+
+ /**
+ * Property used to check in which Architecture Framework we are
+ */
+ private static final String IS_SYSML_14_AF = "isInsideSysML14AF"; //$NON-NLS-1$
+
+ /**
+ * TODO : this constant is not defined in SysML 1.4
+ */
+ private static final String SYSML14_ARCHITECTURE_CONTEXT_ID = "org.eclipse.papyrus.sysml.architecture.SysML14"; //$NON-NLS-1$
+
+
+ public PropertyTester() {
+ // nothing to do
+ }
+
+ /**
+ *
+ * @see org.eclipse.core.expressions.IPropertyTester#test(java.lang.Object, java.lang.String, java.lang.Object[], java.lang.Object)
+ *
+ * @param receiver
+ * @param property
+ * @param args
+ * @param expectedValue
+ * @return
+ */
+ @Override
+ public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
+ if (IS_SYSML_14_AF.equals(property) && receiver instanceof Package) {
+ ArchitectureDescriptionUtils utils = new ArchitectureDescriptionUtils((ModelSet) ((EObject) receiver).eResource().getResourceSet());
+ final MergedArchitectureContext architectureContext = utils.getArchitectureContext();
+ return SYSML14_ARCHITECTURE_CONTEXT_ID.equals(architectureContext.getId());
+ }
+ return false;
+ }
+
+}
diff --git a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/.classpath b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/.classpath
index bb642933..ad953989 100755
--- a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/.classpath
+++ b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/.classpath
@@ -3,6 +3,6 @@
-
+
diff --git a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/META-INF/MANIFEST.MF b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/META-INF/MANIFEST.MF
index bd1bc2a9..97dd1084 100755
--- a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/META-INF/MANIFEST.MF
+++ b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/META-INF/MANIFEST.MF
@@ -7,13 +7,19 @@ Bundle-ClassPath: .
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Bundle-RequiredExecutionEnvironment: JavaSE-11
-Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.15.0,4.0.0)";resolution:=optional;x-installation:=greedy,
- org.eclipse.emf.ecore;bundle-version="[2.17.0,3.0.0)",
- org.eclipse.uml2.types;bundle-version="[2.0.0,3.0.0)",
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.20.0,4.0.0)";resolution:=optional;x-installation:=greedy,
+ org.eclipse.emf.ecore;bundle-version="[2.23.0,3.0.0)",
+ org.eclipse.uml2.types;bundle-version="[2.5.0,3.0.0)",
org.eclipse.uml2.uml;bundle-version="[5.5.0,6.0.0)",
- org.eclipse.papyrus.uml.extensionpoints;bundle-version="[2.0.0,3.0.0)"
+ org.eclipse.papyrus.uml.extensionpoints;bundle-version="[2.0.0,3.0.0)",
+ org.eclipse.papyrus.uml.service.types;bundle-version="[5.0.0,6.0.0)",
+ org.eclipse.emf.transaction;bundle-version="[1.9.0,2.0.0)",
+ org.eclipse.core.commands;bundle-version="[3.9.0,4.0.0)",
+ org.eclipse.gmf.runtime.common.core;bundle-version="[1.7.0,2.0.0)",
+ org.eclipse.gmf.runtime.emf.commands.core;bundle-version="[1.7.0,2.0.0)"
Bundle-ActivationPolicy: lazy
-Export-Package: org.eclipse.papyrus.model2doc.integration.ieee.requirements.documentation,
+Export-Package: org.eclipse.papyrus.model2doc.integration.ieee.requirements.commands,
+ org.eclipse.papyrus.model2doc.integration.ieee.requirements.documentation,
org.eclipse.papyrus.model2doc.integration.ieee.requirements.documentation.impl,
org.eclipse.papyrus.model2doc.integration.ieee.requirements.documentation.util,
org.eclipse.papyrus.model2doc.integration.ieee.requirements.utils
diff --git a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/build.properties b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/build.properties
index 06e62617..0e4f6cc0 100755
--- a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/build.properties
+++ b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/build.properties
@@ -15,6 +15,6 @@ bin.includes = .,\
about.html
jars.compile.order = .
source.. = src-gen/,\
- src
+ src-api
output.. = bin/
src.includes = about.html
diff --git a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/profile/IEEERequirementsDocumentation.ecore b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/profile/IEEERequirementsDocumentation.ecore
deleted file mode 100755
index 1f4efb73..00000000
--- a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/profile/IEEERequirementsDocumentation.ecore
+++ /dev/null
@@ -1,56 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/profile/IEEERequirementsDocumentation.profile.ecore b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/profile/IEEERequirementsDocumentation.profile.ecore
new file mode 100755
index 00000000..d37fa851
--- /dev/null
+++ b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/profile/IEEERequirementsDocumentation.profile.ecore
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/profile/IEEERequirementsDocumentation.profile.genmodel b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/profile/IEEERequirementsDocumentation.profile.genmodel
index 554d6156..8a473333 100755
--- a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/profile/IEEERequirementsDocumentation.profile.genmodel
+++ b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/profile/IEEERequirementsDocumentation.profile.genmodel
@@ -2,8 +2,8 @@
-
-
-
-
-
-
-
-
-
-
-
-
+ ecorePackage="IEEERequirementsDocumentation.profile.ecore#/">
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
-
+
-
+ propertySortChoices="true" ecoreFeature="ecore:EReference IEEERequirementsDocumentation.profile.ecore#//AbstractRequirements/base_Package"/>
+
-
-
+
+
diff --git a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/profile/IEEERequirementsDocumentation.profile.uml b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/profile/IEEERequirementsDocumentation.profile.uml
index 92118eb6..4743a2e7 100755
--- a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/profile/IEEERequirementsDocumentation.profile.uml
+++ b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/profile/IEEERequirementsDocumentation.profile.uml
@@ -1,54 +1,54 @@
-
+
-
-
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
+
-
+
-
+
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
+
@@ -57,52 +57,52 @@
-
-
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
+
-
+
-
+
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
+
@@ -111,52 +111,52 @@
-
-
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
+
-
+
-
+
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
+
@@ -165,49 +165,49 @@
-
-
-
-
-
-
+
+
+
+
+
+
-
+
-
+
-
+
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
+
@@ -216,49 +216,49 @@
-
-
-
-
-
-
+
+
+
+
+
+
-
+
-
+
-
+
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
+
@@ -267,41 +267,41 @@
-
+
<p>This profile provides the stereotypes to be able to generate a documentation compliant with the standard defined in "IEEE Recommended Pratice for Software Requirements Specification".</p>
-
+
-
+
-
+
-
+
Stereotype to apply on Package. It will allows to document user's model according to the IEEE specification.
-
-
-
+
+
+
<p>This field allows to define the kind of requirements owned by the package.</p>
-
+
<p>Abstract Stereotype created to ease future extension</p>
-
+
-
-
+
+
<p>This field allows to define the kind of requirements owned by the package.</p>
<p>NOTE : It is not named cateogy, because we get a validation error with a such name.</p>
@@ -315,39 +315,39 @@
-
+
<p>This enumeration contains all kinds of requirements defined in the IEEE standart.</p>
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
+
<p>Functional Requirement Stereotype allowing to define the mode of the Package requirements</p>
-
-
-
+
+
+
<p>The mode of the requirements owned by the package.</p>
-
-
+
+
<p>This field is read-only and as always the value FUNCTIONAL_REQUIREMENTS?</p>
@@ -355,16 +355,16 @@
-
+
<p>Abtract Enumeration created to ease extension of this profile. It doesn't have EnumerationLiteral to avoid edition troubles with an extension of it.</p>
-
-
+
+
-
+
diff --git a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/src-api/org/eclipse/papyrus/model2doc/integration/ieee/requirements/commands/ApplyIEEERequirementsDocumentationProfileCommand.java b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/src-api/org/eclipse/papyrus/model2doc/integration/ieee/requirements/commands/ApplyIEEERequirementsDocumentationProfileCommand.java
new file mode 100755
index 00000000..f0052b86
--- /dev/null
+++ b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/src-api/org/eclipse/papyrus/model2doc/integration/ieee/requirements/commands/ApplyIEEERequirementsDocumentationProfileCommand.java
@@ -0,0 +1,114 @@
+/*****************************************************************************
+ * Copyright (c) 2021 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.model2doc.integration.ieee.requirements.commands;
+
+import java.util.Collections;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.gmf.runtime.common.core.command.CommandResult;
+import org.eclipse.gmf.runtime.emf.commands.core.command.AbstractTransactionalCommand;
+import org.eclipse.papyrus.model2doc.integration.ieee.requirements.utils.IEEERequirementsConstants;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.Profile;
+
+/**
+ * This command apply the IEEERequirementsProfile.
+ */
+public class ApplyIEEERequirementsDocumentationProfileCommand extends AbstractTransactionalCommand {
+
+ /**
+ * the package on which we will apply the profile
+ */
+ protected final Package pack;
+
+ /**
+ * Constructor.
+ *
+ * @param domain
+ * the editing domain
+ * @param pack
+ * the package on which apply the profile
+ */
+ public ApplyIEEERequirementsDocumentationProfileCommand(final TransactionalEditingDomain domain, final Package pack) {
+ this(domain, "Apply IEEE Requirements Document Profile", pack); //$NON-NLS-1$
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param domain
+ * @param label
+ * @param affectedFiles
+ */
+ public ApplyIEEERequirementsDocumentationProfileCommand(final TransactionalEditingDomain domain, final String label, final Package pack) {
+ super(domain, label, Collections.emptyList());
+ this.pack = pack;
+ }
+
+ /**
+ * @see org.eclipse.gmf.runtime.emf.commands.core.command.AbstractTransactionalCommand#doExecuteWithResult(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
+ *
+ * @param monitor
+ * @param info
+ * @return
+ * @throws ExecutionException
+ */
+ @Override
+ protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
+ if (null == pack.getAppliedProfile(IEEERequirementsConstants.IEEE_PROFILE_NAME)) {
+ final URI uri = URI.createURI(IEEERequirementsConstants.IEEE_PROFILE_URI);
+ final Resource res = this.pack.eResource().getResourceSet().getResource(uri, true);
+ // cast already checked in the canExecute
+ final Profile rootProfile = (Profile) res.getContents().get(0);
+ this.pack.applyProfile(rootProfile);
+ }
+ return CommandResult.newOKCommandResult();
+ }
+
+ /**
+ * @see org.eclipse.core.commands.operations.AbstractOperation#canExecute()
+ *
+ * @return
+ */
+ @Override
+ public boolean canExecute() {
+ return super.canExecute() && this.pack != null && getEditingDomain() != null && isIEEEProfileAvailable();
+ }
+
+ /**
+ *
+ * @return
+ * true if the profile is available
+ */
+ private boolean isIEEEProfileAvailable() {
+ final URI uri = URI.createURI(IEEERequirementsConstants.IEEE_PROFILE_URI);
+ final ResourceSet resourceSet = new ResourceSetImpl();
+ final Resource res = resourceSet.getResource(uri, true);
+ if (res.getContents().size() > 0) {
+ final EObject rootEobject = res.getContents().get(0);
+ return rootEobject instanceof Profile && ((Profile) rootEobject).getName().equals(IEEERequirementsConstants.IEEE_PROFILE_NAME);
+ }
+ return false;
+ }
+}
diff --git a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/src-api/org/eclipse/papyrus/model2doc/integration/ieee/requirements/commands/CreateIEEERequirementsStructureCommand.java b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/src-api/org/eclipse/papyrus/model2doc/integration/ieee/requirements/commands/CreateIEEERequirementsStructureCommand.java
new file mode 100755
index 00000000..cd976365
--- /dev/null
+++ b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/src-api/org/eclipse/papyrus/model2doc/integration/ieee/requirements/commands/CreateIEEERequirementsStructureCommand.java
@@ -0,0 +1,337 @@
+/*****************************************************************************
+ * Copyright (c) 2021 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.model2doc.integration.ieee.requirements.commands;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.gmf.runtime.common.core.command.CommandResult;
+import org.eclipse.papyrus.model2doc.integration.ieee.requirements.documentation.IEEEFunctionalRequirements;
+import org.eclipse.papyrus.model2doc.integration.ieee.requirements.documentation.IEEERequirementCategory;
+import org.eclipse.papyrus.model2doc.integration.ieee.requirements.documentation.IEEERequirements;
+import org.eclipse.papyrus.model2doc.integration.ieee.requirements.utils.IEEERequirementsConstants;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.Profile;
+import org.eclipse.uml2.uml.Stereotype;
+import org.eclipse.uml2.uml.UMLFactory;
+import org.eclipse.uml2.uml.util.UMLUtil;
+
+/**
+ * This command allows to create the UML Structure expected by the DocumentStructuretemplate
+ */
+public class CreateIEEERequirementsStructureCommand extends ApplyIEEERequirementsDocumentationProfileCommand {
+
+ /**
+ * the IEEERequirement stereotype to apply on Package
+ */
+ private Stereotype IEEERequirements;
+
+ /**
+ * the IEEE Functional Requirement stereotype to apply on Package
+ */
+ private Stereotype IEEEFunctionalRequirements;
+
+ /**
+ *
+ * Constructor.
+ *
+ * @param domain
+ * the editing domain to use
+ * @param pack
+ * the package in which create the structure
+ */
+ public CreateIEEERequirementsStructureCommand(final TransactionalEditingDomain domain, final Package pack) {
+ super(domain, "Create IEEE Structure", pack); //$NON-NLS-1$
+ }
+
+ /**
+ * @see org.eclipse.gmf.runtime.emf.commands.core.command.AbstractTransactionalCommand#doExecuteWithResult(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
+ *
+ * @param monitor
+ * @param info
+ * @return
+ * @throws ExecutionException
+ */
+ @Override
+ protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
+ // 0. apply IEEE Requirements profile
+ super.doExecuteWithResult(monitor, info);
+
+ // 0bis. get IEEERequirements and IEEEFunctionalRequirements Profile
+ final Profile profile = pack.getAppliedProfile(IEEERequirementsConstants.IEEE_PROFILE_NAME);
+ this.IEEERequirements = profile.getOwnedStereotype(IEEERequirementsConstants.IEEE_REQUIREMENTS_STEREOTYPE);
+ this.IEEEFunctionalRequirements = profile.getOwnedStereotype(IEEERequirementsConstants.IEEE_FUNCTIONAL_REQUIREMENTS_STEREOTYPE);
+
+
+ // 1. Create structure for interfaces requirements
+ if (!(hasExternalInterfacePackage() && hasExternalInterfacePackage() && hasUserInterfacePackage() && hasHWInterfacePackage() && hasCommunicationInterfacePackage() && hasSWInterfacePackage())) {
+
+ // 1.1 create external interface requirement package
+ if (!hasExternalInterfacePackage()) {
+ createStereotypedIEEERequirementsPackage(this.pack, IEEERequirementsConstants.EXTERNAl_INTERFACES_PACKAGE, IEEERequirementCategory.EXTERNAL_INTERFACES_REQUIREMENTS);
+ }
+
+ final Package externalRequirementsPackage = findStereotypedIEEERequirementsPackage(this.pack, IEEERequirementCategory.EXTERNAL_INTERFACES_REQUIREMENTS);
+
+
+ // 1.2 create user interface requirement package
+ if (!hasUserInterfacePackage()) {
+ createStereotypedIEEERequirementsPackage(externalRequirementsPackage, IEEERequirementsConstants.USER_INTERFACES_PACKAGE, IEEERequirementCategory.USER_INTERFACES);
+ }
+
+ // 1.3 create HW interface requirement package
+ if (!hasHWInterfacePackage()) {
+ createStereotypedIEEERequirementsPackage(externalRequirementsPackage, IEEERequirementsConstants.HW_INTERFACES_PACKAGE, IEEERequirementCategory.HARDWARE_INTERFACES);
+ }
+
+ // 1.4 create SW interface requirement package
+ if (!hasSWInterfacePackage()) {
+ createStereotypedIEEERequirementsPackage(externalRequirementsPackage, IEEERequirementsConstants.SW_INTERFACES_PACKAGE, IEEERequirementCategory.SOFTWARE_INTERFACES);
+ }
+
+ // 1.5 create Communication interface requirement package
+ if (!hasCommunicationInterfacePackage()) {
+ createStereotypedIEEERequirementsPackage(externalRequirementsPackage, IEEERequirementsConstants.COMMUNICATION_INTERFACES_PACKAGE, IEEERequirementCategory.COMMUNICATION_INTERFACES);
+ }
+ }
+
+ // 2. create structure for function requirements
+ if (!(hasFunctionalRequirements_Mode1_Package() && hasFunctionalRequirements_Mode2_Package() && hasFunctionalRequirements_Mode3_Package())) {
+ createStereotypedIEEERequirementsPackage(this.pack, IEEERequirementsConstants.FUNCTIONAL_REQUIREMENTS_ROOT_PACKAGE, IEEERequirementCategory.FUNCTIONAL_REQUIREMENTS);
+ final Package functionalRequirementsRootPackage = findStereotypedIEEERequirementsPackage(this.pack, IEEERequirementCategory.FUNCTIONAL_REQUIREMENTS);
+
+ if (!(hasFunctionalRequirements_Mode1_Package())) {
+ createStereotypedIEEERequirementsPackage(functionalRequirementsRootPackage, IEEERequirementsConstants.FUNCTIONAL_REQUIREMENTS_MODE_1, IEEERequirementCategory.FUNCTIONAL_REQUIREMENTS, 1);
+ }
+
+ if (!(hasFunctionalRequirements_Mode2_Package())) {
+ createStereotypedIEEERequirementsPackage(functionalRequirementsRootPackage, IEEERequirementsConstants.FUNCTIONAL_REQUIREMENTS_MODE_2, IEEERequirementCategory.FUNCTIONAL_REQUIREMENTS, 2);
+ }
+
+ if (!(hasFunctionalRequirements_Mode3_Package())) {
+ createStereotypedIEEERequirementsPackage(functionalRequirementsRootPackage, IEEERequirementsConstants.FUNCTIONAL_REQUIREMENTS_MODE_3, IEEERequirementCategory.FUNCTIONAL_REQUIREMENTS, 3);
+ }
+ }
+
+ // 3. create a package for performance requirements
+ if (!hasPerformanceRequirementsPackage()) {
+ createStereotypedIEEERequirementsPackage(this.pack, IEEERequirementsConstants.PERFORMANCE_REQUIREMENTS_PACKAGE, IEEERequirementCategory.PERFORMANCE_REQUIREMENTS);
+ }
+
+ // 4. create a package for design constraint requirements
+ if (!hasDesignConstraintsPackage()) {
+ createStereotypedIEEERequirementsPackage(this.pack, IEEERequirementsConstants.DESIGN_CONSTRAINTS_REQUIREMENTS_PACKAGE, IEEERequirementCategory.DESIGN_CONSTRAINTS);
+ }
+
+ // 5. create a package for system software attribute requirements
+ if (!hasSoftwareSystemAttributeRequirementsPackage()) {
+ createStereotypedIEEERequirementsPackage(this.pack, IEEERequirementsConstants.SOFTWARE_SYSTEM_ATTRIBUTE_REQUIREMENTS_PACKAGE, IEEERequirementCategory.SOFTWARE_SYSTEM_ATTRIBUTES);
+ }
+
+ // 6. create a package for other requirements
+ if (!hasOtherRequirementsPackage()) {
+ createStereotypedIEEERequirementsPackage(this.pack, IEEERequirementsConstants.OTHER_REQUIREMENTS_PACKAGE, IEEERequirementCategory.OTHER_REQUIREMENTS);
+ }
+ return CommandResult.newOKCommandResult();
+ }
+
+
+ private void createStereotypedIEEERequirementsPackage(final Package parentPack, final String packName, final IEEERequirementCategory category) {
+ final Package newPackage = UMLFactory.eINSTANCE.createPackage();
+ newPackage.setName(packName);
+ parentPack.getNestedPackages().add(newPackage);
+
+ IEEERequirements steAppl = (IEEERequirements) newPackage.applyStereotype(IEEERequirements);
+ steAppl.setCategory(category);
+ }
+
+ private void createStereotypedIEEERequirementsPackage(final Package parentPack, final String packName, final IEEERequirementCategory category, final int mode) {
+ final Package newPackage = UMLFactory.eINSTANCE.createPackage();
+ newPackage.setName(packName);
+ parentPack.getNestedPackages().add(newPackage);
+
+ IEEEFunctionalRequirements steAppl = (IEEEFunctionalRequirements) newPackage.applyStereotype(IEEEFunctionalRequirements);
+ steAppl.setCategory(category);
+ steAppl.setMode(mode);
+ }
+
+ /**
+ * @see org.eclipse.core.commands.operations.AbstractOperation#canExecute()
+ *
+ * @return
+ */
+ @Override
+ public boolean canExecute() {
+ return super.canExecute()
+ && hasMissingIEEEPackage();
+ }
+
+ /**
+ * @return
+ */
+ private final boolean hasMissingIEEEPackage() {
+ return !(hasExternalInterfacePackage()
+ && hasUserInterfacePackage()
+ && hasHWInterfacePackage()
+ && hasCommunicationInterfacePackage()
+ && hasSWInterfacePackage()
+ && hasFunctionalRequirements_Mode1_Package()
+ && hasFunctionalRequirements_Mode2_Package()
+ && hasFunctionalRequirements_Mode3_Package()
+ && hasPerformanceRequirementsPackage()
+ && hasDesignConstraintsPackage()
+ && hasSoftwareSystemAttributeRequirementsPackage()
+ && hasOtherRequirementsPackage());
+ }
+
+ /*--------------------Interfaces Requirements-----------------------------------------------*/
+ private final boolean hasExternalInterfacePackage() {
+ return findStereotypedIEEERequirementsPackage(this.pack, IEEERequirementCategory.EXTERNAL_INTERFACES_REQUIREMENTS) != null;
+ }
+
+ private final boolean hasUserInterfacePackage() {
+ return findStereotypedIEEERequirementsPackage(this.pack, IEEERequirementCategory.USER_INTERFACES) != null;
+ }
+
+ private final boolean hasHWInterfacePackage() {
+ return findStereotypedIEEERequirementsPackage(this.pack, IEEERequirementCategory.HARDWARE_INTERFACES) != null;
+ }
+
+ private final boolean hasCommunicationInterfacePackage() {
+ return findStereotypedIEEERequirementsPackage(this.pack, IEEERequirementCategory.COMMUNICATION_INTERFACES) != null;
+ }
+
+ private final boolean hasSWInterfacePackage() {
+ return findStereotypedIEEERequirementsPackage(this.pack, IEEERequirementCategory.SOFTWARE_INTERFACES) != null;
+ }
+
+ /*--------------------Functional Requirements-----------------------------------------------*/
+ private final boolean hasFunctionalRequirements_Mode1_Package() {
+ return findStereotypedIEEEFunctionalRequirementsPackage(this.pack, IEEERequirementCategory.FUNCTIONAL_REQUIREMENTS, 1) != null;
+ }
+
+ private final boolean hasFunctionalRequirements_Mode2_Package() {
+ return findStereotypedIEEEFunctionalRequirementsPackage(this.pack, IEEERequirementCategory.FUNCTIONAL_REQUIREMENTS, 2) != null;
+ }
+
+ private final boolean hasFunctionalRequirements_Mode3_Package() {
+ return findStereotypedIEEEFunctionalRequirementsPackage(this.pack, IEEERequirementCategory.FUNCTIONAL_REQUIREMENTS, 3) != null;
+ }
+
+ /*--------------------Performance Requirements-----------------------------------------------*/
+ private final boolean hasPerformanceRequirementsPackage() {
+ return findStereotypedIEEERequirementsPackage(this.pack, IEEERequirementCategory.PERFORMANCE_REQUIREMENTS) != null;
+ }
+
+ /*--------------------Design Constraints Requirements-----------------------------------------------*/
+ private final boolean hasDesignConstraintsPackage() {
+ return findStereotypedIEEERequirementsPackage(this.pack, IEEERequirementCategory.DESIGN_CONSTRAINTS) != null;
+ }
+
+ /*--------------------Software System Attribute Requirements-----------------------------------------------*/
+ private final boolean hasSoftwareSystemAttributeRequirementsPackage() {
+ return findStereotypedIEEERequirementsPackage(this.pack, IEEERequirementCategory.SOFTWARE_SYSTEM_ATTRIBUTES) != null;
+ }
+
+ /*--------------------Other Requirements-----------------------------------------------*/
+ private final boolean hasOtherRequirementsPackage() {
+ return findStereotypedIEEERequirementsPackage(this.pack, IEEERequirementCategory.OTHER_REQUIREMENTS) != null;
+ }
+
+ /**
+ *
+ * @param pack
+ * a package
+ * @param ieeeCategory
+ * the expected IEEERequirementCategory for the package
+ * @return
+ * the found package or null
+ */
+ private final Package findStereotypedIEEERequirementsPackage(final Package pack, final IEEERequirementCategory ieeeCategory) {
+ if (pack == null) {
+ return null;
+ }
+ IEEERequirements ieeeReq = UMLUtil.getStereotypeApplication(pack, IEEERequirements.class);
+ if (ieeeReq != null && ieeeReq.getCategory() == ieeeCategory) {
+ return pack;
+ }
+
+ final List ownedPackages = pack.getMembers().stream().filter(Package.class::isInstance).map(Package.class::cast).collect(Collectors.toList());
+ Iterator iter = ownedPackages.iterator();
+ Package found = null;
+ while (iter.hasNext() && found == null) {
+ final Package tmp = iter.next();
+ ieeeReq = UMLUtil.getStereotypeApplication(tmp, IEEERequirements.class);
+ if (ieeeReq != null && ieeeReq.getCategory() == ieeeCategory) {
+ found = tmp;
+ }
+ }
+ if (found == null) {
+ iter = ownedPackages.iterator();
+ while (iter.hasNext() && found == null) {
+ found = findStereotypedIEEERequirementsPackage(iter.next(), ieeeCategory);
+ }
+ }
+
+ return found;
+ }
+
+ /**
+ *
+ * @param pack
+ * a package
+ * @param ieeeCategory
+ * the expected IEEERequirementCategory for the package
+ * @param mode
+ * the expected mode for the FunctionRequirement package
+ * @return
+ * the found package or null
+ */
+ private final Package findStereotypedIEEEFunctionalRequirementsPackage(final Package pack, final IEEERequirementCategory ieeeCategory, final int mode) {
+ if (pack == null) {
+ return null;
+ }
+ IEEEFunctionalRequirements ieeeReq = UMLUtil.getStereotypeApplication(pack, IEEEFunctionalRequirements.class);
+ if (ieeeReq != null && ieeeReq.getCategory() == ieeeCategory && ieeeReq.getMode() == mode) {
+ return pack;
+ }
+
+ final List ownedPackages = pack.getMembers().stream().filter(Package.class::isInstance).map(Package.class::cast).collect(Collectors.toList());
+ Iterator iter = ownedPackages.iterator();
+ Package found = null;
+ while (iter.hasNext() && found == null) {
+ final Package tmp = iter.next();
+ ieeeReq = UMLUtil.getStereotypeApplication(tmp, IEEEFunctionalRequirements.class);
+ if (ieeeReq != null && ieeeReq.getCategory() == ieeeCategory && ieeeReq.getMode() == mode) {
+ found = tmp;
+ }
+ }
+ if (found == null) {
+ iter = ownedPackages.iterator();
+ while (iter.hasNext() && found == null) {
+ found = findStereotypedIEEEFunctionalRequirementsPackage(iter.next(), ieeeCategory, mode);
+ }
+ }
+
+ return found;
+ }
+
+}
diff --git a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/src-api/org/eclipse/papyrus/model2doc/integration/ieee/requirements/utils/IEEERequirementsConstants.java b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/src-api/org/eclipse/papyrus/model2doc/integration/ieee/requirements/utils/IEEERequirementsConstants.java
new file mode 100755
index 00000000..34105817
--- /dev/null
+++ b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/src-api/org/eclipse/papyrus/model2doc/integration/ieee/requirements/utils/IEEERequirementsConstants.java
@@ -0,0 +1,64 @@
+/*****************************************************************************
+ * Copyright (c) 2021 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.model2doc.integration.ieee.requirements.utils;
+
+/**
+ * Constants relative to the IEEE Profile
+ */
+public class IEEERequirementsConstants {
+
+ private IEEERequirementsConstants() {
+ // to prevent instantiation
+ }
+
+ public static final String IEEE_PROFILE_NAME = "IEEERequirementsDocumentation"; //$NON-NLS-1$
+
+ public static final String IEEE_PROFILE_URI = "pathmap://IEEERequirementsDocumentation/IEEERequirementsDocumentation.profile.uml"; //$NON-NLS-1$
+
+ public static final String IEEE_REQUIREMENTS_STEREOTYPE = "IEEERequirements"; //$NON-NLS-1$
+
+ public static final String IEEE_FUNCTIONAL_REQUIREMENTS_STEREOTYPE = "IEEEFunctionalRequirements"; //$NON-NLS-1$
+ /*
+ * the name of all packages structuring an IEEE Requirements models
+ */
+ public static final String INTERFACES_ROOT_PACKAGE = "InterfacesRequirements"; //$NON-NLS-1$
+
+ public static final String EXTERNAl_INTERFACES_PACKAGE = "ExternalInterfacesRequirements"; //$NON-NLS-1$
+
+ public static final String USER_INTERFACES_PACKAGE = "UserInterfacesRequirements"; //$NON-NLS-1$
+
+ public static final String HW_INTERFACES_PACKAGE = "HWInterfacesRequirements"; //$NON-NLS-1$
+
+ public static final String COMMUNICATION_INTERFACES_PACKAGE = "CommunicationInterfacesRequirements"; //$NON-NLS-1$
+
+ public static final String SW_INTERFACES_PACKAGE = "SWInterfacesRequirements"; //$NON-NLS-1$
+
+ public static final String FUNCTIONAL_REQUIREMENTS_ROOT_PACKAGE = "FunctionalRequirements"; //$NON-NLS-1$
+
+ public static final String FUNCTIONAL_REQUIREMENTS_MODE_1 = "FunctionalRequirements_Mode_1"; //$NON-NLS-1$
+
+ public static final String FUNCTIONAL_REQUIREMENTS_MODE_2 = "FunctionalRequirements_Mode_2"; //$NON-NLS-1$
+
+ public static final String FUNCTIONAL_REQUIREMENTS_MODE_3 = "FunctionalRequirements_Mode_3"; //$NON-NLS-1$
+
+ public static final String PERFORMANCE_REQUIREMENTS_PACKAGE = "PerformanceRequirements"; //$NON-NLS-1$
+
+ public static final String DESIGN_CONSTRAINTS_REQUIREMENTS_PACKAGE = "DesignConstraintsRequirements"; //$NON-NLS-1$
+
+ public static final String SOFTWARE_SYSTEM_ATTRIBUTE_REQUIREMENTS_PACKAGE = "SoftwareSystemAttributeRequirements"; //$NON-NLS-1$
+
+ public static final String OTHER_REQUIREMENTS_PACKAGE = "OtherRequirements"; //$NON-NLS-1$
+}
diff --git a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/src-api/org/eclipse/papyrus/model2doc/integration/ieee/requirements/utils/IEEERequirementsDocumentationProfileHelper.java b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/src-api/org/eclipse/papyrus/model2doc/integration/ieee/requirements/utils/IEEERequirementsDocumentationProfileHelper.java
new file mode 100755
index 00000000..6ccd3e40
--- /dev/null
+++ b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/src-api/org/eclipse/papyrus/model2doc/integration/ieee/requirements/utils/IEEERequirementsDocumentationProfileHelper.java
@@ -0,0 +1,245 @@
+/*****************************************************************************
+ * Copyright (c) 2019 CEA LIST.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Yupanqui Munoz (CEA LIST) yupanqui.munozjulho@cea.fr - Initial API and implementation
+ * Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ *****************************************************************************/
+package org.eclipse.papyrus.model2doc.integration.ieee.requirements.utils;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.model2doc.integration.ieee.requirements.documentation.AbstractRequirements;
+import org.eclipse.papyrus.model2doc.integration.ieee.requirements.documentation.IEEEFunctionalRequirements;
+import org.eclipse.papyrus.model2doc.integration.ieee.requirements.documentation.IEEERequirements;
+import org.eclipse.uml2.uml.Package;
+
+/**
+ * Helper provding all Packages identified by the IEEE stereotypes
+ */
+public class IEEERequirementsDocumentationProfileHelper {
+ /**
+ * the package used to start the cross of the model
+ */
+ private Package rootPackage;
+
+ /**
+ * Collections and Map used to group the package by category
+ */
+ private final Collection specificRequirements = new ArrayList<>();
+ private final Collection externalInterfaceRequirements = new ArrayList<>();
+ private final Collection userInterfaces = new ArrayList<>();
+ private final Collection hardwaresInterfaces = new ArrayList<>();
+ private final Collection softwareInterfaces = new ArrayList<>();
+ private final Collection communicationInterfaces = new ArrayList<>();
+ private final Collection functionalRequirementsWithoutMode = new ArrayList<>();
+ private final Map> functionalRequirementsWithMode = new HashMap<>();
+ private final Collection performanceRequirements = new ArrayList<>();
+ private final Collection designConstraints = new ArrayList<>();
+ private final Collection softwareSystemAttributes = new ArrayList<>();
+ private final Collection otherRequirements = new ArrayList<>();
+
+ /**
+ * the list of package stereotyped with a stereotype extending one provided by the IEEE profile, but not provided by our profile itself
+ */
+ final Collection unknownRequirements = new ArrayList<>();
+
+ /**
+ *
+ * Constructor.
+ *
+ * @param aPackage
+ * a package of the model, generally the root one
+ */
+ public IEEERequirementsDocumentationProfileHelper(final Package aPackage) {
+ this.rootPackage = aPackage;
+ fillCollections(this.rootPackage);
+ }
+
+ /**
+ * This method allows to fill the fields list and map of this class
+ *
+ * TODO : warning, this algorithm won't be efficient
+ */
+ protected void fillCollections(final Package pack) {
+ final Iterator subPackageIterator = pack.getOwnedMembers().stream().filter(Package.class::isInstance).map(Package.class::cast).collect(Collectors.toList()).iterator();
+ while (subPackageIterator.hasNext()) {
+ final Package current = subPackageIterator.next();
+ addToCollection(current);
+ fillCollections(current);
+ }
+ }
+
+
+ /**
+ *
+ *
+ * @param pack
+ * a package
+ *
+ * this method add the package to one of the field lists of the classes when it is stereotyped as IEEE Requirements
+ */
+ protected void addToCollection(final Package pack) {
+ for (final EObject current : pack.getStereotypeApplications()) {
+ if (current instanceof IEEEFunctionalRequirements) {
+ final IEEEFunctionalRequirements reqSte = (IEEEFunctionalRequirements) current;
+ final Integer mode = Integer.valueOf(reqSte.getMode());
+ Collection packages = this.functionalRequirementsWithMode.get(mode);
+ if (null == packages) {
+ packages = new ArrayList<>();
+ this.functionalRequirementsWithMode.put(mode, packages);
+ }
+ packages.add(pack);
+
+ } else if (current instanceof IEEERequirements) {
+ final IEEERequirements reqSte = (IEEERequirements) current;
+ switch (reqSte.getCategory()) {
+ case SPECIFIC_REQUIREMENTS:
+ this.specificRequirements.add(pack);
+ break;
+ case EXTERNAL_INTERFACES_REQUIREMENTS:
+ this.externalInterfaceRequirements.add(pack);
+ break;
+ case USER_INTERFACES:
+ this.userInterfaces.add(pack);
+ break;
+ case HARDWARE_INTERFACES:
+ this.hardwaresInterfaces.add(pack);
+ break;
+ case SOFTWARE_INTERFACES:
+ this.softwareInterfaces.add(pack);
+ break;
+ case COMMUNICATION_INTERFACES:
+ this.communicationInterfaces.add(pack);
+ break;
+ case FUNCTIONAL_REQUIREMENTS:
+ this.functionalRequirementsWithoutMode.add(pack);
+ break;
+ case PERFORMANCE_REQUIREMENTS:
+ this.performanceRequirements.add(pack);
+ break;
+ case DESIGN_CONSTRAINTS:
+ designConstraints.add(pack);
+ break;
+ case SOFTWARE_SYSTEM_ATTRIBUTES:
+ this.softwareSystemAttributes.add(pack);
+ break;
+
+ case OTHER_REQUIREMENTS:
+ this.otherRequirements.add(pack);
+ break;
+ default:
+ this.unknownRequirements.add(pack);
+ break;
+
+ }
+ } else if (current instanceof AbstractRequirements) {
+ this.unknownRequirements.add(pack);
+ }
+ }
+ }
+
+ /**
+ * @return this.the specificRequirements
+ */
+ public final Collection getSpecificRequirements() {
+ return this.specificRequirements;
+ }
+
+ /**
+ * @return this.the externalInterfaceRequirements
+ */
+ public final Collection getExternalInterfaceRequirements() {
+ return this.externalInterfaceRequirements;
+ }
+
+ /**
+ * @return this.the userInterfaces
+ */
+ public final Collection getUserInterfaces() {
+ return this.userInterfaces;
+ }
+
+ /**
+ * @return this.the hardwaresInterfaces
+ */
+ public final Collection getHardwaresInterfaces() {
+ return this.hardwaresInterfaces;
+ }
+
+ /**
+ * @return this.the softwareInterfaces
+ */
+ public final Collection getSoftwareInterfaces() {
+ return this.softwareInterfaces;
+ }
+
+ /**
+ * @return this.the communicationInterfaces
+ */
+ public final Collection getCommunicationInterfaces() {
+ return this.communicationInterfaces;
+ }
+
+ /**
+ * @return this.the functionalRequirementsWithoutMode
+ */
+ public final Collection getFunctionalRequirementsWithoutMode() {
+ return this.functionalRequirementsWithoutMode;
+ }
+
+ /**
+ * @return this.the functionalRequirementsWithMode
+ */
+ public final Map> getFunctionalRequirementsWithMode() {
+ return this.functionalRequirementsWithMode;
+ }
+
+ /**
+ * @return this.the performanceRequirements
+ */
+ public final Collection getPerformanceRequirements() {
+ return this.performanceRequirements;
+ }
+
+ /**
+ * @return this.the designConstraints
+ */
+ public final Collection getDesignConstraints() {
+ return this.designConstraints;
+ }
+
+ /**
+ * @return this.the softwareSystemAttributes
+ */
+ public final Collection getSoftwareSystemAttributes() {
+ return this.softwareSystemAttributes;
+ }
+
+ /**
+ * @return this.the otherRequirements
+ */
+ public final Collection getOtherRequirements() {
+ return this.otherRequirements;
+ }
+
+ /**
+ * @return this.the unknownRequirements
+ */
+ public final Collection getUnknownRequirements() {
+ return this.unknownRequirements;
+ }
+}
diff --git a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/src-gen/org/eclipse/papyrus/model2doc/integration/ieee/requirements/documentation/IEEERequirementCategory.java b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/src-gen/org/eclipse/papyrus/model2doc/integration/ieee/requirements/documentation/IEEERequirementCategory.java
index 7bb65f7e..0f6c8774 100755
--- a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/src-gen/org/eclipse/papyrus/model2doc/integration/ieee/requirements/documentation/IEEERequirementCategory.java
+++ b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/src-gen/org/eclipse/papyrus/model2doc/integration/ieee/requirements/documentation/IEEERequirementCategory.java
@@ -26,9 +26,12 @@ import org.eclipse.emf.common.util.Enumerator;
* and utility methods for working with them.
*
*
- *
Abstract Stereotype created to ease future extension
+ *
+ * Abstract Stereotype created to ease future extension
+ *
*
+ *
* @see #SPECIFIC_REQUIREMENTS
* @model
* @generated
@@ -160,19 +175,20 @@ public enum IEEERequirementCategory implements Enumerator {
public static final int SPECIFIC_REQUIREMENTS_VALUE = 0;
/**
- * The 'EXTERNAL INTERFACE REQUIREMENTS' literal value.
+ * The 'EXTERNAL INTERFACES REQUIREMENTS' literal value.
*
*
- * If the meaning of 'EXTERNAL INTERFACE REQUIREMENTS' literal object isn't clear,
+ * If the meaning of 'EXTERNAL INTERFACES REQUIREMENTS' literal object isn't clear,
* there really should be more of a description here...
*
*
- * @see #EXTERNAL_INTERFACE_REQUIREMENTS
+ *
+ * @see #EXTERNAL_INTERFACES_REQUIREMENTS
* @model
* @generated
* @ordered
*/
- public static final int EXTERNAL_INTERFACE_REQUIREMENTS_VALUE = 1;
+ public static final int EXTERNAL_INTERFACES_REQUIREMENTS_VALUE = 1;
/**
* The 'USER INTERFACES' literal value.
@@ -182,6 +198,7 @@ public enum IEEERequirementCategory implements Enumerator {
* there really should be more of a description here...
*
*
+ *
* @see #USER_INTERFACES
* @model
* @generated
@@ -197,6 +214,7 @@ public enum IEEERequirementCategory implements Enumerator {
* there really should be more of a description here...
*
*
+ *
* @see #HARDWARE_INTERFACES
* @model
* @generated
@@ -212,6 +230,7 @@ public enum IEEERequirementCategory implements Enumerator {
* there really should be more of a description here...
*
*
+ *
* @see #SOFTWARE_INTERFACES
* @model
* @generated
@@ -227,6 +246,7 @@ public enum IEEERequirementCategory implements Enumerator {
* there really should be more of a description here...
*
*
+ *
* @see #COMMUNICATION_INTERFACES
* @model
* @generated
@@ -242,6 +262,7 @@ public enum IEEERequirementCategory implements Enumerator {
* there really should be more of a description here...
*
*
+ *
* @see #FUNCTIONAL_REQUIREMENTS
* @model
* @generated
@@ -257,6 +278,7 @@ public enum IEEERequirementCategory implements Enumerator {
* there really should be more of a description here...
*
*
+ *
* @see #PERFORMANCE_REQUIREMENTS
* @model
* @generated
@@ -272,6 +294,7 @@ public enum IEEERequirementCategory implements Enumerator {
* there really should be more of a description here...
*
*
+ *
* @see #DESIGN_CONSTRAINTS
* @model
* @generated
@@ -287,6 +310,7 @@ public enum IEEERequirementCategory implements Enumerator {
* there really should be more of a description here...
*
*
+ *
* @see #SOFTWARE_SYSTEM_ATTRIBUTES
* @model
* @generated
@@ -302,6 +326,7 @@ public enum IEEERequirementCategory implements Enumerator {
* there really should be more of a description here...
*
*
+ *
* @see #OTHER_REQUIREMENTS
* @model
* @generated
@@ -313,11 +338,12 @@ public enum IEEERequirementCategory implements Enumerator {
* An array of all the 'IEEE Requirement Category' enumerators.
*
*
+ *
* @generated
*/
private static final IEEERequirementCategory[] VALUES_ARRAY = new IEEERequirementCategory[] {
SPECIFIC_REQUIREMENTS,
- EXTERNAL_INTERFACE_REQUIREMENTS,
+ EXTERNAL_INTERFACES_REQUIREMENTS,
USER_INTERFACES,
HARDWARE_INTERFACES,
SOFTWARE_INTERFACES,
@@ -333,6 +359,7 @@ public enum IEEERequirementCategory implements Enumerator {
* A public read-only list of all the 'IEEE Requirement Category' enumerators.
*
*
+ *
* @generated
*/
public static final List VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
@@ -341,7 +368,9 @@ public enum IEEERequirementCategory implements Enumerator {
* Returns the 'IEEE Requirement Category' literal with the specified literal value.
*
*
- * @param literal the literal.
+ *
+ * @param literal
+ * the literal.
* @return the matching enumerator or null.
* @generated
*/
@@ -359,7 +388,9 @@ public enum IEEERequirementCategory implements Enumerator {
* Returns the 'IEEE Requirement Category' literal with the specified name.
*
*
- * @param name the name.
+ *
+ * @param name
+ * the name.
* @return the matching enumerator or null.
* @generated
*/
@@ -377,7 +408,9 @@ public enum IEEERequirementCategory implements Enumerator {
* Returns the 'IEEE Requirement Category' literal with the specified integer value.
*
*
- * @param value the integer value.
+ *
+ * @param value
+ * the integer value.
* @return the matching enumerator or null.
* @generated
*/
@@ -385,8 +418,8 @@ public enum IEEERequirementCategory implements Enumerator {
switch (value) {
case SPECIFIC_REQUIREMENTS_VALUE:
return SPECIFIC_REQUIREMENTS;
- case EXTERNAL_INTERFACE_REQUIREMENTS_VALUE:
- return EXTERNAL_INTERFACE_REQUIREMENTS;
+ case EXTERNAL_INTERFACES_REQUIREMENTS_VALUE:
+ return EXTERNAL_INTERFACES_REQUIREMENTS;
case USER_INTERFACES_VALUE:
return USER_INTERFACES;
case HARDWARE_INTERFACES_VALUE:
@@ -412,6 +445,7 @@ public enum IEEERequirementCategory implements Enumerator {
/**
*
*
+ *
* @generated
*/
private final int value;
@@ -419,6 +453,7 @@ public enum IEEERequirementCategory implements Enumerator {
/**
*
*
+ *
* @generated
*/
private final String name;
@@ -426,6 +461,7 @@ public enum IEEERequirementCategory implements Enumerator {
/**
*
*
+ *
* @generated
*/
private final String literal;
@@ -434,6 +470,7 @@ public enum IEEERequirementCategory implements Enumerator {
* Only this class can construct instances.
*
*
+ *
* @generated
*/
private IEEERequirementCategory(int value, String name, String literal) {
@@ -445,6 +482,7 @@ public enum IEEERequirementCategory implements Enumerator {
/**
*
*
+ *
* @generated
*/
@Override
@@ -455,6 +493,7 @@ public enum IEEERequirementCategory implements Enumerator {
/**
*
*
+ *
* @generated
*/
@Override
@@ -465,6 +504,7 @@ public enum IEEERequirementCategory implements Enumerator {
/**
*
*
+ *
* @generated
*/
@Override
@@ -476,6 +516,7 @@ public enum IEEERequirementCategory implements Enumerator {
* Returns the literal value of the enumerator, which is its string representation.
*
*
+ *
* @generated
*/
@Override
@@ -483,4 +524,4 @@ public enum IEEERequirementCategory implements Enumerator {
return literal;
}
-} //IEEERequirementCategory
+} // IEEERequirementCategory
diff --git a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/src-gen/org/eclipse/papyrus/model2doc/integration/ieee/requirements/documentation/impl/AbstractRequirementsImpl.java b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/src-gen/org/eclipse/papyrus/model2doc/integration/ieee/requirements/documentation/impl/AbstractRequirementsImpl.java
index f6c3a85b..ebd21e87 100755
--- a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/src-gen/org/eclipse/papyrus/model2doc/integration/ieee/requirements/documentation/impl/AbstractRequirementsImpl.java
+++ b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/src-gen/org/eclipse/papyrus/model2doc/integration/ieee/requirements/documentation/impl/AbstractRequirementsImpl.java
@@ -237,7 +237,7 @@ public abstract class AbstractRequirementsImpl extends MinimalEObjectImpl.Contai
return super.toString();
}
- StringBuffer result = new StringBuffer(super.toString());
+ StringBuilder result = new StringBuilder(super.toString());
result.append(" (reqCategory: "); //$NON-NLS-1$
result.append(reqCategory);
result.append(')');
diff --git a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/src-gen/org/eclipse/papyrus/model2doc/integration/ieee/requirements/documentation/impl/IEEEFunctionalRequirementsImpl.java b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/src-gen/org/eclipse/papyrus/model2doc/integration/ieee/requirements/documentation/impl/IEEEFunctionalRequirementsImpl.java
index ad2d3b66..80ee03ce 100755
--- a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/src-gen/org/eclipse/papyrus/model2doc/integration/ieee/requirements/documentation/impl/IEEEFunctionalRequirementsImpl.java
+++ b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/src-gen/org/eclipse/papyrus/model2doc/integration/ieee/requirements/documentation/impl/IEEEFunctionalRequirementsImpl.java
@@ -168,7 +168,7 @@ public class IEEEFunctionalRequirementsImpl extends IEEERequirementsImpl impleme
return super.toString();
}
- StringBuffer result = new StringBuffer(super.toString());
+ StringBuilder result = new StringBuilder(super.toString());
result.append(" (mode: "); //$NON-NLS-1$
result.append(mode);
result.append(')');
diff --git a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/src-gen/org/eclipse/papyrus/model2doc/integration/ieee/requirements/documentation/impl/IEEERequirementsDocumentationPackageImpl.java b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/src-gen/org/eclipse/papyrus/model2doc/integration/ieee/requirements/documentation/impl/IEEERequirementsDocumentationPackageImpl.java
index 5d5d49d7..ab62b2e1 100755
--- a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/src-gen/org/eclipse/papyrus/model2doc/integration/ieee/requirements/documentation/impl/IEEERequirementsDocumentationPackageImpl.java
+++ b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/src-gen/org/eclipse/papyrus/model2doc/integration/ieee/requirements/documentation/impl/IEEERequirementsDocumentationPackageImpl.java
@@ -119,9 +119,10 @@ public class IEEERequirementsDocumentationPackageImpl extends EPackageImpl imple
}
// Obtain or create and register package
- IEEERequirementsDocumentationPackageImpl theIEEERequirementsDocumentationPackage = (IEEERequirementsDocumentationPackageImpl) (EPackage.Registry.INSTANCE.get(eNS_URI) instanceof IEEERequirementsDocumentationPackageImpl
- ? EPackage.Registry.INSTANCE.get(eNS_URI)
- : new IEEERequirementsDocumentationPackageImpl());
+ Object registeredIEEERequirementsDocumentationPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+ IEEERequirementsDocumentationPackageImpl theIEEERequirementsDocumentationPackage = registeredIEEERequirementsDocumentationPackage instanceof IEEERequirementsDocumentationPackageImpl
+ ? (IEEERequirementsDocumentationPackageImpl) registeredIEEERequirementsDocumentationPackage
+ : new IEEERequirementsDocumentationPackageImpl();
isInited = true;
@@ -139,7 +140,6 @@ public class IEEERequirementsDocumentationPackageImpl extends EPackageImpl imple
// Mark meta-data to indicate it can't be changed
theIEEERequirementsDocumentationPackage.freeze();
-
// Update the registry and return the package
EPackage.Registry.INSTANCE.put(IEEERequirementsDocumentationPackage.eNS_URI, theIEEERequirementsDocumentationPackage);
return theIEEERequirementsDocumentationPackage;
@@ -334,7 +334,7 @@ public class IEEERequirementsDocumentationPackageImpl extends EPackageImpl imple
// Initialize enums and add enum literals
initEEnum(ieeeRequirementCategoryEEnum, IEEERequirementCategory.class, "IEEERequirementCategory"); //$NON-NLS-1$
addEEnumLiteral(ieeeRequirementCategoryEEnum, IEEERequirementCategory.SPECIFIC_REQUIREMENTS);
- addEEnumLiteral(ieeeRequirementCategoryEEnum, IEEERequirementCategory.EXTERNAL_INTERFACE_REQUIREMENTS);
+ addEEnumLiteral(ieeeRequirementCategoryEEnum, IEEERequirementCategory.EXTERNAL_INTERFACES_REQUIREMENTS);
addEEnumLiteral(ieeeRequirementCategoryEEnum, IEEERequirementCategory.USER_INTERFACES);
addEEnumLiteral(ieeeRequirementCategoryEEnum, IEEERequirementCategory.HARDWARE_INTERFACES);
addEEnumLiteral(ieeeRequirementCategoryEEnum, IEEERequirementCategory.SOFTWARE_INTERFACES);
diff --git a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/src-gen/org/eclipse/papyrus/model2doc/integration/ieee/requirements/documentation/impl/IEEERequirementsImpl.java b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/src-gen/org/eclipse/papyrus/model2doc/integration/ieee/requirements/documentation/impl/IEEERequirementsImpl.java
index 8e341836..ab23b7a5 100755
--- a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/src-gen/org/eclipse/papyrus/model2doc/integration/ieee/requirements/documentation/impl/IEEERequirementsImpl.java
+++ b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/src-gen/org/eclipse/papyrus/model2doc/integration/ieee/requirements/documentation/impl/IEEERequirementsImpl.java
@@ -169,7 +169,7 @@ public class IEEERequirementsImpl extends AbstractRequirementsImpl implements IE
return super.toString();
}
- StringBuffer result = new StringBuffer(super.toString());
+ StringBuilder result = new StringBuilder(super.toString());
result.append(" (category: "); //$NON-NLS-1$
result.append(category);
result.append(')');
diff --git a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/src/org/eclipse/papyrus/model2doc/integration/ieee/requirements/utils/IEEERequirementsDocumentationProfileHelper.java b/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/src/org/eclipse/papyrus/model2doc/integration/ieee/requirements/utils/IEEERequirementsDocumentationProfileHelper.java
deleted file mode 100755
index 054ae460..00000000
--- a/plugins/integration/ieee/org.eclipse.papyrus.model2doc.integration.ieee.requirements/src/org/eclipse/papyrus/model2doc/integration/ieee/requirements/utils/IEEERequirementsDocumentationProfileHelper.java
+++ /dev/null
@@ -1,242 +0,0 @@
-/*****************************************************************************
- * Copyright (c) 2019 CEA LIST.
- *
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Yupanqui Munoz (CEA LIST) yupanqui.munozjulho@cea.fr - Initial API and implementation
- * Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
- *****************************************************************************/
-package org.eclipse.papyrus.model2doc.integration.ieee.requirements.utils;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.stream.Collectors;
-
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.papyrus.model2doc.integration.ieee.requirements.documentation.AbstractRequirements;
-import org.eclipse.papyrus.model2doc.integration.ieee.requirements.documentation.IEEEFunctionalRequirements;
-import org.eclipse.papyrus.model2doc.integration.ieee.requirements.documentation.IEEERequirements;
-import org.eclipse.uml2.uml.Package;
-
-public class IEEERequirementsDocumentationProfileHelper {
- /**
- * the package used to start the cross of the model
- */
- private Package rootPackage;
-
- /**
- * Collections and Map used to group the package by category
- */
- private final Collection specificRequirements = new ArrayList();
- private final Collection externalInterfaceRequirements = new ArrayList();
- private final Collection userInterfaces = new ArrayList();
- private final Collection hardwaresInterfaces = new ArrayList();
- private final Collection softwareInterfaces = new ArrayList();
- private final Collection communicationInterfaces = new ArrayList();
- private final Collection functionalRequirementsWithoutMode = new ArrayList();
- private final Map> functionalRequirementsWithMode = new HashMap>();
- private final Collection performanceRequirements = new ArrayList();
- private final Collection designConstraints = new ArrayList();
- private final Collection softwareSystemAttributes = new ArrayList();
- private final Collection otherRequirements = new ArrayList();
-
- /**
- * the list of package stereotyped with a stereotype extending one provided by the IEEE profile, but not provided by our profile itself
- */
- final Collection unknownRequirements = new ArrayList();
-
- /**
- *
- * Constructor.
- *
- * @param aPackage
- * a package of the model, generally the root one
- */
- public IEEERequirementsDocumentationProfileHelper(final Package aPackage) {
- this.rootPackage = aPackage;
- fillCollections(this.rootPackage);
- }
-
- /**
- * This method allows to fill the fields list and map of this class
- *
- * TODO : warning, this algorithm won't be efficient
- */
- protected void fillCollections(final Package pack) {
- final Iterator subPackageIterator = pack.getOwnedMembers().stream().filter(Package.class::isInstance).map(Package.class::cast).collect(Collectors.toList()).iterator();
- while (subPackageIterator.hasNext()) {
- final Package current = subPackageIterator.next();
- addToCollection(current);
- fillCollections(current);
- }
- }
-
-
- /**
- *
- *
- * @param pack
- * a package
- *
- * this method add the package to one of the field lists of the classes when it is stereotyped as IEEE Requirements
- */
- protected void addToCollection(final Package pack) {
- for (final EObject current : pack.getStereotypeApplications()) {
- if (current instanceof IEEEFunctionalRequirements) {
- final IEEEFunctionalRequirements reqSte = (IEEEFunctionalRequirements) current;
- final Integer mode = Integer.valueOf(reqSte.getMode());
- Collection packages = this.functionalRequirementsWithMode.get(mode);
- if (null == packages) {
- packages = new ArrayList();
- this.functionalRequirementsWithMode.put(mode, packages);
- }
- packages.add(pack);
-
- } else if (current instanceof IEEERequirements) {
- final IEEERequirements reqSte = (IEEERequirements) current;
- switch (reqSte.getCategory()) {
- case SPECIFIC_REQUIREMENTS:
- this.specificRequirements.add(pack);
- break;
- case EXTERNAL_INTERFACE_REQUIREMENTS:
- this.externalInterfaceRequirements.add(pack);
- break;
- case USER_INTERFACES:
- this.userInterfaces.add(pack);
- break;
- case HARDWARE_INTERFACES:
- this.hardwaresInterfaces.add(pack);
- break;
- case SOFTWARE_INTERFACES:
- this.softwareInterfaces.add(pack);
- break;
- case COMMUNICATION_INTERFACES:
- this.communicationInterfaces.add(pack);
- break;
- case FUNCTIONAL_REQUIREMENTS:
- this.functionalRequirementsWithoutMode.add(pack);
- break;
- case PERFORMANCE_REQUIREMENTS:
- this.performanceRequirements.add(pack);
- break;
- case DESIGN_CONSTRAINTS:
- designConstraints.add(pack);
- break;
- case SOFTWARE_SYSTEM_ATTRIBUTES:
- this.softwareSystemAttributes.add(pack);
- break;
-
- case OTHER_REQUIREMENTS:
- this.otherRequirements.add(pack);
- break;
- default:
- this.unknownRequirements.add(pack);
- break;
-
- }
- } else if (current instanceof AbstractRequirements) {
- this.unknownRequirements.add(pack);
- }
- }
- }
-
- /**
- * @return this.the specificRequirements
- */
- public final Collection getSpecificRequirements() {
- return this.specificRequirements;
- }
-
- /**
- * @return this.the externalInterfaceRequirements
- */
- public final Collection getExternalInterfaceRequirements() {
- return this.externalInterfaceRequirements;
- }
-
- /**
- * @return this.the userInterfaces
- */
- public final Collection getUserInterfaces() {
- return this.userInterfaces;
- }
-
- /**
- * @return this.the hardwaresInterfaces
- */
- public final Collection getHardwaresInterfaces() {
- return this.hardwaresInterfaces;
- }
-
- /**
- * @return this.the softwareInterfaces
- */
- public final Collection getSoftwareInterfaces() {
- return this.softwareInterfaces;
- }
-
- /**
- * @return this.the communicationInterfaces
- */
- public final Collection getCommunicationInterfaces() {
- return this.communicationInterfaces;
- }
-
- /**
- * @return this.the functionalRequirementsWithoutMode
- */
- public final Collection getFunctionalRequirementsWithoutMode() {
- return this.functionalRequirementsWithoutMode;
- }
-
- /**
- * @return this.the functionalRequirementsWithMode
- */
- public final Map> getFunctionalRequirementsWithMode() {
- return this.functionalRequirementsWithMode;
- }
-
- /**
- * @return this.the performanceRequirements
- */
- public final Collection getPerformanceRequirements() {
- return this.performanceRequirements;
- }
-
- /**
- * @return this.the designConstraints
- */
- public final Collection getDesignConstraints() {
- return this.designConstraints;
- }
-
- /**
- * @return this.the softwareSystemAttributes
- */
- public final Collection getSoftwareSystemAttributes() {
- return this.softwareSystemAttributes;
- }
-
- /**
- * @return this.the otherRequirements
- */
- public final Collection getOtherRequirements() {
- return this.otherRequirements;
- }
-
- /**
- * @return this.the unknownRequirements
- */
- public final Collection getUnknownRequirements() {
- return this.unknownRequirements;
- }
-}
diff --git a/plugins/integration/ieee/pom.xml b/plugins/integration/ieee/pom.xml
index b58c71dc..c7dffbec 100755
--- a/plugins/integration/ieee/pom.xml
+++ b/plugins/integration/ieee/pom.xml
@@ -22,5 +22,6 @@
org.eclipse.papyrus.model2doc.integration.ieee.requirements.odtorg.eclipse.papyrus.model2doc.integration.ieee.requirements.odt.architectureorg.eclipse.papyrus.model2doc.integration.ieee.requirements.odt.ui
+ org.eclipse.papyrus.model2doc.integration.ieee.requirements.sysml14.odt.architecture
--
cgit v1.2.3