Skip to content

Commit

Permalink
Fix workflow validator after changing GModel structure
Browse files Browse the repository at this point in the history
  • Loading branch information
planger committed Jan 14, 2022
1 parent 9c1d1e3 commit 453b347
Showing 1 changed file with 10 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,19 +19,17 @@
import java.util.Collection;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;

import org.eclipse.glsp.example.workflow.utils.ModelTypes;
import org.eclipse.glsp.example.workflow.wfgraph.ActivityNode;
import org.eclipse.glsp.example.workflow.wfgraph.TaskNode;
import org.eclipse.glsp.graph.GCompartment;
import org.eclipse.glsp.graph.GEdge;
import org.eclipse.glsp.graph.GLabel;
import org.eclipse.glsp.graph.GModelElement;
import org.eclipse.glsp.server.features.validation.Marker;
import org.eclipse.glsp.server.features.validation.MarkerKind;
import org.eclipse.glsp.server.features.validation.ModelValidator;
import org.eclipse.glsp.server.model.GModelState;
import org.eclipse.glsp.server.utils.GModelUtil;

import com.google.inject.Inject;

Expand Down Expand Up @@ -84,11 +82,15 @@ private static Optional<Marker> validateTaskNode_isAutomated(final GModelState m
private static Optional<Marker> validateTaskNode_labelStartsUpperCase(final GModelState modelState,
final GModelElement element) {
TaskNode taskNode = (TaskNode) element;
List<GCompartment> gCompartment = GModelUtil.filterByType(taskNode.getChildren(), GCompartment.class)
.collect(Collectors.toList());
List<GLabel> gLabels = GModelUtil.filterByType(gCompartment.get(0).getChildren(), GLabel.class)
.collect(Collectors.toList());
if (gLabels.size() > 0 && !Character.isUpperCase(gLabels.get(0).getText().charAt(0))) {

boolean hasLowerCaseLabel = taskNode.getChildren().stream()
.filter(c -> ModelTypes.LABEL_HEADING.equals(c.getType()))
.filter(GLabel.class::isInstance)
.map(GLabel.class::cast)
.map(GLabel::getText)
.anyMatch(text -> text.length() > 0 && !Character.isUpperCase(text.charAt(0)));

if (hasLowerCaseLabel) {
return Optional.of(new Marker("Task node label in upper case",
"Task node names should start with upper case letters", element.getId(), MarkerKind.WARNING));
}
Expand Down

0 comments on commit 453b347

Please sign in to comment.