Skip to content

Commit

Permalink
[538] Add actions in PartUsage and PartDefinition
Browse files Browse the repository at this point in the history
Bug: eclipse-syson#538
Signed-off-by: Gwendal Daniel <gwendal.daniel@obeosoft.com>
  • Loading branch information
gdaniel committed Jul 12, 2024
1 parent dfc492a commit 5926059
Show file tree
Hide file tree
Showing 8 changed files with 86 additions and 29 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,7 @@ The tool now works correctly on packages, and doesn't render sibling elements wh
- [syson] Provide new icons for State, Conjugation, Port (in,in/out,out) and Item (in,in/out,out).
- https://github.com/eclipse-syson/syson/issues/519[#519] [diagrams] Add tools for creating _Items_ on _ActionDefinition_ in GeneralView and ActionFlowView.
- https://github.com/eclipse-syson/syson/issues/504[#504] [syson] Add private and protected visibility decorators on all elements
- https://github.com/eclipse-syson/syson/issues/538[#538] [general-view] Add actions in PartUsage and PartDefinition

=== New features

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ private static Stream<Arguments> itemDefinitionChildNodeParameters() {
private static Stream<Arguments> itemUsageSiblingNodeParameters() {
return Stream.of(
Arguments.of(SysmlPackage.eINSTANCE.getItemUsage(), SysmlPackage.eINSTANCE.getUsage_NestedItem(), 3),
Arguments.of(SysmlPackage.eINSTANCE.getPartUsage(), SysmlPackage.eINSTANCE.getUsage_NestedPart(), 3),
Arguments.of(SysmlPackage.eINSTANCE.getPartUsage(), SysmlPackage.eINSTANCE.getUsage_NestedPart(), 5),
Arguments.of(SysmlPackage.eINSTANCE.getPortUsage(), SysmlPackage.eINSTANCE.getUsage_NestedPort(), 3))
.map(TestNameGenerator::namedArguments);
}
Expand All @@ -193,8 +193,8 @@ private static Stream<Arguments> packageChildNodeParameters() {
Arguments.of(SysmlPackage.eINSTANCE.getItemDefinition(), ownedMember, 2),
// A package doesn't have a compartment: it is handled as a custom node
Arguments.of(SysmlPackage.eINSTANCE.getPackage(), ownedMember, 0),
Arguments.of(SysmlPackage.eINSTANCE.getPartUsage(), ownedMember, 3),
Arguments.of(SysmlPackage.eINSTANCE.getPartDefinition(), ownedMember, 3),
Arguments.of(SysmlPackage.eINSTANCE.getPartUsage(), ownedMember, 5),
Arguments.of(SysmlPackage.eINSTANCE.getPartDefinition(), ownedMember, 5),
Arguments.of(SysmlPackage.eINSTANCE.getAllocationUsage(), ownedMember, 2),
Arguments.of(SysmlPackage.eINSTANCE.getAllocationDefinition(), ownedMember, 2),
Arguments.of(SysmlPackage.eINSTANCE.getInterfaceUsage(), ownedMember, 3),
Expand Down Expand Up @@ -230,7 +230,7 @@ private static Stream<Arguments> partDefinitionChildNodeParameters() {
private static Stream<Arguments> partDefinitionSiblingNodeParameters() {
return Stream.of(
Arguments.of(SysmlPackage.eINSTANCE.getItemUsage(), SysmlPackage.eINSTANCE.getDefinition_OwnedItem(), 3),
Arguments.of(SysmlPackage.eINSTANCE.getPartUsage(), SysmlPackage.eINSTANCE.getDefinition_OwnedPart(), 3))
Arguments.of(SysmlPackage.eINSTANCE.getPartUsage(), SysmlPackage.eINSTANCE.getDefinition_OwnedPart(), 5))
.map(TestNameGenerator::namedArguments);
}

Expand All @@ -245,14 +245,14 @@ private static Stream<Arguments> partUsageChildNodeParameters() {
private static Stream<Arguments> partUsageSiblingNodeParameters() {
return Stream.of(
Arguments.of(SysmlPackage.eINSTANCE.getItemUsage(), SysmlPackage.eINSTANCE.getUsage_NestedItem(), 3),
Arguments.of(SysmlPackage.eINSTANCE.getPartUsage(), SysmlPackage.eINSTANCE.getUsage_NestedUsage(), 3))
Arguments.of(SysmlPackage.eINSTANCE.getPartUsage(), SysmlPackage.eINSTANCE.getUsage_NestedUsage(), 5))
.map(TestNameGenerator::namedArguments);
}

private static Stream<Arguments> allocationUsageSiblingNodeParameters() {
return Stream.of(
Arguments.of(SysmlPackage.eINSTANCE.getItemUsage(), SysmlPackage.eINSTANCE.getUsage_NestedItem(), 3),
Arguments.of(SysmlPackage.eINSTANCE.getPartUsage(), SysmlPackage.eINSTANCE.getUsage_NestedUsage(), 3))
Arguments.of(SysmlPackage.eINSTANCE.getPartUsage(), SysmlPackage.eINSTANCE.getUsage_NestedUsage(), 5))
.map(TestNameGenerator::namedArguments);
}

Expand All @@ -266,7 +266,7 @@ private static Stream<Arguments> allocationUsageChildNodeParameters() {
private static Stream<Arguments> allocationDefinitionSiblingNodeParameters() {
return Stream.of(
Arguments.of(SysmlPackage.eINSTANCE.getItemUsage(), SysmlPackage.eINSTANCE.getDefinition_OwnedItem(), 3),
Arguments.of(SysmlPackage.eINSTANCE.getPartUsage(), SysmlPackage.eINSTANCE.getDefinition_OwnedPart(), 3))
Arguments.of(SysmlPackage.eINSTANCE.getPartUsage(), SysmlPackage.eINSTANCE.getDefinition_OwnedPart(), 5))
.map(TestNameGenerator::namedArguments);
}

Expand All @@ -279,7 +279,7 @@ private static Stream<Arguments> allocationDefinitionChildNodeParameters() {
private static Stream<Arguments> interfaceUsageSiblingNodeParameters() {
return Stream.of(
Arguments.of(SysmlPackage.eINSTANCE.getItemUsage(), SysmlPackage.eINSTANCE.getUsage_NestedItem(), 3),
Arguments.of(SysmlPackage.eINSTANCE.getPartUsage(), SysmlPackage.eINSTANCE.getUsage_NestedUsage(), 3))
Arguments.of(SysmlPackage.eINSTANCE.getPartUsage(), SysmlPackage.eINSTANCE.getUsage_NestedUsage(), 5))
.map(TestNameGenerator::namedArguments);
}

Expand All @@ -303,7 +303,7 @@ private static Stream<Arguments> interfaceDefinitionChildNodeParameters() {
private static Stream<Arguments> portUsageSiblingNodeParameters() {
return Stream.of(
Arguments.of(SysmlPackage.eINSTANCE.getPortUsage(), SysmlPackage.eINSTANCE.getUsage_NestedPort(), 3),
Arguments.of(SysmlPackage.eINSTANCE.getPartUsage(), SysmlPackage.eINSTANCE.getUsage_NestedPart(), 3),
Arguments.of(SysmlPackage.eINSTANCE.getPartUsage(), SysmlPackage.eINSTANCE.getUsage_NestedPart(), 5),
Arguments.of(SysmlPackage.eINSTANCE.getItemUsage(), SysmlPackage.eINSTANCE.getUsage_NestedItem(), 3))
.map(TestNameGenerator::namedArguments);
}
Expand All @@ -318,7 +318,7 @@ private static Stream<Arguments> portUsageChildNodeParameters() {

private static Stream<Arguments> portDefinitionSiblingNodeParameters() {
return Stream.of(
Arguments.of(SysmlPackage.eINSTANCE.getPartUsage(), SysmlPackage.eINSTANCE.getDefinition_OwnedPart(), 3),
Arguments.of(SysmlPackage.eINSTANCE.getPartUsage(), SysmlPackage.eINSTANCE.getDefinition_OwnedPart(), 5),
Arguments.of(SysmlPackage.eINSTANCE.getItemUsage(), SysmlPackage.eINSTANCE.getDefinition_OwnedItem(), 3))
.map(TestNameGenerator::namedArguments);
}
Expand All @@ -341,7 +341,7 @@ private static Stream<Arguments> acceptActionUsagePayloadParameters() {

private static Stream<Arguments> actionUsageSiblingNodeParameters() {
return Stream.of(
Arguments.of(SysmlPackage.eINSTANCE.getPartUsage(), SysmlPackage.eINSTANCE.getUsage_NestedPart(), 3),
Arguments.of(SysmlPackage.eINSTANCE.getPartUsage(), SysmlPackage.eINSTANCE.getUsage_NestedPart(), 5),
Arguments.of(SysmlPackage.eINSTANCE.getAttributeUsage(), SysmlPackage.eINSTANCE.getUsage_NestedAttribute(), 3),
Arguments.of(SysmlPackage.eINSTANCE.getPortUsage(), SysmlPackage.eINSTANCE.getUsage_NestedPort(), 3))
.map(TestNameGenerator::namedArguments);
Expand Down Expand Up @@ -395,7 +395,7 @@ private static Stream<Arguments> constraintUsageSiblingNodeParameters() {
return Stream.of(
Arguments.of(SysmlPackage.eINSTANCE.getAttributeUsage(), SysmlPackage.eINSTANCE.getUsage_NestedAttribute(), 3),
Arguments.of(SysmlPackage.eINSTANCE.getItemUsage(), SysmlPackage.eINSTANCE.getUsage_NestedItem(), 3),
Arguments.of(SysmlPackage.eINSTANCE.getPartUsage(), SysmlPackage.eINSTANCE.getUsage_NestedPart(), 3),
Arguments.of(SysmlPackage.eINSTANCE.getPartUsage(), SysmlPackage.eINSTANCE.getUsage_NestedPart(), 5),
Arguments.of(SysmlPackage.eINSTANCE.getPortUsage(), SysmlPackage.eINSTANCE.getUsage_NestedPort(), 3))
.map(TestNameGenerator::namedArguments);
}
Expand All @@ -409,7 +409,7 @@ private static Stream<Arguments> constraintUsageChildNodeParameters() {

private static Stream<Arguments> constraintDefinitionSiblingNodeParameters() {
return Stream.of(
Arguments.of(SysmlPackage.eINSTANCE.getPartUsage(), SysmlPackage.eINSTANCE.getDefinition_OwnedUsage(), 3))
Arguments.of(SysmlPackage.eINSTANCE.getPartUsage(), SysmlPackage.eINSTANCE.getDefinition_OwnedUsage(), 5))
.map(TestNameGenerator::namedArguments);
}

Expand All @@ -423,7 +423,7 @@ private static Stream<Arguments> constraintDefinitionChildNodeParameters() {
private static Stream<Arguments> requirementUsageSiblingNodeParameters() {
return Stream.of(
Arguments.of(SysmlPackage.eINSTANCE.getItemUsage(), SysmlPackage.eINSTANCE.getUsage_NestedItem(), 3),
Arguments.of(SysmlPackage.eINSTANCE.getPartUsage(), SysmlPackage.eINSTANCE.getUsage_NestedPart(), 3),
Arguments.of(SysmlPackage.eINSTANCE.getPartUsage(), SysmlPackage.eINSTANCE.getUsage_NestedPart(), 5),
Arguments.of(SysmlPackage.eINSTANCE.getPortUsage(), SysmlPackage.eINSTANCE.getUsage_NestedPort(), 3),
Arguments.of(SysmlPackage.eINSTANCE.getRequirementUsage(), SysmlPackage.eINSTANCE.getUsage_NestedRequirement(), 5))
.map(TestNameGenerator::namedArguments);
Expand All @@ -447,7 +447,7 @@ private static Stream<Arguments> useCaseUsageSiblingNodeParameters() {
return Stream.of(
Arguments.of(SysmlPackage.eINSTANCE.getAttributeUsage(), SysmlPackage.eINSTANCE.getUsage_NestedAttribute(), 3),
Arguments.of(SysmlPackage.eINSTANCE.getItemUsage(), SysmlPackage.eINSTANCE.getUsage_NestedItem(), 3),
Arguments.of(SysmlPackage.eINSTANCE.getPartUsage(), SysmlPackage.eINSTANCE.getUsage_NestedPart(), 3),
Arguments.of(SysmlPackage.eINSTANCE.getPartUsage(), SysmlPackage.eINSTANCE.getUsage_NestedPart(), 5),
Arguments.of(SysmlPackage.eINSTANCE.getPortUsage(), SysmlPackage.eINSTANCE.getUsage_NestedPort(), 3))
.map(TestNameGenerator::namedArguments);
}
Expand All @@ -473,7 +473,7 @@ private static Stream<Arguments> occurrenceUsageChildNodeParameters() {

private static Stream<Arguments> occurrenceDefinitionSiblingNodeParameters() {
return Stream.of(
Arguments.of(SysmlPackage.eINSTANCE.getPartUsage(), SysmlPackage.eINSTANCE.getDefinition_OwnedPart(), 3))
Arguments.of(SysmlPackage.eINSTANCE.getPartUsage(), SysmlPackage.eINSTANCE.getDefinition_OwnedPart(), 5))
.map(TestNameGenerator::namedArguments);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -116,8 +116,8 @@ private static Stream<Arguments> topNodeParameters() {
Arguments.of(SysmlPackage.eINSTANCE.getItemDefinition(), 2),
// A package doesn't have a compartment: it is handled as a custom node
Arguments.of(SysmlPackage.eINSTANCE.getPackage(), 0),
Arguments.of(SysmlPackage.eINSTANCE.getPartUsage(), 3),
Arguments.of(SysmlPackage.eINSTANCE.getPartDefinition(), 3),
Arguments.of(SysmlPackage.eINSTANCE.getPartUsage(), 5),
Arguments.of(SysmlPackage.eINSTANCE.getPartDefinition(), 5),
Arguments.of(SysmlPackage.eINSTANCE.getAllocationUsage(), 2),
Arguments.of(SysmlPackage.eINSTANCE.getAllocationDefinition(), 2),
Arguments.of(SysmlPackage.eINSTANCE.getInterfaceUsage(), 3),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -479,7 +479,7 @@ private Package getClosestContainingPackageFrom(Element element) {

public Element createAcceptAction(Element ownerElement) {
Feature acceptSubActionsStdAction = this.utilService.findByName(ownerElement, "Actions::Action::acceptSubactions");
if (ownerElement instanceof ActionUsage || ownerElement instanceof ActionDefinition && acceptSubActionsStdAction != null) {
if (this.isPart(ownerElement) || this.isAction(ownerElement) && acceptSubActionsStdAction != null) {
var featureMember = SysmlFactory.eINSTANCE.createFeatureMembership();
var acceptAction = SysmlFactory.eINSTANCE.createAcceptActionUsage();
this.elementInitializerSwitch.doSwitch(acceptAction);
Expand Down Expand Up @@ -770,7 +770,7 @@ public Element removeStartAction(Node selectedNode, IEditingContext editingConte
*/
public Element createJoinAction(Element ownerElement) {
Feature joinsStdAction = this.utilService.findByName(ownerElement, "Actions::Action::joins");
if (ownerElement instanceof ActionUsage || ownerElement instanceof ActionDefinition && joinsStdAction != null) {
if (this.isPart(ownerElement) || this.isAction(ownerElement) && joinsStdAction != null) {
var featureMember = SysmlFactory.eINSTANCE.createFeatureMembership();
var join = SysmlFactory.eINSTANCE.createJoinNode();
this.elementInitializerSwitch.doSwitch(join);
Expand All @@ -795,7 +795,7 @@ public Element createJoinAction(Element ownerElement) {
*/
public Element createForkAction(Element ownerElement) {
Feature forksStdAction = this.utilService.findByName(ownerElement, "Actions::Action::forks");
if (ownerElement instanceof ActionUsage || ownerElement instanceof ActionDefinition && forksStdAction != null) {
if (this.isPart(ownerElement) || this.isAction(ownerElement) && forksStdAction != null) {
var featureMember = SysmlFactory.eINSTANCE.createFeatureMembership();
var fork = SysmlFactory.eINSTANCE.createForkNode();
this.elementInitializerSwitch.doSwitch(fork);
Expand All @@ -820,7 +820,7 @@ public Element createForkAction(Element ownerElement) {
*/
public Element createMergeAction(Element ownerElement) {
Feature mergesStdAction = this.utilService.findByName(ownerElement, "Actions::Action::merges");
if (ownerElement instanceof ActionUsage || ownerElement instanceof ActionDefinition && mergesStdAction != null) {
if (this.isPart(ownerElement) || this.isAction(ownerElement) && mergesStdAction != null) {
var featureMember = SysmlFactory.eINSTANCE.createFeatureMembership();
var merge = SysmlFactory.eINSTANCE.createMergeNode();
this.elementInitializerSwitch.doSwitch(merge);
Expand All @@ -845,7 +845,7 @@ public Element createMergeAction(Element ownerElement) {
*/
public Element createDecisionAction(Element ownerElement) {
Feature decisionsStdAction = this.utilService.findByName(ownerElement, "Actions::Action::decisions");
if (ownerElement instanceof ActionUsage || ownerElement instanceof ActionDefinition && decisionsStdAction != null) {
if (this.isPart(ownerElement) || this.isAction(ownerElement) && decisionsStdAction != null) {
var featureMember = SysmlFactory.eINSTANCE.createFeatureMembership();
var decision = SysmlFactory.eINSTANCE.createDecisionNode();
this.elementInitializerSwitch.doSwitch(decision);
Expand Down Expand Up @@ -945,4 +945,12 @@ public Element createPerformAction(Element ownerElement) {
ownerElement.getOwnedRelationship().add(featureMember);
return perform;
}

private boolean isPart(Element element) {
return element instanceof PartUsage || element instanceof PartDefinition;
}

private boolean isAction(Element element) {
return element instanceof ActionUsage || element instanceof ActionDefinition;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@
import org.eclipse.syson.sysml.Element;
import org.eclipse.syson.sysml.Membership;
import org.eclipse.syson.sysml.Namespace;
import org.eclipse.syson.sysml.PartDefinition;
import org.eclipse.syson.sysml.PartUsage;
import org.eclipse.syson.sysml.PerformActionUsage;
import org.eclipse.syson.sysml.ReferenceSubsetting;
import org.eclipse.syson.sysml.SysmlPackage;
Expand Down Expand Up @@ -137,7 +139,7 @@ public boolean isHiddenByDefault(Element self, String referenceName) {
}

public List<Membership> getAllStandardStartActions(Namespace self) {
if (self instanceof ActionUsage || self instanceof ActionDefinition) {
if (this.isPart(self) || this.isAction(self)) {
return self.getOwnedRelationship().stream()
.filter(Membership.class::isInstance)
.map(Membership.class::cast)
Expand All @@ -150,7 +152,7 @@ public List<Membership> getAllStandardStartActions(Namespace self) {
}

public List<Membership> getAllStandardDoneActions(Namespace self) {
if (self instanceof ActionUsage || self instanceof ActionDefinition) {
if (this.isPart(self) || this.isAction(self)) {
return self.getOwnedRelationship().stream()
.filter(Membership.class::isInstance)
.map(Membership.class::cast)
Expand Down Expand Up @@ -199,4 +201,12 @@ private boolean isReferencingPerformActionUsage(PerformActionUsage pau) {
return referenceSubSetting != null && referenceSubSetting.getReferencedFeature() instanceof ActionUsage perfomedAction;
}

private boolean isPart(Element element) {
return element instanceof PartUsage || element instanceof PartDefinition;
}

private boolean isAction(Element element) {
return element instanceof ActionUsage || element instanceof ActionDefinition;
}

}
Loading

0 comments on commit 5926059

Please sign in to comment.