com.webcodepro.applecommander.storage.os.dos33
Class DosFileEntry

java.lang.Object
  extended by com.webcodepro.applecommander.storage.os.dos33.DosFileEntry
All Implemented Interfaces:
FileEntry

public class DosFileEntry
extends java.lang.Object
implements FileEntry

Represents a DOS file entry on disk.

Date created: Oct 4, 2002 5:15:25 PM

Author:
Rob Greene

Field Summary
static int FILE_DESCRIPTIVE_ENTRY_LENGTH
          Indicates the length in bytes of the DOS file entry field.
 
Constructor Summary
DosFileEntry(DosFormatDisk disk, int track, int sector, int offset)
          Constructor for DosFileEntry.
 
Method Summary
 boolean canCompile()
          Indicates that this filetype can be compiled.
 void delete()
          Delete this file.
 java.util.List getFileColumnData(int displayMode)
          Get the standard file column header information.
 byte[] getFileData()
          Get file data.
 java.lang.String getFilename()
          Return the name of this file.
 java.lang.String getFiletype()
          Return the filetype of this file.
 FormattedDisk getFormattedDisk()
          Get the FormattedDisk associated with this FileEntry.
 int getMaximumFilenameLength()
          Return the maximum filename length.
 int getSector()
          Get the sector of first track/sector list sector.
 int getSectorsUsed()
          Compute the number of sectors used.
 int getSize()
          Compute the size of this file (in bytes).
 FileFilter getSuggestedFilter()
          Get the suggested FileFilter.
 int getTrack()
          Get the track of first track/sector list sector.
 boolean isApplesoftBasicFile()
          Determine if this is an Applesoft BASIC file.
 boolean isAssemblySourceFile()
          Determine if this is an assembly source code file.
 boolean isBinaryFile()
          Determine if this is a binary file.
 boolean isDeleted()
          Identify if this file has been deleted.
 boolean isDirectory()
          Identify if this is a directory file.
 boolean isIntegerBasicFile()
          Determine if this is an Integer BASIC file.
 boolean isLocked()
          Identify if this file is locked.
 boolean isTextFile()
          Determine if this is a text file.
 boolean needsAddress()
          Indicates if this filetype requires an address component.
protected  byte[] readFileEntry()
          Read the FileEntry from the disk image.
 void setAddress(int address)
          Set the address that this file loads at.
 void setFileData(byte[] data)
          Set the file data.
 void setFilename(java.lang.String filename)
          Set the name of this file.
 void setFiletype(java.lang.String filetype)
          Set the filetype.
 void setLocked(boolean lock)
          Set the lock indicator.
 void setSector(int sector)
          Set the sector of the first track/sector list sector.
 void setSectorsUsed(int sectorsUsed)
          Set the number of sectors used.
 void setTrack(int track)
          Set the track of the first track/sector list sector.
protected  void writeFileEntry(byte[] fileEntry)
          Write the FileEntry to the disk image.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

FILE_DESCRIPTIVE_ENTRY_LENGTH

public static final int FILE_DESCRIPTIVE_ENTRY_LENGTH
Indicates the length in bytes of the DOS file entry field.

See Also:
Constant Field Values
Constructor Detail

DosFileEntry

public DosFileEntry(DosFormatDisk disk,
                    int track,
                    int sector,
                    int offset)
Constructor for DosFileEntry.

Method Detail

readFileEntry

protected byte[] readFileEntry()
Read the FileEntry from the disk image.


writeFileEntry

protected void writeFileEntry(byte[] fileEntry)
Write the FileEntry to the disk image.


getMaximumFilenameLength

public int getMaximumFilenameLength()
Return the maximum filename length.

Specified by:
getMaximumFilenameLength in interface FileEntry

getFilename

public java.lang.String getFilename()
Return the name of this file.

Specified by:
getFilename in interface FileEntry
See Also:
FileEntry.getFilename()

setFilename

public void setFilename(java.lang.String filename)
Set the name of this file.

Specified by:
setFilename in interface FileEntry

getFiletype

