+/*
+ * 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 <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.io;
import java.util.ArrayList;
private static Map<String, FileFormatI> 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<FileFormatI> builtIn;
+ private static Set<FileFormatI> identifiable;
public static FileFormats getInstance()
{
public synchronized void reset()
{
formats = new LinkedHashMap<String, FileFormatI>();
- builtIn = new HashSet<FileFormatI>();
+ identifiable = new HashSet<FileFormatI>();
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);
}
/**
*/
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();
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);
}
}
public void deregisterFileFormat(String name)
{
FileFormatI ff = formats.remove(name.toUpperCase());
- builtIn.remove(ff);
+ identifiable.remove(ff);
}
/**