X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FFileFormats.java;h=b7dd83475a46b42ee0c4914b0d6944a10b8d5a37;hb=57738a1f3c19b1c3a00bd3ac5108f8cd0af32f99;hp=a18d4e82728e0253f202df0a7b8f828c87fddb94;hpb=95ebbef7b78bf266a8252bd479510be3c80cd234;p=jalview.git diff --git a/src/jalview/io/FileFormats.java b/src/jalview/io/FileFormats.java index a18d4e8..b7dd834 100644 --- a/src/jalview/io/FileFormats.java +++ b/src/jalview/io/FileFormats.java @@ -1,5 +1,27 @@ +/* + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors + * + * This file is part of Jalview. + * + * Jalview is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Jalview is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Jalview. If not, see . + * The Jalview Authors are detailed in the 'AUTHORS' file. + */ package jalview.io; +import java.util.Locale; + import java.util.ArrayList; import java.util.HashSet; import java.util.LinkedHashMap; @@ -26,10 +48,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 +73,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); } /** @@ -76,21 +96,23 @@ public class FileFormats */ public void registerFileFormat(FileFormatI format) { - registerFileFormat(format, false); + boolean isIdentifiable = format instanceof FileFormat + && ((FileFormat) format).isIdentifiable(); + registerFileFormat(format, isIdentifiable); } protected void registerFileFormat(FileFormatI format, - boolean isBuiltIn) + boolean isIdentifiable) { - String name = format.getName().toUpperCase(); + String name = format.getName().toUpperCase(Locale.ROOT); if (formats.containsKey(name)) { System.err.println("Overwriting file format: " + format.getName()); } formats.put(name, format); - if (isBuiltIn) + if (isIdentifiable) { - builtIn.add(format); + identifiable.add(format); } } @@ -101,8 +123,8 @@ public class FileFormats */ public void deregisterFileFormat(String name) { - FileFormatI ff = formats.remove(name.toUpperCase()); - builtIn.remove(ff); + FileFormatI ff = formats.remove(name.toUpperCase(Locale.ROOT)); + identifiable.remove(ff); } /** @@ -154,7 +176,8 @@ public class FileFormats */ public FileFormatI forName(String format) { - return format == null ? null : formats.get(format.toUpperCase()); + return format == null ? null + : formats.get(format.toUpperCase(Locale.ROOT)); } /**