Index: trunk/ippTools/src/camtool.c
===================================================================
--- trunk/ippTools/src/camtool.c	(revision 13937)
+++ trunk/ippTools/src/camtool.c	(revision 14018)
@@ -203,8 +203,13 @@
 
     // find the chipProcessedExp exposures that we want to queue up.
-    psString query = psStringCopy("SELECT * FROM chipProcessedExp");
+//    psString query = psStringCopy("SELECT * FROM chipRun WHERE chipRun.state = 'stop'");
+    psString query = pxDataGet("camtool_find_chip_id.sql");
+    if (!query) {
+        psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
+        return false;
+    }
 
     if (where) {
-        psString whereClause = psDBGenerateWhereSQL(where, "chipProcessedExp");
+        psString whereClause = psDBGenerateWhereSQL(where, "");
         psFree(where);
         psStringAppend(&query, " %s", whereClause);
@@ -245,7 +250,7 @@
         psMetadata *md = output->data[i];
 
-        chipProcessedExpRow *row = chipProcessedExpObjectFromMetadata(md);
+        chipRunRow *row = chipRunObjectFromMetadata(md);
         if (!row) {
-            psError(PS_ERR_UNKNOWN, false, "failed to convert metadata into chipProcessedExp");
+            psError(PS_ERR_UNKNOWN, false, "failed to convert metadata into chipRun");
             psFree(output);
             return false;
@@ -253,5 +258,5 @@
 
         // queue the exp
-        if (!camQueueChipID(config,
+        if (!pxcamQueueByChipID(config,
                     row->chip_id,
                     workdir     ? workdir   : row->workdir,
@@ -601,6 +606,4 @@
     }
 
-    // start a transaction so we don't end up with an exp_tag is both
-    // camPendingExp & camProcessedExp
     if (!psDBTransaction(config->dbh)) {
         psError(PS_ERR_UNKNOWN, false, "database error");
@@ -609,5 +612,5 @@
     }
 
-    camPendingExpRow *pendingRow = camPendingExpObjectFromMetadata(output->data[0]);
+    camRunRow *pendingRow = camRunObjectFromMetadata(output->data[0]);
     psFree(output);
     // create a new camProcessedImfile object
@@ -615,9 +618,4 @@
         pendingRow->cam_id,
         pendingRow->chip_id,
-        pendingRow->workdir,
-        pendingRow->label,
-        pendingRow->reduction,
-        pendingRow->expgroup,
-        pendingRow->dvodb,
         uri,
         bg,
@@ -637,4 +635,5 @@
         code
     );
+    psFree(pendingRow);
 
     // insert the new row into the camProcessedImfile table
@@ -646,23 +645,16 @@
         psError(PS_ERR_UNKNOWN, false, "database error");
         psFree(row);
-        psFree(pendingRow);
-        return false;
-    }
+        return false;
+    }
+
+    // since there is only one exp per 'run' set camRun.state = 'stop'
+    if (!pxcamRunSetState(config, row->cam_id, "stop")) {
+        psError(PS_ERR_UNKNOWN, false, "failed to change camRun.state for cam_id: %" PRId64, row->cam_id);
+        psFree(row);
+        return false;
+    }
+
     psFree(row);
 
-    // delete the camPendingExp row from the database
-    if (!camPendingExpDeleteObject(config->dbh, pendingRow)) {
-        // rollback
-        if (!psDBRollback(config->dbh)) {
-            psError(PS_ERR_UNKNOWN, false, "database error");
-        }
-        psError(PS_ERR_UNKNOWN, false, "database error");
-        psFree(pendingRow);
-        return false;
-    }
-
-    psFree(pendingRow);
-
-    // point of no return for camPendingExp -> camProcessedExp
     if (!psDBCommit(config->dbh)) {
         psError(PS_ERR_UNKNOWN, false, "database error");
