*/
package jalview.io;
+import java.io.File;
import java.io.IOException;
/**
*/
public class IdentifyFile
{
+
+ public FileFormatI identify(Object file, DataSourceType protocol) throws FileFormatException
+ {
+ // BH 2018
+ return (file instanceof File ? identify((File) file, protocol) : identify((String) file, protocol));
+
+ }
+
+ public FileFormatI identify(File file, DataSourceType sourceType)
+ throws FileFormatException
+ {
+ // BH 2018
+ String emessage = "UNIDENTIFIED FILE PARSING ERROR";
+ FileParse parser = null;
+ try
+ {
+ parser = new FileParse(file, sourceType);
+ if (parser.isValid())
+ {
+ return identify(parser);
+ }
+ } catch (Exception e)
+ {
+ System.err.println("Error whilst identifying " + file);
+ e.printStackTrace(System.err);
+ emessage = e.getMessage();
+ }
+ if (parser != null)
+ {
+ throw new FileFormatException(parser.errormessage);
+ }
+ throw new FileFormatException(emessage);
+ }
+
/**
* Identify a datasource's file content.
*
}
} catch (Exception e)
{
- System.err.println("Error whilst identifying");
+ System.err.println("Error whilst identifying " + file);
e.printStackTrace(System.err);
emessage = e.getMessage();
}
// preserves original behaviour prior to version 2.3
}
- public FileFormatI identify(AlignmentFileReaderI file, boolean closeSource)
- throws IOException
+ public FileFormatI identify(AlignmentFileReaderI file,
+ boolean closeSource) throws IOException
{
- FileParse fp = new FileParse(file.getInFile(), file.getDataSourceType());
+ FileParse fp = new FileParse(file.getInFile(),
+ file.getDataSourceType());
return identify(fp, closeSource);
}
if (source.inFile != null)
{
String fileStr = source.inFile.getName();
- // possibly a Jalview archive.
- if (fileStr.lastIndexOf(".jar") > -1
- || fileStr.lastIndexOf(".zip") > -1)
+ if (fileStr.contains(".jar")
+ || fileStr.contains(".zip") || fileStr.contains(".jvp"))
{
+ // possibly a Jalview archive (but check further)
reply = FileFormat.Jalview;
}
}
if (!lineswereskipped && data.startsWith("PK"))
{
- reply = FileFormat.Jalview; // archive.
+ reply = FileFormat.Jalview; // archive
break;
}
}
break;
}
- if ((data.indexOf("//") == 0)
- || ((data.indexOf("!!") > -1) && (data.indexOf("!!") < data
- .indexOf("_MULTIPLE_ALIGNMENT "))))
+ if ((data.indexOf("//") == 0) || ((data.indexOf("!!") > -1) && (data
+ .indexOf("!!") < data.indexOf("_MULTIPLE_ALIGNMENT "))))
{
reply = FileFormat.MSF;
}
if (trimmedLength == 0)
{
- System.err
- .println("File Identification failed! - Empty file was read.");
+ System.err.println(
+ "File Identification failed! - Empty file was read.");
throw new FileFormatException("EMPTY DATA FILE");
}
System.out.println("File format identified as " + reply.toString());
return true;
}
+ /**
+ *
+ * @param args
+ * @j2sIgnore
+ */
public static void main(String[] args)
{
for (int i = 0; args != null && i < args.length; i++)
type = ider.identify(args[i], DataSourceType.FILE);
} catch (FileFormatException e)
{
- System.err.println(String.format(
- "Error '%s' identifying file type for %s", args[i],
- e.getMessage()));
+ System.err.println(
+ String.format("Error '%s' identifying file type for %s",
+ args[i], e.getMessage()));
}
System.out.println("Type of " + args[i] + " is " + type);
}
System.err.println("Usage: <Filename> [<Filename> ...]");
}
}
+
+
}