X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FIdentifyFile.java;h=be0df219dacbbbf21dea75e04b9c7fc5e630491c;hb=8f8feecc3dcaa6546effb25f2bc0362779fc7c1a;hp=bc91e09365ec62d51056ba79de7a5d592056148e;hpb=74b531f56bbaad5c5e06a4744980256fe8110923;p=jalview.git diff --git a/src/jalview/io/IdentifyFile.java b/src/jalview/io/IdentifyFile.java index bc91e09..be0df21 100755 --- a/src/jalview/io/IdentifyFile.java +++ b/src/jalview/io/IdentifyFile.java @@ -30,8 +30,6 @@ import java.io.IOException; */ public class IdentifyFile { - public static final String FeaturesFile = "GFF or Jalview features"; - /** * Identify a datasource's file content. * @@ -74,7 +72,7 @@ public class IdentifyFile // preserves original behaviour prior to version 2.3 } - public FileFormatI identify(AlignmentFileI file, boolean closeSource) + public FileFormatI identify(AlignmentFileReaderI file, boolean closeSource) throws IOException { FileParse fp = new FileParse(file.getInFile(), file.getDataSourceType()); @@ -100,12 +98,15 @@ public class IdentifyFile boolean lineswereskipped = false; boolean isBinary = false; // true if length is non-zero and non-printable // characters are encountered + try { if (!closeSource) { source.mark(); } + boolean aaIndexHeaderRead = false; + while ((data = source.nextLine()) != null) { bytesRead += data.length(); @@ -143,6 +144,20 @@ public class IdentifyFile } data = data.toUpperCase(); + if (data.startsWith(ScoreMatrixFile.SCOREMATRIX)) + { + reply = FileFormat.ScoreMatrix; + break; + } + if (data.startsWith("H ") && !aaIndexHeaderRead) + { + aaIndexHeaderRead = true; + } + if (data.startsWith("D ") && aaIndexHeaderRead) + { + reply = FileFormat.ScoreMatrix; + break; + } if (data.startsWith("##GFF-VERSION")) { // GFF - possibly embedded in a Jalview features file! @@ -259,9 +274,14 @@ public class IdentifyFile // read as a FASTA (probably) break; } + if (data.indexOf("{\"") > -1) + { + reply = FileFormat.Json; + break; + } int lessThan = data.indexOf("<"); if ((lessThan > -1)) // possible Markup Language data i.e HTML, - // RNAML, XML + // RNAML, XML { String upper = data.toUpperCase(); if (upper.substring(lessThan).startsWith(" -1) - { - reply = FileFormat.Json; - break; - } if ((data.length() < 1) || (data.indexOf("#") == 0)) { lineswereskipped = true; @@ -372,8 +387,9 @@ public class IdentifyFile } /** - * Returns true if the data has at least 6 tab-delimited fields _and_ - * fields 4 and 5 are integer (start/end) + * Returns true if the data has at least 6 tab-delimited fields _and_ fields 4 + * and 5 are integer (start/end) + * * @param data * @return */ @@ -384,14 +400,17 @@ public class IdentifyFile return false; } String[] columns = data.split("\t"); - if (columns.length < 6) { + if (columns.length < 6) + { return false; } for (int col = 3; col < 5; col++) { - try { + try + { Integer.parseInt(columns[col]); - } catch (NumberFormatException e) { + } catch (NumberFormatException e) + { return false; } }