#!/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 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, experimentTypeId, description): experiment = self.experimentDbApi.addExperiment(name, experimentTypeId, description) return experiment def startExperiment(self, name): experiment = self.experimentDbApi.getExperimentWithUsers(name) if experiment.get('startDate') is None: experiment2 = self.experimentDbApi.setExperimentStartDateToNow(name) experiment['startDate'] = experiment2['startDate'] ExperimentManager.getInstance().createExperimentDataDirectory(experiment) return experiment def stopExperiment(self, name): experiment = self.experimentDbApi.getExperimentByName(name) if experiment.get('endDate') is None: experiment = self.experimentDbApi.setExperimentEndDateToNow(name) ExperimentManager.getInstance().updateExperimentWithStorageDataDirectory(experiment) return experiment