X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Futil%2FPlatform.java;h=0a6a5c917159bd2ca2c965e13666791c36ad228c;hb=45dbf681b7894072a9e3f5b6d55bf21f4e02599e;hp=c89f1e7cac137c9e0954dcdf49df7d5ce22bcb08;hpb=47147fdb3af2d37a780e1eb4e01bcc901e57e4e1;p=jalview.git diff --git a/src/jalview/util/Platform.java b/src/jalview/util/Platform.java index c89f1e7..0a6a5c9 100644 --- a/src/jalview/util/Platform.java +++ b/src/jalview/util/Platform.java @@ -33,8 +33,12 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; import java.net.URL; +import java.nio.channels.Channels; +import java.nio.channels.ReadableByteChannel; import java.nio.file.Files; import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardCopyOption; import java.nio.file.attribute.BasicFileAttributes; import java.util.Date; import java.util.Locale; @@ -950,7 +954,54 @@ public class Platform */ public static Locale getLocaleOrNone(Locale loc) { - return (isJS && loc.getCountry() == "en" ? new Locale("") : loc); + return (isJS && loc.getLanguage() == "en" ? new Locale("") : loc); + } + + /** + * From UrlDownloadClient; trivial in JavaScript; painful in Java. + * + * @param urlstring + * @param outfile + * @throws IOException + */ + public static void download(String urlstring, String outfile) + throws IOException + { + Path temp = null; + try (InputStream is = new URL(urlstring).openStream()) + { + if (isJS) + { // so much easier! + streamToFile(is, new File(outfile)); + return; + } + temp = Files.createTempFile(".jalview_", ".tmp"); + try (FileOutputStream fos = new FileOutputStream(temp.toString()); + ReadableByteChannel rbc = Channels.newChannel(is)) + { + 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 + { + try + { + if (temp != null) + { + Files.deleteIfExists(temp); + } + } catch (IOException e) + { + System.out.println("Exception while deleting download temp file: " + + e.getMessage()); + } + } } }