#!/usr/bin/env python

from dm.common.utility.loggingManager import LoggingManager
from dm.common.exceptions.invalidArgument import InvalidArgument
from dm.common.exceptions.objectAlreadyExists import ObjectAlreadyExists
from dm.common.exceptions.objectNotFound import ObjectNotFound
from dm.common.exceptions.dbError import DbError
from dmMongoCollection import DmMongoCollection

class FileCollection(DmMongoCollection):
    """Class responsible for updating file collection in mongo db."""

    UNIQUE_KEYS_LIST = [ 'experimentFilePath', 'experimentName' ]
    NAME_KEY = 'experimentFilePath'
    ITEM_TYPE = 'file'

    def __init__(self, dbClient, experimentName=None):
        collectionName = 'files'
        if experimentName:
            collectionName = '%s-files' % experimentName
        DmMongoCollection.__init__(self, collectionName, dbClient)

#######################################################################
# Testing
if __name__ == '__main__':
    from dmMongoClient import DmMongoClient
    mongo = DmMongoClient('dm')
    fileCollection = FileCollection(mongo, 'exp01')
    fileInfo = {'fileName' : 'xyz-001', 'experimentName' : 'exp01', 'update' : 'sv2', 'locationList' : '[/opt/xyz, /data/xyz]', 'experimentFilePath' : 'd1/xyz-001'}
    print fileCollection.addByUniqueKeys(fileInfo)
    #print type(fileCollection.findByName('xyz-001'))
    print fileCollection.findByQueryDict({'experimentName' : 'exp01'}, {'locationList' : 1})
    fileInfo['owner'] = 'ddm1'
    print fileCollection.updateByUniqueKeys(fileInfo)