From ad44e07ca4ef982f6937f69716559a8a3ef95f98 Mon Sep 17 00:00:00 2001 From: Sinisa Veseli <sveseli@aps.anl.gov> Date: Wed, 8 Jul 2015 21:09:09 +0000 Subject: [PATCH] move regex utility to base api class --- .../common/mongodb/api/datasetMongoDbApi.py | 16 ---------------- .../dm/common/mongodb/api/dmMongoDbApi.py | 19 +++++++++++++++++++ .../dm/common/mongodb/api/fileMongoDbApi.py | 6 ++++++ 3 files changed, 25 insertions(+), 16 deletions(-) diff --git a/src/python/dm/common/mongodb/api/datasetMongoDbApi.py b/src/python/dm/common/mongodb/api/datasetMongoDbApi.py index f8941374..5aef5f6e 100755 --- a/src/python/dm/common/mongodb/api/datasetMongoDbApi.py +++ b/src/python/dm/common/mongodb/api/datasetMongoDbApi.py @@ -15,7 +15,6 @@ from dm.common.objects.datasetMetadata import DatasetMetadata class DatasetMongoDbApi(DmMongoDbApi): SYSTEM_KEY_LIST = ['_id', '_datasetName', '_experimentName'] - IGNORE_CASE_KEY = '_ignoreCase' USE_DATASET_NAME_KEY = '_useDatasetName' USE_EXPERIMENT_NAME_KEY = '_useDatasetName' @@ -24,21 +23,6 @@ class DatasetMongoDbApi(DmMongoDbApi): self.datasetCollection = DatasetCollection(self.dbClient) self.fileMongoDbApi = FileMongoDbApi() - @classmethod - def convertStringsToRegex(cls, dict, ignoreCase=True): - dict2 = copy.copy(dict) - for (key,value) in dict2.items(): - if key in cls.SYSTEM_KEY_LIST: - continue - elif type(value) == types.StringType or type(value) == types.UnicodeType: - cls.getLogger().debug('Converting to regex: %s for key %s' % (value,key)) - if ignoreCase: - regex = re.compile(value, re.IGNORECASE) - else: - regex = re.compile(value) - dict2[key] = regex - return dict2 - @DmMongoDbApi.executeDbCall def addExperimentDataset(self, datasetInfo, **kwargs): datasetInfo2 = self.getMongoDict(datasetInfo) diff --git a/src/python/dm/common/mongodb/api/dmMongoDbApi.py b/src/python/dm/common/mongodb/api/dmMongoDbApi.py index b58d23de..338ae1aa 100755 --- a/src/python/dm/common/mongodb/api/dmMongoDbApi.py +++ b/src/python/dm/common/mongodb/api/dmMongoDbApi.py @@ -1,6 +1,9 @@ #!/usr/bin/env python import copy +import types +import re + from dm.common.exceptions.dmException import DmException from dm.common.utility.loggingManager import LoggingManager from dm.common.mongodb.impl.mongoDbManager import MongoDbManager @@ -9,6 +12,7 @@ class DmMongoDbApi: """ Base Mongo DB API class. """ SYSTEM_KEY_LIST = ['_id'] + IGNORE_CASE_KEY = '_ignoreCase' def __init__(self): self.logger = LoggingManager.getInstance().getLogger(self.__class__.__name__) @@ -72,6 +76,21 @@ class DmMongoDbApi: del mongoDict[key2] return mongoDict + @classmethod + def convertStringsToRegex(cls, dict, ignoreCase=True): + dict2 = copy.copy(dict) + for (key,value) in dict2.items(): + if key in cls.SYSTEM_KEY_LIST: + continue + elif type(value) == types.StringType or type(value) == types.UnicodeType: + cls.getLogger().debug('Converting to regex: %s for key %s' % (value,key)) + if ignoreCase: + regex = re.compile(value, re.IGNORECASE) + else: + regex = re.compile(value) + dict2[key] = regex + return dict2 + ####################################################################### # Testing. if __name__ == '__main__': diff --git a/src/python/dm/common/mongodb/api/fileMongoDbApi.py b/src/python/dm/common/mongodb/api/fileMongoDbApi.py index f022c93b..6254b4e2 100755 --- a/src/python/dm/common/mongodb/api/fileMongoDbApi.py +++ b/src/python/dm/common/mongodb/api/fileMongoDbApi.py @@ -1,6 +1,9 @@ #!/usr/bin/env python import copy +import types +import re + from dm.common.exceptions.dmException import DmException from dm.common.mongodb.api.dmMongoDbApi import DmMongoDbApi from dm.common.mongodb.impl.fileCollection import FileCollection @@ -24,6 +27,9 @@ class FileMongoDbApi(DmMongoDbApi): @DmMongoDbApi.executeDbCall def getFiles(self, queryDict={}, returnFieldDict=FileCollection.ALL_FIELDS_DICT, **kwargs): queryDict2 = self.getMongoDict(queryDict) + self.getLogger().debug('Converting query dict to regex patterns') + ignoreCase = kwargs.get(self.IGNORE_CASE_KEY, True) + queryDict2 = self.convertStringsToRegex(queryDict2, ignoreCase) return self.listToDmObjects(self.fileCollection.findByQueryDict(queryDict2, returnFieldDict), FileMetadata) @DmMongoDbApi.executeDbCall -- GitLab