package org.activiti.crystalball.simulator.impl;
import org.activiti.crystalball.simulator.SimulatorException;
import org.activiti.crystalball.simulator.impl.interceptor.CommandContext;
import org.activiti.crystalball.simulator.impl.interceptor.CommandExecutor;
import org.activiti.crystalball.simulator.impl.persistence.entity.ResultEntity;
import org.activiti.crystalball.simulator.result.ResultQuery;
import org.activiti.engine.impl.Page;
import org.activiti.engine.impl.TaskQueryVariableValue;
import java.util.ArrayList;
import java.util.List;
public class ResultQueryImpl extends AbstractVariableQueryImpl<ResultQuery, ResultEntity> implements ResultQuery {
private static final long serialVersionUID = 1L;
protected String resultId;
protected String runId;
protected String simulationInstanceId;
protected String type;
protected String processDefinitionKey;
protected String taskDefinitionKey;
protected List<TaskQueryVariableValue> variables = new ArrayList<TaskQueryVariableValue>();
public ResultQueryImpl() {
}
public ResultQueryImpl(CommandContext commandContext) {
super(commandContext);
}
public ResultQueryImpl(CommandExecutor commandExecutor) {
super(commandExecutor);
}
@Override
public ResultQuery resultId(String resultId) {
if (resultId == null) {
throw new SimulatorException("Result id is null");
}
this.resultId = resultId;
return this;
}
@Override
public ResultQuery resultRunId(String runId) {
this.runId = runId;
return this;
}
@Override
public ResultQuery resultType(String type) {
this.type = type;
return this;
}
@Override
public ResultQuery resultProcessDefinitionKey(String processDefinitinoKey) {
this.processDefinitionKey = processDefinitinoKey;
return this;
}
@Override
public ResultQuery resultTaskDefinitionKey(String taskDefinitionKey) {
this.taskDefinitionKey = taskDefinitionKey;
return this;
}
@Override
public long executeCount(CommandContext commandContext) {
checkQueryOk();
return commandContext.getResultEntityManager().findResultCountByQueryCriteria( this);
}
@Override
public List<ResultEntity> executeList(CommandContext commandContext, Page page) {
checkQueryOk();
ensureVariablesInitialized();
return commandContext
.getResultEntityManager()
.findResultsByQueryCriteria(this, page);
}
public String getResultId() {
return resultId;
}
public String getRunId() {
return runId;
}
public String getType() {
return type;
}
public String getProcessDefinitionKey() {
return processDefinitionKey;
}
public String getTaskDefinitionKey() {
return taskDefinitionKey;
}
@Override
public ResultQuery simulationInstanceId(String simulationInstanceId) {
this.simulationInstanceId = simulationInstanceId;
return this;
}
@Override
public ResultQuery resultVariableValueEquals(String variableName,Object variableValue) {
variableValueEquals(variableName, variableValue);
return this;
}
}