mirror of
https://github.com/ysoftdevs/DependencyCheck.git
synced 2026-02-23 02:45:19 +01:00
1090 lines
150 KiB
HTML
1090 lines
150 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
|
<title>Coverage Report</title>
|
|
<link title="Style" type="text/css" rel="stylesheet" href="css/main.css"/>
|
|
<script type="text/javascript" src="js/popup.js"></script>
|
|
</head>
|
|
<body>
|
|
<h5>Coverage Report - org.owasp.dependencycheck.data.nvdcve.xml.DatabaseUpdater</h5>
|
|
<div class="separator"> </div>
|
|
<table class="report">
|
|
<thead><tr> <td class="heading">Classes in this File</td> <td class="heading"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Line Coverage</a></td> <td class="heading"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Branch Coverage</a></td> <td class="heading"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Complexity</a></td></tr></thead>
|
|
<tr><td><a href="org.owasp.dependencycheck.data.nvdcve.xml.DatabaseUpdater.html">DatabaseUpdater</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">0%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:0px"><span class="text">0/262</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">0%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:0px"><span class="text">0/76</span></div></div></td></tr></table></td><td class="value"><span class="hidden">5.7894736842105265;</span>5.789</td></tr>
|
|
<tr><td><a href="org.owasp.dependencycheck.data.nvdcve.xml.DatabaseUpdater.html">DatabaseUpdater$NvdCveUrl</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">0%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:0px"><span class="text">0/17</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></td><td class="percentgraph"><div class="percentgraph"><div class="na" style="width:100px"><span class="text"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></span></div></div></td></tr></table></td><td class="value"><span class="hidden">5.7894736842105265;</span>5.789</td></tr>
|
|
|
|
</table>
|
|
<div class="separator"> </div>
|
|
<table cellspacing="0" cellpadding="0" class="src">
|
|
<tr> <td class="numLine"> 1</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment">/*</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 2</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * This file is part of dependency-check-core.</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 3</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 4</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * Dependency-check-core is free software: you can redistribute it and/or modify it</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 5</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * under the terms of the GNU General Public License as published by the Free</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 6</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * Software Foundation, either version 3 of the License, or (at your option) any</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 7</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * later version.</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 8</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 9</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * Dependency-check-core is distributed in the hope that it will be useful, but</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 10</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 11</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 12</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * details.</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 13</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 14</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * You should have received a copy of the GNU General Public License along with</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 15</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * dependency-check-core. If not, see http://www.gnu.org/licenses/.</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 16</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 17</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * Copyright (c) 2012 Jeremy Long. All Rights Reserved.</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 18</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 19</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">package</span> org.owasp.dependencycheck.data.nvdcve.xml;</pre></td></tr>
|
|
<tr> <td class="numLine"> 20</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLine"> 21</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">import</span> java.io.File;</pre></td></tr>
|
|
<tr> <td class="numLine"> 22</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">import</span> java.io.FileInputStream;</pre></td></tr>
|
|
<tr> <td class="numLine"> 23</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">import</span> java.io.FileNotFoundException;</pre></td></tr>
|
|
<tr> <td class="numLine"> 24</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">import</span> java.io.FileOutputStream;</pre></td></tr>
|
|
<tr> <td class="numLine"> 25</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">import</span> java.io.IOException;</pre></td></tr>
|
|
<tr> <td class="numLine"> 26</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">import</span> java.io.InputStream;</pre></td></tr>
|
|
<tr> <td class="numLine"> 27</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">import</span> java.io.OutputStream;</pre></td></tr>
|
|
<tr> <td class="numLine"> 28</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">import</span> java.io.OutputStreamWriter;</pre></td></tr>
|
|
<tr> <td class="numLine"> 29</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">import</span> javax.xml.parsers.ParserConfigurationException;</pre></td></tr>
|
|
<tr> <td class="numLine"> 30</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">import</span> org.owasp.dependencycheck.data.CachedWebDataSource;</pre></td></tr>
|
|
<tr> <td class="numLine"> 31</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">import</span> java.net.MalformedURLException;</pre></td></tr>
|
|
<tr> <td class="numLine"> 32</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">import</span> java.net.URL;</pre></td></tr>
|
|
<tr> <td class="numLine"> 33</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">import</span> java.sql.SQLException;</pre></td></tr>
|
|
<tr> <td class="numLine"> 34</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">import</span> java.util.Calendar;</pre></td></tr>
|
|
<tr> <td class="numLine"> 35</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">import</span> java.util.Date;</pre></td></tr>
|
|
<tr> <td class="numLine"> 36</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">import</span> java.util.HashMap;</pre></td></tr>
|
|
<tr> <td class="numLine"> 37</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">import</span> java.util.List;</pre></td></tr>
|
|
<tr> <td class="numLine"> 38</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">import</span> java.util.Map;</pre></td></tr>
|
|
<tr> <td class="numLine"> 39</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">import</span> java.util.Properties;</pre></td></tr>
|
|
<tr> <td class="numLine"> 40</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">import</span> java.util.logging.Level;</pre></td></tr>
|
|
<tr> <td class="numLine"> 41</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">import</span> java.util.logging.Logger;</pre></td></tr>
|
|
<tr> <td class="numLine"> 42</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">import</span> javax.xml.parsers.SAXParser;</pre></td></tr>
|
|
<tr> <td class="numLine"> 43</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">import</span> javax.xml.parsers.SAXParserFactory;</pre></td></tr>
|
|
<tr> <td class="numLine"> 44</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">import</span> org.owasp.dependencycheck.data.UpdateException;</pre></td></tr>
|
|
<tr> <td class="numLine"> 45</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">import</span> org.owasp.dependencycheck.data.cpe.Index;</pre></td></tr>
|
|
<tr> <td class="numLine"> 46</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">import</span> org.owasp.dependencycheck.data.nvdcve.CveDB;</pre></td></tr>
|
|
<tr> <td class="numLine"> 47</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">import</span> org.owasp.dependencycheck.dependency.VulnerableSoftware;</pre></td></tr>
|
|
<tr> <td class="numLine"> 48</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">import</span> org.owasp.dependencycheck.utils.DownloadFailedException;</pre></td></tr>
|
|
<tr> <td class="numLine"> 49</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">import</span> org.owasp.dependencycheck.utils.Downloader;</pre></td></tr>
|
|
<tr> <td class="numLine"> 50</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">import</span> org.owasp.dependencycheck.utils.FileUtils;</pre></td></tr>
|
|
<tr> <td class="numLine"> 51</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">import</span> org.owasp.dependencycheck.utils.InvalidSettingException;</pre></td></tr>
|
|
<tr> <td class="numLine"> 52</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">import</span> org.owasp.dependencycheck.utils.Settings;</pre></td></tr>
|
|
<tr> <td class="numLine"> 53</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">import</span> org.xml.sax.SAXException;</pre></td></tr>
|
|
<tr> <td class="numLine"> 54</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">import</span> org.owasp.dependencycheck.data.nvdcve.DatabaseException;</pre></td></tr>
|
|
<tr> <td class="numLine"> 55</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLine"> 56</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 57</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 58</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * @author Jeremy Long (jeremy.long@owasp.org)</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 59</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 60</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">public</span> <span class="keyword">class</span> DatabaseUpdater <span class="keyword">implements</span> CachedWebDataSource {</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 61</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLine"> 62</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 63</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * The name of the properties file containing the timestamp of the last</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 64</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * update.</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 65</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 66</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> String UPDATE_PROPERTIES_FILE = <span class="string">"lastupdated.prop"</span>;</pre></td></tr>
|
|
<tr> <td class="numLine"> 67</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 68</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * The properties file key for the last updated field - used to store the</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 69</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * last updated time of the Modified NVD CVE xml file.</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 70</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 71</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> String LAST_UPDATED_MODIFIED = <span class="string">"lastupdated.modified"</span>;</pre></td></tr>
|
|
<tr> <td class="numLine"> 72</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 73</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * Stores the last updated time for each of the NVD CVE files. These</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 74</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * timestamps should be updated if we process the modified file within 7</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 75</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * days of the last update.</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 76</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 77</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> String LAST_UPDATED_BASE = <span class="string">"lastupdated."</span>;</pre></td></tr>
|
|
<tr> <td class="numLine"> 78</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 79</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * Modified key word.</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 80</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 81</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">final</span> String MODIFIED = <span class="string">"modified"</span>;</pre></td></tr>
|
|
<tr> <td class="numLine"> 82</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 83</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * Reference to the Cve Database.</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 84</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 85</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">private</span> CveDB cveDB = <span class="keyword">null</span>;</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 86</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 87</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * Reference to the Cpe Index.</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 88</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 89</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">private</span> Index cpeIndex = <span class="keyword">null</span>;</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 90</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLine"> 91</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 92</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * <p>Downloads the latest NVD CVE XML file from the web and imports it into</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 93</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * the current CVE Database.</p></span></pre></td></tr>
|
|
<tr> <td class="numLine"> 94</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 95</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * @throws UpdateException is thrown if there is an error updating the</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 96</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * database</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 97</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 98</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">void</span> update() <span class="keyword">throws</span> UpdateException {</pre></td></tr>
|
|
<tr> <td class="numLine"> 99</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 100</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">final</span> Map<String, NvdCveUrl> update = updateNeeded();</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 101</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">int</span> maxUpdates = 0;</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 102</td> <td class="nbHitsUncovered"><a title="Line 102: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 102: Conditional coverage 0% (0/2)."> <span class="keyword">for</span> (NvdCveUrl cve : update.values()) {</a></span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 103</td> <td class="nbHitsUncovered"><a title="Line 103: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 103: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (cve.getNeedsUpdate()) {</a></span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 104</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> maxUpdates += 1;</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 105</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> }</pre></td></tr>
|
|
<tr> <td class="numLine"> 106</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> }</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 107</td> <td class="nbHitsUncovered"><a title="Line 107: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 107: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (maxUpdates > 3) {</a></span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 108</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(DatabaseUpdater.<span class="keyword">class</span>.getName()).log(Level.INFO,</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 109</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="string">"NVD CVE requires several updates; this could take a couple of minutes."</span>);</pre></td></tr>
|
|
<tr> <td class="numLine"> 110</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> }</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 111</td> <td class="nbHitsUncovered"><a title="Line 111: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 111: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (maxUpdates > 0) {</a></span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 112</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> openDataStores();</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 113</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> }</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 114</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">int</span> count = 0;</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 115</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLineCover"> 116</td> <td class="nbHitsUncovered"><a title="Line 116: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 116: Conditional coverage 0% (0/2)."> <span class="keyword">for</span> (NvdCveUrl cve : update.values()) {</a></span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 117</td> <td class="nbHitsUncovered"><a title="Line 117: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 117: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (cve.getNeedsUpdate()) {</a></span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 118</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> count += 1;</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 119</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(DatabaseUpdater.<span class="keyword">class</span>.getName()).log(Level.INFO,</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 120</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="string">"Updating NVD CVE ({0} of {1})"</span>, <span class="keyword">new</span> Object[]{count, maxUpdates});</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 121</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> URL url = <span class="keyword">new</span> URL(cve.getUrl());</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 122</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> File outputPath = <span class="keyword">null</span>;</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 123</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> File outputPath12 = <span class="keyword">null</span>;</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 124</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 125</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(DatabaseUpdater.<span class="keyword">class</span>.getName()).log(Level.INFO,</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 126</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="string">"Downloading {0}"</span>, cve.getUrl());</pre></td></tr>
|
|
<tr> <td class="numLine"> 127</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLineCover"> 128</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> outputPath = File.createTempFile(<span class="string">"cve"</span> + cve.getId() + <span class="string">"_"</span>, <span class="string">".xml"</span>);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 129</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Downloader.fetchFile(url, outputPath, <span class="keyword">false</span>);</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 130</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLineCover"> 131</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> url = <span class="keyword">new</span> URL(cve.getOldSchemaVersionUrl());</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 132</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> outputPath12 = File.createTempFile(<span class="string">"cve_1_2_"</span> + cve.getId() + <span class="string">"_"</span>, <span class="string">".xml"</span>);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 133</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Downloader.fetchFile(url, outputPath12, <span class="keyword">false</span>);</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 134</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLineCover"> 135</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(DatabaseUpdater.<span class="keyword">class</span>.getName()).log(Level.INFO,</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 136</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="string">"Processing {0}"</span>, cve.getUrl());</pre></td></tr>
|
|
<tr> <td class="numLine"> 137</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLineCover"> 138</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> importXML(outputPath, outputPath12);</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 139</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLineCover"> 140</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> cveDB.commit();</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 141</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> cpeIndex.commit();</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 142</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLineCover"> 143</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> writeLastUpdatedPropertyFile(cve);</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 144</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLineCover"> 145</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(DatabaseUpdater.<span class="keyword">class</span>.getName()).log(Level.INFO,</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 146</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="string">"Completed update {0} of {1}"</span>, <span class="keyword">new</span> Object[]{count, maxUpdates});</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 147</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (FileNotFoundException ex) {</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 148</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> <span class="keyword">new</span> UpdateException(ex);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 149</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (ParserConfigurationException ex) {</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 150</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> <span class="keyword">new</span> UpdateException(ex);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 151</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (SAXException ex) {</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 152</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> <span class="keyword">new</span> UpdateException(ex);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 153</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (IOException ex) {</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 154</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> <span class="keyword">new</span> UpdateException(ex);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 155</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (SQLException ex) {</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 156</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> <span class="keyword">new</span> UpdateException(ex);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 157</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (DatabaseException ex) {</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 158</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> <span class="keyword">new</span> UpdateException(ex);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 159</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (ClassNotFoundException ex) {</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 160</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> <span class="keyword">new</span> UpdateException(ex);</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 161</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> } <span class="keyword">finally</span> {</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 162</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">boolean</span> deleted = <span class="keyword">false</span>;</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 163</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 164</td> <td class="nbHitsUncovered"><a title="Line 164: Conditional coverage 0% (0/4) [each condition: 0%, 0%]."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 164: Conditional coverage 0% (0/4) [each condition: 0%, 0%]."> <span class="keyword">if</span> (outputPath != <span class="keyword">null</span> && outputPath.exists()) {</a></span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 165</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> deleted = outputPath.delete();</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 166</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> }</pre></td></tr>
|
|
<tr> <td class="numLine"> 167</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> } <span class="keyword">finally</span> {</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 168</td> <td class="nbHitsUncovered"><a title="Line 168: Conditional coverage 0% (0/6) [each condition: 0%, 0%, 0%]."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 168: Conditional coverage 0% (0/6) [each condition: 0%, 0%, 0%]."> <span class="keyword">if</span> (outputPath != <span class="keyword">null</span> && (outputPath.exists() || !deleted)) {</a></span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 169</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> outputPath.deleteOnExit();</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 170</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> }</pre></td></tr>
|
|
<tr> <td class="numLine"> 171</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> }</pre></td></tr>
|
|
<tr> <td class="numLine"> 172</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 173</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> deleted = <span class="keyword">false</span>;</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 174</td> <td class="nbHitsUncovered"><a title="Line 174: Conditional coverage 0% (0/4) [each condition: 0%, 0%]."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 174: Conditional coverage 0% (0/4) [each condition: 0%, 0%]."> <span class="keyword">if</span> (outputPath12 != <span class="keyword">null</span> && outputPath12.exists()) {</a></span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 175</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> deleted = outputPath12.delete();</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 176</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> }</pre></td></tr>
|
|
<tr> <td class="numLine"> 177</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> } <span class="keyword">finally</span> {</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 178</td> <td class="nbHitsUncovered"><a title="Line 178: Conditional coverage 0% (0/6) [each condition: 0%, 0%, 0%]."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 178: Conditional coverage 0% (0/6) [each condition: 0%, 0%, 0%]."> <span class="keyword">if</span> (outputPath12 != <span class="keyword">null</span> && (outputPath12.exists() || !deleted)) {</a></span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 179</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> outputPath12.deleteOnExit();</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 180</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> }</pre></td></tr>
|
|
<tr> <td class="numLine"> 181</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> }</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 182</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 183</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 184</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> }</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 185</td> <td class="nbHitsUncovered"><a title="Line 185: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 185: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (maxUpdates >= 1) {</a></span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 186</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> ensureModifiedIsInLastUpdatedProperties(update);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 187</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> cveDB.cleanupDatabase();</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 188</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> }</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 189</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (MalformedURLException ex) {</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 190</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> <span class="keyword">new</span> UpdateException(ex);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 191</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (DownloadFailedException ex) {</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 192</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> <span class="keyword">new</span> UpdateException(ex);</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 193</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> } <span class="keyword">finally</span> {</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 194</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> closeDataStores();</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 195</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 196</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 197</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLine"> 198</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 199</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * Imports the NVD CVE XML File into the Lucene Index.</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 200</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 201</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * @param file the file containing the NVD CVE XML</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 202</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * @param oldVersion contains the file containing the NVD CVE XML 1.2</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 203</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * @throws ParserConfigurationException is thrown if there is a parser</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 204</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * configuration exception</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 205</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * @throws SAXException is thrown if there is a SAXException</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 206</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * @throws IOException is thrown if there is a ioexception</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 207</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * @throws SQLException is thrown if there is a sql exception</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 208</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * @throws DatabaseException is thrown if there is a database exception</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 209</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * @throws ClassNotFoundException thrown if the h2 database driver cannot be</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 210</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * loaded</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 211</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 212</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">void</span> importXML(File file, File oldVersion)</pre></td></tr>
|
|
<tr> <td class="numLine"> 213</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">throws</span> ParserConfigurationException, SAXException, IOException, SQLException, DatabaseException, ClassNotFoundException {</pre></td></tr>
|
|
<tr> <td class="numLine"> 214</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLineCover"> 215</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">final</span> SAXParserFactory factory = SAXParserFactory.newInstance();</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 216</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">final</span> SAXParser saxParser = factory.newSAXParser();</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 217</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLineCover"> 218</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">final</span> NvdCve12Handler cve12Handler = <span class="keyword">new</span> NvdCve12Handler();</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 219</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> saxParser.parse(oldVersion, cve12Handler);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 220</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">final</span> Map<String, List<VulnerableSoftware>> prevVersionVulnMap = cve12Handler.getVulnerabilities();</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 221</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLineCover"> 222</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">final</span> NvdCve20Handler cve20Handler = <span class="keyword">new</span> NvdCve20Handler();</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 223</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> cve20Handler.setCveDB(cveDB);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 224</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> cve20Handler.setPrevVersionVulnMap(prevVersionVulnMap);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 225</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> cve20Handler.setCpeIndex(cpeIndex);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 226</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> saxParser.parse(file, cve20Handler);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 227</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 228</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLine"> 229</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 230</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * Closes the CVE and CPE data stores.</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 231</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 232</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">void</span> closeDataStores() {</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 233</td> <td class="nbHitsUncovered"><a title="Line 233: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 233: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (cveDB != <span class="keyword">null</span>) {</a></span></pre></td></tr>
|
|
<tr> <td class="numLine"> 234</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 235</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> cveDB.close();</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 236</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (Exception ignore) {</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 237</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(DatabaseUpdater.<span class="keyword">class</span>.getName()).log(Level.FINEST, <span class="string">"Error closing the cveDB"</span>, ignore);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 238</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 239</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> }</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 240</td> <td class="nbHitsUncovered"><a title="Line 240: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 240: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (cpeIndex != <span class="keyword">null</span>) {</a></span></pre></td></tr>
|
|
<tr> <td class="numLine"> 241</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 242</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> cpeIndex.close();</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 243</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (Exception ignore) {</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 244</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(DatabaseUpdater.<span class="keyword">class</span>.getName()).log(Level.FINEST, <span class="string">"Error closing the cpeIndex"</span>, ignore);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 245</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 246</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> }</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 247</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 248</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLine"> 249</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 250</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * Opens the CVE and CPE data stores.</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 251</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 252</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * @throws UpdateException thrown if a data store cannot be opened</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 253</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 254</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">void</span> openDataStores() <span class="keyword">throws</span> UpdateException {</pre></td></tr>
|
|
<tr> <td class="numLine"> 255</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment">//open the cve and cpe data stores</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 256</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 257</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> cveDB = <span class="keyword">new</span> CveDB();</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 258</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> cveDB.open();</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 259</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> cpeIndex = <span class="keyword">new</span> Index();</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 260</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> cpeIndex.openIndexWriter();</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 261</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (IOException ex) {</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 262</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> closeDataStores();</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 263</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(DatabaseUpdater.<span class="keyword">class</span>.getName()).log(Level.FINE, <span class="string">"IO Error opening databases"</span>, ex);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 264</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> <span class="keyword">new</span> UpdateException(<span class="string">"Error updating the CPE/CVE data, please see the log file for more details."</span>);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 265</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (SQLException ex) {</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 266</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> closeDataStores();</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 267</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(DatabaseUpdater.<span class="keyword">class</span>.getName()).log(Level.FINE, <span class="string">"SQL Exception opening databases"</span>, ex);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 268</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> <span class="keyword">new</span> UpdateException(<span class="string">"Error updating the CPE/CVE data, please see the log file for more details."</span>);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 269</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (DatabaseException ex) {</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 270</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> closeDataStores();</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 271</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(DatabaseUpdater.<span class="keyword">class</span>.getName()).log(Level.FINE, <span class="string">"Database Exception opening databases"</span>, ex);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 272</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> <span class="keyword">new</span> UpdateException(<span class="string">"Error updating the CPE/CVE data, please see the log file for more details."</span>);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 273</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (ClassNotFoundException ex) {</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 274</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> closeDataStores();</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 275</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(DatabaseUpdater.<span class="keyword">class</span>.getName()).log(Level.FINE, <span class="string">"Class not found exception opening databases"</span>, ex);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 276</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> <span class="keyword">new</span> UpdateException(<span class="string">"Error updating the CPE/CVE data, please see the log file for more details."</span>);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 277</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 278</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 279</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLine"> 280</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment">//<editor-fold defaultstate="collapsed" desc="Code to read/write properties files regarding the last update dates"></span></pre></td></tr>
|
|
<tr> <td class="numLine"> 281</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 282</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * Writes a properties file containing the last updated date to the</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 283</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * VULNERABLE_CPE directory.</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 284</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 285</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * @param updatedValue the updated nvdcve entry</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 286</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * @throws UpdateException is thrown if there is an update exception</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 287</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 288</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">void</span> writeLastUpdatedPropertyFile(NvdCveUrl updatedValue) <span class="keyword">throws</span> UpdateException {</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 289</td> <td class="nbHitsUncovered"><a title="Line 289: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 289: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (updatedValue == <span class="keyword">null</span>) {</a></span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 290</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span>;</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 291</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> }</pre></td></tr>
|
|
<tr> <td class="numLine"> 292</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> String dir;</pre></td></tr>
|
|
<tr> <td class="numLine"> 293</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 294</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> dir = CveDB.getDataDirectory().getCanonicalPath();</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 295</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (IOException ex) {</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 296</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(DatabaseUpdater.<span class="keyword">class</span>.getName()).log(Level.FINE, <span class="string">"Error updating the databases propterty file."</span>, ex);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 297</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> <span class="keyword">new</span> UpdateException(<span class="string">"Unable to locate last updated properties file."</span>, ex);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 298</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 299</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">final</span> File cveProp = <span class="keyword">new</span> File(dir, UPDATE_PROPERTIES_FILE);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 300</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">final</span> Properties prop = <span class="keyword">new</span> Properties();</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 301</td> <td class="nbHitsUncovered"><a title="Line 301: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 301: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (cveProp.exists()) {</a></span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 302</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> FileInputStream in = <span class="keyword">null</span>;</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 303</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 304</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> in = <span class="keyword">new</span> FileInputStream(cveProp);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 305</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> prop.load(in);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 306</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (Exception ignoreMe) {</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 307</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(DatabaseUpdater.<span class="keyword">class</span>.getName()).log(Level.FINEST, <span class="keyword">null</span>, ignoreMe);</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 308</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> } <span class="keyword">finally</span> {</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 309</td> <td class="nbHitsUncovered"><a title="Line 309: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 309: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (in != <span class="keyword">null</span>) {</a></span></pre></td></tr>
|
|
<tr> <td class="numLine"> 310</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 311</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> in.close();</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 312</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (Exception ignoreMeToo) {</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 313</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(DatabaseUpdater.<span class="keyword">class</span>.getName()).log(Level.FINEST, <span class="keyword">null</span>, ignoreMeToo);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 314</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 315</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> }</pre></td></tr>
|
|
<tr> <td class="numLine"> 316</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> }</pre></td></tr>
|
|
<tr> <td class="numLine"> 317</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLine"> 318</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> }</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 319</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> prop.put(<span class="string">"version"</span>, CveDB.DB_SCHEMA_VERSION);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 320</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> prop.put(LAST_UPDATED_BASE + updatedValue.getId(), String.valueOf(updatedValue.getTimestamp()));</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 321</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLineCover"> 322</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> OutputStream os = <span class="keyword">null</span>;</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 323</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> OutputStreamWriter out = <span class="keyword">null</span>;</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 324</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 325</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> os = <span class="keyword">new</span> FileOutputStream(cveProp);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 326</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> out = <span class="keyword">new</span> OutputStreamWriter(os, <span class="string">"UTF-8"</span>);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 327</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> prop.store(out, dir);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 328</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (FileNotFoundException ex) {</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 329</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(DatabaseUpdater.<span class="keyword">class</span>.getName()).log(Level.FINE, <span class="keyword">null</span>, ex);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 330</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> <span class="keyword">new</span> UpdateException(<span class="string">"Unable to find last updated properties file."</span>, ex);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 331</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (IOException ex) {</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 332</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(DatabaseUpdater.<span class="keyword">class</span>.getName()).log(Level.FINE, <span class="keyword">null</span>, ex);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 333</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> <span class="keyword">new</span> UpdateException(<span class="string">"Unable to update last updated properties file."</span>, ex);</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 334</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> } <span class="keyword">finally</span> {</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 335</td> <td class="nbHitsUncovered"><a title="Line 335: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 335: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (out != <span class="keyword">null</span>) {</a></span></pre></td></tr>
|
|
<tr> <td class="numLine"> 336</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 337</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> out.close();</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 338</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (IOException ex) {</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 339</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(DatabaseUpdater.<span class="keyword">class</span>.getName()).log(Level.FINEST, <span class="keyword">null</span>, ex);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 340</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 341</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> }</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 342</td> <td class="nbHitsUncovered"><a title="Line 342: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 342: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (os != <span class="keyword">null</span>) {</a></span></pre></td></tr>
|
|
<tr> <td class="numLine"> 343</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 344</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> os.close();</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 345</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (IOException ex) {</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 346</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(DatabaseUpdater.<span class="keyword">class</span>.getName()).log(Level.FINEST, <span class="keyword">null</span>, ex);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 347</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 348</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> }</pre></td></tr>
|
|
<tr> <td class="numLine"> 349</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> }</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 350</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 351</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLine"> 352</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 353</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * Determines if the index needs to be updated. This is done by fetching the</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 354</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * nvd cve meta data and checking the last update date. If the data needs to</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 355</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * be refreshed this method will return the NvdCveUrl for the files that</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 356</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * need to be updated.</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 357</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 358</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * @return the NvdCveUrl of the files that need to be updated.</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 359</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * @throws MalformedURLException is thrown if the URL for the NVD CVE Meta</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 360</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * data is incorrect.</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 361</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * @throws DownloadFailedException is thrown if there is an error.</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 362</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * downloading the nvd cve download data file.</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 363</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * @throws UpdateException Is thrown if there is an issue with the last</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 364</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * updated properties file.</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 365</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 366</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">public</span> Map<String, NvdCveUrl> updateNeeded() <span class="keyword">throws</span> MalformedURLException, DownloadFailedException, UpdateException {</pre></td></tr>
|
|
<tr> <td class="numLine"> 367</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLine"> 368</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> Map<String, NvdCveUrl> currentlyPublished;</pre></td></tr>
|
|
<tr> <td class="numLine"> 369</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 370</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> currentlyPublished = retrieveCurrentTimestampsFromWeb();</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 371</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (InvalidDataException ex) {</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 372</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">final</span> String msg = <span class="string">"Unable to retrieve valid timestamp from nvd cve downloads page"</span>;</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 373</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(DatabaseUpdater.<span class="keyword">class</span>.getName()).log(Level.FINE, msg, ex);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 374</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> <span class="keyword">new</span> DownloadFailedException(msg, ex);</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 375</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLineCover"> 376</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (InvalidSettingException ex) {</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 377</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(DatabaseUpdater.<span class="keyword">class</span>.getName()).log(Level.FINE, <span class="string">"Invalid setting found when retrieving timestamps"</span>, ex);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 378</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> <span class="keyword">new</span> DownloadFailedException(<span class="string">"Invalid settings"</span>, ex);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 379</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 380</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLineCover"> 381</td> <td class="nbHitsUncovered"><a title="Line 381: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 381: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (currentlyPublished == <span class="keyword">null</span>) {</a></span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 382</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> <span class="keyword">new</span> DownloadFailedException(<span class="string">"Unable to retrieve valid timestamp from nvd cve downloads page"</span>);</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 383</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> }</pre></td></tr>
|
|
<tr> <td class="numLine"> 384</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> String dir;</pre></td></tr>
|
|
<tr> <td class="numLine"> 385</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 386</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> dir = CveDB.getDataDirectory().getCanonicalPath();</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 387</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (IOException ex) {</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 388</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(DatabaseUpdater.<span class="keyword">class</span>.getName()).log(Level.FINE, <span class="string">"CveDB data directory doesn't exist?"</span>, ex);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 389</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> <span class="keyword">new</span> UpdateException(<span class="string">"Unable to locate last updated properties file."</span>, ex);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 390</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 391</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLineCover"> 392</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">final</span> File f = <span class="keyword">new</span> File(dir);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 393</td> <td class="nbHitsUncovered"><a title="Line 393: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 393: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (f.exists()) {</a></span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 394</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">final</span> File cveProp = <span class="keyword">new</span> File(dir, UPDATE_PROPERTIES_FILE);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 395</td> <td class="nbHitsUncovered"><a title="Line 395: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 395: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (cveProp.exists()) {</a></span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 396</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">final</span> Properties prop = <span class="keyword">new</span> Properties();</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 397</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> InputStream is = <span class="keyword">null</span>;</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 398</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 399</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> is = <span class="keyword">new</span> FileInputStream(cveProp);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 400</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> prop.load(is);</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 401</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLineCover"> 402</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">boolean</span> deleteAndRecreate = <span class="keyword">false</span>;</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 403</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">float</span> version;</pre></td></tr>
|
|
<tr> <td class="numLine"> 404</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLineCover"> 405</td> <td class="nbHitsUncovered"><a title="Line 405: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 405: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (prop.getProperty(<span class="string">"version"</span>) == <span class="keyword">null</span>) {</a></span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 406</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> deleteAndRecreate = <span class="keyword">true</span>;</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 407</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr>
|
|
<tr> <td class="numLine"> 408</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 409</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> version = Float.parseFloat(prop.getProperty(<span class="string">"version"</span>));</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 410</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">final</span> <span class="keyword">float</span> currentVersion = Float.parseFloat(CveDB.DB_SCHEMA_VERSION);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 411</td> <td class="nbHitsUncovered"><a title="Line 411: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 411: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (currentVersion > version) {</a></span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 412</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> deleteAndRecreate = <span class="keyword">true</span>;</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 413</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> }</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 414</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (NumberFormatException ex) {</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 415</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> deleteAndRecreate = <span class="keyword">true</span>;</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 416</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 417</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> }</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 418</td> <td class="nbHitsUncovered"><a title="Line 418: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 418: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (deleteAndRecreate) {</a></span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 419</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(DatabaseUpdater.<span class="keyword">class</span>.getName()).log(Level.INFO, <span class="string">"The database version is old. Rebuilding the database."</span>);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 420</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> is.close();</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 421</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment">//this is an old version of the lucene index - just delete it</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 422</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> FileUtils.delete(f);</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 423</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLine"> 424</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment">//this importer also updates the CPE index and it is also using an old version</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 425</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">final</span> Index cpeId = <span class="keyword">new</span> Index();</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 426</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">final</span> File cpeDir = cpeId.getDataDirectory();</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 427</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> FileUtils.delete(cpeDir);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 428</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> currentlyPublished;</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 429</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> }</pre></td></tr>
|
|
<tr> <td class="numLine"> 430</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLineCover"> 431</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">final</span> <span class="keyword">long</span> lastUpdated = Long.parseLong(prop.getProperty(LAST_UPDATED_MODIFIED, <span class="string">"0"</span>));</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 432</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">final</span> Date now = <span class="keyword">new</span> Date();</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 433</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">final</span> <span class="keyword">int</span> days = Settings.getInt(Settings.KEYS.CVE_MODIFIED_VALID_FOR_DAYS, 7);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 434</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">final</span> <span class="keyword">int</span> start = Settings.getInt(Settings.KEYS.CVE_START_YEAR, 2002);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 435</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">final</span> <span class="keyword">int</span> end = Calendar.getInstance().get(Calendar.YEAR);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 436</td> <td class="nbHitsUncovered"><a title="Line 436: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 436: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (lastUpdated == currentlyPublished.get(MODIFIED).timestamp) {</a></span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 437</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> currentlyPublished.clear(); <span class="comment">//we don't need to update anything.</span></span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 438</td> <td class="nbHitsUncovered"><a title="Line 438: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 438: Conditional coverage 0% (0/2)."> } <span class="keyword">else</span> <span class="keyword">if</span> (withinRange(lastUpdated, now.getTime(), days)) {</a></span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 439</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> currentlyPublished.get(MODIFIED).setNeedsUpdate(<span class="keyword">true</span>);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 440</td> <td class="nbHitsUncovered"><a title="Line 440: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 440: Conditional coverage 0% (0/2)."> <span class="keyword">for</span> (<span class="keyword">int</span> i = start; i <= end; i++) {</a></span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 441</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> currentlyPublished.get(String.valueOf(i)).setNeedsUpdate(<span class="keyword">false</span>);</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 442</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> }</pre></td></tr>
|
|
<tr> <td class="numLine"> 443</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> } <span class="keyword">else</span> { <span class="comment">//we figure out which of the several XML files need to be downloaded.</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 444</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> currentlyPublished.get(MODIFIED).setNeedsUpdate(<span class="keyword">false</span>);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 445</td> <td class="nbHitsUncovered"><a title="Line 445: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 445: Conditional coverage 0% (0/2)."> <span class="keyword">for</span> (<span class="keyword">int</span> i = start; i <= end; i++) {</a></span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 446</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">final</span> NvdCveUrl cve = currentlyPublished.get(String.valueOf(i));</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 447</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">long</span> currentTimestamp = 0;</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 448</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 449</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> currentTimestamp = Long.parseLong(prop.getProperty(LAST_UPDATED_BASE + String.valueOf(i), <span class="string">"0"</span>));</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 450</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (NumberFormatException ex) {</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 451</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">final</span> String msg = String.format(<span class="string">"Error parsing '%s' '%s' from nvdcve.lastupdated"</span>,</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 452</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> LAST_UPDATED_BASE, String.valueOf(i));</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 453</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(DatabaseUpdater.<span class="keyword">class</span>.getName()).log(Level.FINE, msg, ex);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 454</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 455</td> <td class="nbHitsUncovered"><a title="Line 455: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 455: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (currentTimestamp == cve.getTimestamp()) {</a></span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 456</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> cve.setNeedsUpdate(<span class="keyword">false</span>); <span class="comment">//they default to true.</span></span></pre></td></tr>
|
|
<tr> <td class="numLine"> 457</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> }</pre></td></tr>
|
|
<tr> <td class="numLine"> 458</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> }</pre></td></tr>
|
|
<tr> <td class="numLine"> 459</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> }</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 460</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (FileNotFoundException ex) {</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 461</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(DatabaseUpdater.<span class="keyword">class</span>.getName()).log(Level.FINEST, <span class="keyword">null</span>, ex);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 462</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (IOException ex) {</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 463</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(DatabaseUpdater.<span class="keyword">class</span>.getName()).log(Level.FINEST, <span class="keyword">null</span>, ex);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 464</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (NumberFormatException ex) {</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 465</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(DatabaseUpdater.<span class="keyword">class</span>.getName()).log(Level.FINEST, <span class="keyword">null</span>, ex);</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 466</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> } <span class="keyword">finally</span> {</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 467</td> <td class="nbHitsUncovered"><a title="Line 467: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 467: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (is != <span class="keyword">null</span>) {</a></span></pre></td></tr>
|
|
<tr> <td class="numLine"> 468</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 469</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> is.close();</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 470</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (IOException ex) {</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 471</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(DatabaseUpdater.<span class="keyword">class</span>.getName()).log(Level.FINEST, <span class="keyword">null</span>, ex);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 472</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 473</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> }</pre></td></tr>
|
|
<tr> <td class="numLine"> 474</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> }</pre></td></tr>
|
|
<tr> <td class="numLine"> 475</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> }</pre></td></tr>
|
|
<tr> <td class="numLine"> 476</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> }</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 477</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> currentlyPublished;</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 478</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> }</pre></td></tr>
|
|
<tr> <td class="numLine"> 479</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLine"> 480</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 481</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * Determines if the epoch date is within the range specified of the</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 482</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * compareTo epoch time. This takes the (compareTo-date)/1000/60/60/24 to</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 483</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * get the number of days. If the calculated days is less then the range the</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 484</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * date is considered valid.</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 485</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 486</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * @param date the date to be checked.</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 487</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * @param compareTo the date to compare to.</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 488</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * @param range the range in days to be considered valid.</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 489</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * @return whether or not the date is within the range.</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 490</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 491</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">boolean</span> withinRange(<span class="keyword">long</span> date, <span class="keyword">long</span> compareTo, <span class="keyword">int</span> range) {</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 492</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">final</span> <span class="keyword">double</span> differenceInDays = (compareTo - date) / 1000.0 / 60.0 / 60.0 / 24.0;</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 493</td> <td class="nbHitsUncovered"><a title="Line 493: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 493: Conditional coverage 0% (0/2)."> <span class="keyword">return</span> differenceInDays < range;</a></span></pre></td></tr>
|
|
<tr> <td class="numLine"> 494</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> }</pre></td></tr>
|
|
<tr> <td class="numLine"> 495</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLine"> 496</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 497</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * Retrieves the timestamps from the NVD CVE meta data file.</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 498</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 499</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * @return the timestamp from the currently published nvdcve downloads page</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 500</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * @throws MalformedURLException thrown if the URL for the NVD CCE Meta data</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 501</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * is incorrect.</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 502</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * @throws DownloadFailedException thrown if there is an error downloading</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 503</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * the nvd cve meta data file</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 504</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * @throws InvalidDataException thrown if there is an exception parsing the</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 505</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * timestamps</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 506</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * @throws InvalidSettingException thrown if the settings are invalid</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 507</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 508</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">protected</span> Map<String, NvdCveUrl> retrieveCurrentTimestampsFromWeb()</pre></td></tr>
|
|
<tr> <td class="numLine"> 509</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">throws</span> MalformedURLException, DownloadFailedException, InvalidDataException, InvalidSettingException {</pre></td></tr>
|
|
<tr> <td class="numLine"> 510</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLineCover"> 511</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">final</span> Map<String, NvdCveUrl> map = <span class="keyword">new</span> HashMap<String, NvdCveUrl>();</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 512</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> String retrieveUrl = Settings.getString(Settings.KEYS.CVE_MODIFIED_20_URL);</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 513</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLineCover"> 514</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> NvdCveUrl item = <span class="keyword">new</span> NvdCveUrl();</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 515</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> item.setNeedsUpdate(<span class="keyword">false</span>); <span class="comment">//the others default to true, to make life easier later this should default to false.</span></span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 516</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> item.setId(MODIFIED);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 517</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> item.setUrl(retrieveUrl);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 518</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> item.setOldSchemaVersionUrl(Settings.getString(Settings.KEYS.CVE_MODIFIED_12_URL));</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 519</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLineCover"> 520</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> item.timestamp = Downloader.getLastModified(<span class="keyword">new</span> URL(retrieveUrl));</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 521</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> map.put(MODIFIED, item);</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 522</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLineCover"> 523</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">final</span> <span class="keyword">int</span> start = Settings.getInt(Settings.KEYS.CVE_START_YEAR);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 524</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">final</span> <span class="keyword">int</span> end = Calendar.getInstance().get(Calendar.YEAR);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 525</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">final</span> String baseUrl20 = Settings.getString(Settings.KEYS.CVE_SCHEMA_2_0);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 526</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">final</span> String baseUrl12 = Settings.getString(Settings.KEYS.CVE_SCHEMA_1_2);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 527</td> <td class="nbHitsUncovered"><a title="Line 527: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 527: Conditional coverage 0% (0/2)."> <span class="keyword">for</span> (<span class="keyword">int</span> i = start; i <= end; i++) {</a></span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 528</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> retrieveUrl = String.format(baseUrl20, i);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 529</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> item = <span class="keyword">new</span> NvdCveUrl();</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 530</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> item.setId(Integer.toString(i));</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 531</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> item.setUrl(retrieveUrl);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 532</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> item.setOldSchemaVersionUrl(String.format(baseUrl12, i));</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 533</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> item.setTimestamp(Downloader.getLastModified(<span class="keyword">new</span> URL(retrieveUrl)));</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 534</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> map.put(item.id, item);</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 535</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> }</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 536</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> map;</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 537</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> }</pre></td></tr>
|
|
<tr> <td class="numLine"> 538</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLine"> 539</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 540</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * Method to double check that the "modified" nvdcve file is listed and has</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 541</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * a timestamp in the last updated properties file.</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 542</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 543</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * @param update a set of updated NvdCveUrl objects</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 544</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 545</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">void</span> ensureModifiedIsInLastUpdatedProperties(Map<String, NvdCveUrl> update) {</pre></td></tr>
|
|
<tr> <td class="numLine"> 546</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 547</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> writeLastUpdatedPropertyFile(update.get(MODIFIED));</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 548</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (UpdateException ex) {</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 549</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(DatabaseUpdater.<span class="keyword">class</span>.getName()).log(Level.FINE, <span class="keyword">null</span>, ex);</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 550</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 551</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 552</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLine"> 553</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 554</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * A pojo that contains the Url and timestamp of the current NvdCve XML</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 555</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * files.</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 556</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 557</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">class</span> NvdCveUrl {</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 558</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLine"> 559</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 560</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * an id.</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 561</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 562</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">private</span> String id;</pre></td></tr>
|
|
<tr> <td class="numLine"> 563</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLine"> 564</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 565</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * Get the value of id.</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 566</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 567</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * @return the value of id</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 568</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 569</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">public</span> String getId() {</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 570</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> id;</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 571</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> }</pre></td></tr>
|
|
<tr> <td class="numLine"> 572</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLine"> 573</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 574</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * Set the value of id.</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 575</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 576</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * @param id new value of id</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 577</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 578</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">void</span> setId(String id) {</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 579</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">this</span>.id = id;</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 580</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 581</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 582</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * a url.</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 583</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 584</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">private</span> String url;</pre></td></tr>
|
|
<tr> <td class="numLine"> 585</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLine"> 586</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 587</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * Get the value of url.</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 588</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 589</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * @return the value of url</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 590</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 591</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">public</span> String getUrl() {</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 592</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> url;</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 593</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> }</pre></td></tr>
|
|
<tr> <td class="numLine"> 594</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLine"> 595</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 596</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * Set the value of url.</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 597</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 598</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * @param url new value of url</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 599</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 600</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">void</span> setUrl(String url) {</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 601</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">this</span>.url = url;</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 602</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 603</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 604</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * The 1.2 schema URL.</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 605</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 606</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">private</span> String oldSchemaVersionUrl;</pre></td></tr>
|
|
<tr> <td class="numLine"> 607</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLine"> 608</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 609</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * Get the value of oldSchemaVersionUrl.</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 610</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 611</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * @return the value of oldSchemaVersionUrl</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 612</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 613</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">public</span> String getOldSchemaVersionUrl() {</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 614</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> oldSchemaVersionUrl;</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 615</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> }</pre></td></tr>
|
|
<tr> <td class="numLine"> 616</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLine"> 617</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 618</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * Set the value of oldSchemaVersionUrl.</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 619</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 620</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * @param oldSchemaVersionUrl new value of oldSchemaVersionUrl</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 621</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 622</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">void</span> setOldSchemaVersionUrl(String oldSchemaVersionUrl) {</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 623</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">this</span>.oldSchemaVersionUrl = oldSchemaVersionUrl;</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 624</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 625</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 626</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * a timestamp - epoch time.</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 627</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 628</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">long</span> timestamp;</pre></td></tr>
|
|
<tr> <td class="numLine"> 629</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLine"> 630</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 631</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * Get the value of timestamp - epoch time.</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 632</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 633</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * @return the value of timestamp - epoch time</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 634</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 635</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">long</span> getTimestamp() {</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 636</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> timestamp;</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 637</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> }</pre></td></tr>
|
|
<tr> <td class="numLine"> 638</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLine"> 639</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 640</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * Set the value of timestamp - epoch time.</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 641</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 642</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * @param timestamp new value of timestamp - epoch time</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 643</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 644</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">void</span> setTimestamp(<span class="keyword">long</span> timestamp) {</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 645</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">this</span>.timestamp = timestamp;</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 646</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 647</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 648</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * indicates whether or not this item should be updated.</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 649</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 650</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">private</span> <span class="keyword">boolean</span> needsUpdate = <span class="keyword">true</span>;</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 651</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLine"> 652</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 653</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * Get the value of needsUpdate.</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 654</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 655</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * @return the value of needsUpdate</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 656</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 657</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">boolean</span> getNeedsUpdate() {</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 658</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> needsUpdate;</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 659</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> }</pre></td></tr>
|
|
<tr> <td class="numLine"> 660</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> </pre></td></tr>
|
|
<tr> <td class="numLine"> 661</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 662</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * Set the value of needsUpdate.</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 663</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 664</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> * @param needsUpdate new value of needsUpdate</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 665</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 666</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">void</span> setNeedsUpdate(<span class="keyword">boolean</span> needsUpdate) {</pre></td></tr>
|
|
<tr> <td class="numLineCover"> 667</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">this</span>.needsUpdate = needsUpdate;</span></pre></td></tr>
|
|
<tr> <td class="numLineCover"> 668</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr>
|
|
<tr> <td class="numLine"> 669</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> }</pre></td></tr>
|
|
<tr> <td class="numLine"> 670</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> <span class="comment">//</editor-fold></span></pre></td></tr>
|
|
<tr> <td class="numLine"> 671</td> <td class="nbHits"> </td>
|
|
<td class="src"><pre class="src"> }</pre></td></tr>
|
|
</table>
|
|
|
|
<div class="footer">Report generated by <a href="http://cobertura.sourceforge.net/" target="_top">Cobertura</a> 1.9.4.1 on 8/7/13 10:02 PM.</div>
|
|
</body>
|
|
</html>
|