| import logging |
| |
| from edge.dateutility import DateUtility |
| from edge.opensearch.datacastingresponsebysolr import DatacastingResponseBySolr |
| |
| class GranuleDatacastingResponse(DatacastingResponseBySolr): |
| def __init__(self, portalUrl, linkToGranule, archivedWithin): |
| super(GranuleDatacastingResponse, self).__init__(portalUrl, archivedWithin) |
| |
| self.linkToGranule = linkToGranule.split(',') |
| |
| def _populateChannel(self, solrResponse): |
| pass |
| |
| def _populateItem(self, solrResponse, doc, item): |
| doc['Granule-StartTimeLong'][0] = DateUtility.convertTimeLongToRFC822(doc['Granule-StartTimeLong'][0]) |
| doc['Granule-StopTimeLong'][0] = DateUtility.convertTimeLongToRFC822(doc['Granule-StopTimeLong'][0]) |
| doc['Granule-ArchiveTimeLong'][0] = DateUtility.convertTimeLongToRFC822(doc['Granule-ArchiveTimeLong'][0]) |
| |
| doc['GranuleLink'] = self._getLinkToGranule(doc) |
| |
| doc['GranuleFileSize'] = dict(list(zip(doc['GranuleArchive-Type'], doc['GranuleArchive-FileSize']))) |
| |
| if 'GranuleReference-Type' in doc: |
| doc['GranuleReference'] = dict([(doc['GranuleReference-Type'][i], doc['GranuleReference-Path'][i]) for i,x in enumerate(doc['GranuleReference-Status']) if x=="ONLINE"]) |
| |
| def _getLinkToGranule(self, doc): |
| link = None |
| |
| if 'GranuleReference-Type' in doc and len(self.linkToGranule) > 0: |
| granuleRefDict = dict(list(zip(doc['GranuleReference-Type'], list(zip(doc['GranuleReference-Path'], doc['GranuleReference-Status']))))) |
| |
| for type in self.linkToGranule: |
| # check if reference type exists |
| if type in granuleRefDict: |
| # check if reference is online |
| if granuleRefDict[type][1] == 'ONLINE': |
| link = granuleRefDict[type][0] |
| break |
| |
| return link |