Changeset 4986 for ndgCommon/trunk


Ignore:
Timestamp:
18/02/09 10:43:53 (11 years ago)
Author:
cbyrom
Message:

Properly implement search interface on discovery WS client + remove
some code that appears to be unused.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • ndgCommon/trunk/ndg/common/src/clients/ws/discoveryserviceclient.py

    r4970 r4986  
    77from ndg.common.src.clients.ws.generated.DiscoveryService_services_types import * 
    88from ndg.common.src.clients.ws.generated.DiscoveryService_services import * 
     9from ndg.common.src.clients.interfacesearchclient import InterfaceSearchClient 
    910 
    1011import sys, time, os.path, logging 
    1112from xml.dom import expatbuilder 
    12 from ndg.common.src.lib.ETxmlView import loadET 
    13 from ndg.common.src.clients.interfacesearchclient import InterfaceSearchClient 
    1413 
    1514class DiscoveryServiceClientError(Exception): 
     
    3433    ''' 
    3534     
    36     def __init__(self, tracefile=None,HostAndPort=default_HostAndPort): 
     35    def __init__(self, tracefile=None, HostAndPort=default_HostAndPort): 
    3736        '''Get an instance of the NDG Discovery Service.  
    3837            Optional Keywords are:  
     
    4342        loc=DiscoveryServiceLocator() 
    4443        self.server=loc.getDiscoveryServicePortType(url=HostAndPort, 
    45                                     readerclass=ExpatReaderClass,tracefile=tracefile) 
     44                                                    readerclass=ExpatReaderClass, 
     45                                                    tracefile=tracefile) 
    4646        self.serverSessionID=None 
    4747        logging.info('Discovery web service connection to %s'%HostAndPort) 
     
    175175        return docs[0] 
    176176 
     177         
     178    def getDocs(self, documents, format='original'): 
     179        '''  
     180        Return one or more complete document 
     181        @param documents: array of documents to retrieve 
     182        @keyword format: format the retrieved document should be in.  Default, 'original' 
     183        returns documents in their original format   
     184        @raise ValueError if the requested document(s) cannot be found 
     185        @return: dictionary with format, {docName: docContents} 
     186        ''' 
     187        logging.info("Retrieving docs: %s" %documents) 
     188        results = {} 
     189        for doc in documents: 
     190            results[doc] = self.getDoc(doc, format = format)  
     191         
     192        logging.info("- returning docs") 
     193        return results 
     194 
    177195                    
    178196    def getAllDocs(self,format='original'):             
     
    190208        logging.info("Documents retrieved successfully") 
    191209        return docs 
     210 
    192211             
    193212    def __xmlerror(self,docmessage): 
    194213        print docmessage 
    195214        return ET.fromstring('<Error><Document>%s</Document><Message>%s</Message></Error>'%docmessage) 
    196              
    197     def getDocElement(self,document): 
    198         ''' Takes a document path (maybe from a previous call to discoveryServiceClient) and extracts that document 
    199         into an ElementTree instance ''' 
    200         #we stick it straight into element tree because we need to use et to get the actual document 
    201         #we want, not the envelope xml elements  
    202          
    203         doc=self.getDoc(document) 
    204         path=document.rstrip('.xml') 
    205         try: 
    206             r=loadET(doc) 
    207             #return r.find(path) 
    208             return r 
    209         except: 
    210             return self.__xmlerror((path,doc)) 
    211              
    212     def getAllDocsAsElements(self): 
    213         '''  
    214         Get all the documents and load them into a list of ET instances  
    215         ''' 
    216         result=[] 
    217         docs=self.getAllDocs() 
    218         for doc in docs:  
    219             try: 
    220                 r=loadET(doc) 
    221                 result.append(r)#result.append(r.find(path)) 
    222             except: 
    223                 result.append(self.__xmlerror(doc)) 
    224         return result 
    225              
     215 
    226216             
    227217    def getLabelledDocs(self,format='original'): 
     
    230220        ''' 
    231221        logging.info("Retrieving all labelled documents") 
    232         if self.hits==0: return [] 
    233         #filenames=self.documents.Document 
    234         #so we know that the following call is the problem ... 
    235         responses=self.getAllDocs(format) 
     222        if self.hits==0:  
     223            return [] 
     224 
     225        responses = self.getAllDocs(format) 
    236226         
    237227        i=len(self.documents) 
     
    250240        return results 
    251241 
    252          
    253     def getNDGDoc(self,repository,schema,localID,format='DIF',**kw): 
    254         ''' Obtain a document via it's NDG id split up ''' 
    255         #nb argument targetCollection is here to provide same API as exist xmlrpc interface 
    256         uri='%s__%s__%s'%(repository,schema,localID) 
     242 
     243    def getNDGDoc(self, providerID, docType, localID, format='DIF'): 
     244        ''' 
     245        Retrieve the document represented by an ndgURI 
     246        @param providerID: ID of the provider of the metadata 
     247        @param docType: document type - see ndgObject for valid types 
     248        @param localID: local ID of the ndg document to retrieve 
     249        @keyword format: format to return document in  
     250        @return document matching the ndgURI 
     251        ''' 
     252        uri='%s__%s__%s'%(providerID,docType,localID) 
    257253        fileName=uri+'.xml' 
    258254        return self.getDoc(fileName,format) 
    259          
    260          
    261  
     255 
Note: See TracChangeset for help on using the changeset viewer.