package eu.eudat.logic.services.operations;

import eu.eudat.elastic.repository.DatasetRepository;
import eu.eudat.logic.builders.BuilderFactory;
import eu.eudat.logic.proxy.fetching.RemoteFetcher;
import eu.eudat.logic.services.helpers.FileStorageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Service;

/**
 * Created by ikalyvas on 3/1/2018.
 */
@Service("operationsContext")
public class OperationsContextImpl implements OperationsContext {

    private DatabaseRepository databaseRepository;
    private ApplicationContext applicationContext;
    private RemoteFetcher remoteFetcher;
    private BuilderFactory builderFactory;
    private FileStorageService fileStorageService;
    private DatasetRepository datasetRepository;

    @Autowired
    public OperationsContextImpl(DatabaseRepository databaseRepository, ApplicationContext applicationContext, RemoteFetcher remoteFetcher
            , BuilderFactory builderFactory, FileStorageService fileStorageService, DatasetRepository datasetRepository) {
        this.databaseRepository = databaseRepository;
        this.applicationContext = applicationContext;
        this.remoteFetcher = remoteFetcher;
        this.builderFactory = builderFactory;
        this.fileStorageService = fileStorageService;
        this.datasetRepository = datasetRepository;
    }

    @Override
    public DatabaseRepository getDatabaseRepository() {
        return databaseRepository;
    }

    @Override
    public ApplicationContext getApplicationContext() {
        return applicationContext;
    }

    @Override
    public RemoteFetcher getRemoteFetcher() {
        return remoteFetcher;
    }

    @Override
    public BuilderFactory getBuilderFactory() {
        return builderFactory;
    }

    @Override
    public FileStorageService getFileStorageService() {
        return fileStorageService;
    }

    @Override
    public DatasetRepository getDatasetRepository() {
        return datasetRepository;
    }

    public void setDatasetRepository(DatasetRepository datasetRepository) {
        this.datasetRepository = datasetRepository;
    }
}
