package org.springframework.roo.file.undo;
import java.io.File;
import java.io.IOException;
import java.util.logging.Logger;
import org.apache.commons.lang3.Validate;
import org.springframework.roo.support.logging.HandlerUtils;
/**
* {@link UndoableOperation} to create a file.
*
* @author Ben Alex
* @since 1.0
*/
public class CreateFile implements UndoableOperation {
private static final Logger LOGGER = HandlerUtils.getLogger(CreateFile.class);
private final File actual;
private final FilenameResolver filenameResolver;
public CreateFile(final UndoManager undoManager, final FilenameResolver filenameResolver,
final File actual) {
Validate.notNull(undoManager, "Undo manager required");
Validate.notNull(actual, "Actual file required");
Validate.notNull(filenameResolver, "Filename resolver required");
Validate.isTrue(!actual.exists(), "Actual file '%s' cannot exist", actual);
this.filenameResolver = filenameResolver;
this.actual = actual;
try {
this.actual.createNewFile();
} catch (final IOException ioe) {
throw new IllegalStateException("Unable to create file '" + this.actual + "'", ioe);
}
undoManager.add(this);
}
public void reset() {}
public boolean undo() {
final boolean success = actual.delete();
LOGGER.fine((success ? "Undo create " : "Undo failed ")
+ filenameResolver.getMeaningfulName(actual));
return success;
}
}