Changeset 8026 for TI01-discovery-Ingest


Ignore:
Timestamp:
20/12/11 16:56:00 (7 years ago)
Author:
sdonegan
Message:

Various updates to improve reporting and utf-8 handling - note requires ElementTree 1.3 or higher

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

Legend:

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

    r8001 r8026  
    11 
    2 from xml.etree import ElementTree as ET 
     2#from xml.etree import ElementTree as ET - SJD - not using the standard python ET anymore - use latest version! 
     3from elementtree import ElementTree as ET 
    34import logging,urllib,os,sys,inspect,string 
    45from Utilities import IsoIngestListUtilities # so can use those useful getSingleVal and getMultipleVal methods for discerning lists etc (esp useful when using the isoVal to dbColumn methods..) 
     
    119120                self.validDoc = True 
    120121                 
     122                self.stopHere = False # aid debuging! 
     123                 
    121124                self.root = self.getIsoXML(self.inputXMLfile) 
    122125                 
     
    174177                        self.datasetID[self.findTheListData(self.datasetID)][0] = self.datasetID[self.findTheListData(self.datasetID)][0].replace(" ", "_") 
    175178                 
    176                  
     179                #self.stopHere = True 
    177180                self.datasetName = self.getElementVal(self.isoModel.dataSetName()) 
    178181                if self.datasetName == 'None': 
     
    181184                        self.validDoc = False 
    182185                 
    183                 self.datasetAbstract = self.getElementVal(self.isoModel.dataSetAbstract())                       
     186                self.datasetAbstract = self.getElementVal(self.isoModel.dataSetAbstract())               
    184187                 
    185188                self.revisionDate = self.getElementVal(self.isoModel.metadataRevisionDate()) 
     
    11331136                                for elValIt in thisEl: 
    11341137                                         
    1135                                         elVal = elValIt.text 
     1138                                        #elVal = elValIt.text 
     1139                                        #ensure correct encoding... 
     1140                                        elVal = elValIt.text.encode('utf-8') 
    11361141                                                                                 
    11371142                                        if '@' in depXpathOrig: 
     
    11771182                                                                                                                 
    11781183                                                                resDependantVal.append(elVal) 
    1179                                                  
     1184                 
     1185                if self.stopHere: 
     1186                        import pdb; pdb.set_trace()              
    11801187                                                                                                                                                 
    11811188                return resDependantVal 
     
    12221229                                        value = elVal.attrib[attribVal] 
    12231230                                else: 
    1224                                         value = elVal.text 
     1231                                        #ensure correct encoding... 
     1232                                        value = elVal.text.encode('utf-8') 
    12251233                                         
    12261234                                if (showValue is True) and (value is not None): 
     
    12301238                                         
    12311239                                        resElementVal.append(value) 
     1240                                         
     1241                if self.stopHere: 
     1242                        import pdb; pdb.set_trace() 
    12321243                '''      
    12331244                if rootEl[0].text is None:                                       
     
    13171328                #parse the xml with elementtree 
    13181329                try: 
    1319                          
    1320                         self.etree=ET.parse(file) 
     1330                        #explicity code everything as UTF-8 (ensure UTF-8 compliance Dec 2011) - Use Et 1.3+ (now explicitly included in buildout recipe)                        
     1331                        parser = ET.XMLParser(encoding="utf-8") 
     1332                        self.etree=ET.parse(file,parser=parser) 
    13211333                        root=self.etree.getroot() # should be the "gmd:MD_Metadata" element 
    13221334                except: 
  • TI01-discovery-Ingest/trunk/v4.3.0/ingestAutomation-upgrade/OAIBatch/Metadata_document_ingester.py

    r7975 r8026  
    167167                                                                 
    168168                if self.ingestProcessID is not None: 
    169                         self._getPostgresDBConnectionLogging() 
    170                  
     169                        self._getPostgresDBConnectionLogging()  
     170             
    171171                        #if process id has been supplied, then update the logging db with a "start_ingest" 
    172172                        if self.procID is None: 
     
    286286 
    287287 
    288                  
    289  
    290  
    291288                #import pdb 
    292289                #pdb.set_trace() 
     
    307304                self.ingestProcessID = processID.replace(',','') 
    308305                logging.info("Setting ingest process id: %s" %self.ingestProcessID) 
    309                  
    310                  
     306         
     307     
    311308        def setOaiConfigFile(self, configFilePath): 
    312309                ''' 
  • TI01-discovery-Ingest/trunk/v4.3.0/ingestAutomation-upgrade/OAIBatch/PostgresDAO.py

    r8000 r8026  
    44C Byrom Apr 08 
    55''' 
    6 import sys, os, logging, datetime, re 
     6import sys, os, logging, datetime, re, codecs 
    77#from SpatioTemporalData import * 
    88from ndg.common.src.clients.reldb.postgres.postgresclient import PostgresClient as pgc 
     
    530530        #Get rid of any xml comment characters - causing problems 
    531531        originalXMLdoc = re.sub("<!--.*-->","",self._record.originalFormat) 
     532         
     533        #create the sql command 
     534         
     535        #list of arguements in SEQUENCE order to be used with create_document SQL DB method. 
     536        args=[self._record.shortFilename,self._record.discovery_id,self.dpwsID,self._record.docType,originalXMLdoc,self._record.getAuthorsInfo(),self._record.escapeSpecialCharacters(self._record.getParametersInfo()),self._record.getScopeInfo(),self._record.dataset_name,self._record.datacentre_name,self._record.dataset_lastEdit,self._record.datasetStartNom,self._record.datasetEndNom] 
     537         
     538        cmdStr = '' 
     539        cntr = 0 
     540        for vals in args: 
     541             
     542            #unicode now enforced when pulling data from the xml.. but escap 
     543            #chckedVals,msg = self._record.characterEncoding(vals) 
     544            chckedVals = vals ; msg = '' 
     545             
     546            if msg != '':             
     547                logging.error(msg) 
     548                         
     549            if cntr != 0: 
     550                cmdStr += ",'%s'" %chckedVals                     
     551            else: 
     552                cmdStr += "'%s'" %chckedVals 
     553             
     554            cntr += 1 
     555             
    532556                 
    533         sqlCmd = "SELECT create_document('" + self._record.shortFilename + "', '" + \ 
    534             self._record.discovery_id + "', '" + self.dpwsID + "', '" + self._record.docType + "', '" + \ 
    535             originalXMLdoc + "', '" + self._record.getAuthorsInfo() + "', '" + \ 
    536             self._record.escapeSpecialCharacters(self._record.getParametersInfo()) + "', '" + self._record.getScopeInfo() + "', '" + \ 
    537             self._record.dataset_name + "', '" + self._record.datacentre_name + "', '" + \ 
    538             self._record.dataset_lastEdit + "', '" + self._record.datasetStartNom + "', '" + self._record.datasetEndNom + "' );" 
     557        #encapsulate within the correct structure.. 
     558        sqlCmd = "SELECT create_document(%s)" % cmdStr 
     559        #import pdb ; pdb.set_trace() 
     560         
     561         
     562        #sqlCmd = "SELECT create_document('" + self._record.shortFilename + "', '" + \ 
     563        #    self._record.discovery_id + "', '" + self.dpwsID + "', '" + self._record.docType + "', '" + \ 
     564         #   originalXMLdoc + "', '" + self._record.getAuthorsInfo() + "', '" + \ 
     565        #    self._record.escapeSpecialCharacters(self._record.getParametersInfo()) + "', '" + self._record.getScopeInfo() + "', '" + \ 
     566         #   self._record.escapeSpecialCharacters(self._record.dataset_name) + "', '" + self._record.datacentre_name + "', '" + \ 
     567        #    self._record.dataset_lastEdit + "', '" + self._record.datasetStartNom + "', '" + self._record.datasetEndNom + "' );" 
    539568         
    540569        #sort out any nulls.. 
     
    572601         
    573602        logging.info("Updating original document in Postgres DB") 
    574         sqlCmd = "SELECT update_document('" + str(self._record.db_id) + "', '" + \ 
    575             self._record.shortFilename + "', '" + self.dpwsID + "', '" +\ 
    576             self._record.discovery_id + "', '" + self._record.docType + "', '" + \ 
    577             self._record.originalFormat + "', '" + self._record.getAuthorsInfo() + "', '" + \ 
    578             self._record.escapeSpecialCharacters(self._record.getParametersInfo()) + "', '" + self._record.getScopeInfo() + "', '" + \ 
    579             str(self._record.scn) + "', '" + self._record.dataset_name + "', '" + self._record.datacentre_name + \ 
    580             "', '" + self._record.dataset_lastEdit + "', '" + self._record.datasetStartNom + "', '" + \ 
    581             self._record.datasetEndNom + "');"  
    582              
    583              
    584                  
     603        #sqlCmd = "SELECT update_document('" + str(self._record.db_id) + "', '" + \ 
     604        #    self._record.shortFilename + "', '" + self.dpwsID + "', '" +\ 
     605        #    self._record.discovery_id + "', '" + self._record.docType + "', '" + \ 
     606         #   self._record.originalFormat + "', '" + self._record.getAuthorsInfo() + "', '" + \ 
     607         #   self._record.escapeSpecialCharacters(self._record.getParametersInfo()) + "', '" + self._record.getScopeInfo() + "', '" + \ 
     608         #   str(self._record.scn) + "', '" + self._record.dataset_name + "', '" + self._record.datacentre_name + \ 
     609         #   "', '" + self._record.dataset_lastEdit + "', '" + self._record.datasetStartNom + "', '" + \ 
     610          #  self._record.datasetEndNom + "');"  
     611             
     612         
     613        args=[str(self._record.db_id), self._record.shortFilename,self.dpwsID,self._record.discovery_id,self._record.docType,self._record.originalFormat,self._record.getAuthorsInfo(),self._record.escapeSpecialCharacters(self._record.getParametersInfo()),self._record.getScopeInfo(),str(self._record.scn),self._record.dataset_name,self._record.datacentre_name,self._record.dataset_lastEdit,self._record.datasetStartNom,self._record.datasetEndNom] 
     614         
     615        cmdStr = '' 
     616        cntr = 0 
     617        for vals in args: 
     618             
     619            #unicode now enforced when pulling data from the xml.. but escap 
     620            #chckedVals,msg = self._record.characterEncoding(vals) 
     621            chckedVals = vals ; msg = '' 
     622             
     623            if msg != '':             
     624                logging.error(msg) 
     625                         
     626            if cntr != 0: 
     627                cmdStr += ",'%s'" %chckedVals                     
     628            else: 
     629                cmdStr += "'%s'" %chckedVals 
     630             
     631            cntr += 1 
     632             
     633                 
     634        #encapsulate within the correct structure.. 
     635        sqlCmd = "SELECT update_document(%s);" % cmdStr 
     636         
    585637         
    586638        #sort out any NULL values" 
  • TI01-discovery-Ingest/trunk/v4.3.0/ingestAutomation-upgrade/OAIBatch/PostgresRecord.py

    r7953 r8026  
    1111import ndg.common.src.lib.utilities as ndgUtilities 
    1212from Utilities import xqueryTransformation,IsoIngestListUtilities 
    13 import keywordAdder 
     13#import keywordAdder 
    1414 
    1515SAXON_JAR_FILE = 'lib/saxon9.jar' 
Note: See TracChangeset for help on using the changeset viewer.