Index: trunk/ippTools/share/chiptool_pendingimfile.sql
===================================================================
--- trunk/ippTools/share/chiptool_pendingimfile.sql	(revision 27834)
+++ trunk/ippTools/share/chiptool_pendingimfile.sql	(revision 27856)
@@ -10,5 +10,6 @@
     rawExp.camera,
     rawExp.telescope,
-    rawExp.filelevel
+    rawExp.filelevel,
+    IFNULL(Label.priority, 10000) AS priority
 FROM chipRun
 JOIN rawExp
@@ -25,4 +26,5 @@
 LEFT JOIN chipMask
     ON chipRun.label = chipMask.label
+LEFT JOIN Label ON chipRun.label = Label.label
 WHERE
     ((chipRun.state = 'new'
@@ -35,2 +37,3 @@
     AND chipProcessedImfile.data_state = 'update'
     AND chipProcessedImfile.fault = 0))
+    AND (Label.active OR Label.active IS NULL)
Index: trunk/ippTools/share/pstamptool_completedreq.sql
===================================================================
--- trunk/ippTools/share/pstamptool_completedreq.sql	(revision 27834)
+++ trunk/ippTools/share/pstamptool_completedreq.sql	(revision 27856)
@@ -1,4 +1,6 @@
-SELECT * 
+SELECT pstampRequest.* ,
+    IFNULL(labels.priority, 0) AS priority
 FROM pstampRequest 
+    LEFT JOIN labels USING(label) 
 WHERE state = 'run'
     AND (
Index: trunk/ippTools/share/pstamptool_getdependent.sql
===================================================================
--- trunk/ippTools/share/pstamptool_getdependent.sql	(revision 27834)
+++ trunk/ippTools/share/pstamptool_getdependent.sql	(revision 27856)
@@ -1,5 +1,5 @@
 SELECT DISTINCT pstampDependent.*
 FROM pstampDependent
-JOIN pstampJob USING(dep_id)
-JOIN pstampRequest USING(req_id)
+-- JOIN pstampJob USING(dep_id)
+-- JOIN pstampRequest USING(req_id)
 WHERE pstampDependent.state = 'new'
Index: trunk/ippTools/share/pstamptool_pendingdependent.sql
===================================================================
--- trunk/ippTools/share/pstamptool_pendingdependent.sql	(revision 27834)
+++ trunk/ippTools/share/pstamptool_pendingdependent.sql	(revision 27856)
@@ -1,8 +1,11 @@
-SELECT DISTINCT pstampDependent.*
+SELECT DISTINCT pstampDependent.*,
+    IFNULL(Label.priority, 10000) AS priority
 FROM pstampDependent
 JOIN pstampJob USING(dep_id)
 JOIN pstampRequest USING(req_id)
+JOIN Label ON pstampRequest.label = Label.label
 WHERE pstampDependent.state = 'new'
     AND pstampDependent.fault = 0
     AND pstampJob.state = 'run'
     AND pstampRequest.state = 'run'
+    AND (Label.active OR Label.active IS NULL)
Index: trunk/ippTools/share/pstamptool_pendingjob.sql
===================================================================
--- trunk/ippTools/share/pstamptool_pendingjob.sql	(revision 27834)
+++ trunk/ippTools/share/pstamptool_pendingjob.sql	(revision 27856)
@@ -1,6 +1,8 @@
-SELECT pstampJob.*
+SELECT pstampJob.*,
+    IFNULL(Label.priority, 10000) AS priority
 FROM pstampJob
     JOIN pstampRequest USING(req_id)
     LEFT JOIN pstampDependent USING(dep_id)
+    LEFT JOIN Label ON pstampRequest.label = Label.label
 WHERE pstampRequest.state = 'run'
     AND pstampRequest.fault = 0
@@ -8,2 +10,3 @@
     AND pstampJob.fault = 0
     AND (dep_id = 0 OR pstampDependent.state = 'full')
+    AND (Label.active OR Label.active IS NULL)
Index: trunk/ippTools/share/pstamptool_pendingreq.sql
===================================================================
--- trunk/ippTools/share/pstamptool_pendingreq.sql	(revision 27834)
+++ trunk/ippTools/share/pstamptool_pendingreq.sql	(revision 27856)
@@ -1,9 +1,11 @@
 -- postage stamp requests ready for download and parsing
 SELECT
- pstampRequest.*,
- pstampDataStore.outProduct as ds_outProduct
- FROM pstampRequest
- LEFT JOIN pstampDataStore
-    USING(ds_id)
- WHERE pstampRequest.state = 'new'
+    pstampRequest.*,
+    pstampDataStore.outProduct AS ds_outProduct,
+    IFNULL(Label.priority, 10000) AS priority
+    FROM pstampRequest
+    LEFT JOIN pstampDataStore USING(ds_id)
+    LEFT JOIN Label ON pstampRequest.label = Label.label
+WHERE pstampRequest.state = 'new'
     AND pstampRequest.fault = 0
+    AND (Label.active OR Label.active IS NULL)
Index: trunk/ippTools/share/pxadmin_create_tables.sql
===================================================================
--- trunk/ippTools/share/pxadmin_create_tables.sql	(revision 27834)
+++ trunk/ippTools/share/pxadmin_create_tables.sql	(revision 27856)
@@ -1332,4 +1332,5 @@
         imagedb    VARCHAR(64),
         rlabel     VARCHAR(64),
+        outdir     VARCHAR(255),
         need_magic TINYINT,
         PRIMARY KEY(dep_id),
@@ -1599,4 +1600,14 @@
 ) ENGINE=innodb DEFAULT CHARSET=latin1;
 
