Skip to content
Snippets Groups Projects
Commit ad44e07c authored by sveseli's avatar sveseli
Browse files

move regex utility to base api class

parent b5aa4b70
No related branches found
No related tags found
No related merge requests found
......@@ -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)
......
#!/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__':
......
#!/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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment