Index: trunk/ippTools/src/dettool.c
===================================================================
--- trunk/ippTools/src/dettool.c	(revision 7094)
+++ trunk/ippTools/src/dettool.c	(revision 7114)
@@ -170,6 +170,6 @@
     for (long i = 0; i < psArrayLength(detInputExp); i++) {
         detInputExpRow *row = detInputExp->data[i];
-        if (!psMetadataAddStr(where_exp_ids, PS_LIST_TAIL, "exp_id", 0, "==",
-            row->exp_id)
+        if (!psMetadataAddStr(where_exp_ids, PS_LIST_TAIL, "exp_id",
+                PS_META_DUPLICATE_OK, "==", row->exp_id)
         ) {
             psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
@@ -240,10 +240,10 @@
     // find the matching rawImfile by exp_id/class_id
     psMetadata *where = psMetadataAlloc();
-    if (!psMetadataAddStr(config->where, PS_LIST_TAIL, "exp_id", 0, "==", exp_id)) {
+    if (!psMetadataAddStr(where, PS_LIST_TAIL, "exp_id", 0, "==", exp_id)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
         psFree(where);
         return false;
     }
-    if (!psMetadataAddStr(config->where, PS_LIST_TAIL, "class_id", 0, "==", class_id)) {
+    if (!psMetadataAddStr(where, PS_LIST_TAIL, "class_id", 0, "==", class_id)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item class_id");
         psFree(where);
@@ -261,5 +261,5 @@
     psString stats = ((rawImfileRow *)rawImfiles->data[0])->stats;
     detProcessedImfileRow *detRow = detProcessedImfileRowAlloc(
-        det_id, exp_id, class_id, uri, stats, recipe
+        (psS32)atol(det_id), exp_id, class_id, uri, stats, recipe
     );   
     psFree(rawImfiles);
@@ -277,4 +277,29 @@
 {
     PS_ASSERT_PTR_NON_NULL(config, false);
+    
+    // find all matching detProcessedImfiles
+    // where query should be pre-generated
+    psArray *detProcessedImfiles = 
+        detProcessedImfileSelectRowObjects(config->dbh, config->where, 0);
+    if (!detProcessedImfiles) {
+        psError(PS_ERR_UNKNOWN, false, "no detProcessedImfile rows found");
+        return false;
+    }
+
+    // print imfile list
+    psMetadata *output = psMetadataAlloc();
+    for (long i = 0; i < psArrayLength(detProcessedImfiles); i++) {
+        psMetadata *md = detProcessedImfileMetadataFromObject(
+                detProcessedImfiles->data[i]);
+        psMetadataAddMetadata(
+            output, PS_LIST_TAIL, "detProcessedImfile", PS_META_DUPLICATE_OK,
+            NULL, md
+        );
+    }
+
+    psString str = psMetadataConfigFormat(output); 
+    psFree(output);
+    fprintf(stdout, "%s\n", str);
+    psFree(str);
 
     return true;
