* 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; //??
}
}
{
return false;
}
+
+ @Override
+ public boolean isIdentifiable()
+ {
+ return false;
+ }
};
private boolean writable;
{
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;
+ }
}
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);
}
/**
}
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);
}
/**
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'
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")
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
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,