Skip to content

Commit

Permalink
KOGITO-3379: [DMN Designer] Multiple DRDs support - Warn users when m…
Browse files Browse the repository at this point in the history
…ore than one node will be cascaded deleted (#3466)
  • Loading branch information
danielzhe authored Nov 24, 2020
1 parent 9b0c90a commit e9dea1d
Show file tree
Hide file tree
Showing 48 changed files with 1,702 additions and 107 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,13 @@
import org.kie.workbench.common.forms.adf.definitions.annotations.FormField;
import org.kie.workbench.common.stunner.core.definition.annotation.Property;
import org.kie.workbench.common.stunner.core.graph.content.HasContentDefinitionId;
import org.kie.workbench.common.stunner.core.graph.content.HasStringName;
import org.kie.workbench.common.stunner.core.rule.annotation.RuleExtension;

@RuleExtension(handler = NoInputNodesInImportedDecisionRule.class)
public abstract class DRGElement extends NamedElement implements DynamicReadOnly,
HasContentDefinitionId {
HasContentDefinitionId,
HasStringName {

private static final String[] READONLY_FIELDS = {
"NameHolder",
Expand Down Expand Up @@ -123,4 +125,9 @@ public DocumentationLinksHolder getLinksHolder() {
public void setLinksHolder(final DocumentationLinksHolder linksHolder) {
this.linksHolder = linksHolder;
}

@Override
public String getStringName() {
return getName().getValue();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import org.junit.Test;
import org.junit.runner.RunWith;
import org.kie.workbench.common.dmn.api.property.dmn.Id;
import org.kie.workbench.common.dmn.api.property.dmn.Name;
import org.kie.workbench.common.forms.adf.definitions.DynamicReadOnly;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
Expand All @@ -31,6 +32,7 @@
import static org.mockito.Matchers.anyBoolean;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.doCallRealMethod;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.when;
import static org.powermock.api.mockito.PowerMockito.mock;

Expand All @@ -56,6 +58,7 @@ public void setup() {
doCallRealMethod().when(drgElement).isAllowOnlyVisualChange();
doCallRealMethod().when(drgElement).isReadonlyField(anyString());
doCallRealMethod().when(drgElement).getContentDefinitionId();
doCallRealMethod().when(drgElement).getStringName();
}

@Test
Expand Down Expand Up @@ -122,6 +125,21 @@ public void testGetContentDefinitionId() {
assertEquals(contentDefinitionId, currentId);
}

@Test
public void testGetStringName() {

final Name name = mock(Name.class);
final String theName = "the name";

when(name.getValue()).thenReturn(theName);

doReturn(name).when(drgElement).getName();

final String stringName = drgElement.getStringName();

assertEquals(theName, stringName);
}

private void checkIfItIsNotReadOnly(final String property) {

final DynamicReadOnly.ReadOnly actual = drgElement.getReadOnly(property);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@

package org.kie.workbench.common.dmn.client.canvas.controls.toolbox;

import java.util.Collections;

import javax.enterprise.context.Dependent;
import javax.enterprise.event.Event;
import javax.inject.Inject;
Expand All @@ -24,22 +26,55 @@
import org.kie.workbench.common.dmn.api.qualifiers.DMNEditor;
import org.kie.workbench.common.stunner.core.client.canvas.AbstractCanvasHandler;
import org.kie.workbench.common.stunner.core.client.canvas.command.DefaultCanvasCommandFactory;
import org.kie.workbench.common.stunner.core.client.canvas.controls.DeleteNodeConfirmation;
import org.kie.workbench.common.stunner.core.client.canvas.event.selection.CanvasClearSelectionEvent;
import org.kie.workbench.common.stunner.core.client.command.SessionCommandManager;
import org.kie.workbench.common.stunner.core.client.components.toolbox.actions.DeleteNodeToolboxAction;
import org.kie.workbench.common.stunner.core.client.components.toolbox.actions.ToolboxAction;
import org.kie.workbench.common.stunner.core.client.i18n.ClientTranslationService;
import org.kie.workbench.common.stunner.core.client.shape.view.event.MouseClickEvent;
import org.kie.workbench.common.stunner.core.graph.Edge;
import org.kie.workbench.common.stunner.core.graph.Node;
import org.kie.workbench.common.stunner.core.util.DefinitionUtils;

import static org.kie.workbench.common.stunner.core.client.canvas.util.CanvasLayoutUtils.getElement;

@DMNEditor
@Dependent
public class DMNDeleteNodeToolboxAction extends DeleteNodeToolboxAction {

private final DeleteNodeConfirmation deleteNodeConfirmation;

@Inject
public DMNDeleteNodeToolboxAction(final ClientTranslationService translationService,
final SessionCommandManager<AbstractCanvasHandler> sessionCommandManager,
final @DMNEditor ManagedInstance<DefaultCanvasCommandFactory> commandFactories,
final DefinitionUtils definitionUtils,
final Event<CanvasClearSelectionEvent> clearSelectionEvent) {
final Event<CanvasClearSelectionEvent> clearSelectionEvent,
final DeleteNodeConfirmation deleteNodeConfirmation) {
super(translationService, sessionCommandManager, commandFactories, definitionUtils, clearSelectionEvent);
this.deleteNodeConfirmation = deleteNodeConfirmation;
}

@Override
public ToolboxAction<AbstractCanvasHandler> onMouseClick(final AbstractCanvasHandler canvasHandler,
final String uuid,
final MouseClickEvent event) {
final Node<?, Edge> node = getElement(canvasHandler, uuid).asNode();
if (deleteNodeConfirmation.requiresDeletionConfirmation(Collections.singleton(node))) {
deleteNodeConfirmation.confirmDeletion(() -> superOnMouseClick(canvasHandler, uuid, event),
() -> {
},
Collections.singleton(node));
} else {
superOnMouseClick(canvasHandler, uuid, event);
}
return this;
}

void superOnMouseClick(final AbstractCanvasHandler canvasHandler,
final String uuid,
final MouseClickEvent event) {
super.onMouseClick(canvasHandler, uuid, event);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,10 @@
import org.kie.workbench.common.dmn.client.commands.factory.canvas.AddChildNodeCommand;
import org.kie.workbench.common.dmn.client.commands.factory.canvas.DMNDeleteElementsCommand;
import org.kie.workbench.common.dmn.client.commands.factory.canvas.DMNDeleteNodeCommand;
import org.kie.workbench.common.dmn.client.docks.navigator.drds.DMNGraphsProvider;
import org.kie.workbench.common.stunner.client.lienzo.canvas.command.LienzoCanvasCommandFactory;
import org.kie.workbench.common.stunner.core.client.canvas.AbstractCanvasHandler;
import org.kie.workbench.common.stunner.core.client.command.CanvasCommand;
import org.kie.workbench.common.stunner.core.diagram.GraphsProvider;
import org.kie.workbench.common.stunner.core.graph.Element;
import org.kie.workbench.common.stunner.core.graph.Node;
import org.kie.workbench.common.stunner.core.graph.processing.traverse.content.ChildrenTraverseProcessor;
Expand All @@ -39,7 +39,7 @@
@ApplicationScoped
public class DefaultCanvasCommandFactory extends LienzoCanvasCommandFactory {

private GraphsProvider graphsProvider;
private DMNGraphsProvider graphsProvider;

protected DefaultCanvasCommandFactory() {
super();
Expand All @@ -48,7 +48,7 @@ protected DefaultCanvasCommandFactory() {
@Inject
public DefaultCanvasCommandFactory(final ManagedInstance<ChildrenTraverseProcessor> childrenTraverseProcessors,
final ManagedInstance<ViewTraverseProcessor> viewTraverseProcessors,
final GraphsProvider graphsProvider) {
final DMNGraphsProvider graphsProvider) {
super(childrenTraverseProcessors,
viewTraverseProcessors);
this.graphsProvider = graphsProvider;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

package org.kie.workbench.common.dmn.client.commands.factory.canvas;

import org.kie.workbench.common.dmn.client.docks.navigator.drds.DMNGraphsProvider;
import org.kie.workbench.common.stunner.core.client.canvas.AbstractCanvasHandler;
import org.kie.workbench.common.stunner.core.client.canvas.command.DeleteCanvasConnectorCommand;
import org.kie.workbench.common.stunner.core.client.command.CanvasCommandResultBuilder;
Expand All @@ -30,7 +31,8 @@ public class DMNDeleteCanvasConnectorNodeCommand extends DeleteCanvasConnectorCo

private final GraphsProvider graphsProvider;

public DMNDeleteCanvasConnectorNodeCommand(final Edge candidate, final GraphsProvider graphsProvider) {
public DMNDeleteCanvasConnectorNodeCommand(final Edge candidate,
final DMNGraphsProvider graphsProvider) {
super(candidate);
this.graphsProvider = graphsProvider;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
package org.kie.workbench.common.dmn.client.commands.factory.canvas;

import org.kie.workbench.common.dmn.client.commands.util.ContentDefinitionIdUtils;
import org.kie.workbench.common.dmn.client.docks.navigator.drds.DMNGraphsProvider;
import org.kie.workbench.common.stunner.core.client.canvas.AbstractCanvasHandler;
import org.kie.workbench.common.stunner.core.client.canvas.command.AbstractCanvasCommand;
import org.kie.workbench.common.stunner.core.client.canvas.command.DeleteCanvasNodeCommand;
Expand All @@ -31,7 +32,7 @@ public class DMNDeleteCanvasNodeCommand extends DeleteCanvasNodeCommand {
private final GraphsProvider graphsProvider;

public DMNDeleteCanvasNodeCommand(final Node candidate,
final GraphsProvider graphsProvider) {
final DMNGraphsProvider graphsProvider) {
super(candidate);
this.graphsProvider = graphsProvider;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,26 +19,26 @@
import java.util.Collection;

import org.kie.workbench.common.dmn.client.commands.factory.graph.DMNDeleteElementsGraphCommand;
import org.kie.workbench.common.dmn.client.docks.navigator.drds.DMNGraphsProvider;
import org.kie.workbench.common.stunner.core.client.canvas.AbstractCanvasHandler;
import org.kie.workbench.common.stunner.core.client.canvas.command.DeleteElementsCommand;
import org.kie.workbench.common.stunner.core.command.Command;
import org.kie.workbench.common.stunner.core.diagram.GraphsProvider;
import org.kie.workbench.common.stunner.core.graph.Element;
import org.kie.workbench.common.stunner.core.graph.command.GraphCommandExecutionContext;
import org.kie.workbench.common.stunner.core.graph.command.impl.SafeDeleteNodeCommand;
import org.kie.workbench.common.stunner.core.rule.RuleViolation;

public class DMNDeleteElementsCommand extends DeleteElementsCommand {

private final GraphsProvider graphsProvider;
private final DMNGraphsProvider graphsProvider;

public DMNDeleteElementsCommand(final Collection<Element> elements,
final GraphsProvider graphsProvider) {
final DMNGraphsProvider graphsProvider) {
super(elements);
this.graphsProvider = graphsProvider;
}

public GraphsProvider getGraphsProvider() {
public DMNGraphsProvider getGraphsProvider() {
return graphsProvider;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@

package org.kie.workbench.common.dmn.client.commands.factory.canvas;

import org.kie.workbench.common.dmn.client.docks.navigator.drds.DMNGraphsProvider;
import org.kie.workbench.common.stunner.core.client.canvas.AbstractCanvasHandler;
import org.kie.workbench.common.stunner.core.client.canvas.command.DeleteCanvasConnectorCommand;
import org.kie.workbench.common.stunner.core.client.canvas.command.DeleteNodeCommand;
import org.kie.workbench.common.stunner.core.command.Command;
import org.kie.workbench.common.stunner.core.diagram.GraphsProvider;
import org.kie.workbench.common.stunner.core.graph.Edge;
import org.kie.workbench.common.stunner.core.graph.Node;
import org.kie.workbench.common.stunner.core.graph.command.GraphCommandExecutionContext;
Expand All @@ -30,17 +30,17 @@

public class DMNDeleteNodeCommand extends DeleteNodeCommand {

private final GraphsProvider graphsProvider;
private final DMNGraphsProvider graphsProvider;

public DMNDeleteNodeCommand(final Node candidate,
final GraphsProvider graphsProvider) {
final DMNGraphsProvider graphsProvider) {
super(candidate,
SafeDeleteNodeCommand.Options.defaults(),
new DMNCanvasDeleteProcessor(SafeDeleteNodeCommand.Options.defaults(), graphsProvider));
this.graphsProvider = graphsProvider;
}

public GraphsProvider getGraphsProvider() {
public DMNGraphsProvider getGraphsProvider() {
return graphsProvider;
}

Expand All @@ -54,10 +54,10 @@ protected Command<GraphCommandExecutionContext, RuleViolation> newGraphCommand(f

public static class DMNCanvasDeleteProcessor extends CanvasDeleteProcessor {

private final GraphsProvider graphsProvider;
private final DMNGraphsProvider graphsProvider;

public DMNCanvasDeleteProcessor(final SafeDeleteNodeCommand.Options options,
final GraphsProvider graphsProvider) {
final DMNGraphsProvider graphsProvider) {
super(options);
this.graphsProvider = graphsProvider;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import org.kie.workbench.common.dmn.api.definition.model.DecisionService;
import org.kie.workbench.common.dmn.client.commands.factory.graph.DMNDeleteConnectorCommand;
import org.kie.workbench.common.dmn.client.commands.factory.graph.DMNDeregisterNodeCommand;
import org.kie.workbench.common.dmn.client.docks.navigator.drds.DMNGraphsProvider;
import org.kie.workbench.common.stunner.core.diagram.Diagram;
import org.kie.workbench.common.stunner.core.diagram.GraphsProvider;
import org.kie.workbench.common.stunner.core.graph.Edge;
Expand All @@ -35,13 +36,13 @@

public class DMNSafeDeleteNodeCommand extends SafeDeleteNodeCommand {

private final GraphsProvider graphsProvider;
private final DMNGraphsProvider graphsProvider;
private final Node<?, Edge> node;

public DMNSafeDeleteNodeCommand(final Node<?, Edge> node,
final SafeDeleteNodeCommandCallback safeDeleteCallback,
final Options options,
final GraphsProvider graphsProvider) {
final DMNGraphsProvider graphsProvider) {
super(node, safeDeleteCallback, options);
this.graphsProvider = graphsProvider;
this.node = node;
Expand Down Expand Up @@ -83,4 +84,4 @@ protected DeregisterNodeCommand createDeregisterNodeCommand(final Node node) {
protected DeleteConnectorCommand getDeleteConnectorCommand(final Edge<? extends View<?>, Node> edge) {
return new DMNDeleteConnectorCommand(edge, graphsProvider);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

package org.kie.workbench.common.dmn.client.commands.factory.graph;

import org.kie.workbench.common.stunner.core.diagram.GraphsProvider;
import org.kie.workbench.common.dmn.client.docks.navigator.drds.DMNGraphsProvider;
import org.kie.workbench.common.stunner.core.graph.Edge;
import org.kie.workbench.common.stunner.core.graph.Node;
import org.kie.workbench.common.stunner.core.graph.command.impl.DeleteConnectorCommand;
Expand All @@ -27,10 +27,10 @@

public class DMNDeleteConnectorCommand extends DeleteConnectorCommand {

private final GraphsProvider graphsProvider;
private final DMNGraphsProvider graphsProvider;

public DMNDeleteConnectorCommand(final Edge<? extends View, Node> edge,
final GraphsProvider graphsProvider) {
final DMNGraphsProvider graphsProvider) {
super(edge);
this.graphsProvider = graphsProvider;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
import java.util.function.Supplier;

import org.kie.workbench.common.dmn.client.commands.factory.canvas.DMNSafeDeleteNodeCommand;
import org.kie.workbench.common.stunner.core.diagram.GraphsProvider;
import org.kie.workbench.common.dmn.client.docks.navigator.drds.DMNGraphsProvider;
import org.kie.workbench.common.stunner.core.graph.Edge;
import org.kie.workbench.common.stunner.core.graph.Element;
import org.kie.workbench.common.stunner.core.graph.Node;
Expand All @@ -29,11 +29,11 @@

public class DMNDeleteElementsGraphCommand extends DeleteElementsCommand {

private GraphsProvider graphsProvider;
private DMNGraphsProvider graphsProvider;

public DMNDeleteElementsGraphCommand(final Supplier<Collection<Element>> elements,
final DeleteCallback callback,
final GraphsProvider graphsProvider) {
final DMNGraphsProvider graphsProvider) {
super(elements, callback);
this.graphsProvider = graphsProvider;
}
Expand All @@ -48,7 +48,7 @@ protected DMNSafeDeleteNodeCommand createSafeDeleteNodeCommand(final Node<?, Edg
getGraphsProvider());
}

public GraphsProvider getGraphsProvider() {
public DMNGraphsProvider getGraphsProvider() {
return graphsProvider;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import java.util.Optional;

import org.kie.workbench.common.dmn.client.commands.util.ContentDefinitionIdUtils;
import org.kie.workbench.common.dmn.client.docks.navigator.drds.DMNGraphsProvider;
import org.kie.workbench.common.stunner.core.command.CommandResult;
import org.kie.workbench.common.stunner.core.diagram.GraphsProvider;
import org.kie.workbench.common.stunner.core.graph.Edge;
Expand All @@ -34,13 +35,13 @@

public class DMNSetConnectionSourceNodeCommand extends SetConnectionSourceNodeCommand {

private final GraphsProvider graphsProvider;
private final DMNGraphsProvider graphsProvider;
private final Optional<String> diagramId;

public DMNSetConnectionSourceNodeCommand(final Node<? extends View<?>, Edge> sourceNode,
final Edge<? extends View, Node> edge,
final Connection connection,
final GraphsProvider graphsProvider) {
final DMNGraphsProvider graphsProvider) {
super(sourceNode, edge, connection);
this.graphsProvider = graphsProvider;
this.diagramId = ContentDefinitionIdUtils.getDiagramId(edge);
Expand Down
Loading

0 comments on commit e9dea1d

Please sign in to comment.