import jalview.api.FeatureSettingsModelI;
import jalview.util.MessageManager;
import jalview.util.Platform;
+import jalview.ws.dbsources.Pfam;
+import jalview.ws.dbsources.Rfam;
/**
* implements a random access wrapper around a particular datasource, for
protected static final String TAB = "\t";
+ private static final String GZ_EXT = ".gz";
+
/**
* text specifying source of data. usually filename or url.
*/
{
return bytes;
}
+
/**
* a viewport associated with the current file operation. May be null. May
* move to different object.
}
if (!error)
{
- if (fileStr.toLowerCase().endsWith(".gz"))
+ if (fileStr.toLowerCase().endsWith(GZ_EXT))
{
try
{
// GZIPInputStream code borrowed from Aquaria (soon to be open sourced) via
// Kenny Sabir
Exception e = null;
- if (fileStr.toLowerCase().endsWith(".gz"))
+ if (isGzipped(fileStr))
{
try
{
}
/**
+ * Answers true if the filename (or URL) has a format which Jalview recognises
+ * as denoting gzipped content.
+ * <p>
+ * Currently this means having a ".gz" extension, or ending in "/gzipped" or
+ * "?gz=1" (used to retrieve gzipped from Pfam and Rfam respectively).
+ *
+ * @param filename
+ * @return
+ */
+ protected static boolean isGzipped(String filename)
+ {
+ if (filename == null)
+ {
+ return false;
+ }
+ String lower = filename.toLowerCase();
+ return lower.endsWith(GZ_EXT) || lower.endsWith(Pfam.GZIPPED)
+ || lower.endsWith(Rfam.GZIPPED);
+ }
+
+ /**
* sets the suffix string (if any) and returns remainder (if suffix was
* detected)
*
{
// this will be from JavaScript
inFile = file;
- dataIn = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(bytes)));
+ dataIn = new BufferedReader(
+ new InputStreamReader(new ByteArrayInputStream(bytes)));
dataName = fileStr;
}
else if (checkFileSource(fileStr))
{
// pass up the reason why we have no source to read from
throw new IOException(MessageManager.formatMessage(
- "exception.failed_to_read_data_from_source",
- new String[]
+ "exception.failed_to_read_data_from_source", new String[]
{ errormessage }));
}
error = false;