diff --git a/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/FormattedDisk.java b/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/FormattedDisk.java index 4c72208..2b58e6b 100644 --- a/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/FormattedDisk.java +++ b/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/FormattedDisk.java @@ -19,14 +19,15 @@ */ package com.webcodepro.applecommander.storage; +import com.webcodepro.applecommander.storage.physical.ImageOrder; +import com.webcodepro.applecommander.util.TextBundle; + import java.io.IOException; import java.io.InputStream; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; -import com.webcodepro.applecommander.storage.physical.ImageOrder; -import com.webcodepro.applecommander.util.TextBundle; /** * Abstract representation of a formatted Apple2 disk (floppy, 800k, hard disk). @@ -404,4 +405,15 @@ public abstract class FormattedDisk extends Disk implements DirectoryEntry { * Gives an indication on how this disk's geometry should be handled. */ public abstract DiskGeometry getDiskGeometry(); + + /** + * Provides conversation from a given ProDOS file type since as it is common across + * many archiving tools. + */ + public abstract String fromProdosFiletype(String prodosFiletype); + /** + * Provides conversation to a given ProDOS file type since as it is common across + * many archiving tools. + */ + public abstract String toProdosFiletype(String nativeFiletype); } diff --git a/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/cpm/CpmFormatDisk.java b/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/cpm/CpmFormatDisk.java index b3bf511..c1a03ba 100644 --- a/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/cpm/CpmFormatDisk.java +++ b/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/cpm/CpmFormatDisk.java @@ -19,22 +19,13 @@ */ package com.webcodepro.applecommander.storage.os.cpm; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.StringTokenizer; - -import com.webcodepro.applecommander.storage.DirectoryEntry; -import com.webcodepro.applecommander.storage.DiskFullException; -import com.webcodepro.applecommander.storage.DiskGeometry; -import com.webcodepro.applecommander.storage.FileEntry; -import com.webcodepro.applecommander.storage.FormattedDisk; -import com.webcodepro.applecommander.storage.StorageBundle; +import com.webcodepro.applecommander.storage.*; import com.webcodepro.applecommander.storage.physical.ImageOrder; import com.webcodepro.applecommander.util.AppleUtil; import com.webcodepro.applecommander.util.TextBundle; +import java.util.*; + /** * Manages a disk that is in the Apple CP/M format. *

@@ -565,4 +556,29 @@ public class CpmFormatDisk extends FormattedDisk { public DiskGeometry getDiskGeometry() { return DiskGeometry.TRACK_SECTOR; } + + /** + * Provides conversation from a given ProDOS file type since as it is common across + * many archiving tools. + */ + @Override + public String fromProdosFiletype(String prodosFiletype) { + if ("TXT".equalsIgnoreCase(prodosFiletype)) { + return "TXT"; + } + return "BIN"; + } + /** + * Provides conversation to a given ProDOS file type since as it is common across + * many archiving tools. + */ + @Override + public String toProdosFiletype(String nativeFiletype) { + for (String textFiletype : CpmFileEntry.TEXT_FILETYPES) { + if (textFiletype.equalsIgnoreCase(nativeFiletype)) { + return "TXT"; + } + } + return "BIN"; + } } diff --git a/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/dos33/DosFormatDisk.java b/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/dos33/DosFormatDisk.java index aec2032..cbd0db2 100644 --- a/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/dos33/DosFormatDisk.java +++ b/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/dos33/DosFormatDisk.java @@ -19,23 +19,13 @@ */ package com.webcodepro.applecommander.storage.os.dos33; -import java.util.ArrayList; -import java.util.List; -import java.util.Set; -import java.util.HashSet; - -import com.webcodepro.applecommander.storage.DirectoryEntry; -import com.webcodepro.applecommander.storage.DiskException; -import com.webcodepro.applecommander.storage.DiskCorruptException; -import com.webcodepro.applecommander.storage.DiskFullException; -import com.webcodepro.applecommander.storage.DiskGeometry; -import com.webcodepro.applecommander.storage.FileEntry; -import com.webcodepro.applecommander.storage.FormattedDisk; -import com.webcodepro.applecommander.storage.StorageBundle; +import com.webcodepro.applecommander.storage.*; import com.webcodepro.applecommander.storage.physical.ImageOrder; import com.webcodepro.applecommander.util.AppleUtil; import com.webcodepro.applecommander.util.TextBundle; +import java.util.*; + /** * Manages a disk that is in Apple DOS 3.3 format. *

@@ -70,11 +60,20 @@ public class DosFormatDisk extends FormattedDisk { /** * The list of filetypes available. */ - private static final String[] filetypes = { - "T", "A", "I", "B", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ - "S", "R", "a", "b" //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ + private static final String[] FILE_TYPES = { + "T", "A", "I", "B", + "S", "R", "a", "b" }; - + private static final Map FILE_TYPE_MAPPING = Map.of( + "T", "TXT", + "I", "INT", + "A", "BAS", + "B", "BIN", + "S", "$F1", + "R", "REL", + "a", "$F2", + "b", "$F3" + ); /** * Use this inner interface for managing the disk usage data. * This off-loads format-specific implementation to the implementing class. @@ -739,7 +738,7 @@ public class DosFormatDisk extends FormattedDisk { * specific to each operating system, a simple String is used. */ public String[] getFiletypes() { - return filetypes; + return FILE_TYPES; } /** @@ -781,4 +780,26 @@ public class DosFormatDisk extends FormattedDisk { public DiskGeometry getDiskGeometry() { return DiskGeometry.TRACK_SECTOR; } + + /** + * Provides conversation from a given ProDOS file type since as it is common across + * many archiving tools. + */ + @Override + public String fromProdosFiletype(String prodosFiletype) { + return FILE_TYPE_MAPPING.entrySet() + .stream() + .filter(e -> e.getValue().equals(prodosFiletype)) + .map(Map.Entry::getKey) + .findFirst() + .orElse("B"); + } + /** + * Provides conversation to a given ProDOS file type since as it is common across + * many archiving tools. + */ + @Override + public String toProdosFiletype(String nativeFiletype) { + return FILE_TYPE_MAPPING.getOrDefault(nativeFiletype, "BIN"); + } } diff --git a/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/gutenberg/GutenbergFormatDisk.java b/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/gutenberg/GutenbergFormatDisk.java index 947681b..f30836c 100644 --- a/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/gutenberg/GutenbergFormatDisk.java +++ b/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/gutenberg/GutenbergFormatDisk.java @@ -19,19 +19,14 @@ */ package com.webcodepro.applecommander.storage.os.gutenberg; -import java.util.ArrayList; -import java.util.List; - -import com.webcodepro.applecommander.storage.DirectoryEntry; -import com.webcodepro.applecommander.storage.DiskFullException; -import com.webcodepro.applecommander.storage.DiskGeometry; -import com.webcodepro.applecommander.storage.FileEntry; -import com.webcodepro.applecommander.storage.FormattedDisk; -import com.webcodepro.applecommander.storage.StorageBundle; +import com.webcodepro.applecommander.storage.*; import com.webcodepro.applecommander.storage.physical.ImageOrder; import com.webcodepro.applecommander.util.AppleUtil; import com.webcodepro.applecommander.util.TextBundle; +import java.util.ArrayList; +import java.util.List; + /** * Manages a disk that is in Gutenberg Word Processor format. *

@@ -707,4 +702,21 @@ public class GutenbergFormatDisk extends FormattedDisk { public DiskGeometry getDiskGeometry() { return DiskGeometry.TRACK_SECTOR; } + + /** + * Provides conversation from a given ProDOS file type since as it is common across + * many archiving tools. + */ + @Override + public String fromProdosFiletype(String prodosFiletype) { + return "T"; + } + /** + * Provides conversation to a given ProDOS file type since as it is common across + * many archiving tools. + */ + @Override + public String toProdosFiletype(String nativeFiletype) { + return "TXT"; + } } diff --git a/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/nakedos/NakedosFormatDisk.java b/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/nakedos/NakedosFormatDisk.java index 69ab492..642fd1a 100644 --- a/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/nakedos/NakedosFormatDisk.java +++ b/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/nakedos/NakedosFormatDisk.java @@ -19,19 +19,14 @@ */ package com.webcodepro.applecommander.storage.os.nakedos; -import java.util.ArrayList; -import java.util.List; - -import com.webcodepro.applecommander.storage.DirectoryEntry; -import com.webcodepro.applecommander.storage.DiskFullException; -import com.webcodepro.applecommander.storage.DiskGeometry; -import com.webcodepro.applecommander.storage.FileEntry; -import com.webcodepro.applecommander.storage.FormattedDisk; -import com.webcodepro.applecommander.storage.StorageBundle; +import com.webcodepro.applecommander.storage.*; import com.webcodepro.applecommander.storage.physical.ImageOrder; import com.webcodepro.applecommander.util.AppleUtil; import com.webcodepro.applecommander.util.TextBundle; +import java.util.ArrayList; +import java.util.List; + /** * Manages a disk that is in NakedOS format. *

@@ -545,4 +540,21 @@ public class NakedosFormatDisk extends FormattedDisk { public DiskGeometry getDiskGeometry() { return DiskGeometry.TRACK_SECTOR; } + + /** + * Provides conversation from a given ProDOS file type since as it is common across + * many archiving tools. + */ + @Override + public String fromProdosFiletype(String prodosFiletype) { + return "B"; + } + /** + * Provides conversation to a given ProDOS file type since as it is common across + * many archiving tools. + */ + @Override + public String toProdosFiletype(String nativeFiletype) { + return "BIN"; + } } diff --git a/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/pascal/PascalFormatDisk.java b/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/pascal/PascalFormatDisk.java index 2394a5a..ec90a2d 100644 --- a/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/pascal/PascalFormatDisk.java +++ b/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/pascal/PascalFormatDisk.java @@ -21,21 +21,13 @@ */ package com.webcodepro.applecommander.storage.os.pascal; -import java.util.ArrayList; -import java.util.BitSet; -import java.util.Date; -import java.util.List; - -import com.webcodepro.applecommander.storage.DirectoryEntry; -import com.webcodepro.applecommander.storage.DiskFullException; -import com.webcodepro.applecommander.storage.DiskGeometry; -import com.webcodepro.applecommander.storage.FileEntry; -import com.webcodepro.applecommander.storage.FormattedDisk; -import com.webcodepro.applecommander.storage.StorageBundle; +import com.webcodepro.applecommander.storage.*; import com.webcodepro.applecommander.storage.physical.ImageOrder; import com.webcodepro.applecommander.util.AppleUtil; import com.webcodepro.applecommander.util.TextBundle; +import java.util.*; + /** * Manages a disk that is in the Pascal format. *

@@ -58,15 +50,31 @@ public class PascalFormatDisk extends FormattedDisk { /** * The known filetypes for a Pascal disk. */ - private static final String[] filetypes = { - "xdskfile", //$NON-NLS-1$ + private static final String[] FILE_TYPES = { + "xdskfile", CODEFILE, TEXTFILE, - "INFO", //$NON-NLS-1$ + "INFO", DATAFILE, - "GRAF", //$NON-NLS-1$ - "FOTO", //$NON-NLS-1$ - "securedir" }; //$NON-NLS-1$ + "GRAF", + "FOTO", + "securedir" + }; + private static final Map FILE_TYPE_MAP = Map.of( + // Pascal => Prodos + "xdskfile", "BAD", + CODEFILE, "BIN", + TEXTFILE, "TXT", + "INFO", "TXT", + DATAFILE, "BIN", + "GRAF", "BIN", + "FOTO", "BIN", + "securedir", "BIN", + + // Prodos => Pascal + "BIN", DATAFILE, + "TXT", TEXTFILE + ); /** * Use this inner interface for managing the disk usage data. @@ -624,7 +632,7 @@ public class PascalFormatDisk extends FormattedDisk { * specific to each operating system, a simple String is used. */ public String[] getFiletypes() { - return filetypes; + return FILE_TYPES; } /** @@ -675,4 +683,21 @@ public class PascalFormatDisk extends FormattedDisk { public DiskGeometry getDiskGeometry() { return DiskGeometry.BLOCK; } + + /** + * Provides conversation from a given ProDOS file type since as it is common across + * many archiving tools. + */ + @Override + public String fromProdosFiletype(String prodosFiletype) { + return FILE_TYPE_MAP.getOrDefault(prodosFiletype, DATAFILE); + } + /** + * Provides conversation to a given ProDOS file type since as it is common across + * many archiving tools. + */ + @Override + public String toProdosFiletype(String nativeFiletype) { + return FILE_TYPE_MAP.getOrDefault(nativeFiletype, "BIN"); + } } diff --git a/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/prodos/ProdosFormatDisk.java b/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/prodos/ProdosFormatDisk.java index 5686ab1..dbbb997 100644 --- a/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/prodos/ProdosFormatDisk.java +++ b/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/prodos/ProdosFormatDisk.java @@ -19,27 +19,15 @@ */ package com.webcodepro.applecommander.storage.os.prodos; -import java.io.IOException; -import java.io.InputStream; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Properties; -import java.util.Set; -import java.util.HashSet; - -import com.webcodepro.applecommander.storage.DirectoryEntry; -import com.webcodepro.applecommander.storage.DiskException; -import com.webcodepro.applecommander.storage.DiskCorruptException; -import com.webcodepro.applecommander.storage.DiskFullException; -import com.webcodepro.applecommander.storage.DiskGeometry; -import com.webcodepro.applecommander.storage.FileEntry; -import com.webcodepro.applecommander.storage.FormattedDisk; -import com.webcodepro.applecommander.storage.StorageBundle; +import com.webcodepro.applecommander.storage.*; import com.webcodepro.applecommander.storage.physical.ImageOrder; import com.webcodepro.applecommander.util.AppleUtil; import com.webcodepro.applecommander.util.TextBundle; +import java.io.IOException; +import java.io.InputStream; +import java.util.*; + /** * Manages a disk that is in the ProDOS format. *

@@ -1469,4 +1457,21 @@ public class ProdosFormatDisk extends FormattedDisk { public DiskGeometry getDiskGeometry() { return DiskGeometry.BLOCK; } + + /** + * Provides conversation from a given ProDOS file type since as it is common across + * many archiving tools. + */ + @Override + public String fromProdosFiletype(String prodosFiletype) { + return prodosFiletype; + }; + /** + * Provides conversation to a given ProDOS file type since as it is common across + * many archiving tools. + */ + @Override + public String toProdosFiletype(String nativeFiletype) { + return nativeFiletype; + }; } diff --git a/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/rdos/RdosFormatDisk.java b/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/rdos/RdosFormatDisk.java index 8c9a03b..ba09bb1 100644 --- a/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/rdos/RdosFormatDisk.java +++ b/lib/ac-api/src/main/java/com/webcodepro/applecommander/storage/os/rdos/RdosFormatDisk.java @@ -19,21 +19,17 @@ */ package com.webcodepro.applecommander.storage.os.rdos; -import java.util.ArrayList; -import java.util.BitSet; -import java.util.List; - -import com.webcodepro.applecommander.storage.DirectoryEntry; -import com.webcodepro.applecommander.storage.DiskFullException; -import com.webcodepro.applecommander.storage.DiskGeometry; -import com.webcodepro.applecommander.storage.FileEntry; -import com.webcodepro.applecommander.storage.FormattedDisk; -import com.webcodepro.applecommander.storage.StorageBundle; +import com.webcodepro.applecommander.storage.*; import com.webcodepro.applecommander.storage.physical.ImageOrder; import com.webcodepro.applecommander.storage.physical.ProdosOrder; import com.webcodepro.applecommander.util.AppleUtil; import com.webcodepro.applecommander.util.TextBundle; +import java.util.ArrayList; +import java.util.BitSet; +import java.util.List; +import java.util.Map; + /** * Manages a disk that is in the RDOS format. *

@@ -79,7 +75,12 @@ public class RdosFormatDisk extends FormattedDisk { /** * The known filetypes for a RDOS disk. */ - public static final String[] filetypes = { "B", "A", "T" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + public static final String[] FILE_TYPES = { "B", "A", "T" }; + private static final Map FILE_TYPE_MAPPING = Map.of( + "T", "TXT", + "A", "BAS", + "B", "BIN" + ); /** * 13 sectors for RDOS 2.1/3.2, native sectoring (16) for RDOS 3.3 @@ -517,7 +518,7 @@ public class RdosFormatDisk extends FormattedDisk { * specific to each operating system, a simple String is used. */ public String[] getFiletypes() { - return filetypes; + return FILE_TYPES; } /** @@ -570,4 +571,26 @@ public class RdosFormatDisk extends FormattedDisk { public DiskGeometry getDiskGeometry() { return DiskGeometry.TRACK_SECTOR; } + + /** + * Provides conversation from a given ProDOS file type since as it is common across + * many archiving tools. + */ + @Override + public String fromProdosFiletype(String prodosFiletype) { + return FILE_TYPE_MAPPING.entrySet() + .stream() + .filter(e -> e.getValue().equals(prodosFiletype)) + .map(Map.Entry::getKey) + .findFirst() + .orElse("B"); + } + /** + * Provides conversation to a given ProDOS file type since as it is common across + * many archiving tools. + */ + @Override + public String toProdosFiletype(String nativeFiletype) { + return FILE_TYPE_MAPPING.getOrDefault(nativeFiletype, "BIN"); + } } diff --git a/lib/ac-api/src/main/java/com/webcodepro/applecommander/util/readerwriter/DosFileEntryReaderWriter.java b/lib/ac-api/src/main/java/com/webcodepro/applecommander/util/readerwriter/DosFileEntryReaderWriter.java index c57a11f..cdc1b13 100644 --- a/lib/ac-api/src/main/java/com/webcodepro/applecommander/util/readerwriter/DosFileEntryReaderWriter.java +++ b/lib/ac-api/src/main/java/com/webcodepro/applecommander/util/readerwriter/DosFileEntryReaderWriter.java @@ -19,29 +19,14 @@ */ package com.webcodepro.applecommander.util.readerwriter; -import java.util.Map; -import java.util.Optional; - import com.webcodepro.applecommander.storage.DiskFullException; import com.webcodepro.applecommander.storage.os.dos33.DosFileEntry; import com.webcodepro.applecommander.storage.os.dos33.DosFormatDisk; import com.webcodepro.applecommander.util.AppleUtil; +import java.util.Optional; + public class DosFileEntryReaderWriter implements FileEntryReader, FileEntryWriter { - private static final Map FILE_TYPES; - static { - FILE_TYPES = Map.of( - "T", "TXT", - "I", "INT", - "A", "BAS", - "B", "BIN", - "S", "$F1", - "R", "REL", - "a", "$F2", - "b", "$F3" - ); - } - private DosFileEntry fileEntry; public DosFileEntryReaderWriter(DosFileEntry fileEntry) { @@ -62,17 +47,13 @@ public class DosFileEntryReaderWriter implements FileEntryReader, FileEntryWrite @Override public Optional getProdosFiletype() { - return Optional.ofNullable(FILE_TYPES.get(fileEntry.getFiletype())); + String prodosFiletype = fileEntry.getFormattedDisk().toProdosFiletype(fileEntry.getFiletype()); + return Optional.ofNullable(prodosFiletype); } @Override public void setProdosFiletype(String filetype) { - String dosFileType = FILE_TYPES.entrySet() - .stream() - .filter(e -> e.getValue().equals(filetype)) - .map(Map.Entry::getKey) - .findFirst() - .orElse("B"); - fileEntry.setFiletype(dosFileType); + String dosFiletype = fileEntry.getFormattedDisk().fromProdosFiletype(filetype); + fileEntry.setFiletype(dosFiletype); } @Override diff --git a/lib/ac-api/src/main/java/com/webcodepro/applecommander/util/readerwriter/PascalFileEntryReaderWriter.java b/lib/ac-api/src/main/java/com/webcodepro/applecommander/util/readerwriter/PascalFileEntryReaderWriter.java index f521a40..6b3fe0f 100644 --- a/lib/ac-api/src/main/java/com/webcodepro/applecommander/util/readerwriter/PascalFileEntryReaderWriter.java +++ b/lib/ac-api/src/main/java/com/webcodepro/applecommander/util/readerwriter/PascalFileEntryReaderWriter.java @@ -19,35 +19,16 @@ */ package com.webcodepro.applecommander.util.readerwriter; -import java.util.Date; -import java.util.Map; -import java.util.Optional; - import com.webcodepro.applecommander.storage.DiskFullException; import com.webcodepro.applecommander.storage.filters.PascalTextFileFilter; import com.webcodepro.applecommander.storage.os.pascal.PascalFileEntry; +import java.util.Date; +import java.util.Optional; + public class PascalFileEntryReaderWriter implements FileEntryReader, FileEntryWriter { private static final PascalTextFileFilter TEXT_FILTER = new PascalTextFileFilter(); - private static final Map FILE_TYPES; - static { - FILE_TYPES = Map.of( - // Pascal => Prodos - "xdskfile", "BAD", // TODO we should skip bad block files - "CODE", "BIN", // TODO is there an address? - "TEXT", "TXT", - "INFO", "TXT", // TODO We should skip debugger info - "DATA", "BIN", - "GRAF", "BIN", // TODO compressed graphics image - "FOTO", "BIN", // TODO screen image - "securedir", "BIN", // TODO is this even implemented - - // Prodos => Pascal - "BIN", "DATA", - "TXT", "TEXT" - ); - } - + private PascalFileEntry fileEntry; public PascalFileEntryReaderWriter(PascalFileEntry fileEntry) { @@ -65,11 +46,11 @@ public class PascalFileEntryReaderWriter implements FileEntryReader, FileEntryWr @Override public Optional getProdosFiletype() { - return Optional.ofNullable(FILE_TYPES.get(fileEntry.getFiletype())); + return Optional.ofNullable(fileEntry.getFormattedDisk().toProdosFiletype(fileEntry.getFiletype())); } @Override public void setProdosFiletype(String filetype) { - fileEntry.setFiletype(FILE_TYPES.getOrDefault(filetype, "DATA")); + fileEntry.setFiletype(fileEntry.getFormattedDisk().fromProdosFiletype(filetype)); } @Override diff --git a/lib/ac-api/src/main/java/com/webcodepro/applecommander/util/readerwriter/RdosFileEntryReader.java b/lib/ac-api/src/main/java/com/webcodepro/applecommander/util/readerwriter/RdosFileEntryReader.java index 15fefb8..7609a53 100644 --- a/lib/ac-api/src/main/java/com/webcodepro/applecommander/util/readerwriter/RdosFileEntryReader.java +++ b/lib/ac-api/src/main/java/com/webcodepro/applecommander/util/readerwriter/RdosFileEntryReader.java @@ -19,21 +19,11 @@ */ package com.webcodepro.applecommander.util.readerwriter; -import java.util.Map; -import java.util.Optional; - import com.webcodepro.applecommander.storage.os.rdos.RdosFileEntry; +import java.util.Optional; + public class RdosFileEntryReader implements FileEntryReader { - private static final Map FILE_TYPES; - static { - FILE_TYPES = Map.of( - "T", "TXT", - "A", "BAS", - "B", "BIN" - ); - } - private RdosFileEntry fileEntry; public RdosFileEntryReader(RdosFileEntry fileEntry) { @@ -52,7 +42,7 @@ public class RdosFileEntryReader implements FileEntryReader { @Override public Optional getProdosFiletype() { - return Optional.ofNullable(FILE_TYPES.get(fileEntry.getFiletype())); + return Optional.ofNullable(fileEntry.getFormattedDisk().toProdosFiletype(fileEntry.getFiletype())); } @Override diff --git a/lib/ac-swt-common/src/main/java/com/webcodepro/applecommander/ui/swt/wizard/importfile/ImportSelectFilesWizardPane.java b/lib/ac-swt-common/src/main/java/com/webcodepro/applecommander/ui/swt/wizard/importfile/ImportSelectFilesWizardPane.java index 5191038..8146af2 100644 --- a/lib/ac-swt-common/src/main/java/com/webcodepro/applecommander/ui/swt/wizard/importfile/ImportSelectFilesWizardPane.java +++ b/lib/ac-swt-common/src/main/java/com/webcodepro/applecommander/ui/swt/wizard/importfile/ImportSelectFilesWizardPane.java @@ -211,7 +211,8 @@ public class ImportSelectFilesWizardPane extends WizardPane { AppleSingle as = AppleSingle.read(data); suggestedFilename = Optional.ofNullable(as.getRealName()) .orElse(suggestedFilename); - suggestedFiletype = ProdosFormatDisk.getFiletype(as.getProdosFileInfo().getFileType()); + suggestedFiletype = wizard.getDisk().fromProdosFiletype( + ProdosFormatDisk.getFiletype(as.getProdosFileInfo().getFileType())); suggestedAddress = Optional.ofNullable(as.getProdosFileInfo()) .map(ProdosFileInfo::getAuxType) .orElse(suggestedAddress); @@ -285,7 +286,7 @@ public class ImportSelectFilesWizardPane extends WizardPane { label.setText(textBundle.get("FiletypeLabel")); //$NON-NLS-1$ final Combo filetypes = new Combo(dialog, SWT.BORDER | SWT.READ_ONLY); filetypes.setItems(wizard.getDisk().getFiletypes()); - if (spec.hasFiletype()) { + if (spec.hasFiletype() && filetypes.indexOf(spec.getFiletype()) != -1) { filetypes.select(filetypes.indexOf(spec.getFiletype())); }