Author: kwright
Date: Mon Jun  9 17:08:41 2014
New Revision: 1601442

URL: http://svn.apache.org/r1601442
Log:
Fix queries

Modified:
    
manifoldcf/branches/CONNECTORS-946/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/jobs/JobManager.java
    
manifoldcf/branches/CONNECTORS-946/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/jobs/Jobs.java

Modified: 
manifoldcf/branches/CONNECTORS-946/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/jobs/JobManager.java
URL: 
http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-946/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/jobs/JobManager.java?rev=1601442&r1=1601441&r2=1601442&view=diff
==============================================================================
--- 
manifoldcf/branches/CONNECTORS-946/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/jobs/JobManager.java
 (original)
+++ 
manifoldcf/branches/CONNECTORS-946/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/jobs/JobManager.java
 Mon Jun  9 17:08:41 2014
@@ -560,11 +560,16 @@ public class JobManager implements IJobM
   protected void noteTransformationConnectionDeregistration(List<String> list)
     throws ManifoldCFException
   {
+    // Query for the matching jobs, and then for each job potentially adjust 
the state
+    Long[] jobIDs = jobs.findJobsMatchingTransformations(list);
     StringBuilder query = new StringBuilder();
     ArrayList newList = new ArrayList();
-    // Query for the matching jobs, and then for each job potentially adjust 
the state
-    jobs.buildTransformationMatchingQuery(query,newList,list);
-    query.append(" FOR UPDATE");
+    
+    query.append("SELECT 
").append(jobs.idField).append(",").append(jobs.statusField)
+      .append(" FROM ").append(jobs.getTableName()).append(" WHERE ")
+      .append(database.buildConjunctionClause(newList,new ClauseDescription[]{
+        new MultiClause(jobs.idField,jobIDs)}))
+      .append(" FOR UPDATE");
     IResultSet set = database.performQuery(query.toString(),newList,null,null);
     int i = 0;
     while (i < set.getRowCount())
@@ -611,11 +616,16 @@ public class JobManager implements IJobM
   protected void noteTransformationConnectionRegistration(List<String> list)
     throws ManifoldCFException
   {
+    // Query for the matching jobs, and then for each job potentially adjust 
the state
+    Long[] jobIDs = jobs.findJobsMatchingTransformations(list);
     StringBuilder query = new StringBuilder();
     ArrayList newList = new ArrayList();
-    // Query for the matching jobs, and then for each job potentially adjust 
the state
-    jobs.buildTransformationMatchingQuery(query,newList,list);
-    query.append(" FOR UPDATE");
+    
+    query.append("SELECT 
").append(jobs.idField).append(",").append(jobs.statusField)
+      .append(" FROM ").append(jobs.getTableName()).append(" WHERE ")
+      .append(database.buildConjunctionClause(newList,new ClauseDescription[]{
+        new MultiClause(jobs.idField,jobIDs)}))
+      .append(" FOR UPDATE");
     IResultSet set = database.performQuery(query.toString(),newList,null,null);
     int i = 0;
     while (i < set.getRowCount())

Modified: 
manifoldcf/branches/CONNECTORS-946/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/jobs/Jobs.java
URL: 
http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-946/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/jobs/Jobs.java?rev=1601442&r1=1601441&r2=1601442&view=diff
==============================================================================
--- 
manifoldcf/branches/CONNECTORS-946/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/jobs/Jobs.java
 (original)
+++ 
manifoldcf/branches/CONNECTORS-946/framework/pull-agent/src/main/java/org/apache/manifoldcf/crawler/jobs/Jobs.java
 Mon Jun  9 17:08:41 2014
@@ -563,15 +563,25 @@ public class Jobs extends org.apache.man
     analyzeTable();
   }
 
-  /** Build a query returning jobID and status for all jobs matching a set of 
transformation connection names.
+  /** Find a list of jobs matching specified transformation names.
   */
-  public void buildTransformationMatchingQuery(StringBuilder query, ArrayList 
params,
-    List<String> transformationConnectionNames)
+  public Long[] findJobsMatchingTransformations(List<String> 
transformationConnectionNames)
+    throws ManifoldCFException
   {
-    query.append("SELECT ").append(idField).append(",").append(statusField)
+    StringBuilder query = new StringBuilder();
+    ArrayList params = new ArrayList();
+    query.append("SELECT ").append(idField)
       .append(" FROM ").append(getTableName()).append(" t1 WHERE EXISTS(");
     
pipelineManager.buildQueryClause(query,params,"t1."+idField,transformationConnectionNames);
     query.append(")");
+    IResultSet set = performQuery(query.toString(),params,null,null);
+    Long[] rval = new Long[set.getRowCount()];
+    for (int i = 0; i < rval.length; i++)
+    {
+      IResultRow row = set.getRow(i);
+      rval[i] = (Long)row.getValue(idField);
+    }
+    return rval;
   }
   
   /** Read schedule records for a specified set of jobs.  Cannot use caching!


Reply via email to