Changeset 6363


Ignore:
Timestamp:
21/01/10 15:35:47 (10 years ago)
Author:
sdonegan
Message:

added method to return start and end dates - useful if multiple date elements used

Location:
TI01-discovery/branches/ingestion-MEDIN/ingestAutomation-upgrade/OAIBatch
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • TI01-discovery/branches/ingestion-MEDIN/ingestAutomation-upgrade/OAIBatch/ExtractISO.py

    r6357 r6363  
    4343                self.datasetName = self.getElementVal(self.isoModel.dataSetName())               
    4444                 
    45                 self.boundingDates = self.getElementVal(self.isoModel.boundingDates())           
     45                self.boundingDates = self.getElementVal(self.isoModel.boundingDates()) 
     46                 
     47                self.boundingDatesRange = self.boundingDateRange(self.boundingDates)     
    4648                 
    4749                self.originalFormat = self.getElementVal(self.isoModel.originalFormat()) 
     
    6264                 
    6365                return True 
    64                  
     66         
     67                 
     68        ''' 
     69        Method to return start and end dates from a sequence of dates such as that found returned using the xpath defn from boundingDates 
     70        ''' 
     71        def boundingDateRange(self,boundingDatesList): 
     72                 
     73                #generate a simple list of all dates 
     74                allDates = [] 
     75                returnDates = {} 
     76                 
     77                for outer in boundingDatesList: 
     78                        for inner in outer.keys(): 
     79                                if outer[inner] is not None: 
     80                                        if outer[inner] != 'None': 
     81                                                #some other test here to ensure proper date object 
     82                                                allDates.append(outer[inner]) 
     83 
     84                #min and max seem to work for now (to get it working) - assuming proper dateformat (restrict to YYYY-MM-DD for now) 
     85                #TODO: use datetime library to do this properly          
     86                returnDates['start'] = min(allDates) 
     87                returnDates['end'] = max(allDates) 
     88                 
     89                return returnDates 
     90         
     91         
    6592                 
    6693        ''' 
  • TI01-discovery/branches/ingestion-MEDIN/ingestAutomation-upgrade/OAIBatch/testISO.py

    r6358 r6363  
    11from ExtractISO import ExtractISO 
    2 import logging,os,pdb 
     2import logging,os,pdb,datetime 
    33 
    44def accessIsoDataModel(struct,name): 
    55        cnt=0 
    6         for i in struct: 
    7                 if type(i) is dict: 
    8                         for j in i.keys():               
    9                                 print name + "(" + str(cnt) + "): " + j + " = " + str(i[j]) 
    10                 if type(i) is list: 
    11                         for j in i: 
    12                                 print name + "(" + str(cnt) + "): " + j 
    13                 if len(struct) > 1: 
    14                         print "-------------------------------" 
     6 
     7        #are we dealing with a list or dictionary? 
     8        if type(struct) is dict: 
     9                for j in struct.keys(): 
     10                        print name + "(" + str(cnt) + "): " + j + " = " + str(struct[j]) 
     11                        cnt = cnt + 1 
    1512                         
    16                 cnt = cnt + 1 
     13        if type(struct) is list:         
     14                for i in struct: 
     15                        if type(i) is dict: 
     16                                for j in i.keys():               
     17                                        print name + "(" + str(cnt) + "): " + j + " = " + str(i[j]) 
     18                        if type(i) is list: 
     19                                for j in i: 
     20                                        print name + "(" + str(cnt) + "): " + j 
     21                 
     22                        if len(struct) > 1: 
     23                                print "-------------------------------" 
     24                         
     25                        cnt = cnt + 1 
    1726 
    1827logging.basicConfig(level=logging.DEBUG,format='%(asctime)s %(filename)s:%(lineno)d %(levelname)s %(message)s') 
    1928 
    2029#test dif2stubIso xml file - converted from dif via xquery 
    21 #dif2stubIso_file = 'data/NEODC/stub_iso/neodc.nerc.ac.uk__stubISO__dataent_11658383444211836_DIF_multiDate.xml' 
    22 dif2stubIso_file = 'data/NEODC/stub_iso/neodc.nerc.ac.uk__stubISO__dataent_11658383444211836_DIF_multiCoord.xml' 
     30dif2stubIso_file = 'data/NEODC/stub_iso/neodc.nerc.ac.uk__stubISO__dataent_11658383444211836_DIF_multiDate.xml' 
     31#dif2stubIso_file = 'data/NEODC/stub_iso/neodc.nerc.ac.uk__stubISO__dataent_11658383444211836_DIF_multiCoord.xml' 
    2332#dif2stubIso_file = 'data/NEODC/stub_iso/neodc.nerc.ac.uk__stubISO__dataent_11658383444211836_DIF.xml' 
    2433 
     
    3746name = "boundingDates" 
    3847accessIsoDataModel(isoData.boundingDates, name) 
     48 
     49print "\nTesting for extracting start and end dates (dictionary)" 
     50name = "boundingDatesRange" 
     51 
     52accessIsoDataModel(isoData.boundingDatesRange,name) 
     53 
     54 
    3955 
    4056print "\nTesting for datasetID (List)..." 
Note: See TracChangeset for help on using the changeset viewer.