Index: trunk/ippToPsps/jython/stackbatch.py
===================================================================
--- trunk/ippToPsps/jython/stackbatch.py	(revision 31316)
+++ trunk/ippToPsps/jython/stackbatch.py	(revision 31324)
@@ -193,5 +193,7 @@
             "+modelLong+"Covar68=b.EXT_COVAR_05_07,  \
             "+modelLong+"Covar78=b.EXT_COVAR_06_07,  \
-            "+modelLong+"Covar88=b.EXT_COVAR_07_07   \
+            "+modelLong+"Covar88=b.EXT_COVAR_07_07,   \
+            "+modelLong+"serNu=b.EXT_PAR_07,   \
+            "+modelLong+"serNuErr=SQRT(EXT_COVAR_07_07)  \
             WHERE a.ippDetectID=b.IPP_IDET AND b.MODEL_TYPE = '"+ippModelType+"'"
 
@@ -204,8 +206,11 @@
     def populateStackMeta(self):
         self.logger.info("Procesing StackMeta table")
+
+        photoCalID = self.getPhotoCalID()
 
         sql = "INSERT INTO StackMeta (\
         stackMetaID \
         ,skycellID \
+        ,photoCalID \
         ,photoZero \
         ,nP2Images \
@@ -226,4 +231,5 @@
         " + self.header['STK_ID'] + " \
         ," + self.skycell + " \
+        ," + str(photoCalID) + " \
         ," + self.header['FPA.ZP'] + " \
         ," + self.header['NINPUTS'] + " \
@@ -421,6 +427,11 @@
         self.logger.info("Procesing StackToImage table")
 
-        sql = "INSERT INTO StackToImage (stackMetaID) VALUES (" + self.header['STK_ID'] + ")"
-        self.localStmt.execute(sql)
+        imageIDs = self.gpc1Db.getImageIDsForThisStackID(self.header['STK_ID'])
+
+        for imageID in imageIDs:
+            sql = "INSERT INTO StackToImage (stackMetaID, imageID) \
+                   VALUES (\
+                   " + self.header['STK_ID'] + ", " + imageID + ")"
+            self.localStmt.execute(sql)
 
     '''
@@ -452,8 +463,8 @@
         self.logger.info("Creating bogus IDs on all detections")
 
-        sql = "INSERT INTO dvo (ippDetectID) SELECT IPP_IDET FROM SkyChip_psf";
-        self.localStmt.execute(sql)
-
-        sql = "SELECT ippDetectID FROM dvo"
+        sql = "INSERT INTO dvoDetection (ippDetectID) SELECT IPP_IDET FROM SkyChip_psf";
+        self.localStmt.execute(sql)
+
+        sql = "SELECT ippDetectID FROM dvoDetection"
         rs = self.localStmt.executeQuery(sql)
 
@@ -466,5 +477,5 @@
 
         for id in ids:
-            sql = "UPDATE dvo SET ippObjID = %d, objID = %d WHERE ippDetectID = %s" % (i, o, id)
+            sql = "UPDATE dvoDetection SET ippObjID = %d, objID = %d WHERE ippDetectID = %s" % (i, o, id)
             self.localStmt.execute(sql)
             i = i + 1
@@ -477,4 +488,18 @@
         self.setMinMaxObjID("StackDetection")
 
+    '''
+    Updates provided table with DVO IDs from DVO table
+    '''
+    def updateDvoIDs(self, table):
+
+        self.logger.info("Updating table '" + table + "' with DVO IDs...")
+        sql = "UPDATE " + table + " AS a, dvoDetection AS b SET \
+               a.ippObjID = b.ippObjID, \
+               a.stackDetectID = b.detectID, \
+               a.objID = b.objID \
+               WHERE a.ippDetectID = b.ippDetectID"
+        self.localStmt.execute(sql)
+        self.logger.info("...done")
+
 
     '''
@@ -483,5 +508,6 @@
     def populatePspsTables(self):
 
-        self.getIDsFromDVO(self.header['SOURCEID'], self.header['IMAGEID'])
+        if not self.getIDsFromDVO(self.header['SOURCEID'], self.header['IMAGEID']):
+            return False
 
         self.populateStackMeta()
@@ -493,5 +519,6 @@
         #self.fudgeIDs()
         self.setMinMaxObjID("StackDetection")
-
+        
+        return True
 
 logging.config.fileConfig("logging.conf")
@@ -501,22 +528,30 @@
 #sky_id = 299 # TODO
 gpc1Db = Gpc1Db(logger)
-cmfFiles = gpc1Db.getStackStageCmfs(sky_id)
-
+skyIDs = gpc1Db.getSkyIDsInThisDVODb("HAFTest.Staticsky")
+skyIDs = [689]
 i = 0
-for file in cmfFiles:
-
-    stackBatch = StackBatch(logger, sky_id, file)
+for skyID in skyIDs:
+
+    logger.info(" sky ID = %d" % skyID)
+
+    cmfFiles = gpc1Db.getStackStageCmfs(skyID)
+
+    for file in cmfFiles:
+
+        logger.info("-------------- New Batch ----------")
+        stackBatch = StackBatch(logger, skyID, file)
     
-    stackBatch.createEmptyPspsTables()
-    stackBatch.importIppTables("")
-    stackBatch.populatePspsTables()
-    stackBatch.reportNullsInAllPspsTables(False)
-    stackBatch.exportPspsTablesToFits()
-    stackBatch.writeBatchManifest()
-    #stackBatch.createTarball()
-    #stackBatch.publishToDatastore()
-
-    i = i + 1
-    if i > 0: break # TODO just doing one filter for now
+        stackBatch.createEmptyPspsTables()
+        stackBatch.importIppTables("")
+        if stackBatch.populatePspsTables():
+
+            stackBatch.reportNullsInAllPspsTables(False)
+            stackBatch.exportPspsTablesToFits()
+            stackBatch.writeBatchManifest()
+            #stackBatch.createTarball()
+            #stackBatch.publishToDatastore()
+
+        i = i + 1
+        if i > 0: break # TODO just doing one filter for now
 
 logger.info("Finished")
