#!/usr/bin/env python

from dm.ds_web_service.api.experimentRestApi import ExperimentRestApi
from dm.common.utility.configurationManager import ConfigurationManager
from dsWebServiceSessionCli import DsWebServiceSessionCli

class GetExperimentsCli(DsWebServiceSessionCli):
    def __init__(self):
        DsWebServiceSessionCli.__init__(self)
        self.addOption('', '--station', dest='stationName', help='Experiment station name, can also be set via DM_STATION_NAME environment variable.')

    def getStationName(self):
        stationName = self.options.stationName
        if not stationName:
            configManager = ConfigurationManager.getInstance()
            stationName = configManager.getStationName()
        return stationName

    def runCommand(self):
        self.parseArgs(usage="""
    dm-get-experiments [--station=STATIONNAME]

Description:
    Retrieves list of experiments for a given station. If station name is not provided, this command will return list of experiments for all stations (requires administrator privileges).
        """)
        api = ExperimentRestApi(self.getLoginUsername(), self.getLoginPassword(), self.getServiceHost(), self.getServicePort(), self.getServiceProtocol())
        stationName = self.getStationName()
        if not stationName:
            experiments = api.getExperiments()
        else:
            experiments = api.getExperimentsByStation(stationName)
        for experiment in experiments:
            print experiment.getDisplayString(self.getDisplayKeys(), self.getDisplayFormat())


#######################################################################
# Run command.
if __name__ == '__main__':
    cli = GetExperimentsCli()
    cli.run()