#!/usr/bin/env python

#
# Dataset route descriptor.
#

from dm.common.utility.configurationManager import ConfigurationManager
from datasetSessionController import DatasetSessionController

class DatasetRouteDescriptor:

    @classmethod
    def getRoutes(cls):
        contextRoot = ConfigurationManager.getInstance().getContextRoot()

        # Static instances shared between different routes
        datasetSessionController = DatasetSessionController()

        # Define routes.
        routes = [

            # Add experiment dataset
            {
                'name' : 'addExperimentDataset',
                'path' : '%s/datasetsByExperiment/:(experimentName)/:(datasetName)' % contextRoot,
                'controller' : datasetSessionController,
                'action' : 'addExperimentDataset',
                'method' : ['POST']
            },

            # Update dataset by id
            {
                'name' : 'updateDatasetById',
                'path' : '%s/datasets/:(id)' % contextRoot,
                'controller' : datasetSessionController,
                'action' : 'updateDatasetById',
                'method' : ['PUT']
            },

            # Update experiment dataset by name
            {
                'name' : 'updateExperimentDataset',
                'path' : '%s/datasetsByExperiment/:(experimentName)/:(datasetName)' % contextRoot,
                'controller' : datasetSessionController,
                'action' : 'updateExperimentDataset',
                'method' : ['PUT']
            },

            # Get dataset info list
            {
                'name' : 'getDatasets',
                'path' : '%s/datasets' % contextRoot,
                'controller' : datasetSessionController,
                'action' : 'getDatasets',
                'method' : ['GET']
            },

            # Get experiment dataset info list 
            {
                'name' : 'getExperimentDatasets',
                'path' : '%s/datasetsByExperiment/:(experimentName)' % contextRoot,
                'controller' : datasetSessionController,
                'action' : 'getExperimentDatasets',
                'method' : ['GET']
            },

            # Get dataset by id
            {
                'name' : 'getDatasetById',
                'path' : '%s/datasets/:(id)' % contextRoot,
                'controller' : datasetSessionController,
                'action' : 'getDatasetById',
                'method' : ['GET']
            },

            # Get experiment dataset by name
            {
                'name' : 'getExperimentDataset',
                'path' : '%s/datasetsByExperiment/:(experimentName)/:(datasetName)' % contextRoot,
                'controller' : datasetSessionController,
                'action' : 'getExperimentDataset',
                'method' : ['GET']
            },

            # Get experiment dataset files
            {
                'name' : 'getExperimentDatasetFiles',
                'path' : '%s/filesByExperimentDataset/:(experimentName)/:(datasetName)' % contextRoot,
                'controller' : datasetSessionController,
                'action' : 'getExperimentDatasetFiles',
                'method' : ['GET']
            },


        ]
       
        return routes