import os
import json
import utils.device
from .pano_dataset import PanoDataset
from .view_dataset import ViewDataset


class DatasetFactory(object):

    @staticmethod
    def load(path, device=None, **kwargs):
        device = device or utils.device.default()
        data_dir = os.path.dirname(path)
        with open(path, 'r', encoding='utf-8') as file:
            data_desc = json.loads(file.read())
        cwd = os.getcwd()
        os.chdir(data_dir)
        if 'type' in data_desc and data_desc['type'] == 'pano':
            dataset = PanoDataset(data_desc, device=device, **kwargs)
        else:
            dataset = ViewDataset(data_desc, device=device, **kwargs)
        os.chdir(cwd)
        return dataset