IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jul 29, 2014, 9:52:00 AM (12 years ago)
Author:
eugene
Message:

scatter some debugging prints around; replace safeDictionaryAccess (terrible name) with getKeyValue; fix use of strings vs sql words in insert queries; fix detections for new schema; remove use of old dvograbber-based code; clean some avoidable errors

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ipp-20140717/ippToPsps/jython/ipptopspsdb.py

    r37129 r37133  
    11361136
    11371137        self.skychunk.batchTypes = []
    1138         try:
    1139             # print "sql: " + sql
    1140             rs = self.executeQuery(sql)
    1141 
    1142             rs.first()
    1143             self.skychunk.datastoreProduct = rs.getString(1)
    1144             self.skychunk.datastoreType = rs.getString(2)
    1145             if rs.getInt(3) == 1: self.skychunk.datastorePublishing = True
    1146             else: self.skychunk.datastorePublishing = False
    1147             self.skychunk.dvoLabel = rs.getString(4)
    1148 
    1149             # if dvoLabel is null is can break queries, so set to something
    1150             if not self.skychunk.dvoLabel: self.skychunk.dvoLabel = "none"
    1151             self.skychunk.dvoLocation = rs.getString(5)
    1152             self.skychunk.minRa = rs.getDouble(6)
    1153             self.skychunk.maxRa = rs.getDouble(7)
    1154             self.skychunk.minDec = rs.getDouble(8)
    1155             self.skychunk.maxDec = rs.getDouble(9)
    1156 
    1157             self.skychunk.boxSize = rs.getDouble(10)
    1158             # self.skychunk.halfBox = self.skychunk.boxSize/2.0
    1159             # self.skychunk.boxSizeWithBorder = self.skychunk.boxSize + (self.skychunk.BORDER * 2)
    1160 
    1161             self.skychunk.basePath = rs.getString(11)
    1162             self.skychunk.dataRelease = rs.getInt(12)
    1163 
    1164             self.skychunk.deleteLocal = rs.getInt(13)
    1165             self.skychunk.deleteDatastore = rs.getInt(14)
    1166             self.skychunk.deleteDxLayer = rs.getInt(15)
    1167 
    1168             self.skychunk.epoch = rs.getString(16)
    1169 
    1170             self.skychunk.survey = rs.getString(17)
    1171             self.skychunk.pspsSurvey = rs.getString(18)
    1172 
    1173             if rs.getInt(19) == 1: self.skychunk.batchTypes.append("P2")
    1174             if rs.getInt(20) == 1: self.skychunk.batchTypes.append("ST")
    1175             if rs.getInt(21) == 1: self.skychunk.batchTypes.append("OB")
    1176             if rs.getInt(22) == 1: self.skychunk.batchTypes.append("DF")
    1177             if rs.getInt(23) == 1: self.skychunk.batchTypes.append("DO")
    1178             if rs.getInt(24) == 1: self.skychunk.batchTypes.append("FW")
    1179             if rs.getInt(25) == 1: self.skychunk.batchTypes.append("FO")
    1180 
    1181             self.skychunk.force = True # TODO
    1182             self.skychunk.parallel = False # TODO
    1183 
    1184             if rs.getInt(26) == 1: self.skychunk.parallel = True
    1185             self.skychunk.P2_smf_version = rs.getString(27)
    1186             # options: "use_new", "not_reproc", "use_original"
    1187 
    1188             self.skychunk.ST_cmf_version = rs.getString(28)
    1189             # options: not used?
    1190 
    1191             # NOTE : the rs (ResultSet) class is somewhat annoying and finicky esp about timestamp values
    1192             # for example, rs.getTimestamp(N) fails silently if the value is not a valid time.  this is
    1193             # also true to getString() on the same column.  Docs for the ResultSet class can be found here:
    1194             # http://docs.oracle.com/javase/1.5.0/docs/api/java/sql/ResultSet.html?is-external=true
    1195 
    1196             # rsmd = rs.getMetaData()
    1197             # print "got metadata"
    1198             # print "number of columns: " + str(rsmd.getColumnCount())
    1199             # print "label: " + rsmd.getColumnLabel(25)
    1200             # print "label: " + rsmd.getColumnLabel(29)
    1201             # print "name: " + rsmd.getColumnName(25)
    1202             # print "name: " + rsmd.getColumnName(29)
    1203             # print "typename: " + rsmd.getColumnTypeName(25)
    1204             # print "typename: " + rsmd.getColumnTypeName(29)
    1205 
    1206             # epochStamp = rs.getTimestamp(16)
    1207             # print "epoch: " + epochStamp.toString()
    1208 
    1209             # print "label: " + rsmd.getColumnLabel(16)
    1210             # print "name: " + rsmd.getColumnName(16)
    1211             # print "typename: " + rsmd.getColumnTypeName(16)
    1212 
    1213             self.skychunk.trange_start = rs.getString(29)
    1214             # options: "YYYY-MM-DD,HH:MM:SS" or "0000-00-00 00:00:00"
    1215 
    1216             self.skychunk.trange_end = rs.getString(30)
    1217             # options: "YYYY-MM-DD,HH:MM:SS" or "0000-00-00 00:00:00"
    1218 
    1219             if self.skychunk.parallel: print "USING parallel"
    1220             self.skychunk.isLoaded = True
    1221         except:
     1138
     1139        try:
     1140            rs = self.executeQuery("show tables")
     1141        except:
     1142            self.logger.errorPair("cannot even show tables?", "Boo hoo")
     1143            sys.exit(1)
     1144
     1145        # while rs.next():
     1146        #     print "table row"
     1147        #     print rs.getString(1)
     1148        #
     1149        # rs = self.executeQuery("select * from skychunk")
     1150        # while rs.next():
     1151        #     print "skychunk row"
     1152        #     print rs.getString(1)
     1153        #
     1154        # print "SQL (2): " + sql
     1155
     1156        try:
     1157            rs = self.executeQuery(sql)
     1158
     1159        except:
     1160            self.logger.errorPair("problem with sql query for skychunk", sql)
     1161            sys.exit(1)
     1162
     1163        if not rs.next():
    12221164            self.logger.errorPair("Could not read skychunk with name", self.skychunk.name)
    12231165            self.skychunk.isLoaded = False
     1166            return False
     1167
     1168        self.skychunk.datastoreProduct = rs.getString(1)
     1169        self.skychunk.datastoreType = rs.getString(2)
     1170        if rs.getInt(3) == 1: self.skychunk.datastorePublishing = True
     1171        else: self.skychunk.datastorePublishing = False
     1172        self.skychunk.dvoLabel = rs.getString(4)
     1173
     1174        # if dvoLabel is null is can break queries, so set to something
     1175        if not self.skychunk.dvoLabel: self.skychunk.dvoLabel = "none"
     1176        self.skychunk.dvoLocation = rs.getString(5)
     1177        self.skychunk.minRa = rs.getDouble(6)
     1178        self.skychunk.maxRa = rs.getDouble(7)
     1179        self.skychunk.minDec = rs.getDouble(8)
     1180        self.skychunk.maxDec = rs.getDouble(9)
     1181
     1182        self.skychunk.boxSize = rs.getDouble(10)
     1183        # self.skychunk.halfBox = self.skychunk.boxSize/2.0
     1184        # self.skychunk.boxSizeWithBorder = self.skychunk.boxSize + (self.skychunk.BORDER * 2)
     1185
     1186        self.skychunk.basePath = rs.getString(11)
     1187        self.skychunk.dataRelease = rs.getInt(12)
     1188
     1189        self.skychunk.deleteLocal = rs.getInt(13)
     1190        self.skychunk.deleteDatastore = rs.getInt(14)
     1191        self.skychunk.deleteDxLayer = rs.getInt(15)
     1192
     1193        self.skychunk.epoch = rs.getString(16)
     1194
     1195        self.skychunk.survey = rs.getString(17)
     1196        self.skychunk.pspsSurvey = rs.getString(18)
     1197
     1198        if rs.getInt(19) == 1: self.skychunk.batchTypes.append("P2")
     1199        if rs.getInt(20) == 1: self.skychunk.batchTypes.append("ST")
     1200        if rs.getInt(21) == 1: self.skychunk.batchTypes.append("OB")
     1201        if rs.getInt(22) == 1: self.skychunk.batchTypes.append("DF")
     1202        if rs.getInt(23) == 1: self.skychunk.batchTypes.append("DO")
     1203        if rs.getInt(24) == 1: self.skychunk.batchTypes.append("FW")
     1204        if rs.getInt(25) == 1: self.skychunk.batchTypes.append("FO")
     1205
     1206        self.skychunk.force = True # TODO
     1207        self.skychunk.parallel = False # TODO
     1208
     1209        if rs.getInt(26) == 1: self.skychunk.parallel = True
     1210        self.skychunk.P2_smf_version = rs.getString(27)
     1211        # options: "use_new", "not_reproc", "use_original"
     1212
     1213        self.skychunk.ST_cmf_version = rs.getString(28)
     1214        # options: not used?
     1215
     1216        # NOTE : the rs (ResultSet) class is somewhat annoying and finicky esp about timestamp values
     1217        # for example, rs.getTimestamp(N) fails silently if the value is not a valid time.  this is
     1218        # also true to getString() on the same column.  Docs for the ResultSet class can be found here:
     1219        # http://docs.oracle.com/javase/1.5.0/docs/api/java/sql/ResultSet.html?is-external=true
     1220
     1221        # rsmd = rs.getMetaData()
     1222        # print "got metadata"
     1223        # print "number of columns: " + str(rsmd.getColumnCount())
     1224        # print "label: " + rsmd.getColumnLabel(25)
     1225        # print "label: " + rsmd.getColumnLabel(29)
     1226        # print "name: " + rsmd.getColumnName(25)
     1227        # print "name: " + rsmd.getColumnName(29)
     1228        # print "typename: " + rsmd.getColumnTypeName(25)
     1229        # print "typename: " + rsmd.getColumnTypeName(29)
     1230
     1231        # epochStamp = rs.getTimestamp(16)
     1232        # print "epoch: " + epochStamp.toString()
     1233
     1234        # print "label: " + rsmd.getColumnLabel(16)
     1235        # print "name: " + rsmd.getColumnName(16)
     1236        # print "typename: " + rsmd.getColumnTypeName(16)
     1237
     1238        self.skychunk.trange_start = rs.getString(29)
     1239        # options: "YYYY-MM-DD,HH:MM:SS" or "0000-00-00 00:00:00"
     1240
     1241        self.skychunk.trange_end = rs.getString(30)
     1242        # options: "YYYY-MM-DD,HH:MM:SS" or "0000-00-00 00:00:00"
     1243
     1244        if self.skychunk.parallel: print "USING parallel"
     1245        self.skychunk.isLoaded = True
    12241246
    12251247        return self.skychunk.isLoaded
     
    13871409        # XXX print "sql: ", sql               
    13881410
    1389         try:
    1390             rs = self.executeQuery(sql)
    1391             rs.first()
    1392             raCenter = rs.getFloat(1)
    1393             rs.close()
    1394         except:
    1395             self.logger.errorPair("No free stripes", "trying to steal boxes from other client...")
    1396             sql = "SELECT ra_center, COUNT(*) AS numPending\
    1397                    FROM box \
    1398                    JOIN pending ON (id = box_id) \
    1399                    WHERE skychunk = '" + self.skychunk.name + "' \
    1400                    AND batch_type = '" + batchType + "' \
    1401                    GROUP BY ra_center \
    1402                    ORDER BY numPending \
    1403                    DESC LIMIT 1"
    1404 
    1405             try:
    1406                 rs = self.executeQuery(sql)
    1407                 rs.first()
    1408                 raCenter = rs.getFloat(1)
    1409                 rs.close()
    1410             except:
    1411                 self.logger.errorPair("No outstanding boxes to steal", "no stripe obtained")
     1411        try: rs = self.executeQuery(sql)
     1412        except:
     1413            self.logger.errorPair("Problem querying for outstanding boxes", "error in sql?")
     1414            print "SQL: " + sql
     1415
     1416        print "SQL: " + sql
     1417        if not rs.next():
     1418            self.logger.errorPair("No outstanding boxes", "nothing to do here")
     1419            rs.close()
     1420            self.unlockTables()
     1421            return ids
     1422
     1423        raCenter = rs.getFloat(1)
     1424        rs.close()
     1425
     1426        #except:
     1427        #    self.logger.errorPair("No free stripes", "trying to steal boxes from other client...")
     1428        #    sql = "SELECT ra_center, COUNT(*) AS numPending\
     1429        #           FROM box \
     1430        #           JOIN pending ON (id = box_id) \
     1431        #           WHERE skychunk = '" + self.skychunk.name + "' \
     1432        #           AND batch_type = '" + batchType + "' \
     1433        #           GROUP BY ra_center \
     1434        #           ORDER BY numPending \
     1435        #           DESC LIMIT 1"
     1436        #
     1437        #    try:
     1438        #        rs = self.executeQuery(sql)
     1439        #        rs.first()
     1440        #        raCenter = rs.getFloat(1)
     1441        #        rs.close()
     1442        #    except:
     1443        #        self.logger.errorPair("No outstanding boxes to steal", "no stripe obtained")
    14121444
    14131445        # tests against ra_center need to use a finite box
     
    14581490               GROUP BY ra_center LIMIT 1"
    14591491
    1460         try:
    1461             rs = self.executeQuery(sql)
    1462             rs.first()
    1463             raCenter = rs.getFloat(1)
    1464             rs.close()
    1465         except:
    1466             self.logger.errorPair("No free stripes", "trying to steal boxes from other client...")
    1467             sql = "SELECT ra_center, COUNT(*) AS numPending\
    1468                    FROM box \
    1469                    JOIN pending ON (id = box_id) \
    1470                    WHERE skychunk = '" + self.skychunk.name + "' \
    1471                    GROUP BY ra_center \
    1472                    ORDER BY numPending \
    1473                    DESC LIMIT 1"
    1474 
    1475             try:
    1476                 rs = self.executeQuery(sql)
    1477                 rs.first()
    1478                 raCenter = rs.getFloat(1)
    1479                 rs.close()
    1480             except:
    1481                 self.logger.errorPair("No outstanding boxes to steal", "no stripe obtained")
     1492        try: rs = self.executeQuery(sql)
     1493        except:
     1494            self.logger.errorPair("Problem querying for outstanding boxes", "error in sql?")
     1495            print "SQL: " + sql
     1496
     1497        print "SQL: " + sql
     1498        if not rs.next():
     1499            self.logger.infoPair("No outstanding boxes", "nothing to do here")
     1500            rs.close()
     1501            self.unlockTables()
     1502            return ids
     1503
     1504        raCenter = rs.getFloat(1)
     1505        rs.close()
     1506
     1507        # except:
     1508        #     self.logger.errorPair("No free stripes", "trying to steal boxes from other client...")
     1509        #     sql = "SELECT ra_center, COUNT(*) AS numPending\
     1510        #            FROM box \
     1511        #            JOIN pending ON (id = box_id) \
     1512        #            WHERE skychunk = '" + self.skychunk.name + "' \
     1513        #            GROUP BY ra_center \
     1514        #            ORDER BY numPending \
     1515        #            DESC LIMIT 1"
     1516        #
     1517        #     try:
     1518        #         rs = self.executeQuery(sql)
     1519        #         rs.first()
     1520        #         raCenter = rs.getFloat(1)
     1521        #         rs.close()
     1522        #     except:
     1523        #         self.logger.errorPair("No outstanding boxes to steal", "no stripe obtained")
    14821524
    14831525        # tests against ra_center need to use a finite box
Note: See TracChangeset for help on using the changeset viewer.