From 3d9dc32784147950df08ead05c70186c185d0fe9 Mon Sep 17 00:00:00 2001 From: georgiana-e Date: Thu, 12 Nov 2020 09:49:03 +0200 Subject: [PATCH] V1.2.x doc and bugs cherry pick (#82) * propose deactivation (#77) Change-Id: I361b8df57d5b305ee41667919f4df3946f265cd3 Signed-off-by: MalinaStefaniaStoicanescu * [567448] Proposal provider improvements (#79) Change-Id: I938e17d8a093baeee38f159015270a279a6e8454 Co-authored-by: Georgiana-Elena ECOBICI * [doc] Updated doc (#81) Change-Id: I562dc504fc2cb1fb5a439131c6842ddef11ed3ad Co-authored-by: Georgiana-Elena ECOBICI Co-authored-by: MalinaStefaniaStoicanescu Co-authored-by: Georgiana-Elena ECOBICI --- .../TextualEditor/Functionalities-toc.xml | 12 +- .../html/TextualEditor/Functionalities.html | 759 +++++-- .../TextualEditor/Functionalities.mediawiki | 352 +++- .../Images/ES_Combined_Fragments.png | Bin 26836 -> 31502 bytes .../Images/ES_FS_Logical_Messages.png | Bin 0 -> 73922 bytes .../ES_FS_States_Modes_AllocFunctions.png | Bin 33173 -> 43821 bytes .../TextualEditor/Images/ES_References.png | Bin 0 -> 27653 bytes .../Images/FS_WithReturn_WithExecution.png | Bin 36888 -> 0 bytes .../Images/IS_System_SeqMessages.png | Bin 27356 -> 27778 bytes .../Images/IS_System_SeqMessages_FE.png | Bin 21105 -> 0 bytes .../Images/IS_System_SyncButtons.png | Bin 15638 -> 23433 bytes .../Images/Keywords_Participants_Examples.png | Bin 20999 -> 25426 bytes .../Images/OAS_OA_SeqMessages_Interaction.png | Bin 22115 -> 33044 bytes .../Images/View_TextualEditor.png | Bin 0 -> 28798 bytes .../TextualScenarioProposalProvider.xtend | 92 +- .../TextualScenarioProposalProvider.java | 310 +-- .../dsl/helpers/TextualScenarioHelper.xtend | 19 +- .../validation/TextualScenarioValidator.xtend | 1828 ++++++++--------- .../dsl/helpers/TextualScenarioHelper.java | 32 +- .../validation/TextualScenarioValidator.java | 321 +-- .../commands/XtextToDiagramCommands.java | 3 + .../helper/EmbeddedEditorInstanceHelper.java | 8 +- 22 files changed, 2194 insertions(+), 1542 deletions(-) create mode 100644 plugins/org.polarsys.capella.scenario.editor.doc/html/TextualEditor/Images/ES_FS_Logical_Messages.png create mode 100644 plugins/org.polarsys.capella.scenario.editor.doc/html/TextualEditor/Images/ES_References.png delete mode 100644 plugins/org.polarsys.capella.scenario.editor.doc/html/TextualEditor/Images/FS_WithReturn_WithExecution.png delete mode 100644 plugins/org.polarsys.capella.scenario.editor.doc/html/TextualEditor/Images/IS_System_SeqMessages_FE.png create mode 100644 plugins/org.polarsys.capella.scenario.editor.doc/html/TextualEditor/Images/View_TextualEditor.png diff --git a/plugins/org.polarsys.capella.scenario.editor.doc/html/TextualEditor/Functionalities-toc.xml b/plugins/org.polarsys.capella.scenario.editor.doc/html/TextualEditor/Functionalities-toc.xml index 3a47b2eb..e10b1631 100644 --- a/plugins/org.polarsys.capella.scenario.editor.doc/html/TextualEditor/Functionalities-toc.xml +++ b/plugins/org.polarsys.capella.scenario.editor.doc/html/TextualEditor/Functionalities-toc.xml @@ -1,8 +1,7 @@ - - + @@ -11,7 +10,16 @@ + + + + + + + + + diff --git a/plugins/org.polarsys.capella.scenario.editor.doc/html/TextualEditor/Functionalities.html b/plugins/org.polarsys.capella.scenario.editor.doc/html/TextualEditor/Functionalities.html index ab40ed56..03186ec4 100644 --- a/plugins/org.polarsys.capella.scenario.editor.doc/html/TextualEditor/Functionalities.html +++ b/plugins/org.polarsys.capella.scenario.editor.doc/html/TextualEditor/Functionalities.html @@ -7,256 +7,567 @@

Functionalities

Once the Textual Scenario Add-On is installed, you will be able to edit scenarios in textual mode.

-

Textual Scenario View

-

When creating a new scenario diagram (OES, OAS, IS, FS, ES), the scenario editor is displayed as a separate view. The user shall be able to edit a scenario in the embedded Textual Scenario Editor. If the user has multiple Capella Scenario Diagrams opened, when switching tabs to another Scenario Diagram, the text editor will update with the content from the new diagram and the editor will be linked to the new diagram.

-

Consistency of the data

-

In order to maintain consistency between diagram and text, two buttons are available:

-
    -
  • - refresh button : on pressing the refresh button, the text editor is updated with the data from the diagram -
  • -
  • - save button : on pressing the save button, the diagram is updated with the content described by the textual scenario associated to the current diagram -
  • -
-

- +

Textual Editor View

+

When creating a new scenario diagram (OES, OAS, IS, FS, ES), the editor is displayed as a separate view. The user shall be able to edit a scenario in the embedded Textual Editor. + If the user has multiple Capella Scenario Diagrams opened, when switching tabs to another Scenario Diagram, the text editor will update with the content from the new diagram and the editor will be linked to the new diagram. + +
+ The embedded Textual Editor can also be opened from the View menu bar: + +

-

Syntax for the Textual Scenario Editor

+

Syntax for the Textual Editor

The syntax supported in the textual editor for IS, FS, ES Capella Scenarios is presented in the following paragraphs.

Participants

-

Depending on the type of scenario (OES, OAS, IS, FS, ES) and the architecture level on which our diagram is located, we can insert instance roles specifying a keyword (actor, component, function etc) and the name of the instance role (currently the parts associated need to already exist).

-

Keywords

-
    -
  • - actor : it will create an instance role representing an actor; this keyword is available for IS, ES diagrams at Operational, System, Logical and Physical Level. -
  • -
  • - component : it will create an instance role representing a component; this keyword is available for IS, ES diagrams at System, Logical and Physical Level. -
  • -
  • - configuration_item : it will create an instance role representing a configuration item; this keyword is available for IS diagrams at EPBS Level. -
  • -
  • - entity : it will create an instance role representing an entity; this keyword is available for OES diagrams at Operational Level. -
  • -
  • - role : it will create an instance role representing a role; this keyword is available for OES diagrams at Operational Level. -
  • -
  • - function : it will create an instance role representing a function; this keyword is available for FS diagrams. -
  • -
  • - activity : it will create an instance role representing an activity; this keyword is available for OAS diagrams. -
  • -
+

Depending on the type of scenario (OES, OAS, IS, FS, ES) and the architectural level, instance roles can be inserted by specifying the keyword (actor, component, configuration_item, entity, role, function, activity) and the name of the instance role. If the represented part for the inserted instance role does not exist, an error is displayed.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Keyword + + Details +
+ actor + It will create an instance role representing an actor; this keyword is available for the IS, ES diagrams at Operational, System, Logical an Physical Level.
+ component + It will create an instance role representing a component; this keyword is available for the IS, ES diagrams at System, Logical and Physical Level.
+ configuration_item + It will create an instance role representing a configuration item. This keyword is available for the IS diagrams at EPBS Level.
+ entity + It will create an instance role representing an entity. This keyword is available for the OES diagrams at Operational Level.
+ role + It will create an instance role representing a role. This keyword is available for the OES diagrams at Operational Level.
+ function + It will create an instance role representing a function. This keyword is available for the FS diagrams.
+ activity + It will create an instance role representing an activity. This keyword is available for the OAS diagrams.

Examples

- +

Messages

-

The user can insert messages between participants assuming the fact that the exchange already exists between the selected source and target participant.

-
    -
  • - sequence messages : it will add a sequence messages between the source and the target instance roles which shall already exist, otherwise a validation error is displayed. -
      -
    • - source_ir" -> "target_ir" : "msg" -
    • -
    • example: -
      -
      "A 1" -> "A 2" : "exec"
      -
      -
    • -
    -
  • -
  • - activate execution : in Capella, we always activate an execution after each sequence message - ' -> '; each sequence message implies an activation -
  • -
  • - deactivate execution : the - ' deactivate ' keyword is used to deactivate a message; if we have a simple sequence message which ends immediately, the deactivation keyword is not required; if we have a sequence messages that ends later, we shall add the - ' withExecution ' keyword and it is mandatory to deactivate the message when needed. -
      -
    • example: -
      -
      "A 1" -> "A 2" - withExecution : "exec" -
      -
      "A 2" -> "A 3"
      -
      - deactivate "A 2" -
      -
      -
    • -
    -
  • -
  • - return branch : to mark that a message has a return, the - withReturn keyword can be used; if the message does not return immediately and other events occur on its execution, then the - withExecution keyword can be used in the same time with the - withReturn keyword to mark that the current message is a complex message and has a return. -
  • -
  • - create messages : it will add a create message between the source and the target instance roles which shall already exist, otherwise a validation error is displayed. -
      -
    • - "source_ir" ->+ "target_ir" : "msg" -
    • -
    • example: -
      -
      "A 1" ->+ "A 2" : "msg"
      -
      -
    • -
    -
  • -
  • - delete messages : it will add a delete messages between the source and the target instance roles which shall already exist, otherwise a validation error is displayed. -
      -
    • - "source_ir" ->x "target_ir" : "msg" -
    • -
    • example: -
      -
      "A 1" ->x "A 2" : "msg"
      -
      -
    • -
    -
  • -
  • - arm timer : it will add an arm timer on the given timeline. -
      -
    • - ->> "timeline" : "msg" -
    • -
    • example: -
      -
      ->> "A 1" : "arm_timer"
      -
      -
    • -
    -
  • -
+

The user can insert messages between defined participants assuming the fact that the exchange already exists between the selected source and the target participant. The following elements and keywords can be used in the textual editor:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Element + + Syntax + + Details + + Examples +
+ sequence message + "source" + -> "target" : "exchange" + Insert a sequence messages between the source and the target instance roles already defined in the text editor. A + sequence message can be declared with + withExecution and + withReturn keywords. + "SA 2" + -> "SA 3" : "msg1" +
+ lost message + "source" + ->o : "exchange" + Insert a lost sequence messages starting on the given source."SA 2" + ->o : "msgLost" +
+ found message + + o-> "target" : "exchange" + Insert a found sequence messages having the given target. This type of message can be use with the + withExecution keyword. + + o-> "SA 3" : "msgFound" +
+ arm timer + + ->> "timeline" : "message" + Add an arm timer on the given timeline. This type of message can be use with the + withExecution keyword. + + ->> "SA 3" : "Arm Timer" +
+ create message + "source" + ->+ "target" : "exchange" + Insert a create messages between the source and the target instance roles already defined in the text editor."SA 2" + ->+ "SA 3" : "cmsg" +
+ delete message + "source" + ->x "target" : "exchange" + Insert a delete messages between the source and the target instance roles already defined in the text editor."SA 2" + ->x "SA 3" : "dmsg" +
+ activate execution + + withExecution + The + withExecution keyword is used to mark that the execution of a message is not immediately ended. The execution will end where the + deactivation message is found. The + withExecution keyword can be used in the same time with the + withReturn keyword. + "SA 2" + -> "SA 3" + withExecution: "msg1" +
+ deactivate execution + + deactivate "target" + The + deactivate keyword is used to mark where a message execution is ending. The + deactivate keyword mandatory if we have a sequence message whose execution is not immediately ended. We must also add the + withExecution keyword on the sequence message if the message requires deactivation. + "SA 2" + -> "SA 3" + withExecution : "msg1" +
+ deactivate "SA 3" +
+ return branch + + withReturn + The + withReturn keyword is used to mark that a message has a return. The + withReturn keyword can be used in the same time with the + withExecution keyword. + "SA 2" + -> "SA 3" + withReturn : "msg1" +
+

Note

+

In Capella, we always activate an execution immediately after each sequence message. In case of a simple message, whose execution ends immediately, the + withExecution and + deactivation keywords are not required. However if we type the + withExecution keyword, we must specify the + deactivation point, otherwise a validation error is displayed in the text editor. +

Examples

- - -
+
- - - -
- -
- - - -
- -

Combined Fragments

-

The user can define a combined fragment from the text using the syntax below:

+

The user can define a combined fragment in text using the syntax below:

+ + + + + + + + + + + + + + + + + + + + + +
+ Element + + Syntax + + Description +
+ ALT + + alt "condition A" + over "timeline1", "timeline2",… { +
+
+
+
[something]
+
+
+
+

} + else "condition B" { +

+
+
+
+
[something_else]
+
+
+
+

} + else "condition C" { +

+
+
+
+
[something_else]
+
+
+
+

}

+
It will insert an ALT type of combined fragment over the given timelines.
+ PAR + + par "condition A" + over "timeline1", "timeline2",… { +
+
+
+
[something]
+
+
+
+

} "condition B" {

+
+
+
+
[something_else]
+
+
+
+

} "condition C" {

+
+
+
+
[something_else]
+
+
+
+

}

+
It will insert a PAR type of combined fragment over the given timelines.
+ OTHER + + LOOP, ASSERT, CONSIDER, CRITICAL, IGNORE, NEG, OPT, SEQ, STRICT, UNSET' + It will insert the given type of combined fragment over the given timelines.
+

Note

    -
  • for - ALT: -
    -
    -
    -
    - alt “condition A” - over timeline1, timeline2,… { -
    -
    [something]
    -
    -
    -
    } - else “condition B” { -
    -
    [something_else]
    -
    -
    -
    } - else “condition C” { -
    -
    [something_else]
    -
    -
    -
    }
    -
    -
    -
    -
  • -
  • for the other combined fragments: - PAR, LOOP, ASSERT, CONSIDER, CRITICAL, IGNORE, NEG, OPT, SEQ, STRICT, UNSET': -
    -
    -
    -
    - par “condition A” - over timeline1, timeline2,… { -
    -
    [something]
    -
    -
    -
    } “condition B” { -
    -
    [something_else]
    -
    -
    -
    } “condition C” { -
    -
    [something_else]
    -
    -
    -
    }
    -
    -
    -
    +
  • For the other combined fragments: + LOOP, ASSERT, CONSIDER, CRITICAL, IGNORE, NEG, OPT, SEQ, STRICT, UNSET the syntax is similar to + PAR
  • +
  • The condition is optional.
-

Examples

+

Example

- +

State. Modes. Allocated Functions

-

The following syntax can be used in order to define state, modes and allocated functions in the textual mode:

+

The use can insert states, modes and allocated functions in the textual editor using the syntax below:

+ + + + + + + + + + + + + + + + + + + + + +
+ Element + + Syntax + + Description +
+ state + + on "Timeline" + state "State_name" + It will insert a state on a given timeline.
+ mode + + on "Timeline" + mode "Mode_name" + It will insert a mode on a given timeline.
+ function + + on "Timeline" + mode "Function_name" + It will insert an allocated function on a given timeline.
+

Example

+

+ + +
+

+

References

+

The following syntax can be used in order to define references in the textual editor:

+ + + + + + + + + + + +
+ Element + + Syntax + + Description +
+ reference + + ref "ref_scenario" + over "timeline1", "timeline2" + It will insert a reference to a scenario over the given timelines.
+

Example

+

+ + +
+

+

Features and limitations of the Textual Editor

+

Consistency of the data

+

In order to maintain consistency between diagram and text, two buttons are available:

    -
  • state -
      -
    • - on “Timeline” - state “State_name” -
    • -
    -
  • -
  • mode -
      -
    • - on “Timeline” - mode “Mode_name” -
    • -
    +
  • + refresh button : on pressing the refresh button, the text editor is updated with the data from the diagram
  • -
  • allocated functions -
      -
    • - on “Timeline” - function “Function_name” -
    • -
    +
  • + save button : on pressing the save button, the diagram is updated with the content described by the textual scenario associated to the current diagram
-

Examples

- - -
+ +

+

Validation of the data

+

Textual validations are added in the editor, to prevent the user from doing invalid operations.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Validation + + Description +
'Represented part does not exist!' Checks that a represented part exists for the instance role used in the text editor.
'Function does not exist!' Checks that the function exists.
'<keyword> can not be used in this diagram!'Check that the participant keyword can be used in the type of scenario diagram. <keyword> can be any participant: actor, component, entity, function, activiy, role, configuration_item. Ex: actor cannot be used in the FS diagrams.
'Duplicated participant!'Checks that only a timeline of the same instance role is used.
'Timeline not defined in text editor!'Checks that the given timeline involved in message, state fragments, combined fragments is defined in the text editor as participant.
'Exchange does not exist between <source> and <target>!'Checks that an exchange exists between the given source and target in a sequence message.
'Exchange does not exist from <source>!'Checks that an exchange exists starting on the given source in a lost message.
'Exchange does not exist to <target>!'Checks that an exchange exists to the given target in a lost found.
'Exchange type can not be used, expected <type>'Checks that a type of exchange (Component Exchange or Functional Exchange) is used in a ES diagram. <type> can be CE or FE, if one of them is used, then the user can only add a type of exchange.
'Deactivation keyword expected for a withExecution message!'Checks that a withExecution message is closed by a deacitvation on the given target timeline.
'Deactivation keyword not expected!'Checks that the activation keyword is put after a withExecution message and that the deactivated target is the one specified in the withExecution message.
'Create or delete message can not be used in this diagram!'Checks that a create or a delete message are used only in the allowed diagrams.
'Arm Timer can not be used in this diagram!'Checks that an arm timer message is used only in the allowed diagrams.
'Lost message can not be used in this diagram!'Checks that a lost message is used only in the allowed diagrams.
'Found message can not be used in this diagram!'Checks that a found message is used only in the allowed diagrams.
'Invalid element! Source and target must be different!'Checks that the source and target involved in a sequence message are different.
'Element <timeline> can not be used at this point! A delete message was already defined on this timeline.'Checks that a delete message on the given timeline was not encountered before using it in the current point. Cannot use the timeline after a delete occured on the timeline.
'Target <target> can not be used in a create message at this point! Other operations were already defined on this timeline.'Checks that a create message is the first event occuring on a timeline.
'This <state_fragment> does not exist or is not available for <timeline>'Checks that a state, mode, allocated function, can be used on the given timeline.
'Expected else keyword!'Checks that the 'else' keyword is present for the 'alt' combined fragment.
'Unexpected keyword!'Shows an error if the keyword is not expected before expression of an operand in a combined fragment. Ex: 'else' keyword not expected for other that 'alt'.
'Timelines covered by this <combined_fragment_type> must be a subset of the parent covered timelines'Checks that the covered timelines in an inner combined fragment is a subset of the covered timelines in the parent combined fragment.
'Timeline not covered by this <combined_fragment_type>!'Checks that the timelines involved in a message that belongs to a combine fragment are covered by the combined fragment.
'Duplicated timeline!'Checks that a timeline is not duplicated when using it over a reference.
'Referenced scenario does not exist!'Checks that a referenced scenario exists.
'Timelines covered by this reference must be a subset of the parent covered timelines'Checks that the timelines in a reference are a subset of the parent container covered timelines.
+

Autocompletion

+

The user can use + Ctrl+Space to see suggestions of the allowed keywords in the editor or proposals of the elements that can be used.

+

Limitations

+

Multiple lifelines of the same instance role is not enabled.

\ No newline at end of file diff --git a/plugins/org.polarsys.capella.scenario.editor.doc/html/TextualEditor/Functionalities.mediawiki b/plugins/org.polarsys.capella.scenario.editor.doc/html/TextualEditor/Functionalities.mediawiki index 92729e37..8b73f560 100644 --- a/plugins/org.polarsys.capella.scenario.editor.doc/html/TextualEditor/Functionalities.mediawiki +++ b/plugins/org.polarsys.capella.scenario.editor.doc/html/TextualEditor/Functionalities.mediawiki @@ -15,110 +15,302 @@ Once the Textual Scenario Add-On is installed, you will be able to edit scenarios in textual mode. -==Textual Scenario View== +==Textual Editor View== -When creating a new scenario diagram (OES, OAS, IS, FS, ES), the scenario editor is displayed as a separate view. The user shall be able to edit a scenario in the embedded Textual Scenario Editor. If the user has multiple Capella Scenario Diagrams opened, when switching tabs to another Scenario Diagram, the text editor will update with the content from the new diagram and the editor will be linked to the new diagram. - -===Consistency of the data=== -In order to maintain consistency between diagram and text, two buttons are available: -* ''' refresh button ''': on pressing the refresh button, the text editor is updated with the data from the diagram -* ''' save button ''': on pressing the save button, the diagram is updated with the content described by the textual scenario associated to the current diagram -[[Image:Images/IS_System_SyncButtons.png|center|760px]] +When creating a new scenario diagram (OES, OAS, IS, FS, ES), the editor is displayed as a separate view. The user shall be able to edit a scenario in the embedded Textual Editor. +If the user has multiple Capella Scenario Diagrams opened, when switching tabs to another Scenario Diagram, the text editor will update with the content from the new diagram and the editor will be linked to the new diagram. +
+The embedded Textual Editor can also be opened from the View menu bar: +[[Image:Images/View_TextualEditor.png]] -==Syntax for the Textual Scenario Editor== +==Syntax for the Textual Editor== The syntax supported in the textual editor for IS, FS, ES Capella Scenarios is presented in the following paragraphs. ===Participants=== -Depending on the type of scenario (OES, OAS, IS, FS, ES) and the architecture level on which our diagram is located, we can insert instance roles specifying a keyword (actor, component, function etc) and the name of the instance role (currently the parts associated need to already exist). +Depending on the type of scenario (OES, OAS, IS, FS, ES) and the architectural level, instance roles can be inserted by specifying the keyword (actor, component, configuration_item, entity, role, function, activity) and the name of the instance role. If the represented part for the inserted instance role does not exist, an error is displayed. -====Keywords==== -* ''' actor ''': it will create an instance role representing an actor; this keyword is available for IS, ES diagrams at Operational, System, Logical and Physical Level. -* ''' component ''': it will create an instance role representing a component; this keyword is available for IS, ES diagrams at System, Logical and Physical Level. -* ''' configuration_item ''': it will create an instance role representing a configuration item; this keyword is available for IS diagrams at EPBS Level. -* ''' entity ''': it will create an instance role representing an entity; this keyword is available for OES diagrams at Operational Level. -* ''' role ''': it will create an instance role representing a role; this keyword is available for OES diagrams at Operational Level. -* ''' function ''': it will create an instance role representing a function; this keyword is available for FS diagrams. -* ''' activity ''': it will create an instance role representing an activity; this keyword is available for OAS diagrams. +{| border="1" +|- +| ''' Keyword ''' +| ''' Details ''' +|- +| ''' actor ''' +| It will create an instance role representing an actor; this keyword is available for the IS, ES diagrams at Operational, System, Logical an Physical Level. +|- +| ''' component ''' +| It will create an instance role representing a component; this keyword is available for the IS, ES diagrams at System, Logical and Physical Level. +|- +| ''' configuration_item ''' +| It will create an instance role representing a configuration item. This keyword is available for the IS diagrams at EPBS Level. +|- +| ''' entity ''' +| It will create an instance role representing an entity. This keyword is available for the OES diagrams at Operational Level. +|- +| ''' role ''' +| It will create an instance role representing a role. This keyword is available for the OES diagrams at Operational Level. +|- +| ''' function ''' +| It will create an instance role representing a function. This keyword is available for the FS diagrams. +|- +| ''' activity ''' +| It will create an instance role representing an activity. This keyword is available for the OAS diagrams. +|} ====Examples==== -[[Image:Images/Keywords_Participants_Examples.png|center]] +[[Image:Images/Keywords_Participants_Examples.png]] ===Messages=== -The user can insert messages between participants assuming the fact that the exchange already exists between the selected source and target participant. - -* ''' sequence messages ''': it will add a sequence messages between the source and the target instance roles which shall already exist, otherwise a validation error is displayed. -** ''' source_ir" -> "target_ir" : "msg" ''' -** example: -::: "A 1" -> "A 2" : "exec" -* ''' activate execution ''': in Capella, we always activate an execution after each sequence message '''' -> ''''; each sequence message implies an activation -* ''' deactivate execution ''': the '''' deactivate '''' keyword is used to deactivate a message; if we have a simple sequence message which ends immediately, the deactivation keyword is not required; if we have a sequence messages that ends later, we shall add the '''' withExecution '''' keyword and it is mandatory to deactivate the message when needed. -** example: -::: "A 1" -> "A 2" ''' withExecution ''' : "exec" -::: "A 2" -> "A 3" -::: '''deactivate''' "A 2" -* ''' return branch ''': to mark that a message has a return, the '''withReturn''' keyword can be used; if the message does not return immediately and other events occur on its execution, then the '''withExecution''' keyword can be used in the same time with the '''withReturn''' keyword to mark that the current message is a complex message and has a return. -* ''' create messages ''': it will add a create message between the source and the target instance roles which shall already exist, otherwise a validation error is displayed. -** ''' "source_ir" ->+ "target_ir" : "msg" ''' -** example: -::: "A 1" ->+ "A 2" : "msg" -* ''' delete messages ''': it will add a delete messages between the source and the target instance roles which shall already exist, otherwise a validation error is displayed. -** ''' "source_ir" ->x "target_ir" : "msg" ''' -** example: -:::"A 1" ->x "A 2" : "msg" -* ''' arm timer ''': it will add an arm timer on the given timeline. -** ''' ->> "timeline" : "msg" ''' -** example: -::: ->> "A 1" : "arm_timer" +The user can insert messages between defined participants assuming the fact that the exchange already exists between the selected source and the target participant. The following elements and keywords can be used in the textual editor: + +{| border="1" +|- +| style="width:140px;" | ''' Element ''' +| style="width:220px;" | ''' Syntax ''' +| ''' Details ''' +| style="width:170px;" | ''' Examples ''' +|- +| ''' sequence message ''' +| "source" '''->''' "target" : "exchange" +| Insert a sequence messages between the source and the target instance roles already defined in the text editor. A '''sequence message''' can be declared with '''withExecution''' and '''withReturn''' keywords. +| "SA 2" '''->''' "SA 3" : "msg1" +|- +| ''' lost message ''' +| "source" '''->o''' : "exchange" +| Insert a lost sequence messages starting on the given source. +| "SA 2" '''->o''' : "msgLost" +|- +| ''' found message ''' +| '''o->''' "target" : "exchange" +| Insert a found sequence messages having the given target. This type of message can be use with the '''withExecution''' keyword. +| '''o->''' "SA 3" : "msgFound" +|- +| ''' arm timer ''' +| '''->>''' "timeline" : "message" +| Add an arm timer on the given timeline. This type of message can be use with the '''withExecution''' keyword. +| '''->>''' "SA 3" : "Arm Timer" +|- +| ''' create message ''' +| "source" '''->+''' "target" : "exchange" +| Insert a create messages between the source and the target instance roles already defined in the text editor. +| "SA 2" '''->+''' "SA 3" : "cmsg" +|- +| ''' delete message ''' +| "source" '''->x''' "target" : "exchange" +| Insert a delete messages between the source and the target instance roles already defined in the text editor. +| "SA 2" '''->x''' "SA 3" : "dmsg" +|- +| ''' activate execution ''' +| ''' withExecution ''' +| The '''withExecution''' keyword is used to mark that the execution of a message is not immediately ended. The execution will end where the '''deactivation''' message is found. The '''withExecution''' keyword can be used in the same time with the '''withReturn''' keyword. +| "SA 2" '''->''' "SA 3" '''withExecution''': "msg1" +|- +| ''' deactivate execution ''' +| ''' deactivate ''' "target" +| The '''deactivate''' keyword is used to mark where a message execution is ending. The '''deactivate''' keyword mandatory if we have a sequence message whose execution is not immediately ended. We must also add the '''withExecution''' keyword on the sequence message if the message requires deactivation. +| "SA 2" '''->''' "SA 3" '''withExecution''' : "msg1"
'''deactivate''' "SA 3" +|- +| ''' return branch ''' +| ''' withReturn ''' +| The '''withReturn''' keyword is used to mark that a message has a return. The '''withReturn''' keyword can be used in the same time with the '''withExecution''' keyword. +| "SA 2" '''->''' "SA 3" '''withReturn''' : "msg1" +|} + +==== Note ==== +In Capella, we always activate an execution immediately after each sequence message. In case of a simple message, whose execution ends immediately, the '''withExecution''' and '''deactivation''' keywords are not required. However if we type the '''withExecution''' keyword, we must specify the '''deactivation''' point, otherwise a validation error is displayed in the text editor. + ==== Examples ==== -[[Image:Images/IS_System_SeqMessages.png|center]] -
-
-[[Image:Images/IS_System_SeqMessages_FE.png|center]] -
+[[Image:Images/ES_FS_Logical_Messages.png]]
-[[Image:Images/OAS_OA_SeqMessages_Interaction.png|center]] -
-[[Image:Images/FS_WithReturn_WithExecution.png|center]] ===Combined Fragments=== -The user can define a combined fragment from the text using the syntax below: -* for '''ALT''': -::: '''alt''' condition A '''over''' timeline1, timeline2, { -::::[something] -:::} '''else''' condition B { -::::[something_else] -:::} '''else''' condition C { -::::[something_else] -:::} -* for the other combined fragments: '''PAR, LOOP, ASSERT, CONSIDER, CRITICAL, IGNORE, NEG, OPT, SEQ, STRICT, UNSET'''': -::: '''par''' condition A '''over''' timeline1, timeline2, { -::::[something] -:::} condition B { -::::[something_else] -:::} condition C { -::::[something_else] -:::} +The user can define a combined fragment in text using the syntax below: +{| border="1" +|- +| ''' Element ''' +| ''' Syntax ''' +| ''' Description ''' +|- +| ''' ALT ''' +| '''alt''' "condition A" '''over''' "timeline1", "timeline2", { +::[something] +} '''else''' "condition B" { +::[something_else] +} '''else''' "condition C" { +::[something_else] +} +| It will insert an ALT type of combined fragment over the given timelines. +|- +| ''' PAR ''' +| '''par''' "condition A" '''over''' "timeline1", "timeline2", { +::[something] +} "condition B" { +::[something_else] +} "condition C" { +::[something_else] +} +| It will insert a PAR type of combined fragment over the given timelines. +|- +| ''' OTHER ''' +| '''LOOP, ASSERT, CONSIDER, CRITICAL, IGNORE, NEG, OPT, SEQ, STRICT, UNSET'''' +| It will insert the given type of combined fragment over the given timelines. +|} -==== Examples ==== +==== Note ==== +* For the other combined fragments: '''LOOP, ASSERT, CONSIDER, CRITICAL, IGNORE, NEG, OPT, SEQ, STRICT, UNSET''' the syntax is similar to '''PAR''' +* The condition is optional. -[[Image:Images/ES_Combined_Fragments.png|center]] +==== Example ==== + +[[Image:Images/ES_Combined_Fragments.png]]
===State. Modes. Allocated Functions=== -The following syntax can be used in order to define state, modes and allocated functions in the textual mode: -* state -**'''on''' Timeline '''state''' State_name -* mode -**'''on''' Timeline '''mode''' Mode_name -* allocated functions -**'''on''' Timeline '''function''' Function_name +The use can insert states, modes and allocated functions in the textual editor using the syntax below: +{| border="1" +|- +| ''' Element ''' +| ''' Syntax ''' +| ''' Description ''' +|- +| ''' state ''' +| '''on''' "Timeline" '''state''' "State_name" +| It will insert a state on a given timeline. +|- +| ''' mode ''' +| '''on''' "Timeline" '''mode''' "Mode_name" +| It will insert a mode on a given timeline. +|- +| ''' function ''' +| '''on''' "Timeline" '''mode''' "Function_name" +| It will insert an allocated function on a given timeline. +|} -==== Examples ==== +==== Example ==== -[[Image:Images/ES_FS_States_Modes_AllocFunctions.png|center]] +[[Image:Images/ES_FS_States_Modes_AllocFunctions.png]]
+===References=== +The following syntax can be used in order to define references in the textual editor: +{| border="1" +|- +| ''' Element ''' +| ''' Syntax ''' +| ''' Description ''' +|- +| ''' reference ''' +| '''ref''' "ref_scenario" '''over''' "timeline1", "timeline2" +| It will insert a reference to a scenario over the given timelines. +|} + +==== Example ==== + +[[Image:Images/ES_References.png]] +
+ +== Features and limitations of the Textual Editor == + +===Consistency of the data=== +In order to maintain consistency between diagram and text, two buttons are available: +* ''' refresh button ''': on pressing the refresh button, the text editor is updated with the data from the diagram +* ''' save button ''': on pressing the save button, the diagram is updated with the content described by the textual scenario associated to the current diagram +[[Image:Images/IS_System_SyncButtons.png]] + +===Validation of the data=== +Textual validations are added in the editor, to prevent the user from doing invalid operations. + +{| border="1" +|- +| ''' Validation ''' +| ''' Description ''' +|- +| 'Represented part does not exist!' +| Checks that a represented part exists for the instance role used in the text editor. +|- +| 'Function does not exist!' +| Checks that the function exists. +|- +| ' can not be used in this diagram!' +| Check that the participant keyword can be used in the type of scenario diagram. can be any participant: actor, component, entity, function, activiy, role, configuration_item. Ex: actor cannot be used in the FS diagrams. +|- +| 'Duplicated participant!' +| Checks that only a timeline of the same instance role is used. +|- +| 'Timeline not defined in text editor!' +| Checks that the given timeline involved in message, state fragments, combined fragments is defined in the text editor as participant. +|- +| 'Exchange does not exist between and !' +| Checks that an exchange exists between the given source and target in a sequence message. +|- +| 'Exchange does not exist from !' +| Checks that an exchange exists starting on the given source in a lost message. +|- +| 'Exchange does not exist to !' +| Checks that an exchange exists to the given target in a lost found. +|- +| 'Exchange type can not be used, expected ' +| Checks that a type of exchange (Component Exchange or Functional Exchange) is used in a ES diagram. can be CE or FE, if one of them is used, then the user can only add a type of exchange. +|- +| 'Deactivation keyword expected for a withExecution message!' +| Checks that a withExecution message is closed by a deacitvation on the given target timeline. +|- +| 'Deactivation keyword not expected!' +| Checks that the activation keyword is put after a withExecution message and that the deactivated target is the one specified in the withExecution message. +|- +| 'Create or delete message can not be used in this diagram!' +| Checks that a create or a delete message are used only in the allowed diagrams. +|- +| 'Arm Timer can not be used in this diagram!' +| Checks that an arm timer message is used only in the allowed diagrams. +|- +| 'Lost message can not be used in this diagram!' +| Checks that a lost message is used only in the allowed diagrams. +|- +| 'Found message can not be used in this diagram!' +| Checks that a found message is used only in the allowed diagrams. +|- +| 'Invalid element! Source and target must be different!' +| Checks that the source and target involved in a sequence message are different. +|- +| 'Element can not be used at this point! A delete message was already defined on this timeline.' +| Checks that a delete message on the given timeline was not encountered before using it in the current point. Cannot use the timeline after a delete occured on the timeline. +|- +| 'Target can not be used in a create message at this point! Other operations were already defined on this timeline.' +| Checks that a create message is the first event occuring on a timeline. +|- +| 'This does not exist or is not available for ' +| Checks that a state, mode, allocated function, can be used on the given timeline. +|- +| 'Expected else keyword!' +| Checks that the 'else' keyword is present for the 'alt' combined fragment. +|- +| 'Unexpected keyword!' +| Shows an error if the keyword is not expected before expression of an operand in a combined fragment. Ex: 'else' keyword not expected for other that 'alt'. +|- +| 'Timelines covered by this must be a subset of the parent covered timelines' +| Checks that the covered timelines in an inner combined fragment is a subset of the covered timelines in the parent combined fragment. +|- +| 'Timeline not covered by this !' +| Checks that the timelines involved in a message that belongs to a combine fragment are covered by the combined fragment. +|- +| 'Duplicated timeline!' +| Checks that a timeline is not duplicated when using it over a reference. +|- +| 'Referenced scenario does not exist!' +| Checks that a referenced scenario exists. +|- +| 'Timelines covered by this reference must be a subset of the parent covered timelines' +| Checks that the timelines in a reference are a subset of the parent container covered timelines. +|} + +===Autocompletion=== + +The user can use '''Ctrl+Space''' to see suggestions of the allowed keywords in the editor or proposals of the elements that can be used. + +===Limitations=== + +Multiple lifelines of the same instance role is not enabled. \ No newline at end of file diff --git a/plugins/org.polarsys.capella.scenario.editor.doc/html/TextualEditor/Images/ES_Combined_Fragments.png b/plugins/org.polarsys.capella.scenario.editor.doc/html/TextualEditor/Images/ES_Combined_Fragments.png index 09019fd1d17cff8d7181ea8a7c070a95c3e09891..7a9248a15c312278ee2f2a003b6654ea4e0eed41 100644 GIT binary patch literal 31502 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 diff --git a/plugins/org.polarsys.capella.scenario.editor.doc/html/TextualEditor/Images/ES_FS_Logical_Messages.png b/plugins/org.polarsys.capella.scenario.editor.doc/html/TextualEditor/Images/ES_FS_Logical_Messages.png new file mode 100644 index 0000000000000000000000000000000000000000..2551de1055e1dd7a7055b1153e386e1b2f9e9936 GIT binary patch literal 73922 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 LR4MwyBJ}?N8L%ng literal 0 HcmV?d00001 diff --git a/plugins/org.polarsys.capella.scenario.editor.doc/html/TextualEditor/Images/ES_FS_States_Modes_AllocFunctions.png b/plugins/org.polarsys.capella.scenario.editor.doc/html/TextualEditor/Images/ES_FS_States_Modes_AllocFunctions.png index a61dee7b94fb3149e2599f0169faab5d9b5f319d..9d9776c49bb4833c1f80e695d7960c96e189f0fd 100644 GIT binary patch literal 43821 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 literal 33173 zcmeFZc{r5)`!_ym6;iT9MTKN9YqCs|EMv*OZ`rbE-zi%mWNGZAjAg8mbu8hQo$L%o z$Tk@3*oK+s8r6Mwf9}uccl^H3@%NxkRA9^m&B;`OIrJ zB@)I5uR_I*PX&AwKXtlu#Q3<-x2j1rys!{ni0SuLawnkG>y7r$b}#m4Bb2q=HT?Gv z{5Hotwp)tieRt9I?{9_u{Opc{7n|J#fzEI4_!D;KE`UILH@J?0yqJM6bI*%UfEFTv zFA2vRsX*_9fiK4A&OkuVQN%AI*ZwcR(D<;ikAOvu;Wz#3pt}7rbNmz{0R$XDiaeNpZmweZH%VXiDb*7G;yf2C$D(d$6WL=lJMn+jEll!#yEc-xC!R=#>s_l0v zM2D)=LyGUtiPE+lP@RDcWD25ncX z)w+)X%LOZ1{{5y(O_61o?CV^Sdy&m|>Q6LM30g&XLHo4axOA@vGnCQXyss@!pKa2j zyVHN3w#BDqI>CslFy2x`7F`SI>t{C(~BHw#pHRQKB>r8zSne<*J}aR$OZBe1N! zbdH;&Uh3)Q>s{c1%8U!Z<8W;ov(Pm|h_haMRNZoXHRdfrJ|{J&}Y2zu$EC zK070YU8TWRqm4D*tG3!FpQolh?@rYfa-QZCGC@K~NzD~?I?wK_?mHiK;;MH`2avU7 z5<88(hDLBjjp6Wh-qV%OQjSIL!Qm_G@oLmZfp|Rb3bKKkJyBL0KAdA|^{MCzJX11| zUA6jcVCW*##lYjapJP+9Vcl8vl(XpbR;ttd#>eW%{Ja{CJ3?YSym#z8>3pK? z-rU{+K)^Bu52V;{&|DU_j6wHDao2jAJp<_u*a9b2G+uOENL z8m&0RtO9A4tm{4B6wWH~)p*X*eQaX&BXS;|@X)f3%B*ndoppJ-$Z_*@c3=;8=UzV2 zW+?eiKERei)A??x$^X42HDRTxOzW}@0am|>h&QBC(60b8NW}Krz<7I+{?Eb2rwqIq z2q#ss$*Gd_vvFP;HfffF?`dd11-urRGbodMTKO}B=xhlHw74iPZ|&jtR)y*GR8c)w zCmd0$wMOlT;#jyJt!%2qoJ%a3AP#rAd_1pWcLo{!AxYKX^&`wsJY6J;A#ZZ>S$T_R zIQ)lmbv%sRi#`tx;qs3{hvK}#!3`C=AMhbyOtz$bGIm;P2jtlIk6 z3Y6;o!Wd@H5AAhUxp)Vet2D;dT*Lz zI8GmXQNIzPJ!$HHTcH-|mJLsG4g#F6EP!S3$;l6_thqn8FPIwQ^mvI7hN6qyw`JJO zOsM-?>Cr90kFr_D;)|X&#fX(fHF4aCZ4)y;?-US$cWcF+WE1A{1Oib4wMEoBnlqkf zq7u4nb!arTU9~YFaV~Gcx`XMIC>qb8x=9&Y1!feN?>&1}H{;f7#PQ*uWqR2vrzb84 zxWCBXtM&1?low9eET)ChJ063+XpKGCn}L^vhlDKytgD(zcf72j_E`%xY3&l<*-NY| zw+ix^UcKvi%Z^biTIRK{t`~z#W3&|4OM5>BWMd1bJiyQI{DctR4DEZME~NWj#ovYI?m2A`QS#NR-w& zjq>?lF6jo$!?4VYqOkvaQynVaR;YkxyaeQ(Tr9*IhKOW`VOWA^cuL`MZ;^d-kw zyIVUFTmD{;+i&d`=y^A7gSy}!;Y@^PI#)K)r|ZiE59gmbO9R<=>pCU`rlfID z>LGWyII?a%Q2MDBs35kSr~8LxJLP%~45Hk#KW%!SEG>|3iEorAYT5CXs^q^V{uoe*EbLFujq z`}LogMKPyH0r8vkZ7CsB;30?A_`GmwT+!n%_{8>-Gmr(A52l8-!IL`jXMe(#*hNk? z-oKE74qvv3N1%Qo9aiI=?_+hyjT>AUvHFpoi5T;OhTjmbVpfqt?cZ-_=RQgbx%3zS zW0f)pp1<@WkXXlu{S8&ZoEh3rKIva|I1j!3jy!Tte3fZwCvN;V(A&SrdGU9dQ~~tj zCIHWqYNQG&!?)Dz%eR~QH&}iB?JcorPBostw(4_bbLjl?U)4K!3V+@mTM@g`kA8w8*OYai?VAYPQ;Ew#uuso4;^`R# zPJU{<1UPMQ|9R)8JLwdSs=9Z}_@n}}o@-t@ZbDl7jNys>-MLapZF#b6O^c^rslT2z zy~dS6rzF)$(c&X?24Xce&`wT~M51d#9>luUX!WXUDxv3;2|IU+ZeoU{+I`N~FN%W< z?^4_mzOp$A^jE=Zocsb$&pr*la~}GYEc^PO(pZ~^{M-y6rNAHK&pIswi{ogO3Oc{O zV}D2U<-Ya<-jtAp%aMDw=b?R#>9;$6yKOM@k9Al<_Z^60h?D&k@Be?N-|gd15V<^^ zayTh`@%hPL^uS#&)E7^gu9-*D?{vj3TLk>15}pT}$XSfswItwq63_BWYLkFEkC~7r zAg0;Ys1MaV=43V=CcM7qdn`DSNHG93L>w(XNXKF*Q!(BY2`KZ& z@1b^M<*5?BNU?@}z1UM_?6SUj>a!WQuN2s5Pk&-KGDQ!`FB4V5J38-$utx2y&Rl># zzW%TF=wt|iLH#9Cii6Jn!-PZJTr@`9f?rr0sW|>&FdalO%lFV(OXh#~%l~N2g%kMY z9=vT!QLS6QqHyiuiUW8l zzf^*-*OQ!k@*f^{Kw8?laO!P``zGa0V-5n^j<7$Of{T25h>J?MOFGR-^i!TIKOOH_ z>mU3*Vw-h4wW}5WxQf|&2i!~rVI^_w1FL6S&9S44?N9!6c9P=l$SWdF-6Hd{3f0?4 z8*Hi=K!ZIh0czU`6H?Ia(*PT?w31)i9h1r8*(Sz&9{T0cPan7+at31hi+j2z6$JZu z0SW>+-`6I2bG@-|pc(LqTS*iUovzQB!;mwHYp(ScMpREyA+XywIYP zd)>!_MOSM!kv2sW6%LcIc*FhPzGgZjA4R6I3J2lUg9RDhnzaWyNxRFI;5@DMwI<3A z2LFxN^aO6u^R^4Wf~8vLNHTNf8(}ACJQ}z~ ziQSmcA)8?IX$F_lBW<+zX7cjg87!;oYd1Q|sb+ z*F)^Ek>~8&l3-DHObrf$VDjDSjW_Ze^*MEoew@3Dm`C*WEJIFBa2+XfW33OuD>w4y zgwvpgmVw7qurSJFMto4bwON-$S?tB;Ven&YuI zf95uO+9N~QtPBE@tu>r3LSU*PytP|d$@bL*JdV{P;Y>*yqxbU1(~KV9=74!(~py_X$ou4l+nH3!ofdf-+n{Fn45`Ba#BH|S^k<#rH& z!e&~cAbbMpObO@dK!4`J1&ixk5fR0o3|VfAt$jY84s`nt)r(p6d&%{8a&Nd(if_GP zky?C7$tczuHE;4nA7u7tN=yzW`b;0gUS9ov9#Q%uVz%PzgjmaT-|g0DX23b> zcTnDYP}10`eNldsDT zW&-d?cLmMQQGP6Pa@%c2_*tVQ-xIGx$etf%=G?dRznnmR9I${-2X}=SZn^X(>t{zm zHIv?}wHC_9X1@IpX^pKDC^tV%!tRaE%`U9R??=b<#iJ@zye8wfGG7)R98T7ktn>`= zq+~oosc`$B!0oIO5cN3G()#BY&O=Lp{QEPw*b!)W-lKhlTudB%VDsx+EwljtGi_DJ z<(;CM4PVm`7+boJ6K;Fuz?Z0mSi-KxH?tm~cxbJrStZmc7jyjce|WM_Jy840~vf zT(>MHd)g)S;U$b1yEq@^U2%1X zLcYg(*BHdPCcKskWFoKJL6CzO{>%}o?OR3{`4Wv;q|NxOzK}th$sUPudBTNHeW8H# zNZ^*YSH{x)_N_`gK<|Kh^fMR1mWv4cMGm!C&5LATOlMxF2e-dcQ^Z<6eJxYx*wi=S zK6%*8>$m<^%kW=rHocWj#n)zho6=yfj$=_aDOWnvTK7(`uWd|}Xw~2=lf{vbrrz7j zp6ktYUEL(lEr5JRe}m}Iag~z?bHeGk@p%@$M4#K#p|_#2=38bo0n6m|gt{FOqZ=Ch z0zAyuoFk~9EK-I*;sN8=qb9wUxJyex@92q=<5z|Vw=!<&Zp0*#0?8SsywP{KGg)ui z5?OyZRxc=Nf?@=6MXIQ~{PTlFWq)~9lCKwlY(cCEzwm-C9eB5aavL*&@ZQ0^WJIr( zIwX26e{8V_LX5MpaynXuac`E_-^z^w3eIxGT4sqAtudtdlX0y#yx4`qHfE($l!dWH@bP# zpK0PJTpAh%vdnscgYVMk7su~GfCBaXV+$kyb<@;TAYZ>Y&G<$+v;P|r9Qv#`4;%SU z_}Cij{&N|=wT%v5|C!5^#BzZE6dKM`{S=VEhAzeSKGN{bX(JqRSSj@$w!;X&AzZ%~ zv6u4M!g!(WUqD@4tPx>6fAukLzB&D-OhbiFiyTre;%V z^nviTwny^YxWOVna|x>A(Mw)H)cy@q&Y~lLY>wZXC#*9O)=@x~zz*rL#_B(7I7tK! z-(UPeCCAQZKox#zRWt_(W7VPu^Y0fdS}*K&^7jB~j5B7dGwV3J$v*@Yxad%~H@8$& zj|Yl}FK%p7!fR_GL+Yh{{h^y2*AoD?Fmc;X))^>Y0Mbf4OMfa0(`NSsqNsBEZ0-HS zLFm`21t2wge~*>{Qfw7aRpv|Xl*n1kJP*3F^;bUr0a26qQ{Vl;SyXf5*xYIG?u#J$ z6=LYQo<%PZ&0{K8zk`@OEaXybeS+O+lh!u+r*(eE#6NQ5pHO`2C$=U9eZ5S?b-(c7 zkHOZP$kkP_rBq5O0cSz-ya7lVpxO)2=Vn*L9cF4i%sGCz@t8Y};{LCR7>lWib_~5x z_h@}RB#Y$yuSrX|KY0dV;~xaJ z2X9QKRi!3*wwV~8d-a0YM^uose1~20e6lwRKq-I*CKjRx+U?{fq4Jq$AS3#(?f+~X zfb!Hx^;Y%*w7BZh#G6Dgt`t1>(Nv~GrR%TuNBcb$dn1()-G|G30B-H^SvF->O-P!`rU$eibk;y6~I@!P#CVz&+ogic}m*9H7;g_M&Q>o9}Ndcw@a>Q*lp$kx$wF zwuft5)oe)ZW**MEDAKUR(D^=j5YPx#(!3IRlP0v_ZAXD3HRS`m%9-1D=Mt-2?%Cr# z{@)KUq2{lOx5_W`kh1X@1ctz*jC@!3dX`#ZlDgTMl(hg?ymZ-w9YTCx|4Y~!=T*6@ z-C7E086-3n-6y9eKd4hT0p1bl1O2$a(U5uP|%>Se33e2TGMy z_^RL5!$WMm4lwZpVs@ZPsck4 zyCExk0{-N6AxFxt3jFnbj-b1fe0!636IqyPG5kjBZh)(Y{#?UC6a z`W`Z;GV`QtKWT|w7Qx-SirOU4?{_>G^bmmTF{0U60jS=xB6$lldHhcFWi{2*w5EzD~u`PTs79Gr8>U7`xp@Z+CXS{&9Qf2(0`IXw z>5)a4#^(=QIe#25(Ea;f$akw{fL@DM8<3TG*heeTM7(W`nnZDD{tf&R}tv^eg! zmL8HJd65)?cjp}#077YQTJsu_6CeiN8A#%Fu3XjngPDUxZEJpFur)7)h+I2bfi@(z z6Br3U{6GC_=GS)ww!=YY z)+XR=!q0+t)N2E^rJVOqn(4<&{|4SY;2kghd=Kce9_s=s9ayh%6<1 zNyTj&))Kxff!&h_6klR?$ES+&4J-Wi>}x-Z3m*n^8KK)J5Uh_4YJ3s-hy7YBV$b@G zTDN6&MP1Qxqw)%oz%2of`GtRpe3|UmKihDG+e*wcr#4u;{NreSm#!CwRK@|u{Js;r z!DFtkkm~@5-cZFF44DJ{_gbVV5ncc2#9v4Kn`Qq1T22;|nQqb5@ha!}lXUvU&N~kcl=GkO~@c8at&&g=!sF-i=&4Y+peoVF3PDLbByxCI; za0r0@|5Y3X1(K%Ylw!|--o~iZVG^&vuUcD37`Kb}pW~I&svSW}qb|Bb! zM5mgNULq!LoK~}GtIkG;(>nr6$q%i?8 zK52kg1;Sv2(QkLk#-VbmyvRpHmMq!8e|?hBw2I$J4h&TrrqNoho89h76c0{214%ez zVx=jq-OdQ~Y4?bcleeSKZ>CzkTyJY@d(dk>wKc)CKM@f@aC!m$SmqTByXwzk!(B5Y z<*(xH3fmvZE~>$;X?5WrFagp86$|9u;4+UYK5^}8I({qrG#()*t&QC6zlz_w>c7S0 zw{!JFFbr6bcQz#^=@ec9P2ABzBbm|eqH-6Hl;yvyp=Ic*@rFW^n-t=|-*9by8UJ;) zZbpjffSC>8Jq4_$QUFFx;!~4>tf2p;rpD@T%FL5C1={KRTW>3v?wPsK-(%)7xe)}@ zp)q0i2J*^crFD;>1Tu+Os!-z&+6nIHJLMEdE>GgSQg zt>)`$5rv4MWj>cj+Kms-KuS3pRks1Epzq^MJ7=JAu{DiJ8_u!PI_#WujAhMdwYhZT z>IiYXOX;VLT%(el27gOAbV-lCD;9tG-)xP}VbX82nDE4d-oh=9sWx`}34hdOXbrEw zwKIC7F{Z_jbM`G){UIcqbqO%y-V8uR%@1RQ5#*^CptmnH_T`5a$B6^s)6S3HiGEUF`d!K0-?A+ktVwsU*eFnD zwt~PyS47>e`0naiSY}WHWseVE>Kg=`MSs=m@f-L**|GUBrB$qu!y z*fLyUrI-7gi%>2$E?>+XW!;CfBB*$=5 z#${~yx8Q>n*_s?KSR`BC+vOAeYox8apO6oK%oG&vZ}iz2?N0}f@lji$k-Gd~+ zc=bQ|B2KiLMjeRDSy=)3;5<~5T~2=W04=e(wHK8#DgF^4d{AyptW$r$Y`zt{v{lWw zr|q>?1+kL9{4pCz^!GYghw#=POe-6B9nRa6H8%O6KR58MR9ero@zm{RiPmjxQTji1 zqkujDQk99-+n8c%KNxdvliV5f7)_{v^?UsGV#;RvP91fh4#c8g*$yAg4oJW{Z}eC} z{m!H2s13)DYyTGe&PM%)eT&VKfdM1=kEwyYLmhVL_~h=F?W^h4PjTCMJChzu@vG-b z9u~TeY1R1vC1lKfx$@bVw70{(wbszpjo?0FQoGJopdO>$_^DX=_rn-BWsVMGKuF}O z%&>02Q6%;GVisJ6ZkAy*()Ob1IbSR@`bDYupi>IP<|LJ#1<tdM}ubhZUZo9g*nub@X|8-4^ zG$#?0FPj1Sc8PPjK+{1UdSs`Mp?>&wPIo2=pFIt&MJ`7mOewD%sGb)Z`e=X8rA6@c zb_ZLZ)mpWl!`_$-VQMeE?x}>(sUH?gP)*EuO{?^ny+8acV~IHSwy9AGtUkvvR{6kj z-T?{^y;kZQ-EGg_Q#Zl+J`U@WnaG;$?3jY4XB)en_(gV zsZ<~F&Fpwz3vbP1dB)}1#m`0(yY9+_wU>bHpnEBosE^dp(Egv0`6sk61ZWpL5B|DS zX3ZABoj1AHJL58>((Ak`&MDFPqx+Oss~(l~W784bsgsV?E1X8qm1vhw&Xa~jZs)3m z+m@(us?XFGWRBTH;71VT_|8unlZ3?Wl)6RL?W79JdYU|f@9zndvYEemv#dfWV-kMz z2h(t4Op@x!;#OgGq1sBDd_T*!QN}}BccHR1B)Rkj=#5JG%RdH@H*~=Mvv2)<4*rN| z^7!^e&%SP%UrX-h-UvV$`4g7>+m45_#;Cd(_@}ba=C0QTR_|e?ylC#xNej=A?Tl}J zp7hyVx5Vqjq>Z{L1OSkxu}^*$KmCTzfQ4RgJ}uw?|so{gJVmD0P+n6r?-3cigZ+pXM|^gT<` z+m!ewW-1F8-|a}=DxIe$a_9FO#dj8VP_6`D!fq{_*^3hGS|2Bs0HA`m-V9+SAn2^a z}FSmCd_O2q5G)uf|S*$J)n6Z=fFBuPnfa?Z&iGFd-|Ww2nd z3G`2ZcXVtUW)3hy*~;lc%EkDPOEf{J#Sm#PcNoJh1VOo9mDq^!(DV0r_*3tu|lJF;HtX3-jiJC776f?g7lq ze|XvhN(qsH%!z=Ej}{lv=Hp6Cd8kVATnBv#+WEM__!vlAxg&^`f9uZfvCsOhq!5c7 z<6;mfzW`;@M(#`Q2fA%a))Yg}afu5AS^|#W@JTTRGJ!hvyn*jd2A%{Ncdd5;415K& z*z6Q(2r20E{?b)w5dA6oGslbzcP)sg1%TyELL^T;041>cSrT7>g#3CT9XLpmAQ@mn z0xB*CBn3SmMN>h8Q&3nDrOa^$k=RHxQ%gs$O2U?Ut4{w6*r(V6er3M0(WY$0Gt0~TeWT9J6fS%L5 zzR-M)1a#k?Hi(t@V2w2|J=n#J1ayr*=5^m;D}0b}G4YMX>u=uQ;?SM+Mz<&*tg&)5 z#AJ~&*sPVv$we_?Ab@1{j(Xf>Nz3KBjIh|~LJqDw8!FU;hRXO&=Sf_z6~}1Isk2G8 zBPDWesj@26G}IM?F$JXdd9y0S{X%oI(>yWXbNkgxSShFlM!z-7N~)-P11qjG;D8lr zC?RgZ{?%*K{I=PY#dr8Q)?+NrGT4vY;3D2+ToY1rv$6mxNmK>epy%M55q@tkT`e?T zK<(?Z0FFrYa z(-7>1$?ij-ks~9;QFhX7@`8%lk8jYwx^4Rb*U{z|>q zO5ur~xS@O414y>vK`>7nIKBQm;f(xEB>nhC7Pxwc%ad{ctE6bt3D=&N(>D2bV>nE1 z7cS8$n3lKgfwH%5Qn&nu_rt~w(hxq8ZQOZtE_!ThKeALrcWisJ^(npQx zhAv+jwW>Cw9>CqMz8ok_`|*#_mp$Se-_*yJhtDE9M9Bx7wo&n0YlLxSCBklY{Q&ES zBwt(3dnz0fhfF(i-z%9DM#>l`_fB74t!GOZsR}Em)+s|~mb&9j?YtgG=+z-L2j!`v zgDzgDOv)O7B(XoOWX;plo-Wso?-P~uDu+hj@Cb)1F$V*_tpK=g@N{`nF8!ot$A_D{ z7Ht!baHjO-X+(Z#;qHpxn>s`;?i}hpy#J%1)l*07J}kOP!7a7UC`U%pd-W@(Z{H;A zfd^IZlbqtMx!ji+Ss&_yHZrg`9%h7&@dIBXWSYHCZ7A5?a>#3SyhW6|9!)8X@^`rX z(Rm^-v8ntp@qMaQ7NeVXC4Vi54UX{bC zi{@bpls7eLma@zSF>36-A#S?2S)omS55?zOOHi*HBF7QMrHW>GN{&d z-|#VOlx*)jmHGZpugV+LbyGX6(}}TP2q3E%`GDEX^awMmcjQ)MdPST-=n?Bb>wiat&pk5MrF1 zz|1vnuwCk{Jb1e1kj(wAcblOe*f-NBd~&aRwVFq9&M)lbETaX+{xwE}PmwUZ*}mz3jryDjT=MC`Yo%Q6@y7J zF@@zd-x=9v*Lg30>r#V?hhvZ9?k05QeM_i#`CcNl=7UOYW*Xc{$y40Y(QQF1k6)!d z(Z1)Z!_>HDsWO&&!hl*iwMS2J>+}=<_lCNA&~C-KI&;aztGAd*DhA<($O$AgR+>9Q zHx=oGfTCd|FIH?ledtEH9mB?~EkyY13d+Cj?yw0l>Q41p59_*hFOb9=7Nw0WxkEFL z$G8BGon7NS>A)q_oHo+Dm_1xj{^8!#;37KJ!dj_x5ubvAY!sqrs%jrCb5GfGGYWHG zPe8%8TH+0^v!<4<6fM!z^o~h4Ks(g>l|7j=EB4Olm{bV(ef}~rOJUXPq=fuNO`$nlGM^W3 zW@WUyAMIqi?03dZ)>nR0j(SL0xqf51qi8Xva7>~c@M_Ul)$jT1cPDJjuT^FHc=enX z#vAwSEaydGJcqxWUUfHe%C6bn*l|m(U7t5{wUEFeWx60mwY!6q-pa03d9m~<8d|V9 z$3#!F<0%>yT64F2}DaT(`FccH#viRb5LJr4}V%sT? z&DQlMyRvgIz?seeznuAdd6HMn^lx4|u1N-jm5qm64UtS);6}Q?TySKHMFj@cKZw)>!;CcSp)7zit+~OIG zn(9 z)%2?_nPyYb<~>}dVyf30s=B^7S-VXsEa6k+xnDcMcmG6p-S*gEN@KU} z9O1Lc=GK_BHXlFas-{Vse~~7Sq{SLk6PmPVfT+K$ptZE$BtDs!RjG&JZl8c75r&>C zs2dWwEsB>P=NTXLn?1RmtOdpek6AZSyg-k-$cW=Y+EBNr$Z{!gO)|y;yWj z&N)}L?!|9Ci*+okPRfaBpQu_^H@pzfpRPK{rz(5WAz$!C>FkDjdO2QZ;Ugl2k`sn{ zN_%V8(C#karb}{3ZU#|yIhsgKjA0+57o%*SH#%6hyoYAhVW=2%0m_h78Pw!KJR?^? zC>)B;x_4D~Dtc%nR)FVO6&6}{munH<8tH~{*(<`SW|}&=r|1FZWBTqhSMuHT?wA2q zb079(t`(sW?6B_kX486;Dohopbnk=xL^!t$dHMIDCR6)YvuS(@YA5lqD`n6sQ>Y5}+_ZmtF1 zhP4pd8=KVOF~aS=OM*EZ^PlZe#ozdc(3W7r?4nUkA>_+x+z3>G{1n)rH&HqLP3wBJ zcUS*vZhF)RPTU~`j^Xut*x1bln_O1!J(t07P77PzaR=FR1{pa*!Vpl zoRBWHZX*r5F$TI>dyVfGX}}==dav?nyzRMM z3fg^_LS-N@P;BMl{c7W9QSUj1PRz0Tt93+uwRGQ8POg5aVF($m__R_zTb=={EU=IX zd(R(L$WwC5p@)v?F^Xq%fk5lvNO^lckQ%}XHqcp*y~SmpmzcC}C%CDK9T3NhGU=8v z7i6$m8GdtG;WvS! z9dyIq?iiGT*8@V0Co>o*tvvyGnq{K0v2@JK9lOyIV z_=M+HqK(W6_v(XTUpeJ<4l#VkMx+!WjthS8xs6PIjk+O8$SNOA9c=Ny&hUW>{P@S? zb`>SHDVWh4qM3#tZ{FtJOGa;>GH{P4e9C|fq< zbQDzN7n;bqD`1||i46ky&+SP(jcr6y0a|o`-TE}6V77P@c2uvf*FV0Keu*#hAa%Nq z!KhK0sisKZyMKFF-rr}GrhIkCpnQVAJV4kh?@W1(7rK1Cae~I+frw>(k^BB*!Cp_u zu)(nJW!-kn4R_&oQ$4qkZxL)5=P_9dMvLT`6~qQHO_RCB`&u<9zhBZ2E+{nbS<3F- zQ{`&uz9L$TSb6VNd(dvfTffg~z;|P`rTqOx*mQq-C1yDy%4g8Kdc6VHp1tGyhZv7j zaFSxzTA{e|0=*JO#CvAhm#wQ4;~m~|+0tldLd##{;9Jx1@_~hjs#~I@XWldUE{BR0 z8>Tq6b!kC|LEvn6Vc0Y4yn+5KiZuwO_mioIMTVZ-0P^n;m*_B+dSv8~#&>+gu_3J# z^U$;1POw(li~OQ0(Lx%^wNYP9iLP7y5OCeefxle0vS99tm7+;5V4jw7%^9FgP;tmh zjE85V)+e!F&qfJYUdKba*m_l$xbxJsop3irzg0!Ka*LmUt2)yf1tp5o<5SS}`x*p; zL6><0Y;f{u7&ob51h?eMA5QNlO35IrCq}QAFQp{FbHPG{o%ghm0+He9^}A7_o+oQ1eidc>zGo-QA?@VCOgJ=JU{ zXg*Xi*a^X?IdfGx^W6Ki)oWtz;v%MtGa=yQT;mhbB|*bdCmRtye(_)=3K zq+sVpIVsAeXaH~<@k#v?2%A>u^}Ii9(y(M6SKoHg%c`8XfSykMn1PZkIr0 zU&`FDc}DendBUjoszpXGDTIy7Ucz$2iyx{i0$Jwg@68{Aka19LubIp1%LtsK3)+|(*l=0j4IyZ1%aqL zKLbAu9TBIUpC6kVo&sGXBa(LhdvwGfB!zLdHq;qs!m;bm_geN`dIoHv-s>Bx=Uuwuf_i6urpCeMz z!Z_y+?{UzZlf>Hz|8=`uM2r32XC^wgafhrR%%n;U{)HZ+T2JHNq1N!{*2^^>{v@){ zU-Fo|EjBBJk(o%WRcSS05NG!bP~V%idayJR{>`;((!sjO_(pyP^wk(PAZzynMh7M3%DgG<_)zQM0Ew_(>m=guKnvDh>TA_(~rJ{Iehrc3%~8sonWN+xQ!>Nr(t48DB&G+ISiTc;AtX`%KAc^)|y0nn)LS;O|OAo-NNPkeXmYOf7= z`dhVd&yqLn8YXM1@f7$5-FDVUZ?%sW{n%G>I5%4@$=N{~gp`}~jKof`cLfB{-p;&{ ziwnS%n+CHgkG4Tm%PuT-A#ox&{G8wI>SMFZ>ji4M^9u)VqJe&>ZGjP*Fa@4$%@3-3 zS=)|qeBBxTSYhR2`Z?!IievTns{-csx~v0cg=?B7vYbx&iypHjIdX5#tYk;!u`fIw zizgVAH(NLK%e8Fu@7HEKTDam^vjbmunQ;4gV6Y(<=#Un*$QZK>1Jm zimAOPRu_;6kufQ^l~WyqiEq_yc!#ayFKt%@*Ev-1FRa-3GbBFdF4mV6=?I{_QpcTT zqT8? zE1V&%w7qTrxvst{IcNW-jEMJE^Mj=;sgw4WUwg*VP9Yvdw_$y?>ex$!uVQzk6B27Y z1G;XfH$6q-Pqxzt^f+i<>bT6wRkp3xPT z+)fUp1lx1DA11z&Z8vyfz$+!dw-!aWYw2U=c@D7C8Nd zI1aiu7FV1(D$$!*RU1!+o2s@xr#!-|<*>s>fprs?!u2m~z(cK5XH9poIZj&D#~Vg(v1IahJ$y4XS;?NscAPldXAowGMg4YWjHJJra}}(TBq> zU9CQFYSOdBf)(N>-apAYIc79=V9a@gsVDtAcxi*a-CZ4WqFC;z926!vkBQrfy6VV_ ze86qDZd@rhvRY-s>A4ci=uUOEt6T_CY$e8ut_2CC0d>`61n?Z-_Wj+plVGfj*N2-0I)h=H4crVgA z6jYq_u~GGYSO2yydr9l#bPbI7>0d(su>JwZo2USWkmee|evu?r@HJi(yp`S73^XNj&rNPP`ga5qW%Is6d`WHiBBjG0g zLuJXO;#nGX&7RUX6D>`IYi9iX%iHB0D66sC*(XI6@5bhJJ!2E%v~+KYx#M3+{CI3NwC@VDFPq+fnG4%(-`%T-`K?pHXpk_8|Cx~*bIfAJj4 z@m0H!``6fy%DdK$`NBl%#pxSbJyUX%WxThvRM{t|Yi`7Lmac82dRy;TA-tH&9oJWi zeAA3MQ-(!X3IkFt?xyGXv?X2!X$s!g=HNp6(>c)zY0A(o0ceq&ttrX&HocQWvN&J+ zxnsrTKR2*-HNS)2%d^gv{^oMXxk>IwM4g+^cyziw+3bA3ss(iIK+L&>nTXO0;W=#KM zJ7*wLP9dZX;)0+{6Zyo!@};BKi}D1|Lg-JB1BWC5k^dVoQ81&);9>5c0ZVP^9(T27Jf{esSZ@fvoPZl06?ZqN*vv?+4B*Rpk|{ifZ9ljkDFh5bQW}9 zi3q(KZUcYT(dhvo8hJ=G3Fu9%ASHxt6^U3+3m57Zb?Z}DK(7r&L~tYa>&QS~iO(Xm zwuv?MwHfFMl`{${gFsSK?c*lMx2Jp%C3Jk=#|!sO3u9wsPJ{b zm^J8m3KwvGG?T@AIxJqJy%-=`I37gHN%*ZuWYAs=Vile6hg^c9S2^ZX9LR583KCxL_{j24mBw7%hPP;(aH2CT zoOu1AL5&WqcMLT1?PxoJKBZ<~z|PrUnOw)mUTTP#wDkz#-={dqba4>wuEGl@UccH- zGY?&-1bt~d+Afp=66Wr&6jD1>{GAdi@2t(&l))&^EM+VR7g+@!-MK_^%$RHZf3^1I z@ldvX`y*@F${txt62_7>gp?(XCHsW2XWtD%sBAZqsK&0c8`+n^7;BO+cb2h_oeUaf z-~F!9{XEb8yuau7zP~@-e|^Svo!5Dt*Y`NT$8mhWrwKV|-X7SP8lgbluM8RVJC5#% z?_CF+UEN1oG5hD8sH8%8D=xXRGd!Ca!^lx_P?A}*{QjrWa-)|9wXrr`Tr7F9GlCf$ zhtR+f8nC8L85_g13f9Ou?-=0SY9dv>GJx9WP9J`Q4${F_r)qiT=`(M0dSFe|M*-#mn$wy6AC?a@ zY3WP6U;*A6X`3HzlM4dPM*t(^pgUcO5qUzFMtl|z+a0l&lsDFDGXg(rEBeA$Qo~UC zLncz*hH7$*AVkaWh3d?=FaF81euZ*l!cdQ2vV;DfX26!VP&gGA@Hu^;lQ38!8sUh{ z4*fTKVzG*{->eMoA2y|+1h_i#U*0WSDh!mRtMY`hi}fBQy*2GR;E`PH7Jt@XVr#XcoqO)`O6cJZf;6kthj$xo36r>f}> zPQnT{KQWv4vKX5uti%9MpaRvFe>{SH@WL@s@uff3u(Nh4c@X_kz1!-r)F)`pywUh3 zZ%M~q1v<#(o>vsk(f@7x(-+hWnAu=0gByokPONlkK$7%2RSew0r2bX`DcPQ)buAcW zw6~ls`dvQYlKc7%-~Bx5v5xMYZn{5P^Y62MDEuV~)VF22w|RH3?etntGoYf2sfiiJ zADI@uU4eh>_q^eZ%+L`i)H!-~9`w-cQLdL~VNnuMVRyar7B0kZjvg#pr^HSube#eR zZor%BhprSI*!GoQHFrwRnacY@Y`2J_P*d-4UB z#Qh%pimF%_aJ<|ts&c8sPu@nTL935(MC-;hj#^5lWtTrzPPdN#wdHdwS#Zbel%Jil zAdXM5D&gmkIV`{Jr5A)kT^hgV1qaI%G$@&_72+e4JqZE6C2{t|xT4Vvn>%IQ=J~t` zB)xxrFf9rgP;{1cI{M=k;U-HE2d_=hE@@=iR(NrUgG+RrOCB5$1`8~thlVb#G4;4I}JE+QLE#AG6WvR+PiN zk}r-UpOu&QtcN$+Pu5sBR*RTjLd1qzeZFcwX?^j<#STNIbVY2JM9wt@mBA0+y&VD9 zSIS6>jnGnjZ*xq;buf+?nCellt>$ol#oWlRK5+O>(Apbf9A%ZW%XJ}?Dx>xft0>@Vmvkd;R&T?&>FC9xD$ZYAJ*2uu2l{2}2h%NqVE6=T-$|{Z&STi<; zd6w2_EjK|W(jUpKJ5|vCu+gd;w-#&|zxeT9ff}q;6By1tUK=5K$xyXUDbPJDAWj9< ziBo}AfHJW2zG&=T1w9BV9+CHw^hejrq$=rql>8lcCfLcJ%KQt@|Hps~d`{LJLLiWQ zmkKylCHVV^I_-|vNo(ZM2pheO>zGxwBv`%6+MFTL_S>k0p z)<$eTOxQkHXt{jgBHo+ssZuhy9Q2QgneD_>Z;?W_F1Kn})%|;+%+{Bh}t|NTKF!w6@%O{W#yoAW90F zsMvhaYHo5tQ~FH##cQ+>F~y%FiGPNMzz?Cn_!>`4u@0XF*PJgRg79E4b&~bG7y2=- zS^U0g5FN*&U=^A5kq$57aM_m&YySAVxlg`A$WC789}?NS>_-YxkFD-%MO^2t^F`*3 z7N}SD=Onxo*%!T*`lhPrx&ecINP7}2-z>ELw&$QCDcrs}`a!2@;P?iPDsX1i8N3xo z^$5f<0k;vlL>X7e9F=V#fsswWh>QJWL9MJQwl#nG3BKY!g`TTXr;foHP$v?Fd(PXw z!i3l~y}cOUk>ODL5;fC^s>UZ3mlej1VCsdlN1n`5yp83((`apHXd?0^`J8Zlv_NV+ z8GFmMG+FSTG2N}1gqZYqY1aqz@SrSM1r!SPS8wFhJY zJ#qiA<4vvcuD$+M0Z_VYcKLiR_eJZr$8*P%?jhMRdT}S2S2mtpzQ|>Nt2{5*9mlU2 zf?=&MFy15(nR451Q-Z3by`blaZ`|d}XoTb141jx=cjU3FnDv}R!vxV;W@!bOPen4xy|X3Ec-@xuajrd(>ZTN&Y?#4&c4hyHsWMr z0ckr|l0weZHyf?el-}f9!VM{%fOWQVSJq<1oYS+*j}bz@v-pDVEQ{Wjn@6s`jm9-Z zpoU|DbuAy|);UO<$9$hH*I0X!7phekPWo654q93@fhD#Y>}Tvr_EhVyJ?hfelRhA4 zN&71yg2Uf$>zyM5F#+8PNNJJnc^jW!j#BcEJ%J^ zc`X?*K_#(ip_IL6V*yA0;_DsV+X@ZcjIx4%HU>jh^uN47ejN*-jt ziITd6&1hNlAnkU8ERKS;w2*etBm;L&dPu8UkyxP6b|V{Zpsym7RL*f>~68Nt|6))lcIdXdeIO35$_!acE)1+SJn{(w{URd zn6+cjq430%t{j+heBu$S{;w^KRH}0WZUgVFerjxZ>H13SS}7S@-KrH&2oS?`*^MTpxhmXrVd33eW6@=C|6Wrhgthv&}-Zo z+fHhR;?Sm0N(;QQuXu9$+$U?BuKFtpf~ooLUZ??>e#o)y{c&N=I&`Vxj^^U?9=og| z&)lJbME2r0?Ed%~H7}&{osx$?ZcO6^e+=#GcmEIr6{P~0;;i|(R${WQx#r zWW{3fso$kJDuNTWGbF0YMljre5P@(AbY2yAzGlmC4Q1m zq)=_-Glx6M52$%<6k4RkYmfOZTr!Ez>d$y_&O4(bvQQR z6;i;nuWa-hY*M9O_(UG^!Qu^k|;Y8 zL-eN->6ceE{n>Yo213MZpXfRja1|{m8LEgIcWR^~h5`aiYr=B#GPapuz>DhyUYx`! z3F0biu$$Zg9Ex&^Dj$dMdB5LY+XsQBNn9LNl^B2Io{jK#b~6yDkW_F&)&Bp%&ixH^ zwAm3oR!tixg^>rH_~jGf#C?d@k1(>F-GQ+!l;*I^9~CO<^PZI3dn|pZk>;B3M?#;e z9M0wm)RMJioPy1053qZlaPo#HhslQmoCpfM>pDwaYvL(CrNuc1n@#v71fUJa+;Qug zfU^3$Xx#A?^dtUvc+ic>EQ(io1kYlfu5qSj)Fp(aezKwkJ~hOgvn;saLd|6^egAyC zgX5ZL-yeM_FGE(Ria;CZKJ~^;Nv2REtAP?zYJXb#(`? zQ7l#U&N?qpf@Jp2%i}Jz^kX3eu@DwJ|0);zBFgYz4FR0qUgVRUFB>D%k++KpZ3Zwe z7|$zHT+#S1GpmpAY@W%6N2bv)uh@?0_0=$|)Vp?no)xX#i8Xpl{#LPKQoc6q639vJ zmwQbI6(-8OyZkC7Yul0|{w9*ulU{SO{}+?`WSfq0PrpNyKnRX!ttz7mn-LvX$i;(i z!o(Qujh5MqI%IjIR}Dp#=k8{{AMesI1PCqm&CyykQE#-N_N%0&zoA^I`t>A=FW$CTKB4lPmk%dM>+bSCrIwa}jk

% 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 literal 0 HcmV?d00001 diff --git a/plugins/org.polarsys.capella.scenario.editor.doc/html/TextualEditor/Images/FS_WithReturn_WithExecution.png b/plugins/org.polarsys.capella.scenario.editor.doc/html/TextualEditor/Images/FS_WithReturn_WithExecution.png deleted file mode 100644 index 640d4708b5a12c55f0993218b7c43cd54105a9e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36888 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 diff --git a/plugins/org.polarsys.capella.scenario.editor.doc/html/TextualEditor/Images/IS_System_SeqMessages.png b/plugins/org.polarsys.capella.scenario.editor.doc/html/TextualEditor/Images/IS_System_SeqMessages.png index c8d9bfbead2fb17456b2391c0484669e1a8a202a..1b3d6eb1b6fe5ce331f47b89b86c0e9d2639ba53 100644 GIT binary patch literal 27778 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 literal 27356 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 diff --git a/plugins/org.polarsys.capella.scenario.editor.doc/html/TextualEditor/Images/IS_System_SeqMessages_FE.png b/plugins/org.polarsys.capella.scenario.editor.doc/html/TextualEditor/Images/IS_System_SeqMessages_FE.png deleted file mode 100644 index 6f770491daa09ba8290129a4a5089954162c2efc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21105 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

5d9)0Vpx$0n-QNr|#wg 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 QwAa(o($_@%^(gZH00HT+vj6}9 literal 20999 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 diff --git a/plugins/org.polarsys.capella.scenario.editor.doc/html/TextualEditor/Images/OAS_OA_SeqMessages_Interaction.png b/plugins/org.polarsys.capella.scenario.editor.doc/html/TextualEditor/Images/OAS_OA_SeqMessages_Interaction.png index 24a4d34030a6587f818ecc94fd73dc21eff52d50..f83050abfa53eb226fcab84dd701331197c17c7f 100644 GIT binary patch literal 33044 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 G0{;t43DM*L literal 22115 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 diff --git a/plugins/org.polarsys.capella.scenario.editor.doc/html/TextualEditor/Images/View_TextualEditor.png b/plugins/org.polarsys.capella.scenario.editor.doc/html/TextualEditor/Images/View_TextualEditor.png new file mode 100644 index 0000000000000000000000000000000000000000..83b86598009eeb0398f5cb9df57759b0a9cd1766 GIT binary patch literal 28798 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 dZlCIwwwvBi3_IYU), timelinesToPropose) for (String timelineToPropose : timelinesToPropose.keySet) { if (timelinesToPropose.get(timelineToPropose) >= 1) { @@ -269,8 +259,8 @@ class TextualScenarioProposalProvider extends AbstractTextualScenarioProposalPro } } - def createTimelinesHashMapToProposeForDeactivation(ParticipantDeactivation participantDeactivation, EObject modelContainer, HashMap timelinesToPropose) { - var elements = TextualScenarioHelper.getElements(modelContainer) + def createTimelinesHashMapToProposeForDeactivation(ParticipantDeactivation participantDeactivation, + List elements, HashMap timelinesToPropose) { for (var i = 0; i < elements.size; i++) { if (elements.get(i).equals(participantDeactivation)) { for (var j = 0; j <= i; j++) { @@ -278,13 +268,6 @@ class TextualScenarioProposalProvider extends AbstractTextualScenarioProposalPro } return timelinesToPropose } - if (elements.get(i) instanceof CombinedFragment) { - createTimelinesHashMapToProposeForDeactivation(participantDeactivation, elements.get(i) as CombinedFragment, timelinesToPropose) - } - - if (elements.get(i) instanceof Operand) { - createTimelinesHashMapToProposeForDeactivation(participantDeactivation, elements.get(i) as Operand, timelinesToPropose) - } } return timelinesToPropose } @@ -296,12 +279,21 @@ class TextualScenarioProposalProvider extends AbstractTextualScenarioProposalPro if (element instanceof ArmTimerMessage) { updateHashMapWithArmTimerMessage(timelinesToPropose, element as ArmTimerMessage) } + + if (element instanceof FoundMessage) { + updateHashMapWithFoundMessage(timelinesToPropose, element as FoundMessage) + } if (element instanceof ParticipantDeactivation) { updateHashMapWithParticipantDeactivation(timelinesToPropose, element as ParticipantDeactivation) } } + /* + * Update HashMap with the target of Sequence Message + * If the hashMap already contains the target (as key), increment with 1 the actual value + * If the hashMap doesn't contain the target, add the target as key and set its value to 1 + */ def updateHashMapWithSequenceMessage(HashMap timelinesToPropose, SequenceMessage sequenceMessage) { if (sequenceMessage.execution !== null) { if (timelinesToPropose.containsKey(sequenceMessage.target)) { @@ -313,6 +305,11 @@ class TextualScenarioProposalProvider extends AbstractTextualScenarioProposalPro } } + /* + * Update HashMap with the participant of ArmTimer Message + * If the hashMap already contains the participant (as key), increment with 1 the actual value + * If the hashMap doesn't contain the participant, add the participant as key and set its value to 1 + */ def updateHashMapWithArmTimerMessage(HashMap timelinesToPropose, ArmTimerMessage armTimer) { if (armTimer.execution !== null) { if (timelinesToPropose.containsKey(armTimer.participant)) { @@ -324,6 +321,26 @@ class TextualScenarioProposalProvider extends AbstractTextualScenarioProposalPro } } + /* + * Update HashMap with the target of Found Message + * If the hashMap already contains the target (as key), increment with 1 the actual value + * If the hashMap doesn't contain the target, add the target as key and set its value to 1 + */ + def updateHashMapWithFoundMessage(HashMap timelinesToPropose, FoundMessage foundMessage) { + if (foundMessage.execution !== null) { + if (timelinesToPropose.containsKey(foundMessage.target)) { + var value = timelinesToPropose.get(foundMessage.target) + value = (value as Integer) + 1 + } else { + timelinesToPropose.put(foundMessage.target, 1) + } + } + } + + /* + * Update HashMap with the deactivation + * Decrement with 1 the actual value of the deactivation name (timeline) + */ def updateHashMapWithParticipantDeactivation(HashMap timelinesToPropose, ParticipantDeactivation participantDeactivation) { if (timelinesToPropose.containsKey(participantDeactivation.name)) { var value = timelinesToPropose.get(participantDeactivation.name) @@ -389,12 +406,10 @@ class TextualScenarioProposalProvider extends AbstractTextualScenarioProposalPro override completeStateFragment_Timeline(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { - var keywords = #[DslConstants.ACTOR, DslConstants.ACTIVITY, DslConstants.FUNCTION, DslConstants.ROLE, - DslConstants.ENTITY, DslConstants.ROLE, DslConstants.COMPONENT, DslConstants.CONFIGURATION_ITEM] - for (String keyword : keywords) { - if (EmbeddedEditorInstanceHelper.checkValidKeyword(keyword)) { - getExistingTimelines(keyword, context, acceptor) - } + for (EObject el : TextualScenarioHelper.participantsDefinedBefore(context.rootModel as Model)) { + acceptor.accept( + createCompletionProposal("\"" + (el as Participant).name + "\"", (el as Participant).name, null, + context)) } } @@ -417,7 +432,7 @@ class TextualScenarioProposalProvider extends AbstractTextualScenarioProposalPro for (String stateFragment : EmbeddedEditorInstanceHelper.getAvailableStateFragments( (model as StateFragment).keyword, (model as StateFragment).timeline)) { acceptor.accept( - createCompletionProposal("\"" + stateFragment + "\"", "\"" + stateFragment + "\"", null, context)) + createCompletionProposal("\"" + stateFragment + "\"", stateFragment, null, context)) } } @@ -440,12 +455,15 @@ class TextualScenarioProposalProvider extends AbstractTextualScenarioProposalPro } } - override completeReference_Timelines(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { + override completeReference_Timelines(EObject model, Assignment assignment, ContentAssistContext context, + ICompletionProposalAcceptor acceptor) { for (EObject el : TextualScenarioHelper.participantsDefinedBefore(context.rootModel as Model)) { - if (!(model as Reference).timelines.contains((el as Participant).name)) { - acceptor.accept( - createCompletionProposal("\"" + (el as Participant).name + "\"", (el as Participant).name, null, - context)) + if (model instanceof Reference) { + if (!(model as Reference).timelines.contains((el as Participant).name)) { + acceptor.accept( + createCompletionProposal("\"" + (el as Participant).name + "\"", (el as Participant).name, null, + context)) + } } } } @@ -476,7 +494,7 @@ class TextualScenarioProposalProvider extends AbstractTextualScenarioProposalPro } if (elementName !== null) { acceptor.accept( - createCompletionProposal("\"" + elementName + "\"", "\"" + elementName + "\"", null, context)) + createCompletionProposal("\"" + elementName + "\"", elementName, null, context)) } } } diff --git a/plugins/org.polarsys.capella.scenario.editor.dsl.ui/xtend-gen/org/polarsys/capella/scenario/editor/dsl/ui/contentassist/TextualScenarioProposalProvider.java b/plugins/org.polarsys.capella.scenario.editor.dsl.ui/xtend-gen/org/polarsys/capella/scenario/editor/dsl/ui/contentassist/TextualScenarioProposalProvider.java index 4696b66b..fca23fba 100644 --- a/plugins/org.polarsys.capella.scenario.editor.dsl.ui/xtend-gen/org/polarsys/capella/scenario/editor/dsl/ui/contentassist/TextualScenarioProposalProvider.java +++ b/plugins/org.polarsys.capella.scenario.editor.dsl.ui/xtend-gen/org/polarsys/capella/scenario/editor/dsl/ui/contentassist/TextualScenarioProposalProvider.java @@ -1,15 +1,3 @@ -/******************************************************************************* - * Copyright (c) 2020 THALES GLOBAL SERVICES. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * http://www.eclipse.org/legal/epl-2.0 - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Thales - initial API and implementation - ******************************************************************************/ /** * Copyright (c) 2020 THALES GLOBAL SERVICES. * @@ -27,7 +15,6 @@ import com.google.common.base.Objects; import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Set; @@ -45,6 +32,7 @@ import org.polarsys.capella.core.data.epbs.EPBSArchitecture; import org.polarsys.capella.core.data.fa.FunctionalExchange; import org.polarsys.capella.core.data.information.AbstractEventOperation; +import org.polarsys.capella.core.data.information.ExchangeItem; import org.polarsys.capella.core.model.helpers.CapellaElementExt; import org.polarsys.capella.scenario.editor.dsl.helpers.TextualScenarioHelper; import org.polarsys.capella.scenario.editor.dsl.textualScenario.ArmTimerMessage; @@ -55,7 +43,6 @@ import org.polarsys.capella.scenario.editor.dsl.textualScenario.FoundMessage; import org.polarsys.capella.scenario.editor.dsl.textualScenario.LostMessage; import org.polarsys.capella.scenario.editor.dsl.textualScenario.Model; -import org.polarsys.capella.scenario.editor.dsl.textualScenario.Operand; import org.polarsys.capella.scenario.editor.dsl.textualScenario.Participant; import org.polarsys.capella.scenario.editor.dsl.textualScenario.ParticipantDeactivation; import org.polarsys.capella.scenario.editor.dsl.textualScenario.Reference; @@ -78,15 +65,18 @@ public class TextualScenarioProposalProvider extends AbstractTextualScenarioProp */ @Override public void completeKeyword(final Keyword keyword, final ContentAssistContext contentAssistContext, final ICompletionProposalAcceptor acceptor) { - boolean _isParticipantKeyword = TextualScenarioHelper.isParticipantKeyword(keyword.getValue()); + String _value = keyword.getValue(); + boolean _isParticipantKeyword = TextualScenarioHelper.isParticipantKeyword(_value); if (_isParticipantKeyword) { - boolean _checkValidKeyword = EmbeddedEditorInstanceHelper.checkValidKeyword(keyword.getValue()); + String _value_1 = keyword.getValue(); + boolean _checkValidKeyword = EmbeddedEditorInstanceHelper.checkValidKeyword(_value_1); if (_checkValidKeyword) { super.completeKeyword(keyword, contentAssistContext, acceptor); } } else { final String[] messageKeywords = { "->", "->x", "->+", "->>", "->o", "o->" }; - boolean _contains = ((List)Conversions.doWrapArray(messageKeywords)).contains(keyword.getValue()); + String _value_2 = keyword.getValue(); + boolean _contains = ((List)Conversions.doWrapArray(messageKeywords)).contains(_value_2); boolean _not = (!_contains); if (_not) { super.completeKeyword(keyword, contentAssistContext, acceptor); @@ -150,21 +140,6 @@ public void getExistingParticipants(final String keyword, final ContentAssistCon } } - /** - * propose a list with the timelines (for adding states, modes or allocated functions) - */ - public void getExistingTimelines(final String keyword, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) { - Collection _availableElements = EmbeddedEditorInstanceHelper.getAvailableElements(keyword); - for (final EObject el : _availableElements) { - { - String elementName = CapellaElementExt.getName(el); - ICompletionProposal _createCompletionProposal = this.createCompletionProposal((("\"" + elementName) + "\""), elementName, null, context); - ConfigurableCompletionProposal proposal = ((ConfigurableCompletionProposal) _createCompletionProposal); - acceptor.accept(proposal); - } - } - } - /** * check if a participant is already used in the text */ @@ -185,7 +160,8 @@ public void completeSequenceMessage_Source(final EObject model, final Assignment @Override public void completeSequenceMessage_Arrow(final EObject model, final Assignment assignment, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) { - acceptor.accept(this.createCompletionProposal("->", "-> : Sequence Message", null, context)); + ICompletionProposal _createCompletionProposal = this.createCompletionProposal("->", "-> : Sequence Message", null, context); + acceptor.accept(_createCompletionProposal); } @Override @@ -196,12 +172,15 @@ public void completeSequenceMessage_Target(final EObject model, final Assignment @Override public void completeSequenceMessage_Name(final EObject messageObj, final Assignment assignment, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) { SequenceMessage message = ((SequenceMessage) messageObj); - this.createMessageProposal(message.getSource(), message.getTarget(), context, acceptor); + String _source = message.getSource(); + String _target = message.getTarget(); + this.createMessageProposal(_source, _target, context, acceptor); } public void createMessageProposal(final String source, final String target, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) { EObject _rootModel = context.getRootModel(); - Object scenarioExchangesType = TextualScenarioHelper.getScenarioAllowedExchangesType(((Model) _rootModel).getElements()); + EList _elements = ((Model) _rootModel).getElements(); + Object scenarioExchangesType = TextualScenarioHelper.getScenarioAllowedExchangesType(_elements); List exchangesAvailable = EmbeddedEditorInstanceHelper.getExchangeMessages(source, target); String elementName = new String(); for (final EObject element : exchangesAvailable) { @@ -210,13 +189,16 @@ public void createMessageProposal(final String source, final String target, fina ((Model) _rootModel_1).getElements(); boolean _isInterfaceScenario = EmbeddedEditorInstanceHelper.isInterfaceScenario(); if (_isInterfaceScenario) { - elementName = CapellaElementExt.getName(((ExchangeItemAllocation) element).getAllocatedItem()); + ExchangeItem _allocatedItem = ((ExchangeItemAllocation) element).getAllocatedItem(); + String _name = CapellaElementExt.getName(_allocatedItem); + elementName = _name; } else { - elementName = CapellaElementExt.getName(element); + String _name_1 = CapellaElementExt.getName(element); + elementName = _name_1; } String exchangeType = TextualScenarioHelper.getExchangeType(element); if (((scenarioExchangesType == null) || scenarioExchangesType.equals(exchangeType))) { - String message = (("\"" + elementName) + "\""); + String message = elementName; if ((EmbeddedEditorInstanceHelper.isESScenario() && (element instanceof FunctionalExchange))) { String _sourceFunctionNameOfExchange = EmbeddedEditorInstanceHelper.getSourceFunctionNameOfExchange(((FunctionalExchange) element)); String _plus = ((message + " : FE [ ") + _sourceFunctionNameOfExchange); @@ -227,8 +209,8 @@ public void createMessageProposal(final String source, final String target, fina String _plus_3 = (_plus_2 + " ]"); message = _plus_3; } - acceptor.accept( - this.createCompletionProposal((("\"" + elementName) + "\""), message, null, context)); + ICompletionProposal _createCompletionProposal = this.createCompletionProposal((("\"" + elementName) + "\""), message, null, context); + acceptor.accept(_createCompletionProposal); } } } @@ -237,10 +219,12 @@ public void createMessageProposal(final String source, final String target, fina @Override public void completeCreateMessage_Arrow(final EObject model, final Assignment assignment, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) { if (((!EmbeddedEditorInstanceHelper.isFSScenario()) && (!EmbeddedEditorInstanceHelper.isESScenario()))) { - acceptor.accept(this.createCompletionProposal("->+", "->+ : Create Message", null, context)); + ICompletionProposal _createCompletionProposal = this.createCompletionProposal("->+", "->+ : Create Message", null, context); + acceptor.accept(_createCompletionProposal); } if ((EmbeddedEditorInstanceHelper.isInteractionScenario() && (!EmbeddedEditorInstanceHelper.isFSScenario()))) { - acceptor.accept(this.createCompletionProposal("->+", "->+ : Create Message", null, context)); + ICompletionProposal _createCompletionProposal_1 = this.createCompletionProposal("->+", "->+ : Create Message", null, context); + acceptor.accept(_createCompletionProposal_1); } } @@ -250,14 +234,16 @@ public void completeCreateMessage_Target(final EObject model, final Assignment a EObject _rootModel = context.getRootModel(); EList _participantsDefinedBefore = TextualScenarioHelper.participantsDefinedBefore(((Model) _rootModel)); for (final EObject el : _participantsDefinedBefore) { - boolean _equals = ((Participant) el).getName().equals(source); + String _name = ((Participant) el).getName(); + boolean _equals = _name.equals(source); boolean _not = (!_equals); if (_not) { - String _name = ((Participant) el).getName(); - String _plus = ("\"" + _name); + String _name_1 = ((Participant) el).getName(); + String _plus = ("\"" + _name_1); String _plus_1 = (_plus + "\""); - acceptor.accept( - this.createCompletionProposal(_plus_1, ((Participant) el).getName(), null, context)); + String _name_2 = ((Participant) el).getName(); + ICompletionProposal _createCompletionProposal = this.createCompletionProposal(_plus_1, _name_2, null, context); + acceptor.accept(_createCompletionProposal); } } } @@ -270,10 +256,12 @@ public void completeCreateMessage_Name(final EObject model, final Assignment ass @Override public void completeDeleteMessage_Arrow(final EObject model, final Assignment assignment, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) { if (((!EmbeddedEditorInstanceHelper.isFSScenario()) && (!EmbeddedEditorInstanceHelper.isESScenario()))) { - acceptor.accept(this.createCompletionProposal("->x", "->x : Delete Message", null, context)); + ICompletionProposal _createCompletionProposal = this.createCompletionProposal("->x", "->x : Delete Message", null, context); + acceptor.accept(_createCompletionProposal); } if ((EmbeddedEditorInstanceHelper.isInteractionScenario() && (!EmbeddedEditorInstanceHelper.isFSScenario()))) { - acceptor.accept(this.createCompletionProposal("->x", "->x : Delete Message", null, context)); + ICompletionProposal _createCompletionProposal_1 = this.createCompletionProposal("->x", "->x : Delete Message", null, context); + acceptor.accept(_createCompletionProposal_1); } } @@ -283,14 +271,16 @@ public void completeDeleteMessage_Target(final EObject model, final Assignment a EObject _rootModel = context.getRootModel(); EList _participantsDefinedBefore = TextualScenarioHelper.participantsDefinedBefore(((Model) _rootModel)); for (final EObject el : _participantsDefinedBefore) { - boolean _equals = ((Participant) el).getName().equals(source); + String _name = ((Participant) el).getName(); + boolean _equals = _name.equals(source); boolean _not = (!_equals); if (_not) { - String _name = ((Participant) el).getName(); - String _plus = ("\"" + _name); + String _name_1 = ((Participant) el).getName(); + String _plus = ("\"" + _name_1); String _plus_1 = (_plus + "\""); - acceptor.accept( - this.createCompletionProposal(_plus_1, ((Participant) el).getName(), null, context)); + String _name_2 = ((Participant) el).getName(); + ICompletionProposal _createCompletionProposal = this.createCompletionProposal(_plus_1, _name_2, null, context); + acceptor.accept(_createCompletionProposal); } } } @@ -299,39 +289,30 @@ public void completeDeleteMessage_Target(final EObject model, final Assignment a public void completeParticipantDeactivation_Name(final EObject model, final Assignment assignment, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) { EObject modelContainer = TextualScenarioHelper.getModelContainer(((ParticipantDeactivation) model)); HashMap timelinesToPropose = new HashMap(); - this.createTimelinesHashMapToProposeForDeactivation(((ParticipantDeactivation) model), ((Model) modelContainer), timelinesToPropose); + ArrayList _arrayList = new ArrayList(); + List _allElements = TextualScenarioHelper.getAllElements(modelContainer, _arrayList); + this.createTimelinesHashMapToProposeForDeactivation(((ParticipantDeactivation) model), _allElements, timelinesToPropose); Set _keySet = timelinesToPropose.keySet(); for (final String timelineToPropose : _keySet) { Integer _get = timelinesToPropose.get(timelineToPropose); boolean _greaterEqualsThan = ((_get).intValue() >= 1); if (_greaterEqualsThan) { - acceptor.accept( - this.createCompletionProposal((("\"" + timelineToPropose) + "\""), timelineToPropose, null, context)); + ICompletionProposal _createCompletionProposal = this.createCompletionProposal((("\"" + timelineToPropose) + "\""), timelineToPropose, null, context); + acceptor.accept(_createCompletionProposal); } } } - public HashMap createTimelinesHashMapToProposeForDeactivation(final ParticipantDeactivation participantDeactivation, final EObject modelContainer, final HashMap timelinesToPropose) { - List elements = TextualScenarioHelper.getElements(modelContainer); + public HashMap createTimelinesHashMapToProposeForDeactivation(final ParticipantDeactivation participantDeactivation, final List elements, final HashMap timelinesToPropose) { for (int i = 0; (i < elements.size()); i++) { - { - boolean _equals = elements.get(i).equals(participantDeactivation); - if (_equals) { - for (int j = 0; (j <= i); j++) { - this.updateHashMap(timelinesToPropose, elements.get(j), participantDeactivation); - } - return timelinesToPropose; - } - Element _get = elements.get(i); - if ((_get instanceof CombinedFragment)) { - Element _get_1 = elements.get(i); - this.createTimelinesHashMapToProposeForDeactivation(participantDeactivation, ((CombinedFragment) _get_1), timelinesToPropose); - } - Element _get_2 = elements.get(i); - if ((_get_2 instanceof Operand)) { - Element _get_3 = elements.get(i); - this.createTimelinesHashMapToProposeForDeactivation(participantDeactivation, ((Operand) _get_3), timelinesToPropose); + Element _get = elements.get(i); + boolean _equals = _get.equals(participantDeactivation); + if (_equals) { + for (int j = 0; (j <= i); j++) { + Element _get_1 = elements.get(j); + this.updateHashMap(timelinesToPropose, _get_1, participantDeactivation); } + return timelinesToPropose; } } return timelinesToPropose; @@ -346,6 +327,9 @@ public Integer updateHashMap(final HashMap timelinesToPropose, if ((element instanceof ArmTimerMessage)) { this.updateHashMapWithArmTimerMessage(timelinesToPropose, ((ArmTimerMessage) element)); } + if ((element instanceof FoundMessage)) { + this.updateHashMapWithFoundMessage(timelinesToPropose, ((FoundMessage) element)); + } Integer _xifexpression = null; if ((element instanceof ParticipantDeactivation)) { _xifexpression = this.updateHashMapWithParticipantDeactivation(timelinesToPropose, ((ParticipantDeactivation) element)); @@ -355,58 +339,112 @@ public Integer updateHashMap(final HashMap timelinesToPropose, return _xblockexpression; } + /** + * Update HashMap with the target of Sequence Message + * If the hashMap already contains the target (as key), increment with 1 the actual value + * If the hashMap doesn't contain the target, add the target as key and set its value to 1 + */ public Integer updateHashMapWithSequenceMessage(final HashMap timelinesToPropose, final SequenceMessage sequenceMessage) { Integer _xifexpression = null; String _execution = sequenceMessage.getExecution(); boolean _tripleNotEquals = (_execution != null); if (_tripleNotEquals) { Integer _xifexpression_1 = null; - boolean _containsKey = timelinesToPropose.containsKey(sequenceMessage.getTarget()); + String _target = sequenceMessage.getTarget(); + boolean _containsKey = timelinesToPropose.containsKey(_target); if (_containsKey) { Integer _xblockexpression = null; { - Integer value = timelinesToPropose.get(sequenceMessage.getTarget()); - _xblockexpression = timelinesToPropose.put(sequenceMessage.getTarget(), Integer.valueOf(((((Integer) value)).intValue() + 1))); + String _target_1 = sequenceMessage.getTarget(); + Integer value = timelinesToPropose.get(_target_1); + String _target_2 = sequenceMessage.getTarget(); + _xblockexpression = timelinesToPropose.put(_target_2, Integer.valueOf(((((Integer) value)).intValue() + 1))); } _xifexpression_1 = _xblockexpression; } else { - _xifexpression_1 = timelinesToPropose.put(sequenceMessage.getTarget(), Integer.valueOf(1)); + String _target_1 = sequenceMessage.getTarget(); + _xifexpression_1 = timelinesToPropose.put(_target_1, Integer.valueOf(1)); } _xifexpression = _xifexpression_1; } return _xifexpression; } + /** + * Update HashMap with the participant of ArmTimer Message + * If the hashMap already contains the participant (as key), increment with 1 the actual value + * If the hashMap doesn't contain the participant, add the participant as key and set its value to 1 + */ public Integer updateHashMapWithArmTimerMessage(final HashMap timelinesToPropose, final ArmTimerMessage armTimer) { Integer _xifexpression = null; String _execution = armTimer.getExecution(); boolean _tripleNotEquals = (_execution != null); if (_tripleNotEquals) { Integer _xifexpression_1 = null; - boolean _containsKey = timelinesToPropose.containsKey(armTimer.getParticipant()); + String _participant = armTimer.getParticipant(); + boolean _containsKey = timelinesToPropose.containsKey(_participant); + if (_containsKey) { + Integer _xblockexpression = null; + { + String _participant_1 = armTimer.getParticipant(); + Integer value = timelinesToPropose.get(_participant_1); + _xblockexpression = value = Integer.valueOf(((((Integer) value)).intValue() + 1)); + } + _xifexpression_1 = _xblockexpression; + } else { + String _participant_1 = armTimer.getParticipant(); + _xifexpression_1 = timelinesToPropose.put(_participant_1, Integer.valueOf(1)); + } + _xifexpression = _xifexpression_1; + } + return _xifexpression; + } + + /** + * Update HashMap with the target of Found Message + * If the hashMap already contains the target (as key), increment with 1 the actual value + * If the hashMap doesn't contain the target, add the target as key and set its value to 1 + */ + public Integer updateHashMapWithFoundMessage(final HashMap timelinesToPropose, final FoundMessage foundMessage) { + Integer _xifexpression = null; + String _execution = foundMessage.getExecution(); + boolean _tripleNotEquals = (_execution != null); + if (_tripleNotEquals) { + Integer _xifexpression_1 = null; + String _target = foundMessage.getTarget(); + boolean _containsKey = timelinesToPropose.containsKey(_target); if (_containsKey) { Integer _xblockexpression = null; { - Integer value = timelinesToPropose.get(armTimer.getParticipant()); + String _target_1 = foundMessage.getTarget(); + Integer value = timelinesToPropose.get(_target_1); _xblockexpression = value = Integer.valueOf(((((Integer) value)).intValue() + 1)); } _xifexpression_1 = _xblockexpression; } else { - _xifexpression_1 = timelinesToPropose.put(armTimer.getParticipant(), Integer.valueOf(1)); + String _target_1 = foundMessage.getTarget(); + _xifexpression_1 = timelinesToPropose.put(_target_1, Integer.valueOf(1)); } _xifexpression = _xifexpression_1; } return _xifexpression; } + /** + * Update HashMap with the deactivation + * Decrement with 1 the actual value of the deactivation name (timeline) + */ public Integer updateHashMapWithParticipantDeactivation(final HashMap timelinesToPropose, final ParticipantDeactivation participantDeactivation) { Integer _xifexpression = null; - boolean _containsKey = timelinesToPropose.containsKey(participantDeactivation.getName()); + String _name = participantDeactivation.getName(); + boolean _containsKey = timelinesToPropose.containsKey(_name); if (_containsKey) { Integer _xblockexpression = null; { - Integer value = timelinesToPropose.get(participantDeactivation.getName()); - _xblockexpression = timelinesToPropose.put(participantDeactivation.getName(), Integer.valueOf(((((Integer) value)).intValue() - 1))); + String _name_1 = participantDeactivation.getName(); + Integer value = timelinesToPropose.get(_name_1); + String _name_2 = participantDeactivation.getName(); + _xblockexpression = timelinesToPropose.put(_name_2, Integer.valueOf(((((Integer) value)).intValue() - 1))); } _xifexpression = _xblockexpression; } @@ -423,7 +461,8 @@ public void completeArmTimerMessage_Arrow(final EObject model, final Assignment boolean _isFSScenario = EmbeddedEditorInstanceHelper.isFSScenario(); boolean _not = (!_isFSScenario); if (_not) { - acceptor.accept(this.createCompletionProposal("->>", "->> : Arm Timer", null, context)); + ICompletionProposal _createCompletionProposal = this.createCompletionProposal("->>", "->> : Arm Timer", null, context); + acceptor.accept(_createCompletionProposal); } } @@ -434,14 +473,16 @@ public void completeArmTimerMessage_Participant(final EObject model, final Assig @Override public void completeArmTimerMessage_Name(final EObject model, final Assignment assignment, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) { - acceptor.accept(this.createCompletionProposal("\"Arm Timer\"", "\"Arm Timer\"", null, context)); + ICompletionProposal _createCompletionProposal = this.createCompletionProposal("\"Arm Timer\"", "\"Arm Timer\"", null, context); + acceptor.accept(_createCompletionProposal); } @Override public void completeLostMessage_Arrow(final EObject model, final Assignment assignment, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) { boolean _isESScenario = EmbeddedEditorInstanceHelper.isESScenario(); if (_isESScenario) { - acceptor.accept(this.createCompletionProposal("->o", "->o : Lost Message", null, context)); + ICompletionProposal _createCompletionProposal = this.createCompletionProposal("->o", "->o : Lost Message", null, context); + acceptor.accept(_createCompletionProposal); } } @@ -453,20 +494,23 @@ public void completeLostMessage_Source(final EObject model, final Assignment ass @Override public void completeLostMessage_Name(final EObject model, final Assignment assignment, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) { LostMessage message = ((LostMessage) model); - this.createMessageProposal(message.getSource(), null, context, acceptor); + String _source = message.getSource(); + this.createMessageProposal(_source, null, context, acceptor); } @Override public void completeFoundMessage_Name(final EObject model, final Assignment assignment, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) { FoundMessage message = ((FoundMessage) model); - this.createMessageProposal(null, message.getTarget(), context, acceptor); + String _target = message.getTarget(); + this.createMessageProposal(null, _target, context, acceptor); } @Override public void completeFoundMessage_Arrow(final EObject model, final Assignment assignment, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) { boolean _isESScenario = EmbeddedEditorInstanceHelper.isESScenario(); if (_isESScenario) { - acceptor.accept(this.createCompletionProposal("o->", "o-> : Found Message", null, context)); + ICompletionProposal _createCompletionProposal = this.createCompletionProposal("o->", "o-> : Found Message", null, context); + acceptor.accept(_createCompletionProposal); } } @@ -477,12 +521,15 @@ public void completeFoundMessage_Target(final EObject model, final Assignment as @Override public void completeStateFragment_Timeline(final EObject model, final Assignment assignment, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) { - List keywords = Collections.unmodifiableList(CollectionLiterals.newArrayList(DslConstants.ACTOR, DslConstants.ACTIVITY, DslConstants.FUNCTION, DslConstants.ROLE, DslConstants.ENTITY, DslConstants.ROLE, DslConstants.COMPONENT, DslConstants.CONFIGURATION_ITEM)); - for (final String keyword : keywords) { - boolean _checkValidKeyword = EmbeddedEditorInstanceHelper.checkValidKeyword(keyword); - if (_checkValidKeyword) { - this.getExistingTimelines(keyword, context, acceptor); - } + EObject _rootModel = context.getRootModel(); + EList _participantsDefinedBefore = TextualScenarioHelper.participantsDefinedBefore(((Model) _rootModel)); + for (final EObject el : _participantsDefinedBefore) { + String _name = ((Participant) el).getName(); + String _plus = ("\"" + _name); + String _plus_1 = (_plus + "\""); + String _name_1 = ((Participant) el).getName(); + ICompletionProposal _createCompletionProposal = this.createCompletionProposal(_plus_1, _name_1, null, context); + acceptor.accept(_createCompletionProposal); } } @@ -495,17 +542,19 @@ public void completeStateFragment_Keyword(final EObject model, final Assignment keywords.add(DslConstants.FUNCTION); } for (final String keyword : keywords) { - acceptor.accept(this.createCompletionProposal(keyword, keyword, null, context)); + ICompletionProposal _createCompletionProposal = this.createCompletionProposal(keyword, keyword, null, context); + acceptor.accept(_createCompletionProposal); } } @Override public void completeStateFragment_Name(final EObject model, final Assignment assignment, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) { - List _availableStateFragments = EmbeddedEditorInstanceHelper.getAvailableStateFragments( - ((StateFragment) model).getKeyword(), ((StateFragment) model).getTimeline()); + String _keyword = ((StateFragment) model).getKeyword(); + String _timeline = ((StateFragment) model).getTimeline(); + List _availableStateFragments = EmbeddedEditorInstanceHelper.getAvailableStateFragments(_keyword, _timeline); for (final String stateFragment : _availableStateFragments) { - acceptor.accept( - this.createCompletionProposal((("\"" + stateFragment) + "\""), (("\"" + stateFragment) + "\""), null, context)); + ICompletionProposal _createCompletionProposal = this.createCompletionProposal((("\"" + stateFragment) + "\""), stateFragment, null, context); + acceptor.accept(_createCompletionProposal); } } @@ -514,14 +563,17 @@ public void completeCombinedFragment_Timelines(final EObject model, final Assign EObject _rootModel = context.getRootModel(); EList _participantsDefinedBefore = TextualScenarioHelper.participantsDefinedBefore(((Model) _rootModel)); for (final EObject el : _participantsDefinedBefore) { - boolean _contains = ((CombinedFragment) model).getTimelines().contains(((Participant) el).getName()); + EList _timelines = ((CombinedFragment) model).getTimelines(); + String _name = ((Participant) el).getName(); + boolean _contains = _timelines.contains(_name); boolean _not = (!_contains); if (_not) { - String _name = ((Participant) el).getName(); - String _plus = ("\"" + _name); + String _name_1 = ((Participant) el).getName(); + String _plus = ("\"" + _name_1); String _plus_1 = (_plus + "\""); - acceptor.accept( - this.createCompletionProposal(_plus_1, ((Participant) el).getName(), null, context)); + String _name_2 = ((Participant) el).getName(); + ICompletionProposal _createCompletionProposal = this.createCompletionProposal(_plus_1, _name_2, null, context); + acceptor.accept(_createCompletionProposal); } } } @@ -530,7 +582,8 @@ public void completeCombinedFragment_Timelines(final EObject model, final Assign public void completeReference_Name(final EObject model, final Assignment assignment, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) { List referencedScenarios = EmbeddedEditorInstanceHelper.getReferencedScenariosName(); for (final String referencedScenario : referencedScenarios) { - acceptor.accept(this.createCompletionProposal((("\"" + referencedScenario) + "\""), referencedScenario, null, context)); + ICompletionProposal _createCompletionProposal = this.createCompletionProposal((("\"" + referencedScenario) + "\""), referencedScenario, null, context); + acceptor.accept(_createCompletionProposal); } } @@ -539,14 +592,19 @@ public void completeReference_Timelines(final EObject model, final Assignment as EObject _rootModel = context.getRootModel(); EList _participantsDefinedBefore = TextualScenarioHelper.participantsDefinedBefore(((Model) _rootModel)); for (final EObject el : _participantsDefinedBefore) { - boolean _contains = ((Reference) model).getTimelines().contains(((Participant) el).getName()); - boolean _not = (!_contains); - if (_not) { + if ((model instanceof Reference)) { + EList _timelines = ((Reference) model).getTimelines(); String _name = ((Participant) el).getName(); - String _plus = ("\"" + _name); - String _plus_1 = (_plus + "\""); - acceptor.accept( - this.createCompletionProposal(_plus_1, ((Participant) el).getName(), null, context)); + boolean _contains = _timelines.contains(_name); + boolean _not = (!_contains); + if (_not) { + String _name_1 = ((Participant) el).getName(); + String _plus = ("\"" + _name_1); + String _plus_1 = (_plus + "\""); + String _name_2 = ((Participant) el).getName(); + ICompletionProposal _createCompletionProposal = this.createCompletionProposal(_plus_1, _name_2, null, context); + acceptor.accept(_createCompletionProposal); + } } } } @@ -569,19 +627,24 @@ public boolean messageAlreadyInserted(final Model model, final String source, fi public void completeCreateDeleteMessageName(final EObject model, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) { SequenceMessageType message = ((SequenceMessageType) model); - List exchangesAvailable = EmbeddedEditorInstanceHelper.getExchangeMessages(message.getSource(), message.getTarget()); + String _source = message.getSource(); + String _target = message.getTarget(); + List exchangesAvailable = EmbeddedEditorInstanceHelper.getExchangeMessages(_source, _target); String elementName = new String(); for (final EObject element : exchangesAvailable) { { boolean _isInterfaceScenario = EmbeddedEditorInstanceHelper.isInterfaceScenario(); if (_isInterfaceScenario) { - elementName = CapellaElementExt.getName(((ExchangeItemAllocation) element).getAllocatedItem()); + ExchangeItem _allocatedItem = ((ExchangeItemAllocation) element).getAllocatedItem(); + String _name = CapellaElementExt.getName(_allocatedItem); + elementName = _name; } else { - elementName = CapellaElementExt.getName(element); + String _name_1 = CapellaElementExt.getName(element); + elementName = _name_1; } if ((elementName != null)) { - acceptor.accept( - this.createCompletionProposal((("\"" + elementName) + "\""), (("\"" + elementName) + "\""), null, context)); + ICompletionProposal _createCompletionProposal = this.createCompletionProposal((("\"" + elementName) + "\""), elementName, null, context); + acceptor.accept(_createCompletionProposal); } } } @@ -594,8 +657,9 @@ public void proposeParticipants(final ContentAssistContext context, final ICompl String _name = ((Participant) el).getName(); String _plus = ("\"" + _name); String _plus_1 = (_plus + "\""); - acceptor.accept( - this.createCompletionProposal(_plus_1, ((Participant) el).getName(), null, context)); + String _name_1 = ((Participant) el).getName(); + ICompletionProposal _createCompletionProposal = this.createCompletionProposal(_plus_1, _name_1, null, context); + acceptor.accept(_createCompletionProposal); } } } diff --git a/plugins/org.polarsys.capella.scenario.editor.dsl/src/org/polarsys/capella/scenario/editor/dsl/helpers/TextualScenarioHelper.xtend b/plugins/org.polarsys.capella.scenario.editor.dsl/src/org/polarsys/capella/scenario/editor/dsl/helpers/TextualScenarioHelper.xtend index ec967199..357dd933 100644 --- a/plugins/org.polarsys.capella.scenario.editor.dsl/src/org/polarsys/capella/scenario/editor/dsl/helpers/TextualScenarioHelper.xtend +++ b/plugins/org.polarsys.capella.scenario.editor.dsl/src/org/polarsys/capella/scenario/editor/dsl/helpers/TextualScenarioHelper.xtend @@ -26,11 +26,11 @@ import org.polarsys.capella.scenario.editor.dsl.textualScenario.CombinedFragment import org.polarsys.capella.scenario.editor.dsl.textualScenario.Model import org.polarsys.capella.scenario.editor.dsl.textualScenario.Block import org.polarsys.capella.scenario.editor.dsl.textualScenario.Element -import org.polarsys.capella.scenario.editor.dsl.textualScenario.SequenceMessageType import java.util.Set import org.polarsys.capella.scenario.editor.dsl.textualScenario.Message import org.polarsys.capella.scenario.editor.dsl.textualScenario.FoundMessage import org.polarsys.capella.scenario.editor.dsl.textualScenario.LostMessage +import java.util.List /** * See https://www.eclipse.org/Xtext/documentation/304_ide_concepts.html#content-assist @@ -155,7 +155,7 @@ class TextualScenarioHelper { /* * get all elements on the same level as modelContainer */ - def static getElements(EObject modelContainer) { + def static getContainerElements(EObject modelContainer) { if (modelContainer instanceof Model) { return (modelContainer as Model).elements @@ -175,6 +175,21 @@ class TextualScenarioHelper { } } + /* + * get all elements from xtext + */ + def static List getAllElements(EObject modelContainer, List allElements) { + for (Element element : getContainerElements(modelContainer)) { + if (!(element instanceof CombinedFragment)) { + allElements.add(element) + } else { + allElements.add(element) + getAllElements(element, allElements) + } + } + return allElements; + } + /* * get the root model that contains the object given as para */ diff --git a/plugins/org.polarsys.capella.scenario.editor.dsl/src/org/polarsys/capella/scenario/editor/dsl/validation/TextualScenarioValidator.xtend b/plugins/org.polarsys.capella.scenario.editor.dsl/src/org/polarsys/capella/scenario/editor/dsl/validation/TextualScenarioValidator.xtend index 27a1cd21..cedc6a2f 100644 --- a/plugins/org.polarsys.capella.scenario.editor.dsl/src/org/polarsys/capella/scenario/editor/dsl/validation/TextualScenarioValidator.xtend +++ b/plugins/org.polarsys.capella.scenario.editor.dsl/src/org/polarsys/capella/scenario/editor/dsl/validation/TextualScenarioValidator.xtend @@ -1,928 +1,900 @@ -/******************************************************************************* - * Copyright (c) 2020 THALES GLOBAL SERVICES. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * http://www.eclipse.org/legal/epl-2.0 - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Thales - initial API and implementation - *******************************************************************************/ -package org.polarsys.capella.scenario.editor.dsl.validation - -import org.polarsys.capella.scenario.editor.dsl.textualScenario.Participant -import org.polarsys.capella.scenario.editor.dsl.textualScenario.SequenceMessageType -import org.polarsys.capella.scenario.editor.dsl.textualScenario.SequenceMessage -import org.polarsys.capella.scenario.editor.dsl.textualScenario.ParticipantDeactivation -import org.polarsys.capella.scenario.editor.dsl.textualScenario.TextualScenarioPackage -import org.eclipse.xtext.validation.Check -import org.polarsys.capella.scenario.editor.dsl.textualScenario.Model -import org.polarsys.capella.scenario.editor.helper.EmbeddedEditorInstanceHelper -import org.polarsys.capella.scenario.editor.dsl.textualScenario.Function -import org.polarsys.capella.scenario.editor.dsl.helpers.TextualScenarioHelper -import org.polarsys.capella.scenario.editor.dsl.textualScenario.CombinedFragment -import org.eclipse.emf.ecore.EObject -import org.polarsys.capella.scenario.editor.dsl.textualScenario.DeleteMessage -import org.polarsys.capella.scenario.editor.dsl.textualScenario.CreateMessage -import org.polarsys.capella.scenario.editor.dsl.textualScenario.StateFragment -import org.polarsys.capella.scenario.editor.helper.DslConstants -import org.polarsys.capella.scenario.editor.dsl.textualScenario.Operand -import org.polarsys.capella.scenario.editor.dsl.textualScenario.Block -import org.polarsys.capella.scenario.editor.dsl.textualScenario.ArmTimerMessage -import java.util.HashSet -import org.eclipse.emf.ecore.EAttribute -import java.util.List -import java.util.Set -import org.polarsys.capella.scenario.editor.dsl.textualScenario.Reference -import java.util.HashMap -import java.util.LinkedList -import org.polarsys.capella.scenario.editor.dsl.textualScenario.Element -import org.eclipse.emf.ecore.EReference -import org.polarsys.capella.scenario.editor.dsl.textualScenario.LostMessage -import org.polarsys.capella.scenario.editor.dsl.textualScenario.FoundMessage -import org.polarsys.capella.scenario.editor.dsl.textualScenario.Message -import org.polarsys.capella.scenario.editor.dsl.textualScenario.LostFoundMessage - -/** - * This class contains custom validation rules. - * - * See https://www.eclipse.org/Xtext/documentation/303_runtime_concepts.html#validation - */ -class TextualScenarioValidator extends AbstractTextualScenarioValidator { - public static val INVALID_NAME = 'invalidName' - public static val DUPLICATED_NAME = 'duplicatedName' - public static val DUPLICATED_MESSAGES_NAME = 'duplicatedMessageName' - public static val SAME_SOURCE_AND_TARGET_ERROR = 'Invalid element! Source and target must be different!' - - @Check - def checkPartExists(Participant participant) { - if (!EmbeddedEditorInstanceHelper.getAvailablePartNames(participant.keyword).contains(participant.name)) { - if (participant instanceof Function) { - error('Function does not exist!', TextualScenarioPackage.Literals.PARTICIPANT__NAME, INVALID_NAME) - } else { - error('Represented part does not exist!', TextualScenarioPackage.Literals.PARTICIPANT__NAME, - INVALID_NAME) - } - } - } - - @Check - def checkParticipantKeywordIsValid(Participant participant) { - if (!EmbeddedEditorInstanceHelper.checkValidKeyword(participant.keyword)) { - error('\'' + participant.keyword + '\' can not be used in this diagram!', - TextualScenarioPackage.Literals.PARTICIPANT__KEYWORD) - } - } - - @Check - def checkMessagesExist(SequenceMessage message) { - if (!EmbeddedEditorInstanceHelper.getExchangeNames(message.getSource, message.getTarget).contains( - message.name)) { - error('Exchange does not exist between \"' + message.source + "\" and \"" + message.target +"\"!" - , TextualScenarioPackage.Literals.MESSAGE__NAME - ) - } - } - - - /* - * Check that the source and the target of the sequence messages type are defined in text, before using them in the message - */ - @Check - def checkParticipantsInvolvedExist(SequenceMessageType message) { - var participantsDefined = TextualScenarioHelper.participantsDefinedBeforeNames(message); - if (!participantsDefined.contains(message.source)) { - error( - 'Source participant not defined in text editor!', - TextualScenarioPackage.Literals.SEQUENCE_MESSAGE_TYPE__SOURCE - ) - } - if (!participantsDefined.contains(message.target)) { - error( - 'Target participant not defined in text editor!', - TextualScenarioPackage.Literals.SEQUENCE_MESSAGE_TYPE__TARGET - ) - } - } - - @Check - def checkSequenceMessagesExchangeType(SequenceMessage sequenceMessage) { - checkMessagesExchangeType(sequenceMessage) - } - - @Check - def checkSequenceMessagesExchangeType(LostFoundMessage lostFoundMessage) { - checkMessagesExchangeType(lostFoundMessage) - } - - /* - * check that a CE (component exchange) and an FE (functional exchange) are not used in the same place - */ - def checkMessagesExchangeType(Message message) { - if (EmbeddedEditorInstanceHelper.isESScenario()) { - var model = TextualScenarioHelper.getModelContainer(message) - if (model instanceof Model) { - var scenarioExchangesType = TextualScenarioHelper. - getScenarioAllowedExchangesType((model as Model).elements) - var exchangeTypes = TextualScenarioHelper.getAllMessageExchangeType(message) as Set - if (scenarioExchangesType !== null && !exchangeTypes.contains(scenarioExchangesType)) { - error('Exchange type can not be used, expected ' + scenarioExchangesType + "!", - TextualScenarioPackage.Literals.MESSAGE__NAME) - } - } - } - } - - /* - * Do not allow duplicated names, we have a combination of unique keyword + name - * ex: not allowed: actor "A1", actor "A1" - * ex: allowed: actor "A1", component "A1" - */ - @Check - def checkDuplicatedParticipantsNames(Model model) { - var index = 0 - val names = newHashSet - for (p : model.participants) { - if (!names.add(getParticipantsMapKey(p))) { - error( - 'Duplicated participant!', - TextualScenarioPackage.Literals.MODEL__PARTICIPANTS, - index, - DUPLICATED_NAME - ) - } - index++ - } - } - - @Check - def checkDeactivateMessagesModel(Model model) { - checkDeactivateMessages(model, newLinkedList, model.elements) - } - - /* - * Checks on deactivation keyword - * If we encounter a deactivation on a target, check that we have a corresponding sequence message that can be deactivated - */ - def void checkDeactivateMessages(EObject container, - LinkedList messageTargets, - List elements) { - var index = 0 - // a message shall occur before a deactivation - // keep this array with the targets of each encountered message to check that the message happens before deactivation - for (obj : elements) { - if (obj instanceof SequenceMessage && (obj as SequenceMessage).execution !== null) { - // add the already encountered messages to the list - messageTargets.add((obj as SequenceMessage).target) - } - - if (obj instanceof ArmTimerMessage && (obj as ArmTimerMessage).execution !== null) { - // add the already encountered messages to the list - messageTargets.add((obj as ArmTimerMessage).participant) - } - - if (obj instanceof FoundMessage && (obj as FoundMessage).execution !== null) { - // add the already encountered messages to the list - messageTargets.add((obj as FoundMessage).target) - } - - if (obj instanceof CombinedFragment) { - var cf = obj as CombinedFragment - checkDeactivateMessages(cf.block, - messageTargets, - cf.block.blockElements - ) - cf.operands.forEach[operand | - checkDeactivateMessages(operand.block, - messageTargets, - operand.block.blockElements - ) - ] - } - - if (obj instanceof ParticipantDeactivation) { - var refFeature = TextualScenarioPackage.Literals.MODEL__ELEMENTS - if (container instanceof Block) { - refFeature = TextualScenarioPackage.Literals.BLOCK__BLOCK_ELEMENTS - } - showErrorDeactivateMessages( - obj as ParticipantDeactivation, - container, - messageTargets, - refFeature, - index - ) - } - index++ - } - } - - def showErrorDeactivateMessages( - ParticipantDeactivation deactivation, - EObject container, - LinkedList messageTargets, - EReference refFeature, - int index - ) { - // if we already encountered a message with target ad deactivation.name, - // we will remove the message from the messages list, because this message is matched with a deactivation - var indexOfTarget = messageTargets.lastIndexOf(deactivation.name) - if (indexOfTarget < 0) { - error( - 'Deactivation keyword not expected!', - container, - refFeature, - index - ) - } else { - messageTargets.remove(indexOfTarget) - } - } - - /* - * check that the messages we define are valid - * if the message is inside a combined fragment, the messages must be between the defined timelines of the combined fragment - */ - @Check - def checkDefinedTimelinesMessages(SequenceMessageType message) { - var participantsNames = TextualScenarioHelper.participantsDefinedBeforeNames(message) - if (!participantsNames.contains(message.source)) { - error(String.format("Timeline not defined in text editor!"), TextualScenarioPackage.Literals.SEQUENCE_MESSAGE_TYPE__SOURCE) - return - } - - if (!participantsNames.contains(message.target)) { - error(String.format("Timeline not defined in text editor!"), TextualScenarioPackage.Literals.SEQUENCE_MESSAGE_TYPE__TARGET) - return - } - } - - @Check - def checkContainedTimelinesMessages(SequenceMessageType message) { - // if the message is inside a combined fragment, check that source and target are covered by it - var container = TextualScenarioHelper.getDirectContainer(message) - if (container instanceof CombinedFragment) { - var upContainer = getUpperContainerCombinedFragmentTimelines(message, container) - if(upContainer !== null && upContainer instanceof CombinedFragment) { - checkTimelinesMessages(message, upContainer as CombinedFragment) - } - } - } - - def EObject getUpperContainerCombinedFragmentTimelines(SequenceMessageType message, CombinedFragment container) { - if (container.timelines.contains(message.source) || container.timelines.contains(message.target)) { - return container - } else { - var upperContainer = TextualScenarioHelper.getDirectContainer(container) - if (upperContainer instanceof CombinedFragment) { - return getUpperContainerCombinedFragmentTimelines(message, upperContainer as CombinedFragment); - } - } - return null - } - - def checkTimelinesMessages(SequenceMessageType message, CombinedFragment container) { - var msg = String.format("Timeline not covered by this " + container.keyword + "!" + - " Expected values in : " + container.timelines - ) - if (!container.timelines.contains(message.source)) { - error(msg, - TextualScenarioPackage.Literals.SEQUENCE_MESSAGE_TYPE__SOURCE) - } - - if (!container.timelines.contains(message.target)) { - error(msg, - TextualScenarioPackage.Literals.SEQUENCE_MESSAGE_TYPE__TARGET) - } - } - - - @Check - def checkDeleteMessage(DeleteMessage deleteMessage) { - checkCreateOrDeleteCouldBeUsed() - checkSameSourceAndTarget(deleteMessage) - } - - // check that in opened diagram create or delete messages could be used - def checkCreateOrDeleteCouldBeUsed() { - if (EmbeddedEditorInstanceHelper.isFSScenario() || - (EmbeddedEditorInstanceHelper.isESScenario() && !EmbeddedEditorInstanceHelper.isInteractionScenario) - ) { - error("Create or delete message can not be used in this diagram!", - TextualScenarioPackage.Literals.SEQUENCE_MESSAGE_TYPE__ARROW) - } - } - - @Check - def checkArmTimer(ArmTimerMessage armTimer) { - // check arm timer could be used in opened diagram - if (EmbeddedEditorInstanceHelper.isFSScenario()) { - error("Arm Timer can not be used in this diagram!", - TextualScenarioPackage.Literals.ARM_TIMER_MESSAGE__ARROW) - } - - // check timeline exist - if (!TextualScenarioHelper.participantsDefinedBeforeNames(armTimer).contains(armTimer.participant)) { - error("Timeline not defined in text editor!", - TextualScenarioPackage.Literals.ARM_TIMER_MESSAGE__PARTICIPANT) - } - } - - @Check - def checkLostMessage(LostMessage message) { - // check lost message could be used in opened diagram - if (!EmbeddedEditorInstanceHelper.isESScenario()) { - error("Lost message can not be used in this diagram!", - TextualScenarioPackage.Literals.LOST_FOUND_MESSAGE__ARROW) - } - - // check timeline exist - if (!TextualScenarioHelper.participantsDefinedBeforeNames(message).contains(message.source)) { - error("Timeline not defined in text editor!", - TextualScenarioPackage.Literals.LOST_MESSAGE__SOURCE) - } - } - - @Check - def checkFoundMessage(FoundMessage message) { - // check found message could be used in opened diagram - if (!EmbeddedEditorInstanceHelper.isESScenario()) { - error("Found message can not be used in this diagram!", - TextualScenarioPackage.Literals.LOST_FOUND_MESSAGE__ARROW) - } - - // check timeline exist - if (!TextualScenarioHelper.participantsDefinedBeforeNames(message).contains(message.target)) { - error("Timeline not defined in text editor!", - TextualScenarioPackage.Literals.FOUND_MESSAGE__TARGET) - } - } - - def checkSameSourceAndTarget(SequenceMessageType message) { - if (message.source.equals(message.target)) { - error(SAME_SOURCE_AND_TARGET_ERROR, - TextualScenarioPackage.Literals.SEQUENCE_MESSAGE_TYPE__TARGET) - error(SAME_SOURCE_AND_TARGET_ERROR, - TextualScenarioPackage.Literals.SEQUENCE_MESSAGE_TYPE__SOURCE) - } - } - - /* - * check if a timeline involved in a combined fragment was used after a delete message was already defined - * on the previous lines on the same timeline - */ - @Check - def checkTimelineUsedAfterDeleteMessage(CombinedFragment combinedFragment) { - var model = TextualScenarioHelper.getModelContainer(combinedFragment) - if (model instanceof Model) { - var index = 0 - for (timeline : combinedFragment.timelines) { - checkElementAfterDelete(model as Model, combinedFragment, timeline, - TextualScenarioPackage.Literals.COMBINED_FRAGMENT__TIMELINES, index++) - } - } - } - - /* - * check if the timeline involved in a state fragment was used after a delete message was already defined - * on the previous lines on the same timeline - */ - @Check - def checkTimelineUsedAfterDeleteMessage(StateFragment fragment) { - var model = TextualScenarioHelper.getModelContainer(fragment) - if (model instanceof Model) - checkElementAfterDelete(model as Model, fragment, fragment.timeline, - TextualScenarioPackage.Literals.STATE_FRAGMENT__TIMELINE, 0) - } - - /* - * check if a participant involved in arm timer was used after a delete message was already defined - * on the previous lines on the same timeline - */ - @Check - def checkParticipantUsedAfterDeleteMessage(ArmTimerMessage armTimer) { - var model = TextualScenarioHelper.getModelContainer(armTimer) - if (model instanceof Model) - checkElementAfterDelete(model as Model, armTimer, armTimer.participant, - TextualScenarioPackage.Literals.ARM_TIMER_MESSAGE__PARTICIPANT, 0) - } - - /* - * check if a participant involved in a lost message was used after a delete message was already defined - * on the previous lines on the same timeline - */ - @Check - def checkParticipantUsedAfterLostMessage(LostMessage message) { - var model = TextualScenarioHelper.getModelContainer(message) - if (model instanceof Model) - checkElementAfterDelete(model as Model, message, message.source, - TextualScenarioPackage.Literals.LOST_MESSAGE__SOURCE, 0) - } - - /* - * check if a participant involved in a lost message was used after a delete message was already defined - * on the previous lines on the same timeline - */ - @Check - def checkParticipantUsedAfterFoundMessage(FoundMessage message) { - var model = TextualScenarioHelper.getModelContainer(message) - if (model instanceof Model) - checkElementAfterDelete(model as Model, message, message.target, - TextualScenarioPackage.Literals.FOUND_MESSAGE__TARGET, 0) - } - - /* - * check if a sequence message source element was used after a delete message was already defined - * on the previous lines on the same timeline - */ - @Check - def checkMessageSourceUsedAfterDeleteMessage(SequenceMessageType message) { - var model = TextualScenarioHelper.getModelContainer(message) - if (model instanceof Model) - checkElementAfterDelete(model as Model, message, message.source, - TextualScenarioPackage.Literals.SEQUENCE_MESSAGE_TYPE__SOURCE, 0) - } - - /* - * check if a sequence message target element was used after a delete message was already defined - * on the previous lines on the same timeline - */ - @Check - def checkMessageTargetUsedAfterDeleteMessage(SequenceMessageType message) { - var model = TextualScenarioHelper.getModelContainer(message) - if (model instanceof Model) - checkElementAfterDelete(model as Model, message, message.target, - TextualScenarioPackage.Literals.SEQUENCE_MESSAGE_TYPE__TARGET, 0) - } - - - def boolean checkElementAfterDelete(EObject model, EObject checkedElement, String target, - EAttribute checkedAttribute, int index) { - var elements = TextualScenarioHelper.getElements(model) - - for (EObject element : elements) { - if (element.equals(checkedElement)) { - return true - } - - if (element instanceof DeleteMessage) { - if ((element as DeleteMessage).target.equals(target)) { - error(String.format( - "Element \"" + target + - "\" can not be used at this point! A delete message was already defined on this timeline." - ), checkedAttribute, index) - return true - } - } - - if (element instanceof CombinedFragment) { - if(checkElementAfterDelete(element, checkedElement, target, checkedAttribute, index)) { - return true; - } - } - } - return false; - } - - /* - * check if create message could be used - */ - @Check - def checkCreateMessage(CreateMessage createMessage) { - // check if create message could be used in opened diagram - checkCreateOrDeleteCouldBeUsed() - - // check if source and target are the same - checkSameSourceAndTarget(createMessage) - var model = TextualScenarioHelper.getModelContainer(createMessage) - if (model instanceof Model && !checkCreateMessageValid(model as Model, createMessage)) { - errorCreateMessage(createMessage.target) - } - } - - def boolean checkCreateMessageValid(EObject model, CreateMessage createMessage) { - var target = createMessage.target - var elements = TextualScenarioHelper.getElements(model) - - for (EObject element : elements) { - if (element instanceof SequenceMessageType) { - if (element.equals(createMessage)) { - return true - } - - if ((element as SequenceMessageType).target.equals(target) || - (element as SequenceMessageType).source.equals(target)) { - return false - } - } - - if (element instanceof ArmTimerMessage) { - if ((element as ArmTimerMessage).participant.equals(target)) { - return false - } - } - - if (element instanceof LostMessage) { - if ((element as LostMessage).source.equals(target)) { - return false - } - } - - if (element instanceof FoundMessage) { - if ((element as FoundMessage).target.equals(target)) { - return false - } - } - - if (element instanceof CombinedFragment) { - if ((element as CombinedFragment).timelines.contains(target)) { - return false - } else { - if (!(checkCreateMessageValid(element, createMessage) as Boolean)) { - return false - } - } - } - - if (element instanceof StateFragment) { - if ((element as StateFragment).timeline.equals(target)) { - return false - } - } - - if (element instanceof Reference) { - if ((element as Reference).timelines.contains(target)) { - return false; - } - } - } - return true - } - - def errorCreateMessage(String target) { - error(String.format("Target \"" + target +"\" can not be used in a create message at this point! Other operations were already defined on this timeline."), - TextualScenarioPackage.Literals.SEQUENCE_MESSAGE_TYPE__TARGET) - } - - - /* - * Validate a State Fragment - */ - @Check - def checkStateFragment(StateFragment fragment) { - if (!TextualScenarioHelper.participantsDefinedBeforeNames(fragment).contains(fragment.timeline)) { - error(String.format("Timeline not defined in text editor!", fragment.keyword), - TextualScenarioPackage.Literals.STATE_FRAGMENT__TIMELINE) - return - } - - var scenarioType = EmbeddedEditorInstanceHelper.getScenarioType(); - if (fragment.keyword.equals(DslConstants.FUNCTION) && scenarioType.equals(DslConstants.FUNCTIONAL)) { - error(String.format("\'function\' can not be used in this diagram!"), - TextualScenarioPackage.Literals.STATE_FRAGMENT__KEYWORD) - return - } - - var availableStateFragments = EmbeddedEditorInstanceHelper.getAvailableStateFragments(fragment.keyword, - fragment.timeline) - if (!availableStateFragments.contains(fragment.name)) { - error( - String.format("This " + fragment.keyword + " does not exist or is not available for \"" + - fragment.timeline +"\"!"), TextualScenarioPackage.Literals.STATE_FRAGMENT__NAME) - } - - } - - /* - * Check that each withExecution message is closed by deactivation (on the proper target) - */ - @Check - def checkWithExecutionHasDeactivateModel(Model model) { - var messageWithExecutionTargets = newLinkedList - var messageWithExecutionTargetsIndex = newLinkedList - var messageWithExecutionTargetsContainer = newLinkedList - checkWithExecutionHasDeactivate(model, - messageWithExecutionTargets, - messageWithExecutionTargetsIndex, - messageWithExecutionTargetsContainer, - model.elements - ) - - showErrorWithExecutionHasDeactivate(messageWithExecutionTargets, messageWithExecutionTargetsIndex, messageWithExecutionTargetsContainer) - } - - def void showErrorWithExecutionHasDeactivate( - LinkedList messageWithExecutionTargets, - LinkedList messageWithExecutionTargetsIndex, - LinkedList messageWithExecutionTargetsContainer - ) { - // if not all withExecution messages were matched with a deactivation, show an error - // use the index list to know on which message to display the error - for (var i = 0; i < messageWithExecutionTargets.size; i++) { - var container = messageWithExecutionTargetsContainer.get(i) - if (container instanceof Model) { - error( - 'Deactivation keyword expected for a withExecution message!', - container, - TextualScenarioPackage.Literals.MODEL__ELEMENTS, - messageWithExecutionTargetsIndex.get(i) - ) - } else if (container instanceof Block) { - error( - 'Deactivation keyword expected for a withExecution message!', - container, - TextualScenarioPackage.Literals.BLOCK__BLOCK_ELEMENTS, - messageWithExecutionTargets.get(i) - ) - } - } - } - - def void checkWithExecutionHasDeactivate(EObject container, - LinkedList messageWithExecutionTargets, - LinkedList messageWithExecutionTargetsIndex, - LinkedList messageWithExecutionTargetsContainer, - List elements - ) { - // keep a list with the target of the messages that contains the withExecution keyword - // keep also a list with the index on which withExecution message is found, to know on which line to show an error - var index = 0 - for (obj : elements) { - if (obj instanceof SequenceMessage && (obj as SequenceMessage).execution !== null) { - // add the SequenceMessage with execution to a list - messageWithExecutionTargets.add((obj as SequenceMessage).target) - messageWithExecutionTargetsIndex.add(index) - messageWithExecutionTargetsContainer.add(container) - } - - if (obj instanceof ArmTimerMessage && (obj as ArmTimerMessage).execution !== null) { - messageWithExecutionTargets.add((obj as ArmTimerMessage).participant) - messageWithExecutionTargetsIndex.add(index) - messageWithExecutionTargetsContainer.add(container) - } - - if (obj instanceof FoundMessage && (obj as FoundMessage).execution !== null) { - messageWithExecutionTargets.add((obj as FoundMessage).target) - messageWithExecutionTargetsIndex.add(index) - messageWithExecutionTargetsContainer.add(container) - } - - if (obj instanceof CombinedFragment) { - var cf = obj as CombinedFragment - checkWithExecutionHasDeactivate(cf.block, messageWithExecutionTargets, - messageWithExecutionTargetsIndex, - messageWithExecutionTargetsContainer, - cf.block.blockElements - ) - cf.operands.forEach[operand | - checkWithExecutionHasDeactivate(operand.block, - messageWithExecutionTargets, - messageWithExecutionTargetsIndex, - messageWithExecutionTargetsContainer, - operand.block.blockElements - ) - ] - } - - if (obj instanceof ParticipantDeactivation) { - var targetName = (obj as ParticipantDeactivation).name - var indexOfTarget = messageWithExecutionTargets.lastIndexOf(targetName) - - if (indexOfTarget >= 0) { - messageWithExecutionTargets.remove(indexOfTarget) - messageWithExecutionTargetsIndex.remove(indexOfTarget) - messageWithExecutionTargetsContainer.remove(indexOfTarget) - } - } - index++ - } - } - - /* - * Expression shall not be empty - */ - // @Check - def checkCombinedFragmentEmptyExpression(CombinedFragment combinedFragment) { - if (combinedFragment.expression === null || combinedFragment.expression.isEmpty) { - error( - 'Expression can not be empty!', - TextualScenarioPackage.Literals.COMBINED_FRAGMENT__EXPRESSION - ) - } - } - - /* - * Expression shall not be empty - */ -// @Check - def checkOperandEmptyExpression(Operand operand) { - if (operand.expression === null || operand.expression.isEmpty) { - error( - 'Expression can not be empty!', - TextualScenarioPackage.Literals.OPERAND__EXPRESSION - ) - } - } - - /* - * Else keyword shall be put on a combined fragment that is ALT - */ - @Check - def checkElseKeyworkAvailable(Operand operand) { - if (operand.eContainer instanceof CombinedFragment) { - var combinedFragment = operand.eContainer as CombinedFragment - if (combinedFragment.keyword == 'alt' && !combinedFragment.operands.isEmpty) { - if (operand.keyword != 'else') { - error( - 'Expected \'else\' keyword!', - TextualScenarioPackage.Literals.OPERAND__KEYWORD - ) - } - } - } - } - - /* - * No keyword shall be put on a combined fragment that is not ALT - */ - @Check - def checkKeyworkNotAvailable(Operand operand) { - if (operand.eContainer instanceof CombinedFragment) { - var combinedFragment = operand.eContainer as CombinedFragment - if (combinedFragment.keyword != 'alt' && !combinedFragment.operands.isEmpty) { - if (operand.keyword !== null || !operand.keyword.isEmpty) { - error( - 'Unexpected keyword!', - TextualScenarioPackage.Literals.OPERAND__KEYWORD - ) - } - } - } - } - - /* - * Check that the combine fragments is allocated on valid timelines - */ - @Check - def checkCombinedFragmentOnValidTimelines(CombinedFragment combinedFragment) { - var participantsDefined = TextualScenarioHelper.participantsDefinedBeforeNames(combinedFragment); - var index = 0 - for (timeline : combinedFragment.timelines) { - if (!participantsDefined.contains(timeline)) { - error('Timeline not defined in text editor!', - TextualScenarioPackage.Literals.COMBINED_FRAGMENT__TIMELINES, index) - } - index++ - } - } - - /* - * Check that a inner combine fragment has timelines over a subset in the parent combined fragment - */ - @Check - def checkContainedCombinedFragment(CombinedFragment combinedFragment) { - var container = TextualScenarioHelper.getDirectContainer(combinedFragment) - if (container instanceof CombinedFragment) { - var upperContainer = getContainerCombinedFragmentTimelines(combinedFragment.timelines, container) - if (upperContainer !== null && upperContainer instanceof CombinedFragment) { - error( - 'Timelines covered by this ' + combinedFragment.keyword + - ' must be a subset of the parent covered timelines ' + - (upperContainer as CombinedFragment).timelines + "!", - TextualScenarioPackage.Literals.COMBINED_FRAGMENT__TIMELINES - ) - } - } - } - - @Check - def checkReference(Reference reference) { - // check duplicated timelines - var hashMap = new HashMap() - var index = 0; - for (timeline : reference.timelines) { - if (hashMap.get(timeline) == null) { - hashMap.put(timeline, 1) - } else { - error('Duplicated timeline!', - TextualScenarioPackage.Literals.REFERENCE__TIMELINES, index) - } - index++ - } - - // check valid timeline (participant exists in xtext) - var participantsDefined = TextualScenarioHelper.participantsDefinedBeforeNames(reference); - index = 0 - for (timeline : reference.timelines) { - if (!participantsDefined.contains(timeline)) { - error('Timeline not defined in text editor!', - TextualScenarioPackage.Literals.REFERENCE__TIMELINES, index) - } - index++ - } - - // check reference exists - if (!EmbeddedEditorInstanceHelper.referencedScenariosName.contains(reference.name)) { - error('Referenced scenario does not exist!', - TextualScenarioPackage.Literals.REFERENCE__NAME) - } - - // check that timelines are a subset of combined fragment timelines - var container = TextualScenarioHelper.getDirectContainer(reference) - if (container instanceof CombinedFragment) { - var upperContainer = getContainerCombinedFragmentTimelines(reference.timelines, container) - if (upperContainer !== null && upperContainer instanceof CombinedFragment) { - error( - 'Timelines covered by this reference must be a subset of the parent covered timelines ' + - (upperContainer as CombinedFragment).timelines + "!", - TextualScenarioPackage.Literals.REFERENCE__TIMELINES - ) - } - } - // check timeline used after delete message - var model = TextualScenarioHelper.getModelContainer(reference) - if (model instanceof Model) { - index = 0 - for (timeline : reference.timelines) { - checkElementAfterDelete(model as Model, reference, timeline, - TextualScenarioPackage.Literals.REFERENCE__TIMELINES, index++) - } - } - } - - def EObject getContainerCombinedFragmentTimelines(List timelines, CombinedFragment container) { - // timeline must be a subset of the parent timeline - if (innerCombinedFragment(timelines, container) && - !isASubset(timelines, (container as CombinedFragment).timelines)) { - return container - } else { - var upperContainer = TextualScenarioHelper.getDirectContainer(container) - if (upperContainer instanceof CombinedFragment) { - return getContainerCombinedFragmentTimelines(timelines, upperContainer as CombinedFragment); - } - } - return null - } - - /* - * check if the smallList is a subset in the containerList - */ - def boolean isASubset(List smallList, List containerList) { - for (element : smallList) { - if(!containerList.contains(element)) { - return false - } - } - return true - } - - /* - * check if the smallList is a sublist in the containerList - */ - def boolean isASublist(List smallList, List containerList) { - for (var i = 0; i < containerList.size; i++) { - if (i < containerList.size && (i + smallList.size) <= containerList.size) { - var subset = containerList.subList(i, i + smallList.size) - if (subset !== null && smallList.equals(subset)) - return true - } - } - return false - } - /* - * we consider that it is a inner combined fragment if it has some same timelines as the parent - * added this due to the limitation that a paralel combined fragment in diagram, is represented inside the text - */ - def boolean innerCombinedFragment(List timelines, CombinedFragment container) { - for (timeline : timelines) { - if (container.timelines.contains(timeline)) - return true - } - return false - } - - def getParticipantsMapKey(Participant p) { - p.name + ":" + p.keyword - } - - def getElementMapKey(EObject element) { - - if (element instanceof CombinedFragment) { - var key = element.keyword + element.expression - for (String timeline : element.timelines.toSet.sort) { - key = key + ":" + timeline - } - return key - - } - if (element instanceof SequenceMessageType) { - return element.name + ":" + element.arrow + ":" + element.source + ":" + element.target - } - - if (element instanceof ArmTimerMessage) { - return element.participant + ":" + element.name - } - } -} +/******************************************************************************* + * Copyright (c) 2020 THALES GLOBAL SERVICES. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Thales - initial API and implementation + *******************************************************************************/ +package org.polarsys.capella.scenario.editor.dsl.validation + +import org.polarsys.capella.scenario.editor.dsl.textualScenario.Participant +import org.polarsys.capella.scenario.editor.dsl.textualScenario.SequenceMessageType +import org.polarsys.capella.scenario.editor.dsl.textualScenario.SequenceMessage +import org.polarsys.capella.scenario.editor.dsl.textualScenario.ParticipantDeactivation +import org.polarsys.capella.scenario.editor.dsl.textualScenario.TextualScenarioPackage +import org.eclipse.xtext.validation.Check +import org.polarsys.capella.scenario.editor.dsl.textualScenario.Model +import org.polarsys.capella.scenario.editor.helper.EmbeddedEditorInstanceHelper +import org.polarsys.capella.scenario.editor.dsl.textualScenario.Function +import org.polarsys.capella.scenario.editor.dsl.helpers.TextualScenarioHelper +import org.polarsys.capella.scenario.editor.dsl.textualScenario.CombinedFragment +import org.eclipse.emf.ecore.EObject +import org.polarsys.capella.scenario.editor.dsl.textualScenario.DeleteMessage +import org.polarsys.capella.scenario.editor.dsl.textualScenario.CreateMessage +import org.polarsys.capella.scenario.editor.dsl.textualScenario.StateFragment +import org.polarsys.capella.scenario.editor.helper.DslConstants +import org.polarsys.capella.scenario.editor.dsl.textualScenario.Operand +import org.polarsys.capella.scenario.editor.dsl.textualScenario.Block +import org.polarsys.capella.scenario.editor.dsl.textualScenario.ArmTimerMessage +import org.eclipse.emf.ecore.EAttribute +import java.util.List +import java.util.Set +import org.polarsys.capella.scenario.editor.dsl.textualScenario.Reference +import java.util.HashMap +import java.util.LinkedList +import org.polarsys.capella.scenario.editor.dsl.textualScenario.Element +import org.eclipse.emf.ecore.EReference +import org.polarsys.capella.scenario.editor.dsl.textualScenario.LostMessage +import org.polarsys.capella.scenario.editor.dsl.textualScenario.FoundMessage +import org.polarsys.capella.scenario.editor.dsl.textualScenario.Message +import org.polarsys.capella.scenario.editor.dsl.textualScenario.LostFoundMessage + +/** + * This class contains custom validation rules. + * + * See https://www.eclipse.org/Xtext/documentation/303_runtime_concepts.html#validation + */ +class TextualScenarioValidator extends AbstractTextualScenarioValidator { + public static val INVALID_NAME = 'invalidName' + public static val DUPLICATED_NAME = 'duplicatedName' + public static val DUPLICATED_MESSAGES_NAME = 'duplicatedMessageName' + public static val SAME_SOURCE_AND_TARGET_ERROR = 'Invalid element! Source and target must be different!' + + @Check + def checkPartExists(Participant participant) { + if (!EmbeddedEditorInstanceHelper.getAvailablePartNames(participant.keyword).contains(participant.name)) { + if (participant instanceof Function) { + error('Function does not exist!', TextualScenarioPackage.Literals.PARTICIPANT__NAME, INVALID_NAME) + } else { + error('Represented part does not exist!', TextualScenarioPackage.Literals.PARTICIPANT__NAME, + INVALID_NAME) + } + } + } + + @Check + def checkParticipantKeywordIsValid(Participant participant) { + if (!EmbeddedEditorInstanceHelper.checkValidKeyword(participant.keyword)) { + error('\'' + participant.keyword + '\' can not be used in this diagram!', + TextualScenarioPackage.Literals.PARTICIPANT__KEYWORD) + } + } + + @Check + def checkMessagesExist(SequenceMessage message) { + if (!EmbeddedEditorInstanceHelper.getExchangeNames(message.getSource, message.getTarget).contains( + message.name)) { + error('Exchange does not exist between \"' + message.source + "\" and \"" + message.target +"\"!" + , TextualScenarioPackage.Literals.MESSAGE__NAME + ) + } + } + + @Check + def checkMessagesExist(LostMessage message) { + if (!EmbeddedEditorInstanceHelper.getExchangeNames(message.getSource, null).contains( + message.name)) { + error('Exchange does not exist from \"' + message.source + "\"!" + , TextualScenarioPackage.Literals.MESSAGE__NAME + ) + } + } + + @Check + def checkMessagesExist(FoundMessage message) { + if (!EmbeddedEditorInstanceHelper.getExchangeNames(null, message.target).contains( + message.name)) { + error('Exchange does not exist to \"' + message.target + "\"!" + , TextualScenarioPackage.Literals.MESSAGE__NAME + ) + } + } + + @Check + def checkSequenceMessagesExchangeType(SequenceMessage sequenceMessage) { + checkMessagesExchangeType(sequenceMessage) + } + + @Check + def checkSequenceMessagesExchangeType(LostFoundMessage lostFoundMessage) { + checkMessagesExchangeType(lostFoundMessage) + } + + /* + * check that a CE (component exchange) and an FE (functional exchange) are not used in the same place + */ + def checkMessagesExchangeType(Message message) { + if (EmbeddedEditorInstanceHelper.isESScenario()) { + var model = TextualScenarioHelper.getModelContainer(message) + if (model instanceof Model) { + var scenarioExchangesType = TextualScenarioHelper. + getScenarioAllowedExchangesType((model as Model).elements) + var exchangeTypes = TextualScenarioHelper.getAllMessageExchangeType(message) as Set + if (scenarioExchangesType !== null && !exchangeTypes.contains(scenarioExchangesType)) { + error('Exchange type can not be used, expected ' + scenarioExchangesType + "!", + TextualScenarioPackage.Literals.MESSAGE__NAME) + } + } + } + } + + /* + * Do not allow duplicated names, we have a combination of unique keyword + name + * ex: not allowed: actor "A1", actor "A1" + * ex: allowed: actor "A1", component "A1" + */ + @Check + def checkDuplicatedParticipantsNames(Model model) { + var index = 0 + val names = newHashSet + for (p : model.participants) { + if (!names.add(getParticipantsMapKey(p))) { + error( + 'Duplicated participant!', + TextualScenarioPackage.Literals.MODEL__PARTICIPANTS, + index, + DUPLICATED_NAME + ) + } + index++ + } + } + + @Check + def checkDeactivateMessagesModel(Model model) { + checkDeactivateMessages(model, newLinkedList, model.elements) + } + + /* + * Checks on deactivation keyword + * If we encounter a deactivation on a target, check that we have a corresponding sequence message that can be deactivated + */ + def void checkDeactivateMessages(EObject container, + LinkedList messageTargets, + List elements) { + var index = 0 + // a message shall occur before a deactivation + // keep this array with the targets of each encountered message to check that the message happens before deactivation + for (obj : elements) { + if (obj instanceof SequenceMessage && (obj as SequenceMessage).execution !== null) { + // add the already encountered messages to the list + messageTargets.add((obj as SequenceMessage).target) + } + + if (obj instanceof ArmTimerMessage && (obj as ArmTimerMessage).execution !== null) { + // add the already encountered messages to the list + messageTargets.add((obj as ArmTimerMessage).participant) + } + + if (obj instanceof FoundMessage && (obj as FoundMessage).execution !== null) { + // add the already encountered messages to the list + messageTargets.add((obj as FoundMessage).target) + } + + if (obj instanceof CombinedFragment) { + var cf = obj as CombinedFragment + checkDeactivateMessages(cf.block, + messageTargets, + cf.block.blockElements + ) + cf.operands.forEach[operand | + checkDeactivateMessages(operand.block, + messageTargets, + operand.block.blockElements + ) + ] + } + + if (obj instanceof ParticipantDeactivation) { + var refFeature = TextualScenarioPackage.Literals.MODEL__ELEMENTS + if (container instanceof Block) { + refFeature = TextualScenarioPackage.Literals.BLOCK__BLOCK_ELEMENTS + } + showErrorDeactivateMessages( + obj as ParticipantDeactivation, + container, + messageTargets, + refFeature, + index + ) + } + index++ + } + } + + def showErrorDeactivateMessages( + ParticipantDeactivation deactivation, + EObject container, + LinkedList messageTargets, + EReference refFeature, + int index + ) { + // if we already encountered a message with target ad deactivation.name, + // we will remove the message from the messages list, because this message is matched with a deactivation + var indexOfTarget = messageTargets.lastIndexOf(deactivation.name) + if (indexOfTarget < 0) { + error( + 'Deactivation keyword not expected!', + container, + refFeature, + index + ) + } else { + messageTargets.remove(indexOfTarget) + } + } + + /* + * check that the messages we define are valid + * if the message is inside a combined fragment, the messages must be between the defined timelines of the combined fragment + */ + @Check + def checkDefinedTimelinesMessages(SequenceMessageType message) { + var participantsNames = TextualScenarioHelper.participantsDefinedBeforeNames(message) + if (!participantsNames.contains(message.source)) { + error(String.format("Timeline not defined in text editor!"), TextualScenarioPackage.Literals.SEQUENCE_MESSAGE_TYPE__SOURCE) + return + } + + if (!participantsNames.contains(message.target)) { + error(String.format("Timeline not defined in text editor!"), TextualScenarioPackage.Literals.SEQUENCE_MESSAGE_TYPE__TARGET) + return + } + } + + @Check + def checkContainedTimelinesMessages(SequenceMessageType message) { + // if the message is inside a combined fragment, check that source and target are covered by it + var container = TextualScenarioHelper.getDirectContainer(message) + if (container instanceof CombinedFragment) { + var upContainer = getUpperContainerCombinedFragmentTimelines(message, container) + if(upContainer !== null && upContainer instanceof CombinedFragment) { + checkTimelinesMessages(message, upContainer as CombinedFragment) + } + } + } + + def EObject getUpperContainerCombinedFragmentTimelines(SequenceMessageType message, CombinedFragment container) { + if (container.timelines.contains(message.source) || container.timelines.contains(message.target)) { + return container + } else { + var upperContainer = TextualScenarioHelper.getDirectContainer(container) + if (upperContainer instanceof CombinedFragment) { + return getUpperContainerCombinedFragmentTimelines(message, upperContainer as CombinedFragment); + } + } + return null + } + + def checkTimelinesMessages(SequenceMessageType message, CombinedFragment container) { + var msg = String.format("Timeline not covered by this " + container.keyword + "!" + + " Expected values in : " + container.timelines + ) + if (!container.timelines.contains(message.source)) { + error(msg, + TextualScenarioPackage.Literals.SEQUENCE_MESSAGE_TYPE__SOURCE) + } + + if (!container.timelines.contains(message.target)) { + error(msg, + TextualScenarioPackage.Literals.SEQUENCE_MESSAGE_TYPE__TARGET) + } + } + + + @Check + def checkDeleteMessage(DeleteMessage deleteMessage) { + checkCreateOrDeleteCouldBeUsed() + checkSameSourceAndTarget(deleteMessage) + } + + // check that in opened diagram create or delete messages could be used + def checkCreateOrDeleteCouldBeUsed() { + if (EmbeddedEditorInstanceHelper.isFSScenario() || + (EmbeddedEditorInstanceHelper.isESScenario() && !EmbeddedEditorInstanceHelper.isInteractionScenario) + ) { + error("Create or delete message can not be used in this diagram!", + TextualScenarioPackage.Literals.SEQUENCE_MESSAGE_TYPE__ARROW) + } + } + + @Check + def checkArmTimer(ArmTimerMessage armTimer) { + // check arm timer could be used in opened diagram + if (EmbeddedEditorInstanceHelper.isFSScenario()) { + error("Arm Timer can not be used in this diagram!", + TextualScenarioPackage.Literals.ARM_TIMER_MESSAGE__ARROW) + } + + // check timeline exist + if (!TextualScenarioHelper.participantsDefinedBeforeNames(armTimer).contains(armTimer.participant)) { + error("Timeline not defined in text editor!", + TextualScenarioPackage.Literals.ARM_TIMER_MESSAGE__PARTICIPANT) + } + } + + @Check + def checkLostMessage(LostMessage message) { + // check lost message could be used in opened diagram + if (!EmbeddedEditorInstanceHelper.isESScenario()) { + error("Lost message can not be used in this diagram!", + TextualScenarioPackage.Literals.LOST_FOUND_MESSAGE__ARROW) + } + + // check timeline exist + if (!TextualScenarioHelper.participantsDefinedBeforeNames(message).contains(message.source)) { + error("Timeline not defined in text editor!", + TextualScenarioPackage.Literals.LOST_MESSAGE__SOURCE) + } + } + + @Check + def checkFoundMessage(FoundMessage message) { + // check found message could be used in opened diagram + if (!EmbeddedEditorInstanceHelper.isESScenario()) { + error("Found message can not be used in this diagram!", + TextualScenarioPackage.Literals.LOST_FOUND_MESSAGE__ARROW) + } + + // check timeline exist + if (!TextualScenarioHelper.participantsDefinedBeforeNames(message).contains(message.target)) { + error("Timeline not defined in text editor!", + TextualScenarioPackage.Literals.FOUND_MESSAGE__TARGET) + } + } + + def checkSameSourceAndTarget(SequenceMessageType message) { + if (message.source.equals(message.target)) { + error(SAME_SOURCE_AND_TARGET_ERROR, + TextualScenarioPackage.Literals.SEQUENCE_MESSAGE_TYPE__TARGET) + error(SAME_SOURCE_AND_TARGET_ERROR, + TextualScenarioPackage.Literals.SEQUENCE_MESSAGE_TYPE__SOURCE) + } + } + + /* + * check if a timeline involved in a combined fragment was used after a delete message was already defined + * on the previous lines on the same timeline + */ + @Check + def checkTimelineUsedAfterDeleteMessage(CombinedFragment combinedFragment) { + var model = TextualScenarioHelper.getModelContainer(combinedFragment) + if (model instanceof Model) { + var index = 0 + for (timeline : combinedFragment.timelines) { + checkElementAfterDelete(model as Model, combinedFragment, timeline, + TextualScenarioPackage.Literals.COMBINED_FRAGMENT__TIMELINES, index++) + } + } + } + + /* + * check if the timeline involved in a state fragment was used after a delete message was already defined + * on the previous lines on the same timeline + */ + @Check + def checkTimelineUsedAfterDeleteMessage(StateFragment fragment) { + var model = TextualScenarioHelper.getModelContainer(fragment) + if (model instanceof Model) + checkElementAfterDelete(model as Model, fragment, fragment.timeline, + TextualScenarioPackage.Literals.STATE_FRAGMENT__TIMELINE, 0) + } + + /* + * check if a participant involved in arm timer was used after a delete message was already defined + * on the previous lines on the same timeline + */ + @Check + def checkParticipantUsedAfterDeleteMessage(ArmTimerMessage armTimer) { + var model = TextualScenarioHelper.getModelContainer(armTimer) + if (model instanceof Model) + checkElementAfterDelete(model as Model, armTimer, armTimer.participant, + TextualScenarioPackage.Literals.ARM_TIMER_MESSAGE__PARTICIPANT, 0) + } + + /* + * check if a participant involved in a lost message was used after a delete message was already defined + * on the previous lines on the same timeline + */ + @Check + def checkParticipantUsedAfterLostMessage(LostMessage message) { + var model = TextualScenarioHelper.getModelContainer(message) + if (model instanceof Model) + checkElementAfterDelete(model as Model, message, message.source, + TextualScenarioPackage.Literals.LOST_MESSAGE__SOURCE, 0) + } + + /* + * check if a participant involved in a lost message was used after a delete message was already defined + * on the previous lines on the same timeline + */ + @Check + def checkParticipantUsedAfterFoundMessage(FoundMessage message) { + var model = TextualScenarioHelper.getModelContainer(message) + if (model instanceof Model) + checkElementAfterDelete(model as Model, message, message.target, + TextualScenarioPackage.Literals.FOUND_MESSAGE__TARGET, 0) + } + + /* + * check if a sequence message source element was used after a delete message was already defined + * on the previous lines on the same timeline + */ + @Check + def checkMessageSourceUsedAfterDeleteMessage(SequenceMessageType message) { + var model = TextualScenarioHelper.getModelContainer(message) + if (model instanceof Model) + checkElementAfterDelete(model as Model, message, message.source, + TextualScenarioPackage.Literals.SEQUENCE_MESSAGE_TYPE__SOURCE, 0) + } + + /* + * check if a sequence message target element was used after a delete message was already defined + * on the previous lines on the same timeline + */ + @Check + def checkMessageTargetUsedAfterDeleteMessage(SequenceMessageType message) { + var model = TextualScenarioHelper.getModelContainer(message) + if (model instanceof Model) + checkElementAfterDelete(model as Model, message, message.target, + TextualScenarioPackage.Literals.SEQUENCE_MESSAGE_TYPE__TARGET, 0) + } + + + def boolean checkElementAfterDelete(EObject model, EObject checkedElement, String target, + EAttribute checkedAttribute, int index) { + var elements = TextualScenarioHelper.getContainerElements(model) + + for (EObject element : elements) { + if (element.equals(checkedElement)) { + return true + } + + if (element instanceof DeleteMessage) { + if ((element as DeleteMessage).target.equals(target)) { + error(String.format( + "Element \"" + target + + "\" can not be used at this point! A delete message was already defined on this timeline." + ), checkedAttribute, index) + return true + } + } + + if (element instanceof CombinedFragment) { + if(checkElementAfterDelete(element, checkedElement, target, checkedAttribute, index)) { + return true; + } + } + } + return false; + } + + /* + * check if create message could be used + */ + @Check + def checkCreateMessage(CreateMessage createMessage) { + // check if create message could be used in opened diagram + checkCreateOrDeleteCouldBeUsed() + + // check if source and target are the same + checkSameSourceAndTarget(createMessage) + var model = TextualScenarioHelper.getModelContainer(createMessage) + if (model instanceof Model && !checkCreateMessageValid(model as Model, createMessage)) { + errorCreateMessage(createMessage.target) + } + } + + def boolean checkCreateMessageValid(EObject model, CreateMessage createMessage) { + var target = createMessage.target + var elements = TextualScenarioHelper.getContainerElements(model) + + for (EObject element : elements) { + if (element instanceof SequenceMessageType) { + if (element.equals(createMessage)) { + return true + } + + if ((element as SequenceMessageType).target.equals(target) || + (element as SequenceMessageType).source.equals(target)) { + return false + } + } + + if (element instanceof ArmTimerMessage) { + if ((element as ArmTimerMessage).participant.equals(target)) { + return false + } + } + + if (element instanceof LostMessage) { + if ((element as LostMessage).source.equals(target)) { + return false + } + } + + if (element instanceof FoundMessage) { + if ((element as FoundMessage).target.equals(target)) { + return false + } + } + + if (element instanceof CombinedFragment) { + if ((element as CombinedFragment).timelines.contains(target)) { + return false + } else { + if (!(checkCreateMessageValid(element, createMessage) as Boolean)) { + return false + } + } + } + + if (element instanceof StateFragment) { + if ((element as StateFragment).timeline.equals(target)) { + return false + } + } + + if (element instanceof Reference) { + if ((element as Reference).timelines.contains(target)) { + return false; + } + } + } + return true + } + + def errorCreateMessage(String target) { + error(String.format("Target \"" + target +"\" can not be used in a create message at this point! Other operations were already defined on this timeline."), + TextualScenarioPackage.Literals.SEQUENCE_MESSAGE_TYPE__TARGET) + } + + + /* + * Validate a State Fragment + */ + @Check + def checkStateFragment(StateFragment fragment) { + if (!TextualScenarioHelper.participantsDefinedBeforeNames(fragment).contains(fragment.timeline)) { + error(String.format("Timeline not defined in text editor!", fragment.keyword), + TextualScenarioPackage.Literals.STATE_FRAGMENT__TIMELINE) + return + } + + var scenarioType = EmbeddedEditorInstanceHelper.getScenarioType(); + if (fragment.keyword.equals(DslConstants.FUNCTION) && scenarioType.equals(DslConstants.FUNCTIONAL)) { + error(String.format("\'function\' can not be used in this diagram!"), + TextualScenarioPackage.Literals.STATE_FRAGMENT__KEYWORD) + return + } + + var availableStateFragments = EmbeddedEditorInstanceHelper.getAvailableStateFragments(fragment.keyword, + fragment.timeline) + if (!availableStateFragments.contains(fragment.name)) { + error( + String.format("This " + fragment.keyword + " does not exist or is not available for \"" + + fragment.timeline +"\"!"), TextualScenarioPackage.Literals.STATE_FRAGMENT__NAME) + } + + } + + /* + * Check that each withExecution message is closed by deactivation (on the proper target) + */ + @Check + def checkWithExecutionHasDeactivateModel(Model model) { + var messageWithExecutionTargets = newLinkedList + var messageWithExecutionTargetsIndex = newLinkedList + var messageWithExecutionTargetsContainer = newLinkedList + checkWithExecutionHasDeactivate(model, + messageWithExecutionTargets, + messageWithExecutionTargetsIndex, + messageWithExecutionTargetsContainer, + model.elements + ) + + showErrorWithExecutionHasDeactivate(messageWithExecutionTargets, messageWithExecutionTargetsIndex, messageWithExecutionTargetsContainer) + } + + def void showErrorWithExecutionHasDeactivate( + LinkedList messageWithExecutionTargets, + LinkedList messageWithExecutionTargetsIndex, + LinkedList messageWithExecutionTargetsContainer + ) { + // if not all withExecution messages were matched with a deactivation, show an error + // use the index list to know on which message to display the error + for (var i = 0; i < messageWithExecutionTargets.size; i++) { + var container = messageWithExecutionTargetsContainer.get(i) + if (container instanceof Model) { + error( + 'Deactivation keyword expected for a withExecution message!', + container, + TextualScenarioPackage.Literals.MODEL__ELEMENTS, + messageWithExecutionTargetsIndex.get(i) + ) + } else if (container instanceof Block) { + error( + 'Deactivation keyword expected for a withExecution message!', + container, + TextualScenarioPackage.Literals.BLOCK__BLOCK_ELEMENTS, + messageWithExecutionTargets.get(i) + ) + } + } + } + + def void checkWithExecutionHasDeactivate(EObject container, + LinkedList messageWithExecutionTargets, + LinkedList messageWithExecutionTargetsIndex, + LinkedList messageWithExecutionTargetsContainer, + List elements + ) { + // keep a list with the target of the messages that contains the withExecution keyword + // keep also a list with the index on which withExecution message is found, to know on which line to show an error + var index = 0 + for (obj : elements) { + if (obj instanceof SequenceMessage && (obj as SequenceMessage).execution !== null) { + // add the SequenceMessage with execution to a list + messageWithExecutionTargets.add((obj as SequenceMessage).target) + messageWithExecutionTargetsIndex.add(index) + messageWithExecutionTargetsContainer.add(container) + } + + if (obj instanceof ArmTimerMessage && (obj as ArmTimerMessage).execution !== null) { + messageWithExecutionTargets.add((obj as ArmTimerMessage).participant) + messageWithExecutionTargetsIndex.add(index) + messageWithExecutionTargetsContainer.add(container) + } + + if (obj instanceof FoundMessage && (obj as FoundMessage).execution !== null) { + messageWithExecutionTargets.add((obj as FoundMessage).target) + messageWithExecutionTargetsIndex.add(index) + messageWithExecutionTargetsContainer.add(container) + } + + if (obj instanceof CombinedFragment) { + var cf = obj as CombinedFragment + checkWithExecutionHasDeactivate(cf.block, messageWithExecutionTargets, + messageWithExecutionTargetsIndex, + messageWithExecutionTargetsContainer, + cf.block.blockElements + ) + cf.operands.forEach[operand | + checkWithExecutionHasDeactivate(operand.block, + messageWithExecutionTargets, + messageWithExecutionTargetsIndex, + messageWithExecutionTargetsContainer, + operand.block.blockElements + ) + ] + } + + if (obj instanceof ParticipantDeactivation) { + var targetName = (obj as ParticipantDeactivation).name + var indexOfTarget = messageWithExecutionTargets.lastIndexOf(targetName) + + if (indexOfTarget >= 0) { + messageWithExecutionTargets.remove(indexOfTarget) + messageWithExecutionTargetsIndex.remove(indexOfTarget) + messageWithExecutionTargetsContainer.remove(indexOfTarget) + } + } + index++ + } + } + + /* + * Else keyword shall be put on a combined fragment that is ALT + */ + @Check + def checkElseKeyworkAvailable(Operand operand) { + if (operand.eContainer instanceof CombinedFragment) { + var combinedFragment = operand.eContainer as CombinedFragment + if (combinedFragment.keyword == 'alt' && !combinedFragment.operands.isEmpty) { + if (operand.keyword != 'else') { + error( + 'Expected \'else\' keyword!', + TextualScenarioPackage.Literals.OPERAND__KEYWORD + ) + } + } + } + } + + /* + * No keyword shall be put on a combined fragment that is not ALT + */ + @Check + def checkKeyworkNotAvailable(Operand operand) { + if (operand.eContainer instanceof CombinedFragment) { + var combinedFragment = operand.eContainer as CombinedFragment + if (combinedFragment.keyword != 'alt' && !combinedFragment.operands.isEmpty) { + if (operand.keyword !== null || !operand.keyword.isEmpty) { + error( + 'Unexpected keyword!', + TextualScenarioPackage.Literals.OPERAND__KEYWORD + ) + } + } + } + } + + /* + * Check that the combine fragments is allocated on valid timelines + */ + @Check + def checkCombinedFragmentOnValidTimelines(CombinedFragment combinedFragment) { + var participantsDefined = TextualScenarioHelper.participantsDefinedBeforeNames(combinedFragment); + var index = 0 + for (timeline : combinedFragment.timelines) { + if (!participantsDefined.contains(timeline)) { + error('Timeline not defined in text editor!', + TextualScenarioPackage.Literals.COMBINED_FRAGMENT__TIMELINES, index) + } + index++ + } + } + + /* + * Check that a inner combine fragment has timelines over a subset in the parent combined fragment + */ + @Check + def checkContainedCombinedFragment(CombinedFragment combinedFragment) { + var container = TextualScenarioHelper.getDirectContainer(combinedFragment) + if (container instanceof CombinedFragment) { + var upperContainer = getContainerCombinedFragmentTimelines(combinedFragment.timelines, container) + if (upperContainer !== null && upperContainer instanceof CombinedFragment) { + error( + 'Timelines covered by this ' + combinedFragment.keyword + + ' must be a subset of the parent covered timelines ' + + (upperContainer as CombinedFragment).timelines + "!", + TextualScenarioPackage.Literals.COMBINED_FRAGMENT__TIMELINES + ) + } + } + } + + @Check + def checkReference(Reference reference) { + // check duplicated timelines + var hashMap = new HashMap() + var index = 0; + for (timeline : reference.timelines) { + if (hashMap.get(timeline) == null) { + hashMap.put(timeline, 1) + } else { + error('Duplicated timeline!', + TextualScenarioPackage.Literals.REFERENCE__TIMELINES, index) + } + index++ + } + + // check valid timeline (participant exists in xtext) + var participantsDefined = TextualScenarioHelper.participantsDefinedBeforeNames(reference); + index = 0 + for (timeline : reference.timelines) { + if (!participantsDefined.contains(timeline)) { + error('Timeline not defined in text editor!', + TextualScenarioPackage.Literals.REFERENCE__TIMELINES, index) + } + index++ + } + + // check reference exists + if (!EmbeddedEditorInstanceHelper.referencedScenariosName.contains(reference.name)) { + error('Referenced scenario does not exist!', + TextualScenarioPackage.Literals.REFERENCE__NAME) + } + + // check that timelines are a subset of combined fragment timelines + var container = TextualScenarioHelper.getDirectContainer(reference) + if (container instanceof CombinedFragment) { + var upperContainer = getContainerCombinedFragmentTimelines(reference.timelines, container) + if (upperContainer !== null && upperContainer instanceof CombinedFragment) { + error( + 'Timelines covered by this reference must be a subset of the parent covered timelines ' + + (upperContainer as CombinedFragment).timelines + "!", + TextualScenarioPackage.Literals.REFERENCE__TIMELINES + ) + } + } + // check timeline used after delete message + var model = TextualScenarioHelper.getModelContainer(reference) + if (model instanceof Model) { + index = 0 + for (timeline : reference.timelines) { + checkElementAfterDelete(model as Model, reference, timeline, + TextualScenarioPackage.Literals.REFERENCE__TIMELINES, index++) + } + } + } + + def EObject getContainerCombinedFragmentTimelines(List timelines, CombinedFragment container) { + // timeline must be a subset of the parent timeline + if (innerCombinedFragment(timelines, container) && + !isASubset(timelines, (container as CombinedFragment).timelines)) { + return container + } else { + var upperContainer = TextualScenarioHelper.getDirectContainer(container) + if (upperContainer instanceof CombinedFragment) { + return getContainerCombinedFragmentTimelines(timelines, upperContainer as CombinedFragment); + } + } + return null + } + + /* + * check if the smallList is a subset in the containerList + */ + def boolean isASubset(List smallList, List containerList) { + for (element : smallList) { + if(!containerList.contains(element)) { + return false + } + } + return true + } + + /* + * check if the smallList is a sublist in the containerList + */ + def boolean isASublist(List smallList, List containerList) { + for (var i = 0; i < containerList.size; i++) { + if (i < containerList.size && (i + smallList.size) <= containerList.size) { + var subset = containerList.subList(i, i + smallList.size) + if (subset !== null && smallList.equals(subset)) + return true + } + } + return false + } + /* + * we consider that it is a inner combined fragment if it has some same timelines as the parent + * added this due to the limitation that a paralel combined fragment in diagram, is represented inside the text + */ + def boolean innerCombinedFragment(List timelines, CombinedFragment container) { + for (timeline : timelines) { + if (container.timelines.contains(timeline)) + return true + } + return false + } + + def getParticipantsMapKey(Participant p) { + p.name + ":" + p.keyword + } + + def getElementMapKey(EObject element) { + + if (element instanceof CombinedFragment) { + var key = element.keyword + element.expression + for (String timeline : element.timelines.toSet.sort) { + key = key + ":" + timeline + } + return key + + } + if (element instanceof SequenceMessageType) { + return element.name + ":" + element.arrow + ":" + element.source + ":" + element.target + } + + if (element instanceof ArmTimerMessage) { + return element.participant + ":" + element.name + } + } +} diff --git a/plugins/org.polarsys.capella.scenario.editor.dsl/xtend-gen/org/polarsys/capella/scenario/editor/dsl/helpers/TextualScenarioHelper.java b/plugins/org.polarsys.capella.scenario.editor.dsl/xtend-gen/org/polarsys/capella/scenario/editor/dsl/helpers/TextualScenarioHelper.java index 3c74bcac..9c14b5c2 100644 --- a/plugins/org.polarsys.capella.scenario.editor.dsl/xtend-gen/org/polarsys/capella/scenario/editor/dsl/helpers/TextualScenarioHelper.java +++ b/plugins/org.polarsys.capella.scenario.editor.dsl/xtend-gen/org/polarsys/capella/scenario/editor/dsl/helpers/TextualScenarioHelper.java @@ -1,15 +1,3 @@ -/******************************************************************************* - * Copyright (c) 2020 THALES GLOBAL SERVICES. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * http://www.eclipse.org/legal/epl-2.0 - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Thales - initial API and implementation - ******************************************************************************/ /** * Copyright (c) 2020 THALES GLOBAL SERVICES. * @@ -192,7 +180,7 @@ public static boolean isParticipantKeyword(final String keywordValue) { /** * get all elements on the same level as modelContainer */ - public static List getElements(final EObject modelContainer) { + public static List getContainerElements(final EObject modelContainer) { if ((modelContainer instanceof Model)) { return ((Model) modelContainer).getElements(); } @@ -208,7 +196,23 @@ public static List getElements(final EObject modelContainer) { if ((modelContainer instanceof Block)) { return ((Block) modelContainer).getBlockElements(); } - return null; + return CollectionLiterals.newArrayList(); + } + + /** + * get all elements from xtext + */ + public static List getAllElements(final EObject modelContainer, final List allElements) { + List _containerElements = TextualScenarioHelper.getContainerElements(modelContainer); + for (final Element element : _containerElements) { + if ((!(element instanceof CombinedFragment))) { + allElements.add(element); + } else { + allElements.add(element); + TextualScenarioHelper.getAllElements(element, allElements); + } + } + return allElements; } /** diff --git a/plugins/org.polarsys.capella.scenario.editor.dsl/xtend-gen/org/polarsys/capella/scenario/editor/dsl/validation/TextualScenarioValidator.java b/plugins/org.polarsys.capella.scenario.editor.dsl/xtend-gen/org/polarsys/capella/scenario/editor/dsl/validation/TextualScenarioValidator.java index 7f6de3e9..8f429926 100644 --- a/plugins/org.polarsys.capella.scenario.editor.dsl/xtend-gen/org/polarsys/capella/scenario/editor/dsl/validation/TextualScenarioValidator.java +++ b/plugins/org.polarsys.capella.scenario.editor.dsl/xtend-gen/org/polarsys/capella/scenario/editor/dsl/validation/TextualScenarioValidator.java @@ -59,17 +59,20 @@ */ @SuppressWarnings("all") public class TextualScenarioValidator extends AbstractTextualScenarioValidator { - public static final String INVALID_NAME = "invalidName"; + public final static String INVALID_NAME = "invalidName"; - public static final String DUPLICATED_NAME = "duplicatedName"; + public final static String DUPLICATED_NAME = "duplicatedName"; - public static final String DUPLICATED_MESSAGES_NAME = "duplicatedMessageName"; + public final static String DUPLICATED_MESSAGES_NAME = "duplicatedMessageName"; - public static final String SAME_SOURCE_AND_TARGET_ERROR = "Invalid element! Source and target must be different!"; + public final static String SAME_SOURCE_AND_TARGET_ERROR = "Invalid element! Source and target must be different!"; @Check public void checkPartExists(final Participant participant) { - boolean _contains = EmbeddedEditorInstanceHelper.getAvailablePartNames(participant.getKeyword()).contains(participant.getName()); + String _keyword = participant.getKeyword(); + List _availablePartNames = EmbeddedEditorInstanceHelper.getAvailablePartNames(_keyword); + String _name = participant.getName(); + boolean _contains = _availablePartNames.contains(_name); boolean _not = (!_contains); if (_not) { if ((participant instanceof Function)) { @@ -83,11 +86,12 @@ public void checkPartExists(final Participant participant) { @Check public void checkParticipantKeywordIsValid(final Participant participant) { - boolean _checkValidKeyword = EmbeddedEditorInstanceHelper.checkValidKeyword(participant.getKeyword()); + String _keyword = participant.getKeyword(); + boolean _checkValidKeyword = EmbeddedEditorInstanceHelper.checkValidKeyword(_keyword); boolean _not = (!_checkValidKeyword); if (_not) { - String _keyword = participant.getKeyword(); - String _plus = ("\'" + _keyword); + String _keyword_1 = participant.getKeyword(); + String _plus = ("\'" + _keyword_1); String _plus_1 = (_plus + "\' can not be used in this diagram!"); this.error(_plus_1, TextualScenarioPackage.Literals.PARTICIPANT__KEYWORD); @@ -96,39 +100,50 @@ public void checkParticipantKeywordIsValid(final Participant participant) { @Check public void checkMessagesExist(final SequenceMessage message) { - boolean _contains = EmbeddedEditorInstanceHelper.getExchangeNames(message.getSource(), message.getTarget()).contains( - message.getName()); + String _source = message.getSource(); + String _target = message.getTarget(); + List _exchangeNames = EmbeddedEditorInstanceHelper.getExchangeNames(_source, _target); + String _name = message.getName(); + boolean _contains = _exchangeNames.contains(_name); boolean _not = (!_contains); if (_not) { - String _source = message.getSource(); - String _plus = ("Exchange does not exist between \"" + _source); + String _source_1 = message.getSource(); + String _plus = ("Exchange does not exist between \"" + _source_1); String _plus_1 = (_plus + "\" and \""); - String _target = message.getTarget(); - String _plus_2 = (_plus_1 + _target); + String _target_1 = message.getTarget(); + String _plus_2 = (_plus_1 + _target_1); String _plus_3 = (_plus_2 + "\"!"); this.error(_plus_3, TextualScenarioPackage.Literals.MESSAGE__NAME); } } - /** - * Check that the source and the target of the sequence messages type are defined in text, before using them in the message - */ @Check - public void checkParticipantsInvolvedExist(final SequenceMessageType message) { - ArrayList participantsDefined = TextualScenarioHelper.participantsDefinedBeforeNames(message); - boolean _contains = participantsDefined.contains(message.getSource()); + public void checkMessagesExist(final LostMessage message) { + String _source = message.getSource(); + List _exchangeNames = EmbeddedEditorInstanceHelper.getExchangeNames(_source, null); + String _name = message.getName(); + boolean _contains = _exchangeNames.contains(_name); boolean _not = (!_contains); if (_not) { - this.error( - "Source participant not defined in text editor!", - TextualScenarioPackage.Literals.SEQUENCE_MESSAGE_TYPE__SOURCE); + String _source_1 = message.getSource(); + String _plus = ("Exchange does not exist from \"" + _source_1); + String _plus_1 = (_plus + "\"!"); + this.error(_plus_1, TextualScenarioPackage.Literals.MESSAGE__NAME); } - boolean _contains_1 = participantsDefined.contains(message.getTarget()); - boolean _not_1 = (!_contains_1); - if (_not_1) { - this.error( - "Target participant not defined in text editor!", - TextualScenarioPackage.Literals.SEQUENCE_MESSAGE_TYPE__TARGET); + } + + @Check + public void checkMessagesExist(final FoundMessage message) { + String _target = message.getTarget(); + List _exchangeNames = EmbeddedEditorInstanceHelper.getExchangeNames(null, _target); + String _name = message.getName(); + boolean _contains = _exchangeNames.contains(_name); + boolean _not = (!_contains); + if (_not) { + String _target_1 = message.getTarget(); + String _plus = ("Exchange does not exist to \"" + _target_1); + String _plus_1 = (_plus + "\"!"); + this.error(_plus_1, TextualScenarioPackage.Literals.MESSAGE__NAME); } } @@ -150,7 +165,8 @@ public void checkMessagesExchangeType(final Message message) { if (_isESScenario) { EObject model = TextualScenarioHelper.getModelContainer(message); if ((model instanceof Model)) { - Object scenarioExchangesType = TextualScenarioHelper.getScenarioAllowedExchangesType(((Model) model).getElements()); + EList _elements = ((Model) model).getElements(); + Object scenarioExchangesType = TextualScenarioHelper.getScenarioAllowedExchangesType(_elements); Set _allMessageExchangeType = TextualScenarioHelper.getAllMessageExchangeType(message); Set exchangeTypes = ((Set) _allMessageExchangeType); if (((scenarioExchangesType != null) && (!exchangeTypes.contains(scenarioExchangesType)))) { @@ -173,7 +189,8 @@ public void checkDuplicatedParticipantsNames(final Model model) { EList _participants = model.getParticipants(); for (final Participant p : _participants) { { - boolean _add = names.add(this.getParticipantsMapKey(p)); + String _participantsMapKey = this.getParticipantsMapKey(p); + boolean _add = names.add(_participantsMapKey); boolean _not = (!_add); if (_not) { this.error( @@ -188,7 +205,9 @@ public void checkDuplicatedParticipantsNames(final Model model) { @Check public void checkDeactivateMessagesModel(final Model model) { - this.checkDeactivateMessages(model, CollectionLiterals.newLinkedList(), model.getElements()); + LinkedList _newLinkedList = CollectionLiterals.newLinkedList(); + EList _elements = model.getElements(); + this.checkDeactivateMessages(model, _newLinkedList, _elements); } /** @@ -200,23 +219,31 @@ public void checkDeactivateMessages(final EObject container, final LinkedList _blockElements = _block_1.getBlockElements(); + this.checkDeactivateMessages(_block, messageTargets, _blockElements); + EList _operands = cf.getOperands(); final Consumer _function = (Operand operand) -> { - this.checkDeactivateMessages(operand.getBlock(), messageTargets, - operand.getBlock().getBlockElements()); + Block _block_2 = operand.getBlock(); + Block _block_3 = operand.getBlock(); + EList _blockElements_1 = _block_3.getBlockElements(); + this.checkDeactivateMessages(_block_2, messageTargets, _blockElements_1); }; - cf.getOperands().forEach(_function); + _operands.forEach(_function); } if ((obj instanceof ParticipantDeactivation)) { EReference refFeature = TextualScenarioPackage.Literals.MODEL__ELEMENTS; @@ -234,7 +261,8 @@ public void checkDeactivateMessages(final EObject container, final LinkedList messageTargets, final EReference refFeature, final int index) { String _xblockexpression = null; { - int indexOfTarget = messageTargets.lastIndexOf(deactivation.getName()); + String _name = deactivation.getName(); + int indexOfTarget = messageTargets.lastIndexOf(_name); String _xifexpression = null; if ((indexOfTarget < 0)) { this.error( @@ -254,16 +282,20 @@ public String showErrorDeactivateMessages(final ParticipantDeactivation deactiva @Check public void checkDefinedTimelinesMessages(final SequenceMessageType message) { ArrayList participantsNames = TextualScenarioHelper.participantsDefinedBeforeNames(message); - boolean _contains = participantsNames.contains(message.getSource()); + String _source = message.getSource(); + boolean _contains = participantsNames.contains(_source); boolean _not = (!_contains); if (_not) { - this.error(String.format("Timeline not defined in text editor!"), TextualScenarioPackage.Literals.SEQUENCE_MESSAGE_TYPE__SOURCE); + String _format = String.format("Timeline not defined in text editor!"); + this.error(_format, TextualScenarioPackage.Literals.SEQUENCE_MESSAGE_TYPE__SOURCE); return; } - boolean _contains_1 = participantsNames.contains(message.getTarget()); + String _target = message.getTarget(); + boolean _contains_1 = participantsNames.contains(_target); boolean _not_1 = (!_contains_1); if (_not_1) { - this.error(String.format("Timeline not defined in text editor!"), TextualScenarioPackage.Literals.SEQUENCE_MESSAGE_TYPE__TARGET); + String _format_1 = String.format("Timeline not defined in text editor!"); + this.error(_format_1, TextualScenarioPackage.Literals.SEQUENCE_MESSAGE_TYPE__TARGET); return; } } @@ -300,13 +332,17 @@ public void checkTimelinesMessages(final SequenceMessageType message, final Comb EList _timelines = container.getTimelines(); String _plus_3 = (_plus_2 + _timelines); String msg = String.format(_plus_3); - boolean _contains = container.getTimelines().contains(message.getSource()); + EList _timelines_1 = container.getTimelines(); + String _source = message.getSource(); + boolean _contains = _timelines_1.contains(_source); boolean _not = (!_contains); if (_not) { this.error(msg, TextualScenarioPackage.Literals.SEQUENCE_MESSAGE_TYPE__SOURCE); } - boolean _contains_1 = container.getTimelines().contains(message.getTarget()); + EList _timelines_2 = container.getTimelines(); + String _target = message.getTarget(); + boolean _contains_1 = _timelines_2.contains(_target); boolean _not_1 = (!_contains_1); if (_not_1) { this.error(msg, @@ -334,7 +370,9 @@ public void checkArmTimer(final ArmTimerMessage armTimer) { this.error("Arm Timer can not be used in this diagram!", TextualScenarioPackage.Literals.ARM_TIMER_MESSAGE__ARROW); } - boolean _contains = TextualScenarioHelper.participantsDefinedBeforeNames(armTimer).contains(armTimer.getParticipant()); + ArrayList _participantsDefinedBeforeNames = TextualScenarioHelper.participantsDefinedBeforeNames(armTimer); + String _participant = armTimer.getParticipant(); + boolean _contains = _participantsDefinedBeforeNames.contains(_participant); boolean _not = (!_contains); if (_not) { this.error("Timeline not defined in text editor!", @@ -350,7 +388,9 @@ public void checkLostMessage(final LostMessage message) { this.error("Lost message can not be used in this diagram!", TextualScenarioPackage.Literals.LOST_FOUND_MESSAGE__ARROW); } - boolean _contains = TextualScenarioHelper.participantsDefinedBeforeNames(message).contains(message.getSource()); + ArrayList _participantsDefinedBeforeNames = TextualScenarioHelper.participantsDefinedBeforeNames(message); + String _source = message.getSource(); + boolean _contains = _participantsDefinedBeforeNames.contains(_source); boolean _not_1 = (!_contains); if (_not_1) { this.error("Timeline not defined in text editor!", @@ -366,7 +406,9 @@ public void checkFoundMessage(final FoundMessage message) { this.error("Found message can not be used in this diagram!", TextualScenarioPackage.Literals.LOST_FOUND_MESSAGE__ARROW); } - boolean _contains = TextualScenarioHelper.participantsDefinedBeforeNames(message).contains(message.getTarget()); + ArrayList _participantsDefinedBeforeNames = TextualScenarioHelper.participantsDefinedBeforeNames(message); + String _target = message.getTarget(); + boolean _contains = _participantsDefinedBeforeNames.contains(_target); boolean _not_1 = (!_contains); if (_not_1) { this.error("Timeline not defined in text editor!", @@ -375,7 +417,9 @@ public void checkFoundMessage(final FoundMessage message) { } public void checkSameSourceAndTarget(final SequenceMessageType message) { - boolean _equals = message.getSource().equals(message.getTarget()); + String _source = message.getSource(); + String _target = message.getTarget(); + boolean _equals = _source.equals(_target); if (_equals) { this.error(TextualScenarioValidator.SAME_SOURCE_AND_TARGET_ERROR, TextualScenarioPackage.Literals.SEQUENCE_MESSAGE_TYPE__TARGET); @@ -413,7 +457,8 @@ public boolean checkTimelineUsedAfterDeleteMessage(final StateFragment fragment) EObject model = TextualScenarioHelper.getModelContainer(fragment); boolean _xifexpression = false; if ((model instanceof Model)) { - _xifexpression = this.checkElementAfterDelete(((Model) model), fragment, fragment.getTimeline(), + String _timeline = fragment.getTimeline(); + _xifexpression = this.checkElementAfterDelete(((Model) model), fragment, _timeline, TextualScenarioPackage.Literals.STATE_FRAGMENT__TIMELINE, 0); } _xblockexpression = _xifexpression; @@ -432,7 +477,8 @@ public boolean checkParticipantUsedAfterDeleteMessage(final ArmTimerMessage armT EObject model = TextualScenarioHelper.getModelContainer(armTimer); boolean _xifexpression = false; if ((model instanceof Model)) { - _xifexpression = this.checkElementAfterDelete(((Model) model), armTimer, armTimer.getParticipant(), + String _participant = armTimer.getParticipant(); + _xifexpression = this.checkElementAfterDelete(((Model) model), armTimer, _participant, TextualScenarioPackage.Literals.ARM_TIMER_MESSAGE__PARTICIPANT, 0); } _xblockexpression = _xifexpression; @@ -451,7 +497,8 @@ public boolean checkParticipantUsedAfterLostMessage(final LostMessage message) { EObject model = TextualScenarioHelper.getModelContainer(message); boolean _xifexpression = false; if ((model instanceof Model)) { - _xifexpression = this.checkElementAfterDelete(((Model) model), message, message.getSource(), + String _source = message.getSource(); + _xifexpression = this.checkElementAfterDelete(((Model) model), message, _source, TextualScenarioPackage.Literals.LOST_MESSAGE__SOURCE, 0); } _xblockexpression = _xifexpression; @@ -470,7 +517,8 @@ public boolean checkParticipantUsedAfterFoundMessage(final FoundMessage message) EObject model = TextualScenarioHelper.getModelContainer(message); boolean _xifexpression = false; if ((model instanceof Model)) { - _xifexpression = this.checkElementAfterDelete(((Model) model), message, message.getTarget(), + String _target = message.getTarget(); + _xifexpression = this.checkElementAfterDelete(((Model) model), message, _target, TextualScenarioPackage.Literals.FOUND_MESSAGE__TARGET, 0); } _xblockexpression = _xifexpression; @@ -489,7 +537,8 @@ public boolean checkMessageSourceUsedAfterDeleteMessage(final SequenceMessageTyp EObject model = TextualScenarioHelper.getModelContainer(message); boolean _xifexpression = false; if ((model instanceof Model)) { - _xifexpression = this.checkElementAfterDelete(((Model) model), message, message.getSource(), + String _source = message.getSource(); + _xifexpression = this.checkElementAfterDelete(((Model) model), message, _source, TextualScenarioPackage.Literals.SEQUENCE_MESSAGE_TYPE__SOURCE, 0); } _xblockexpression = _xifexpression; @@ -508,7 +557,8 @@ public boolean checkMessageTargetUsedAfterDeleteMessage(final SequenceMessageTyp EObject model = TextualScenarioHelper.getModelContainer(message); boolean _xifexpression = false; if ((model instanceof Model)) { - _xifexpression = this.checkElementAfterDelete(((Model) model), message, message.getTarget(), + String _target = message.getTarget(); + _xifexpression = this.checkElementAfterDelete(((Model) model), message, _target, TextualScenarioPackage.Literals.SEQUENCE_MESSAGE_TYPE__TARGET, 0); } _xblockexpression = _xifexpression; @@ -517,7 +567,7 @@ public boolean checkMessageTargetUsedAfterDeleteMessage(final SequenceMessageTyp } public boolean checkElementAfterDelete(final EObject model, final EObject checkedElement, final String target, final EAttribute checkedAttribute, final int index) { - List elements = TextualScenarioHelper.getElements(model); + List elements = TextualScenarioHelper.getContainerElements(model); for (final EObject element : elements) { { boolean _equals = element.equals(checkedElement); @@ -525,12 +575,13 @@ public boolean checkElementAfterDelete(final EObject model, final EObject checke return true; } if ((element instanceof DeleteMessage)) { - boolean _equals_1 = ((DeleteMessage) element).getTarget().equals(target); + String _target = ((DeleteMessage) element).getTarget(); + boolean _equals_1 = _target.equals(target); if (_equals_1) { - this.error( - String.format( - (("Element \"" + target) + - "\" can not be used at this point! A delete message was already defined on this timeline.")), checkedAttribute, index); + String _format = String.format( + (("Element \"" + target) + + "\" can not be used at this point! A delete message was already defined on this timeline.")); + this.error(_format, checkedAttribute, index); return true; } } @@ -554,13 +605,14 @@ public void checkCreateMessage(final CreateMessage createMessage) { this.checkSameSourceAndTarget(createMessage); EObject model = TextualScenarioHelper.getModelContainer(createMessage); if (((model instanceof Model) && (!this.checkCreateMessageValid(((Model) model), createMessage)))) { - this.errorCreateMessage(createMessage.getTarget()); + String _target = createMessage.getTarget(); + this.errorCreateMessage(_target); } } public boolean checkCreateMessageValid(final EObject model, final CreateMessage createMessage) { String target = createMessage.getTarget(); - List elements = TextualScenarioHelper.getElements(model); + List elements = TextualScenarioHelper.getContainerElements(model); for (final EObject element : elements) { { if ((element instanceof SequenceMessageType)) { @@ -574,25 +626,29 @@ public boolean checkCreateMessageValid(final EObject model, final CreateMessage } } if ((element instanceof ArmTimerMessage)) { - boolean _equals_1 = ((ArmTimerMessage) element).getParticipant().equals(target); + String _participant = ((ArmTimerMessage) element).getParticipant(); + boolean _equals_1 = _participant.equals(target); if (_equals_1) { return false; } } if ((element instanceof LostMessage)) { - boolean _equals_2 = ((LostMessage) element).getSource().equals(target); + String _source = ((LostMessage) element).getSource(); + boolean _equals_2 = _source.equals(target); if (_equals_2) { return false; } } if ((element instanceof FoundMessage)) { - boolean _equals_3 = ((FoundMessage) element).getTarget().equals(target); + String _target = ((FoundMessage) element).getTarget(); + boolean _equals_3 = _target.equals(target); if (_equals_3) { return false; } } if ((element instanceof CombinedFragment)) { - boolean _contains = ((CombinedFragment) element).getTimelines().contains(target); + EList _timelines = ((CombinedFragment) element).getTimelines(); + boolean _contains = _timelines.contains(target); if (_contains) { return false; } else { @@ -604,13 +660,15 @@ public boolean checkCreateMessageValid(final EObject model, final CreateMessage } } if ((element instanceof StateFragment)) { - boolean _equals_4 = ((StateFragment) element).getTimeline().equals(target); + String _timeline = ((StateFragment) element).getTimeline(); + boolean _equals_4 = _timeline.equals(target); if (_equals_4) { return false; } } if ((element instanceof Reference)) { - boolean _contains_1 = ((Reference) element).getTimelines().contains(target); + EList _timelines_1 = ((Reference) element).getTimelines(); + boolean _contains_1 = _timelines_1.contains(target); if (_contains_1) { return false; } @@ -621,7 +679,8 @@ public boolean checkCreateMessageValid(final EObject model, final CreateMessage } public void errorCreateMessage(final String target) { - this.error(String.format((("Target \"" + target) + "\" can not be used in a create message at this point! Other operations were already defined on this timeline.")), + String _format = String.format((("Target \"" + target) + "\" can not be used in a create message at this point! Other operations were already defined on this timeline.")); + this.error(_format, TextualScenarioPackage.Literals.SEQUENCE_MESSAGE_TYPE__TARGET); } @@ -630,32 +689,39 @@ public void errorCreateMessage(final String target) { */ @Check public void checkStateFragment(final StateFragment fragment) { - boolean _contains = TextualScenarioHelper.participantsDefinedBeforeNames(fragment).contains(fragment.getTimeline()); + ArrayList _participantsDefinedBeforeNames = TextualScenarioHelper.participantsDefinedBeforeNames(fragment); + String _timeline = fragment.getTimeline(); + boolean _contains = _participantsDefinedBeforeNames.contains(_timeline); boolean _not = (!_contains); if (_not) { - this.error(String.format("Timeline not defined in text editor!", fragment.getKeyword()), + String _keyword = fragment.getKeyword(); + String _format = String.format("Timeline not defined in text editor!", _keyword); + this.error(_format, TextualScenarioPackage.Literals.STATE_FRAGMENT__TIMELINE); return; } String scenarioType = EmbeddedEditorInstanceHelper.getScenarioType(); if ((fragment.getKeyword().equals(DslConstants.FUNCTION) && scenarioType.equals(DslConstants.FUNCTIONAL))) { - this.error(String.format("\'function\' can not be used in this diagram!"), + String _format_1 = String.format("\'function\' can not be used in this diagram!"); + this.error(_format_1, TextualScenarioPackage.Literals.STATE_FRAGMENT__KEYWORD); return; } - List availableStateFragments = EmbeddedEditorInstanceHelper.getAvailableStateFragments(fragment.getKeyword(), - fragment.getTimeline()); - boolean _contains_1 = availableStateFragments.contains(fragment.getName()); + String _keyword_1 = fragment.getKeyword(); + String _timeline_1 = fragment.getTimeline(); + List availableStateFragments = EmbeddedEditorInstanceHelper.getAvailableStateFragments(_keyword_1, _timeline_1); + String _name = fragment.getName(); + boolean _contains_1 = availableStateFragments.contains(_name); boolean _not_1 = (!_contains_1); if (_not_1) { - String _keyword = fragment.getKeyword(); - String _plus = ("This " + _keyword); + String _keyword_2 = fragment.getKeyword(); + String _plus = ("This " + _keyword_2); String _plus_1 = (_plus + " does not exist or is not available for \""); - String _timeline = fragment.getTimeline(); - String _plus_2 = (_plus_1 + _timeline); + String _timeline_2 = fragment.getTimeline(); + String _plus_2 = (_plus_1 + _timeline_2); String _plus_3 = (_plus_2 + "\"!"); - this.error( - String.format(_plus_3), TextualScenarioPackage.Literals.STATE_FRAGMENT__NAME); + String _format_2 = String.format(_plus_3); + this.error(_format_2, TextualScenarioPackage.Literals.STATE_FRAGMENT__NAME); } } @@ -667,8 +733,8 @@ public void checkWithExecutionHasDeactivateModel(final Model model) { LinkedList messageWithExecutionTargets = CollectionLiterals.newLinkedList(); LinkedList messageWithExecutionTargetsIndex = CollectionLiterals.newLinkedList(); LinkedList messageWithExecutionTargetsContainer = CollectionLiterals.newLinkedList(); - this.checkWithExecutionHasDeactivate(model, messageWithExecutionTargets, messageWithExecutionTargetsIndex, messageWithExecutionTargetsContainer, - model.getElements()); + EList _elements = model.getElements(); + this.checkWithExecutionHasDeactivate(model, messageWithExecutionTargets, messageWithExecutionTargetsIndex, messageWithExecutionTargetsContainer, _elements); this.showErrorWithExecutionHasDeactivate(messageWithExecutionTargets, messageWithExecutionTargetsIndex, messageWithExecutionTargetsContainer); } @@ -677,16 +743,16 @@ public void showErrorWithExecutionHasDeactivate(final LinkedList message { EObject container = messageWithExecutionTargetsContainer.get(i); if ((container instanceof Model)) { + Integer _get = messageWithExecutionTargetsIndex.get(i); this.error( "Deactivation keyword expected for a withExecution message!", container, - TextualScenarioPackage.Literals.MODEL__ELEMENTS, - (messageWithExecutionTargetsIndex.get(i)).intValue()); + TextualScenarioPackage.Literals.MODEL__ELEMENTS, (_get).intValue()); } else { if ((container instanceof Block)) { + String _get_1 = messageWithExecutionTargets.get(i); this.error( "Deactivation keyword expected for a withExecution message!", container, - TextualScenarioPackage.Literals.BLOCK__BLOCK_ELEMENTS, - messageWithExecutionTargets.get(i)); + TextualScenarioPackage.Literals.BLOCK__BLOCK_ELEMENTS, _get_1); } } } @@ -698,29 +764,37 @@ public void checkWithExecutionHasDeactivate(final EObject container, final Linke for (final Element obj : elements) { { if (((obj instanceof SequenceMessage) && (((SequenceMessage) obj).getExecution() != null))) { - messageWithExecutionTargets.add(((SequenceMessage) obj).getTarget()); + String _target = ((SequenceMessage) obj).getTarget(); + messageWithExecutionTargets.add(_target); messageWithExecutionTargetsIndex.add(Integer.valueOf(index)); messageWithExecutionTargetsContainer.add(container); } if (((obj instanceof ArmTimerMessage) && (((ArmTimerMessage) obj).getExecution() != null))) { - messageWithExecutionTargets.add(((ArmTimerMessage) obj).getParticipant()); + String _participant = ((ArmTimerMessage) obj).getParticipant(); + messageWithExecutionTargets.add(_participant); messageWithExecutionTargetsIndex.add(Integer.valueOf(index)); messageWithExecutionTargetsContainer.add(container); } if (((obj instanceof FoundMessage) && (((FoundMessage) obj).getExecution() != null))) { - messageWithExecutionTargets.add(((FoundMessage) obj).getTarget()); + String _target_1 = ((FoundMessage) obj).getTarget(); + messageWithExecutionTargets.add(_target_1); messageWithExecutionTargetsIndex.add(Integer.valueOf(index)); messageWithExecutionTargetsContainer.add(container); } if ((obj instanceof CombinedFragment)) { CombinedFragment cf = ((CombinedFragment) obj); - this.checkWithExecutionHasDeactivate(cf.getBlock(), messageWithExecutionTargets, messageWithExecutionTargetsIndex, messageWithExecutionTargetsContainer, - cf.getBlock().getBlockElements()); + Block _block = cf.getBlock(); + Block _block_1 = cf.getBlock(); + EList _blockElements = _block_1.getBlockElements(); + this.checkWithExecutionHasDeactivate(_block, messageWithExecutionTargets, messageWithExecutionTargetsIndex, messageWithExecutionTargetsContainer, _blockElements); + EList _operands = cf.getOperands(); final Consumer _function = (Operand operand) -> { - this.checkWithExecutionHasDeactivate(operand.getBlock(), messageWithExecutionTargets, messageWithExecutionTargetsIndex, messageWithExecutionTargetsContainer, - operand.getBlock().getBlockElements()); + Block _block_2 = operand.getBlock(); + Block _block_3 = operand.getBlock(); + EList _blockElements_1 = _block_3.getBlockElements(); + this.checkWithExecutionHasDeactivate(_block_2, messageWithExecutionTargets, messageWithExecutionTargetsIndex, messageWithExecutionTargetsContainer, _blockElements_1); }; - cf.getOperands().forEach(_function); + _operands.forEach(_function); } if ((obj instanceof ParticipantDeactivation)) { String targetName = ((ParticipantDeactivation) obj).getName(); @@ -736,28 +810,6 @@ public void checkWithExecutionHasDeactivate(final EObject container, final Linke } } - /** - * Expression shall not be empty - */ - public void checkCombinedFragmentEmptyExpression(final CombinedFragment combinedFragment) { - if (((combinedFragment.getExpression() == null) || combinedFragment.getExpression().isEmpty())) { - this.error( - "Expression can not be empty!", - TextualScenarioPackage.Literals.COMBINED_FRAGMENT__EXPRESSION); - } - } - - /** - * Expression shall not be empty - */ - public void checkOperandEmptyExpression(final Operand operand) { - if (((operand.getExpression() == null) || operand.getExpression().isEmpty())) { - this.error( - "Expression can not be empty!", - TextualScenarioPackage.Literals.OPERAND__EXPRESSION); - } - } - /** * Else keyword shall be put on a combined fragment that is ALT */ @@ -826,14 +878,15 @@ public void checkCombinedFragmentOnValidTimelines(final CombinedFragment combine public void checkContainedCombinedFragment(final CombinedFragment combinedFragment) { EObject container = TextualScenarioHelper.getDirectContainer(combinedFragment); if ((container instanceof CombinedFragment)) { - EObject upperContainer = this.getContainerCombinedFragmentTimelines(combinedFragment.getTimelines(), ((CombinedFragment)container)); + EList _timelines = combinedFragment.getTimelines(); + EObject upperContainer = this.getContainerCombinedFragmentTimelines(_timelines, ((CombinedFragment)container)); if (((upperContainer != null) && (upperContainer instanceof CombinedFragment))) { String _keyword = combinedFragment.getKeyword(); String _plus = ("Timelines covered by this " + _keyword); String _plus_1 = (_plus + " must be a subset of the parent covered timelines "); - EList _timelines = ((CombinedFragment) upperContainer).getTimelines(); - String _plus_2 = (_plus_1 + _timelines); + EList _timelines_1 = ((CombinedFragment) upperContainer).getTimelines(); + String _plus_2 = (_plus_1 + _timelines_1); String _plus_3 = (_plus_2 + "!"); this.error(_plus_3, TextualScenarioPackage.Literals.COMBINED_FRAGMENT__TIMELINES); @@ -873,7 +926,9 @@ public void checkReference(final Reference reference) { index++; } } - boolean _contains = EmbeddedEditorInstanceHelper.getReferencedScenariosName().contains(reference.getName()); + List _referencedScenariosName = EmbeddedEditorInstanceHelper.getReferencedScenariosName(); + String _name = reference.getName(); + boolean _contains = _referencedScenariosName.contains(_name); boolean _not = (!_contains); if (_not) { this.error("Referenced scenario does not exist!", @@ -881,10 +936,11 @@ public void checkReference(final Reference reference) { } EObject container = TextualScenarioHelper.getDirectContainer(reference); if ((container instanceof CombinedFragment)) { - EObject upperContainer = this.getContainerCombinedFragmentTimelines(reference.getTimelines(), ((CombinedFragment)container)); + EList _timelines_2 = reference.getTimelines(); + EObject upperContainer = this.getContainerCombinedFragmentTimelines(_timelines_2, ((CombinedFragment)container)); if (((upperContainer != null) && (upperContainer instanceof CombinedFragment))) { - EList _timelines_2 = ((CombinedFragment) upperContainer).getTimelines(); - String _plus = ("Timelines covered by this reference must be a subset of the parent covered timelines " + _timelines_2); + EList _timelines_3 = ((CombinedFragment) upperContainer).getTimelines(); + String _plus = ("Timelines covered by this reference must be a subset of the parent covered timelines " + _timelines_3); String _plus_1 = (_plus + "!"); this.error(_plus_1, TextualScenarioPackage.Literals.REFERENCE__TIMELINES); @@ -893,8 +949,8 @@ public void checkReference(final Reference reference) { EObject model = TextualScenarioHelper.getModelContainer(reference); if ((model instanceof Model)) { index = 0; - EList _timelines_3 = reference.getTimelines(); - for (final String timeline_2 : _timelines_3) { + EList _timelines_4 = reference.getTimelines(); + for (final String timeline_2 : _timelines_4) { int _plusPlus = index++; this.checkElementAfterDelete(((Model) model), reference, timeline_2, TextualScenarioPackage.Literals.REFERENCE__TIMELINES, _plusPlus); @@ -952,7 +1008,8 @@ public boolean isASublist(final List smallList, final List conta */ public boolean innerCombinedFragment(final List timelines, final CombinedFragment container) { for (final String timeline : timelines) { - boolean _contains = container.getTimelines().contains(timeline); + EList _timelines = container.getTimelines(); + boolean _contains = _timelines.contains(timeline); if (_contains) { return true; } @@ -972,7 +1029,9 @@ public String getElementMapKey(final EObject element) { String _keyword = ((CombinedFragment)element).getKeyword(); String _expression = ((CombinedFragment)element).getExpression(); String key = (_keyword + _expression); - List _sort = IterableExtensions.sort(IterableExtensions.toSet(((CombinedFragment)element).getTimelines())); + EList _timelines = ((CombinedFragment)element).getTimelines(); + Set _set = IterableExtensions.toSet(_timelines); + List _sort = IterableExtensions.sort(_set); for (final String timeline : _sort) { key = ((key + ":") + timeline); } diff --git a/plugins/org.polarsys.capella.scenario.editor.embeddededitor/src/org/polarsys/capella/scenario/editor/embeddededitor/commands/XtextToDiagramCommands.java b/plugins/org.polarsys.capella.scenario.editor.embeddededitor/src/org/polarsys/capella/scenario/editor/embeddededitor/commands/XtextToDiagramCommands.java index 167d6a4d..39e25827 100644 --- a/plugins/org.polarsys.capella.scenario.editor.embeddededitor/src/org/polarsys/capella/scenario/editor/embeddededitor/commands/XtextToDiagramCommands.java +++ b/plugins/org.polarsys.capella.scenario.editor.embeddededitor/src/org/polarsys/capella/scenario/editor/embeddededitor/commands/XtextToDiagramCommands.java @@ -787,6 +787,9 @@ protected static boolean hasExecution(Message elementFromXtext) { if (elementFromXtext instanceof org.polarsys.capella.scenario.editor.dsl.textualScenario.ArmTimerMessage) { return ((org.polarsys.capella.scenario.editor.dsl.textualScenario.ArmTimerMessage) elementFromXtext).getExecution() != null; } + if (elementFromXtext instanceof org.polarsys.capella.scenario.editor.dsl.textualScenario.FoundMessage) { + return ((org.polarsys.capella.scenario.editor.dsl.textualScenario.FoundMessage) elementFromXtext).getExecution() != null; + } return false; } diff --git a/plugins/org.polarsys.capella.scenario.editor/src/org/polarsys/capella/scenario/editor/helper/EmbeddedEditorInstanceHelper.java b/plugins/org.polarsys.capella.scenario.editor/src/org/polarsys/capella/scenario/editor/helper/EmbeddedEditorInstanceHelper.java index fe64442f..12a13325 100644 --- a/plugins/org.polarsys.capella.scenario.editor/src/org/polarsys/capella/scenario/editor/helper/EmbeddedEditorInstanceHelper.java +++ b/plugins/org.polarsys.capella.scenario.editor/src/org/polarsys/capella/scenario/editor/helper/EmbeddedEditorInstanceHelper.java @@ -148,8 +148,11 @@ public static boolean isFSScenario() { } public static AbstractFunction getSourceFunctionOfExchange(FunctionalExchange exchange) { + if(exchange.getSource() instanceof AbstractFunction) { + return (AbstractFunction) exchange.getSource(); + } FunctionOutputPort source = exchange.getSourceFunctionOutputPort(); - if (source != null && source.eContainer() instanceof AbstractFunction) { + if(source != null && source.eContainer() instanceof AbstractFunction) { return (AbstractFunction) source.eContainer(); } return null; @@ -161,6 +164,9 @@ public static String getSourceFunctionNameOfExchange(FunctionalExchange exchange } public static AbstractFunction getTargetFunctionOfExchange(FunctionalExchange exchange) { + if(exchange.getTarget() instanceof AbstractFunction) { + return (AbstractFunction) exchange.getTarget(); + } FunctionInputPort target = exchange.getTargetFunctionInputPort(); if (target != null && target.eContainer() instanceof AbstractFunction) { return (AbstractFunction) target.eContainer();

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 S5dzpPc`oT1Uo6nJ4*DPAmaj4Z literal 15638 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 diff --git a/plugins/org.polarsys.capella.scenario.editor.doc/html/TextualEditor/Images/Keywords_Participants_Examples.png b/plugins/org.polarsys.capella.scenario.editor.doc/html/TextualEditor/Images/Keywords_Participants_Examples.png index 11e501f7d63ab9a495984a1a3fe071d5ac4f0ae4..920a26d42e7ca5ecb2a54e40c9b29cc0f18b316a 100644 GIT binary patch literal 25426 zcmbT71yodD_xFbq0Rcq;ky1%XMM4^skQ|V15QgqpXrc=Yrw`I^0i}afo9F{tGes&&hLMHw4QW!W7X_^jjd6cmJ(C`=Iz=&+Lzu!OXde(h>809X+Dw} zKLujmks^7Q5-3Q_`(-d}HT3T5XN+&|KLcXE+OvF9gymrvEwDFC4(ry< z%f;=&`l5@{t-`IXy{)vZG^AW#LFuC2yvwA^yo<(3Paz4~Hh|b}IF+Dlco3o3?!dr6 zod^Kne?s?u>TVEVJTX>z(=p7EK#cPYL;%0%?+aydBf*