#!/usr/bin/env python # # Implementation for experiment session controller. # import time from dm.common.objects.experiment import Experiment from dm.common.objects.dmObjectManager import DmObjectManager from dm.common.exceptions.invalidRequest import InvalidRequest from dm.common.db.api.experimentDbApi import ExperimentDbApi from dm.ds_web_service.service.impl.experimentManager import ExperimentManager class ExperimentSessionControllerImpl(DmObjectManager): """ Experiment session controller implementation class. """ def __init__(self): DmObjectManager.__init__(self) self.experimentDbApi = ExperimentDbApi() def getExperimentTypes(self): experimentTypeList = self.experimentDbApi.getExperimentTypes() return experimentTypeList def getExperiments(self): experimentList = self.experimentDbApi.getExperiments() return experimentList def getExperimentsByStation(self, stationName): experimentList = self.experimentDbApi.getExperimentsByStation(stationName) return experimentList def getExperimentByName(self, name): experiment = self.experimentDbApi.getExperimentWithUsers(name) ExperimentManager.getInstance().updateExperimentWithStorageDataDirectory(experiment) return experiment def getExperimentById(self, id): experiment = self.experimentDbApi.getExperimentById(id) ExperimentManager.getInstance().updateExperimentWithStorageDataDirectory(experiment) return experiment def addExperiment(self, name, stationName, typeId, description, startDate, endDate): experiment = self.experimentDbApi.addExperiment(name, stationName, typeId, description, startDate, endDate) ExperimentManager.getInstance().createExperimentDataDirectory(experiment) return experiment def startExperiment(self, experiment): experiment2 = self.experimentDbApi.setExperimentStartDateToNow(experiment['name']) experiment['startDate'] = experiment2['startDate'] return experiment def updateExperiment(self, experiment): ExperimentManager.getInstance().updateExperimentGroupUsers(experiment) return experiment def stopExperiment(self, experiment): experiment = self.experimentDbApi.setExperimentEndDateToNow(experiment['name']) ExperimentManager.getInstance().updateExperimentWithStorageDataDirectory(experiment) return experiment def authorizeDownload(self, username, experiment): return ExperimentManager.getInstance().authorizeDownload(username, experiment) def deauthorizeDownload(self, username, experiment): return ExperimentManager.getInstance().deauthorizeDownload(username, experiment)