2015-06-01 09:35:51 +00:00
|
|
|
package com.bytezone.diskbrowser.prodos;
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.GregorianCalendar;
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
import com.bytezone.diskbrowser.applefile.AppleFileSource;
|
|
|
|
import com.bytezone.diskbrowser.disk.Disk;
|
|
|
|
import com.bytezone.diskbrowser.disk.DiskAddress;
|
|
|
|
import com.bytezone.diskbrowser.disk.FormattedDisk;
|
2016-02-24 21:11:14 +00:00
|
|
|
import com.bytezone.diskbrowser.utilities.HexFormatter;
|
2015-06-01 09:35:51 +00:00
|
|
|
|
|
|
|
abstract class CatalogEntry implements AppleFileSource
|
|
|
|
{
|
2016-03-24 00:17:09 +00:00
|
|
|
ProdosDisk parentDisk;
|
2016-02-05 00:23:53 +00:00
|
|
|
DirectoryHeader parentDirectory;
|
|
|
|
String name;
|
|
|
|
int storageType;
|
|
|
|
GregorianCalendar created;
|
|
|
|
int version;
|
|
|
|
int minVersion;
|
|
|
|
int access;
|
|
|
|
List<DiskAddress> dataBlocks = new ArrayList<DiskAddress> ();
|
|
|
|
Disk disk;
|
2015-06-01 09:35:51 +00:00
|
|
|
|
2016-02-05 00:23:53 +00:00
|
|
|
public CatalogEntry (ProdosDisk parentDisk, byte[] entryBuffer)
|
|
|
|
{
|
|
|
|
this.parentDisk = parentDisk;
|
|
|
|
this.disk = parentDisk.getDisk ();
|
|
|
|
name = HexFormatter.getString (entryBuffer, 1, entryBuffer[0] & 0x0F);
|
|
|
|
storageType = (entryBuffer[0] & 0xF0) >> 4;
|
|
|
|
created = HexFormatter.getAppleDate (entryBuffer, 24);
|
|
|
|
version = HexFormatter.intValue (entryBuffer[28]);
|
|
|
|
minVersion = HexFormatter.intValue (entryBuffer[29]);
|
|
|
|
access = HexFormatter.intValue (entryBuffer[30]);
|
|
|
|
}
|
2015-06-01 09:35:51 +00:00
|
|
|
|
2016-02-05 00:23:53 +00:00
|
|
|
@Override
|
|
|
|
public String getUniqueName ()
|
|
|
|
{
|
|
|
|
if (parentDirectory == null)
|
|
|
|
return name;
|
|
|
|
return parentDirectory.getUniqueName () + "/" + name;
|
|
|
|
}
|
2015-06-01 09:35:51 +00:00
|
|
|
|
2016-02-05 00:23:53 +00:00
|
|
|
@Override
|
|
|
|
public FormattedDisk getFormattedDisk ()
|
|
|
|
{
|
|
|
|
return parentDisk;
|
|
|
|
}
|
2016-02-25 21:49:22 +00:00
|
|
|
|
|
|
|
@Override
|
|
|
|
public boolean contains (DiskAddress da)
|
|
|
|
{
|
|
|
|
for (DiskAddress sector : dataBlocks)
|
|
|
|
if (sector.compareTo (da) == 0)
|
|
|
|
return true;
|
|
|
|
return false;
|
|
|
|
}
|
2015-06-01 09:35:51 +00:00
|
|
|
}
|