Clover icon

jalviewX

  1. Project Clover database Wed Oct 31 2018 15:13:58 GMT
  2. Package jalview.ws.utils

File UrlDownloadClient.java

 

Coverage histogram

../../../img/srcFileCovDistChart7.png
28% of files have more coverage

Code metrics

6
25
3
1
126
80
10
0.4
8.33
3
3.33

Classes

Class Line # Actions
UrlDownloadClient 36 25 10 10
0.705882470.6%
 

Contributing tests

This file is covered by 1 test. .

Source view

1    /*
2    * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3    * Copyright (C) $$Year-Rel$$ The Jalview Authors
4    *
5    * This file is part of Jalview.
6    *
7    * Jalview is free software: you can redistribute it and/or
8    * modify it under the terms of the GNU General Public License
9    * as published by the Free Software Foundation, either version 3
10    * of the License, or (at your option) any later version.
11    *
12    * Jalview is distributed in the hope that it will be useful, but
13    * WITHOUT ANY WARRANTY; without even the implied warranty
14    * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15    * PURPOSE. See the GNU General Public License for more details.
16    *
17    * You should have received a copy of the GNU General Public License
18    * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
19    * The Jalview Authors are detailed in the 'AUTHORS' file.
20    */
21   
22    package jalview.ws.utils;
23   
24    import java.io.ByteArrayInputStream;
25    import java.io.File;
26    import java.io.FileOutputStream;
27    import java.io.IOException;
28    import java.net.URL;
29    import java.nio.channels.Channels;
30    import java.nio.channels.ReadableByteChannel;
31    import java.nio.file.Files;
32    import java.nio.file.Path;
33    import java.nio.file.Paths;
34    import java.nio.file.StandardCopyOption;
35   
 
36    public class UrlDownloadClient
37    {
 
38  5 toggle public UrlDownloadClient()
39    {
40   
41    }
42   
43    /**
44    * Download and save a file from a URL
45    *
46    * @param urlstring
47    * url to download from, as string
48    * @param outfile
49    * the name of file to save the URLs to
50    * @throws IOException
51    */
 
52  5 toggle public static void download(String urlstring, String outfile)
53    throws IOException
54    {
55   
56  5 FileOutputStream fos = null;
57  5 ReadableByteChannel rbc = null;
58  5 Path temp = null;
59  5 try
60    {
61  5 temp = Files.createTempFile(".jalview_", ".tmp");
62   
63  5 URL url = new URL(urlstring);
64  5 rbc = Channels.newChannel(url.openStream());
65  5 fos = new FileOutputStream(temp.toString());
66  5 fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
67   
68    // copy tempfile to outfile once our download completes
69    // incase something goes wrong
70  5 Files.copy(temp, Paths.get(outfile),
71    StandardCopyOption.REPLACE_EXISTING);
72    } catch (IOException e)
73    {
74  0 throw e;
75    } finally
76    {
77  5 try
78    {
79  5 if (fos != null)
80    {
81  5 fos.close();
82    }
83    } catch (IOException e)
84    {
85  0 System.out.println(
86    "Exception while closing download file output stream: "
87    + e.getMessage());
88    }
89  5 try
90    {
91  5 if (rbc != null)
92    {
93  5 rbc.close();
94    }
95    } catch (IOException e)
96    {
97  0 System.out.println("Exception while closing download channel: "
98    + e.getMessage());
99    }
100  5 try
101    {
102  5 if (temp != null)
103    {
104  5 Files.deleteIfExists(temp);
105    }
106    } catch (IOException e)
107    {
108  0 System.out.println("Exception while deleting download temp file: "
109    + e.getMessage());
110    }
111    }
112   
113    }
114   
 
115  0 toggle public static void download(String urlstring, File tempFile) throws IOException
116    {
117  0 if (/** @j2sNative 1?false: */true) {
118  0 download(urlstring, tempFile.toString());
119    }
120    // JavaScript only
121   
122    /** @j2sNative
123    * tempFile._bytes = swingjs.JSUtil.getFileAsBytes(urlstring);
124    */
125    }
126    }