Index: trunk/ippTools/share/Makefile.am
===================================================================
--- trunk/ippTools/share/Makefile.am	(revision 37439)
+++ trunk/ippTools/share/Makefile.am	(revision 37551)
@@ -8,4 +8,8 @@
 	addtool_find_cam_id_dvo.sql \
 	addtool_find_cam_id.sql \
+	addtool_find_diff_id.sql \
+	addtool_find_diff_id_dvo.sql \
+	addtool_find_ff_id.sql \
+	addtool_find_ff_id_dvo.sql \
 	addtool_find_skycal_id_dvo.sql \
 	addtool_find_skycal_id.sql \
@@ -16,4 +20,6 @@
 	addtool_find_pendingexp.sql \
 	addtool_find_pendingexp_cam.sql \
+	addtool_find_pendingexp_diff.sql \
+	addtool_find_pendingexp_ff.sql \
 	addtool_find_pendingexp_skycal.sql \
 	addtool_find_pendingexp_stack.sql \
@@ -21,4 +27,6 @@
 	addtool_find_pendingmergeprocess.sql \
 	addtool_find_processedexp_cam.sql \
+	addtool_find_processedexp_diff.sql \
+	addtool_find_processedexp_ff.sql \
 	addtool_find_processedexp_skycal.sql \
 	addtool_find_processedexp_stack.sql \
@@ -29,4 +37,6 @@
 	addtool_pendingcleanuprun.sql \
 	addtool_queue_cam_id.sql \
+	addtool_queue_diff_id.sql \
+	addtool_queue_ff_id.sql \
 	addtool_queue_stack_id.sql \
 	addtool_queue_sky_id_multi.sql \
@@ -35,4 +45,6 @@
 	addtool_revertminidvodbprocessed.sql \
 	addtool_revertprocessedexp_cam.sql \
+	addtool_revertprocessedexp_diff.sql \
+	addtool_revertprocessedexp_ff.sql \
 	addtool_revertprocessedexp_skycal.sql \
 	addtool_revertprocessedexp_stack.sql \
