package com.sap.pto.jobs;
import java.io.IOException;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.client.ClientProtocolException;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.sap.pto.adapters.ConnectivityAdapter;
import com.sap.pto.importers.OptaMatchImporter;
import com.sap.pto.importers.OptaPreviewImporter;
import com.sap.pto.importers.OptaStatsImporter;
import com.sap.pto.importers.OptaTeamImporter;
@DisallowConcurrentExecution
public class ImporterJob implements Job {
private static final Logger logger = LoggerFactory.getLogger(ImporterJob.class);
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
logger.info("Starting data import.");
try {
String content = ConnectivityAdapter.fetchContent("opta", "filelist");
String[] files = StringUtils.split(content);
for (int i = 0; i < files.length; i++) {
content = ConnectivityAdapter.fetchContent("opta", files[i]);
try {
if (files[i].endsWith("-results.xml")) {
new OptaMatchImporter().importData(content);
} else if (files[i].endsWith("-squads.xml")) {
new OptaTeamImporter().importData(content);
} else if (files[i].endsWith("-matchpreview.xml")) {
new OptaPreviewImporter().importData(content);
} else if (files[i].contains("seasonstats-")) {
new OptaStatsImporter().importData(content);
}
} catch (IOException e) {
logger.error("Could not import file '" + files[i] + "'.", e);
}
}
} catch (ClientProtocolException e) {
logger.error("Could not get connect to server.", e);
} catch (IOException e) {
logger.error("Could not connect to server.", e);
}
logger.info("Data import is done.");
}
}