From 6a39c322e12aa5b9a14e240e19df8d6be814e594 Mon Sep 17 00:00:00 2001 From: gmungoc Date: Thu, 12 Jan 2017 09:05:56 +0000 Subject: [PATCH] JAL-2344 now flagging formats as 'identifiable' instead of 'dynamic' --- src/jalview/gui/Desktop.java | 5 ++--- src/jalview/io/FileFormat.java | 16 ++++++++++++++++ src/jalview/io/FileFormats.java | 26 ++++++++++++-------------- test/jalview/io/FileFormatsTest.java | 10 +++++----- 4 files changed, 35 insertions(+), 22 deletions(-) diff --git a/src/jalview/gui/Desktop.java b/src/jalview/gui/Desktop.java index c09adea..4ce42dc 100644 --- a/src/jalview/gui/Desktop.java +++ b/src/jalview/gui/Desktop.java @@ -1033,15 +1033,14 @@ public class Desktop extends jalview.jbgui.GDesktop implements * Skip this step for dynamically added file formats, because * IdentifyFile does not know how to recognise them. */ - boolean dynamicFormat = FileFormats.getInstance().isDynamic(format); - if (!dynamicFormat && !FileFormat.Jalview.equals(format)) + if (FileFormats.getInstance().isIdentifiable(format)) { try { format = new IdentifyFile().identify(choice, DataSourceType.FILE); } catch (FileFormatException e) { - // format is null + // format = null; //?? } } diff --git a/src/jalview/io/FileFormat.java b/src/jalview/io/FileFormat.java index 5a95a9e..a11147c 100644 --- a/src/jalview/io/FileFormat.java +++ b/src/jalview/io/FileFormat.java @@ -332,6 +332,12 @@ public enum FileFormat implements FileFormatI { return false; } + + @Override + public boolean isIdentifiable() + { + return false; + } }; private boolean writable; @@ -405,4 +411,14 @@ public enum FileFormat implements FileFormatI { return false; } + + /** + * By default, answers true, indicating the format is one that can be + * identified by IdentifyFile. Formats that cannot be identified should + * override this method to return false. + */ + public boolean isIdentifiable() + { + return true; + } } diff --git a/src/jalview/io/FileFormats.java b/src/jalview/io/FileFormats.java index a18d4e8..158489e 100644 --- a/src/jalview/io/FileFormats.java +++ b/src/jalview/io/FileFormats.java @@ -26,10 +26,9 @@ public class FileFormats private static Map formats; /* - * Formats in this set are built in to Jalview and instantiated - * on startup, any others are added dynamically + * Formats in this set are capable of being identified by IdentifyFile */ - private static Set builtIn; + private static Set identifiable; public static FileFormats getInstance() { @@ -52,21 +51,20 @@ public class FileFormats public synchronized void reset() { formats = new LinkedHashMap(); - builtIn = new HashSet(); + identifiable = new HashSet(); for (FileFormat format : FileFormat.values()) { - registerFileFormat(format, true); + registerFileFormat(format, format.isIdentifiable()); } } /** - * Answers false if the format is one 'built in' to Jalview, or true if not - * (meaning it has been added dynamically at runtime). Only built-in formats - * can be validated by IdentifyFile. Answers true for a null input. + * Answers true if the format is one that can be identified by IdentifyFile. + * Answers false for a null value. */ - public boolean isDynamic(FileFormatI f) + public boolean isIdentifiable(FileFormatI f) { - return !builtIn.contains(f); + return identifiable.contains(f); } /** @@ -80,7 +78,7 @@ public class FileFormats } protected void registerFileFormat(FileFormatI format, - boolean isBuiltIn) + boolean isIdentifiable) { String name = format.getName().toUpperCase(); if (formats.containsKey(name)) @@ -88,9 +86,9 @@ public class FileFormats System.err.println("Overwriting file format: " + format.getName()); } formats.put(name, format); - if (isBuiltIn) + if (isIdentifiable) { - builtIn.add(format); + identifiable.add(format); } } @@ -102,7 +100,7 @@ public class FileFormats public void deregisterFileFormat(String name) { FileFormatI ff = formats.remove(name.toUpperCase()); - builtIn.remove(ff); + identifiable.remove(ff); } /** diff --git a/test/jalview/io/FileFormatsTest.java b/test/jalview/io/FileFormatsTest.java index 542336f..8df228f 100644 --- a/test/jalview/io/FileFormatsTest.java +++ b/test/jalview/io/FileFormatsTest.java @@ -26,9 +26,9 @@ public class FileFormatsTest FileFormats formats = FileFormats.getInstance(); for (FileFormatI ff : FileFormat.values()) { - assertFalse(formats.isDynamic(ff)); + assertFalse(formats.isIdentifiable(ff)); } - assertTrue(formats.isDynamic(null)); + assertTrue(formats.isIdentifiable(null)); /* * remove and re-add a format: it is now considered 'dynamically added' @@ -38,7 +38,7 @@ public class FileFormatsTest formats.registerFileFormat(FileFormat.Fasta); assertSame(FileFormat.Fasta, formats.forName(FileFormat.Fasta.getName())); - assertTrue(formats.isDynamic(FileFormat.Fasta)); + assertTrue(formats.isIdentifiable(FileFormat.Fasta)); } @Test(groups = "Functional") @@ -104,7 +104,7 @@ public class FileFormatsTest FileFormats formats = FileFormats.getInstance(); assertSame(FileFormat.MMCif, formats.forName(FileFormat.MMCif.getName())); - assertFalse(formats.isDynamic(FileFormat.MMCif)); + assertFalse(formats.isIdentifiable(FileFormat.MMCif)); /* * deregister mmCIF format @@ -119,7 +119,7 @@ public class FileFormatsTest formats.registerFileFormat(FileFormat.MMCif); assertSame(FileFormat.MMCif, formats.forName(FileFormat.MMCif.getName())); - assertTrue(formats.isDynamic(FileFormat.MMCif)); + assertTrue(formats.isIdentifiable(FileFormat.MMCif)); // repeating does nothing formats.registerFileFormat(FileFormat.MMCif); assertSame(FileFormat.MMCif, -- 1.7.10.2