+CREATE TABLE Label (
+    label       VARCHAR(64),
+    priority    INT,
+    active      TINYINT,
+    comment     VARCHAR(80),
+    PRIMARY KEY(label),
+    KEY(priority),
+    KEY(active)
+) ENGINE=innodb DEFAULT CHARSET=latin1;
+
 -- This comment line is here to avoid empty query error.
 -- Another way to avoid that problem is to omit the semicolon above but I think that is untidy.
Index: trunk/ippTools/share/pxadmin_drop_tables.sql
===================================================================
--- trunk/ippTools/share/pxadmin_drop_tables.sql	(revision 27834)
+++ trunk/ippTools/share/pxadmin_drop_tables.sql	(revision 27856)
@@ -84,4 +84,5 @@
 DROP TABLE IF EXISTS staticskyResult;
 DROP TABLE IF EXISTS staticskyRun;
+DROP TABLE IF EXISTS Label;
 
 SET FOREIGN_KEY_CHECKS=1
Index: trunk/ippTools/src/pstamptool.c
===================================================================
--- trunk/ippTools/src/pstamptool.c	(revision 27834)
+++ trunk/ippTools/src/pstamptool.c	(revision 27856)
@@ -302,4 +302,6 @@
     psFree(where);
 
+    psStringAppend(&query, " ORDER BY priority DESC, req_id");
+
     // treat limit == 0 as "no limit"
     if (limit) {
@@ -421,4 +423,6 @@
     }
     psFree(where);
+
+    psStringAppend(&query, " ORDER BY priority DESC, req_id");
 
     // treat limit == 0 as "no limit"
@@ -705,5 +709,5 @@
     PXOPT_COPY_S64(config->args, where, "-job_id", "job_id", "==");
     PXOPT_COPY_S64(config->args, where, "-req_id", "req_id", "==");
-    pxAddLabelSearchArgs(config, where, "-label", "label", "LIKE");
+    pxAddLabelSearchArgs(config, where, "-label", "pstampRequest.label", "LIKE");
 
     PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
@@ -723,4 +727,6 @@
     }
     psFree(where);
+
+    psStringAppend(&query, " ORDER BY priority DESC, req_id");
 
     // treat limit == 0 as "no limit"
@@ -968,4 +974,5 @@
     PXOPT_LOOKUP_STR(imagedb,     config->args, "-imagedb",  true, false);
     PXOPT_LOOKUP_STR(rlabel,      config->args, "-rlabel",  true, false);
+    PXOPT_LOOKUP_STR(outdir,      config->args, "-outdir",  true, false);
     PXOPT_LOOKUP_BOOL(need_magic, config->args, "-need_magic", false);
     PXOPT_LOOKUP_BOOL(no_create,  config->args, "-no_create", false);
@@ -1046,4 +1053,5 @@
         rlabel,
         need_magic,
+        outdir,
         0               // fault
         )) {
@@ -1087,4 +1095,5 @@
     PXOPT_COPY_STR(config->args, where, "-imagedb", "imagedb", "==");
     PXOPT_COPY_S64(config->args, where, "-stage_id", "stage_id", "==");
+    PXOPT_COPY_S64(config->args, where, "-dep_id", "dep_id", "==");
     PXOPT_COPY_STR(config->args, where, "-rlabel", "rlabel", "==");
     pxAddLabelSearchArgs(config, where, "-label", "pstampRequest.label", "==");
@@ -1105,4 +1114,6 @@
     }
     psFree(where);
+
+    psStringAppend(&query, " ORDER BY priority DESC, req_id");
 
     // treat limit == 0 as "no limit"
Index: trunk/ippTools/src/pstamptoolConfig.c
===================================================================
--- trunk/ippTools/src/pstamptoolConfig.c	(revision 27834)
+++ trunk/ippTools/src/pstamptoolConfig.c	(revision 27856)
@@ -160,5 +160,5 @@
     // -getdependent
     psMetadata *getdependentArgs = psMetadataAlloc();
-    psMetadataAddS64(getdependentArgs, PS_LIST_TAIL, "-stage_id", 0, "define id for dependent (required)", 0);
+    psMetadataAddS64(getdependentArgs, PS_LIST_TAIL, "-stage_id", 0, "define stage id for dependent (required)", 0);
     psMetadataAddStr(getdependentArgs, PS_LIST_TAIL, "-stage", 0,    "define stage for dependent (required)", NULL);
     psMetadataAddStr(getdependentArgs, PS_LIST_TAIL, "-component", 0, "define component for depenent (required)", NULL);
@@ -166,4 +166,5 @@
     psMetadataAddStr(getdependentArgs, PS_LIST_TAIL, "-rlabel", 0,   "define label for dependent ", NULL);
     psMetadataAddBool(getdependentArgs,PS_LIST_TAIL, "-need_magic", 0, "define need_magic", false);
+    psMetadataAddStr(getdependentArgs, PS_LIST_TAIL, "-outdir", 0,    "define output directory for dependent (required)", NULL);
     psMetadataAddBool(getdependentArgs,PS_LIST_TAIL, "-no_create", 0, "if no matching dependent do not create one", false);
 
@@ -185,4 +186,5 @@
     psMetadataAddStr(pendingdependentArgs, PS_LIST_TAIL, "-stage", 0,    "define stage for dependent", NULL);
     psMetadataAddStr(pendingdependentArgs, PS_LIST_TAIL, "-component", 0,    "define component for dependent", NULL);
+    psMetadataAddS64(pendingdependentArgs, PS_LIST_TAIL, "-dep_id", 0, "define dep_id for dependent", 0);
     psMetadataAddStr(pendingdependentArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK,   "define label for pstampRequest", NULL);
     psMetadataAddStr(pendingdependentArgs, PS_LIST_TAIL, "-rlabel", 0,   "define label for dependent", NULL);
