import java.net.URL;
import java.util.zip.GZIPInputStream;
+
+import jalview.ws.dbsources.Pfam;
+import jalview.ws.dbsources.Rfam;
+
/**
* implements a random access wrapper around a particular datasource, for
* passing to identifyFile and AlignFile objects.
*/
public class FileParse
{
+ protected static final String SPACE = " ";
+
+ protected static final String TAB = "\t";
+
+ private static final String GZ_EXT = ".gz";
+
/**
* text specifying source of data. usually filename or url.
*/
public File inFile = null;
+
/**
* a viewport associated with the current file operation. May be null. May
* move to different object.
{
if (from == null)
{
- throw new Error(
- MessageManager
- .getString("error.implementation_error_null_fileparse"));
+ throw new Error(MessageManager
+ .getString("error.implementation_error_null_fileparse"));
}
if (from == this)
{
}
if (!error)
{
- if (fileStr.toLowerCase().endsWith(".gz"))
+ if (fileStr.toLowerCase().endsWith(GZ_EXT))
{
try
{
private BufferedReader tryAsGzipSource(InputStream inputStream)
throws Exception
{
- BufferedReader inData = new BufferedReader(new InputStreamReader(
- new GZIPInputStream(inputStream)));
+ BufferedReader inData = new BufferedReader(
+ new InputStreamReader(new GZIPInputStream(inputStream)));
inData.mark(2048);
inData.read();
inData.reset();
return inData;
}
- private boolean checkURLSource(String fileStr) throws IOException,
- MalformedURLException
+ private boolean checkURLSource(String fileStr)
+ throws IOException, MalformedURLException
{
errormessage = "URL NOT FOUND";
URL url = new URL(fileStr);
// 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
{
{
if (e != null)
{
- throw new IOException(
- MessageManager
- .getString("exception.failed_to_resolve_gzip_stream"),
- e);
+ throw new IOException(MessageManager
+ .getString("exception.failed_to_resolve_gzip_stream"), e);
}
throw q;
}
}
/**
+ * 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)
*
{
throw new IOException(MessageManager.formatMessage(
"exception.problem_opening_file_also_tried",
- new String[] { inFile.getName(), suffixLess,
- errormessage }));
+ new String[]
+ { inFile.getName(), suffixLess, errormessage }));
}
}
else
{
throw new IOException(MessageManager.formatMessage(
- "exception.problem_opening_file",
- new String[] { inFile.getName(), errormessage }));
+ "exception.problem_opening_file", new String[]
+ { inFile.getName(), errormessage }));
}
}
}
{
// 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[] { errormessage }));
+ "exception.failed_to_read_data_from_source", new String[]
+ { errormessage }));
}
error = false;
dataIn.mark(READAHEAD_LIMIT);
{
return dataIn.readLine();
}
- throw new IOException(MessageManager.formatMessage(
- "exception.invalid_source_stream",
- new String[] { errormessage }));
+ throw new IOException(MessageManager
+ .formatMessage("exception.invalid_source_stream", new String[]
+ { errormessage }));
}
/**
}
else
{
- throw new IOException(
- MessageManager
- .getString("error.implementation_error_reset_called_for_invalid_source"));
+ throw new IOException(MessageManager.getString(
+ "error.implementation_error_reset_called_for_invalid_source"));
}
}