com.xlrit.gears.runner.scenario.RunnerTargetScenarioVisitor Maven / Gradle / Ivy
package com.xlrit.gears.runner.scenario;
import com.fasterxml.jackson.databind.JsonNode;
import com.xlrit.gears.runner.runnertarget.RunnerTarget;
import com.xlrit.gears.runner.runnertarget.TaskExpression;
import java.util.List;
public class RunnerTargetScenarioVisitor extends ScenarioBaseVisitor> {
private final RunnerTarget runnerTarget;
private String currentProcessKey = null;
public RunnerTargetScenarioVisitor(RunnerTarget runnerTarget) {
this.runnerTarget = runnerTarget;
}
@Override
public List visitStartStatements(ScenarioParser.StartStatementsContext ctx) {
return ctx.statement()
.stream()
.flatMap(statement -> statement.accept(this).stream())
.toList();
}
@Override
public List visitSetDateTimeStatement(ScenarioParser.SetDateTimeStatementContext ctx) {
try {
String dateTime = ctx.Text().getSymbol().getText();
runnerTarget.setDateTime(dateTime.substring(1, dateTime.length() - 1));
return List.of();
} catch (Exception e) {
return List.of(e);
}
}
@Override
public List visitWithUserStatement(ScenarioParser.WithUserStatementContext ctx) {
try {
runnerTarget.login(ctx.Identifier().getText());
return List.of();
} catch (Exception e) {
return List.of(e);
}
}
@Override
public List visitStartProcessStatement(ScenarioParser.StartProcessStatementContext ctx) {
try {
currentProcessKey = ctx.Identifier().getSymbol().getText();
JsonNode values;
if (ctx.objectExpr() == null) {
values = null;
} else {
values = ctx.objectExpr().accept(new ObjectToJsonVisitor());
}
runnerTarget.startProcess(currentProcessKey, values);
return List.of();
} catch (Exception e) {
return List.of(e);
}
}
@Override
public List visitProcessCompleteStatement(ScenarioParser.ProcessCompleteStatementContext ctx) {
try {
if (currentProcessKey == null) {
return List.of(
new NullPointerException(
"No process has been started at time of process complete statement"
)
);
}
runnerTarget.processCompleted(currentProcessKey);
return List.of();
} catch (Exception e) {
return List.of(e);
}
}
@Override
public List visitAssertStatement(ScenarioParser.AssertStatementContext ctx) {
try {
String grql = ctx.Grql().getSymbol().getText();
grql = grql.substring(3, grql.length() - 3).trim();
runnerTarget.dataAssertion(currentProcessKey, grql);
return List.of();
} catch (Exception e) {
return List.of(e);
}
}
@Override
public List visitClaimTaskStatement(ScenarioParser.ClaimTaskStatementContext ctx) {
try {
if (currentProcessKey == null) {
return List.of(
new NullPointerException(
"No process has been started at time of claim task statement"
)
);
}
runnerTarget.claimTask(currentProcessKey, TaskExpression.from(ctx.taskExpr()));
return List.of();
} catch (Exception e) {
return List.of(e);
}
}
@Override
public List visitSubmitTaskStatement(ScenarioParser.SubmitTaskStatementContext ctx) {
try {
if (currentProcessKey == null) {
return List.of(
new NullPointerException(
"No process has been started at time of submit task statement"
)
);
}
TaskExpression taskExpression = TaskExpression.from(ctx.taskExpr());
JsonNode values = ctx.objectExpr().accept(new ObjectToJsonVisitor());
runnerTarget.submitTask(currentProcessKey, taskExpression, values);
return List.of();
} catch (Exception e) {
return List.of(e);
}
}
}