protected EntityManager getEntityManager() { return super.getEntityManager(); }
@Override public List<ProcessInstanceLog> findProcessInstances(String processId) { EntityManager em = getEntityManager(); Query query = em .createQuery("FROM ProcessInstanceLog p WHERE p.processId = :processId") .setParameter("processId", processId); return executeQuery(query, em, ProcessInstanceLog.class); }
@Override public List<VariableInstanceLog> findVariableInstances(long processInstanceId) { EntityManager em = getEntityManager(); Query query = em .createQuery("FROM VariableInstanceLog v WHERE v.processInstanceId = :processInstanceId ORDER BY date") .setParameter("processInstanceId", processInstanceId); return executeQuery(query, em, VariableInstanceLog.class); }
@Override public List<ProcessInstanceLog> findActiveProcessInstances() { EntityManager em = getEntityManager(); Query query = em .createQuery("FROM ProcessInstanceLog p WHERE p.end is null"); return executeQuery(query, em, ProcessInstanceLog.class); }
@Override public List<ProcessInstanceLog> findSubProcessInstances(long processInstanceId) { EntityManager em = getEntityManager(); Query query = em .createQuery("FROM ProcessInstanceLog p WHERE p.parentProcessInstanceId = :processInstanceId") .setParameter("processInstanceId", processInstanceId); return executeQuery(query, em, ProcessInstanceLog.class); }
@Override public List<VariableInstanceLog> findVariableInstances(long processInstanceId, String variableId) { EntityManager em = getEntityManager(); Query query = em .createQuery("FROM VariableInstanceLog v WHERE v.processInstanceId = :processInstanceId AND v.variableId = :variableId ORDER BY date") .setParameter("processInstanceId", processInstanceId) .setParameter("variableId", variableId); return executeQuery(query, em, VariableInstanceLog.class); }
@Override public List<ProcessInstanceLog> findActiveProcessInstances(String processId) { EntityManager em = getEntityManager(); Query query = em .createQuery("FROM ProcessInstanceLog p WHERE p.processId = :processId AND p.end is null") .setParameter("processId", processId); return executeQuery(query, em, ProcessInstanceLog.class); }
@Override public List<NodeInstanceLog> findNodeInstances(long processInstanceId, String nodeId) { EntityManager em = getEntityManager(); Query query = em .createQuery("FROM NodeInstanceLog n WHERE n.processInstanceId = :processInstanceId AND n.nodeId = :nodeId ORDER BY date,id") .setParameter("processInstanceId", processInstanceId) .setParameter("nodeId", nodeId); return executeQuery(query, em, NodeInstanceLog.class); }
@Override public List<ProcessInstanceLog> findProcessInstances() { EntityManager em = getEntityManager(); Query query = em.createQuery("FROM ProcessInstanceLog"); return executeQuery(query, em, ProcessInstanceLog.class); }
@Override public List<NodeInstanceLog> findNodeInstances(long processInstanceId) { EntityManager em = getEntityManager(); Query query = em .createQuery("FROM NodeInstanceLog n WHERE n.processInstanceId = :processInstanceId ORDER BY date,id") .setParameter("processInstanceId", processInstanceId); return executeQuery(query, em, NodeInstanceLog.class); }
@Override public List<VariableInstanceLog> findVariableInstancesByName(String variableId, boolean onlyActiveProcesses) { EntityManager em = getEntityManager(); Query query; if( ! onlyActiveProcesses ) { query = em.createQuery("FROM VariableInstanceLog v WHERE v.variableId = :variableId ORDER BY date"); } else { query = em.createQuery( "SELECT v " + "FROM VariableInstanceLog v, ProcessInstanceLog p " + "WHERE v.processInstanceId = p.processInstanceId " + "AND v.variableId = :variableId " + "AND p.end is null " + "ORDER BY v.date"); } query.setParameter("variableId", variableId); return executeQuery(query, em, VariableInstanceLog.class); }
@Override public void clear() { EntityManager em = getEntityManager(); Object newTx = joinTransaction(em); try { int deletedNodes = em.createQuery("delete FROM NodeInstanceLog WHERE processInstanceId in (select spl.processInstanceId FROM ProcessInstanceLog spl WHERE spl.status in (2, 3))").executeUpdate(); logger.debug("CLEAR:: deleted node instances {}", deletedNodes); int deletedVariables = em.createQuery("delete FROM VariableInstanceLog WHERE processInstanceId in (select spl.processInstanceId FROM ProcessInstanceLog spl WHERE spl.status in (2, 3))").executeUpdate(); logger.debug("CLEAR:: deleted variable instances {}", deletedVariables); int deletedProcesses = em.createQuery("delete FROM ProcessInstanceLog WHERE status in (2, 3)").executeUpdate(); logger.debug("CLEAR:: deleted process instances {}", deletedProcesses); } finally { closeEntityManager(em, newTx); } }
@Override public ProcessInstanceLog findProcessInstance(long processInstanceId) { EntityManager em = getEntityManager(); Object newTx = joinTransaction(em); try { return (ProcessInstanceLog) em .createQuery("FROM ProcessInstanceLog p WHERE p.processInstanceId = :processInstanceId") .setParameter("processInstanceId", processInstanceId).getSingleResult(); } catch (NoResultException e) { return null; } finally { closeEntityManager(em, newTx); } }
@Override public List<VariableInstanceLog> findVariableInstancesByNameAndValue(String variableId, String value, boolean onlyActiveProcesses) { EntityManager em = getEntityManager(); Query query; if( ! onlyActiveProcesses ) { query = em.createQuery("FROM VariableInstanceLog v WHERE v.variableId = :variableId AND v.value = :value ORDER BY date"); } else { query = em.createQuery( "SELECT v " + "FROM VariableInstanceLog v, ProcessInstanceLog p " + "WHERE v.processInstanceId = p.processInstanceId " + "AND v.variableId = :variableId " + "AND v.value = :value " + "AND p.end is null " + "ORDER BY v.date"); } query.setParameter("variableId", variableId).setParameter("value", value); return executeQuery(query, em, VariableInstanceLog.class); }
public int doDelete(String queryBase, QueryWhere queryData, Class<?> resultType, String subQuery) { // create query Map<String, Object> queryParams = new HashMap<String, Object>(); String queryString = createDeleteQuery(queryBase, queryData, queryParams, true, subQuery); // logging logger.debug("DELETE statement:\n {}", queryString); if( logger.isDebugEnabled() ) { StringBuilder paramsStr = new StringBuilder("PARAMS:"); Map<String, Object> orderedParams = new TreeMap<String, Object>(queryParams); for( Entry<String, Object> entry : orderedParams.entrySet() ) { paramsStr.append("\n " + entry.getKey() + " : '" + entry.getValue() + "'"); } logger.debug(paramsStr.toString()); } // execute query EntityManager em = getEntityManager(); Object newTx = joinTransaction(em); Query query = em.createQuery(queryString); int result = executeWithParameters(queryParams, query); logger.debug("Deleted rows " + result); closeEntityManager(em, newTx); return result; }
protected EntityManager getEntityManager() { return super.getEntityManager(); }