Skip to content

Commit

Permalink
dataobject node validation
Browse files Browse the repository at this point in the history
  • Loading branch information
Dmitrii Tikhomirov committed Mar 8, 2020
1 parent 69d8b56 commit a13e95e
Show file tree
Hide file tree
Showing 11 changed files with 165 additions and 25 deletions.
Expand Up @@ -45,6 +45,7 @@ public class TextEditorMultiLineBoxTest {

public static final String NAME = "name";
public static final String MODIFIED_NAME = "modified_name";
public static final String OLD_NAME = "old_name";
public static final String ID = "id";

protected TextEditorMultiLineBox presenter;
Expand Down Expand Up @@ -173,7 +174,8 @@ public void testCloseButton() {
verify(canvasCommandFactory,
never()).updatePropertyValue(element,
ID,
MODIFIED_NAME);
MODIFIED_NAME,
OLD_NAME);

verify(commandProvider,
never()).getCommandManager();
Expand All @@ -195,7 +197,8 @@ protected void verifyNameNotSaved() {
verify(canvasCommandFactory,
never()).updatePropertyValue(element,
ID,
MODIFIED_NAME);
MODIFIED_NAME,
OLD_NAME);

verify(commandProvider,
never()).getCommandManager();
Expand Down Expand Up @@ -223,7 +226,8 @@ protected void verifyNameFlushed() {
verify(definitionUtils).getNameIdentifier(objectDefinition);
verify(canvasCommandFactory).updatePropertyValue(element,
ID,
MODIFIED_NAME);
MODIFIED_NAME,
NAME);

verify(commandProvider).getCommandManager();
verify(canvasCommandManager).execute(any(),
Expand Down
Expand Up @@ -173,7 +173,8 @@ public void testCloseButton() {
verify(canvasCommandFactory,
never()).updatePropertyValue(element,
ID,
MODIFIED_NAME);
MODIFIED_NAME,
NAME);

verify(commandProvider,
never()).getCommandManager();
Expand All @@ -195,7 +196,8 @@ protected void verifyNameNotSaved() {
verify(canvasCommandFactory,
never()).updatePropertyValue(element,
ID,
MODIFIED_NAME);
MODIFIED_NAME,
NAME);

verify(commandProvider,
never()).getCommandManager();
Expand Down Expand Up @@ -223,7 +225,8 @@ protected void verifyNameFlushed() {
verify(definitionUtils).getNameIdentifier(objectDefinition);
verify(canvasCommandFactory).updatePropertyValue(element,
ID,
MODIFIED_NAME);
MODIFIED_NAME,
NAME);

verify(commandProvider).getCommandManager();
verify(canvasCommandManager).execute(any(),
Expand Down
Expand Up @@ -110,6 +110,11 @@ CanvasCommand<H> updatePropertyValue(Element element,
String propertyId,
Object value);

CanvasCommand<H> updatePropertyValue(Element element,
String propertyId,
Object value,
Object oldValue);

CanvasCommand<H> updateDomainObjectPropertyValue(DomainObject domainObject,
String propertyId,
Object value);
Expand Down
Expand Up @@ -208,6 +208,17 @@ public CanvasCommand<AbstractCanvasHandler> updatePropertyValue(final Element el
value);
}

@Override
public CanvasCommand<AbstractCanvasHandler> updatePropertyValue(final Element element,
final String propertyId,
final Object value,
final Object oldValue) {
return new UpdateElementPropertyCommand(element,
propertyId,
value,
oldValue);
}

@Override
public CanvasCommand<AbstractCanvasHandler> updateDomainObjectPropertyValue(final DomainObject domainObject,
final String propertyId,
Expand Down
Expand Up @@ -28,13 +28,23 @@ public class UpdateElementPropertyCommand extends AbstractCanvasGraphCommand {
private final Element element;
private final String propertyId;
private final Object value;
private final Object oldValue;

public UpdateElementPropertyCommand(final Element element,
final String propertyId,
final Object value) {
this(element, propertyId, value, null);

}

public UpdateElementPropertyCommand(final Element element,
final String propertyId,
final Object value,
final Object oldValue) {
this.element = element;
this.propertyId = propertyId;
this.value = value;
this.oldValue = oldValue;
}

@Override
Expand All @@ -43,7 +53,8 @@ protected Command<GraphCommandExecutionContext, RuleViolation> newGraphCommand(f
return (element instanceof Node ?
new UpdateElementPropertyValueCommand(element,
propertyId,
value) :
value,
oldValue) :
new UpdateElementPropertyValueCommand(element.getUUID(),
propertyId,
value));
Expand All @@ -66,6 +77,10 @@ public Object getValue() {
return value;
}

public Object getOldValue() {
return oldValue;
}

@Override
public String toString() {
return getClass().getSimpleName() +
Expand Down
Expand Up @@ -66,10 +66,14 @@ public void setText(final AbstractCanvasHandler canvasHandler,
final String text) {
final Object def = element.getContent().getDefinition();
final String nameId = definitionUtils.getNameIdentifier(def);
final String oldName = definitionUtils.getName(def);


if (null != nameId) {
final CanvasCommand<AbstractCanvasHandler> command = canvasCommandFactory.updatePropertyValue(element,
nameId,
text);
text,
oldName);
commandManager.execute(canvasHandler,
command);
}
Expand Down
Expand Up @@ -72,7 +72,9 @@ public void setup() {
when(element.getContent()).thenReturn(content);
when(content.getDefinition()).thenReturn(definition);
when(definitionUtils.getNameIdentifier(eq(definition))).thenReturn("name");
when(definitionUtils.getName(eq(definition))).thenReturn("oldvalue");
when(canvasCommandFactory.updatePropertyValue(eq(element),
anyString(),
anyString(),
anyString())).thenReturn(command);
}
Expand Down Expand Up @@ -105,7 +107,8 @@ public void checkWriteUsesCommandToUpdateNamePropertyMetaData() {

verify(canvasCommandFactory).updatePropertyValue(eq(element),
eq("name"),
eq("text"));
eq("text"),
eq("oldvalue"));
verify(commandManager).execute(eq(canvasHandler),
eq(command));
}
Expand Down
Expand Up @@ -122,6 +122,16 @@ public UpdateElementPositionCommand updatePosition(final Node<? extends View<?>,
}

@SuppressWarnings("unchecked")
public UpdateElementPropertyValueCommand updatePropertyValue(final Element element,
final String propertyId,
final Object value,
final Object oldValue) {
return new UpdateElementPropertyValueCommand(element,
propertyId,
value,
oldValue);
}

public UpdateElementPropertyValueCommand updatePropertyValue(final Element element,
final String propertyId,
final Object value) {
Expand Down
Expand Up @@ -54,10 +54,21 @@ public UpdateElementPropertyValueCommand(final @MapsTo("elementUUID") String ele
public UpdateElementPropertyValueCommand(final Element<?> element,
final String propertyId,
final Object value) {
this(element,
propertyId,
value,
null);
}

public UpdateElementPropertyValueCommand(final Element<?> element,
final String propertyId,
final Object value,
final Object oldValue) {
this(element.getUUID(),
propertyId,
value);
this.element = element;
this.oldValue = oldValue;
}

@Override
Expand All @@ -84,7 +95,8 @@ public CommandResult<RuleViolation> execute(final GraphCommandExecutionContext c
public CommandResult<RuleViolation> undo(final GraphCommandExecutionContext context) {
final UpdateElementPropertyValueCommand undoCommand = new UpdateElementPropertyValueCommand(getNullSafeElement(context),
propertyId,
oldValue);
oldValue,
value);
return undoCommand.execute(context);
}

Expand Down
Expand Up @@ -20,12 +20,17 @@
import java.util.stream.StreamSupport;

import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.event.Event;
import javax.enterprise.event.Observes;
import javax.inject.Inject;

import com.google.gwt.regexp.shared.RegExp;
import org.kie.workbench.common.stunner.bpmn.definition.BPMNDefinition;
import org.kie.workbench.common.stunner.bpmn.definition.DataObject;
import org.kie.workbench.common.stunner.bpmn.definition.property.artifacts.DataObjectName;
import org.kie.workbench.common.stunner.bpmn.definition.property.artifacts.DataObjectType;
import org.kie.workbench.common.stunner.bpmn.definition.property.artifacts.DataObjectTypeValue;
import org.kie.workbench.common.stunner.core.client.canvas.AbstractCanvasHandler;
import org.kie.workbench.common.stunner.core.client.canvas.CanvasHandler;
import org.kie.workbench.common.stunner.core.client.canvas.command.AddChildNodeCommand;
import org.kie.workbench.common.stunner.core.client.canvas.command.UpdateElementPropertyCommand;
Expand All @@ -37,11 +42,17 @@
import org.kie.workbench.common.stunner.core.graph.Node;
import org.kie.workbench.common.stunner.core.graph.content.view.View;
import org.uberfire.commons.services.cdi.Startup;
import org.uberfire.workbench.events.NotificationEvent;

@Startup
@ApplicationScoped
public class DataObjectStateChecker {

@Inject
private Event<NotificationEvent> event;
private RegExp regExp = RegExp.compile("^[a-zA-Z0-9_]+$");


void onCommandExecuted(final @Observes CanvasCommandExecutedEvent commandExecutedEvent) {
Command command = commandExecutedEvent.getCommand();

Expand All @@ -57,11 +68,28 @@ private void onUpdateElementPropertyCommand(CanvasHandler canvasHandler, UpdateE
if (null != element.asNode()) {
Object bean = element.getContent().getDefinition();
if (bean instanceof DataObject) {
validateDataObjectName(propertyCommand, canvasHandler);
maybeUpdateTypes((DataObject) bean, canvasHandler);
}
}
}

private void validateDataObjectName(UpdateElementPropertyCommand propertyCommand, CanvasHandler canvasHandler) {
if (propertyCommand.getPropertyId().equals(DataObjectName.class.getCanonicalName())) {
if(!regExp.test(propertyCommand.getValue().toString())) {
if (null != propertyCommand.getElement().asNode()) {
Object bean = ((View) propertyCommand.getElement().getContent()).getDefinition();
if ((bean instanceof DataObject)) {
((DataObject) bean).setDataObjectName(new DataObjectName(propertyCommand.getOldValue().toString()));
NotificationEvent notificationEvent = new NotificationEvent("A Data object's name can only contain letters (A to Z), digits (0 to 9) or underscores (_).", NotificationEvent.NotificationType.ERROR);
event.fire(notificationEvent);
propertyCommand.undo((AbstractCanvasHandler)canvasHandler);
}
}
}
}
}

private void onCompositeCommand(CanvasHandler canvasHandler, CompositeCommand command) {
if (command.size() == 2 && (command.getCommands().get(0) instanceof AddChildNodeCommand)) {
AddChildNodeCommand addChildNodeCommand = (AddChildNodeCommand) command.getCommands().get(0);
Expand Down

0 comments on commit a13e95e

Please sign in to comment.