package edu.unc.lib.deposit;
import java.io.File;
import java.io.IOException;
import java.util.Map;
import org.apache.commons.io.FileUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import edu.unc.lib.deposit.work.AbstractDepositJob;
import edu.unc.lib.dl.util.RedisWorkerConstants.DepositField;
import edu.unc.lib.dl.util.DepositConstants;
import edu.unc.lib.dl.util.DepositStatusFactory;
import edu.unc.lib.dl.util.PremisEventLogger.Type;
import edu.unc.lib.dl.util.RedisWorkerConstants.DepositField;
public class PrepareResubmitJob extends AbstractDepositJob {
private static final Logger LOG = LoggerFactory.getLogger(CleanupDepositJob.class);
public PrepareResubmitJob() {
}
public PrepareResubmitJob(String uuid, String depositUUID) {
super(uuid, depositUUID);
}
@Override
public void runJob() {
String uuid = getDepositUUID();
Map<String, String> status = getDepositStatus();
File resubmitDir = new File(getDepositsDirectory(), status.get(DepositField.resubmitDirName.name()));
File backupDir = new File(resubmitDir, DepositConstants.RESUBMIT_BACKUP_DIR);
File depositDirectory = getDepositDirectory();
// Swap directories: existing deposit directory becomes backup directory inside resubmit directory,
// resubmit directory becomes former deposit directory.
depositDirectory.renameTo(backupDir);
resubmitDir.renameTo(depositDirectory);
// Set isResubmit flag, update the fileName, and remove resubmit fields.
DepositStatusFactory depositStatusFactory = getDepositStatusFactory();
depositStatusFactory.set(uuid, DepositField.isResubmit, "true");
depositStatusFactory.set(uuid, DepositField.fileName, status.get(DepositField.resubmitFileName.name()));
depositStatusFactory.deleteField(uuid, DepositField.resubmitDirName);
depositStatusFactory.deleteField(uuid, DepositField.resubmitFileName);
// Destroy our model, since we'll recreate it in later steps
this.destroyModel();
}
}