Skip to content

Commit

Permalink
[644] Add actors compartment in UseCase and Requirement
Browse files Browse the repository at this point in the history
Bug: #644
Signed-off-by: Gwendal Daniel <gwendal.daniel@obeosoft.com>
  • Loading branch information
gdaniel committed Aug 14, 2024
1 parent 4f1cb38 commit e8a69a6
Show file tree
Hide file tree
Showing 21 changed files with 585 additions and 45 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ The second one called "New ExhibitState with referenced State" shows a dialog al
- https://github.com/eclipse-syson/syson/issues/639[#639] [diagrams] Allow direct edit of properties of Usage elements.
The supported properties are `in`, `out`, `inout`, `abstract`, `variation`, `readonly`, `derived`, `end`, `ordered`, and `nonunique`.
- https://github.com/eclipse-syson/syson/issues/641[#641] [general-view] Add support for expressions in constraints.
- https://github.com/eclipse-syson/syson/issues/644[#644] [general-view] Add _actors_ compartment in UseCase and Requirement.

=== New features

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ private static Stream<Arguments> requirementUsageSiblingNodeParameters() {
Arguments.of(SysmlPackage.eINSTANCE.getItemUsage(), SysmlPackage.eINSTANCE.getUsage_NestedItem(), 3),
Arguments.of(SysmlPackage.eINSTANCE.getPartUsage(), SysmlPackage.eINSTANCE.getUsage_NestedPart(), 7),
Arguments.of(SysmlPackage.eINSTANCE.getPortUsage(), SysmlPackage.eINSTANCE.getUsage_NestedPort(), 3),
Arguments.of(SysmlPackage.eINSTANCE.getRequirementUsage(), SysmlPackage.eINSTANCE.getUsage_NestedRequirement(), 5))
Arguments.of(SysmlPackage.eINSTANCE.getRequirementUsage(), SysmlPackage.eINSTANCE.getUsage_NestedRequirement(), 6))
.map(TestNameGenerator::namedArguments);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -181,10 +181,10 @@ private static Stream<Arguments> packageChildNodeParameters() {
Arguments.of(SysmlPackage.eINSTANCE.getAssignmentActionUsage(), ownedMember, 0),
Arguments.of(SysmlPackage.eINSTANCE.getConstraintUsage(), ownedMember, 2),
Arguments.of(SysmlPackage.eINSTANCE.getConstraintDefinition(), ownedMember, 2),
Arguments.of(SysmlPackage.eINSTANCE.getRequirementUsage(), ownedMember, 5),
Arguments.of(SysmlPackage.eINSTANCE.getRequirementDefinition(), ownedMember, 6),
Arguments.of(SysmlPackage.eINSTANCE.getUseCaseUsage(), ownedMember, 3),
Arguments.of(SysmlPackage.eINSTANCE.getUseCaseDefinition(), ownedMember, 3),
Arguments.of(SysmlPackage.eINSTANCE.getRequirementUsage(), ownedMember, 6),
Arguments.of(SysmlPackage.eINSTANCE.getRequirementDefinition(), ownedMember, 7),
Arguments.of(SysmlPackage.eINSTANCE.getUseCaseUsage(), ownedMember, 4),
Arguments.of(SysmlPackage.eINSTANCE.getUseCaseDefinition(), ownedMember, 4),
Arguments.of(SysmlPackage.eINSTANCE.getOccurrenceUsage(), ownedMember, 2),
Arguments.of(SysmlPackage.eINSTANCE.getOccurrenceDefinition(), ownedMember, 3),
Arguments.of(SysmlPackage.eINSTANCE.getMetadataDefinition(), ownedMember, 3),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -130,10 +130,10 @@ private static Stream<Arguments> topNodeParameters() {
Arguments.of(SysmlPackage.eINSTANCE.getAssignmentActionUsage(), 0),
Arguments.of(SysmlPackage.eINSTANCE.getConstraintUsage(), 2),
Arguments.of(SysmlPackage.eINSTANCE.getConstraintDefinition(), 2),
Arguments.of(SysmlPackage.eINSTANCE.getRequirementUsage(), 5),
Arguments.of(SysmlPackage.eINSTANCE.getRequirementDefinition(), 6),
Arguments.of(SysmlPackage.eINSTANCE.getUseCaseUsage(), 3),
Arguments.of(SysmlPackage.eINSTANCE.getUseCaseDefinition(), 3),
Arguments.of(SysmlPackage.eINSTANCE.getRequirementUsage(), 6),
Arguments.of(SysmlPackage.eINSTANCE.getRequirementDefinition(), 7),
Arguments.of(SysmlPackage.eINSTANCE.getUseCaseUsage(), 4),
Arguments.of(SysmlPackage.eINSTANCE.getUseCaseDefinition(), 4),
Arguments.of(SysmlPackage.eINSTANCE.getOccurrenceUsage(), 2),
Arguments.of(SysmlPackage.eINSTANCE.getOccurrenceDefinition(), 3),
Arguments.of(SysmlPackage.eINSTANCE.getMetadataDefinition(), 3),
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import org.eclipse.syson.sysml.ActionUsage;
import org.eclipse.syson.sysml.Behavior;
import org.eclipse.syson.sysml.Feature;
import org.eclipse.syson.sysml.ParameterMembership;
import org.eclipse.syson.sysml.Step;
import org.eclipse.syson.sysml.SysmlPackage;
import org.eclipse.syson.sysml.Usage;
Expand Down Expand Up @@ -67,8 +68,14 @@ protected EClass eStaticClass() {
*/
@Override
public EList<Feature> getParameter() {
List<Usage> data = new ArrayList<>();
return new EcoreEList.UnmodifiableEList<>(this, SysmlPackage.eINSTANCE.getBehavior_Parameter(), data.size(), data.toArray());
List<Feature> features = this.getOwnedRelationship().stream()
.filter(ParameterMembership.class::isInstance)
.map(ParameterMembership.class::cast)
.flatMap(or -> or.getOwnedRelatedElement().stream())
.filter(Feature.class::isInstance)
.map(Feature.class::cast)
.toList();
return new EcoreEList.UnmodifiableEList<>(this, SysmlPackage.eINSTANCE.getBehavior_Parameter(), features.size(), features.toArray());
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,13 @@
*******************************************************************************/
package org.eclipse.syson.sysml.impl;

import java.util.ArrayList;
import java.util.List;

import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.InternalEObject;
import org.eclipse.emf.ecore.util.EcoreEList;
import org.eclipse.syson.sysml.ActorMembership;
import org.eclipse.syson.sysml.CaseDefinition;
import org.eclipse.syson.sysml.ObjectiveMembership;
import org.eclipse.syson.sysml.PartUsage;
Expand Down Expand Up @@ -69,8 +69,12 @@ protected EClass eStaticClass() {
*/
@Override
public EList<PartUsage> getActorParameter() {
List<Usage> data = new ArrayList<>();
return new EcoreEList.UnmodifiableEList<>(this, SysmlPackage.eINSTANCE.getCaseDefinition_ActorParameter(), data.size(), data.toArray());
List<PartUsage> actorParameters = this.getParameter().stream()
.filter(PartUsage.class::isInstance)
.filter(parameter -> parameter.getOwningMembership() instanceof ActorMembership)
.map(PartUsage.class::cast)
.toList();
return new EcoreEList.UnmodifiableEList<>(this, SysmlPackage.eINSTANCE.getCaseDefinition_ActorParameter(), actorParameters.size(), actorParameters.toArray());
}

/**
Expand Down Expand Up @@ -134,12 +138,14 @@ public Object eGet(int featureID, boolean resolve, boolean coreType) {
case SysmlPackage.CASE_DEFINITION__ACTOR_PARAMETER:
return this.getActorParameter();
case SysmlPackage.CASE_DEFINITION__OBJECTIVE_REQUIREMENT:
if (resolve)
if (resolve) {
return this.getObjectiveRequirement();
}
return this.basicGetObjectiveRequirement();
case SysmlPackage.CASE_DEFINITION__SUBJECT_PARAMETER:
if (resolve)
if (resolve) {
return this.getSubjectParameter();
}
return this.basicGetSubjectParameter();
}
return super.eGet(featureID, resolve, coreType);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,13 @@
*******************************************************************************/
package org.eclipse.syson.sysml.impl;

import java.util.ArrayList;
import java.util.List;

import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.InternalEObject;
import org.eclipse.emf.ecore.util.EcoreEList;
import org.eclipse.syson.sysml.ActorMembership;
import org.eclipse.syson.sysml.CaseDefinition;
import org.eclipse.syson.sysml.CaseUsage;
import org.eclipse.syson.sysml.Function;
Expand Down Expand Up @@ -70,8 +70,12 @@ protected EClass eStaticClass() {
*/
@Override
public EList<PartUsage> getActorParameter() {
List<Usage> data = new ArrayList<>();
return new EcoreEList.UnmodifiableEList<>(this, SysmlPackage.eINSTANCE.getCaseUsage_ActorParameter(), data.size(), data.toArray());
List<PartUsage> actorParameters = this.getParameter().stream()
.filter(PartUsage.class::isInstance)
.filter(parameter -> parameter.getOwningMembership() instanceof ActorMembership)
.map(PartUsage.class::cast)
.toList();
return new EcoreEList.UnmodifiableEList<>(this, SysmlPackage.eINSTANCE.getCaseUsage_ActorParameter(), actorParameters.size(), actorParameters.toArray());
}

/**
Expand Down Expand Up @@ -158,16 +162,19 @@ public Object eGet(int featureID, boolean resolve, boolean coreType) {
case SysmlPackage.CASE_USAGE__ACTOR_PARAMETER:
return this.getActorParameter();
case SysmlPackage.CASE_USAGE__CASE_DEFINITION:
if (resolve)
if (resolve) {
return this.getCaseDefinition();
}
return this.basicGetCaseDefinition();
case SysmlPackage.CASE_USAGE__OBJECTIVE_REQUIREMENT:
if (resolve)
if (resolve) {
return this.getObjectiveRequirement();
}
return this.basicGetObjectiveRequirement();
case SysmlPackage.CASE_USAGE__SUBJECT_PARAMETER:
if (resolve)
if (resolve) {
return this.getSubjectParameter();
}
return this.basicGetSubjectParameter();
}
return super.eGet(featureID, resolve, coreType);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import org.eclipse.syson.sysml.Expression;
import org.eclipse.syson.sysml.Feature;
import org.eclipse.syson.sysml.Function;
import org.eclipse.syson.sysml.ParameterMembership;
import org.eclipse.syson.sysml.Predicate;
import org.eclipse.syson.sysml.Step;
import org.eclipse.syson.sysml.SysmlPackage;
Expand Down Expand Up @@ -83,8 +84,14 @@ protected EClass eStaticClass() {
*/
@Override
public EList<Feature> getParameter() {
List<Usage> data = new ArrayList<>();
return new EcoreEList.UnmodifiableEList<>(this, SysmlPackage.eINSTANCE.getBehavior_Parameter(), data.size(), data.toArray());
List<Feature> features = this.getOwnedRelationship().stream()
.filter(ParameterMembership.class::isInstance)
.map(ParameterMembership.class::cast)
.flatMap(or -> or.getOwnedRelatedElement().stream())
.filter(Feature.class::isInstance)
.map(Feature.class::cast)
.toList();
return new EcoreEList.UnmodifiableEList<>(this, SysmlPackage.eINSTANCE.getBehavior_Parameter(), features.size(), features.toArray());
}

/**
Expand Down Expand Up @@ -159,8 +166,9 @@ public Object eGet(int featureID, boolean resolve, boolean coreType) {
case SysmlPackage.CONSTRAINT_DEFINITION__EXPRESSION:
return this.getExpression();
case SysmlPackage.CONSTRAINT_DEFINITION__RESULT:
if (resolve)
if (resolve) {
return this.getResult();
}
return this.basicGetResult();
}
return super.eGet(featureID, resolve, coreType);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import org.eclipse.syson.sysml.Feature;
import org.eclipse.syson.sysml.Function;
import org.eclipse.syson.sysml.OwningMembership;
import org.eclipse.syson.sysml.ParameterMembership;
import org.eclipse.syson.sysml.Predicate;
import org.eclipse.syson.sysml.RequirementConstraintMembership;
import org.eclipse.syson.sysml.Step;
Expand Down Expand Up @@ -102,8 +103,14 @@ public EList<Behavior> getBehavior() {
*/
@Override
public EList<Feature> getParameter() {
List<Usage> data = new ArrayList<>();
return new EcoreEList.UnmodifiableEList<>(this, SysmlPackage.eINSTANCE.getStep_Parameter(), data.size(), data.toArray());
List<Feature> features = this.getOwnedRelationship().stream()
.filter(ParameterMembership.class::isInstance)
.map(ParameterMembership.class::cast)
.flatMap(or -> or.getOwnedRelatedElement().stream())
.filter(Feature.class::isInstance)
.map(Feature.class::cast)
.toList();
return new EcoreEList.UnmodifiableEList<>(this, SysmlPackage.eINSTANCE.getStep_Parameter(), features.size(), features.toArray());
}

/**
Expand Down Expand Up @@ -252,20 +259,24 @@ public Object eGet(int featureID, boolean resolve, boolean coreType) {
case SysmlPackage.CONSTRAINT_USAGE__IS_MODEL_LEVEL_EVALUABLE:
return this.isIsModelLevelEvaluable();
case SysmlPackage.CONSTRAINT_USAGE__FUNCTION:
if (resolve)
if (resolve) {
return this.getFunction();
}
return this.basicGetFunction();
case SysmlPackage.CONSTRAINT_USAGE__RESULT:
if (resolve)
if (resolve) {
return this.getResult();
}
return this.basicGetResult();
case SysmlPackage.CONSTRAINT_USAGE__PREDICATE:
if (resolve)
if (resolve) {
return this.getPredicate();
}
return this.basicGetPredicate();
case SysmlPackage.CONSTRAINT_USAGE__CONSTRAINT_DEFINITION:
if (resolve)
if (resolve) {
return this.getConstraintDefinition();
}
return this.basicGetConstraintDefinition();
}
return super.eGet(featureID, resolve, coreType);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import org.eclipse.emf.ecore.InternalEObject;
import org.eclipse.emf.ecore.impl.ENotificationImpl;
import org.eclipse.emf.ecore.util.EcoreEList;
import org.eclipse.syson.sysml.ActorMembership;
import org.eclipse.syson.sysml.ConcernUsage;
import org.eclipse.syson.sysml.ConstraintUsage;
import org.eclipse.syson.sysml.PartUsage;
Expand Down Expand Up @@ -101,8 +102,12 @@ protected EClass eStaticClass() {
*/
@Override
public EList<PartUsage> getActorParameter() {
List<Usage> data = new ArrayList<>();
return new EcoreEList.UnmodifiableEList<>(this, SysmlPackage.eINSTANCE.getRequirementDefinition_ActorParameter(), data.size(), data.toArray());
List<PartUsage> actorParameters = this.getParameter().stream()
.filter(PartUsage.class::isInstance)
.filter(parameter -> parameter.getOwningMembership() instanceof ActorMembership)
.map(PartUsage.class::cast)
.toList();
return new EcoreEList.UnmodifiableEList<>(this, SysmlPackage.eINSTANCE.getRequirementDefinition_ActorParameter(), actorParameters.size(), actorParameters.toArray());
}

/**
Expand Down Expand Up @@ -154,8 +159,9 @@ public String getReqId() {
public void setReqId(String newReqId) {
String oldReqId = this.reqId;
this.reqId = newReqId;
if (this.eNotificationRequired())
if (this.eNotificationRequired()) {
this.eNotify(new ENotificationImpl(this, Notification.SET, SysmlPackage.REQUIREMENT_DEFINITION__REQ_ID, oldReqId, this.reqId));
}
}

/**
Expand Down Expand Up @@ -247,8 +253,9 @@ public Object eGet(int featureID, boolean resolve, boolean coreType) {
case SysmlPackage.REQUIREMENT_DEFINITION__STAKEHOLDER_PARAMETER:
return this.getStakeholderParameter();
case SysmlPackage.REQUIREMENT_DEFINITION__SUBJECT_PARAMETER:
if (resolve)
if (resolve) {
return this.getSubjectParameter();
}
return this.basicGetSubjectParameter();
}
return super.eGet(featureID, resolve, coreType);
Expand Down Expand Up @@ -320,8 +327,9 @@ public boolean eIsSet(int featureID) {
*/
@Override
public String toString() {
if (this.eIsProxy())
if (this.eIsProxy()) {
return super.toString();
}

StringBuilder result = new StringBuilder(super.toString());
result.append(" (reqId: ");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import org.eclipse.emf.ecore.InternalEObject;
import org.eclipse.emf.ecore.impl.ENotificationImpl;
import org.eclipse.emf.ecore.util.EcoreEList;
import org.eclipse.syson.sysml.ActorMembership;
import org.eclipse.syson.sysml.ConcernUsage;
import org.eclipse.syson.sysml.ConstraintUsage;
import org.eclipse.syson.sysml.Documentation;
Expand Down Expand Up @@ -104,8 +105,12 @@ protected EClass eStaticClass() {
*/
@Override
public EList<PartUsage> getActorParameter() {
List<Usage> data = new ArrayList<>();
return new EcoreEList.UnmodifiableEList<>(this, SysmlPackage.eINSTANCE.getRequirementUsage_ActorParameter(), data.size(), data.toArray());
List<PartUsage> actorParameters = this.getParameter().stream()
.filter(PartUsage.class::isInstance)
.filter(parameter -> parameter.getOwningMembership() instanceof ActorMembership)
.map(PartUsage.class::cast)
.toList();
return new EcoreEList.UnmodifiableEList<>(this, SysmlPackage.eINSTANCE.getRequirementUsage_ActorParameter(), actorParameters.size(), actorParameters.toArray());
}

/**
Expand Down Expand Up @@ -157,8 +162,9 @@ public String getReqId() {
public void setReqId(String newReqId) {
String oldReqId = this.reqId;
this.reqId = newReqId;
if (this.eNotificationRequired())
if (this.eNotificationRequired()) {
this.eNotify(new ENotificationImpl(this, Notification.SET, SysmlPackage.REQUIREMENT_USAGE__REQ_ID, oldReqId, this.reqId));
}
}

/**
Expand Down Expand Up @@ -279,14 +285,16 @@ public Object eGet(int featureID, boolean resolve, boolean coreType) {
case SysmlPackage.REQUIREMENT_USAGE__REQUIRED_CONSTRAINT:
return this.getRequiredConstraint();
case SysmlPackage.REQUIREMENT_USAGE__REQUIREMENT_DEFINITION:
if (resolve)
if (resolve) {
return this.getRequirementDefinition();
}
return this.basicGetRequirementDefinition();
case SysmlPackage.REQUIREMENT_USAGE__STAKEHOLDER_PARAMETER:
return this.getStakeholderParameter();
case SysmlPackage.REQUIREMENT_USAGE__SUBJECT_PARAMETER:
if (resolve)
if (resolve) {
return this.getSubjectParameter();
}
return this.basicGetSubjectParameter();
}
return super.eGet(featureID, resolve, coreType);
Expand Down Expand Up @@ -360,8 +368,9 @@ public boolean eIsSet(int featureID) {
*/
@Override
public String toString() {
if (this.eIsProxy())
if (this.eIsProxy()) {
return super.toString();
}

StringBuilder result = new StringBuilder(super.toString());
result.append(" (reqId: ");
Expand Down
Loading

0 comments on commit e8a69a6

Please sign in to comment.