diff --git a/src/python/dm/common/mongodb/api/datasetMongoDbApi.py b/src/python/dm/common/mongodb/api/datasetMongoDbApi.py index f89413746b2130231fc9b0150baa221aa4b73348..5aef5f6e9564a665e1bbb34afb8ad4b922d4835a 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 b58d23deffb212ddde2cdade8c90c27efa5e0e2f..338ae1aa1a2a37935b94141a9899e6b173871b21 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 f022c93bf5f596b018e7718ecd9ae92fc155c129..6254b4e27fea8f6afa86082d05bfa8cac5d2b369 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