package org.orienteer.bpm.camunda.handler;
import com.orientechnologies.orient.core.metadata.schema.OType;
import org.camunda.bpm.engine.impl.cmmn.entity.runtime.CaseExecutionEntity;
import org.camunda.bpm.engine.impl.db.ListQueryParameterObject;
import org.camunda.bpm.engine.runtime.CaseExecutionQuery;
import org.orienteer.bpm.camunda.OPersistenceSession;
import org.orienteer.bpm.camunda.handler.history.HistoricEventHandler;
import org.orienteer.bpm.camunda.handler.history.HistoricVariableInstanceEntityHandler;
import org.orienteer.core.util.OSchemaHelper;
import java.util.List;
/**
* Created by kir on 16.07.16.
*/
public class CaseExecutionEntityHandler extends AbstractEntityHandler<CaseExecutionEntity> {
public static final String OCLASS_NAME = "BPMCaseExecution";
public CaseExecutionEntityHandler() {
super(OCLASS_NAME);
}
@Override
public void applySchema(OSchemaHelper helper) {
super.applySchema(helper);
helper.oProperty("caseInstanceId", OType.STRING, 10)
.oProperty("businessKey", OType.STRING, 20)
.oProperty("caseDefinitionId", OType.STRING, 30)
.oProperty("activityId", OType.STRING, 40)
.oProperty("parentId", OType.STRING, 50)
.oProperty("superCaseExecutionId", OType.STRING, 60)
.oProperty("superExecutionId", OType.STRING, 70)
.oProperty("state", OType.INTEGER, 80)
.oProperty("previous", OType.INTEGER, 90)
.oProperty("required", OType.BOOLEAN, 100)
.oProperty("historyEvents", OType.LINKLIST, 110).assignTab("history").assignVisualization("table")
.oProperty("historyVariableInstances", OType.LINKLIST, 120).assignVisualization("table");
}
@Override
public void applyRelationships(OSchemaHelper helper) {
super.applyRelationships(helper);
helper.setupRelationship(OCLASS_NAME, "historyEvents", HistoricEventHandler.OCLASS_NAME, "caseExecution");
helper.setupRelationship(OCLASS_NAME, "historyVariableInstances", HistoricVariableInstanceEntityHandler.OCLASS_NAME, "caseExecution");
}
@Statement
public List<CaseExecutionEntity> selectCaseExecutionsByParentCaseExecutionId(OPersistenceSession session, final ListQueryParameterObject parameter) {
return queryList(session, "select from " + getSchemaClass() + " where parentId = ?", parameter.getParameter());
}
@Statement
public List<CaseExecutionEntity> selectCaseExecutionsByCaseInstanceId(OPersistenceSession session, final ListQueryParameterObject parameter) {
return queryList(session, "select from " + getSchemaClass() + " where caseInstanceId = ?", parameter.getParameter());
}
@Statement
public String selectCaseInstanceIdsByCaseDefinitionId(OPersistenceSession session, final ListQueryParameterObject parameter) {
return querySingle(session, "select id from " + getSchemaClass() + " where caseDefinitionId = ? and parentId is null",
parameter.getParameter()).toString();
}
@Statement
public List<CaseExecutionEntity> selectSubCaseInstanceBySuperCaseExecutionId(OPersistenceSession session, final String parameter) {
return queryList(session, "select from " + getSchemaClass() + " where superCaseExecutionId = ?", parameter);
}
@Statement
public List<CaseExecutionEntity> selectSubCaseInstanceBySuperExecutionId(OPersistenceSession session, final String parameter) {
return queryList(session, "select from " + getSchemaClass() + " where superExecutionId = ?", parameter);
}
@Statement
public List<CaseExecutionEntity> selectCaseExecutionsByQueryCriteria(OPersistenceSession session, final CaseExecutionQuery query) {
return query(session, query);
}
@Statement
public List<CaseExecutionEntity> selectCaseInstanceByQueryCriteria(OPersistenceSession session, final CaseExecutionQuery query) {
return query(session, query);
}
}