package org.kuali.kfs.sys.batch;
import org.apache.commons.io.FileUtils;
import org.kuali.kfs.sys.context.SpringContext;
import org.kuali.rice.core.api.config.property.ConfigurationService;
import java.io.File;
import java.io.IOException;
/**
* Helper class to build up a batch directory and then tear it down when it is no longer needed. To create a directory, call setUp; to remove
* the directory, just call tearDown.
*/
public class BatchDirectoryHelper {
private static org.slf4j.Logger LOG = org.slf4j.LoggerFactory.getLogger(BatchDirectoryHelper.class);
private String module;
private String directoryName;
private boolean batchFileDirectoryCreated = false;
private volatile static ConfigurationService configurationService;
public BatchDirectoryHelper(String module, String directoryName) {
this.module = module;
this.directoryName = directoryName;
}
public void createBatchDirectory() {
File batchFileDirectory = new File(getBatchFileDirectoryName());
if (!batchFileDirectory.exists()) {
batchFileDirectory.mkdir();
batchFileDirectoryCreated = true;
}
}
public void removeBatchDirectory() {
if (batchFileDirectoryCreated) {
try {
File batchDirectoryFile = new File(getBatchFileDirectoryName());
FileUtils.deleteDirectory(batchDirectoryFile);
batchFileDirectoryCreated = false;
} catch (IOException e) {
LOG.error("Could not remove batch directory for test");
throw new RuntimeException(e);
}
}
}
public String getBatchFileDirectoryName() {
String stagingDirectory = SpringContext.getBean(ConfigurationService.class).getPropertyValueAsString("staging.directory");
return stagingDirectory + File.separator + this.module + File.separator + this.directoryName;
}
private ConfigurationService getConfigurationService() {
if (this.configurationService == null) {
configurationService = SpringContext.getBean(ConfigurationService.class);
}
return configurationService;
}
}