Ignore:
Timestamp:
15/06/12 23:42:22 (7 years ago)
Author:
mnagni
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • mauRepo/HPFos/trunk/src/HPFos/osImpl/myimpl.py

    r8347 r8352  
    2525RESULT = 'result' 
    2626 
     27def calculateStep(**kwargs): 
     28    step = 20 
     29    if kwargs['params_values'].has_key('count'): 
     30        step = int(kwargs['params_values']['count']) 
     31    return step 
     32 
    2733class MyOSAtomResponse(OSAtomResponse): 
    2834    ''' 
     
    3945         
    4046                         
    41     def generateResponse(self, result, queries, ospath): 
     47    def generateResponse(self, result, queries, ospath, **kwargs): 
    4248        """ 
    4349            @param result: a Result instance 
     
    5561        #configuration level 
    5662        #path = "http://mysite.com/" 
    57         step = 20 
    58          
     63        step = calculateStep(**kwargs) 
     64        root = ElementTree(atomdoc).getroot() 
    5965        #extracted from result parameter 
    60         linkid = result.id 
    61         total_result = len(result.subresult) 
     66 
    6267        #Generate feed's links 
    63         self.generateFeedLinks(ElementTree(atomdoc).getroot(), ospath, None, total_result, step) 
     68        self.generateFeedLinks(root, ospath, None, result.totalResult, step) 
    6469     
    6570         
    6671        #Inserts the OpenSearchResponse elements 
    67         osdoc = OpenSearchResponse(ElementTree(atomdoc).getroot()) 
    68         os_totalResults = str(total_result) 
     72        osdoc = OpenSearchResponse(root) 
     73        os_totalResults = str(result.totalResult) 
    6974        os_startIndex = str(0) 
    7075        os_itemsPerPage = str(step) 
    71         osdoc.createDocument(totalResults = os_totalResults, startIndex = os_startIndex, itemsPerPage = os_itemsPerPage)                       
    72         ElementTree(atomdoc).getroot().extend(queries) 
    73  
    74         self.generateEntries(ElementTree(atomdoc).getroot(), result.subresult, ospath) 
     76        osdoc.createDocument(totalResults = os_totalResults, startIndex = os_startIndex, itemsPerPage = os_itemsPerPage) 
     77        for query in queries:                        
     78            root.append(query) 
     79 
     80        self.generateEntries(root, result.subresult, ospath) 
    7581         
    7682        reparsed = minidom.parseString(tostring(atomdoc)) 
     
    167173            entries.append(xmlentry) 
    168174 
    169         atomroot.extend(entries)  
     175        for entry in entries: 
     176            atomroot.append(entry)  
    170177 
    171178class MyOSHTMLResponse(OSHTMLResponse): 
     
    180187        super(MyOSHTMLResponse, self).__init__() 
    181188         
    182     def generateResponse(self, result): 
     189    def generateResponse(self, result, queries, ospath, **kwargs): 
    183190        return result + " HTML!" 
    184191         
     
    203210        params = [param_1, param_2, param_3, param_4, param_5, param_6, param_7, param_8]  
    204211        super(MyOSQuery, self).__init__(params) 
     212 
     213    def _packResult(self, results, id = None, **kwargs): 
     214        subresults = [] 
     215 
     216        step = calculateStep(**kwargs) 
     217 
     218        startIndex = self.indexOffset 
     219        if kwargs['params_values'].has_key('startIndex'): 
     220            if int(kwargs['params_values']['startIndex']) < len(results): 
     221                startIndex = int(kwargs['params_values']['startIndex']) 
     222         
     223        startPage = self.pageOffset 
     224        if kwargs['params_values'].has_key('startPage'): 
     225            if int(kwargs['params_values']['startPage']) * step < len(results): 
     226                startPage = int(kwargs['params_values']['startPage']) 
     227                 
     228        firstResult = startIndex 
     229        lastResult = firstResult + step 
     230 
     231        if startPage > 1 and (firstResult + startPage*step) <= len(results): 
     232            firstResult = firstResult + startPage*step 
     233            if firstResult + step <= len(results):             
     234                lastResult = firstResult + step 
     235            else: 
     236                lastResult = len(results) 
     237 
     238        for result in results[firstResult:lastResult]: 
     239            result_guid = kwargs['moles3EPB'].retrieveGUIDFromInstance(result) 
     240            item = Subresult(result_guid.id, "title", datetime.now().isoformat()) 
     241            subresults.append(item) 
     242         
     243        return Result(len(results), subresult = subresults) 
     244         
    205245         
    206246    def doSearch(self, **kwargs): 
     
    212252             
    213253        results = kwargs['moles3EPB'].getObservationCollections() 
    214         subresults = [] 
    215  
    216         for result in results: 
    217             result_guid = kwargs['moles3EPB'].retrieveGUIDFromInstance(result) 
    218             item = Subresult(result_guid.id, "title", datetime.now().isoformat()) 
    219             subresults.append(item) 
    220  
    221         #item = Subresult("ASA_IM__0P", "ASAR Image Mode source packets Level 0 (ASA_IM__0P)", "2012-06-01T00:52:48.213Z") 
    222         #subresults.append(item) 
    223         #item = Subresult("ER02_SAR_RAW_0P", "ERS-2 SAR Image SAR Annotated Raw Data Product Level 0 (ER02_SAR_RAW_0P)", "2012-05-09T11:09:49.570Z") 
    224         #subresults.append(item) 
    225          
    226         result = Result(subresult = subresults) 
    227         return result 
     254        return self._packResult(results, **kwargs) 
    228255 
    229256    def searchCollection(self, **kwargs):         
     
    232259            obs_coll = kwargs['moles3EPB'].searchSelectiveLoadByInstance(obs_coll, 'member') 
    233260                         
    234         subresults = [] 
    235         for result in obs_coll.member: 
    236             result_guid = kwargs['moles3EPB'].retrieveGUIDFromInstance(result) 
    237             item = Subresult(result_guid.id, "title", datetime.now().isoformat()) 
    238             subresults.append(item) 
    239              
    240         result = Result(id = kwargs['params_values'][COLLECTION], subresult = subresults) 
    241         return result 
     261        return self._packResult(obs_coll.member, id = kwargs['params_values'][COLLECTION], **kwargs) 
    242262 
    243263    def searchObservation(self, **kwargs):         
     
    260280 
    261281class Result(object): 
    262     def __init__(self, id = None, title = "Discovery feed for Search Services", updated = datetime.now().isoformat(), subresult = []): 
     282    def __init__(self, totalResults, id = None, title = "Discovery feed for Search Services", updated = datetime.now().isoformat(), subresult = []): 
    263283        ''' 
    264284            Constructor 
     
    268288            @param subresult: a Subresults array                        
    269289        ''' 
     290        self.totalResult = totalResults 
    270291        self.id = id 
    271292        self.title = title 
Note: See TracChangeset for help on using the changeset viewer.