Changeset 7973 for TI01-discovery-Ingest


Ignore:
Timestamp:
10/11/11 11:58:59 (8 years ago)
Author:
sdonegan
Message:

Added interim updates for schematron validation and sorting svn workspace post Event

Location:
TI01-discovery-Ingest/trunk/v4.3.0/ingestAutomation-upgrade/OAIBatch
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • TI01-discovery-Ingest/trunk/v4.3.0/ingestAutomation-upgrade/OAIBatch/Metadata_document_ingester.py

    r7901 r7973  
    99# annoyingly, an import (CSML file, I think) sets the logging config during imports - so set this 
    1010# here to get there first - since you can only set the config once 
    11 logging.basicConfig(level=logging.ERROR, 
     11logging.basicConfig(level=logging.INFO, 
    1212                    format='%(asctime)s %(filename)s:%(lineno)d %(levelname)s %(message)s') 
    1313 
     
    1515import ndg.common.src.lib.fileutilities as FileUtilities 
    1616from abstractdocumentingester import AbstractDocumentIngester 
     17from SchematronValidate import SchematronValidate as Schematron 
    1718 
    1819class Metadata_document_ingester(AbstractDocumentIngester): 
     
    7879                self._xqueryDocTypes = self.processingDict['xqDocTypes']  
    7980                self._currentMedinStandard = self.processingDict['currentMEDIN'] 
     81                self._schematronLocation = self.processingDict['schematronLocation'] 
     82                self._schematronXSLLocation = self.processingDict['schematronXSLloc'] 
     83                self._schematronValidationInsert = self.processingDict['schematronValFail'] 
     84                 
     85                if self._schematronValidationInsert == 'False': 
     86                        self._schematronValidationInsert = False 
     87                else: 
     88                        self._schematronValidationInsert = True 
    8089                 
    8190                #set boolean depending on whether we want to change urls for ndg redirection service 
     
    107116                                logging.error("Could not extract provider ID from DPWS db!!") 
    108117                                sys.exit(2) 
    109                                                          
     118                         
     119                        import pdb 
     120                        pdb.set_trace() 
    110121                        #get provider id 
    111122                        sqlCmdProvName = 'select get_provider_name(%s);' %dpwsProvID 
     
    125136                 
    126137                self._setupDataCentreDirs() 
     138                 
     139                #set up schematron validation class              
     140                #self.SchematronValidate = Schematron(self._schematronLocation,self._schematronXSLLocation,self.ingestReport_dir) 
    127141                 
    128142                #Change os directory to that with the harvested documents in it. 
     
    227241                                 
    228242                if self._datacentre_format in acceptedFormats: 
    229                          
     243                                                 
    230244                        numfilesproc,badXmlFiles,processingReport = self._convertAndIngestFiles(self.originals_dir, self.discovery_dir, self.dataCentre, True, self._datacentre_format) 
    231245 
     
    292306                ''' 
    293307                Method to set individual file to ingest if "individualFile" is invoked 
    294                 ''' 
     308                '''              
    295309                self.ingestProcessID = processID.replace(',','') 
     310                logging.info("Setting ingest process id: %s" %self.ingestProcessID) 
    296311                 
    297312                 
  • TI01-discovery-Ingest/trunk/v4.3.0/ingestAutomation-upgrade/OAIBatch/abstractdocumentingester.py

    r7892 r7973  
    2222from ExtractISO import ExtractISO 
    2323import inspect 
     24from SchematronValidate import SchematronValidate as Schematron 
    2425 
    2526class AbstractDocumentIngester(object): 
     
    6869                checkProcID = False 
    6970                for arg in args: 
     71                         
    7072                         
    7173                        keywordArgs=['ingestFromDate','individualFile','interval','ingestFromDate',\ 
     
    360362                                processingConfig['currentMEDIN'] = words[1] 
    361363                                 
     364                        elif words[0] == 'schematronLocation': 
     365                                 
     366                                #setup parameters for schematron validation 
     367                                processingConfig['schematronLocation'] = words[1] 
     368                                 
     369                        elif words[0] == 'schematronXSLloc': 
     370                                 
     371                                #setup parameters for schematron validation 
     372                                processingConfig['schematronXSLloc'] = words[1] 
     373                                 
     374                        elif words[0] == 'schematronValFail': 
     375                                 
     376                                #setup parameters for schematron validation 
     377                                processingConfig['schematronValFail'] = words[1] 
     378                                 
    362379                        elif words[0] == 'exceptXqConv': 
    363380                                 
     
    566583                 @return numfilesproc: counter of number of files processed 
    567584                ''' 
     585                 
    568586                numfilesproc = 0 
    569587                badXMLfiles = 0          
     
    577595                 
    578596                logging.info(self.lineSeparator) 
    579                 logging.info("Renaming files:") 
     597                logging.info("Renaming files plop:") 
     598                 
    580599                 
    581600                if self.ingestProcessID is not None and self.procID is None: 
     
    603622                         
    604623                        #if importing old dif format need to do a few extra things: 1. deal with urls to be redirected.  2. Convert to stub ISO so can continue with ISO ingest! 
     624                         
     625                        #NOTE as of 120911 took out provision for DIF ingestion.. 
    605626                        if format == 'DIF_9.4': 
    606                                                          
    607                                 logging.info("Converting DIF to stub ISO...")                                    
    608                                  
    609                                 #if DIF still need to convert URL's using the old method so when requesting DIF in original format we still have correct redirect urls.... 
    610                                 #redirectUrlChanger(original_filename,original_filename,self._datacentre_format, self._ndgRedirectURL) 
    611                                                                                                                  
    612                                 #gets the metadata id from the xml 
    613                                 metadataID=self.getID(original_filename) 
    614                                 #import pdb 
    615                                 #pdb.set_trace() 
    616                                                                  
    617                                 repositoryName = self._datacentre_namespace 
    618                                  
    619                                                                  
    620                                 #where is the file to be ingested located? 
    621                                 metadataFileLoc = originals_dir 
    622                                  
    623                                 #generate a new stubISO filename 
    624                                 self.isoFormat= "stubISO" 
    625                                                                  
    626                                  
    627                                 #self.isoXML = self.convertDIFtoISO(metadataFileLoc,repositoryName,metadataID,metadataFilename) 
    628                                 self.xqueryTransformation = xqueryTransformation(metadataFileLoc,repositoryName,metadataID,metadataFilename,self._saxonJarFile) 
    629                                                                                                                          
    630                                 #get hold of the xml for the transformed ISO                             
    631                                 self.isoXML = self.xqueryTransformation.runXquery(self._dif2isoXquery) 
    632                                                                  
    633                                 #create the iso file on the system 
    634                                 tempStubISOfile = original_filename + ".stubISO.xml" 
    635                                 FileUtilities.createFile(tempStubISOfile , self.isoXML) 
    636                                  
    637                                 #generate the ISO object from the converted ISO here now.. 
    638                                 try: 
    639                                          
    640                                         #temp assignment so failure mode supported 
    641                                         new_filename_short = original_filename 
    642                                                                          
    643                                         isoDataModel = ExtractISO(tempStubISOfile,self._isoClass[self._datacentre_format]) 
    644                                  
    645                                         if isoDataModel.createISOdataStructure() is True: 
    646                                                 logging.info("ISO extractor worked fine!") 
    647                                                  
    648                                                 #need to get hold original format XML too (so can put directly into "transformed" docs section... 
    649                                                 self.originalXMLdoc = '' 
    650                                  
    651                                                 try: 
    652                                                         logging.info("Extracting original input file into variable for input into original format in transformed docs table") 
    653                                                         self.originalXMLdoc = file(original_filename).read() 
    654                                                         self.difXML = self.originalXMLdoc 
    655                                          
    656                                                 except: 
    657                                                         logging.warn("Could not extract original file to local variable!") 
    658                                                          
    659                                                  
    660                                                 #Back to main stream of ISO ingest 
    661                                                 if self._NDG_dataProvider: 
    662                                          
    663                                                         #to ensure "stubISO" doesnt make it into the filename on system and in the db, use the self. 
    664                                                                  
    665                                                         #changed so new new NDG3 discovery can pick up Discoveru View URL's correctly?  (why should it be different to previous?) 
    666                                                         new_filename = discovery_dir + self._datacentre_namespace + "__" + format + "__"+ metadataFilename.replace(":", "-")+".xml" 
    667                                                         new_filename_short = self._datacentre_namespace + "__" + format + "__" + metadataFilename.replace(":", "-")+".xml" 
    668                                  
    669                                          
    670                                                 else: 
    671                                                         mappingIndex = isoDataModel.findTheListData(isoDataModel.datasetID) 
    672                                                         ident = isoDataModel.datasetID[mappingIndex][0] 
    673                                          
    674                                                         ident = ident.replace(":", "-") 
    675                                                         ident = ident.replace("/", "-") 
    676                                  
    677                                                         new_filename = discovery_dir + "/" +self._datacentre_namespace+ "__"+ format + "__"+ ident +".xml" 
    678                                                         new_filename_short = self._datacentre_namespace+ "__"+ format + "__"+ ident +".xml" 
    679                                  
    680                                          
    681                                  
    682                                                 #now create this stub ISO file on system so can access it 
    683                                                 self.genIsoFile = discovery_dir + new_filename_short     
    684                                                                  
    685                                                 #FileUtilities.createFile(self.stubIsoFile, self.isoXML) 
    686                                                 #generate the redirect urls (if set to!) - now we have worked out the full discovery ndg name..  
    687                                                 isoDataModel.generateNDGredirectURL(self._ndgRedirectURL,self.genIsoFile,self.changeUrls) 
    688                                                  
    689                                                 #create list of all ORIGINAL filenames for ingest reporting (use actual filename) 
    690                                                 #this links a derived filename in processing dir with original filename 
    691                                                 #get basic filename from the path+filename passed to this function to use as key                 
    692                                                 self.inputFileOrigFinal[new_filename_short]=filename 
    693                                                  
    694                                                 numfilesproc += 1 
    695                          
    696                          
    697                                         elif isoDataModel.createISOdataStructure() is True: 
    698                                                 logging.error ("Something wrong with ISO extractor... (ExtractISO returned False: xml access problem?)")                         
    699                                                 #sys.exit() # TODO fix these 
    700                                                  
    701                                         else: 
    702                                                 logging.error("Something SERIOUSELY wrong with extractor (couldnt get at ExtractISO class)")                     
    703                                                 badXMLfiles += 1 
    704                                                 self.badXMLfileList[new_filename_short]=filename 
    705                                                                          
    706                                 except: 
    707                                         logging.error("Could not generate ISO XML from DIF format!!") 
    708                                         badXMLfiles += 1 
    709                                         self.badXMLfileList[new_filename_short]=filename 
    710                                          
    711                                 self.originalsDiscoveryFilesMap[new_filename_short] = filename 
    712                                  
    713                          
    714                         #all other ISO formats/profiles to deal with. 
     627                                logging.error("DIF ingestion no longer supported into NERC DWS!!!") 
     628                                sys.exit(2) 
     629                         
    715630                        else:                            
    716631                                isoFormat = format 
    717632                                 
     633                                #perform schematron validation of input file... 
     634                                #xmlValidation = self.SchematronValidate.validate(originals_dir + filename,True) 
     635                                 
     636                                 
    718637                                self.originalXMLdoc = "null" 
    719638                                 
    720639                                 
    721                                 #generate the ISO object from the ISO xml..                                                                              
     640                                #generate the ISO object from the ISO xml..                      
     641                                                                                         
    722642                                isoDataModel = ExtractISO(original_filename,self._isoClass[self._datacentre_format]) 
    723643                                 
     
    820740                #self.pgc = pgc(configFile = '/usr/local/ndg-oai-info-editor/ingest.config')  
    821741                 
    822                  
    823742                self.pgc_IngestLog = pgc(configFile = self.ingestLoggingDatabaseConfigurationFile) 
    824743                logging.info("Postgres DB connection now set up") 
     
    855774                self.originals_dir = data_dir + "/oai/originals/" # copy of original 
    856775                self.discovery_dir = data_dir + "/discovery/" 
    857                 #self.stubISO_dir = data_dir + "/stub_iso/" 
     776                self.ingestReport_dir = data_dir + "/ingestReports/" 
    858777                 
    859778                # Create/clear the 'in' and 'out' directories 
    860779                FileUtilities.setUpDir(self.originals_dir) 
    861780                FileUtilities.setUpDir(self.discovery_dir) 
     781                FileUtilities.setUpDir(self.ingestReport_dir) 
    862782                 
    863783                logging.info("Ingest directories for data centre set up") 
Note: See TracChangeset for help on using the changeset viewer.