Index: trunk/ippTools/share/addtool_find_diff_id.sql
===================================================================
--- trunk/ippTools/share/addtool_find_diff_id.sql	(revision 37551)
+++ trunk/ippTools/share/addtool_find_diff_id.sql	(revision 37551)
@@ -0,0 +1,22 @@
+SELECT
+     diffRun.*, diffInputSkyfile.diff_skyfile_id
+FROM 
+     diffInputSkyfile 
+JOIN diffSkyfile using (diff_id, skycell_id) 
+JOIN diffRun using (diff_id)
+
+LEFT JOIN (SELECT diff_id       AS added_diff_id,
+                  addRun.dvodb AS previous_dvodb
+           FROM addRun
+JOIN diffRun on (diff_id = stage_id and addRun.stage = 'diff')
+          ) as foo
+     ON diff_id = added_diff_id 
+     -- AND stage = 'diff'
+     -- hook for qualifying the join on the previous_dvodb
+     AND %s
+WHERE
+    diffRun.state = 'full'
+    AND diffSkyfile.fault = 0
+    AND diffSkyfile.quality = 0
+    AND added_diff_id IS NULL
+    -- addtool adds checks on exposure being added to the dvodb previously
Index: trunk/ippTools/share/addtool_find_diff_id_dvo.sql
===================================================================
--- trunk/ippTools/share/addtool_find_diff_id_dvo.sql	(revision 37551)
+++ trunk/ippTools/share/addtool_find_diff_id_dvo.sql	(revision 37551)
@@ -0,0 +1,15 @@
+SELECT diffRun.*, diffInputSkyfile.diff_skyfile_id 
+FROM 
+     diffInputSkyfile 
+JOIN diffSkyfile using (diff_id, skycell_id) 
+JOIN diffRun using (diff_id)
+
+
+diffRun JOIN diffSkyfile using (diff_id)
+
+WHERE diffRun.state = 'full' and diffSkyfile.quality = 0
+    AND diffRun.diff_id NOT IN (SELECT diffRun.diff_id
+       FROM addRun
+       JOIN diffRun on (diffRun.diff_id = addRun.stage_id and addRun.stage = 'diff') JOIN diffSkyfile on (diffRun.diff_id = diffSkyfile.diff_id)
+       WHERE addRun.stage = 'diff' AND %s
+      )
Index: trunk/ippTools/share/addtool_find_ff_id.sql
===================================================================
--- trunk/ippTools/share/addtool_find_ff_id.sql	(revision 37551)
+++ trunk/ippTools/share/addtool_find_ff_id.sql	(revision 37551)
@@ -0,0 +1,21 @@
+SELECT
+     fullForceRun.*, fullForceResult.warp_id
+FROM 
+     fullForceRun
+JOIN fullForceResult using (ff_id)
+
+LEFT JOIN (SELECT ff_id       AS added_ff_id,
+                  addRun.dvodb AS previous_dvodb
+           FROM addRun
+JOIN fullForceRun on (ff_id = stage_id and addRun.stage = 'fullforce')
+          ) as foo
+     ON ff_id = added_ff_id 
+     --AND stage = 'skycal'
+     -- hook for qualifying the join on the previous_dvodb
+     AND %s
+WHERE
+    fullForceRun.state = 'full'
+    AND fullForceResult.quality = 0
+    AND fullForceResult.fault = 0 
+    AND added_ff_id IS NULL
+    -- addtool adds checks on exposure being added to the dvodb previously
Index: trunk/ippTools/share/addtool_find_ff_id_dvo.sql
===================================================================
--- trunk/ippTools/share/addtool_find_ff_id_dvo.sql	(revision 37551)
+++ trunk/ippTools/share/addtool_find_ff_id_dvo.sql	(revision 37551)
@@ -0,0 +1,8 @@
+SELECT fullForceRun.*, fullForceResult.warp_id FROM fullForceRun JOIN fullForceResult using (ff_id)
+
+WHERE fullForceRun.state = 'full' and fullForceResult.quality = 0
+    AND fullForceRun.ff_id NOT IN (SELECT fullForceRun.ff_id
+       FROM addRun
+       JOIN fullForceRun on (fullForceRun.ff_id = addRun.stage_id and addRun.stage = 'fullforce') JOIN fullForceResult on (fullForceRun.ff_id = fullForceResult.ff_id)
+       WHERE addRun.stage = 'fullforce' AND %s
+      )
Index: trunk/ippTools/share/addtool_find_pendingexp_diff.sql
===================================================================
--- trunk/ippTools/share/addtool_find_pendingexp_diff.sql	(revision 37551)
+++ trunk/ippTools/share/addtool_find_pendingexp_diff.sql	(revision 37551)
@@ -0,0 +1,21 @@
+   SELECT
+    addRun.*,
+    diffSkyfile.path_base as stageroot,
+    "NULL",
+    "NULL"
+FROM addRun
+JOIN diffInputSkyfile
+    ON (diff_id = stage_id and diff_skyfile_id = stage_extra1 and stage = "diff")
+JOIN diffSkyfile
+    USING (diff_id, skycell_id)
+JOIN diffRun
+    using(diff_id)
+LEFT JOIN addProcessedExp using (add_id)
+LEFT JOIN addMask
+    ON addRun.label = addMask.label
+WHERE
+    diffRun.state = 'full'
+    AND ((addRun.state = 'new' AND addProcessedExp.add_id IS NULL) OR addRun.state = 'update')
+    AND addRun.dvodb IS NOT NULL
+    AND addRun.workdir IS NOT NULL
+    AND addMask.label IS NULL
Index: trunk/ippTools/share/addtool_find_pendingexp_ff.sql
===================================================================
--- trunk/ippTools/share/addtool_find_pendingexp_ff.sql	(revision 37551)
+++ trunk/ippTools/share/addtool_find_pendingexp_ff.sql	(revision 37551)
@@ -0,0 +1,19 @@
+   SELECT
+    addRun.*,
+    fullForceResult.path_base as stageroot,
+    "NULL",
+    "NULL"
+FROM addRun
+JOIN fullForceResult
+    ON (ff_id = stage_id and warp_id = stage_extra1 and stage = "fullforce")
+JOIN fullForceRun
+    using(ff_id)
+LEFT JOIN addProcessedExp using (add_id)
+LEFT JOIN addMask
+    ON addRun.label = addMask.label
+WHERE
+    fullForceRun.state = 'full'
+    AND ((addRun.state = 'new' AND addProcessedExp.add_id IS NULL) OR addRun.state = 'update')
+    AND addRun.dvodb IS NOT NULL
+    AND addRun.workdir IS NOT NULL
+    AND addMask.label IS NULL
Index: trunk/ippTools/share/addtool_find_processedexp_diff.sql
===================================================================
--- trunk/ippTools/share/addtool_find_processedexp_diff.sql	(revision 37551)
+++ trunk/ippTools/share/addtool_find_processedexp_diff.sql	(revision 37551)
@@ -0,0 +1,6 @@
+SELECT
+    addProcessedExp.*,
+    addRun.workdir
+FROM addProcessedExp
+JOIN addRun
+    USING(add_id)
Index: trunk/ippTools/share/addtool_find_processedexp_ff.sql
===================================================================
--- trunk/ippTools/share/addtool_find_processedexp_ff.sql	(revision 37551)
+++ trunk/ippTools/share/addtool_find_processedexp_ff.sql	(revision 37551)
@@ -0,0 +1,6 @@
+SELECT
+    addProcessedExp.*,
+    addRun.workdir
+FROM addProcessedExp
+JOIN addRun
+    USING(add_id)
Index: trunk/ippTools/share/addtool_queue_diff_id.sql
===================================================================
--- trunk/ippTools/share/addtool_queue_diff_id.sql	(revision 37551)
+++ trunk/ippTools/share/addtool_queue_diff_id.sql	(revision 37551)
@@ -0,0 +1,24 @@
+INSERT INTO addRun
+    SELECT
+        0,              -- add_id
+        'diff',		-- stage
+        diff_id,        -- stage_id
+        diff_skyfile_id, -- stage_extra1
+        '%s',           -- state
+        '%s',           -- workdir
+	'%s',           -- workdir_state
+        '%s',           -- reduction
+        '%s',           -- label
+        '%s',           -- data_group
+        '%s',           -- dvodb 
+        '%s',           -- note
+	%d,		-- image_only
+	%d,		-- minidvodb
+	'%s',           -- minidvodb_group 
+ 	'%s'	        -- minidvodb_name
+    FROM diffInputSkyfile 
+    JOIN diffSkyfile using (diff_id, skycell_id)
+    JOIN diffRun using (diff_id)
+    WHERE
+        diffRun.state = 'full' AND
+        AND diffRun.diff_id = %lld
Index: trunk/ippTools/share/addtool_queue_ff_id.sql
===================================================================
--- trunk/ippTools/share/addtool_queue_ff_id.sql	(revision 37551)
+++ trunk/ippTools/share/addtool_queue_ff_id.sql	(revision 37551)
@@ -0,0 +1,23 @@
+INSERT INTO addRun
+    SELECT
+        0,              -- add_id
+        'fullforce',		-- stage
+        ff_id,         -- stage_id
+	warp_id,	-- stage_extra1
+        '%s',           -- state
+        '%s',           -- workdir
+	'%s',           -- workdir_state
+        '%s',           -- reduction
+        '%s',           -- label
+        '%s',           -- data_group
+        '%s',           -- dvodb 
+        '%s',           -- note
+	%d,		-- image_only
+	%d,		-- minidvodb
+	'%s',           -- minidvodb_group 
+ 	'%s'	        -- minidvodb_name
+    FROM fullForceResult
+    JOIN fullForceRun using (ff_id)
+    WHERE
+        fullForceRun.state = 'full'
+        AND fullForceRun.ff_id = %lld
Index: trunk/ippTools/share/addtool_revertprocessedexp_diff.sql
===================================================================
--- trunk/ippTools/share/addtool_revertprocessedexp_diff.sql	(revision 37551)
+++ trunk/ippTools/share/addtool_revertprocessedexp_diff.sql	(revision 37551)
@@ -0,0 +1,7 @@
+DELETE FROM addProcessedExp
+USING addProcessedExp, addRun
+WHERE
+    addRun.add_id = addProcessedExp.add_id
+    AND addProcessedExp.fault != 0
+    AND addRun.state = 'new'
+    AND addRun.stage = 'diff'
Index: trunk/ippTools/share/addtool_revertprocessedexp_ff.sql
===================================================================
--- trunk/ippTools/share/addtool_revertprocessedexp_ff.sql	(revision 37551)
+++ trunk/ippTools/share/addtool_revertprocessedexp_ff.sql	(revision 37551)
@@ -0,0 +1,7 @@
+DELETE FROM addProcessedExp
+USING addProcessedExp, addRun
+WHERE
+    addRun.add_id = addProcessedExp.add_id
+    AND addProcessedExp.fault != 0
+    AND addRun.state = 'new'
+    AND addRun.stage = 'fullforce'
