#!/usr/bin/env python

import cherrypy

from dm.common.service.dmSessionController import DmSessionController
from dm.common.exceptions.invalidRequest import InvalidRequest
from dm.common.utility.encoder import Encoder

from dm.daq_web_service.service.impl.experimentSessionControllerImpl import ExperimentSessionControllerImpl


class ExperimentSessionController(DmSessionController):

    def __init__(self):
        DmSessionController.__init__(self)
        self.experimentSessionControllerImpl = ExperimentSessionControllerImpl()

    @cherrypy.expose
    @DmSessionController.require(DmSessionController.isLoggedIn())
    @DmSessionController.execute
    def startDaq(self, **kwargs):
        name = kwargs.get('name')
        if name is None or not len(name):
            raise InvalidRequest('Missing experiment name.')
        name = Encoder.decode(name)
        dataDirectory = kwargs.get('dataDirectory')
        if dataDirectory is None or not len(dataDirectory):
            raise InvalidRequest('Missing experiment data directory.')
        dataDirectory = Encoder.decode(dataDirectory)
        response = self.experimentSessionControllerImpl.startDaq(name, dataDirectory).getFullJsonRep()
        self.logger.debug('Returning: %s' % response)
        return response

    @cherrypy.expose
    @DmSessionController.require(DmSessionController.isLoggedIn())
    @DmSessionController.execute
    def stopDaq(self, **kwargs):
        name = kwargs.get('name')
        if name is None or not len(name):
            raise InvalidRequest('Missing experiment name.')
        name = Encoder.decode(name)
        response = self.experimentSessionControllerImpl.stopDaq(name).getFullJsonRep()
        self.logger.debug('Returning: %s' % response)
        return response