package uk.ac.ox.zoo.seeg.abraid.mp.publicsite.web.tools; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import uk.ac.ox.zoo.seeg.abraid.mp.common.AbstractAsynchronousActionHandler; import uk.ac.ox.zoo.seeg.abraid.mp.common.domain.DiseaseGroup; import java.util.concurrent.Callable; import java.util.concurrent.Future; /** * Asynchronous wrapper for UploadCsvControllerHelper. * * Copyright (c) 2014 University of Oxford */ public class UploadCsvControllerHelperAsyncWrapper extends AbstractAsynchronousActionHandler { private static final Logger LOGGER = Logger.getLogger(UploadCsvController.class); private static final int THREAD_POOL_SIZE = 1; private UploadCsvControllerHelper uploadCsvControllerHelper; @Autowired public UploadCsvControllerHelperAsyncWrapper(UploadCsvControllerHelper uploadCsvControllerHelper) { super(THREAD_POOL_SIZE, LOGGER); this.uploadCsvControllerHelper = uploadCsvControllerHelper; } /** * Acquires the supplied CSV data. Sends an e-mail when completed (either successfully or unsuccessfully). * * @param csv The contents of the CSV file to upload. * @param isBias Whether or not this is a "bias" data set. * @param isGoldStandard Whether or not this is a "gold standard" data set (only relevant for non-bias data sets). * @param biasDisease The ID of the disease for which this is a bias data set (only relevant for bias data sets). * @param userEmailAddress The e-mail address of the user that submitted the upload. * @param filePath The full path to the file to upload (used for information only). * @return A future for the background operation. */ public Future acquireCsvData(final byte[] csv, final boolean isBias, final boolean isGoldStandard, final DiseaseGroup biasDisease, final String userEmailAddress, final String filePath) { return submitAsynchronousTask(new Callable<Void>() { @Override public Void call() throws Exception { try { uploadCsvControllerHelper.acquireCsvData( csv, isBias, isGoldStandard, biasDisease, userEmailAddress, filePath); } catch (Exception e) { LOGGER.error(e.getMessage(), e); } return null; } }); } }