package net.sourceforge.cruisecontrol.util;
import java.io.File;
import java.io.Serializable;
import net.sourceforge.cruisecontrol.CruiseControlException;
public class Directory implements Serializable {
private static final long serialVersionUID = -6515402321994084452L;
private File directory;
public void validate() throws CruiseControlException {
if (directory == null) {
throw new DirectoryNotSpecifiedException("directory");
}
if (!exists()) {
throw new DirectoryDoesNotExistException();
}
if (!isDirectory()) {
throw new FileInsteadOfDirectoryException();
}
}
public boolean exists() {
return directory.exists();
}
public boolean isDirectory() {
return directory.exists();
}
public class DirectoryDoesNotExistException extends CruiseControlException {
private static final long serialVersionUID = 6771576254394012295L;
DirectoryDoesNotExistException() {
super(directory.getPath() + " does not exist");
}
}
public class FileInsteadOfDirectoryException extends CruiseControlException {
private static final long serialVersionUID = -2942484775758926441L;
FileInsteadOfDirectoryException() {
super(directory.getPath() + " is a file instead of a directory");
}
}
public static class DirectoryNotSpecifiedException extends CruiseControlException {
private static final long serialVersionUID = 2547984652559538524L;
public DirectoryNotSpecifiedException(String attributeName) {
super(attributeName + " must be specified");
}
}
public void setPath(String path) {
directory = new File(path);
}
public File toFile() {
return directory;
}
}