From 00132de35436349ff3d447cbfd8a3b4bf957c70a Mon Sep 17 00:00:00 2001
From: "benjamin.jakimow@geo.hu-berlin.de" <q8DTkxUg-BB>
Date: Mon, 22 May 2017 12:16:27 +0200
Subject: [PATCH] refactoring, e.g. ImageDateReader instead ImageDateParser

---
 timeseriesviewer/dateparser.py | 39 +++++++++++++++-------------------
 1 file changed, 17 insertions(+), 22 deletions(-)

diff --git a/timeseriesviewer/dateparser.py b/timeseriesviewer/dateparser.py
index 99618885..3f9a3620 100644
--- a/timeseriesviewer/dateparser.py
+++ b/timeseriesviewer/dateparser.py
@@ -47,10 +47,7 @@ def getDatetime64FromDOY(year, doy):
         return np.datetime64('{:04d}-01-01'.format(year)) + np.timedelta64(doy-1, 'D')
 
 
-
-from timeseriesviewer.utils import KeepRefs
-
-class ImageDateParser(object):
+class ImageDateReader(object):
     """
     Base class to extract numpy.datetime64 date-time-stamps
     """
@@ -62,19 +59,19 @@ class ImageDateParser(object):
         self.dirName = os.path.dirname(self.filePath)
         self.baseName, self.extension = os.path.splitext(os.path.basename(self.filePath))
 
-    def parseDate(self):
+    def readDTG(self):
         """
         :return: None in case date was not found, numpy.datetime64 else
         """
         raise NotImplementedError()
         return None
 
-class ImageDateParserGeneric(ImageDateParser):
+class ImageDateReaderDefault(ImageDateReader):
     def __init__(self, dataSet):
-        super(ImageDateParserGeneric, self).__init__(dataSet)
+        super(ImageDateReaderDefault, self).__init__(dataSet)
         self.regDateKeys = re.compile('(acquisition[ ]*time|datetime)', re.IGNORECASE)
 
-    def parseDate(self):
+    def readDTG(self):
         # search metadata for datetime information
         # see http://www.harrisgeospatial.com/docs/ENVIHeaderFiles.html for datetime format
         dtg = None
@@ -98,11 +95,11 @@ class ImageDateParserGeneric(ImageDateParser):
             if dtg: return dtg
         return None
 
-class ImageDateParserPLEIADES(ImageDateParser):
+class ImageDateReaderPLEIADES(ImageDateReader):
     def __init__(self, dataSet):
-        super(ImageDateParserPLEIADES, self).__init__(dataSet)
+        super(ImageDateReaderPLEIADES, self).__init__(dataSet)
 
-    def parseDate(self):
+    def readDTG(self):
         timeStamp = ''
         ext = self.extension.lower()
 
@@ -118,22 +115,20 @@ class ImageDateParserPLEIADES(ImageDateParser):
         return None
 
 
-class ImageDateParserSentinel2(ImageDateParser):
+class ImageDateReaderSentinel2(ImageDateReader):
     def __init__(self, dataSet):
-        super(ImageDateParserSentinel2, self).__init__(dataSet)
+        super(ImageDateReaderSentinel2, self).__init__(dataSet)
 
-    def parseDate(self):
+    def readDTG(self):
         timeStamp = ''
-        ext = self.extension.lower()
-
-        if ext == '.xml':
+        if self.extension.lower() == '.xml':
             md = self.dataSet.GetMetadata_Dict()
             timeStamp = md.get('DATATAKE_1_DATATAKE_SENSING_START', '')
         if len(timeStamp) > 0:
             return np.datetime64(timeStamp)
         return None
 
-class ImageDateParserLandsat(ImageDateParser):
+class ImageDateParserLandsat(ImageDateReader):
     #see https://landsat.usgs.gov/what-are-naming-conventions-landsat-scene-identifiers
     regLandsatSceneID  = re.compile(r'L[COTEM][4578]\d{3}\d{3}\d{4}\d{3}[A-Z]{2}[A-Z1]\d{2}')
     regLandsatProductID = re.compile(r'L[COTEM]0[78]_(L1TP|L1GT|L1GS)_\d{3}\d{3}_\d{4}\d{2}\d{2}_\d{4}\d{2}\d{2}_0\d{1}_(RT|T1|T2)')
@@ -141,7 +136,7 @@ class ImageDateParserLandsat(ImageDateParser):
     def __init__(self, dataSet):
         super(ImageDateParserLandsat, self).__init__(dataSet)
 
-    def parseDate(self):
+    def readDTG(self):
         #search for LandsatSceneID (old) and Landsat Product IDs (new)
         sceneID = matchOrNone(ImageDateParserLandsat.regLandsatSceneID, self.baseName)
         if sceneID:
@@ -154,13 +149,13 @@ class ImageDateParserLandsat(ImageDateParser):
 
 
 
-dateParserList = [c for c in ImageDateParser.__subclasses__()]
-dateParserList.insert(0, dateParserList.pop(dateParserList.index(ImageDateParserGeneric))) #set to first position
+dateParserList = [c for c in ImageDateReader.__subclasses__()]
+dateParserList.insert(0, dateParserList.pop(dateParserList.index(ImageDateReaderDefault))) #set to first position
 
 def parseDateFromDataSet(dataSet):
     assert isinstance(dataSet, gdal.Dataset)
     for parser in dateParserList:
-        dtg = parser(dataSet).parseDate()
+        dtg = parser(dataSet).readDTG()
         if dtg:
             return dtg
     return None
-- 
GitLab