X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FIdentifyFile.java;h=035c1fa8fbbd3b0a0321f1003a31211934683704;hb=864558097ceffef983b15f24598cfdaf20efd52d;hp=89fc3cd2a1f31fe6a539541cdf890f64aafd8773;hpb=ee198b3ca3687f18a2ee186f4e7c7330f4ea30f0;p=jalview.git diff --git a/src/jalview/io/IdentifyFile.java b/src/jalview/io/IdentifyFile.java index 89fc3cd..035c1fa 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,6 +72,13 @@ public class IdentifyFile // preserves original behaviour prior to version 2.3 } + public FileFormatI identify(AlignmentFileReaderI file, boolean closeSource) + throws IOException + { + FileParse fp = new FileParse(file.getInFile(), file.getDataSourceType()); + return identify(fp, closeSource); + } + /** * Identify contents of source, closing it or resetting source to start * afterwards. @@ -93,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(); @@ -136,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! @@ -254,7 +276,7 @@ public class IdentifyFile } 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("