Changeset 6904 for TI01-discovery-Ingest


Ignore:
Timestamp:
28/05/10 14:34:45 (9 years ago)
Author:
sdonegan
Message:

further debug updates to check dates

Location:
TI01-discovery-Ingest/trunk/v4n_MEDIN/ingestAutomation-upgrade/OAIBatch
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • TI01-discovery-Ingest/trunk/v4n_MEDIN/ingestAutomation-upgrade/OAIBatch/ExtractISO.py

    r6891 r6904  
    145145                self.boundingDates = self.getElementVal(self.isoModel.boundingDates()) 
    146146                 
    147                 self.boundingDatesRange = self.boundingDateRange(self.boundingDates)     
    148                  
     147                self.boundingDatesRange = self.boundingDateRange(self.boundingDates) 
     148                                 
    149149                self.originalFormat = self.getElementVal(self.isoModel.originalFormat()) 
    150150                 
     
    291291                                                 
    292292                return list 
     293         
     294        ''' 
     295        Method to check date formats to ensure correct insertion into database - if doesnt match minimum YYYY-MM-DD format then is false,  
     296        so date should be set to None in calling method.  Will adjust self.processingMsg too for return info 
     297        ''' 
     298        def checkDate(self,inputDate): 
     299                 
     300                 
     301                dateStrArr = inputDate.split('-') 
     302                 
     303                #check if long date string or short - if long, will have a T in! (should do..) 
     304                #just stick with date values now.. 
     305                if 'T' in dateStrArr: 
     306                        logging.info("*********************************** LONG VALUE DATE STRING ALERT!") 
     307                        dateStrArr = dateStrArr[:3] 
     308                                 
     309                if len(dateStrArr)< 3: 
     310                        msg = "Invalid date format (%s) - insufficient length!\n" %inputDate 
     311                        logging.warn(msg) 
     312                        self.processingMsg = self.processingMsg + msg 
     313                        return False 
     314                 
     315                else: 
     316                        yearStr = dateStrArr[0] 
     317                        monthStr = dateStrArr[1] 
     318                        dayStr = dateStrArr[2] 
     319                                 
     320                #check days, months etc - Years can be anything... just do simple test for now 
     321                if int(monthStr) > 12 or int(monthStr) < 1: 
     322                        msg = "Invalid Month value (%s) \n" %monthStr 
     323                        logging.warn(msg) 
     324                        self.processingMsg = self.processingMsg + msg 
     325                        return False 
     326                                 
     327                elif monthStr in ['01','03','05','07','08','10','12']: 
     328                        if int(dayStr) > 31 or int(dayStr) < 1: 
     329                                msg = "(31 ck) Invalid Day value (%s) for month (%s)\n" %(dayStr,monthStr) 
     330                                logging.warn(msg) 
     331                                self.processingMsg = self.processingMsg + msg 
     332                                return False 
     333                        else: 
     334                                logging.info("(31 ck) Date value seems ok...(%s) " %inputDate) 
     335                                return True 
     336                         
     337                elif monthStr in ['04','06','09','11']: 
     338                        if int(dayStr) > 30 or int(dayStr) < 1: 
     339                                msg = "(30 ck) Invalid Day value (%s) for month (%s)\n" %(dayStr,monthStr) 
     340                                logging.warn(msg) 
     341                                self.processingMsg = self.processingMsg + msg 
     342                                return False 
     343                        else: 
     344                                logging.info("(30 ck) Date value seems ok...(%s) " %inputDate) 
     345                                return True 
     346                                         
     347                elif monthStr == '02': 
     348                        if int(yearStr) % 4 == 0: 
     349                                if int(dayStr) > 29 or int(dayStr) < 1: 
     350                                        msg = "Invalid Day value (%s) for month (%s)\n" %(dayStr,monthStr) 
     351                                        logging.warn(msg) 
     352                                        self.processingMsg = self.processingMsg + msg 
     353                                        return False 
     354                                else: 
     355                                        logging.info("(29 ck) Date value seems ok...(%s) " %inputDate) 
     356                                        return True 
     357                                                                         
     358                        else:                            
     359                                if int(dayStr) > 28 or int(dayStr) < 1: 
     360                                        msg = "Invalid Day value (%s) for month (%s)\n" %(dayStr,monthStr) 
     361                                        logging.warn(msg) 
     362                                        self.processingMsg = self.processingMsg + msg 
     363                                        return False 
     364                                else: 
     365                                        logging.info("(28 ck) Date value seems ok...(%s) " %inputDate) 
     366                                        return True                                                                      
     367                                 
     368                else: 
     369                        msg = "Invalid month value (%s)" %monthStr 
     370                        logging.warn(msg) 
     371                        self.processingMsg = self.processingMsg + msg 
     372                        return False 
    293373                 
    294374        ''' 
     
    300380                allDates = [] 
    301381                returnDates = {} 
    302                  
     382                                 
    303383                #remember, need to sort out whether there was a start and end date in the first place, or just one so can copy values over 
    304384                if len(boundingDatesList) == 1: 
     
    307387                        returnDates['end'] = boundingDatesList[0]['end'] 
    308388                         
     389                        #check date validity 
     390                        for date in returnDates.keys():                                  
     391                                if not self.checkDate(returnDates[date]): 
     392                                        returnDates[date] = 'None' 
     393                         
    309394                        #convert None to 'None' 
    310395                        for date in returnDates.keys(): 
    311396                                if returnDates[date] is None: 
    312397                                        returnDates[date] = 'None' 
    313                          
     398                                 
    314399                        return returnDates 
    315400                 
     
    323408                                 
    324409                #min and max seem to work for now (to get it working) - assuming proper dateformat (restrict to YYYY-MM-DD for now) 
    325                 #TODO: use datetime library to do this properly          
     410                #TODO: use datetime library to do this properly  
     411                 
     412                #check correct formatting for dates - if invalid, set to None - use checkDate method             
     413                for date in returnDates.keys():                  
     414                        if not self.checkDate(returnDates[date]): 
     415                                returnDates[date] = 'None' 
     416                                         
    326417                returnDates['start'] = min(allDates) 
    327418                returnDates['end'] = max(allDates) 
  • TI01-discovery-Ingest/trunk/v4n_MEDIN/ingestAutomation-upgrade/OAIBatch/PostgresDAO.py

    r6865 r6904  
    377377        logging.info("Adding spatiotemporal row to DB") 
    378378         
     379         
    379380        sqlCmd = "SELECT add_spatiotemporal_row('" + str(self._record.db_id) + "', '" + \ 
    380381            str(coords['north']) + "', '" + str(coords['south']) + "', '" + str(coords['west']) + "', '" + \ 
  • TI01-discovery-Ingest/trunk/v4n_MEDIN/ingestAutomation-upgrade/OAIBatch/PostgresRecord.py

    r6891 r6904  
    8080        self.datasetEndNom = self.isoDataModel.boundingDatesRange['end'] #dictionary method!     
    8181         
    82         self.datasetTemporalData = self.isoDataModel.boundingDates # set whole list of dictionaries for this as may be multiple boxes  
     82        self.datasetTemporalData = self.isoDataModel.boundingDatesRange # set whole list of dictionaries for this as may be multiple boxes  
    8383         
    8484        self.datasetSpatialData = self.isoDataModel.boundingBoxCoordinates # set whole list of dictionaries for this as may be multiple boxes 
     
    322322         
    323323        logging.info("Parsing Temporal information from original ISO object") 
    324          
     324                 
    325325        TimeRange = [] 
     326         
    326327        if len(timeData) == 0: 
    327328                        logging.info("No temporal coverage elements found - assuming no temporal data available") 
     
    329330        else: 
    330331                for time in timeData: 
    331                         start = time['start'] 
    332                         end = time['end'] 
    333                  
    334                         if start is None: 
     332                         
     333                        start = timeData['start'] 
     334                        end = timeData['end'] 
     335                 
     336                        if start is None or start == 'None': 
    335337                           startDate = "null" 
    336338                        else: 
    337339                           startDate = start 
    338340                         
    339                         if end is None: 
     341                        if end is None or start == 'None': 
    340342                           endDate = "null" 
    341343                        else: 
    342344                           endDate = end 
    343345                         
    344                         if (end is None) and (start is None): 
     346                        if (end is None or end == 'None') and (start is None or start == 'None'): 
    345347                           logging.info("No temporal coverage elements found - assuming no temporal data available") 
    346348                        else: 
Note: See TracChangeset for help on using the changeset viewer.