Class ProdosFileEntry

java.lang.Object
com.webcodepro.applecommander.storage.os.prodos.ProdosCommonEntry
com.webcodepro.applecommander.storage.os.prodos.ProdosFileEntry
All Implemented Interfaces:
FileEntry
Direct Known Subclasses:
ProdosDirectoryEntry

public class ProdosFileEntry extends ProdosCommonEntry implements FileEntry
Represents a ProDOS file entry on disk.

Date created: Oct 5, 2002 6:01:15 PM

  • Constructor Details

    • ProdosFileEntry

      public ProdosFileEntry(ProdosFormatDisk disk, int block, int offset)
      Constructor for ProdosFileEntry.
  • Method Details

    • getFilename

      public String getFilename()
      Return the name of this file. This handles normal files, deleted files, and AppleWorks files - which use the AUXTYPE attribute to indicate upper/lowercase in the filename.
      Specified by:
      getFilename in interface FileEntry
    • getMaximumFilenameLength

      public int getMaximumFilenameLength()
      Return the maximum filename length.
      Specified by:
      getMaximumFilenameLength in interface FileEntry
    • setFilename

      public void setFilename(String filename)
      Set the name of this file.
      Specified by:
      setFilename in interface FileEntry
    • setGEOSMeta

      public void setGEOSMeta(byte[] metaData)
      Copy GEOS-specific metadata to the directory entry verbatim: Bytes $00-$10 ($11 bytes) Bytes $18-$1d ($06 bytes) Bytes $21-$24 ($04 bytes)
    • getFiletype

      public String getFiletype()
      Return the filetype of this file. This will be three characters, according to ProDOS - a "$xx" if unknown.
      Specified by:
      getFiletype in interface FileEntry
    • getFiletypeByte

      public int getFiletypeByte()
    • setFiletype

      public void setFiletype(String filetype)
      Set the filetype based on a string value.
      Specified by:
      setFiletype in interface FileEntry
    • setFiletype

      public void setFiletype(long fileType)
      Set the filetype based on a long - thunk into a byte
    • isAppleWorksFile

      public boolean isAppleWorksFile()
      Indicate if this is an AppleWorks file. Intended to force upper/lowercase into the filename.
    • isGEOSFile

      public boolean isGEOSFile()
      Indicate if this is a GEOS file.
    • isForkedFile

      public boolean isForkedFile()
      Indicate if this is a GEOS file.
    • getKeyPointer

      public int getKeyPointer()
      Get the key pointer. This is either the data block (seedling), index block (sapling), or master index block (tree).
    • setKeyPointer

      public void setKeyPointer(int keyPointer)
      Set the key pointer. This is either the data block (seedling), index block (sapling), or master index block (tree).
    • getBlocksUsed

      public int getBlocksUsed()
      Get the number of blocks used.
    • setBlocksUsed

      public void setBlocksUsed(int blocksUsed)
      Set the number of blocks used.
    • getEofPosition

      public int getEofPosition()
      Get the EOF position. This can indicate the length of a file.
    • setEofPosition

      public void setEofPosition(int eofPosition)
      Set the EOF position.
    • getAuxiliaryType

      public int getAuxiliaryType()
      Get the auxiliary type for this file. TXT - random access record length. BIN - load address for binary image. BAS - load address for program image. VAR - address of compressed variables image. SYS - load address for system program (usually 0x2000). AWP/ADB/ASP - upper/lowercase flags
    • setAuxiliaryType

      public void setAuxiliaryType(int auxiliaryType)
      Set the auxiliary type for this file.
    • setAuxiliaryType

      public void setAuxiliaryType(byte[] entry, byte low, byte high)
      Set the auxiliary type for this file.
    • setAuxiliaryType

      public void setAuxiliaryType(byte[] entry, int auxiliaryType)
      Set the auxiliary type for this file.
    • getLastModificationDate

      public Date getLastModificationDate()
      Get the last modification date.
    • setLastModificationDate

      public void setLastModificationDate(Date date)
      Set the last modification date.
    • getHeaderPointer

      public int getHeaderPointer()
      Get the block number of the key block for the directory which describes this file.
    • setHeaderPointer

      public void setHeaderPointer(int headerPointer)
      Set the block number of the block for the directory which describes this file.
    • isLocked

      public boolean isLocked()
      Identify if this file is locked.
      Specified by:
      isLocked in interface FileEntry
    • 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
    • isDirectory

      public boolean isDirectory()
      Identify if this is a directory file.
      Specified by:
      isDirectory in interface FileEntry
    • isDeleted

      public boolean isDeleted()
      Identify if this file has been deleted.
      Specified by:
      isDeleted in interface FileEntry
    • delete

      public void delete()
      Delete the file.
      Specified by:
      delete in interface FileEntry
    • getFileColumnData

      public List<String> 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
    • getFileTypeString

      public String getFileTypeString()
      Return the ProDOS file type as a hex string.
    • getFileData

      public byte[] getFileData()
      Get file data. This handles any operating-system specific issues. Currently, the disk itself handles this.
      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.
      Specified by:
      setFileData in interface FileEntry
      Throws:
      DiskFullException
    • setFileData

      public void setFileData(byte[] dataFork, byte[] resourceFork) throws DiskFullException
      Set the file data, with the expectation that both data and resource forks are present (storage type $05). See: http://www.1000bit.it/support/manuali/apple/technotes/pdos/tn.pdos.25.html
      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.
      Specified by:
      getSuggestedFilter 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
    • getAddress

      public int getAddress()
      Get the address that this file loads at.
      Specified by:
      getAddress in interface FileEntry