JAL-1645 Version-Rel Version 2.9 Year-Rel 2015 Licensing glob
[jalview.git] / src / jalview / io / IdentifyFile.java
index 4c83ac1..a241e0e 100755 (executable)
@@ -1,6 +1,6 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9)
+ * Copyright (C) 2015 The Jalview Authors
  *
  * This file is part of Jalview.
  *
@@ -142,53 +142,8 @@ public class IdentifyFile
           reply = "STH";
           break;
         }
-        // if (data.matches("<(\"[^\"]*\"|'[^']*'|[^'\">])*>"))
-        if (data.matches("<(?i)html(\"[^\"]*\"|'[^']*'|[^'\">])*>"))
-        {
-          reply = HtmlFile.FILE_DESC;
-          break;
-        }
-
-        if (data.matches("<(?i)rnaml (\"[^\"]*\"|'[^']*'|[^'\">])*>"))
-        {
-          reply = "RNAML";
-          break;
-        }
-
-         if (data.indexOf("{\"") > -1)
-         {
-         reply = JSONFile.FILE_DESC;
-         break;
-         }
-        if ((data.length() < 1) || (data.indexOf("#") == 0))
-        {
-          lineswereskipped = true;
-          continue;
-        }
-
-        if (data.indexOf("PILEUP") > -1)
-        {
-          reply = "PileUp";
-
-          break;
-        }
-
-        if ((data.indexOf("//") == 0)
-                || ((data.indexOf("!!") > -1) && (data.indexOf("!!") < data
-                        .indexOf("_MULTIPLE_ALIGNMENT "))))
-        {
-          reply = "MSF";
-
-          break;
-        }
-        else if (data.indexOf("CLUSTAL") > -1)
-        {
-          reply = "CLUSTAL";
-
-          break;
-        }
-
-        else if (data.indexOf(">") > -1)
+        // if (data.indexOf(">") > -1)
+        if (data.startsWith(">"))
         {
           // FASTA, PIR file or BLC file
           boolean checkPIR = false, starterm = false;
@@ -280,6 +235,66 @@ public class IdentifyFile
           // read as a FASTA (probably)
           break;
         }
+        if ((data.indexOf("<") > -1)) // possible Markup Language data i.e HTML,
+                                      // RNAML, XML
+        {
+          boolean identified = false;
+          do
+          {
+            if (data.matches("<(?i)html(\"[^\"]*\"|'[^']*'|[^'\">])*>"))
+            {
+              reply = HtmlFile.FILE_DESC;
+              identified = true;
+              break;
+            }
+
+            if (data.matches("<(?i)rnaml (\"[^\"]*\"|'[^']*'|[^'\">])*>"))
+            {
+              reply = "RNAML";
+              identified = true;
+              break;
+            }
+          } while ((data = source.nextLine()) != null);
+
+          if (identified)
+          {
+            break;
+          }
+        }
+
+        if (data.indexOf("{\"") > -1)
+        {
+          reply = JSONFile.FILE_DESC;
+          break;
+        }
+        if ((data.length() < 1) || (data.indexOf("#") == 0))
+        {
+          lineswereskipped = true;
+          continue;
+        }
+
+        if (data.indexOf("PILEUP") > -1)
+        {
+          reply = "PileUp";
+
+          break;
+        }
+
+        if ((data.indexOf("//") == 0)
+                || ((data.indexOf("!!") > -1) && (data.indexOf("!!") < data
+                        .indexOf("_MULTIPLE_ALIGNMENT "))))
+        {
+          reply = "MSF";
+
+          break;
+        }
+        else if (data.indexOf("CLUSTAL") > -1)
+        {
+          reply = "CLUSTAL";
+
+          break;
+        }
+
         else if (data.indexOf("HEADER") == 0 || data.indexOf("ATOM") == 0)
         {
           reply = "PDB";
@@ -291,19 +306,18 @@ public class IdentifyFile
           break;
         }
 
-
         /*
          * // TODO comment out SimpleBLAST identification for Jalview 2.4.1 else
          * if (!lineswereskipped && data.indexOf("BLAST")<4) { reply =
          * "SimpleBLAST"; break;
-         *
+         * 
          * } // end comments for Jalview 2.4.1
          */
         else if (!lineswereskipped && data.charAt(0) != '*'
                 && data.charAt(0) != ' '
                 && data.indexOf(":") < data.indexOf(",")) // &&
-          // data.indexOf(",")<data.indexOf(",",
-          // data.indexOf(",")))
+        // data.indexOf(",")<data.indexOf(",",
+        // data.indexOf(",")))
         {
           // file looks like a concise JNet file
           reply = "JnetFile";
@@ -329,7 +343,7 @@ public class IdentifyFile
     if (length == 0)
     {
       System.err
-      .println("File Identification failed! - Empty file was read.");
+              .println("File Identification failed! - Empty file was read.");
       return "EMPTY DATA FILE";
     }
     return reply;