#!/usr/bin/env python

#
# Implementation for file session controller.
#

import time

from dm.common.objects.dmObjectManager import DmObjectManager
from dm.common.exceptions.invalidRequest import InvalidRequest
from dm.common.objects.fileMetadata import FileMetadata
from dm.common.db.api.experimentDbApi import ExperimentDbApi
from dm.ds_web_service.service.impl.experimentManager import ExperimentManager

class FileSessionControllerImpl(DmObjectManager):
    """ File session controller implementation class. """

    def __init__(self):
        DmObjectManager.__init__(self)
        self.experimentDbApi = ExperimentDbApi()

    def processFile(self, fileInfo):
        experimentFilePath = fileInfo.get('experimentFilePath')
        experimentName = fileInfo.get('experimentName')
        experiment = self.experimentDbApi.getExperimentByName(experimentName)
        ExperimentManager.getInstance().processExperimentFile(experimentFilePath, experiment, fileInfo)
        return FileMetadata(fileInfo)

    def statFile(self, fileInfo):
        experimentFilePath = fileInfo.get('experimentFilePath')
        experimentName = fileInfo.get('experimentName')
        experiment = self.experimentDbApi.getExperimentByName(experimentName)
        ExperimentManager.getInstance().statExperimentFile(experimentFilePath, experiment, fileInfo)
        return FileMetadata(fileInfo)