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;
+
     }
 }


Reply via email to