package eu.dnetlib.data.espas.dataprovider;

import eu.dnetlib.api.data.espas.DataProviderService;
import eu.dnetlib.api.data.espas.DataProviderServiceException;
import eu.dnetlib.domain.data.espas.HarvestHistory;
import eu.dnetlib.domain.data.espas.HarvestSchedule;
import gr.uoa.di.driver.app.DriverServiceImpl;
import org.apache.log4j.Logger;

import java.util.Date;
import java.util.List;


/**
 * Created by antleb on 6/21/14.
 */
public class DataProviderServiceImpl extends DriverServiceImpl implements DataProviderService {

	private static Logger logger = Logger.getLogger(DataProviderServiceImpl.class);

	private DataProviderServiceCore serviceCore;

	private String dbUrl;

	public void init() {
		super.init();
	}

	@Override
	public void harvest(List<String> types, Date dateFrom, Date dateTo, String dataProviderId) throws DataProviderServiceException {
		serviceCore.harvest(types, dateFrom, dateTo, dataProviderId);
	}

	@Override
	public String scheduleHarvest(List<String> types, Date initialModificationDate, String dataProviderId, String cronExpression) throws DataProviderServiceException {
		return serviceCore.scheduleHarvest(types, initialModificationDate, dataProviderId, cronExpression);
	}

	@Override
	public void updateHarvestSchedule(String scheduleId, List<String> types, String dataProviderId, String cronExpression) throws DataProviderServiceException {
		serviceCore.updateHarvestSchedule(scheduleId, types, dataProviderId, cronExpression);
	}

	@Override
	public void pauseHarvestSchedule(String scheduleId) throws DataProviderServiceException {
		serviceCore.pauseHarvestSchedule(scheduleId);
	}

	@Override
	public void resumeHarvestScedule(String scheduleId) throws DataProviderServiceException {
		serviceCore.resumeHarvestScedule(scheduleId);
	}

	@Override
	public void cancelHarvestSchedule(String scheduleId) throws DataProviderServiceException {
		serviceCore.cancelHarvestSchedule(scheduleId);
	}

	@Override
	public List<HarvestSchedule> getHarvestSchedules(String dataProviderId) throws DataProviderServiceException {
		return serviceCore.getHarvestSchedules(dataProviderId);
	}

	@Override
	public List<HarvestHistory> getHarvestHistory(String dataProviderId) throws DataProviderServiceException {
		return serviceCore.getHarvestHistory(dataProviderId);
	}

	@Override
	public void deleteHarvestHistory(String dataProviderId, Date from, Date to) throws DataProviderServiceException {
		serviceCore.deleteHarvestHistory(dataProviderId, from, to);
	}

	@Override
	public void deleteHarvestHistory(List<String> harvestIds) throws DataProviderServiceException {
		serviceCore.deleteHarvestHistory(harvestIds);
	}

	public DataProviderServiceCore getServiceCore() {
		return serviceCore;
	}

	public void setServiceCore(DataProviderServiceCore serviceCore) {
		this.serviceCore = serviceCore;
	}

	public String getDbUrl() {
		return dbUrl;
	}

	public void setDbUrl(String dbUrl) {
		this.dbUrl = dbUrl;
	}
}