Index: trunk/ippToPsps/jython/stackbatch.py
===================================================================
--- trunk/ippToPsps/jython/stackbatch.py	(revision 31118)
+++ trunk/ippToPsps/jython/stackbatch.py	(revision 31182)
@@ -4,4 +4,6 @@
 from java.lang import *
 from java.sql import *
+
+from gpc1 import Gpc1
 from batch import Batch
 
@@ -11,17 +13,39 @@
     Constructor
     '''
-    def __init__(self):
+    def __init__(self, skyID, inputFile):
        super(StackBatch, self).__init__(
                "stack", 
-               #"/data/ipp053.0/eugene/md04.20110320/staticsky/MD04.V2/skycell.087/MD04.V2.skycell.087.stk.280.000.cmf", 
-               "demo.fits", 
-               "stack.fits",
-               "localhost",
-               "ipptopsps_scratch",
-               "ipp",
-               "ipp",
+               inputFile, 
                "MD04") # TODO
 
-
+       self.log("StackBatch constructor. Creating batch from input file here: ''" + inputFile + "'")
+
+       # obs time makes no sense except for nightly stacks
+       if self.header['STK_TYPE'] != "NIGHTLY_STACK": self.header['MJD-OBS'] = "-999"
+
+       # determine skycell from header value
+       self.skycell = self.header['SKYCELL']
+       self.skycell = self.skycell[8:]
+
+       # get filterID using init table
+       self.filter = self.header['FPA.FILTER']
+       self.filter = self.filter[0:1]
+
+       # create an output filename, which is {skycellID}{filterID}.FITS
+       self.outputFitsPath = "%s%07d.FITS" % (self.filter, skyID);
+
+       # set some constants
+       self.dataRelease = "1"
+       self.stackVer = "1"
+       self.historyModNum = "0"
+
+
+    '''
+    Updates a table with data release number
+    '''
+    def updateDataRelease(self, table):
+
+        sql = "UPDATE " + table + "  SET dataRelease=" + self.dataRelease
+        self.localStmt.execute(sql)
 
     '''
@@ -31,5 +55,5 @@
 
         sql = "UPDATE " + table + "  SET stackMetaID=" + self.header['STK_ID']
-        self.stmt.execute(sql)
+        self.localStmt.execute(sql)
 
     '''
@@ -39,5 +63,5 @@
 
         sql = "UPDATE "+table+" AS a, StackType AS b SET a.stackTypeID=b.stackTypeID WHERE b.name = '"+self.header['STK_TYPE']+"'"
-        self.stmt.execute(sql)
+        self.localStmt.execute(sql)
 
 
@@ -90,5 +114,5 @@
         WHERE a.ippDetectID=b.IPP_IDET AND b.PSF_FWHM "+psfCondition
 
-        self.stmt.execute(sql)
+        self.localStmt.execute(sql)
 
     '''
@@ -138,5 +162,5 @@
         WHERE a.ippDetectID=b.IPP_IDET AND b.MODEL_TYPE = '"+ippModelType+"'"
 
-        self.stmt.execute(sql)
+        self.localStmt.execute(sql)
 
         # sersic fit has an extra parameter
@@ -153,5 +177,5 @@
             WHERE a.ippDetectID=b.IPP_IDET AND b.MODEL_TYPE = '"+ippModelType+"'"
 
-            self.stmt.execute(sql)
+            self.localStmt.execute(sql)
 
 
@@ -197,5 +221,5 @@
         ," + self.header['PC002002'] + " \
         )"
-        self.stmt.execute(sql)
+        self.localStmt.execute(sql)
 
         self.updateSurveyID("StackMeta")
@@ -212,4 +236,7 @@
         sql = "INSERT INTO StackDetection (\
                ippDetectID \
+               ,skyCellID \
+               ,stackVer \
+               ,obsTime \
                ,xPos \
                ,yPos \
@@ -225,9 +252,15 @@
                ,psfWidMinor \
                ,psfTheta \
+               ,infoFlag \
                ,psfCf \
                ,nFrames \
+               ,assocDate \
+               ,historyModNum \
                ) \
                SELECT \
                IPP_IDET \
+               ," + self.skycell + " \
+               ," + self.stackVer + " \
+               ," + self.header['MJD-OBS'] + " \
                ,X_PSF \
                ,Y_PSF \
@@ -243,20 +276,17 @@
                ,PSF_MINOR \
                ,PSF_THETA \
+               ,FLAGS << 32 | FLAGS2 \
                ,PSF_QF \
                ,N_FRAMES \
