#!/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.objects.directoryMetadata import DirectoryMetadata 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, experiment=None): experimentFilePath = fileInfo.get('experimentFilePath') if not experiment: experimentName = fileInfo.get('experimentName') experiment = self.experimentDbApi.getExperimentByName(experimentName) ExperimentManager.getInstance().statExperimentFile(experimentFilePath, experiment, fileInfo) return FileMetadata(fileInfo) def processDirectory(self, directoryInfo): experimentDirectoryPath = directoryInfo.get('experimentDirectoryPath', '') experimentName = directoryInfo.get('experimentName') experiment = self.experimentDbApi.getExperimentByName(experimentName) ExperimentManager.getInstance().processExperimentDirectory(experimentDirectoryPath, experiment, directoryInfo) return DirectoryMetadata(directoryInfo)