You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by va...@apache.org on 2011/01/13 15:02:48 UTC

svn commit: r1058564 - in /ode/branches/ode-1.3.5.x/dao-jpa/src/main/java/org/apache/ode/dao/jpa: ProcessInstanceDAOImpl.java ProcessManagementDAOImpl.java

Author: vanto
Date: Thu Jan 13 14:02:48 2011
New Revision: 1058564

URL: http://svn.apache.org/viewvc?rev=1058564&view=rev
Log:
JPA impl for ODE-795, which was horribly broken.

Modified:
    ode/branches/ode-1.3.5.x/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessInstanceDAOImpl.java
    ode/branches/ode-1.3.5.x/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessManagementDAOImpl.java

Modified: ode/branches/ode-1.3.5.x/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessInstanceDAOImpl.java
URL: http://svn.apache.org/viewvc/ode/branches/ode-1.3.5.x/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessInstanceDAOImpl.java?rev=1058564&r1=1058563&r2=1058564&view=diff
==============================================================================
--- ode/branches/ode-1.3.5.x/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessInstanceDAOImpl.java (original)
+++ ode/branches/ode-1.3.5.x/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessInstanceDAOImpl.java Thu Jan 13 14:02:48 2011
@@ -63,22 +63,28 @@ import java.util.Set;
 @Entity
 @Table(name="ODE_PROCESS_INSTANCE")
 @NamedQueries({
-     @NamedQuery(name=ProcessInstanceDAOImpl.DELETE_INSTANCES_BY_PROCESS, query="delete from ProcessInstanceDAOImpl as i where i._process = :process"),
-     @NamedQuery(name=ProcessInstanceDAOImpl.SELECT_INSTANCE_IDS_BY_PROCESS, query="select i._instanceId from ProcessInstanceDAOImpl as i where i._process = :process"),
-     @NamedQuery(name=ProcessInstanceDAOImpl.COUNT_INSTANCE_IDS_BY_PROCESS, query="select count(i._instanceId) from ProcessInstanceDAOImpl as i where i._process = :process"),
-     @NamedQuery(name=ProcessInstanceDAOImpl.SELECT_FAULT_IDS_BY_PROCESS, query="select i._faultId from ProcessInstanceDAOImpl as i where i._process = :process and i._faultId is not null"),
+    @NamedQuery(name=ProcessInstanceDAOImpl.DELETE_INSTANCES_BY_PROCESS, query="delete from ProcessInstanceDAOImpl as i where i._process = :process"),
+    @NamedQuery(name=ProcessInstanceDAOImpl.SELECT_INSTANCE_IDS_BY_PROCESS, query="select i._instanceId from ProcessInstanceDAOImpl as i where i._process = :process"),
+    @NamedQuery(name=ProcessInstanceDAOImpl.COUNT_INSTANCE_IDS_BY_PROCESS, query="select count(i._instanceId) from ProcessInstanceDAOImpl as i where i._process = :process"),
+    @NamedQuery(name=ProcessInstanceDAOImpl.SELECT_FAULT_IDS_BY_PROCESS, query="select i._faultId from ProcessInstanceDAOImpl as i where i._process = :process and i._faultId is not null"),
     @NamedQuery(name=ProcessInstanceDAOImpl.COUNT_FAILED_INSTANCES_BY_STATUS_AND_PROCESS_ID, 
-            query="select count(i._instanceId), max(i._lastRecovery) from ProcessInstanceDAOImpl as i where i._process._processId = :processId and i._state in(:states) and exists(select r from ActivityRecoveryDAOImpl r where i = r._instance)")
+            query="select count(i._instanceId), max(i._lastRecovery) from ProcessInstanceDAOImpl as i where i._process._processId = :processId and i._state in(:states) and exists(select r from ActivityRecoveryDAOImpl r where i = r._instance)"),
+    @NamedQuery(name=ProcessInstanceDAOImpl.COUNT_FAILED_INSTANCES_BY_STATUS_AND_PROCESS_IDS,
+            query="select i._process._processId, count(i._instanceId), max(i._lastRecovery) from ProcessInstanceDAOImpl as i where i._process._processId in (:processIds) and i._state = 20 and exists(select r from ActivityRecoveryDAOImpl r where i = r._instance) group by i._process._processId"),
+    @NamedQuery(name=ProcessInstanceDAOImpl.COUNT_INSTANCES_BY_PROCESSES_IDS_AND_STATES, 
+            query="select i._process._processId, count(i._instanceId) from ProcessInstanceDAOImpl as i where i._process._processId in (:processIds) and i._state in(:states) group by i._process._processId")
 })
 public class ProcessInstanceDAOImpl extends OpenJPADAO implements ProcessInstanceDAO {
     private static final Log __log = LogFactory.getLog(ProcessInstanceDAOImpl.class);
     
     public final static String DELETE_INSTANCES_BY_PROCESS = "DELETE_INSTANCES_BY_PROCESS";
-     public final static String SELECT_INSTANCE_IDS_BY_PROCESS = "SELECT_INSTANCE_IDS_BY_PROCESS";
-     public final static String COUNT_INSTANCE_IDS_BY_PROCESS = "COUNT_INSTANCE_IDS_BY_PROCESS";
+    public final static String SELECT_INSTANCE_IDS_BY_PROCESS = "SELECT_INSTANCE_IDS_BY_PROCESS";
+    public final static String COUNT_INSTANCE_IDS_BY_PROCESS = "COUNT_INSTANCE_IDS_BY_PROCESS";
 
-     public final static String SELECT_FAULT_IDS_BY_PROCESS = "SELECT_FAULT_IDS_BY_PROCESS";
+    public final static String SELECT_FAULT_IDS_BY_PROCESS = "SELECT_FAULT_IDS_BY_PROCESS";
     public final static String COUNT_FAILED_INSTANCES_BY_STATUS_AND_PROCESS_ID = "COUNT_FAILED_INSTANCES_BY_STATUS_AND_PROCESS_ID";
+    public final static String COUNT_FAILED_INSTANCES_BY_STATUS_AND_PROCESS_IDS = "COUNT_FAILED_INSTANCES_BY_STATUS_AND_PROCESS_IDS";    
+    public static final String COUNT_INSTANCES_BY_PROCESSES_IDS_AND_STATES = "COUNT_INSTANCES_BY_PROCESSES_IDS_AND_STATES";
     
     @Id @Column(name="ID")
     @GeneratedValue(strategy=GenerationType.AUTO)

Modified: ode/branches/ode-1.3.5.x/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessManagementDAOImpl.java
URL: http://svn.apache.org/viewvc/ode/branches/ode-1.3.5.x/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessManagementDAOImpl.java?rev=1058564&r1=1058563&r2=1058564&view=diff
==============================================================================
--- ode/branches/ode-1.3.5.x/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessManagementDAOImpl.java (original)
+++ ode/branches/ode-1.3.5.x/dao-jpa/src/main/java/org/apache/ode/dao/jpa/ProcessManagementDAOImpl.java Thu Jan 13 14:02:48 2011
@@ -20,22 +20,22 @@
 package org.apache.ode.dao.jpa;
 
 import java.util.Collection;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Set;
-import javax.xml.namespace.QName;
 
 import javax.persistence.EntityManager;
 import javax.persistence.Query;
+import javax.xml.namespace.QName;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.ode.bpel.common.InstanceFilter;
+import org.apache.ode.bpel.common.InstanceFilter.StatusKeys;
 import org.apache.ode.bpel.dao.BpelDAOConnection;
 import org.apache.ode.bpel.dao.ProcessInstanceDAO;
 import org.apache.ode.bpel.dao.ProcessManagementDAO;
-import org.apache.ode.bpel.dao.ProcessManagementDAO.FailedSummaryValue;
-import org.apache.ode.bpel.dao.ProcessManagementDAO.InstanceSummaryKey;
 
 public class ProcessManagementDAOImpl implements ProcessManagementDAO {
 	private static final Log __log = LogFactory.getLog(ProcessManagementDAOImpl.class);
@@ -85,10 +85,35 @@ public class ProcessManagementDAOImpl im
     }
     
     public Map<InstanceSummaryKey, Long> countInstancesSummary(Set<String> pids) {
-        return new HashMap<InstanceSummaryKey, Long>();
+        Map<InstanceSummaryKey, Long> result = new HashMap<InstanceSummaryKey, Long>();
+        if (!pids.isEmpty()) {
+            for (StatusKeys status : InstanceFilter.StatusKeys.values()) {
+                Query query = em.createNamedQuery(ProcessInstanceDAOImpl.COUNT_INSTANCES_BY_PROCESSES_IDS_AND_STATES);
+                query.setParameter("states", new InstanceFilter("status=" + status.toString()).convertFilterState());
+                query.setParameter("processIds", pids);
+                for (Object o : query.getResultList()) {
+                    Object[] row = (Object[]) o;
+                    InstanceSummaryKey key = new InstanceSummaryKey(row[0].toString(), status.toString());
+                    result.put(key, (Long) row[1]);
+                }
+            }
+        }
+
+        return result;
     }
     
     public Map<String, FailedSummaryValue> findFailedCountAndLastFailedDateForProcessIds(Set<String> pids) {
-        return new HashMap<String, FailedSummaryValue>();
+        Map<String, FailedSummaryValue> result = new HashMap<String, FailedSummaryValue>();
+        if (!pids.isEmpty()) {
+            Query query = em.createNamedQuery(ProcessInstanceDAOImpl.COUNT_FAILED_INSTANCES_BY_STATUS_AND_PROCESS_IDS);
+            query.setParameter("processIds", pids);
+            for (Object o : query.getResultList()) {
+                System.out.println(o);
+                Object[] row = (Object[]) o;
+                result.put(row[0].toString(), new FailedSummaryValue((Long) row[1], (Date) row[2]));
+            }
+        }
+        return result;
+
     }
 }