JAL-3541 selectively merged build.gradle and gradle.properties
[jalview.git] / src / jalview / ws / utils / UrlDownloadClient.java
index 448edd9..58632f2 100644 (file)
@@ -21,6 +21,9 @@
 
 package jalview.ws.utils;
 
+import jalview.util.Platform;
+
+import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.net.URL;
@@ -50,61 +53,71 @@ public class UrlDownloadClient
   public static void download(String urlstring, String outfile)
           throws IOException
   {
-    FileOutputStream fos = null;
-    ReadableByteChannel rbc = null;
-    Path temp = null;
-    try
-    {
-      temp = Files.createTempFile(".jalview_", ".tmp");
 
-      URL url = new URL(urlstring);
-      rbc = Channels.newChannel(url.openStream());
-      fos = new FileOutputStream(temp.toString());
-      fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
-
-      // copy tempfile to outfile once our download completes
-      // incase something goes wrong
-      Files.copy(temp, Paths.get(outfile),
-              StandardCopyOption.REPLACE_EXISTING);
-    } catch (IOException e)
-    {
-      throw e;
-    } finally
-    {
+      FileOutputStream fos = null;
+      ReadableByteChannel rbc = null;
+      Path temp = null;
       try
       {
-        if (fos != null)
-        {
-          fos.close();
-        }
+        temp = Files.createTempFile(".jalview_", ".tmp");
+
+        URL url = new URL(urlstring);
+        rbc = Channels.newChannel(url.openStream());
+        fos = new FileOutputStream(temp.toString());
+        fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
+
+        // copy tempfile to outfile once our download completes
+        // incase something goes wrong
+        Files.copy(temp, Paths.get(outfile),
+                StandardCopyOption.REPLACE_EXISTING);
       } catch (IOException e)
       {
-        System.out.println(
-                "Exception while closing download file output stream: "
-                        + e.getMessage());
-      }
-      try
+        throw e;
+      } finally
       {
-        if (rbc != null)
+        try
         {
-          rbc.close();
+          if (fos != null)
+          {
+            fos.close();
+          }
+        } catch (IOException e)
+        {
+          System.out.println(
+                  "Exception while closing download file output stream: "
+                          + e.getMessage());
         }
-      } catch (IOException e)
-      {
-        System.out.println("Exception while closing download channel: "
-                + e.getMessage());
-      }
-      try
-      {
-        if (temp != null)
+        try
+        {
+          if (rbc != null)
+          {
+            rbc.close();
+          }
+        } catch (IOException e)
         {
-          Files.deleteIfExists(temp);
+          System.out.println("Exception while closing download channel: "
+                  + e.getMessage());
+        }
+        try
+        {
+          if (temp != null)
+          {
+            Files.deleteIfExists(temp);
+          }
+        } catch (IOException e)
+        {
+          System.out.println("Exception while deleting download temp file: "
+                  + e.getMessage());
         }
-      } catch (IOException e)
-      {
-        System.out.println("Exception while deleting download temp file: "
-                + e.getMessage());
       }
+
+  }
+
+  public static void download(String urlstring, File tempFile) throws IOException
+  {
+    if (!Platform.setFileBytes(tempFile, urlstring))
+    {
+      download(urlstring, tempFile.toString());
     }
   }
 }