All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.xlrit.gears.runner.scenario.RunnerTargetScenarioVisitor Maven / Gradle / Ivy

There is a newer version: 1.17.1
Show newest version
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);
		}
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy