Ignore:
Timestamp:
02/05/08 11:26:44 (12 years ago)
Author:
cbyrom
Message:

Ajudst DAO and Record classes to throw errors rather than catching them

  • to allow processing of multiple files (wrapped by oai_ingest)

to continue more cleanly.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TI01-discovery/branches/ingestAutomation-upgrade/OAIBatch/PostgresRecord.py

    r3839 r3846  
    146146 
    147147        if status is not None: 
    148             sys.exit("Failed at running the XQuery") 
     148            raise SystemError, 'Failed at running the XQuery' 
    149149 
    150150        # now remove the temp xquery file 
    151151        status = os.unlink(xqFile) 
    152152        if status is not None: 
    153             sys.exit("Failed to remove the temporary xquery file, " + xqFile) 
     153            raise OSError, 'Failed to remove the temporary xquery file, ' + xqFile 
    154154         
    155155        logging.info("Transform completed successfully") 
     
    247247            return self._allDocs 
    248248         
    249         for docType in documentTypes: 
    250             self._allDocs.append([docType, getDocumentFormat(docType)]) 
     249        for docType in self.documentTypes: 
     250            self._allDocs.append([docType, self.getDocumentFormat(docType)]) 
    251251        return self._allDocs 
    252252         
     
    272272        # represented as ns0, ns1, ns2 etc. 
    273273        #cElementTree._namespace_map.update({'http://ndg.nerc.ac.uk/moles': 'moles', 'http://www.w3.org/1999/xlink':'xlink'}) 
    274         no_bbox = False 
    275         no_dates = False 
    276274        self.east = 'null' 
    277         self.west = 'null' 
     275        self.west = [] 
    278276        self.north = 'null' 
    279277        self.south = 'null' 
     
    286284        try: 
    287285            dgMeta.fromXML(cElementTree.ElementTree(file=molesFile).getroot()) 
    288             print dgMeta.dgMetadataRecord.dgDataEntity.dgDataSummary.dgDataCoverage.dgSpatialCoverage.BoundingBox 
    289286        except Exception, detail: 
    290             logging.warning("Cannot parse the XML moles document %s. Will not process" %molesFile) 
    291             logging.debug(detail) 
    292             return 
    293          
    294         try: 
     287            raise SystemError, 'Cannot parse the XML moles document %s. Detail:\n%s' %(molesFile, detail) 
     288         
     289        bbox_list = [] 
     290        try: 
     291            logging.info("Extracting bounding box info") 
    295292            bbox_list=self.listify(dgMeta.dgMetadataRecord.dgDataEntity.dgDataSummary.dgDataCoverage.dgSpatialCoverage.BoundingBox) 
     293            #parse the list of coordinates 
     294            for bbox in bbox_list: 
     295                self.west.append(self.parseCoord(bbox.LimitWest, 'W', 'E')) 
     296                self.east = self.parseCoord(bbox.LimitEast, 'W', 'E') 
     297                self.north = self.parseCoord(bbox.LimitNorth, 'S', 'N') 
     298                self.south = self.parseCoord(bbox.LimitSouth, 'S', 'N') 
    296299        except Exception, detail: 
    297300            logging.info("XML moles document " + molesFile + " does not contain a bounding box.") 
    298301            logging.debug(detail) 
    299             no_bbox=True 
    300302 
    301303        try: 
     
    321323            self.enddate = enddate 
    322324 
    323         if not no_bbox: 
    324             #parse the coordinates somewhat - only use the first bounding box. 
    325             bbox=bbox_list[0] 
    326             try: 
    327                 self.west = self.parseCoord(bbox.LimitWest, 'W', 'E') 
    328             except: 
    329                 logging.error("Will not process File %s. Contains incorrect East bounding box limit." %molesFile) 
    330                 return 
    331              
    332             try: 
    333                 self.east = self.parseCoord(bbox.LimitEast, 'W', 'E') 
    334             except: 
    335                 logging.error("Will not process File %s. Contains incorrect East bounding box limit." %molesFile) 
    336                 return 
    337              
    338             try: 
    339                 self.north = self.parseCoord(bbox.LimitNorth, 'S', 'N') 
    340             except: 
    341                 logging.error("Will not process File %s. Contains incorrect North bounding box limit." %molesFile) 
    342                 return 
    343              
    344             try: 
    345                 self.south = self.parseCoord(bbox.LimitSouth, 'S', 'N') 
    346             except: 
    347                 logging.error("Will not process File %s. Contains incorrect South bounding box limit." %molesFile) 
    348                 return 
    349325 
    350326        logging.info("Spatial info: west= " + self.west + ",south " + self.south + ", east " + \ 
     
    363339        @return: coord - the value of the coordinate as a string    
    364340        ''' 
    365  
    366         coord = coordValue.strip() 
    367         if coord.endswith(maxField): 
    368             coord=coordValue.split(maxField)[0] 
    369         elif coord.endswith(minField): 
    370             if coord.startswith('-'): 
    371                 coord = coordValue.split(minField)[0] 
    372             else: 
    373                 coord = "-" + coordValue.split(minField)[0] 
    374  
    375         return '%s' % float(coord) 
     341        logging.info("Parsing document coordinates") 
     342        try: 
     343            coord = coordValue.strip() 
     344            if coord.endswith(maxField): 
     345                coord=coordValue.split(maxField)[0] 
     346            elif coord.endswith(minField): 
     347                if coord.startswith('-'): 
     348                    coord = coordValue.split(minField)[0] 
     349                else: 
     350                    coord = "-" + coordValue.split(minField)[0] 
     351     
     352            return '%s' % float(coord) 
     353        except: 
     354            raise SyntaxError, 'Will not process File: contains incorrect bounding box limit: ' + coordValue 
     355 
    376356             
    377357    def hasNullCoords(): 
Note: See TracChangeset for help on using the changeset viewer.