package net.sourceforge.cruisecontrol.logmanipulators;
import net.sourceforge.cruisecontrol.util.DateUtil;
import net.sourceforge.cruisecontrol.util.IO;
import java.io.FilenameFilter;
import java.io.File;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.text.ParseException;
import org.apache.log4j.Logger;
/**
* Delete old build artifacts.
* @author Dan Rollo
* Date: May 29, 2008
* Time: 11:44:45 PM
*/
public class DeleteArtifactsManipulator extends BaseManipulator {
private static final Logger LOG = Logger.getLogger(DeleteArtifactsManipulator.class);
private static final SimpleDateFormat FORMATTER = new SimpleDateFormat(DateUtil.SIMPLE_DATE_FORMAT);
protected FilenameFilter getFilenameFilter(final Date logdate, final boolean ignoreSuffix) {
return new ArtifactFilter(logdate);
}
private class ArtifactFilter implements FilenameFilter {
private final Date logdate;
public ArtifactFilter(final Date logdate) {
this.logdate = logdate;
}
public boolean accept(final File dir, final String name) {
if (name.startsWith("log")) {
return false;
}
final Date artifactDirDate;
try {
artifactDirDate = FORMATTER.parse(name);
} catch (ParseException e) {
return false;
}
if (artifactDirDate.before(logdate)) {
final File checkArtifactDir = new File(dir, name);
return checkArtifactDir.exists() && checkArtifactDir.isDirectory();
}
return false;
}
}
public void execute(final String logDir) {
File[] deleteFiles = getRelevantFiles(logDir, true);
for (int i = 0; i < deleteFiles.length; i++) {
LOG.debug("Deleting artifacts directory: " + deleteFiles[i].getAbsolutePath());
IO.delete(deleteFiles[i]);
}
}
}