public java.lang.String getFiletype()
Return the filetype of this file.

Specified by:
getFiletype in interface FileEntry
See Also:
FileEntry.getFiletype()

setFiletype

public void setFiletype(java.lang.String filetype)
Set the filetype.

Specified by:
setFiletype in interface FileEntry

isLocked

public boolean isLocked()
Identify if this file is locked.

Specified by:
isLocked in interface FileEntry
See Also:
FileEntry.isLocked()

setLocked

public void setLocked(boolean lock)
Set the lock indicator.

Specified by:
setLocked in interface FileEntry

getSize

public int getSize()
Compute the size of this file (in bytes).

Specified by:
getSize in interface FileEntry
See Also:
FileEntry.getSize()

getSectorsUsed

public int getSectorsUsed()
Compute the number of sectors used.


setSectorsUsed

public void setSectorsUsed(int sectorsUsed)
Set the number of sectors used.


isDirectory

public boolean isDirectory()
Identify if this is a directory file.

Specified by:
isDirectory in interface FileEntry
See Also:
FileEntry.isDirectory()

isDeleted

public boolean isDeleted()
Identify if this file has been deleted.

Specified by:
isDeleted in interface FileEntry
See Also:
FileEntry.isDeleted()

delete

public void delete()
Delete this file.

Specified by:
delete in interface FileEntry

getFileColumnData

public java.util.List getFileColumnData(int displayMode)
Get the standard file column header information. This default implementation is intended only for standard mode. displayMode is specified in FormattedDisk.

Specified by:
getFileColumnData in interface FileEntry

getTrack

public int getTrack()
Get the track of first track/sector list sector.


setTrack

public void setTrack(int track)
Set the track of the first track/sector list sector.


getSector

public int getSector()
Get the sector of first track/sector list sector.


setSector

public void setSector(int sector)
Set the sector of the first track/sector list sector.


getFileData

public byte[] getFileData()
Get file data. This handles any operating-system specific issues. Specifically, DOS 3.3 places address and length into binary files and length into Applesoft files.

Specified by:
getFileData in interface FileEntry

setFileData

public void setFileData(byte[] data)
                 throws DiskFullException
Set the file data. This is essentially the save operation. Specifically, if the filetype is binary, the length and address need to be set. If the filetype is applesoft or integer basic, the start address needs to be set. Note: The address can be set before the data is saved or after the data is saved. This is an attempt to make the API more easily usable. Empirically, the data must be set before the address is set.

Specified by:
setFileData in interface FileEntry
Throws:
DiskFullException

getSuggestedFilter

public FileFilter getSuggestedFilter()
Get the suggested FileFilter. This appears to be operating system specific, so each operating system needs to implement some manner of guessing the appropriate filter. FIXME - this code should be a helper class for DOS and RDOS!

Specified by:
getSuggestedFilter in interface FileEntry

isAssemblySourceFile

public boolean isAssemblySourceFile()
Determine if this is an assembly source code file.


isTextFile

public boolean isTextFile()
Determine if this is a text file.


isApplesoftBasicFile

public boolean isApplesoftBasicFile()
Determine if this is an Applesoft BASIC file.


isIntegerBasicFile

public boolean isIntegerBasicFile()
Determine if this is an Integer BASIC file.


isBinaryFile

public boolean isBinaryFile()
Determine if this is a binary file.


getFormattedDisk

public FormattedDisk getFormattedDisk()
Get the FormattedDisk associated with this FileEntry. This is useful to interfaces that need to retrieve the associated disk.

Specified by:
getFormattedDisk in interface FileEntry

needsAddress

public boolean needsAddress()
Indicates if this filetype requires an address component. Note that the FormattedDisk also has this method - normally, this will defer to the method on FormattedDisk, as it will be more generic.

Specified by:
needsAddress in interface FileEntry

setAddress

public void setAddress(int address)
Set the address that this file loads at.

Specified by:
setAddress in interface FileEntry

canCompile

public boolean canCompile()
Indicates that this filetype can be compiled.

Specified by:
canCompile in interface FileEntry