Merge branch 'develop' into ben/gecos_colour_schemes
[jalview.git] / src / jalview / io / IdentifyFile.java
index b312474..c21127e 100755 (executable)
@@ -20,6 +20,8 @@
  */
 package jalview.io;
 
+import java.util.Locale;
+
 import java.io.File;
 import java.io.IOException;
 
@@ -31,12 +33,14 @@ import java.io.IOException;
  */
 public class IdentifyFile
 {
-  
-  public FileFormatI identify(Object file, DataSourceType protocol) throws FileFormatException
+
+  public FileFormatI identify(Object file, DataSourceType protocol)
+          throws FileFormatException
   {
     // BH 2018
-    return (file instanceof File ? identify((File) file, protocol) : identify((String) file, protocol));
-    
+    return (file instanceof File ? identify((File) file, protocol)
+            : identify((String) file, protocol));
+
   }
 
   public FileFormatI identify(File file, DataSourceType sourceType)
@@ -165,8 +169,8 @@ public class IdentifyFile
           if (source.inFile != null)
           {
             String fileStr = source.inFile.getName();
-            if (fileStr.contains(".jar")
-                    || fileStr.contains(".zip") || fileStr.contains(".jvp"))
+            if (fileStr.contains(".jar") || fileStr.contains(".zip")
+                    || fileStr.contains(".jvp"))
             {
               // possibly a Jalview archive (but check further)
               reply = FileFormat.Jalview;
@@ -178,13 +182,26 @@ public class IdentifyFile
             break;
           }
         }
-        data = data.toUpperCase();
+        data = data.toUpperCase(Locale.ROOT);
 
         if (data.startsWith(ScoreMatrixFile.SCOREMATRIX))
         {
           reply = FileFormat.ScoreMatrix;
           break;
         }
+        if (data.startsWith("LOCUS"))
+        {
+          reply = FileFormat.GenBank;
+          break;
+        }
+        if (data.startsWith("ID "))
+        {
+          if (data.substring(2).trim().split(";").length == 7)
+          {
+            reply = FileFormat.Embl;
+            break;
+          }
+        }
         if (data.startsWith("H ") && !aaIndexHeaderRead)
         {
           aaIndexHeaderRead = true;
@@ -319,7 +336,7 @@ public class IdentifyFile
         if ((lessThan > -1)) // possible Markup Language data i.e HTML,
                              // RNAML, XML
         {
-          String upper = data.toUpperCase();
+          String upper = data.toUpperCase(Locale.ROOT);
           if (upper.substring(lessThan).startsWith("<HTML"))
           {
             reply = FileFormat.Html;
@@ -480,5 +497,4 @@ public class IdentifyFile
     }
   }
 
 }