Somewhat better DiskCorruptException handling. Avoiding redundancy.

This commit is contained in:
Lisias 2018-01-08 09:05:30 -02:00
parent f3316262c8
commit 144841a296
3 changed files with 10 additions and 6 deletions

View File

@ -31,13 +31,17 @@ public class DiskCorruptException extends DiskException {
private static final long serialVersionUID = 0xFFFFFFFF80000000L;
public enum Kind {
RECURSIVE_DIRECTORY_STRUCTURE
RECURSIVE_DIRECTORY_STRUCTURE {
public String toString() {
return "Recursive Directory structure detected."; // FIXME NLS
};
}
}
final public Kind kind;
final public Object offender;
private DiskCorruptException(String description) {
private DiskCorruptException(final String description) {
super(description);
this.kind = null;
this.offender = null;
@ -46,8 +50,8 @@ public class DiskCorruptException extends DiskException {
/**
* Constructor for DiskFullException.
*/
public DiskCorruptException(String description, Kind kind, Object offender) {
super(description);
public DiskCorruptException(final Kind kind, final Object offender) {
super(kind.toString());
this.kind = kind;
this.offender = offender;
}

View File

@ -152,7 +152,7 @@ public class DosFormatDisk extends FormattedDisk {
// Prevents a recursive catalog crawling.
final DosSectorAddress address = new DosSectorAddress(track, sector);
if ( visits.contains(address)) throw new DiskCorruptException("Recursive Directory structure detected.", DiskCorruptException.Kind.RECURSIVE_DIRECTORY_STRUCTURE, address);
if ( visits.contains(address)) throw new DiskCorruptException(DiskCorruptException.Kind.RECURSIVE_DIRECTORY_STRUCTURE, address);
else visits.add(address);
byte[] catalogSector = readSector(track, sector);

View File

@ -278,7 +278,7 @@ public class ProdosFormatDisk extends FormattedDisk {
final Set<Integer> visits = new HashSet<>();
while (blockNumber != 0) {
// Prevents a recursive catalog crawling.
if ( visits.contains(blockNumber)) throw new DiskCorruptException("Recursive Directory structure detected.", DiskCorruptException.Kind.RECURSIVE_DIRECTORY_STRUCTURE, new ProdosBlockAddress(blockNumber));
if ( visits.contains(blockNumber)) throw new DiskCorruptException(DiskCorruptException.Kind.RECURSIVE_DIRECTORY_STRUCTURE, new ProdosBlockAddress(blockNumber));
else visits.add(blockNumber);
byte[] block = readBlock(blockNumber);