#!/usr/bin/env python
# -*- coding: utf-8 -*-
""" This module serves to build high level interface to use mission data
Author : Romain Dupuis """
import aidapy.data.mission.omni as omni
import aidapy.data.mission.mms as mms
import aidapy.data.mission.cluster as cluster
[docs]class Mission:
"""Docstring
"""
def __init__(self, mission_name, t_start, t_end):
self.concrete_mission = mission_factory.get_mission(mission_name,
t_start, t_end)
[docs] def download_data(self, data_types=None, probes=None, coords=None,
mode=None, frame=None):
"""Method at the Mission level to query data downloading
"""
if not self.concrete_mission:
raise ValueError('You must generate the mission before')
return self.concrete_mission.download_data(data_types, probes,
coords, mode, frame)
[docs] def get_info_on_mission(self):
"""Provide information on the mission
"""
# raise NotImplementedError()
self.concrete_mission.set_product_catalog()
return self.concrete_mission.get_mission_info()
[docs]class MissionFactory:
"""Docstring of MissionFactory
"""
def __init__(self):
self._mission_creators = {}
[docs] def register_mission(self, mission_name, mission_creator):
"""Add the implemented mission to the list of available cretors
"""
self._mission_creators[mission_name] = mission_creator
[docs] def get_mission(self, mission_name, t_start, t_end):
"""Provide the relevant mission object
"""
mission_created = self._mission_creators.get(mission_name)
if not mission_created:
raise ValueError('the mission {} is not yet implemented'.format(
mission_name))
return mission_created(t_start, t_end)
mission_factory = MissionFactory()
mission_factory.register_mission('omni', omni.Omni)
mission_factory.register_mission('mms', mms.Mms)
mission_factory.register_mission('cluster', cluster.Cluster)