JAL-3032 DND enabled; additional io changes for File vs. String
[jalview.git] / src / jalview / io / FileParse.java
index bb03b35..4df9165 100755 (executable)
@@ -40,8 +40,6 @@ import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.zip.GZIPInputStream;
 
-import javajs.util.Rdr;
-
 /**
  * implements a random access wrapper around a particular datasource, for
  * passing to identifyFile and AlignFile objects.
@@ -59,8 +57,12 @@ public class FileParse
 
   public File inFile = null;
 
-  public byte[] bytes; // from JavaScript
+  private byte[] bytes; // from JavaScript
 
+  public byte[] getBytes()
+  {
+    return bytes;
+  }
   /**
    * a viewport associated with the current file operation. May be null. May
    * move to different object.
@@ -308,31 +310,29 @@ public class FileParse
    * Create a datasource for input to Jalview. See AppletFormatAdapter for the
    * types of sources that are handled.
    * 
-   * @param fileStr
-   *          - datasource locator/content
+   * @param file
+   *          - datasource locator/content as File or String
    * @param sourceType
    *          - protocol of source
    * @throws MalformedURLException
    * @throws IOException
    */
-  public FileParse(String fileStr, DataSourceType sourceType)
-          throws MalformedURLException, IOException
-  {
-
-    this(null, fileStr, sourceType, false);
-  }
-
-  public FileParse(File file, DataSourceType sourceType)
+  public FileParse(Object file, DataSourceType sourceType)
           throws MalformedURLException, IOException
   {
-
-    this(file, file.getPath(), sourceType, true);
+    if (file instanceof File)
+    {
+      parse((File) file, ((File) file).getPath(), sourceType, true);
+    }
+    else
+    {
+      parse(null, file.toString(), sourceType, false);
+    }
   }
 
-  private FileParse(File file, String fileStr, DataSourceType sourceType,
+  private void parse(File file, String fileStr, DataSourceType sourceType,
           boolean isFileObject) throws MalformedURLException, IOException
   {
-
     /**
      * @j2sNative
      * 
@@ -349,7 +349,7 @@ public class FileParse
       {
         // this will be from JavaScript
         inFile = file;
-        dataIn = new BufferedReader(new java.io.InputStreamReader(new ByteArrayInputStream(bytes)));
+        dataIn = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(bytes)));
         dataName = fileStr;
       }
       else if (checkFileSource(fileStr))
@@ -375,18 +375,16 @@ public class FileParse
     }
     else if (sourceType == DataSourceType.RELATIVE_URL)
     {
-      String data = null;
       /**
        * BH 2018 hack for no support for access-origin
        * 
        * @j2sNative
        * 
-       *            data = $.ajax({url:fileStr, async:false}).responseText;
+       * this.bytes = swingjs.JSToolkit.getFileAsBytes(fileStr);
        * 
        */
 
-      dataIn = Rdr.getBR(data);
-      
+      dataIn = new BufferedReader(new java.io.InputStreamReader(new ByteArrayInputStream(bytes)));      
       dataName = fileStr;
 
     }