Index: trunk/ippTasks/survey.pro
===================================================================
--- trunk/ippTasks/survey.pro	(revision 24971)
+++ trunk/ippTasks/survey.pro	(revision 24989)
@@ -4,37 +4,123 @@
 check.globals
 
-list DIFF_WW
-    ThreePi_NorthernRegion.090729
-end
-
-$DIFF_WW_CNT = 0
-
-task diff.check
+book create SURVEY_DIFF
+book create SURVEY_MAGIC
+
+$SURVEY_DIFF_DB = 0
+$SURVEY_MAGIC_DB = 0
+
+$SURVEY_EXEC = 120
+$SURVEY_POLL = 10
+$SURVEY_TIMEOUT = 600
+
+
+# user functions to manipulate diff labels
+macro survey.add.diff
+  if ($0 != 3)
+    echo "USAGE: survey.add.diff (label) (workdir base)"
+    break
+  end
+  book newpage SURVEY_DIFF $1
+  book setword SURVEY_DIFF $1 WORKDIR $2
+  book setword SURVEY_DIFF $1 STATE PENDING
+end
+
+macro survey.del.diff
+  if ($0 != 2)
+    echo "USAGE: survey.del.diff (label)"
+    break
+  end
+  book delpage SURVEY_DIFF $1
+end
+
+macro survey.show.diff
+  if ($0 != 1)
+    echo "USAGE: survey.show.diff"
+    break
+  end
+  book listbook SURVEY_DIFF
+end
+
+# user functions to manipulate magic labels
+macro survey.add.magic
+  if ($0 != 3)
+    echo "USAGE: survey.add.magic (label) (workdir base)"
+    break
+  end
+  book newpage SURVEY_MAGIC $1
+  book setword SURVEY_MAGIC $1 WORKDIR $2
+  book setword SURVEY_MAGIC $1 STATE PENDING
+end
+
+macro survey.del.magic
+  if ($0 != 2)
+    echo "USAGE: survey.del.magic (label)"
+    break
+  end
+  book delpage SURVEY_MAGIC $1
+end
+
+macro survey.show.magic
+  if ($0 != 1)
+    echo "USAGE: survey.show.magic"
+    break
+  end
+  book listbook SURVEY_MAGIC
+end
+
+
+task survey.diff
   host local
  
-  periods      -poll 10
-  periods      -exec 120
-  periods      -timeout 600
+  periods      -poll $SURVEY_POLL
+  periods      -exec $SURVEY_EXEC
+  periods      -timeout $SURVEY_TIMEOUT
   npending     1
 
-  stdout $LOGDIR/diffcheck.log
-  stderr $LOGDIR/diffcheck.log
+  stdout $LOGDIR/survey.diff.log
+  stderr $LOGDIR/survey.diff.log
 
   # generate diff warp-warp runs
   task.exec
-    if ($DIFF_WW:n == 0) break
-    $run = difftool -dbname gpc1 -definewarpwarp -distance 0.1 -good_frac 0.1 -timediff 3600
-    $run = $run -input_label $DIFF_WW:$DIFF_WW_CNT
-    $run = $run -template_label $DIFF_WW:$DIFF_WW_CNT
-    $run = $run -label $DIFF_WW:$DIFF_WW_CNT
-    $run = $run -workdir neb://@HOST@.0/gpc1/$DIFF_WW:$DIFF_WW_CNT
-    $run = $run -reduction WARPWARP
-
-    $DIFF_WW_CNT ++
-    if ($DIFF_WW_CNT >= $DIFF_WW:n) 
-      echo "reset DIFF_WW_CNT (was $DIFF_WW_CNT)"
-      set DIFF_WW_CNT = 0
-    end
-
+    book npages SURVEY_DIFF -var N
+    if ($N == 0)
+#      echo "No labels for processing"
+      break
+    endif
+
+    book getpage SURVEY_DIFF 0 -var label -key STATE NEW
+    if ("$label" == "NULL")
+      # All labels have been done --- reset
+#      echo "Resetting labels"
+      for i 0 $N
+        book getpage SURVEY_DIFF $i -var label
+	book setword SURVEY_DIFF $label STATE NEW
+      end
+      book getpage SURVEY_DIFF 0 -var label -key STATE NEW
+
+      # Select different database
+      $SURVEY_DIFF_DB ++
+      if ($SURVEY_DIFF_DB >= $DB:n)
+        $SURVEY_DIFF_DB = 0
+      end
+    end
+
+    book setword SURVEY_DIFF $label STATE DONE
+    book getword SURVEY_DIFF $label WORKDIR -var workdir
+
+    $run = difftool -definewarpwarp -distance 0.1 -good_frac 0.1 -timediff 3600
+    $run = $run -input_label $label
+    $run = $run -template_label $label
+    $run = $run -label $label
+    $run = $run -workdir $workdir/$label/
+
+    if ($DB:n == 0)
+      option DEFAULT
+    else
+      $run = $run -dbname $DB:$SURVEY_DIFF_DB
+      option $DB:$SURVEY_DIFF_DB
+    end
+    
+#    echo $run
     command $run
   end
@@ -42,5 +128,5 @@
   # success
   task.exit    0
-    echo "checked for new diff runs"
+#    echo "Success"
   end
 
@@ -59,2 +145,77 @@
   end
 end
+
+
+
+task survey.magic
+  host local
+ 
+  periods      -poll $SURVEY_POLL
+  periods      -exec $SURVEY_EXEC
+  periods      -timeout $SURVEY_TIMEOUT
+  npending     1
+
+  stdout $LOGDIR/survey.magic.log
+  stderr $LOGDIR/survey.magic.log
+
+  # generate magic warp-warp runs
+  task.exec
+    book npages SURVEY_MAGIC -var N
+    if ($N == 0)
+#      echo "No labels for processing"
+      break
+    endif
+
+    book getpage SURVEY_MAGIC 0 -var label -key STATE NEW
+    if ("$label" == "NULL")
+      # All labels have been done --- reset
+#      echo "Resetting labels"
+      for i 0 $N
+        book getpage SURVEY_MAGIC $i -var label
+	book setword SURVEY_MAGIC $label STATE NEW
+      end
+      book getpage SURVEY_MAGIC 0 -var label -key STATE NEW
+
+      # Select different database
+      $SURVEY_MAGIC_DB ++
+      if ($SURVEY_MAGIC_DB >= $DB:n)
+        set $SURVEY_MAGIC_DB = 0
+      end
+    end
+
+    book setword SURVEY_MAGIC $label STATE DONE
+    book getword SURVEY_MAGIC $label WORKDIR -var workdir
+
+    $run = magictool -definebyquery -label $label -diff_label $label -workdir $workdir/$label/
+
+    if ($DB:n == 0)
+      option DEFAULT
+    else
+      $run = $run -dbname $DB:$SURVEY_MAGIC_DB
+      option $DB:$SURVEY_MAGIC_DB
+    end
+    
+#    echo $run
+    command $run
+  end
+
+  # success
+  task.exit    0
+#    echo "Success"
+  end
+
+  # locked list
+  task.exit    default
+    showcommand failure
+  end
+
+  task.exit    crash
+    showcommand crash
+  end
+
+  # operation times out?
+  task.exit    timeout
+    showcommand timeout
+  end
+end
+
