Clover icon

Coverage Report

  1. Project Clover database Thu Aug 13 2020 12:04:21 BST
  2. Package jalview.ws.utils

File UrlDownloadClient.java

 

Coverage histogram

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

Code metrics

8
25
3
1
123
81
11
0.44
8.33
3
3.67

Classes

Class Line # Actions
UrlDownloadClient 37 25 11
0.638888963.9%
 

Contributing tests

This file is covered by 8 tests. .

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 jalview.util.Platform;
25   
26    import java.io.File;
27    import java.io.FileOutputStream;
28    import java.io.IOException;
29    import java.net.URL;
30    import java.nio.channels.Channels;
31    import java.nio.channels.ReadableByteChannel;
32    import java.nio.file.Files;
33    import java.nio.file.Path;
34    import java.nio.file.Paths;
35    import java.nio.file.StandardCopyOption;
36   
 
37    public class UrlDownloadClient
38    {
 
39  0 toggle public UrlDownloadClient()
40    {
41   
42    }
43   
44    /**
45    * Download and save a file from a URL
46    *
47    * @param urlstring
48    * url to download from, as string
49    * @param outfile
50    * the name of file to save the URLs to
51    * @throws IOException
52    */
 
53  18 toggle public static void download(String urlstring, String outfile)
54    throws IOException
55    {
56   
57  18 FileOutputStream fos = null;
58  18 ReadableByteChannel rbc = null;
59  18 Path temp = null;
60  18 try
61    {
62  18 temp = Files.createTempFile(".jalview_", ".tmp");
63   
64  18 URL url = new URL(urlstring);
65  18 rbc = Channels.newChannel(url.openStream());
66  18 fos = new FileOutputStream(temp.toString());
67  18 fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
68   
69    // copy tempfile to outfile once our download completes
70    // incase something goes wrong
71  18 Files.copy(temp, Paths.get(outfile),
72    StandardCopyOption.REPLACE_EXISTING);
73    } catch (IOException e)
74    {
75  0 throw e;
76    } finally
77    {
78  18 try
79    {
80  18 if (fos != null)
81    {
82  18 fos.close();
83    }
84    } catch (IOException e)
85    {
86  0 System.out.println(
87    "Exception while closing download file output stream: "
88    + e.getMessage());
89    }
90  18 try
91    {
92  18 if (rbc != null)
93    {
94  18 rbc.close();
95    }
96    } catch (IOException e)
97    {
98  0 System.out.println("Exception while closing download channel: "
99    + e.getMessage());
100    }
101  18 try
102    {
103  18 if (temp != null)
104    {
105  18 Files.deleteIfExists(temp);
106    }
107    } catch (IOException e)
108    {
109  0 System.out.println("Exception while deleting download temp file: "
110    + e.getMessage());
111    }
112    }
113   
114    }
115   
 
116  0 toggle public static void download(String urlstring, File tempFile) throws IOException
117    {
118  0 if (!Platform.setFileBytes(tempFile, urlstring))
119    {
120  0 download(urlstring, tempFile.toString());
121    }
122    }
123    }