package com.limegroup.gnutella;
import java.io.File;
import java.io.IOException;
/**
* IOException which can be thrown from {@link Downloader#setSaveLocation(File)}.
*/
public class SaveLocationException extends IOException {
/** Attempt to change save location that violates security rules, such as attempting directory traversal .*/
public static final int SECURITY_VIOLATION = 1;
/** Attempt to change save location too late to save file in new place */
public static final int FILE_ALREADY_SAVED = 2;
/** Attempt to change save location to a directory where files cannot be created */
public static final int DIRECTORY_NOT_WRITEABLE = 3;
/** Attempt to change save location to a non-existant directory */
public static final int DIRECTORY_DOES_NOT_EXIST = 4;
/** Attempt to change save location to a File that already exists */
public static final int FILE_ALREADY_EXISTS = 5;
/** Attempt to change save location to a file which is already reserved by another download */
public static final int FILE_IS_ALREADY_DOWNLOADED_TO = 6;
/** Attempt to change save location to a pre-existing file that isn't a regular file (such as a directory or device file) */
public static final int FILE_NOT_REGULAR = 7;
/** Attempt to change save directory to a "directory" that exists, but is not a directory */
public static final int NOT_A_DIRECTORY = 8;
/** IOException or other filesystem error while setting save location. */
public static final int FILESYSTEM_ERROR = 9;
/**
* Attempt to download the exact same file (urn, filename, size) while it is
* already being downloaded.
*/
public static final int FILE_ALREADY_DOWNLOADING = 10;
/**
* The error code of this exception.
*/
private int errorCode;
/**
* Handle to the file that caused the exception.
*/
private File file;
public SaveLocationException(int errorCode, File file) {
super("error code " + errorCode + ", file " + file);
this.errorCode = errorCode;
this.file = file;
}
/**
* Constructs a SaveLocationException for the specified error code.
* @param errorCode
* @param message optional more detailed message for debugging purposes
*/
public SaveLocationException(int errorCode, File file, String message) {
super(message);
this.errorCode = errorCode;
this.file = file;
}
/**
* Returns the error code of this exception.
* @return
*/
public int getErrorCode() {
return errorCode;
}
public File getFile() {
return file;
}
}