+               ," + self.dateStr + " \
+               ," + self.historyModNum + " \
                FROM SkyChip_psf"
 
-        self.stmt.execute(sql)
-
-        if self.header['STK_TYPE'] != "NIGHTLY_STACK": 
-            sql = "UPDATE StackDetection SET obsTime = " + self.header['MJD-OBS']
-            self.stmt.execute(sql)
-
-
-        sql = "UPDATE StackDetection SET skycellID = " + self.skycell + ", assocDate = '"+self.dateStr+"'"
-        self.stmt.execute(sql)
+        self.localStmt.execute(sql)
+
         self.updateSurveyID("StackDetection")
         self.updateFilterID("StackDetection")
         self.updateStackMetaID("StackDetection")
+        self.updateDataRelease("StackDetection")
         self.updateStackTypeID("StackDetection")
 
@@ -272,6 +302,9 @@
                DISTINCT IPP_IDET \
                FROM SkyChip_xrad"
-        self.stmt.execute(sql)
-
+        self.localStmt.execute(sql)
+
+        # TODO temporarily loading 1st convolved fluxes into unconvolved fields
+        self.log("    Adding un-convolved fluxes")
+        self.updateApFlxs("", "< 7.0")
         self.log("    Adding 1st convolved fluxes")
         self.updateApFlxs("c1", "< 7.0")
@@ -279,5 +312,5 @@
         self.updateApFlxs("c2", "> 7.0")
 
-        self.log("    Adding petrosian stuff for extended sources")
+        self.log("    Adding petrosians for extended sources")
         sql = "UPDATE StackApFlx AS a, SkyChip_xsrc AS b SET \
         petRadius=b.PETRO_RADIUS \
@@ -290,19 +323,11 @@
         ,petR90Err=b.PETRO_RADIUS_90_ERR \
         WHERE a.ippDetectID=b.IPP_IDET"
-        self.stmt.execute(sql)
+        self.localStmt.execute(sql)
 
         self.updateSurveyID("StackApFlx")
         self.updateFilterID("StackApFlx")
         self.updateStackMetaID("StackApFlx")
+        self.updateDataRelease("StackApFlx")
         self.updateStackTypeID("StackApFlx")
-
-        #rs = stmt.executeQuery(sql)
-        # list = []
-
-        #while (rs.next()):
-
-        #       print rs.getString(1)
-
-        #rs.close()
 
     '''
@@ -314,5 +339,5 @@
         # insert all the detections
         sql = "INSERT INTO StackModelFit (ippDetectID) SELECT DISTINCT IPP_IDET from SkyChip_xfit"
-        self.stmt.execute(sql)
+        self.localStmt.execute(sql)
 
         # populate model parameters
@@ -327,6 +352,15 @@
         self.updateFilterID("StackModelFit")
         self.updateStackMetaID("StackModelFit")
+        self.updateDataRelease("StackModelFit")
         self.updateStackTypeID("StackModelFit")
 
+    '''
+    Populates the StackToImage table
+    '''
+    def populateStackToImage(self):
+        self.log("Procesing StackToImage table")
+
+        sql = "INSERT INTO StackToImage (stackMetaID) VALUES (" + self.header['STK_ID'] + ")"
+        self.localStmt.execute(sql)
 
     '''
@@ -356,21 +390,26 @@
     def populatePspsTables(self):
 
-        # determine skycell from header value
-        self.skycell = self.header['SKYCELL']
-        self.skycell = self.skycell[8:]
-
-        # get filterID using init table
-        self.filter = self.header['FPA.FILTER']
-        self.filter = self.filter[0:1]
-
         self.populateStackMeta()
         self.populateStackDetection()
         self.populateStackModelFit()
         self.populateStackApFlx()
-
-    
-stackBatch = StackBatch()
-stackBatch.createEmptyPspsTables()
-stackBatch.importIppTables(".*psf")
-stackBatch.populatePspsTables()
-stackBatch.exportPspsTablesToFits()
+        self.populateStackToImage()
+
+
+sky_id = 299
+gpc1 = Gpc1()
+cmfFiles = gpc1.getStackStageCmfs(sky_id)
+
+i = 0
+for file in cmfFiles:
+
+    stackBatch = StackBatch(sky_id, file)
+    stackBatch.createEmptyPspsTables()
+    stackBatch.importIppTables(".*psf")
+    stackBatch.populatePspsTables()
+    stackBatch.reportNullsInAllPspsTables(False)
+    #stackBatch.replaceAllPspsNulls("-999")
+    stackBatch.exportPspsTablesToFits()
+    i = i + 1
+    if i > 0: break # TODO just doing one filter for now
+
