version 1.0.7

This commit is contained in:
Jeremy Long
2013-12-03 06:05:31 -05:00
parent b8107aeda0
commit 70103dcca3
9 changed files with 3314 additions and 0 deletions

View File

@@ -0,0 +1,365 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.6.0_25) on Mon Dec 02 22:29:21 EST 2013 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE>
ProcessTask (Dependency-Check Core 1.0.7 API)
</TITLE>
<META NAME="date" CONTENT="2013-12-02">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
<SCRIPT type="text/javascript">
function windowTitle()
{
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="ProcessTask (Dependency-Check Core 1.0.7 API)";
}
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>
</HEAD>
<BODY BGCOLOR="white" onload="windowTitle();">
<HR>
<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/ProcessTask.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../../org/owasp/dependencycheck/data/update/NvdCveInfo.html" title="class in org.owasp.dependencycheck.data.update"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../../org/owasp/dependencycheck/data/update/StandardUpdate.html" title="class in org.owasp.dependencycheck.data.update"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../../../index.html?org/owasp/dependencycheck/data/update/ProcessTask.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="ProcessTask.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->
<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
org.owasp.dependencycheck.data.update</FONT>
<BR>
Class ProcessTask</H2>
<PRE>
<A HREF="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../../../resources/inherit.gif" ALT="extended by "><B>org.owasp.dependencycheck.data.update.ProcessTask</B>
</PRE>
<DL>
<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/Callable.html?is-external=true" title="class or interface in java.util.concurrent">Callable</A>&lt;<A HREF="../../../../../org/owasp/dependencycheck/data/update/ProcessTask.html" title="class in org.owasp.dependencycheck.data.update">ProcessTask</A>&gt;</DD>
</DL>
<HR>
<DL>
<DT><PRE>public class <B>ProcessTask</B><DT>extends <A HREF="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A><DT>implements <A HREF="http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/Callable.html?is-external=true" title="class or interface in java.util.concurrent">Callable</A>&lt;<A HREF="../../../../../org/owasp/dependencycheck/data/update/ProcessTask.html" title="class in org.owasp.dependencycheck.data.update">ProcessTask</A>&gt;</DL>
</PRE>
<P>
A callable task that will process a given set of NVD CVE xml files and update
the Cve Database accordingly.
<P>
<P>
<DL>
<DT><B>Author:</B></DT>
<DD>Jeremy Long (jeremy.long@owasp.org)</DD>
</DL>
<HR>
<P>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../../org/owasp/dependencycheck/data/update/ProcessTask.html#ProcessTask(org.owasp.dependencycheck.data.nvdcve.CveDB, org.owasp.dependencycheck.data.update.DataStoreMetaInfo, org.owasp.dependencycheck.data.update.CallableDownloadTask)">ProcessTask</A></B>(<A HREF="../../../../../org/owasp/dependencycheck/data/nvdcve/CveDB.html" title="class in org.owasp.dependencycheck.data.nvdcve">CveDB</A>&nbsp;cveDB,
<A HREF="../../../../../org/owasp/dependencycheck/data/update/DataStoreMetaInfo.html" title="class in org.owasp.dependencycheck.data.update">DataStoreMetaInfo</A>&nbsp;properties,
<A HREF="../../../../../org/owasp/dependencycheck/data/update/CallableDownloadTask.html" title="class in org.owasp.dependencycheck.data.update">CallableDownloadTask</A>&nbsp;filePair)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
</TABLE>
&nbsp;
<!-- ========== METHOD SUMMARY =========== -->
<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Method Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../../org/owasp/dependencycheck/data/update/ProcessTask.html" title="class in org.owasp.dependencycheck.data.update">ProcessTask</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/owasp/dependencycheck/data/update/ProcessTask.html#call()">call</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../../org/owasp/dependencycheck/data/UpdateException.html" title="class in org.owasp.dependencycheck.data">UpdateException</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/owasp/dependencycheck/data/update/ProcessTask.html#getException()">getException</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the value of exception.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/owasp/dependencycheck/data/update/ProcessTask.html#importXML(java.io.File, java.io.File)">importXML</A></B>(<A HREF="http://docs.oracle.com/javase/6/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</A>&nbsp;file,
<A HREF="http://docs.oracle.com/javase/6/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</A>&nbsp;oldVersion)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Imports the NVD CVE XML File into the Lucene Index.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/owasp/dependencycheck/data/update/ProcessTask.html#setException(org.owasp.dependencycheck.data.UpdateException)">setException</A></B>(<A HREF="../../../../../org/owasp/dependencycheck/data/UpdateException.html" title="class in org.owasp.dependencycheck.data">UpdateException</A>&nbsp;exception)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the value of exception.</TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
<P>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Constructor Detail</B></FONT></TH>
</TR>
</TABLE>
<A NAME="ProcessTask(org.owasp.dependencycheck.data.nvdcve.CveDB, org.owasp.dependencycheck.data.update.DataStoreMetaInfo, org.owasp.dependencycheck.data.update.CallableDownloadTask)"><!-- --></A><H3>
ProcessTask</H3>
<PRE>
public <B>ProcessTask</B>(<A HREF="../../../../../org/owasp/dependencycheck/data/nvdcve/CveDB.html" title="class in org.owasp.dependencycheck.data.nvdcve">CveDB</A>&nbsp;cveDB,
<A HREF="../../../../../org/owasp/dependencycheck/data/update/DataStoreMetaInfo.html" title="class in org.owasp.dependencycheck.data.update">DataStoreMetaInfo</A>&nbsp;properties,
<A HREF="../../../../../org/owasp/dependencycheck/data/update/CallableDownloadTask.html" title="class in org.owasp.dependencycheck.data.update">CallableDownloadTask</A>&nbsp;filePair)</PRE>
<DL>
</DL>
<!-- ============ METHOD DETAIL ========== -->
<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Method Detail</B></FONT></TH>
</TR>
</TABLE>
<A NAME="getException()"><!-- --></A><H3>
getException</H3>
<PRE>
public <A HREF="../../../../../org/owasp/dependencycheck/data/UpdateException.html" title="class in org.owasp.dependencycheck.data">UpdateException</A> <B>getException</B>()</PRE>
<DL>
<DD>Get the value of exception.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>the value of exception</DL>
</DD>
</DL>
<HR>
<A NAME="setException(org.owasp.dependencycheck.data.UpdateException)"><!-- --></A><H3>
setException</H3>
<PRE>
public void <B>setException</B>(<A HREF="../../../../../org/owasp/dependencycheck/data/UpdateException.html" title="class in org.owasp.dependencycheck.data">UpdateException</A>&nbsp;exception)</PRE>
<DL>
<DD>Set the value of exception.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>exception</CODE> - new value of exception</DL>
</DD>
</DL>
<HR>
<A NAME="call()"><!-- --></A><H3>
call</H3>
<PRE>
public <A HREF="../../../../../org/owasp/dependencycheck/data/update/ProcessTask.html" title="class in org.owasp.dependencycheck.data.update">ProcessTask</A> <B>call</B>()
throws <A HREF="http://docs.oracle.com/javase/6/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</A></PRE>
<DL>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/Callable.html?is-external=true#call()" title="class or interface in java.util.concurrent">call</A></CODE> in interface <CODE><A HREF="http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/Callable.html?is-external=true" title="class or interface in java.util.concurrent">Callable</A>&lt;<A HREF="../../../../../org/owasp/dependencycheck/data/update/ProcessTask.html" title="class in org.owasp.dependencycheck.data.update">ProcessTask</A>&gt;</CODE></DL>
</DD>
<DD><DL>
<DT><B>Throws:</B>
<DD><CODE><A HREF="http://docs.oracle.com/javase/6/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</A></CODE></DL>
</DD>
</DL>
<HR>
<A NAME="importXML(java.io.File, java.io.File)"><!-- --></A><H3>
importXML</H3>
<PRE>
protected void <B>importXML</B>(<A HREF="http://docs.oracle.com/javase/6/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</A>&nbsp;file,
<A HREF="http://docs.oracle.com/javase/6/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</A>&nbsp;oldVersion)
throws <A HREF="http://docs.oracle.com/javase/6/docs/api/javax/xml/parsers/ParserConfigurationException.html?is-external=true" title="class or interface in javax.xml.parsers">ParserConfigurationException</A>,
<A HREF="http://docs.oracle.com/javase/6/docs/api/org/xml/sax/SAXException.html?is-external=true" title="class or interface in org.xml.sax">SAXException</A>,
<A HREF="http://docs.oracle.com/javase/6/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</A>,
<A HREF="http://docs.oracle.com/javase/6/docs/api/java/sql/SQLException.html?is-external=true" title="class or interface in java.sql">SQLException</A>,
<A HREF="../../../../../org/owasp/dependencycheck/data/nvdcve/DatabaseException.html" title="class in org.owasp.dependencycheck.data.nvdcve">DatabaseException</A>,
<A HREF="http://docs.oracle.com/javase/6/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</A></PRE>
<DL>
<DD>Imports the NVD CVE XML File into the Lucene Index.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>file</CODE> - the file containing the NVD CVE XML<DD><CODE>oldVersion</CODE> - contains the file containing the NVD CVE XML 1.2
<DT><B>Throws:</B>
<DD><CODE><A HREF="http://docs.oracle.com/javase/6/docs/api/javax/xml/parsers/ParserConfigurationException.html?is-external=true" title="class or interface in javax.xml.parsers">ParserConfigurationException</A></CODE> - is thrown if there is a parser
configuration exception
<DD><CODE><A HREF="http://docs.oracle.com/javase/6/docs/api/org/xml/sax/SAXException.html?is-external=true" title="class or interface in org.xml.sax">SAXException</A></CODE> - is thrown if there is a SAXException
<DD><CODE><A HREF="http://docs.oracle.com/javase/6/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</A></CODE> - is thrown if there is a IO Exception
<DD><CODE><A HREF="http://docs.oracle.com/javase/6/docs/api/java/sql/SQLException.html?is-external=true" title="class or interface in java.sql">SQLException</A></CODE> - is thrown if there is a SQL exception
<DD><CODE><A HREF="../../../../../org/owasp/dependencycheck/data/nvdcve/DatabaseException.html" title="class in org.owasp.dependencycheck.data.nvdcve">DatabaseException</A></CODE> - is thrown if there is a database exception
<DD><CODE><A HREF="http://docs.oracle.com/javase/6/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang">ClassNotFoundException</A></CODE> - thrown if the h2 database driver cannot be
loaded</DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/ProcessTask.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../../org/owasp/dependencycheck/data/update/NvdCveInfo.html" title="class in org.owasp.dependencycheck.data.update"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../../org/owasp/dependencycheck/data/update/StandardUpdate.html" title="class in org.owasp.dependencycheck.data.update"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../../../index.html?org/owasp/dependencycheck/data/update/ProcessTask.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="ProcessTask.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
Copyright &#169; 2012-2013 <a href="http://www.owasp.org">OWASP</a>. All Rights Reserved.
</BODY>
</HTML>

View File

@@ -0,0 +1,519 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.6.0_25) on Mon Dec 02 22:29:21 EST 2013 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE>
StandardUpdate (Dependency-Check Core 1.0.7 API)
</TITLE>
<META NAME="date" CONTENT="2013-12-02">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
<SCRIPT type="text/javascript">
function windowTitle()
{
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="StandardUpdate (Dependency-Check Core 1.0.7 API)";
}
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>
</HEAD>
<BODY BGCOLOR="white" onload="windowTitle();">
<HR>
<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/StandardUpdate.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../../org/owasp/dependencycheck/data/update/ProcessTask.html" title="class in org.owasp.dependencycheck.data.update"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../../org/owasp/dependencycheck/data/update/Updateable.html" title="class in org.owasp.dependencycheck.data.update"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../../../index.html?org/owasp/dependencycheck/data/update/StandardUpdate.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="StandardUpdate.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->
<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
org.owasp.dependencycheck.data.update</FONT>
<BR>
Class StandardUpdate</H2>
<PRE>
<A HREF="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../../../resources/inherit.gif" ALT="extended by "><B>org.owasp.dependencycheck.data.update.StandardUpdate</B>
</PRE>
<HR>
<DL>
<DT><PRE>public class <B>StandardUpdate</B><DT>extends <A HREF="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A></DL>
</PRE>
<P>
Class responsible for updating the NVDCVE data store.
<P>
<P>
<DL>
<DT><B>Author:</B></DT>
<DD>Jeremy Long (jeremy.long@owasp.org)</DD>
</DL>
<HR>
<P>
<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Field Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/owasp/dependencycheck/data/update/StandardUpdate.html#MAX_THREAD_POOL_SIZE">MAX_THREAD_POOL_SIZE</A></B></CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The max thread pool size to use when downloading files.</TD>
</TR>
</TABLE>
&nbsp;
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../../org/owasp/dependencycheck/data/update/StandardUpdate.html#StandardUpdate()">StandardUpdate</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructs a new Standard Update Task.</TD>
</TR>
</TABLE>
&nbsp;
<!-- ========== METHOD SUMMARY =========== -->
<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Method Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/owasp/dependencycheck/data/update/StandardUpdate.html#closeDataStores()">closeDataStores</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Closes the CVE and CPE data stores.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/owasp/dependencycheck/data/update/StandardUpdate.html#deleteExistingData()">deleteExistingData</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Deletes the existing data directories.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/owasp/dependencycheck/data/update/StandardUpdate.html#isUpdateNeeded()">isUpdateNeeded</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gets whether or not an update is needed.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/owasp/dependencycheck/data/update/StandardUpdate.html#openDataStores()">openDataStores</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Opens the CVE and CPE data stores.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/owasp/dependencycheck/data/update/StandardUpdate.html#setDeleteAndRecreate(boolean)">setDeleteAndRecreate</A></B>(boolean&nbsp;deleteAndRecreate)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set the value of deleteAndRecreate.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/owasp/dependencycheck/data/update/StandardUpdate.html#shouldDeleteAndRecreate()">shouldDeleteAndRecreate</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the value of deleteAndRecreate.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/owasp/dependencycheck/data/update/StandardUpdate.html#update()">update</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Downloads the latest NVD CVE XML file from the web and imports it into
the current CVE Database.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../../../org/owasp/dependencycheck/data/update/Updateable.html" title="class in org.owasp.dependencycheck.data.update">Updateable</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/owasp/dependencycheck/data/update/StandardUpdate.html#updatesNeeded()">updatesNeeded</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Determines if the index needs to be updated.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/owasp/dependencycheck/data/update/StandardUpdate.html#withinRange(long, long, int)">withinRange</A></B>(long&nbsp;date,
long&nbsp;compareTo,
int&nbsp;range)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Determines if the epoch date is within the range specified of the
compareTo epoch time.</TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
<P>
<!-- ============ FIELD DETAIL =========== -->
<A NAME="field_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Field Detail</B></FONT></TH>
</TR>
</TABLE>
<A NAME="MAX_THREAD_POOL_SIZE"><!-- --></A><H3>
MAX_THREAD_POOL_SIZE</H3>
<PRE>
public static final int <B>MAX_THREAD_POOL_SIZE</B></PRE>
<DL>
<DD>The max thread pool size to use when downloading files.
<P>
<DL>
</DL>
</DL>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Constructor Detail</B></FONT></TH>
</TR>
</TABLE>
<A NAME="StandardUpdate()"><!-- --></A><H3>
StandardUpdate</H3>
<PRE>
public <B>StandardUpdate</B>()
throws <A HREF="http://docs.oracle.com/javase/6/docs/api/java/net/MalformedURLException.html?is-external=true" title="class or interface in java.net">MalformedURLException</A>,
<A HREF="../../../../../org/owasp/dependencycheck/utils/DownloadFailedException.html" title="class in org.owasp.dependencycheck.utils">DownloadFailedException</A>,
<A HREF="../../../../../org/owasp/dependencycheck/data/UpdateException.html" title="class in org.owasp.dependencycheck.data">UpdateException</A></PRE>
<DL>
<DD>Constructs a new Standard Update Task.
<P>
<DL>
<DT><B>Throws:</B>
<DD><CODE><A HREF="http://docs.oracle.com/javase/6/docs/api/java/net/MalformedURLException.html?is-external=true" title="class or interface in java.net">MalformedURLException</A></CODE> - thrown if a configured URL is malformed
<DD><CODE><A HREF="../../../../../org/owasp/dependencycheck/utils/DownloadFailedException.html" title="class in org.owasp.dependencycheck.utils">DownloadFailedException</A></CODE> - thrown if a timestamp cannot be checked
on a configured URL
<DD><CODE><A HREF="../../../../../org/owasp/dependencycheck/data/UpdateException.html" title="class in org.owasp.dependencycheck.data">UpdateException</A></CODE> - thrown if there is an exception generating the
update task</DL>
</DL>
<!-- ============ METHOD DETAIL ========== -->
<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Method Detail</B></FONT></TH>
</TR>
</TABLE>
<A NAME="isUpdateNeeded()"><!-- --></A><H3>
isUpdateNeeded</H3>
<PRE>
public boolean <B>isUpdateNeeded</B>()</PRE>
<DL>
<DD>Gets whether or not an update is needed.
<P>
<DD><DL>
<DT><B>Returns:</B><DD>true or false depending on whether an update is needed</DL>
</DD>
</DL>
<HR>
<A NAME="setDeleteAndRecreate(boolean)"><!-- --></A><H3>
setDeleteAndRecreate</H3>
<PRE>
protected void <B>setDeleteAndRecreate</B>(boolean&nbsp;deleteAndRecreate)</PRE>
<DL>
<DD>Set the value of deleteAndRecreate.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>deleteAndRecreate</CODE> - new value of deleteAndRecreate</DL>
</DD>
</DL>
<HR>
<A NAME="shouldDeleteAndRecreate()"><!-- --></A><H3>
shouldDeleteAndRecreate</H3>
<PRE>
public boolean <B>shouldDeleteAndRecreate</B>()</PRE>
<DL>
<DD>Get the value of deleteAndRecreate.
<P>
<DD><DL>
<DT><B>Returns:</B><DD>the value of deleteAndRecreate</DL>
</DD>
</DL>
<HR>
<A NAME="update()"><!-- --></A><H3>
update</H3>
<PRE>
public void <B>update</B>()
throws <A HREF="../../../../../org/owasp/dependencycheck/data/UpdateException.html" title="class in org.owasp.dependencycheck.data">UpdateException</A></PRE>
<DL>
<DD><p>Downloads the latest NVD CVE XML file from the web and imports it into
the current CVE Database.</p>
<P>
<DD><DL>
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../../org/owasp/dependencycheck/data/UpdateException.html" title="class in org.owasp.dependencycheck.data">UpdateException</A></CODE> - is thrown if there is an error updating the
database</DL>
</DD>
</DL>
<HR>
<A NAME="updatesNeeded()"><!-- --></A><H3>
updatesNeeded</H3>
<PRE>
protected final <A HREF="../../../../../org/owasp/dependencycheck/data/update/Updateable.html" title="class in org.owasp.dependencycheck.data.update">Updateable</A> <B>updatesNeeded</B>()
throws <A HREF="http://docs.oracle.com/javase/6/docs/api/java/net/MalformedURLException.html?is-external=true" title="class or interface in java.net">MalformedURLException</A>,
<A HREF="../../../../../org/owasp/dependencycheck/utils/DownloadFailedException.html" title="class in org.owasp.dependencycheck.utils">DownloadFailedException</A>,
<A HREF="../../../../../org/owasp/dependencycheck/data/UpdateException.html" title="class in org.owasp.dependencycheck.data">UpdateException</A></PRE>
<DL>
<DD>Determines if the index needs to be updated. This is done by fetching the
NVD CVE meta data and checking the last update date. If the data needs to
be refreshed this method will return the NvdCveUrl for the files that
need to be updated.
<P>
<DD><DL>
<DT><B>Returns:</B><DD>the collection of files that need to be updated
<DT><B>Throws:</B>
<DD><CODE><A HREF="http://docs.oracle.com/javase/6/docs/api/java/net/MalformedURLException.html?is-external=true" title="class or interface in java.net">MalformedURLException</A></CODE> - is thrown if the URL for the NVD CVE Meta
data is incorrect
<DD><CODE><A HREF="../../../../../org/owasp/dependencycheck/utils/DownloadFailedException.html" title="class in org.owasp.dependencycheck.utils">DownloadFailedException</A></CODE> - is thrown if there is an error.
downloading the NVD CVE download data file
<DD><CODE><A HREF="../../../../../org/owasp/dependencycheck/data/UpdateException.html" title="class in org.owasp.dependencycheck.data">UpdateException</A></CODE> - Is thrown if there is an issue with the last
updated properties file</DL>
</DD>
</DL>
<HR>
<A NAME="deleteExistingData()"><!-- --></A><H3>
deleteExistingData</H3>
<PRE>
protected void <B>deleteExistingData</B>()
throws <A HREF="http://docs.oracle.com/javase/6/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</A></PRE>
<DL>
<DD>Deletes the existing data directories.
<P>
<DD><DL>
<DT><B>Throws:</B>
<DD><CODE><A HREF="http://docs.oracle.com/javase/6/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</A></CODE> - thrown if the directory cannot be deleted</DL>
</DD>
</DL>
<HR>
<A NAME="closeDataStores()"><!-- --></A><H3>
closeDataStores</H3>
<PRE>
protected void <B>closeDataStores</B>()</PRE>
<DL>
<DD>Closes the CVE and CPE data stores.
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="openDataStores()"><!-- --></A><H3>
openDataStores</H3>
<PRE>
protected void <B>openDataStores</B>()
throws <A HREF="../../../../../org/owasp/dependencycheck/data/UpdateException.html" title="class in org.owasp.dependencycheck.data">UpdateException</A></PRE>
<DL>
<DD>Opens the CVE and CPE data stores.
<P>
<DD><DL>
<DT><B>Throws:</B>
<DD><CODE><A HREF="../../../../../org/owasp/dependencycheck/data/UpdateException.html" title="class in org.owasp.dependencycheck.data">UpdateException</A></CODE> - thrown if a data store cannot be opened</DL>
</DD>
</DL>
<HR>
<A NAME="withinRange(long, long, int)"><!-- --></A><H3>
withinRange</H3>
<PRE>
protected boolean <B>withinRange</B>(long&nbsp;date,
long&nbsp;compareTo,
int&nbsp;range)</PRE>
<DL>
<DD>Determines if the epoch date is within the range specified of the
compareTo epoch time. This takes the (compareTo-date)/1000/60/60/24 to
get the number of days. If the calculated days is less then the range the
date is considered valid.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>date</CODE> - the date to be checked.<DD><CODE>compareTo</CODE> - the date to compare to.<DD><CODE>range</CODE> - the range in days to be considered valid.
<DT><B>Returns:</B><DD>whether or not the date is within the range.</DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/StandardUpdate.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../../org/owasp/dependencycheck/data/update/ProcessTask.html" title="class in org.owasp.dependencycheck.data.update"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../../org/owasp/dependencycheck/data/update/Updateable.html" title="class in org.owasp.dependencycheck.data.update"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../../../index.html?org/owasp/dependencycheck/data/update/StandardUpdate.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="StandardUpdate.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
Copyright &#169; 2012-2013 <a href="http://www.owasp.org">OWASP</a>. All Rights Reserved.
</BODY>
</HTML>

View File

@@ -0,0 +1,185 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.6.0_25) on Mon Dec 02 22:29:25 EST 2013 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE>
Uses of Class org.owasp.dependencycheck.data.update.ProcessTask (Dependency-Check Core 1.0.7 API)
</TITLE>
<META NAME="date" CONTENT="2013-12-02">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../../stylesheet.css" TITLE="Style">
<SCRIPT type="text/javascript">
function windowTitle()
{
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="Uses of Class org.owasp.dependencycheck.data.update.ProcessTask (Dependency-Check Core 1.0.7 API)";
}
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>
</HEAD>
<BODY BGCOLOR="white" onload="windowTitle();">
<HR>
<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../../org/owasp/dependencycheck/data/update/ProcessTask.html" title="class in org.owasp.dependencycheck.data.update"><FONT CLASS="NavBarFont1"><B>Class</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Use</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../../../../index.html?org/owasp/dependencycheck/data/update/\class-useProcessTask.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="ProcessTask.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->
<HR>
<CENTER>
<H2>
<B>Uses of Class<br>org.owasp.dependencycheck.data.update.ProcessTask</B></H2>
</CENTER>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
Packages that use <A HREF="../../../../../../org/owasp/dependencycheck/data/update/ProcessTask.html" title="class in org.owasp.dependencycheck.data.update">ProcessTask</A></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><A HREF="#org.owasp.dependencycheck.data.update"><B>org.owasp.dependencycheck.data.update</B></A></TD>
<TD><html>
<head>
<title>org.owasp.dependencycheck.data.nvdcve.xml</title>
</head>
<body>&nbsp;</TD>
</TR>
</TABLE>
&nbsp;
<P>
<A NAME="org.owasp.dependencycheck.data.update"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
Uses of <A HREF="../../../../../../org/owasp/dependencycheck/data/update/ProcessTask.html" title="class in org.owasp.dependencycheck.data.update">ProcessTask</A> in <A HREF="../../../../../../org/owasp/dependencycheck/data/update/package-summary.html">org.owasp.dependencycheck.data.update</A></FONT></TH>
</TR>
</TABLE>
&nbsp;
<P>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left" COLSPAN="2">Methods in <A HREF="../../../../../../org/owasp/dependencycheck/data/update/package-summary.html">org.owasp.dependencycheck.data.update</A> that return <A HREF="../../../../../../org/owasp/dependencycheck/data/update/ProcessTask.html" title="class in org.owasp.dependencycheck.data.update">ProcessTask</A></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../../../org/owasp/dependencycheck/data/update/ProcessTask.html" title="class in org.owasp.dependencycheck.data.update">ProcessTask</A></CODE></FONT></TD>
<TD><CODE><B>ProcessTask.</B><B><A HREF="../../../../../../org/owasp/dependencycheck/data/update/ProcessTask.html#call()">call</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
</TABLE>
&nbsp;
<P>
<HR>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../../org/owasp/dependencycheck/data/update/ProcessTask.html" title="class in org.owasp.dependencycheck.data.update"><FONT CLASS="NavBarFont1"><B>Class</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Use</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../../../../index.html?org/owasp/dependencycheck/data/update/\class-useProcessTask.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="ProcessTask.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
Copyright &#169; 2012-2013 <a href="http://www.owasp.org">OWASP</a>. All Rights Reserved.
</BODY>
</HTML>

View File

@@ -0,0 +1,145 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.6.0_25) on Mon Dec 02 22:29:25 EST 2013 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE>
Uses of Class org.owasp.dependencycheck.data.update.StandardUpdate (Dependency-Check Core 1.0.7 API)
</TITLE>
<META NAME="date" CONTENT="2013-12-02">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../../stylesheet.css" TITLE="Style">
<SCRIPT type="text/javascript">
function windowTitle()
{
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="Uses of Class org.owasp.dependencycheck.data.update.StandardUpdate (Dependency-Check Core 1.0.7 API)";
}
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>
</HEAD>
<BODY BGCOLOR="white" onload="windowTitle();">
<HR>
<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../../org/owasp/dependencycheck/data/update/StandardUpdate.html" title="class in org.owasp.dependencycheck.data.update"><FONT CLASS="NavBarFont1"><B>Class</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Use</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../../../../index.html?org/owasp/dependencycheck/data/update/\class-useStandardUpdate.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="StandardUpdate.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->
<HR>
<CENTER>
<H2>
<B>Uses of Class<br>org.owasp.dependencycheck.data.update.StandardUpdate</B></H2>
</CENTER>
No usage of org.owasp.dependencycheck.data.update.StandardUpdate
<P>
<HR>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../../org/owasp/dependencycheck/data/update/StandardUpdate.html" title="class in org.owasp.dependencycheck.data.update"><FONT CLASS="NavBarFont1"><B>Class</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Use</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../../../../index.html?org/owasp/dependencycheck/data/update/\class-useStandardUpdate.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="StandardUpdate.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
Copyright &#169; 2012-2013 <a href="http://www.owasp.org">OWASP</a>. All Rights Reserved.
</BODY>
</HTML>

View File

@@ -0,0 +1,271 @@
<!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.update.ProcessTask</h5>
<div class="separator">&nbsp;</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.update.ProcessTask.html">ProcessTask</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/49</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">3.5;</span>3.5</td></tr>
</table>
<div class="separator">&nbsp;</div>
<table cellspacing="0" cellpadding="0" class="src">
<tr> <td class="numLine">&nbsp;1</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment">/*</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;2</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * This file is part of dependency-check-core.</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;3</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> *</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;4</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<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">&nbsp;5</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<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">&nbsp;6</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * Software Foundation, either version 3 of the License, or (at your option) any</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;7</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * later version.</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;8</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> *</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;9</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<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">&nbsp;10</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;11</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;12</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * details.</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;13</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> *</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;14</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<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">&nbsp;15</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * dependency-check-core. If not, see http://www.gnu.org/licenses/.</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;16</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> *</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;17</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * Copyright (c) 2013 Jeremy Long. All Rights Reserved.</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;18</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;19</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="keyword">package</span> org.owasp.dependencycheck.data.update;</pre></td></tr>
<tr> <td class="numLine">&nbsp;20</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;21</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> java.io.File;</pre></td></tr>
<tr> <td class="numLine">&nbsp;22</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> java.io.FileNotFoundException;</pre></td></tr>
<tr> <td class="numLine">&nbsp;23</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> java.io.IOException;</pre></td></tr>
<tr> <td class="numLine">&nbsp;24</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> java.sql.SQLException;</pre></td></tr>
<tr> <td class="numLine">&nbsp;25</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> java.util.List;</pre></td></tr>
<tr> <td class="numLine">&nbsp;26</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> java.util.Map;</pre></td></tr>
<tr> <td class="numLine">&nbsp;27</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> java.util.concurrent.Callable;</pre></td></tr>
<tr> <td class="numLine">&nbsp;28</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> java.util.logging.Level;</pre></td></tr>
<tr> <td class="numLine">&nbsp;29</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> java.util.logging.Logger;</pre></td></tr>
<tr> <td class="numLine">&nbsp;30</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> javax.xml.parsers.ParserConfigurationException;</pre></td></tr>
<tr> <td class="numLine">&nbsp;31</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> javax.xml.parsers.SAXParser;</pre></td></tr>
<tr> <td class="numLine">&nbsp;32</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> javax.xml.parsers.SAXParserFactory;</pre></td></tr>
<tr> <td class="numLine">&nbsp;33</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> org.owasp.dependencycheck.data.UpdateException;</pre></td></tr>
<tr> <td class="numLine">&nbsp;34</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> org.owasp.dependencycheck.data.nvdcve.CveDB;</pre></td></tr>
<tr> <td class="numLine">&nbsp;35</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> org.owasp.dependencycheck.data.nvdcve.DatabaseException;</pre></td></tr>
<tr> <td class="numLine">&nbsp;36</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> org.owasp.dependencycheck.data.nvdcve.NvdCve12Handler;</pre></td></tr>
<tr> <td class="numLine">&nbsp;37</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler;</pre></td></tr>
<tr> <td class="numLine">&nbsp;38</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> org.owasp.dependencycheck.dependency.VulnerableSoftware;</pre></td></tr>
<tr> <td class="numLine">&nbsp;39</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> org.xml.sax.SAXException;</pre></td></tr>
<tr> <td class="numLine">&nbsp;40</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;41</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;42</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * A callable task that will process a given set of NVD CVE xml files and update</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;43</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * the Cve Database accordingly.</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;44</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> *</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;45</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * @author Jeremy Long (jeremy.long@owasp.org)</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;46</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;47</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<span class="keyword">public</span> <span class="keyword">class</span> ProcessTask <span class="keyword">implements</span> Callable&lt;ProcessTask&gt; {</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;48</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;49</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;50</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * A field to store any update exceptions that occur during the "call".</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;51</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;52</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">private</span> UpdateException exception = <span class="keyword">null</span>;</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;53</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;54</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;55</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * Get the value of exception.</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;56</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> *</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;57</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * @return the value of exception</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;58</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;59</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> UpdateException getException() {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;60</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">return</span> exception;</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;61</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;62</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;63</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;64</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * Set the value of exception.</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;65</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> *</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;66</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * @param exception new value of exception</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;67</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;68</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> <span class="keyword">void</span> setException(UpdateException exception) {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;69</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">this</span>.exception = exception;</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;70</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; }</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;71</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">private</span> <span class="keyword">final</span> CveDB cveDB;</pre></td></tr>
<tr> <td class="numLine">&nbsp;72</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">private</span> <span class="keyword">final</span> CallableDownloadTask filePair;</pre></td></tr>
<tr> <td class="numLine">&nbsp;73</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">private</span> <span class="keyword">final</span> DataStoreMetaInfo properties;</pre></td></tr>
<tr> <td class="numLine">&nbsp;74</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;75</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">public</span> ProcessTask(<span class="keyword">final</span> CveDB cveDB, <span class="keyword">final</span> DataStoreMetaInfo properties, <span class="keyword">final</span> CallableDownloadTask filePair) {</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;76</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">this</span>.cveDB = cveDB;</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;77</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">this</span>.filePair = filePair;</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;78</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">this</span>.properties = properties;</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;79</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; }</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;80</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;81</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; @Override</pre></td></tr>
<tr> <td class="numLine">&nbsp;82</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> ProcessTask call() <span class="keyword">throws</span> Exception {</pre></td></tr>
<tr> <td class="numLine">&nbsp;83</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">try</span> {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;84</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; processFiles();</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;85</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; } <span class="keyword">catch</span> (UpdateException ex) {</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;86</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">this</span>.exception = ex;</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;87</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; }</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;88</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">return</span> <span class="keyword">this</span>;</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;89</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;90</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;91</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;92</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * Imports the NVD CVE XML File into the Lucene Index.</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;93</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> *</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;94</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * @param file the file containing the NVD CVE XML</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;95</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * @param oldVersion contains the file containing the NVD CVE XML 1.2</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;96</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * @throws ParserConfigurationException is thrown if there is a parser</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;97</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * configuration exception</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;98</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * @throws SAXException is thrown if there is a SAXException</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;99</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * @throws IOException is thrown if there is a IO Exception</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;100</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * @throws SQLException is thrown if there is a SQL exception</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;101</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * @throws DatabaseException is thrown if there is a database exception</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;102</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * @throws ClassNotFoundException thrown if the h2 database driver cannot be</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;103</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * loaded</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;104</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;105</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">protected</span> <span class="keyword">void</span> importXML(File file, File oldVersion) <span class="keyword">throws</span> ParserConfigurationException,</pre></td></tr>
<tr> <td class="numLine">&nbsp;106</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; SAXException, IOException, SQLException, DatabaseException, ClassNotFoundException {</pre></td></tr>
<tr> <td class="numLine">&nbsp;107</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;108</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">final</span> SAXParserFactory factory = SAXParserFactory.newInstance();</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;109</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">final</span> SAXParser saxParser = factory.newSAXParser();</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;110</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;111</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">final</span> NvdCve12Handler cve12Handler = <span class="keyword">new</span> NvdCve12Handler();</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;112</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; saxParser.parse(oldVersion, cve12Handler);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;113</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">final</span> Map&lt;String, List&lt;VulnerableSoftware&gt;&gt; prevVersionVulnMap = cve12Handler.getVulnerabilities();</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;114</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;115</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">final</span> NvdCve20Handler cve20Handler = <span class="keyword">new</span> NvdCve20Handler();</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;116</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; cve20Handler.setCveDB(cveDB);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;117</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; cve20Handler.setPrevVersionVulnMap(prevVersionVulnMap);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;118</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; saxParser.parse(file, cve20Handler);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;119</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; }</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;120</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;121</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">private</span> <span class="keyword">void</span> processFiles() <span class="keyword">throws</span> UpdateException {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;122</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; String msg = String.format(<span class="string">"Processing Started for NVD CVE - %s"</span>, filePair.getNvdCveInfo().getId());</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;123</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; Logger.getLogger(StandardUpdate.<span class="keyword">class</span>.getName()).log(Level.INFO, msg);</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;124</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">try</span> {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;125</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; importXML(filePair.getFirst(), filePair.getSecond());</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;126</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; cveDB.commit();</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;127</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; properties.save(filePair.getNvdCveInfo());</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;128</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; } <span class="keyword">catch</span> (FileNotFoundException ex) {</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;129</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">throw</span> <span class="keyword">new</span> UpdateException(ex);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;130</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; } <span class="keyword">catch</span> (ParserConfigurationException ex) {</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;131</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">throw</span> <span class="keyword">new</span> UpdateException(ex);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;132</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; } <span class="keyword">catch</span> (SAXException ex) {</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;133</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">throw</span> <span class="keyword">new</span> UpdateException(ex);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;134</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; } <span class="keyword">catch</span> (IOException ex) {</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;135</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">throw</span> <span class="keyword">new</span> UpdateException(ex);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;136</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; } <span class="keyword">catch</span> (SQLException ex) {</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;137</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">throw</span> <span class="keyword">new</span> UpdateException(ex);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;138</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; } <span class="keyword">catch</span> (DatabaseException ex) {</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;139</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">throw</span> <span class="keyword">new</span> UpdateException(ex);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;140</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; } <span class="keyword">catch</span> (ClassNotFoundException ex) {</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;141</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">throw</span> <span class="keyword">new</span> UpdateException(ex);</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;142</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; } <span class="keyword">finally</span> {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;143</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; filePair.cleanup();</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;144</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; }</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;145</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; msg = String.format(<span class="string">"Processing Complete for NVD CVE - %s"</span>, filePair.getNvdCveInfo().getId());</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;146</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; Logger.getLogger(StandardUpdate.<span class="keyword">class</span>.getName()).log(Level.INFO, msg);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;147</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; }</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;148</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;}</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 12/2/13 10:29 PM.</div>
</body>
</html>

View File

@@ -0,0 +1,941 @@
<!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.update.StandardUpdate</h5>
<div class="separator">&nbsp;</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.update.StandardUpdate.html">StandardUpdate</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/197</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/68</span></div></div></td></tr></table></td><td class="value"><span class="hidden">6.583333333333333;</span>6.583</td></tr>
</table>
<div class="separator">&nbsp;</div>
<table cellspacing="0" cellpadding="0" class="src">
<tr> <td class="numLine">&nbsp;1</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment">/*</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;2</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * This file is part of dependency-check-core.</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;3</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> *</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;4</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<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">&nbsp;5</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<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">&nbsp;6</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * Software Foundation, either version 3 of the License, or (at your option) any</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;7</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * later version.</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;8</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> *</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;9</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<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">&nbsp;10</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;11</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;12</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * details.</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;13</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> *</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;14</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<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">&nbsp;15</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * dependency-check-core. If not, see http://www.gnu.org/licenses/.</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;16</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> *</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;17</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * Copyright (c) 2012 Jeremy Long. All Rights Reserved.</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;18</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;19</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="keyword">package</span> org.owasp.dependencycheck.data.update;</pre></td></tr>
<tr> <td class="numLine">&nbsp;20</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;21</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> org.owasp.dependencycheck.data.nvdcve.InvalidDataException;</pre></td></tr>
<tr> <td class="numLine">&nbsp;22</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> java.io.File;</pre></td></tr>
<tr> <td class="numLine">&nbsp;23</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> java.io.IOException;</pre></td></tr>
<tr> <td class="numLine">&nbsp;24</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> java.net.MalformedURLException;</pre></td></tr>
<tr> <td class="numLine">&nbsp;25</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> java.sql.SQLException;</pre></td></tr>
<tr> <td class="numLine">&nbsp;26</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> java.util.Calendar;</pre></td></tr>
<tr> <td class="numLine">&nbsp;27</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> java.util.Date;</pre></td></tr>
<tr> <td class="numLine">&nbsp;28</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> java.util.HashSet;</pre></td></tr>
<tr> <td class="numLine">&nbsp;29</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> java.util.Iterator;</pre></td></tr>
<tr> <td class="numLine">&nbsp;30</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> java.util.Set;</pre></td></tr>
<tr> <td class="numLine">&nbsp;31</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> java.util.concurrent.ExecutionException;</pre></td></tr>
<tr> <td class="numLine">&nbsp;32</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> java.util.concurrent.ExecutorService;</pre></td></tr>
<tr> <td class="numLine">&nbsp;33</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> java.util.concurrent.Executors;</pre></td></tr>
<tr> <td class="numLine">&nbsp;34</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> java.util.concurrent.Future;</pre></td></tr>
<tr> <td class="numLine">&nbsp;35</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> java.util.logging.Level;</pre></td></tr>
<tr> <td class="numLine">&nbsp;36</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> java.util.logging.Logger;</pre></td></tr>
<tr> <td class="numLine">&nbsp;37</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> org.owasp.dependencycheck.data.UpdateException;</pre></td></tr>
<tr> <td class="numLine">&nbsp;38</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> org.owasp.dependencycheck.data.nvdcve.CveDB;</pre></td></tr>
<tr> <td class="numLine">&nbsp;39</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> org.owasp.dependencycheck.utils.DownloadFailedException;</pre></td></tr>
<tr> <td class="numLine">&nbsp;40</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> org.owasp.dependencycheck.utils.Settings;</pre></td></tr>
<tr> <td class="numLine">&nbsp;41</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> org.owasp.dependencycheck.data.nvdcve.DatabaseException;</pre></td></tr>
<tr> <td class="numLine">&nbsp;42</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> org.owasp.dependencycheck.utils.InvalidSettingException;</pre></td></tr>
<tr> <td class="numLine">&nbsp;43</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> <span class="keyword">static</span> org.owasp.dependencycheck.data.update.DataStoreMetaInfo.MODIFIED;</pre></td></tr>
<tr> <td class="numLine">&nbsp;44</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> org.owasp.dependencycheck.utils.FileUtils;</pre></td></tr>
<tr> <td class="numLine">&nbsp;45</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;46</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;47</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * Class responsible for updating the NVDCVE data store.</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;48</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> *</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;49</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * @author Jeremy Long (jeremy.long@owasp.org)</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;50</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;51</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="keyword">public</span> <span class="keyword">class</span> StandardUpdate {</pre></td></tr>
<tr> <td class="numLine">&nbsp;52</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;53</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;54</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * The max thread pool size to use when downloading files.</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;55</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;56</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">final</span> <span class="keyword">int</span> MAX_THREAD_POOL_SIZE = Settings.getInt(Settings.KEYS.MAX_DOWNLOAD_THREAD_POOL_SIZE, 3);</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;57</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;58</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * Information about the timestamps and URLs for data that needs to be</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;59</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * updated.</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;60</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;61</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">private</span> DataStoreMetaInfo properties;</pre></td></tr>
<tr> <td class="numLine">&nbsp;62</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;63</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * A collection of updateable NVD CVE items.</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;64</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;65</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">private</span> Updateable updateable;</pre></td></tr>
<tr> <td class="numLine">&nbsp;66</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;67</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * A flag indicating whether or not the current data store should be</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;68</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * deleted.</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;69</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;70</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">private</span> <span class="keyword">boolean</span> deleteAndRecreate = <span class="keyword">false</span>;</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;71</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;72</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * Reference to the Cve Database.</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;73</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;74</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">private</span> CveDB cveDB = <span class="keyword">null</span>;</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;75</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;76</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;77</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * Gets whether or not an update is needed.</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;78</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> *</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;79</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * @return true or false depending on whether an update is needed</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;80</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;81</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> <span class="keyword">boolean</span> isUpdateNeeded() {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;82</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">return</span> updateable.isUpdateNeeded();</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;83</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;84</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;85</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;86</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * Set the value of deleteAndRecreate.</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;87</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> *</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;88</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * @param deleteAndRecreate new value of deleteAndRecreate</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;89</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;90</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">protected</span> <span class="keyword">void</span> setDeleteAndRecreate(<span class="keyword">boolean</span> deleteAndRecreate) {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;91</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">this</span>.deleteAndRecreate = deleteAndRecreate;</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;92</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; }</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;93</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;94</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;95</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * Get the value of deleteAndRecreate.</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;96</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> *</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;97</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * @return the value of deleteAndRecreate</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;98</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;99</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> <span class="keyword">boolean</span> shouldDeleteAndRecreate() {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;100</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">return</span> deleteAndRecreate;</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;101</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;102</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;103</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;104</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * Constructs a new Standard Update Task.</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;105</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> *</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;106</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * @throws MalformedURLException thrown if a configured URL is malformed</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;107</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * @throws DownloadFailedException thrown if a timestamp cannot be checked</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;108</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * on a configured URL</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;109</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * @throws UpdateException thrown if there is an exception generating the</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;110</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * update task</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;111</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;112</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">public</span> StandardUpdate() <span class="keyword">throws</span> MalformedURLException, DownloadFailedException, UpdateException {</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;113</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; properties = <span class="keyword">new</span> DataStoreMetaInfo();</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;114</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; updateable = updatesNeeded();</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;115</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; }</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;116</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;117</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;118</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * &lt;p&gt;Downloads the latest NVD CVE XML file from the web and imports it into</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;119</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * the current CVE Database.&lt;/p&gt;</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;120</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> *</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;121</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * @throws UpdateException is thrown if there is an error updating the</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;122</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * database</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;123</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;124</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">public</span> <span class="keyword">void</span> update() <span class="keyword">throws</span> UpdateException {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;125</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">int</span> maxUpdates = 0;</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;126</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">try</span> {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;127</td> <td class="nbHitsUncovered"><a title="Line 127: Conditional coverage 0% (0/2).">&nbsp;0</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 127: Conditional coverage 0% (0/2)."> <span class="keyword">for</span> (NvdCveInfo cve : updateable) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;128</td> <td class="nbHitsUncovered"><a title="Line 128: Conditional coverage 0% (0/2).">&nbsp;0</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 128: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (cve.getNeedsUpdate()) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;129</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; maxUpdates += 1;</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;130</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;131</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;132</td> <td class="nbHitsUncovered"><a title="Line 132: Conditional coverage 0% (0/2).">&nbsp;0</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 132: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (maxUpdates &lt;= 0) {</a></span></pre></td></tr>
<tr> <td class="numLine">&nbsp;133</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">return</span>;</pre></td></tr>
<tr> <td class="numLine">&nbsp;134</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;135</td> <td class="nbHitsUncovered"><a title="Line 135: Conditional coverage 0% (0/2).">&nbsp;0</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 135: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (maxUpdates &gt; 3) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;136</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; Logger.getLogger(StandardUpdate.<span class="keyword">class</span>.getName()).log(Level.INFO,</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;137</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="string">"NVD CVE requires several updates; this could take a couple of minutes."</span>);</pre></td></tr>
<tr> <td class="numLine">&nbsp;138</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;139</td> <td class="nbHitsUncovered"><a title="Line 139: Conditional coverage 0% (0/2).">&nbsp;0</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 139: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (maxUpdates &gt; 0) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;140</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; openDataStores();</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;141</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;142</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;143</td> <td class="nbHitsUncovered"><a title="Line 143: Conditional coverage 0% (0/2).">&nbsp;0</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 143: Conditional coverage 0% (0/2)."> <span class="keyword">final</span> <span class="keyword">int</span> poolSize = (MAX_THREAD_POOL_SIZE &gt; maxUpdates) ? MAX_THREAD_POOL_SIZE : maxUpdates;</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;144</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">final</span> ExecutorService downloadExecutor = Executors.newFixedThreadPool(poolSize);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;145</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">final</span> ExecutorService processExecutor = Executors.newSingleThreadExecutor();</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;146</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">final</span> Set&lt;Future&lt;CallableDownloadTask&gt;&gt; downloadFutures = <span class="keyword">new</span> HashSet&lt;Future&lt;CallableDownloadTask&gt;&gt;(maxUpdates);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;147</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">final</span> Set&lt;Future&lt;ProcessTask&gt;&gt; processFutures = <span class="keyword">new</span> HashSet&lt;Future&lt;ProcessTask&gt;&gt;(maxUpdates);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;148</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">int</span> ctr = 0;</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;149</td> <td class="nbHitsUncovered"><a title="Line 149: Conditional coverage 0% (0/2).">&nbsp;0</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 149: Conditional coverage 0% (0/2)."> <span class="keyword">for</span> (NvdCveInfo cve : updateable) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;150</td> <td class="nbHitsUncovered"><a title="Line 150: Conditional coverage 0% (0/2).">&nbsp;0</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 150: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (cve.getNeedsUpdate()) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;151</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; ctr += 1;</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;152</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> File file1;</pre></td></tr>
<tr> <td class="numLine">&nbsp;153</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">final</span> File file2;</pre></td></tr>
<tr> <td class="numLine">&nbsp;154</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">try</span> {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;155</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; file1 = 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">&nbsp;156</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; file2 = 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">&nbsp;157</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; } <span class="keyword">catch</span> (IOException ex) {</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;158</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">throw</span> <span class="keyword">new</span> UpdateException(ex);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;159</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; }</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;160</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">final</span> CallableDownloadTask call = <span class="keyword">new</span> CallableDownloadTask(cve, file1, file2);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;161</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; downloadFutures.add(downloadExecutor.submit(call));</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;162</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;163</td> <td class="nbHitsUncovered"><a title="Line 163: Conditional coverage 0% (0/2).">&nbsp;0</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 163: Conditional coverage 0% (0/2)."> <span class="keyword">boolean</span> waitForFuture = ctr % 2 == 0;</a></span></pre></td></tr>
<tr> <td class="numLine">&nbsp;164</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;165</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">final</span> Iterator&lt;Future&lt;CallableDownloadTask&gt;&gt; itr = downloadFutures.iterator();</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;166</td> <td class="nbHitsUncovered"><a title="Line 166: Conditional coverage 0% (0/2).">&nbsp;0</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 166: Conditional coverage 0% (0/2)."> <span class="keyword">while</span> (itr.hasNext()) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;167</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">final</span> Future&lt;CallableDownloadTask&gt; future = itr.next();</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;168</td> <td class="nbHitsUncovered"><a title="Line 168: Conditional coverage 0% (0/2).">&nbsp;0</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 168: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (waitForFuture) { <span class="comment">//only allow two NVD/CVE files to be downloaded at a time</span></a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;169</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; spinWaitForFuture(future);</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;170</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;171</td> <td class="nbHitsUncovered"><a title="Line 171: Conditional coverage 0% (0/2).">&nbsp;0</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 171: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (future.isDone()) { <span class="comment">//if we find something complete, add it to the process queue</span></a></span></pre></td></tr>
<tr> <td class="numLine">&nbsp;172</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">try</span> {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;173</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">final</span> CallableDownloadTask filePair = future.get();</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;174</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; itr.remove();</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;175</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">final</span> ProcessTask task = <span class="keyword">new</span> ProcessTask(cveDB, properties, filePair);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;176</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; processFutures.add(processExecutor.submit(task));</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;177</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; } <span class="keyword">catch</span> (InterruptedException ex) {</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;178</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; downloadExecutor.shutdownNow();</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;179</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; Logger.getLogger(StandardUpdate.<span class="keyword">class</span>.getName()).log(Level.FINE, <span class="string">"Thread was interupted"</span>, ex);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;180</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">throw</span> <span class="keyword">new</span> UpdateException(ex);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;181</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; } <span class="keyword">catch</span> (ExecutionException ex) {</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;182</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; downloadExecutor.shutdownNow();</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;183</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; Logger.getLogger(StandardUpdate.<span class="keyword">class</span>.getName()).log(Level.SEVERE, <span class="keyword">null</span>, ex);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;184</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">throw</span> <span class="keyword">new</span> UpdateException(ex);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;185</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; }</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;186</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;187</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; }</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;188</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;189</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; }</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;190</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;191</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;192</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">try</span> {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;193</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">final</span> Iterator&lt;Future&lt;CallableDownloadTask&gt;&gt; itr = downloadFutures.iterator();</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;194</td> <td class="nbHitsUncovered"><a title="Line 194: Conditional coverage 0% (0/2).">&nbsp;0</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 194: Conditional coverage 0% (0/2)."> <span class="keyword">while</span> (itr.hasNext()) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;195</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">final</span> Future&lt;CallableDownloadTask&gt; future = itr.next();</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;196</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">final</span> CallableDownloadTask filePair = future.get();</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;197</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">final</span> ProcessTask task = <span class="keyword">new</span> ProcessTask(cveDB, properties, filePair);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;198</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; processFutures.add(processExecutor.submit(task));</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;199</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; }</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;200</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; } <span class="keyword">catch</span> (InterruptedException ex) {</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;201</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; downloadExecutor.shutdownNow();</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;202</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; Logger.getLogger(StandardUpdate.<span class="keyword">class</span>.getName()).log(Level.FINE, <span class="string">"Thread was interupted during download"</span>, ex);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;203</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">throw</span> <span class="keyword">new</span> UpdateException(ex);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;204</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; } <span class="keyword">catch</span> (ExecutionException ex) {</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;205</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; downloadExecutor.shutdownNow();</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;206</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; Logger.getLogger(StandardUpdate.<span class="keyword">class</span>.getName()).log(Level.FINE, <span class="string">"Execution Exception during download"</span>, ex);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;207</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">throw</span> <span class="keyword">new</span> UpdateException(ex);</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;208</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; } <span class="keyword">finally</span> {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;209</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; downloadExecutor.shutdown();</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;210</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; }</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;211</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;212</td> <td class="nbHitsUncovered"><a title="Line 212: Conditional coverage 0% (0/2).">&nbsp;0</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 212: Conditional coverage 0% (0/2)."> <span class="keyword">for</span> (Future&lt;ProcessTask&gt; future : processFutures) {</a></span></pre></td></tr>
<tr> <td class="numLine">&nbsp;213</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">try</span> {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;214</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">final</span> ProcessTask task = future.get();</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;215</td> <td class="nbHitsUncovered"><a title="Line 215: Conditional coverage 0% (0/2).">&nbsp;0</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 215: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (task.getException() != <span class="keyword">null</span>) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;216</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">throw</span> task.getException();</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;217</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;218</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; } <span class="keyword">catch</span> (InterruptedException ex) {</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;219</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; processExecutor.shutdownNow();</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;220</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; Logger.getLogger(StandardUpdate.<span class="keyword">class</span>.getName()).log(Level.FINE, <span class="string">"Thread was interupted during processing"</span>, ex);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;221</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">throw</span> <span class="keyword">new</span> UpdateException(ex);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;222</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; } <span class="keyword">catch</span> (ExecutionException ex) {</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;223</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; processExecutor.shutdownNow();</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;224</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; Logger.getLogger(StandardUpdate.<span class="keyword">class</span>.getName()).log(Level.FINE, <span class="string">"Execution Exception during process"</span>, ex);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;225</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">throw</span> <span class="keyword">new</span> UpdateException(ex);</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;226</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; } <span class="keyword">finally</span> {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;227</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; processExecutor.shutdown();</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;228</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; }</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;229</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;230</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;231</td> <td class="nbHitsUncovered"><a title="Line 231: Conditional coverage 0% (0/2).">&nbsp;0</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 231: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (maxUpdates &gt;= 1) { <span class="comment">//ensure the modified file date gets written</span></a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;232</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; properties.save(updateable.get(MODIFIED));</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;233</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; cveDB.cleanupDatabase();</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;234</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;235</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; } <span class="keyword">finally</span> {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;236</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; closeDataStores();</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;237</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; }</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;238</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; }</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;239</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;240</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="comment">//&lt;editor-fold defaultstate="collapsed" desc="OLD version of update() - not multithreaded"&gt;</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;241</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="comment">/*</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;242</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * TODO - remove this</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;243</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> public void update() throws UpdateException {</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;244</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> try {</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;245</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> int maxUpdates = 0;</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;246</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> for (NvdCveInfo cve : getUpdateable()) {</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;247</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> if (cve.getNeedsUpdate()) {</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;248</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> maxUpdates += 1;</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;249</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> }</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;250</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> }</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;251</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> if (maxUpdates &gt; 3) {</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;252</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> Logger.getLogger(StandardUpdate.class.getName()).log(Level.INFO,</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;253</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> "NVD CVE requires several updates; this could take a couple of minutes.");</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;254</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> }</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;255</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> if (maxUpdates &gt; 0) {</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;256</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> openDataStores();</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;257</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> }</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;258</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;259</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> int count = 0;</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;260</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> for (NvdCveInfo cve : getUpdateable()) {</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;261</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> if (cve.getNeedsUpdate()) {</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;262</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> count += 1;</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;263</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> Logger.getLogger(StandardUpdate.class.getName()).log(Level.INFO,</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;264</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> "Updating NVD CVE ({0} of {1})", new Object[]{count, maxUpdates});</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;265</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> URL url = new URL(cve.getUrl());</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;266</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> File outputPath = null;</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;267</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> File outputPath12 = null;</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;268</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> try {</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;269</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> Logger.getLogger(StandardUpdate.class.getName()).log(Level.INFO,</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;270</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> "Downloading {0}", cve.getUrl());</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;271</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> outputPath = File.createTempFile("cve" + cve.getId() + "_", ".xml");</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;272</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> Downloader.fetchFile(url, outputPath);</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;273</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;274</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> url = new URL(cve.getOldSchemaVersionUrl());</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;275</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> outputPath12 = File.createTempFile("cve_1_2_" + cve.getId() + "_", ".xml");</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;276</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> Downloader.fetchFile(url, outputPath12);</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;277</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;278</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> Logger.getLogger(StandardUpdate.class.getName()).log(Level.INFO,</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;279</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> "Processing {0}", cve.getUrl());</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;280</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;281</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> importXML(outputPath, outputPath12);</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;282</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;283</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> getCveDB().commit();</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;284</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> getProperties().save(cve);</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;285</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;286</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> Logger.getLogger(StandardUpdate.class.getName()).log(Level.INFO,</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;287</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> "Completed update {0} of {1}", new Object[]{count, maxUpdates});</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;288</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> } catch (FileNotFoundException ex) {</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;289</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> throw new UpdateException(ex);</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;290</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> } catch (ParserConfigurationException ex) {</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;291</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> throw new UpdateException(ex);</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;292</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> } catch (SAXException ex) {</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;293</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> throw new UpdateException(ex);</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;294</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> } catch (IOException ex) {</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;295</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> throw new UpdateException(ex);</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;296</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> } catch (SQLException ex) {</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;297</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> throw new UpdateException(ex);</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;298</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> } catch (DatabaseException ex) {</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;299</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> throw new UpdateException(ex);</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;300</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> } catch (ClassNotFoundException ex) {</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;301</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> throw new UpdateException(ex);</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;302</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> } finally {</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;303</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> boolean deleted = false;</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;304</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> try {</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;305</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> if (outputPath != null &amp;&amp; outputPath.exists()) {</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;306</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> deleted = outputPath.delete();</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;307</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> }</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;308</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> } finally {</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;309</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> if (outputPath != null &amp;&amp; (outputPath.exists() || !deleted)) {</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;310</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> outputPath.deleteOnExit();</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;311</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> }</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;312</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> }</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;313</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> try {</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;314</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> deleted = false;</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;315</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> if (outputPath12 != null &amp;&amp; outputPath12.exists()) {</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;316</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> deleted = outputPath12.delete();</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;317</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> }</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;318</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> } finally {</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;319</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> if (outputPath12 != null &amp;&amp; (outputPath12.exists() || !deleted)) {</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;320</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> outputPath12.deleteOnExit();</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;321</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> }</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;322</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> }</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;323</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> }</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;324</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> }</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;325</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> }</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;326</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> if (maxUpdates &gt;= 1) { //ensure the modified file date gets written</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;327</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> getProperties().save(getUpdateable().get(MODIFIED));</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;328</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> getCveDB().cleanupDatabase();</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;329</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> }</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;330</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> } catch (MalformedURLException ex) {</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;331</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> throw new UpdateException(ex);</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;332</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> } finally {</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;333</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> closeDataStores();</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;334</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> }</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;335</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> }</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;336</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;337</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="comment">//&lt;/editor-fold&gt;</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;338</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;339</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<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">&nbsp;340</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<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">&nbsp;341</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * be refreshed this method will return the NvdCveUrl for the files that</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;342</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * need to be updated.</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;343</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> *</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;344</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * @return the collection of files that need to be updated</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;345</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * @throws MalformedURLException is thrown if the URL for the NVD CVE Meta</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;346</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * data is incorrect</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;347</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * @throws DownloadFailedException is thrown if there is an error.</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;348</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * downloading the NVD CVE download data file</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;349</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * @throws UpdateException Is thrown if there is an issue with the last</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;350</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * updated properties file</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;351</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;352</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">protected</span> <span class="keyword">final</span> Updateable updatesNeeded() <span class="keyword">throws</span> MalformedURLException, DownloadFailedException, UpdateException {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;353</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; Updateable updates = <span class="keyword">null</span>;</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;354</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">try</span> {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;355</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; updates = retrieveCurrentTimestampsFromWeb();</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;356</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; } <span class="keyword">catch</span> (InvalidDataException ex) {</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;357</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <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">&nbsp;358</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; Logger</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;359</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; .getLogger(StandardUpdate.<span class="keyword">class</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;360</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; .getName()).log(Level.FINE, msg, ex);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;361</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">throw</span> <span class="keyword">new</span> DownloadFailedException(msg, ex);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;362</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; } <span class="keyword">catch</span> (InvalidSettingException ex) {</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;363</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; Logger.getLogger(StandardUpdate.<span class="keyword">class</span></span></pre></td></tr>
<tr> <td class="numLine">&nbsp;364</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; .getName()).log(Level.FINE, <span class="string">"Invalid setting found when retrieving timestamps"</span>, ex);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;365</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">throw</span> <span class="keyword">new</span> DownloadFailedException(</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;366</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="string">"Invalid settings"</span>, ex);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;367</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; }</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;368</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;369</td> <td class="nbHitsUncovered"><a title="Line 369: Conditional coverage 0% (0/2).">&nbsp;0</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 369: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (updates == <span class="keyword">null</span>) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;370</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">throw</span> <span class="keyword">new</span> DownloadFailedException(<span class="string">"Unable to retrieve the timestamps of the currently published NVD CVE data"</span>);</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;371</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;372</td> <td class="nbHitsUncovered"><a title="Line 372: Conditional coverage 0% (0/2).">&nbsp;0</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 372: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (!properties.isEmpty()) {</a></span></pre></td></tr>
<tr> <td class="numLine">&nbsp;373</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">try</span> {</pre></td></tr>
<tr> <td class="numLine">&nbsp;374</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">float</span> version;</pre></td></tr>
<tr> <td class="numLine">&nbsp;375</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;376</td> <td class="nbHitsUncovered"><a title="Line 376: Conditional coverage 0% (0/2).">&nbsp;0</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 376: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (properties.getProperty(<span class="string">"version"</span>) == <span class="keyword">null</span>) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;377</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; deleteAndRecreate = <span class="keyword">true</span>;</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;378</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; } <span class="keyword">else</span> {</pre></td></tr>
<tr> <td class="numLine">&nbsp;379</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">try</span> {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;380</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; version = Float.parseFloat(properties.getProperty(<span class="string">"version"</span>));</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;381</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <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">&nbsp;382</td> <td class="nbHitsUncovered"><a title="Line 382: Conditional coverage 0% (0/2).">&nbsp;0</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 382: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (currentVersion &gt; version) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;383</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; deleteAndRecreate = <span class="keyword">true</span>;</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;384</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;385</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; } <span class="keyword">catch</span> (NumberFormatException ex) {</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;386</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; deleteAndRecreate = <span class="keyword">true</span>;</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;387</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; }</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;388</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;389</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;390</td> <td class="nbHitsUncovered"><a title="Line 390: Conditional coverage 0% (0/2).">&nbsp;0</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 390: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (deleteAndRecreate) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;391</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">return</span> updates;</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;392</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;393</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;394</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">final</span> <span class="keyword">long</span> lastUpdated = Long.parseLong(properties.getProperty(DataStoreMetaInfo.LAST_UPDATED, <span class="string">"0"</span>));</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;395</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">final</span> Date now = <span class="keyword">new</span> Date();</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;396</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <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">&nbsp;397</td> <td class="nbHitsUncovered"><a title="Line 397: Conditional coverage 0% (0/2).">&nbsp;0</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 397: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (lastUpdated == updates.getTimeStamp(MODIFIED)) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;398</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; updates.clear(); <span class="comment">//we don't need to update anything.</span></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;399</td> <td class="nbHitsUncovered"><a title="Line 399: Conditional coverage 0% (0/2).">&nbsp;0</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 399: 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">&nbsp;400</td> <td class="nbHitsUncovered"><a title="Line 400: Conditional coverage 0% (0/2).">&nbsp;0</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 400: Conditional coverage 0% (0/2)."> <span class="keyword">for</span> (NvdCveInfo entry : updates) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;401</td> <td class="nbHitsUncovered"><a title="Line 401: Conditional coverage 0% (0/2).">&nbsp;0</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 401: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (MODIFIED.equals(entry.getId())) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;402</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; entry.setNeedsUpdate(<span class="keyword">true</span>);</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;403</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; } <span class="keyword">else</span> {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;404</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; entry.setNeedsUpdate(<span class="keyword">false</span>);</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;405</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;406</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;407</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; } <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">&nbsp;408</td> <td class="nbHitsUncovered"><a title="Line 408: Conditional coverage 0% (0/2).">&nbsp;0</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 408: Conditional coverage 0% (0/2)."> <span class="keyword">for</span> (NvdCveInfo entry : updates) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;409</td> <td class="nbHitsUncovered"><a title="Line 409: Conditional coverage 0% (0/2).">&nbsp;0</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 409: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (MODIFIED.equals(entry.getId())) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;410</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; entry.setNeedsUpdate(<span class="keyword">true</span>);</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;411</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; } <span class="keyword">else</span> {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;412</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">long</span> currentTimestamp = 0;</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;413</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">try</span> {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;414</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; currentTimestamp = Long.parseLong(properties.getProperty(DataStoreMetaInfo.LAST_UPDATED_BASE + entry.getId(), <span class="string">"0"</span>));</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;415</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; } <span class="keyword">catch</span> (NumberFormatException ex) {</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;416</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <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">&nbsp;417</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; DataStoreMetaInfo.LAST_UPDATED_BASE, entry.getId());</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;418</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; Logger</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;419</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; .getLogger(StandardUpdate.<span class="keyword">class</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;420</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; .getName()).log(Level.FINE, msg, ex);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;421</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; }</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;422</td> <td class="nbHitsUncovered"><a title="Line 422: Conditional coverage 0% (0/2).">&nbsp;0</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 422: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (currentTimestamp == entry.getTimestamp()) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;423</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; entry.setNeedsUpdate(<span class="keyword">false</span>);</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;424</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;425</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; }</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;426</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;427</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;428</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; } <span class="keyword">catch</span> (NumberFormatException ex) {</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;429</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">final</span> String msg = <span class="string">"An invalid schema version or timestamp exists in the data.properties file."</span>;</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;430</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; Logger</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;431</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; .getLogger(StandardUpdate.<span class="keyword">class</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;432</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; .getName()).log(Level.WARNING, msg);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;433</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; Logger.getLogger(StandardUpdate.<span class="keyword">class</span></span></pre></td></tr>
<tr> <td class="numLine">&nbsp;434</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; .getName()).log(Level.FINE, <span class="keyword">null</span>, ex);</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;435</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; }</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;436</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;437</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">return</span> updates;</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;438</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;439</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;440</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;441</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * Retrieves the timestamps from the NVD CVE meta data file.</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;442</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> *</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;443</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * @return the timestamp from the currently published nvdcve downloads page</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;444</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * @throws MalformedURLException thrown if the URL for the NVD CCE Meta data</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;445</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * is incorrect.</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;446</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * @throws DownloadFailedException thrown if there is an error downloading</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;447</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * the nvd cve meta data file</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;448</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * @throws InvalidDataException thrown if there is an exception parsing the</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;449</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * timestamps</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;450</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * @throws InvalidSettingException thrown if the settings are invalid</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;451</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;452</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">private</span> Updateable retrieveCurrentTimestampsFromWeb()</pre></td></tr>
<tr> <td class="numLine">&nbsp;453</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">throws</span> MalformedURLException, DownloadFailedException, InvalidDataException, InvalidSettingException {</pre></td></tr>
<tr> <td class="numLine">&nbsp;454</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;455</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">final</span> Updateable updates = <span class="keyword">new</span> Updateable();</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;456</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; updates.add(MODIFIED, Settings.getString(Settings.KEYS.CVE_MODIFIED_20_URL),</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;457</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; Settings.getString(Settings.KEYS.CVE_MODIFIED_12_URL),</pre></td></tr>
<tr> <td class="numLine">&nbsp;458</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">false</span>);</pre></td></tr>
<tr> <td class="numLine">&nbsp;459</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;460</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <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">&nbsp;461</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">final</span> <span class="keyword">int</span> end = Calendar.getInstance().get(Calendar.YEAR);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;462</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">final</span> String baseUrl20 = Settings.getString(Settings.KEYS.CVE_SCHEMA_2_0);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;463</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">final</span> String baseUrl12 = Settings.getString(Settings.KEYS.CVE_SCHEMA_1_2);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;464</td> <td class="nbHitsUncovered"><a title="Line 464: Conditional coverage 0% (0/2).">&nbsp;0</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 464: Conditional coverage 0% (0/2)."> <span class="keyword">for</span> (<span class="keyword">int</span> i = start; i &lt;= end; i++) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;465</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; updates.add(Integer.toString(i), String.format(baseUrl20, i),</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;466</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; String.format(baseUrl12, i),</pre></td></tr>
<tr> <td class="numLine">&nbsp;467</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">true</span>);</pre></td></tr>
<tr> <td class="numLine">&nbsp;468</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;469</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;470</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <span class="keyword">return</span> updates;</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;471</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;472</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;473</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;474</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * Deletes the existing data directories.</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;475</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> *</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;476</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * @throws IOException thrown if the directory cannot be deleted</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;477</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;478</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">protected</span> <span class="keyword">void</span> deleteExistingData() <span class="keyword">throws</span> IOException {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;479</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; File data = Settings.getDataFile(Settings.KEYS.CVE_DATA_DIRECTORY);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;480</td> <td class="nbHitsUncovered"><a title="Line 480: Conditional coverage 0% (0/2).">&nbsp;0</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 480: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (data.exists()) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;481</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; FileUtils.delete(data);</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;482</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;483</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; data = DataStoreMetaInfo.getPropertiesFile();</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;484</td> <td class="nbHitsUncovered"><a title="Line 484: Conditional coverage 0% (0/2).">&nbsp;0</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 484: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (data.exists()) {</a></span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;485</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; FileUtils.delete(data);</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;486</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;487</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; }</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;488</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;489</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;490</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * Closes the CVE and CPE data stores.</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;491</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;492</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">protected</span> <span class="keyword">void</span> closeDataStores() {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;493</td> <td class="nbHitsUncovered"><a title="Line 493: Conditional coverage 0% (0/2).">&nbsp;0</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 493: 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">&nbsp;494</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">try</span> {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;495</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; cveDB.close();</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;496</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; } <span class="keyword">catch</span> (Exception ignore) {</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;497</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; Logger.getLogger(StandardUpdate.<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">&nbsp;498</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; }</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;499</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;500</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; }</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;501</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;502</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;503</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * Opens the CVE and CPE data stores.</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;504</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> *</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;505</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * @throws UpdateException thrown if a data store cannot be opened</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;506</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;507</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">protected</span> <span class="keyword">void</span> openDataStores() <span class="keyword">throws</span> UpdateException {</pre></td></tr>
<tr> <td class="numLine">&nbsp;508</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="comment">//open the cve and cpe data stores</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;509</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">try</span> {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;510</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; cveDB = <span class="keyword">new</span> CveDB();</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;511</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; cveDB.open();</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;512</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; } <span class="keyword">catch</span> (IOException ex) {</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;513</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; closeDataStores();</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;514</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; Logger.getLogger(StandardUpdate.<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">&nbsp;515</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <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">&nbsp;516</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; } <span class="keyword">catch</span> (SQLException ex) {</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;517</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; closeDataStores();</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;518</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; Logger.getLogger(StandardUpdate.<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">&nbsp;519</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <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">&nbsp;520</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; } <span class="keyword">catch</span> (DatabaseException ex) {</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;521</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; closeDataStores();</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;522</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; Logger.getLogger(StandardUpdate.<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">&nbsp;523</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <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">&nbsp;524</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; } <span class="keyword">catch</span> (ClassNotFoundException ex) {</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;525</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; closeDataStores();</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;526</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; Logger.getLogger(StandardUpdate.<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">&nbsp;527</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <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">&nbsp;528</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; }</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;529</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; }</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;530</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;531</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;532</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * Determines if the epoch date is within the range specified of the</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;533</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * compareTo epoch time. This takes the (compareTo-date)/1000/60/60/24 to</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;534</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<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">&nbsp;535</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * date is considered valid.</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;536</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> *</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;537</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * @param date the date to be checked.</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;538</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * @param compareTo the date to compare to.</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;539</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * @param range the range in days to be considered valid.</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;540</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> * @return whether or not the date is within the range.</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;541</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;<span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;542</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">protected</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">&nbsp;543</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; <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">&nbsp;544</td> <td class="nbHitsUncovered"><a title="Line 544: Conditional coverage 0% (0/2).">&nbsp;0</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 544: Conditional coverage 0% (0/2)."> <span class="keyword">return</span> differenceInDays &lt; range;</a></span></pre></td></tr>
<tr> <td class="numLine">&nbsp;545</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLine">&nbsp;546</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr> <td class="numLine">&nbsp;547</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">private</span> <span class="keyword">void</span> spinWaitForFuture(<span class="keyword">final</span> Future&lt;CallableDownloadTask&gt; future) {</pre></td></tr>
<tr> <td class="numLine">&nbsp;548</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="comment">//then wait for downloads to finish</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;549</td> <td class="nbHitsUncovered"><a title="Line 549: Conditional coverage 0% (0/2).">&nbsp;0</a></td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;<a title="Line 549: Conditional coverage 0% (0/2)."> <span class="keyword">while</span> (!future.isDone()) {</a></span></pre></td></tr>
<tr> <td class="numLine">&nbsp;550</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; <span class="keyword">try</span> {</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;551</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; Thread.sleep(1000);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;552</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; } <span class="keyword">catch</span> (InterruptedException ex) {</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;553</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; Logger.getLogger(StandardUpdate.<span class="keyword">class</span>.getName()).log(Level.FINE, <span class="keyword">null</span>, ex);</span></pre></td></tr>
<tr> <td class="numLineCover">&nbsp;554</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; }</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;555</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp; }</pre></td></tr>
<tr> <td class="numLineCover">&nbsp;556</td> <td class="nbHitsUncovered">&nbsp;0</td> <td class="src"><pre class="src"><span class="srcUncovered">&nbsp; }</span></pre></td></tr>
<tr> <td class="numLine">&nbsp;557</td> <td class="nbHits">&nbsp;</td>
<td class="src"><pre class="src">&nbsp;}</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 12/2/13 10:29 PM.</div>
</body>
</html>

View File

@@ -0,0 +1,155 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>StandardUpdateIntegrationTest xref</title>
<link type="text/css" rel="stylesheet" href="../../../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../../../testapidocs/org/owasp/dependencycheck/data/update/StandardUpdateIntegrationTest.html">View Javadoc</a></div><pre>
<a class="jxr_linenumber" name="1" href="#1">1</a> <em class="jxr_comment">/*</em>
<a class="jxr_linenumber" name="2" href="#2">2</a> <em class="jxr_comment"> * This file is part of dependency-check-core.</em>
<a class="jxr_linenumber" name="3" href="#3">3</a> <em class="jxr_comment"> *</em>
<a class="jxr_linenumber" name="4" href="#4">4</a> <em class="jxr_comment"> * Dependency-check-core is free software: you can redistribute it and/or modify it</em>
<a class="jxr_linenumber" name="5" href="#5">5</a> <em class="jxr_comment"> * under the terms of the GNU General Public License as published by the Free</em>
<a class="jxr_linenumber" name="6" href="#6">6</a> <em class="jxr_comment"> * Software Foundation, either version 3 of the License, or (at your option) any</em>
<a class="jxr_linenumber" name="7" href="#7">7</a> <em class="jxr_comment"> * later version.</em>
<a class="jxr_linenumber" name="8" href="#8">8</a> <em class="jxr_comment"> *</em>
<a class="jxr_linenumber" name="9" href="#9">9</a> <em class="jxr_comment"> * Dependency-check-core is distributed in the hope that it will be useful, but</em>
<a class="jxr_linenumber" name="10" href="#10">10</a> <em class="jxr_comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or</em>
<a class="jxr_linenumber" name="11" href="#11">11</a> <em class="jxr_comment"> * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more</em>
<a class="jxr_linenumber" name="12" href="#12">12</a> <em class="jxr_comment"> * details.</em>
<a class="jxr_linenumber" name="13" href="#13">13</a> <em class="jxr_comment"> *</em>
<a class="jxr_linenumber" name="14" href="#14">14</a> <em class="jxr_comment"> * You should have received a copy of the GNU General Public License along with</em>
<a class="jxr_linenumber" name="15" href="#15">15</a> <em class="jxr_comment"> * dependency-check-core. If not, see <a href="http://www.gnu.org/licenses/." target="alexandria_uri">http://www.gnu.org/licenses/.</a></em>
<a class="jxr_linenumber" name="16" href="#16">16</a> <em class="jxr_comment"> *</em>
<a class="jxr_linenumber" name="17" href="#17">17</a> <em class="jxr_comment"> * Copyright (c) 2013 Jeremy Long. All Rights Reserved.</em>
<a class="jxr_linenumber" name="18" href="#18">18</a> <em class="jxr_comment"> */</em>
<a class="jxr_linenumber" name="19" href="#19">19</a> <strong class="jxr_keyword">package</strong> org.owasp.dependencycheck.data.update;
<a class="jxr_linenumber" name="20" href="#20">20</a>
<a class="jxr_linenumber" name="21" href="#21">21</a> <strong class="jxr_keyword">import</strong> java.io.IOException;
<a class="jxr_linenumber" name="22" href="#22">22</a> <strong class="jxr_keyword">import</strong> java.net.MalformedURLException;
<a class="jxr_linenumber" name="23" href="#23">23</a> <strong class="jxr_keyword">import</strong> java.util.Calendar;
<a class="jxr_linenumber" name="24" href="#24">24</a> <strong class="jxr_keyword">import</strong> org.junit.After;
<a class="jxr_linenumber" name="25" href="#25">25</a> <strong class="jxr_keyword">import</strong> org.junit.AfterClass;
<a class="jxr_linenumber" name="26" href="#26">26</a> <strong class="jxr_keyword">import</strong> org.junit.Before;
<a class="jxr_linenumber" name="27" href="#27">27</a> <strong class="jxr_keyword">import</strong> org.junit.BeforeClass;
<a class="jxr_linenumber" name="28" href="#28">28</a> <strong class="jxr_keyword">import</strong> org.junit.Test;
<a class="jxr_linenumber" name="29" href="#29">29</a> <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.junit.Assert.*;
<a class="jxr_linenumber" name="30" href="#30">30</a> <strong class="jxr_keyword">import</strong> org.owasp.dependencycheck.data.UpdateException;
<a class="jxr_linenumber" name="31" href="#31">31</a> <strong class="jxr_keyword">import</strong> org.owasp.dependencycheck.utils.DownloadFailedException;
<a class="jxr_linenumber" name="32" href="#32">32</a>
<a class="jxr_linenumber" name="33" href="#33">33</a> <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="34" href="#34">34</a> <em class="jxr_javadoccomment"> *</em>
<a class="jxr_linenumber" name="35" href="#35">35</a> <em class="jxr_javadoccomment"> * @author Jeremy Long (jeremy.long@owasp.org)</em>
<a class="jxr_linenumber" name="36" href="#36">36</a> <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="37" href="#37">37</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/owasp/dependencycheck/data/update/StandardUpdateIntegrationTest.html">StandardUpdateIntegrationTest</a> {
<a class="jxr_linenumber" name="38" href="#38">38</a>
<a class="jxr_linenumber" name="39" href="#39">39</a> <strong class="jxr_keyword">public</strong> <a href="../../../../../org/owasp/dependencycheck/data/update/StandardUpdateIntegrationTest.html">StandardUpdateIntegrationTest</a>() {
<a class="jxr_linenumber" name="40" href="#40">40</a> }
<a class="jxr_linenumber" name="41" href="#41">41</a>
<a class="jxr_linenumber" name="42" href="#42">42</a> @BeforeClass
<a class="jxr_linenumber" name="43" href="#43">43</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> setUpClass() {
<a class="jxr_linenumber" name="44" href="#44">44</a> }
<a class="jxr_linenumber" name="45" href="#45">45</a>
<a class="jxr_linenumber" name="46" href="#46">46</a> @AfterClass
<a class="jxr_linenumber" name="47" href="#47">47</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> tearDownClass() {
<a class="jxr_linenumber" name="48" href="#48">48</a> }
<a class="jxr_linenumber" name="49" href="#49">49</a>
<a class="jxr_linenumber" name="50" href="#50">50</a> @Before
<a class="jxr_linenumber" name="51" href="#51">51</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setUp() {
<a class="jxr_linenumber" name="52" href="#52">52</a> }
<a class="jxr_linenumber" name="53" href="#53">53</a>
<a class="jxr_linenumber" name="54" href="#54">54</a> @After
<a class="jxr_linenumber" name="55" href="#55">55</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> tearDown() {
<a class="jxr_linenumber" name="56" href="#56">56</a> }
<a class="jxr_linenumber" name="57" href="#57">57</a>
<a class="jxr_linenumber" name="58" href="#58">58</a> <strong class="jxr_keyword">public</strong> StandardUpdate getStandardUpdateTask() <strong class="jxr_keyword">throws</strong> MalformedURLException, DownloadFailedException, UpdateException {
<a class="jxr_linenumber" name="59" href="#59">59</a> StandardUpdate instance = <strong class="jxr_keyword">new</strong> StandardUpdate();
<a class="jxr_linenumber" name="60" href="#60">60</a> <strong class="jxr_keyword">return</strong> instance;
<a class="jxr_linenumber" name="61" href="#61">61</a> }
<a class="jxr_linenumber" name="62" href="#62">62</a>
<a class="jxr_linenumber" name="63" href="#63">63</a> <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="64" href="#64">64</a> <em class="jxr_javadoccomment"> * Test of setDeleteAndRecreate method, of class StandardUpdate.</em>
<a class="jxr_linenumber" name="65" href="#65">65</a> <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="66" href="#66">66</a> @Test
<a class="jxr_linenumber" name="67" href="#67">67</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testSetDeleteAndRecreate() <strong class="jxr_keyword">throws</strong> Exception {
<a class="jxr_linenumber" name="68" href="#68">68</a> <strong class="jxr_keyword">boolean</strong> deleteAndRecreate = false;
<a class="jxr_linenumber" name="69" href="#69">69</a> <strong class="jxr_keyword">boolean</strong> expResult = false;
<a class="jxr_linenumber" name="70" href="#70">70</a> StandardUpdate instance = getStandardUpdateTask();
<a class="jxr_linenumber" name="71" href="#71">71</a> instance.setDeleteAndRecreate(deleteAndRecreate);
<a class="jxr_linenumber" name="72" href="#72">72</a> <strong class="jxr_keyword">boolean</strong> result = instance.shouldDeleteAndRecreate();
<a class="jxr_linenumber" name="73" href="#73">73</a> assertEquals(expResult, result);
<a class="jxr_linenumber" name="74" href="#74">74</a> }
<a class="jxr_linenumber" name="75" href="#75">75</a>
<a class="jxr_linenumber" name="76" href="#76">76</a> <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="77" href="#77">77</a> <em class="jxr_javadoccomment"> * Test of deleteExistingData method, of class StandardUpdate.</em>
<a class="jxr_linenumber" name="78" href="#78">78</a> <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="79" href="#79">79</a> @Test
<a class="jxr_linenumber" name="80" href="#80">80</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testDeleteExistingData() <strong class="jxr_keyword">throws</strong> Exception {
<a class="jxr_linenumber" name="81" href="#81">81</a> StandardUpdate instance = getStandardUpdateTask();
<a class="jxr_linenumber" name="82" href="#82">82</a> Exception result = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="83" href="#83">83</a> <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="84" href="#84">84</a> instance.deleteExistingData();
<a class="jxr_linenumber" name="85" href="#85">85</a> } <strong class="jxr_keyword">catch</strong> (IOException ex) {
<a class="jxr_linenumber" name="86" href="#86">86</a> result = ex;
<a class="jxr_linenumber" name="87" href="#87">87</a> }
<a class="jxr_linenumber" name="88" href="#88">88</a> assertNull(result);
<a class="jxr_linenumber" name="89" href="#89">89</a> }
<a class="jxr_linenumber" name="90" href="#90">90</a>
<a class="jxr_linenumber" name="91" href="#91">91</a> <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="92" href="#92">92</a> <em class="jxr_javadoccomment"> * Test of openDataStores method, of class StandardUpdate.</em>
<a class="jxr_linenumber" name="93" href="#93">93</a> <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="94" href="#94">94</a> @Test
<a class="jxr_linenumber" name="95" href="#95">95</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testOpenDataStores() <strong class="jxr_keyword">throws</strong> Exception {
<a class="jxr_linenumber" name="96" href="#96">96</a> StandardUpdate instance = getStandardUpdateTask();
<a class="jxr_linenumber" name="97" href="#97">97</a> instance.openDataStores();
<a class="jxr_linenumber" name="98" href="#98">98</a> instance.closeDataStores();
<a class="jxr_linenumber" name="99" href="#99">99</a> }
<a class="jxr_linenumber" name="100" href="#100">100</a>
<a class="jxr_linenumber" name="101" href="#101">101</a> <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="102" href="#102">102</a> <em class="jxr_javadoccomment"> * Test of withinRange method, of class StandardUpdate.</em>
<a class="jxr_linenumber" name="103" href="#103">103</a> <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="104" href="#104">104</a> @Test
<a class="jxr_linenumber" name="105" href="#105">105</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testWithinRange() <strong class="jxr_keyword">throws</strong> Exception {
<a class="jxr_linenumber" name="106" href="#106">106</a> Calendar c = Calendar.getInstance();
<a class="jxr_linenumber" name="107" href="#107">107</a>
<a class="jxr_linenumber" name="108" href="#108">108</a> <strong class="jxr_keyword">long</strong> current = c.getTimeInMillis();
<a class="jxr_linenumber" name="109" href="#109">109</a> <strong class="jxr_keyword">long</strong> lastRun = c.getTimeInMillis() - (3 * (1000 * 60 * 60 * 24));
<a class="jxr_linenumber" name="110" href="#110">110</a> <strong class="jxr_keyword">int</strong> range = 7; <em class="jxr_comment">// 7 days</em>
<a class="jxr_linenumber" name="111" href="#111">111</a> StandardUpdate instance = getStandardUpdateTask();
<a class="jxr_linenumber" name="112" href="#112">112</a> <strong class="jxr_keyword">boolean</strong> expResult = <strong class="jxr_keyword">true</strong>;
<a class="jxr_linenumber" name="113" href="#113">113</a> <strong class="jxr_keyword">boolean</strong> result = instance.withinRange(lastRun, current, range);
<a class="jxr_linenumber" name="114" href="#114">114</a> assertEquals(expResult, result);
<a class="jxr_linenumber" name="115" href="#115">115</a>
<a class="jxr_linenumber" name="116" href="#116">116</a> lastRun = c.getTimeInMillis() - (8 * (1000 * 60 * 60 * 24));
<a class="jxr_linenumber" name="117" href="#117">117</a> expResult = false;
<a class="jxr_linenumber" name="118" href="#118">118</a> result = instance.withinRange(lastRun, current, range);
<a class="jxr_linenumber" name="119" href="#119">119</a> assertEquals(expResult, result);
<a class="jxr_linenumber" name="120" href="#120">120</a> }
<a class="jxr_linenumber" name="121" href="#121">121</a>
<a class="jxr_linenumber" name="122" href="#122">122</a> <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="123" href="#123">123</a> <em class="jxr_javadoccomment"> * Test of update method, of class StandardUpdate.</em>
<a class="jxr_linenumber" name="124" href="#124">124</a> <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="125" href="#125">125</a> @Test
<a class="jxr_linenumber" name="126" href="#126">126</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testUpdate() <strong class="jxr_keyword">throws</strong> Exception {
<a class="jxr_linenumber" name="127" href="#127">127</a> StandardUpdate instance = getStandardUpdateTask();
<a class="jxr_linenumber" name="128" href="#128">128</a> instance.update();
<a class="jxr_linenumber" name="129" href="#129">129</a> <em class="jxr_comment">//TODO make this an actual test</em>
<a class="jxr_linenumber" name="130" href="#130">130</a> }
<a class="jxr_linenumber" name="131" href="#131">131</a>
<a class="jxr_linenumber" name="132" href="#132">132</a> <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="133" href="#133">133</a> <em class="jxr_javadoccomment"> * Test of updatesNeeded method, of class StandardUpdate.</em>
<a class="jxr_linenumber" name="134" href="#134">134</a> <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="135" href="#135">135</a> @Test
<a class="jxr_linenumber" name="136" href="#136">136</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testUpdatesNeeded() <strong class="jxr_keyword">throws</strong> Exception {
<a class="jxr_linenumber" name="137" href="#137">137</a> StandardUpdate instance = getStandardUpdateTask();
<a class="jxr_linenumber" name="138" href="#138">138</a> Updateable result = instance.updatesNeeded();
<a class="jxr_linenumber" name="139" href="#139">139</a> assertNotNull(result);
<a class="jxr_linenumber" name="140" href="#140">140</a> }
<a class="jxr_linenumber" name="141" href="#141">141</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

View File

@@ -0,0 +1,162 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>ProcessTask xref</title>
<link type="text/css" rel="stylesheet" href="../../../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../../../apidocs/org/owasp/dependencycheck/data/update/ProcessTask.html">View Javadoc</a></div><pre>
<a class="jxr_linenumber" name="1" href="#1">1</a> <em class="jxr_comment">/*</em>
<a class="jxr_linenumber" name="2" href="#2">2</a> <em class="jxr_comment"> * This file is part of dependency-check-core.</em>
<a class="jxr_linenumber" name="3" href="#3">3</a> <em class="jxr_comment"> *</em>
<a class="jxr_linenumber" name="4" href="#4">4</a> <em class="jxr_comment"> * Dependency-check-core is free software: you can redistribute it and/or modify it</em>
<a class="jxr_linenumber" name="5" href="#5">5</a> <em class="jxr_comment"> * under the terms of the GNU General Public License as published by the Free</em>
<a class="jxr_linenumber" name="6" href="#6">6</a> <em class="jxr_comment"> * Software Foundation, either version 3 of the License, or (at your option) any</em>
<a class="jxr_linenumber" name="7" href="#7">7</a> <em class="jxr_comment"> * later version.</em>
<a class="jxr_linenumber" name="8" href="#8">8</a> <em class="jxr_comment"> *</em>
<a class="jxr_linenumber" name="9" href="#9">9</a> <em class="jxr_comment"> * Dependency-check-core is distributed in the hope that it will be useful, but</em>
<a class="jxr_linenumber" name="10" href="#10">10</a> <em class="jxr_comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or</em>
<a class="jxr_linenumber" name="11" href="#11">11</a> <em class="jxr_comment"> * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more</em>
<a class="jxr_linenumber" name="12" href="#12">12</a> <em class="jxr_comment"> * details.</em>
<a class="jxr_linenumber" name="13" href="#13">13</a> <em class="jxr_comment"> *</em>
<a class="jxr_linenumber" name="14" href="#14">14</a> <em class="jxr_comment"> * You should have received a copy of the GNU General Public License along with</em>
<a class="jxr_linenumber" name="15" href="#15">15</a> <em class="jxr_comment"> * dependency-check-core. If not, see <a href="http://www.gnu.org/licenses/." target="alexandria_uri">http://www.gnu.org/licenses/.</a></em>
<a class="jxr_linenumber" name="16" href="#16">16</a> <em class="jxr_comment"> *</em>
<a class="jxr_linenumber" name="17" href="#17">17</a> <em class="jxr_comment"> * Copyright (c) 2013 Jeremy Long. All Rights Reserved.</em>
<a class="jxr_linenumber" name="18" href="#18">18</a> <em class="jxr_comment"> */</em>
<a class="jxr_linenumber" name="19" href="#19">19</a> <strong class="jxr_keyword">package</strong> org.owasp.dependencycheck.data.update;
<a class="jxr_linenumber" name="20" href="#20">20</a>
<a class="jxr_linenumber" name="21" href="#21">21</a> <strong class="jxr_keyword">import</strong> java.io.File;
<a class="jxr_linenumber" name="22" href="#22">22</a> <strong class="jxr_keyword">import</strong> java.io.FileNotFoundException;
<a class="jxr_linenumber" name="23" href="#23">23</a> <strong class="jxr_keyword">import</strong> java.io.IOException;
<a class="jxr_linenumber" name="24" href="#24">24</a> <strong class="jxr_keyword">import</strong> java.sql.SQLException;
<a class="jxr_linenumber" name="25" href="#25">25</a> <strong class="jxr_keyword">import</strong> java.util.List;
<a class="jxr_linenumber" name="26" href="#26">26</a> <strong class="jxr_keyword">import</strong> java.util.Map;
<a class="jxr_linenumber" name="27" href="#27">27</a> <strong class="jxr_keyword">import</strong> java.util.concurrent.Callable;
<a class="jxr_linenumber" name="28" href="#28">28</a> <strong class="jxr_keyword">import</strong> java.util.logging.Level;
<a class="jxr_linenumber" name="29" href="#29">29</a> <strong class="jxr_keyword">import</strong> java.util.logging.Logger;
<a class="jxr_linenumber" name="30" href="#30">30</a> <strong class="jxr_keyword">import</strong> javax.xml.parsers.ParserConfigurationException;
<a class="jxr_linenumber" name="31" href="#31">31</a> <strong class="jxr_keyword">import</strong> javax.xml.parsers.SAXParser;
<a class="jxr_linenumber" name="32" href="#32">32</a> <strong class="jxr_keyword">import</strong> javax.xml.parsers.SAXParserFactory;
<a class="jxr_linenumber" name="33" href="#33">33</a> <strong class="jxr_keyword">import</strong> org.owasp.dependencycheck.data.UpdateException;
<a class="jxr_linenumber" name="34" href="#34">34</a> <strong class="jxr_keyword">import</strong> org.owasp.dependencycheck.data.nvdcve.CveDB;
<a class="jxr_linenumber" name="35" href="#35">35</a> <strong class="jxr_keyword">import</strong> org.owasp.dependencycheck.data.nvdcve.DatabaseException;
<a class="jxr_linenumber" name="36" href="#36">36</a> <strong class="jxr_keyword">import</strong> org.owasp.dependencycheck.data.nvdcve.NvdCve12Handler;
<a class="jxr_linenumber" name="37" href="#37">37</a> <strong class="jxr_keyword">import</strong> org.owasp.dependencycheck.data.nvdcve.NvdCve20Handler;
<a class="jxr_linenumber" name="38" href="#38">38</a> <strong class="jxr_keyword">import</strong> org.owasp.dependencycheck.dependency.VulnerableSoftware;
<a class="jxr_linenumber" name="39" href="#39">39</a> <strong class="jxr_keyword">import</strong> org.xml.sax.SAXException;
<a class="jxr_linenumber" name="40" href="#40">40</a>
<a class="jxr_linenumber" name="41" href="#41">41</a> <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="42" href="#42">42</a> <em class="jxr_javadoccomment"> * A callable task that will process a given set of NVD CVE xml files and update</em>
<a class="jxr_linenumber" name="43" href="#43">43</a> <em class="jxr_javadoccomment"> * the Cve Database accordingly.</em>
<a class="jxr_linenumber" name="44" href="#44">44</a> <em class="jxr_javadoccomment"> *</em>
<a class="jxr_linenumber" name="45" href="#45">45</a> <em class="jxr_javadoccomment"> * @author Jeremy Long (jeremy.long@owasp.org)</em>
<a class="jxr_linenumber" name="46" href="#46">46</a> <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="47" href="#47">47</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/owasp/dependencycheck/data/update/ProcessTask.html">ProcessTask</a> <strong class="jxr_keyword">implements</strong> Callable&lt;ProcessTask&gt; {
<a class="jxr_linenumber" name="48" href="#48">48</a>
<a class="jxr_linenumber" name="49" href="#49">49</a> <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="50" href="#50">50</a> <em class="jxr_javadoccomment"> * A field to store any update exceptions that occur during the "call".</em>
<a class="jxr_linenumber" name="51" href="#51">51</a> <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="52" href="#52">52</a> <strong class="jxr_keyword">private</strong> <a href="../../../../../org/owasp/dependencycheck/data/UpdateException.html">UpdateException</a> exception = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="53" href="#53">53</a>
<a class="jxr_linenumber" name="54" href="#54">54</a> <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="55" href="#55">55</a> <em class="jxr_javadoccomment"> * Get the value of exception.</em>
<a class="jxr_linenumber" name="56" href="#56">56</a> <em class="jxr_javadoccomment"> *</em>
<a class="jxr_linenumber" name="57" href="#57">57</a> <em class="jxr_javadoccomment"> * @return the value of exception</em>
<a class="jxr_linenumber" name="58" href="#58">58</a> <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="59" href="#59">59</a> <strong class="jxr_keyword">public</strong> <a href="../../../../../org/owasp/dependencycheck/data/UpdateException.html">UpdateException</a> getException() {
<a class="jxr_linenumber" name="60" href="#60">60</a> <strong class="jxr_keyword">return</strong> exception;
<a class="jxr_linenumber" name="61" href="#61">61</a> }
<a class="jxr_linenumber" name="62" href="#62">62</a>
<a class="jxr_linenumber" name="63" href="#63">63</a> <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="64" href="#64">64</a> <em class="jxr_javadoccomment"> * Set the value of exception.</em>
<a class="jxr_linenumber" name="65" href="#65">65</a> <em class="jxr_javadoccomment"> *</em>
<a class="jxr_linenumber" name="66" href="#66">66</a> <em class="jxr_javadoccomment"> * @param exception new value of exception</em>
<a class="jxr_linenumber" name="67" href="#67">67</a> <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="68" href="#68">68</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setException(<a href="../../../../../org/owasp/dependencycheck/data/UpdateException.html">UpdateException</a> exception) {
<a class="jxr_linenumber" name="69" href="#69">69</a> <strong class="jxr_keyword">this</strong>.exception = exception;
<a class="jxr_linenumber" name="70" href="#70">70</a> }
<a class="jxr_linenumber" name="71" href="#71">71</a> <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../../org/owasp/dependencycheck/data/nvdcve/CveDB.html">CveDB</a> cveDB;
<a class="jxr_linenumber" name="72" href="#72">72</a> <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../../org/owasp/dependencycheck/data/update/CallableDownloadTask.html">CallableDownloadTask</a> filePair;
<a class="jxr_linenumber" name="73" href="#73">73</a> <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../../org/owasp/dependencycheck/data/update/DataStoreMetaInfo.html">DataStoreMetaInfo</a> properties;
<a class="jxr_linenumber" name="74" href="#74">74</a>
<a class="jxr_linenumber" name="75" href="#75">75</a> <strong class="jxr_keyword">public</strong> <a href="../../../../../org/owasp/dependencycheck/data/update/ProcessTask.html">ProcessTask</a>(<strong class="jxr_keyword">final</strong> <a href="../../../../../org/owasp/dependencycheck/data/nvdcve/CveDB.html">CveDB</a> cveDB, <strong class="jxr_keyword">final</strong> <a href="../../../../../org/owasp/dependencycheck/data/update/DataStoreMetaInfo.html">DataStoreMetaInfo</a> properties, <strong class="jxr_keyword">final</strong> <a href="../../../../../org/owasp/dependencycheck/data/update/CallableDownloadTask.html">CallableDownloadTask</a> filePair) {
<a class="jxr_linenumber" name="76" href="#76">76</a> <strong class="jxr_keyword">this</strong>.cveDB = cveDB;
<a class="jxr_linenumber" name="77" href="#77">77</a> <strong class="jxr_keyword">this</strong>.filePair = filePair;
<a class="jxr_linenumber" name="78" href="#78">78</a> <strong class="jxr_keyword">this</strong>.properties = properties;
<a class="jxr_linenumber" name="79" href="#79">79</a> }
<a class="jxr_linenumber" name="80" href="#80">80</a>
<a class="jxr_linenumber" name="81" href="#81">81</a> @Override
<a class="jxr_linenumber" name="82" href="#82">82</a> <strong class="jxr_keyword">public</strong> <a href="../../../../../org/owasp/dependencycheck/data/update/ProcessTask.html">ProcessTask</a> call() <strong class="jxr_keyword">throws</strong> Exception {
<a class="jxr_linenumber" name="83" href="#83">83</a> <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="84" href="#84">84</a> processFiles();
<a class="jxr_linenumber" name="85" href="#85">85</a> } <strong class="jxr_keyword">catch</strong> (UpdateException ex) {
<a class="jxr_linenumber" name="86" href="#86">86</a> <strong class="jxr_keyword">this</strong>.exception = ex;
<a class="jxr_linenumber" name="87" href="#87">87</a> }
<a class="jxr_linenumber" name="88" href="#88">88</a> <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
<a class="jxr_linenumber" name="89" href="#89">89</a> }
<a class="jxr_linenumber" name="90" href="#90">90</a>
<a class="jxr_linenumber" name="91" href="#91">91</a> <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="92" href="#92">92</a> <em class="jxr_javadoccomment"> * Imports the NVD CVE XML File into the Lucene Index.</em>
<a class="jxr_linenumber" name="93" href="#93">93</a> <em class="jxr_javadoccomment"> *</em>
<a class="jxr_linenumber" name="94" href="#94">94</a> <em class="jxr_javadoccomment"> * @param file the file containing the NVD CVE XML</em>
<a class="jxr_linenumber" name="95" href="#95">95</a> <em class="jxr_javadoccomment"> * @param oldVersion contains the file containing the NVD CVE XML 1.2</em>
<a class="jxr_linenumber" name="96" href="#96">96</a> <em class="jxr_javadoccomment"> * @throws ParserConfigurationException is thrown if there is a parser</em>
<a class="jxr_linenumber" name="97" href="#97">97</a> <em class="jxr_javadoccomment"> * configuration exception</em>
<a class="jxr_linenumber" name="98" href="#98">98</a> <em class="jxr_javadoccomment"> * @throws SAXException is thrown if there is a SAXException</em>
<a class="jxr_linenumber" name="99" href="#99">99</a> <em class="jxr_javadoccomment"> * @throws IOException is thrown if there is a IO Exception</em>
<a class="jxr_linenumber" name="100" href="#100">100</a> <em class="jxr_javadoccomment"> * @throws SQLException is thrown if there is a SQL exception</em>
<a class="jxr_linenumber" name="101" href="#101">101</a> <em class="jxr_javadoccomment"> * @throws DatabaseException is thrown if there is a database exception</em>
<a class="jxr_linenumber" name="102" href="#102">102</a> <em class="jxr_javadoccomment"> * @throws ClassNotFoundException thrown if the h2 database driver cannot be</em>
<a class="jxr_linenumber" name="103" href="#103">103</a> <em class="jxr_javadoccomment"> * loaded</em>
<a class="jxr_linenumber" name="104" href="#104">104</a> <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="105" href="#105">105</a> <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> importXML(File file, File oldVersion) <strong class="jxr_keyword">throws</strong> ParserConfigurationException,
<a class="jxr_linenumber" name="106" href="#106">106</a> SAXException, IOException, SQLException, DatabaseException, ClassNotFoundException {
<a class="jxr_linenumber" name="107" href="#107">107</a>
<a class="jxr_linenumber" name="108" href="#108">108</a> <strong class="jxr_keyword">final</strong> SAXParserFactory factory = SAXParserFactory.newInstance();
<a class="jxr_linenumber" name="109" href="#109">109</a> <strong class="jxr_keyword">final</strong> SAXParser saxParser = factory.newSAXParser();
<a class="jxr_linenumber" name="110" href="#110">110</a>
<a class="jxr_linenumber" name="111" href="#111">111</a> <strong class="jxr_keyword">final</strong> <a href="../../../../../org/owasp/dependencycheck/data/nvdcve/NvdCve12Handler.html">NvdCve12Handler</a> cve12Handler = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/owasp/dependencycheck/data/nvdcve/NvdCve12Handler.html">NvdCve12Handler</a>();
<a class="jxr_linenumber" name="112" href="#112">112</a> saxParser.parse(oldVersion, cve12Handler);
<a class="jxr_linenumber" name="113" href="#113">113</a> <strong class="jxr_keyword">final</strong> Map&lt;String, List&lt;VulnerableSoftware&gt;&gt; prevVersionVulnMap = cve12Handler.getVulnerabilities();
<a class="jxr_linenumber" name="114" href="#114">114</a>
<a class="jxr_linenumber" name="115" href="#115">115</a> <strong class="jxr_keyword">final</strong> <a href="../../../../../org/owasp/dependencycheck/data/nvdcve/NvdCve20Handler.html">NvdCve20Handler</a> cve20Handler = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/owasp/dependencycheck/data/nvdcve/NvdCve20Handler.html">NvdCve20Handler</a>();
<a class="jxr_linenumber" name="116" href="#116">116</a> cve20Handler.setCveDB(cveDB);
<a class="jxr_linenumber" name="117" href="#117">117</a> cve20Handler.setPrevVersionVulnMap(prevVersionVulnMap);
<a class="jxr_linenumber" name="118" href="#118">118</a> saxParser.parse(file, cve20Handler);
<a class="jxr_linenumber" name="119" href="#119">119</a> }
<a class="jxr_linenumber" name="120" href="#120">120</a>
<a class="jxr_linenumber" name="121" href="#121">121</a> <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> processFiles() <strong class="jxr_keyword">throws</strong> UpdateException {
<a class="jxr_linenumber" name="122" href="#122">122</a> String msg = String.format(<span class="jxr_string">"Processing Started for NVD CVE - %s"</span>, filePair.getNvdCveInfo().getId());
<a class="jxr_linenumber" name="123" href="#123">123</a> Logger.getLogger(StandardUpdate.<strong class="jxr_keyword">class</strong>.getName()).log(Level.INFO, msg);
<a class="jxr_linenumber" name="124" href="#124">124</a> <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="125" href="#125">125</a> importXML(filePair.getFirst(), filePair.getSecond());
<a class="jxr_linenumber" name="126" href="#126">126</a> cveDB.commit();
<a class="jxr_linenumber" name="127" href="#127">127</a> properties.save(filePair.getNvdCveInfo());
<a class="jxr_linenumber" name="128" href="#128">128</a> } <strong class="jxr_keyword">catch</strong> (FileNotFoundException ex) {
<a class="jxr_linenumber" name="129" href="#129">129</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/owasp/dependencycheck/data/UpdateException.html">UpdateException</a>(ex);
<a class="jxr_linenumber" name="130" href="#130">130</a> } <strong class="jxr_keyword">catch</strong> (ParserConfigurationException ex) {
<a class="jxr_linenumber" name="131" href="#131">131</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/owasp/dependencycheck/data/UpdateException.html">UpdateException</a>(ex);
<a class="jxr_linenumber" name="132" href="#132">132</a> } <strong class="jxr_keyword">catch</strong> (SAXException ex) {
<a class="jxr_linenumber" name="133" href="#133">133</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/owasp/dependencycheck/data/UpdateException.html">UpdateException</a>(ex);
<a class="jxr_linenumber" name="134" href="#134">134</a> } <strong class="jxr_keyword">catch</strong> (IOException ex) {
<a class="jxr_linenumber" name="135" href="#135">135</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/owasp/dependencycheck/data/UpdateException.html">UpdateException</a>(ex);
<a class="jxr_linenumber" name="136" href="#136">136</a> } <strong class="jxr_keyword">catch</strong> (SQLException ex) {
<a class="jxr_linenumber" name="137" href="#137">137</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/owasp/dependencycheck/data/UpdateException.html">UpdateException</a>(ex);
<a class="jxr_linenumber" name="138" href="#138">138</a> } <strong class="jxr_keyword">catch</strong> (DatabaseException ex) {
<a class="jxr_linenumber" name="139" href="#139">139</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/owasp/dependencycheck/data/UpdateException.html">UpdateException</a>(ex);
<a class="jxr_linenumber" name="140" href="#140">140</a> } <strong class="jxr_keyword">catch</strong> (ClassNotFoundException ex) {
<a class="jxr_linenumber" name="141" href="#141">141</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/owasp/dependencycheck/data/UpdateException.html">UpdateException</a>(ex);
<a class="jxr_linenumber" name="142" href="#142">142</a> } <strong class="jxr_keyword">finally</strong> {
<a class="jxr_linenumber" name="143" href="#143">143</a> filePair.cleanup();
<a class="jxr_linenumber" name="144" href="#144">144</a> }
<a class="jxr_linenumber" name="145" href="#145">145</a> msg = String.format(<span class="jxr_string">"Processing Complete for NVD CVE - %s"</span>, filePair.getNvdCveInfo().getId());
<a class="jxr_linenumber" name="146" href="#146">146</a> Logger.getLogger(StandardUpdate.<strong class="jxr_keyword">class</strong>.getName()).log(Level.INFO, msg);
<a class="jxr_linenumber" name="147" href="#147">147</a> }
<a class="jxr_linenumber" name="148" href="#148">148</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

View File

@@ -0,0 +1,571 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>StandardUpdate xref</title>
<link type="text/css" rel="stylesheet" href="../../../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../../../apidocs/org/owasp/dependencycheck/data/update/StandardUpdate.html">View Javadoc</a></div><pre>
<a class="jxr_linenumber" name="1" href="#1">1</a> <em class="jxr_comment">/*</em>
<a class="jxr_linenumber" name="2" href="#2">2</a> <em class="jxr_comment"> * This file is part of dependency-check-core.</em>
<a class="jxr_linenumber" name="3" href="#3">3</a> <em class="jxr_comment"> *</em>
<a class="jxr_linenumber" name="4" href="#4">4</a> <em class="jxr_comment"> * Dependency-check-core is free software: you can redistribute it and/or modify it</em>
<a class="jxr_linenumber" name="5" href="#5">5</a> <em class="jxr_comment"> * under the terms of the GNU General Public License as published by the Free</em>
<a class="jxr_linenumber" name="6" href="#6">6</a> <em class="jxr_comment"> * Software Foundation, either version 3 of the License, or (at your option) any</em>
<a class="jxr_linenumber" name="7" href="#7">7</a> <em class="jxr_comment"> * later version.</em>
<a class="jxr_linenumber" name="8" href="#8">8</a> <em class="jxr_comment"> *</em>
<a class="jxr_linenumber" name="9" href="#9">9</a> <em class="jxr_comment"> * Dependency-check-core is distributed in the hope that it will be useful, but</em>
<a class="jxr_linenumber" name="10" href="#10">10</a> <em class="jxr_comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or</em>
<a class="jxr_linenumber" name="11" href="#11">11</a> <em class="jxr_comment"> * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more</em>
<a class="jxr_linenumber" name="12" href="#12">12</a> <em class="jxr_comment"> * details.</em>
<a class="jxr_linenumber" name="13" href="#13">13</a> <em class="jxr_comment"> *</em>
<a class="jxr_linenumber" name="14" href="#14">14</a> <em class="jxr_comment"> * You should have received a copy of the GNU General Public License along with</em>
<a class="jxr_linenumber" name="15" href="#15">15</a> <em class="jxr_comment"> * dependency-check-core. If not, see <a href="http://www.gnu.org/licenses/." target="alexandria_uri">http://www.gnu.org/licenses/.</a></em>
<a class="jxr_linenumber" name="16" href="#16">16</a> <em class="jxr_comment"> *</em>
<a class="jxr_linenumber" name="17" href="#17">17</a> <em class="jxr_comment"> * Copyright (c) 2012 Jeremy Long. All Rights Reserved.</em>
<a class="jxr_linenumber" name="18" href="#18">18</a> <em class="jxr_comment"> */</em>
<a class="jxr_linenumber" name="19" href="#19">19</a> <strong class="jxr_keyword">package</strong> org.owasp.dependencycheck.data.update;
<a class="jxr_linenumber" name="20" href="#20">20</a>
<a class="jxr_linenumber" name="21" href="#21">21</a> <strong class="jxr_keyword">import</strong> org.owasp.dependencycheck.data.nvdcve.InvalidDataException;
<a class="jxr_linenumber" name="22" href="#22">22</a> <strong class="jxr_keyword">import</strong> java.io.File;
<a class="jxr_linenumber" name="23" href="#23">23</a> <strong class="jxr_keyword">import</strong> java.io.IOException;
<a class="jxr_linenumber" name="24" href="#24">24</a> <strong class="jxr_keyword">import</strong> java.net.MalformedURLException;
<a class="jxr_linenumber" name="25" href="#25">25</a> <strong class="jxr_keyword">import</strong> java.sql.SQLException;
<a class="jxr_linenumber" name="26" href="#26">26</a> <strong class="jxr_keyword">import</strong> java.util.Calendar;
<a class="jxr_linenumber" name="27" href="#27">27</a> <strong class="jxr_keyword">import</strong> java.util.Date;
<a class="jxr_linenumber" name="28" href="#28">28</a> <strong class="jxr_keyword">import</strong> java.util.HashSet;
<a class="jxr_linenumber" name="29" href="#29">29</a> <strong class="jxr_keyword">import</strong> java.util.Iterator;
<a class="jxr_linenumber" name="30" href="#30">30</a> <strong class="jxr_keyword">import</strong> java.util.Set;
<a class="jxr_linenumber" name="31" href="#31">31</a> <strong class="jxr_keyword">import</strong> java.util.concurrent.ExecutionException;
<a class="jxr_linenumber" name="32" href="#32">32</a> <strong class="jxr_keyword">import</strong> java.util.concurrent.ExecutorService;
<a class="jxr_linenumber" name="33" href="#33">33</a> <strong class="jxr_keyword">import</strong> java.util.concurrent.Executors;
<a class="jxr_linenumber" name="34" href="#34">34</a> <strong class="jxr_keyword">import</strong> java.util.concurrent.Future;
<a class="jxr_linenumber" name="35" href="#35">35</a> <strong class="jxr_keyword">import</strong> java.util.logging.Level;
<a class="jxr_linenumber" name="36" href="#36">36</a> <strong class="jxr_keyword">import</strong> java.util.logging.Logger;
<a class="jxr_linenumber" name="37" href="#37">37</a> <strong class="jxr_keyword">import</strong> org.owasp.dependencycheck.data.UpdateException;
<a class="jxr_linenumber" name="38" href="#38">38</a> <strong class="jxr_keyword">import</strong> org.owasp.dependencycheck.data.nvdcve.CveDB;
<a class="jxr_linenumber" name="39" href="#39">39</a> <strong class="jxr_keyword">import</strong> org.owasp.dependencycheck.utils.DownloadFailedException;
<a class="jxr_linenumber" name="40" href="#40">40</a> <strong class="jxr_keyword">import</strong> org.owasp.dependencycheck.utils.Settings;
<a class="jxr_linenumber" name="41" href="#41">41</a> <strong class="jxr_keyword">import</strong> org.owasp.dependencycheck.data.nvdcve.DatabaseException;
<a class="jxr_linenumber" name="42" href="#42">42</a> <strong class="jxr_keyword">import</strong> org.owasp.dependencycheck.utils.InvalidSettingException;
<a class="jxr_linenumber" name="43" href="#43">43</a> <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.owasp.dependencycheck.data.update.DataStoreMetaInfo.MODIFIED;
<a class="jxr_linenumber" name="44" href="#44">44</a> <strong class="jxr_keyword">import</strong> org.owasp.dependencycheck.utils.FileUtils;
<a class="jxr_linenumber" name="45" href="#45">45</a>
<a class="jxr_linenumber" name="46" href="#46">46</a> <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="47" href="#47">47</a> <em class="jxr_javadoccomment"> * Class responsible for updating the NVDCVE data store.</em>
<a class="jxr_linenumber" name="48" href="#48">48</a> <em class="jxr_javadoccomment"> *</em>
<a class="jxr_linenumber" name="49" href="#49">49</a> <em class="jxr_javadoccomment"> * @author Jeremy Long (jeremy.long@owasp.org)</em>
<a class="jxr_linenumber" name="50" href="#50">50</a> <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="51" href="#51">51</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/owasp/dependencycheck/data/update/StandardUpdate.html">StandardUpdate</a> {
<a class="jxr_linenumber" name="52" href="#52">52</a>
<a class="jxr_linenumber" name="53" href="#53">53</a> <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="54" href="#54">54</a> <em class="jxr_javadoccomment"> * The max thread pool size to use when downloading files.</em>
<a class="jxr_linenumber" name="55" href="#55">55</a> <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="56" href="#56">56</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> MAX_THREAD_POOL_SIZE = Settings.getInt(Settings.KEYS.MAX_DOWNLOAD_THREAD_POOL_SIZE, 3);
<a class="jxr_linenumber" name="57" href="#57">57</a> <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="58" href="#58">58</a> <em class="jxr_javadoccomment"> * Information about the timestamps and URLs for data that needs to be</em>
<a class="jxr_linenumber" name="59" href="#59">59</a> <em class="jxr_javadoccomment"> * updated.</em>
<a class="jxr_linenumber" name="60" href="#60">60</a> <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="61" href="#61">61</a> <strong class="jxr_keyword">private</strong> <a href="../../../../../org/owasp/dependencycheck/data/update/DataStoreMetaInfo.html">DataStoreMetaInfo</a> properties;
<a class="jxr_linenumber" name="62" href="#62">62</a> <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="63" href="#63">63</a> <em class="jxr_javadoccomment"> * A collection of updateable NVD CVE items.</em>
<a class="jxr_linenumber" name="64" href="#64">64</a> <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="65" href="#65">65</a> <strong class="jxr_keyword">private</strong> <a href="../../../../../org/owasp/dependencycheck/data/update/Updateable.html">Updateable</a> updateable;
<a class="jxr_linenumber" name="66" href="#66">66</a> <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="67" href="#67">67</a> <em class="jxr_javadoccomment"> * A flag indicating whether or not the current data store should be</em>
<a class="jxr_linenumber" name="68" href="#68">68</a> <em class="jxr_javadoccomment"> * deleted.</em>
<a class="jxr_linenumber" name="69" href="#69">69</a> <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="70" href="#70">70</a> <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> deleteAndRecreate = false;
<a class="jxr_linenumber" name="71" href="#71">71</a> <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="72" href="#72">72</a> <em class="jxr_javadoccomment"> * Reference to the Cve Database.</em>
<a class="jxr_linenumber" name="73" href="#73">73</a> <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="74" href="#74">74</a> <strong class="jxr_keyword">private</strong> <a href="../../../../../org/owasp/dependencycheck/data/nvdcve/CveDB.html">CveDB</a> cveDB = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="75" href="#75">75</a>
<a class="jxr_linenumber" name="76" href="#76">76</a> <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="77" href="#77">77</a> <em class="jxr_javadoccomment"> * Gets whether or not an update is needed.</em>
<a class="jxr_linenumber" name="78" href="#78">78</a> <em class="jxr_javadoccomment"> *</em>
<a class="jxr_linenumber" name="79" href="#79">79</a> <em class="jxr_javadoccomment"> * @return true or false depending on whether an update is needed</em>
<a class="jxr_linenumber" name="80" href="#80">80</a> <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="81" href="#81">81</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isUpdateNeeded() {
<a class="jxr_linenumber" name="82" href="#82">82</a> <strong class="jxr_keyword">return</strong> updateable.isUpdateNeeded();
<a class="jxr_linenumber" name="83" href="#83">83</a> }
<a class="jxr_linenumber" name="84" href="#84">84</a>
<a class="jxr_linenumber" name="85" href="#85">85</a> <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="86" href="#86">86</a> <em class="jxr_javadoccomment"> * Set the value of deleteAndRecreate.</em>
<a class="jxr_linenumber" name="87" href="#87">87</a> <em class="jxr_javadoccomment"> *</em>
<a class="jxr_linenumber" name="88" href="#88">88</a> <em class="jxr_javadoccomment"> * @param deleteAndRecreate new value of deleteAndRecreate</em>
<a class="jxr_linenumber" name="89" href="#89">89</a> <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="90" href="#90">90</a> <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> setDeleteAndRecreate(<strong class="jxr_keyword">boolean</strong> deleteAndRecreate) {
<a class="jxr_linenumber" name="91" href="#91">91</a> <strong class="jxr_keyword">this</strong>.deleteAndRecreate = deleteAndRecreate;
<a class="jxr_linenumber" name="92" href="#92">92</a> }
<a class="jxr_linenumber" name="93" href="#93">93</a>
<a class="jxr_linenumber" name="94" href="#94">94</a> <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="95" href="#95">95</a> <em class="jxr_javadoccomment"> * Get the value of deleteAndRecreate.</em>
<a class="jxr_linenumber" name="96" href="#96">96</a> <em class="jxr_javadoccomment"> *</em>
<a class="jxr_linenumber" name="97" href="#97">97</a> <em class="jxr_javadoccomment"> * @return the value of deleteAndRecreate</em>
<a class="jxr_linenumber" name="98" href="#98">98</a> <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="99" href="#99">99</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> shouldDeleteAndRecreate() {
<a class="jxr_linenumber" name="100" href="#100">100</a> <strong class="jxr_keyword">return</strong> deleteAndRecreate;
<a class="jxr_linenumber" name="101" href="#101">101</a> }
<a class="jxr_linenumber" name="102" href="#102">102</a>
<a class="jxr_linenumber" name="103" href="#103">103</a> <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="104" href="#104">104</a> <em class="jxr_javadoccomment"> * Constructs a new Standard Update Task.</em>
<a class="jxr_linenumber" name="105" href="#105">105</a> <em class="jxr_javadoccomment"> *</em>
<a class="jxr_linenumber" name="106" href="#106">106</a> <em class="jxr_javadoccomment"> * @throws MalformedURLException thrown if a configured URL is malformed</em>
<a class="jxr_linenumber" name="107" href="#107">107</a> <em class="jxr_javadoccomment"> * @throws DownloadFailedException thrown if a timestamp cannot be checked</em>
<a class="jxr_linenumber" name="108" href="#108">108</a> <em class="jxr_javadoccomment"> * on a configured URL</em>
<a class="jxr_linenumber" name="109" href="#109">109</a> <em class="jxr_javadoccomment"> * @throws UpdateException thrown if there is an exception generating the</em>
<a class="jxr_linenumber" name="110" href="#110">110</a> <em class="jxr_javadoccomment"> * update task</em>
<a class="jxr_linenumber" name="111" href="#111">111</a> <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="112" href="#112">112</a> <strong class="jxr_keyword">public</strong> <a href="../../../../../org/owasp/dependencycheck/data/update/StandardUpdate.html">StandardUpdate</a>() <strong class="jxr_keyword">throws</strong> MalformedURLException, DownloadFailedException, UpdateException {
<a class="jxr_linenumber" name="113" href="#113">113</a> properties = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/owasp/dependencycheck/data/update/DataStoreMetaInfo.html">DataStoreMetaInfo</a>();
<a class="jxr_linenumber" name="114" href="#114">114</a> updateable = updatesNeeded();
<a class="jxr_linenumber" name="115" href="#115">115</a> }
<a class="jxr_linenumber" name="116" href="#116">116</a>
<a class="jxr_linenumber" name="117" href="#117">117</a> <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="118" href="#118">118</a> <em class="jxr_javadoccomment"> * &lt;p&gt;Downloads the latest NVD CVE XML file from the web and imports it into</em>
<a class="jxr_linenumber" name="119" href="#119">119</a> <em class="jxr_javadoccomment"> * the current CVE Database.&lt;/p&gt;</em>
<a class="jxr_linenumber" name="120" href="#120">120</a> <em class="jxr_javadoccomment"> *</em>
<a class="jxr_linenumber" name="121" href="#121">121</a> <em class="jxr_javadoccomment"> * @throws UpdateException is thrown if there is an error updating the</em>
<a class="jxr_linenumber" name="122" href="#122">122</a> <em class="jxr_javadoccomment"> * database</em>
<a class="jxr_linenumber" name="123" href="#123">123</a> <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="124" href="#124">124</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> update() <strong class="jxr_keyword">throws</strong> UpdateException {
<a class="jxr_linenumber" name="125" href="#125">125</a> <strong class="jxr_keyword">int</strong> maxUpdates = 0;
<a class="jxr_linenumber" name="126" href="#126">126</a> <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="127" href="#127">127</a> <strong class="jxr_keyword">for</strong> (NvdCveInfo cve : updateable) {
<a class="jxr_linenumber" name="128" href="#128">128</a> <strong class="jxr_keyword">if</strong> (cve.getNeedsUpdate()) {
<a class="jxr_linenumber" name="129" href="#129">129</a> maxUpdates += 1;
<a class="jxr_linenumber" name="130" href="#130">130</a> }
<a class="jxr_linenumber" name="131" href="#131">131</a> }
<a class="jxr_linenumber" name="132" href="#132">132</a> <strong class="jxr_keyword">if</strong> (maxUpdates &lt;= 0) {
<a class="jxr_linenumber" name="133" href="#133">133</a> <strong class="jxr_keyword">return</strong>;
<a class="jxr_linenumber" name="134" href="#134">134</a> }
<a class="jxr_linenumber" name="135" href="#135">135</a> <strong class="jxr_keyword">if</strong> (maxUpdates &gt; 3) {
<a class="jxr_linenumber" name="136" href="#136">136</a> Logger.getLogger(StandardUpdate.<strong class="jxr_keyword">class</strong>.getName()).log(Level.INFO,
<a class="jxr_linenumber" name="137" href="#137">137</a> <span class="jxr_string">"NVD CVE requires several updates; this could take a couple of minutes."</span>);
<a class="jxr_linenumber" name="138" href="#138">138</a> }
<a class="jxr_linenumber" name="139" href="#139">139</a> <strong class="jxr_keyword">if</strong> (maxUpdates &gt; 0) {
<a class="jxr_linenumber" name="140" href="#140">140</a> openDataStores();
<a class="jxr_linenumber" name="141" href="#141">141</a> }
<a class="jxr_linenumber" name="142" href="#142">142</a>
<a class="jxr_linenumber" name="143" href="#143">143</a> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> poolSize = (MAX_THREAD_POOL_SIZE &gt; maxUpdates) ? MAX_THREAD_POOL_SIZE : maxUpdates;
<a class="jxr_linenumber" name="144" href="#144">144</a> <strong class="jxr_keyword">final</strong> ExecutorService downloadExecutor = Executors.newFixedThreadPool(poolSize);
<a class="jxr_linenumber" name="145" href="#145">145</a> <strong class="jxr_keyword">final</strong> ExecutorService processExecutor = Executors.newSingleThreadExecutor();
<a class="jxr_linenumber" name="146" href="#146">146</a> <strong class="jxr_keyword">final</strong> Set&lt;Future&lt;CallableDownloadTask&gt;&gt; downloadFutures = <strong class="jxr_keyword">new</strong> HashSet&lt;Future&lt;CallableDownloadTask&gt;&gt;(maxUpdates);
<a class="jxr_linenumber" name="147" href="#147">147</a> <strong class="jxr_keyword">final</strong> Set&lt;Future&lt;ProcessTask&gt;&gt; processFutures = <strong class="jxr_keyword">new</strong> HashSet&lt;Future&lt;ProcessTask&gt;&gt;(maxUpdates);
<a class="jxr_linenumber" name="148" href="#148">148</a> <strong class="jxr_keyword">int</strong> ctr = 0;
<a class="jxr_linenumber" name="149" href="#149">149</a> <strong class="jxr_keyword">for</strong> (NvdCveInfo cve : updateable) {
<a class="jxr_linenumber" name="150" href="#150">150</a> <strong class="jxr_keyword">if</strong> (cve.getNeedsUpdate()) {
<a class="jxr_linenumber" name="151" href="#151">151</a> ctr += 1;
<a class="jxr_linenumber" name="152" href="#152">152</a> <strong class="jxr_keyword">final</strong> File file1;
<a class="jxr_linenumber" name="153" href="#153">153</a> <strong class="jxr_keyword">final</strong> File file2;
<a class="jxr_linenumber" name="154" href="#154">154</a> <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="155" href="#155">155</a> file1 = File.createTempFile(<span class="jxr_string">"cve"</span> + cve.getId() + <span class="jxr_string">"_"</span>, <span class="jxr_string">".xml"</span>);
<a class="jxr_linenumber" name="156" href="#156">156</a> file2 = File.createTempFile(<span class="jxr_string">"cve_1_2_"</span> + cve.getId() + <span class="jxr_string">"_"</span>, <span class="jxr_string">".xml"</span>);
<a class="jxr_linenumber" name="157" href="#157">157</a> } <strong class="jxr_keyword">catch</strong> (IOException ex) {
<a class="jxr_linenumber" name="158" href="#158">158</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/owasp/dependencycheck/data/UpdateException.html">UpdateException</a>(ex);
<a class="jxr_linenumber" name="159" href="#159">159</a> }
<a class="jxr_linenumber" name="160" href="#160">160</a> <strong class="jxr_keyword">final</strong> <a href="../../../../../org/owasp/dependencycheck/data/update/CallableDownloadTask.html">CallableDownloadTask</a> call = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/owasp/dependencycheck/data/update/CallableDownloadTask.html">CallableDownloadTask</a>(cve, file1, file2);
<a class="jxr_linenumber" name="161" href="#161">161</a> downloadFutures.add(downloadExecutor.submit(call));
<a class="jxr_linenumber" name="162" href="#162">162</a>
<a class="jxr_linenumber" name="163" href="#163">163</a> <strong class="jxr_keyword">boolean</strong> waitForFuture = ctr % 2 == 0;
<a class="jxr_linenumber" name="164" href="#164">164</a>
<a class="jxr_linenumber" name="165" href="#165">165</a> <strong class="jxr_keyword">final</strong> Iterator&lt;Future&lt;CallableDownloadTask&gt;&gt; itr = downloadFutures.iterator();
<a class="jxr_linenumber" name="166" href="#166">166</a> <strong class="jxr_keyword">while</strong> (itr.hasNext()) {
<a class="jxr_linenumber" name="167" href="#167">167</a> <strong class="jxr_keyword">final</strong> Future&lt;CallableDownloadTask&gt; future = itr.next();
<a class="jxr_linenumber" name="168" href="#168">168</a> <strong class="jxr_keyword">if</strong> (waitForFuture) { <em class="jxr_comment">//only allow two NVD/CVE files to be downloaded at a time</em>
<a class="jxr_linenumber" name="169" href="#169">169</a> spinWaitForFuture(future);
<a class="jxr_linenumber" name="170" href="#170">170</a> }
<a class="jxr_linenumber" name="171" href="#171">171</a> <strong class="jxr_keyword">if</strong> (future.isDone()) { <em class="jxr_comment">//if we find something complete, add it to the process queue</em>
<a class="jxr_linenumber" name="172" href="#172">172</a> <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="173" href="#173">173</a> <strong class="jxr_keyword">final</strong> <a href="../../../../../org/owasp/dependencycheck/data/update/CallableDownloadTask.html">CallableDownloadTask</a> filePair = future.get();
<a class="jxr_linenumber" name="174" href="#174">174</a> itr.remove();
<a class="jxr_linenumber" name="175" href="#175">175</a> <strong class="jxr_keyword">final</strong> <a href="../../../../../org/owasp/dependencycheck/data/update/ProcessTask.html">ProcessTask</a> task = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/owasp/dependencycheck/data/update/ProcessTask.html">ProcessTask</a>(cveDB, properties, filePair);
<a class="jxr_linenumber" name="176" href="#176">176</a> processFutures.add(processExecutor.submit(task));
<a class="jxr_linenumber" name="177" href="#177">177</a> } <strong class="jxr_keyword">catch</strong> (InterruptedException ex) {
<a class="jxr_linenumber" name="178" href="#178">178</a> downloadExecutor.shutdownNow();
<a class="jxr_linenumber" name="179" href="#179">179</a> Logger.getLogger(StandardUpdate.<strong class="jxr_keyword">class</strong>.getName()).log(Level.FINE, <span class="jxr_string">"Thread was interupted"</span>, ex);
<a class="jxr_linenumber" name="180" href="#180">180</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/owasp/dependencycheck/data/UpdateException.html">UpdateException</a>(ex);
<a class="jxr_linenumber" name="181" href="#181">181</a> } <strong class="jxr_keyword">catch</strong> (ExecutionException ex) {
<a class="jxr_linenumber" name="182" href="#182">182</a> downloadExecutor.shutdownNow();
<a class="jxr_linenumber" name="183" href="#183">183</a> Logger.getLogger(StandardUpdate.<strong class="jxr_keyword">class</strong>.getName()).log(Level.SEVERE, <strong class="jxr_keyword">null</strong>, ex);
<a class="jxr_linenumber" name="184" href="#184">184</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/owasp/dependencycheck/data/UpdateException.html">UpdateException</a>(ex);
<a class="jxr_linenumber" name="185" href="#185">185</a> }
<a class="jxr_linenumber" name="186" href="#186">186</a> }
<a class="jxr_linenumber" name="187" href="#187">187</a> }
<a class="jxr_linenumber" name="188" href="#188">188</a>
<a class="jxr_linenumber" name="189" href="#189">189</a> }
<a class="jxr_linenumber" name="190" href="#190">190</a> }
<a class="jxr_linenumber" name="191" href="#191">191</a>
<a class="jxr_linenumber" name="192" href="#192">192</a> <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="193" href="#193">193</a> <strong class="jxr_keyword">final</strong> Iterator&lt;Future&lt;CallableDownloadTask&gt;&gt; itr = downloadFutures.iterator();
<a class="jxr_linenumber" name="194" href="#194">194</a> <strong class="jxr_keyword">while</strong> (itr.hasNext()) {
<a class="jxr_linenumber" name="195" href="#195">195</a> <strong class="jxr_keyword">final</strong> Future&lt;CallableDownloadTask&gt; future = itr.next();
<a class="jxr_linenumber" name="196" href="#196">196</a> <strong class="jxr_keyword">final</strong> <a href="../../../../../org/owasp/dependencycheck/data/update/CallableDownloadTask.html">CallableDownloadTask</a> filePair = future.get();
<a class="jxr_linenumber" name="197" href="#197">197</a> <strong class="jxr_keyword">final</strong> <a href="../../../../../org/owasp/dependencycheck/data/update/ProcessTask.html">ProcessTask</a> task = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/owasp/dependencycheck/data/update/ProcessTask.html">ProcessTask</a>(cveDB, properties, filePair);
<a class="jxr_linenumber" name="198" href="#198">198</a> processFutures.add(processExecutor.submit(task));
<a class="jxr_linenumber" name="199" href="#199">199</a> }
<a class="jxr_linenumber" name="200" href="#200">200</a> } <strong class="jxr_keyword">catch</strong> (InterruptedException ex) {
<a class="jxr_linenumber" name="201" href="#201">201</a> downloadExecutor.shutdownNow();
<a class="jxr_linenumber" name="202" href="#202">202</a> Logger.getLogger(StandardUpdate.<strong class="jxr_keyword">class</strong>.getName()).log(Level.FINE, <span class="jxr_string">"Thread was interupted during download"</span>, ex);
<a class="jxr_linenumber" name="203" href="#203">203</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/owasp/dependencycheck/data/UpdateException.html">UpdateException</a>(ex);
<a class="jxr_linenumber" name="204" href="#204">204</a> } <strong class="jxr_keyword">catch</strong> (ExecutionException ex) {
<a class="jxr_linenumber" name="205" href="#205">205</a> downloadExecutor.shutdownNow();
<a class="jxr_linenumber" name="206" href="#206">206</a> Logger.getLogger(StandardUpdate.<strong class="jxr_keyword">class</strong>.getName()).log(Level.FINE, <span class="jxr_string">"Execution Exception during download"</span>, ex);
<a class="jxr_linenumber" name="207" href="#207">207</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/owasp/dependencycheck/data/UpdateException.html">UpdateException</a>(ex);
<a class="jxr_linenumber" name="208" href="#208">208</a> } <strong class="jxr_keyword">finally</strong> {
<a class="jxr_linenumber" name="209" href="#209">209</a> downloadExecutor.shutdown();
<a class="jxr_linenumber" name="210" href="#210">210</a> }
<a class="jxr_linenumber" name="211" href="#211">211</a>
<a class="jxr_linenumber" name="212" href="#212">212</a> <strong class="jxr_keyword">for</strong> (Future&lt;ProcessTask&gt; future : processFutures) {
<a class="jxr_linenumber" name="213" href="#213">213</a> <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="214" href="#214">214</a> <strong class="jxr_keyword">final</strong> <a href="../../../../../org/owasp/dependencycheck/data/update/ProcessTask.html">ProcessTask</a> task = future.get();
<a class="jxr_linenumber" name="215" href="#215">215</a> <strong class="jxr_keyword">if</strong> (task.getException() != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="216" href="#216">216</a> <strong class="jxr_keyword">throw</strong> task.getException();
<a class="jxr_linenumber" name="217" href="#217">217</a> }
<a class="jxr_linenumber" name="218" href="#218">218</a> } <strong class="jxr_keyword">catch</strong> (InterruptedException ex) {
<a class="jxr_linenumber" name="219" href="#219">219</a> processExecutor.shutdownNow();
<a class="jxr_linenumber" name="220" href="#220">220</a> Logger.getLogger(StandardUpdate.<strong class="jxr_keyword">class</strong>.getName()).log(Level.FINE, <span class="jxr_string">"Thread was interupted during processing"</span>, ex);
<a class="jxr_linenumber" name="221" href="#221">221</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/owasp/dependencycheck/data/UpdateException.html">UpdateException</a>(ex);
<a class="jxr_linenumber" name="222" href="#222">222</a> } <strong class="jxr_keyword">catch</strong> (ExecutionException ex) {
<a class="jxr_linenumber" name="223" href="#223">223</a> processExecutor.shutdownNow();
<a class="jxr_linenumber" name="224" href="#224">224</a> Logger.getLogger(StandardUpdate.<strong class="jxr_keyword">class</strong>.getName()).log(Level.FINE, <span class="jxr_string">"Execution Exception during process"</span>, ex);
<a class="jxr_linenumber" name="225" href="#225">225</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/owasp/dependencycheck/data/UpdateException.html">UpdateException</a>(ex);
<a class="jxr_linenumber" name="226" href="#226">226</a> } <strong class="jxr_keyword">finally</strong> {
<a class="jxr_linenumber" name="227" href="#227">227</a> processExecutor.shutdown();
<a class="jxr_linenumber" name="228" href="#228">228</a> }
<a class="jxr_linenumber" name="229" href="#229">229</a> }
<a class="jxr_linenumber" name="230" href="#230">230</a>
<a class="jxr_linenumber" name="231" href="#231">231</a> <strong class="jxr_keyword">if</strong> (maxUpdates &gt;= 1) { <em class="jxr_comment">//ensure the modified file date gets written</em>
<a class="jxr_linenumber" name="232" href="#232">232</a> properties.save(updateable.get(MODIFIED));
<a class="jxr_linenumber" name="233" href="#233">233</a> cveDB.cleanupDatabase();
<a class="jxr_linenumber" name="234" href="#234">234</a> }
<a class="jxr_linenumber" name="235" href="#235">235</a> } <strong class="jxr_keyword">finally</strong> {
<a class="jxr_linenumber" name="236" href="#236">236</a> closeDataStores();
<a class="jxr_linenumber" name="237" href="#237">237</a> }
<a class="jxr_linenumber" name="238" href="#238">238</a> }
<a class="jxr_linenumber" name="239" href="#239">239</a>
<a class="jxr_linenumber" name="240" href="#240">240</a> <em class="jxr_comment">//&lt;editor-fold defaultstate="collapsed" desc="OLD version of update() - not multithreaded"&gt;</em>
<a class="jxr_linenumber" name="241" href="#241">241</a> <em class="jxr_comment">/*</em>
<a class="jxr_linenumber" name="242" href="#242">242</a> <em class="jxr_comment"> * TODO - remove this</em>
<a class="jxr_linenumber" name="243" href="#243">243</a> <em class="jxr_comment"> public void update() throws UpdateException {</em>
<a class="jxr_linenumber" name="244" href="#244">244</a> <em class="jxr_comment"> try {</em>
<a class="jxr_linenumber" name="245" href="#245">245</a> <em class="jxr_comment"> int maxUpdates = 0;</em>
<a class="jxr_linenumber" name="246" href="#246">246</a> <em class="jxr_comment"> for (NvdCveInfo cve : getUpdateable()) {</em>
<a class="jxr_linenumber" name="247" href="#247">247</a> <em class="jxr_comment"> if (cve.getNeedsUpdate()) {</em>
<a class="jxr_linenumber" name="248" href="#248">248</a> <em class="jxr_comment"> maxUpdates += 1;</em>
<a class="jxr_linenumber" name="249" href="#249">249</a> <em class="jxr_comment"> }</em>
<a class="jxr_linenumber" name="250" href="#250">250</a> <em class="jxr_comment"> }</em>
<a class="jxr_linenumber" name="251" href="#251">251</a> <em class="jxr_comment"> if (maxUpdates &gt; 3) {</em>
<a class="jxr_linenumber" name="252" href="#252">252</a> <em class="jxr_comment"> Logger.getLogger(StandardUpdate.class.getName()).log(Level.INFO,</em>
<a class="jxr_linenumber" name="253" href="#253">253</a> <em class="jxr_comment"> "NVD CVE requires several updates; this could take a couple of minutes.");</em>
<a class="jxr_linenumber" name="254" href="#254">254</a> <em class="jxr_comment"> }</em>
<a class="jxr_linenumber" name="255" href="#255">255</a> <em class="jxr_comment"> if (maxUpdates &gt; 0) {</em>
<a class="jxr_linenumber" name="256" href="#256">256</a> <em class="jxr_comment"> openDataStores();</em>
<a class="jxr_linenumber" name="257" href="#257">257</a> <em class="jxr_comment"> }</em>
<a class="jxr_linenumber" name="258" href="#258">258</a>
<a class="jxr_linenumber" name="259" href="#259">259</a> <em class="jxr_comment"> int count = 0;</em>
<a class="jxr_linenumber" name="260" href="#260">260</a> <em class="jxr_comment"> for (NvdCveInfo cve : getUpdateable()) {</em>
<a class="jxr_linenumber" name="261" href="#261">261</a> <em class="jxr_comment"> if (cve.getNeedsUpdate()) {</em>
<a class="jxr_linenumber" name="262" href="#262">262</a> <em class="jxr_comment"> count += 1;</em>
<a class="jxr_linenumber" name="263" href="#263">263</a> <em class="jxr_comment"> Logger.getLogger(StandardUpdate.class.getName()).log(Level.INFO,</em>
<a class="jxr_linenumber" name="264" href="#264">264</a> <em class="jxr_comment"> "Updating NVD CVE ({0} of {1})", new Object[]{count, maxUpdates});</em>
<a class="jxr_linenumber" name="265" href="#265">265</a> <em class="jxr_comment"> URL url = new URL(cve.getUrl());</em>
<a class="jxr_linenumber" name="266" href="#266">266</a> <em class="jxr_comment"> File outputPath = null;</em>
<a class="jxr_linenumber" name="267" href="#267">267</a> <em class="jxr_comment"> File outputPath12 = null;</em>
<a class="jxr_linenumber" name="268" href="#268">268</a> <em class="jxr_comment"> try {</em>
<a class="jxr_linenumber" name="269" href="#269">269</a> <em class="jxr_comment"> Logger.getLogger(StandardUpdate.class.getName()).log(Level.INFO,</em>
<a class="jxr_linenumber" name="270" href="#270">270</a> <em class="jxr_comment"> "Downloading {0}", cve.getUrl());</em>
<a class="jxr_linenumber" name="271" href="#271">271</a> <em class="jxr_comment"> outputPath = File.createTempFile("cve" + cve.getId() + "_", ".xml");</em>
<a class="jxr_linenumber" name="272" href="#272">272</a> <em class="jxr_comment"> Downloader.fetchFile(url, outputPath);</em>
<a class="jxr_linenumber" name="273" href="#273">273</a>
<a class="jxr_linenumber" name="274" href="#274">274</a> <em class="jxr_comment"> url = new URL(cve.getOldSchemaVersionUrl());</em>
<a class="jxr_linenumber" name="275" href="#275">275</a> <em class="jxr_comment"> outputPath12 = File.createTempFile("cve_1_2_" + cve.getId() + "_", ".xml");</em>
<a class="jxr_linenumber" name="276" href="#276">276</a> <em class="jxr_comment"> Downloader.fetchFile(url, outputPath12);</em>
<a class="jxr_linenumber" name="277" href="#277">277</a>
<a class="jxr_linenumber" name="278" href="#278">278</a> <em class="jxr_comment"> Logger.getLogger(StandardUpdate.class.getName()).log(Level.INFO,</em>
<a class="jxr_linenumber" name="279" href="#279">279</a> <em class="jxr_comment"> "Processing {0}", cve.getUrl());</em>
<a class="jxr_linenumber" name="280" href="#280">280</a>
<a class="jxr_linenumber" name="281" href="#281">281</a> <em class="jxr_comment"> importXML(outputPath, outputPath12);</em>
<a class="jxr_linenumber" name="282" href="#282">282</a>
<a class="jxr_linenumber" name="283" href="#283">283</a> <em class="jxr_comment"> getCveDB().commit();</em>
<a class="jxr_linenumber" name="284" href="#284">284</a> <em class="jxr_comment"> getProperties().save(cve);</em>
<a class="jxr_linenumber" name="285" href="#285">285</a>
<a class="jxr_linenumber" name="286" href="#286">286</a> <em class="jxr_comment"> Logger.getLogger(StandardUpdate.class.getName()).log(Level.INFO,</em>
<a class="jxr_linenumber" name="287" href="#287">287</a> <em class="jxr_comment"> "Completed update {0} of {1}", new Object[]{count, maxUpdates});</em>
<a class="jxr_linenumber" name="288" href="#288">288</a> <em class="jxr_comment"> } catch (FileNotFoundException ex) {</em>
<a class="jxr_linenumber" name="289" href="#289">289</a> <em class="jxr_comment"> throw new UpdateException(ex);</em>
<a class="jxr_linenumber" name="290" href="#290">290</a> <em class="jxr_comment"> } catch (ParserConfigurationException ex) {</em>
<a class="jxr_linenumber" name="291" href="#291">291</a> <em class="jxr_comment"> throw new UpdateException(ex);</em>
<a class="jxr_linenumber" name="292" href="#292">292</a> <em class="jxr_comment"> } catch (SAXException ex) {</em>
<a class="jxr_linenumber" name="293" href="#293">293</a> <em class="jxr_comment"> throw new UpdateException(ex);</em>
<a class="jxr_linenumber" name="294" href="#294">294</a> <em class="jxr_comment"> } catch (IOException ex) {</em>
<a class="jxr_linenumber" name="295" href="#295">295</a> <em class="jxr_comment"> throw new UpdateException(ex);</em>
<a class="jxr_linenumber" name="296" href="#296">296</a> <em class="jxr_comment"> } catch (SQLException ex) {</em>
<a class="jxr_linenumber" name="297" href="#297">297</a> <em class="jxr_comment"> throw new UpdateException(ex);</em>
<a class="jxr_linenumber" name="298" href="#298">298</a> <em class="jxr_comment"> } catch (DatabaseException ex) {</em>
<a class="jxr_linenumber" name="299" href="#299">299</a> <em class="jxr_comment"> throw new UpdateException(ex);</em>
<a class="jxr_linenumber" name="300" href="#300">300</a> <em class="jxr_comment"> } catch (ClassNotFoundException ex) {</em>
<a class="jxr_linenumber" name="301" href="#301">301</a> <em class="jxr_comment"> throw new UpdateException(ex);</em>
<a class="jxr_linenumber" name="302" href="#302">302</a> <em class="jxr_comment"> } finally {</em>
<a class="jxr_linenumber" name="303" href="#303">303</a> <em class="jxr_comment"> boolean deleted = false;</em>
<a class="jxr_linenumber" name="304" href="#304">304</a> <em class="jxr_comment"> try {</em>
<a class="jxr_linenumber" name="305" href="#305">305</a> <em class="jxr_comment"> if (outputPath != null &amp;&amp; outputPath.exists()) {</em>
<a class="jxr_linenumber" name="306" href="#306">306</a> <em class="jxr_comment"> deleted = outputPath.delete();</em>
<a class="jxr_linenumber" name="307" href="#307">307</a> <em class="jxr_comment"> }</em>
<a class="jxr_linenumber" name="308" href="#308">308</a> <em class="jxr_comment"> } finally {</em>
<a class="jxr_linenumber" name="309" href="#309">309</a> <em class="jxr_comment"> if (outputPath != null &amp;&amp; (outputPath.exists() || !deleted)) {</em>
<a class="jxr_linenumber" name="310" href="#310">310</a> <em class="jxr_comment"> outputPath.deleteOnExit();</em>
<a class="jxr_linenumber" name="311" href="#311">311</a> <em class="jxr_comment"> }</em>
<a class="jxr_linenumber" name="312" href="#312">312</a> <em class="jxr_comment"> }</em>
<a class="jxr_linenumber" name="313" href="#313">313</a> <em class="jxr_comment"> try {</em>
<a class="jxr_linenumber" name="314" href="#314">314</a> <em class="jxr_comment"> deleted = false;</em>
<a class="jxr_linenumber" name="315" href="#315">315</a> <em class="jxr_comment"> if (outputPath12 != null &amp;&amp; outputPath12.exists()) {</em>
<a class="jxr_linenumber" name="316" href="#316">316</a> <em class="jxr_comment"> deleted = outputPath12.delete();</em>
<a class="jxr_linenumber" name="317" href="#317">317</a> <em class="jxr_comment"> }</em>
<a class="jxr_linenumber" name="318" href="#318">318</a> <em class="jxr_comment"> } finally {</em>
<a class="jxr_linenumber" name="319" href="#319">319</a> <em class="jxr_comment"> if (outputPath12 != null &amp;&amp; (outputPath12.exists() || !deleted)) {</em>
<a class="jxr_linenumber" name="320" href="#320">320</a> <em class="jxr_comment"> outputPath12.deleteOnExit();</em>
<a class="jxr_linenumber" name="321" href="#321">321</a> <em class="jxr_comment"> }</em>
<a class="jxr_linenumber" name="322" href="#322">322</a> <em class="jxr_comment"> }</em>
<a class="jxr_linenumber" name="323" href="#323">323</a> <em class="jxr_comment"> }</em>
<a class="jxr_linenumber" name="324" href="#324">324</a> <em class="jxr_comment"> }</em>
<a class="jxr_linenumber" name="325" href="#325">325</a> <em class="jxr_comment"> }</em>
<a class="jxr_linenumber" name="326" href="#326">326</a> <em class="jxr_comment"> if (maxUpdates &gt;= 1) { //ensure the modified file date gets written</em>
<a class="jxr_linenumber" name="327" href="#327">327</a> <em class="jxr_comment"> getProperties().save(getUpdateable().get(MODIFIED));</em>
<a class="jxr_linenumber" name="328" href="#328">328</a> <em class="jxr_comment"> getCveDB().cleanupDatabase();</em>
<a class="jxr_linenumber" name="329" href="#329">329</a> <em class="jxr_comment"> }</em>
<a class="jxr_linenumber" name="330" href="#330">330</a> <em class="jxr_comment"> } catch (MalformedURLException ex) {</em>
<a class="jxr_linenumber" name="331" href="#331">331</a> <em class="jxr_comment"> throw new UpdateException(ex);</em>
<a class="jxr_linenumber" name="332" href="#332">332</a> <em class="jxr_comment"> } finally {</em>
<a class="jxr_linenumber" name="333" href="#333">333</a> <em class="jxr_comment"> closeDataStores();</em>
<a class="jxr_linenumber" name="334" href="#334">334</a> <em class="jxr_comment"> }</em>
<a class="jxr_linenumber" name="335" href="#335">335</a> <em class="jxr_comment"> }</em>
<a class="jxr_linenumber" name="336" href="#336">336</a> <em class="jxr_comment"> */</em>
<a class="jxr_linenumber" name="337" href="#337">337</a> <em class="jxr_comment">//&lt;/editor-fold&gt;</em>
<a class="jxr_linenumber" name="338" href="#338">338</a> <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="339" href="#339">339</a> <em class="jxr_javadoccomment"> * Determines if the index needs to be updated. This is done by fetching the</em>
<a class="jxr_linenumber" name="340" href="#340">340</a> <em class="jxr_javadoccomment"> * NVD CVE meta data and checking the last update date. If the data needs to</em>
<a class="jxr_linenumber" name="341" href="#341">341</a> <em class="jxr_javadoccomment"> * be refreshed this method will return the NvdCveUrl for the files that</em>
<a class="jxr_linenumber" name="342" href="#342">342</a> <em class="jxr_javadoccomment"> * need to be updated.</em>
<a class="jxr_linenumber" name="343" href="#343">343</a> <em class="jxr_javadoccomment"> *</em>
<a class="jxr_linenumber" name="344" href="#344">344</a> <em class="jxr_javadoccomment"> * @return the collection of files that need to be updated</em>
<a class="jxr_linenumber" name="345" href="#345">345</a> <em class="jxr_javadoccomment"> * @throws MalformedURLException is thrown if the URL for the NVD CVE Meta</em>
<a class="jxr_linenumber" name="346" href="#346">346</a> <em class="jxr_javadoccomment"> * data is incorrect</em>
<a class="jxr_linenumber" name="347" href="#347">347</a> <em class="jxr_javadoccomment"> * @throws DownloadFailedException is thrown if there is an error.</em>
<a class="jxr_linenumber" name="348" href="#348">348</a> <em class="jxr_javadoccomment"> * downloading the NVD CVE download data file</em>
<a class="jxr_linenumber" name="349" href="#349">349</a> <em class="jxr_javadoccomment"> * @throws UpdateException Is thrown if there is an issue with the last</em>
<a class="jxr_linenumber" name="350" href="#350">350</a> <em class="jxr_javadoccomment"> * updated properties file</em>
<a class="jxr_linenumber" name="351" href="#351">351</a> <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="352" href="#352">352</a> <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">final</strong> <a href="../../../../../org/owasp/dependencycheck/data/update/Updateable.html">Updateable</a> updatesNeeded() <strong class="jxr_keyword">throws</strong> MalformedURLException, DownloadFailedException, UpdateException {
<a class="jxr_linenumber" name="353" href="#353">353</a> <a href="../../../../../org/owasp/dependencycheck/data/update/Updateable.html">Updateable</a> updates = <strong class="jxr_keyword">null</strong>;
<a class="jxr_linenumber" name="354" href="#354">354</a> <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="355" href="#355">355</a> updates = retrieveCurrentTimestampsFromWeb();
<a class="jxr_linenumber" name="356" href="#356">356</a> } <strong class="jxr_keyword">catch</strong> (InvalidDataException ex) {
<a class="jxr_linenumber" name="357" href="#357">357</a> <strong class="jxr_keyword">final</strong> String msg = <span class="jxr_string">"Unable to retrieve valid timestamp from nvd cve downloads page"</span>;
<a class="jxr_linenumber" name="358" href="#358">358</a> Logger
<a class="jxr_linenumber" name="359" href="#359">359</a> .getLogger(StandardUpdate.<strong class="jxr_keyword">class</strong>
<a class="jxr_linenumber" name="360" href="#360">360</a> .getName()).log(Level.FINE, msg, ex);
<a class="jxr_linenumber" name="361" href="#361">361</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/owasp/dependencycheck/utils/DownloadFailedException.html">DownloadFailedException</a>(msg, ex);
<a class="jxr_linenumber" name="362" href="#362">362</a> } <strong class="jxr_keyword">catch</strong> (InvalidSettingException ex) {
<a class="jxr_linenumber" name="363" href="#363">363</a> Logger.getLogger(StandardUpdate.<strong class="jxr_keyword">class</strong>
<a class="jxr_linenumber" name="364" href="#364">364</a> .getName()).log(Level.FINE, <span class="jxr_string">"Invalid setting found when retrieving timestamps"</span>, ex);
<a class="jxr_linenumber" name="365" href="#365">365</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/owasp/dependencycheck/utils/DownloadFailedException.html">DownloadFailedException</a>(
<a class="jxr_linenumber" name="366" href="#366">366</a> <span class="jxr_string">"Invalid settings"</span>, ex);
<a class="jxr_linenumber" name="367" href="#367">367</a> }
<a class="jxr_linenumber" name="368" href="#368">368</a>
<a class="jxr_linenumber" name="369" href="#369">369</a> <strong class="jxr_keyword">if</strong> (updates == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="370" href="#370">370</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/owasp/dependencycheck/utils/DownloadFailedException.html">DownloadFailedException</a>(<span class="jxr_string">"Unable to retrieve the timestamps of the currently published NVD CVE data"</span>);
<a class="jxr_linenumber" name="371" href="#371">371</a> }
<a class="jxr_linenumber" name="372" href="#372">372</a> <strong class="jxr_keyword">if</strong> (!properties.isEmpty()) {
<a class="jxr_linenumber" name="373" href="#373">373</a> <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="374" href="#374">374</a> <strong class="jxr_keyword">float</strong> version;
<a class="jxr_linenumber" name="375" href="#375">375</a>
<a class="jxr_linenumber" name="376" href="#376">376</a> <strong class="jxr_keyword">if</strong> (properties.getProperty(<span class="jxr_string">"version"</span>) == <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="377" href="#377">377</a> deleteAndRecreate = <strong class="jxr_keyword">true</strong>;
<a class="jxr_linenumber" name="378" href="#378">378</a> } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="379" href="#379">379</a> <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="380" href="#380">380</a> version = Float.parseFloat(properties.getProperty(<span class="jxr_string">"version"</span>));
<a class="jxr_linenumber" name="381" href="#381">381</a> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">float</strong> currentVersion = Float.parseFloat(CveDB.DB_SCHEMA_VERSION);
<a class="jxr_linenumber" name="382" href="#382">382</a> <strong class="jxr_keyword">if</strong> (currentVersion &gt; version) {
<a class="jxr_linenumber" name="383" href="#383">383</a> deleteAndRecreate = <strong class="jxr_keyword">true</strong>;
<a class="jxr_linenumber" name="384" href="#384">384</a> }
<a class="jxr_linenumber" name="385" href="#385">385</a> } <strong class="jxr_keyword">catch</strong> (NumberFormatException ex) {
<a class="jxr_linenumber" name="386" href="#386">386</a> deleteAndRecreate = <strong class="jxr_keyword">true</strong>;
<a class="jxr_linenumber" name="387" href="#387">387</a> }
<a class="jxr_linenumber" name="388" href="#388">388</a> }
<a class="jxr_linenumber" name="389" href="#389">389</a>
<a class="jxr_linenumber" name="390" href="#390">390</a> <strong class="jxr_keyword">if</strong> (deleteAndRecreate) {
<a class="jxr_linenumber" name="391" href="#391">391</a> <strong class="jxr_keyword">return</strong> updates;
<a class="jxr_linenumber" name="392" href="#392">392</a> }
<a class="jxr_linenumber" name="393" href="#393">393</a>
<a class="jxr_linenumber" name="394" href="#394">394</a> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> lastUpdated = Long.parseLong(properties.getProperty(DataStoreMetaInfo.LAST_UPDATED, <span class="jxr_string">"0"</span>));
<a class="jxr_linenumber" name="395" href="#395">395</a> <strong class="jxr_keyword">final</strong> Date now = <strong class="jxr_keyword">new</strong> Date();
<a class="jxr_linenumber" name="396" href="#396">396</a> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> days = Settings.getInt(Settings.KEYS.CVE_MODIFIED_VALID_FOR_DAYS, 7);
<a class="jxr_linenumber" name="397" href="#397">397</a> <strong class="jxr_keyword">if</strong> (lastUpdated == updates.getTimeStamp(MODIFIED)) {
<a class="jxr_linenumber" name="398" href="#398">398</a> updates.clear(); <em class="jxr_comment">//we don't need to update anything.</em>
<a class="jxr_linenumber" name="399" href="#399">399</a> } <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (withinRange(lastUpdated, now.getTime(), days)) {
<a class="jxr_linenumber" name="400" href="#400">400</a> <strong class="jxr_keyword">for</strong> (NvdCveInfo entry : updates) {
<a class="jxr_linenumber" name="401" href="#401">401</a> <strong class="jxr_keyword">if</strong> (MODIFIED.equals(entry.getId())) {
<a class="jxr_linenumber" name="402" href="#402">402</a> entry.setNeedsUpdate(<strong class="jxr_keyword">true</strong>);
<a class="jxr_linenumber" name="403" href="#403">403</a> } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="404" href="#404">404</a> entry.setNeedsUpdate(false);
<a class="jxr_linenumber" name="405" href="#405">405</a> }
<a class="jxr_linenumber" name="406" href="#406">406</a> }
<a class="jxr_linenumber" name="407" href="#407">407</a> } <strong class="jxr_keyword">else</strong> { <em class="jxr_comment">//we figure out which of the several XML files need to be downloaded.</em>
<a class="jxr_linenumber" name="408" href="#408">408</a> <strong class="jxr_keyword">for</strong> (NvdCveInfo entry : updates) {
<a class="jxr_linenumber" name="409" href="#409">409</a> <strong class="jxr_keyword">if</strong> (MODIFIED.equals(entry.getId())) {
<a class="jxr_linenumber" name="410" href="#410">410</a> entry.setNeedsUpdate(<strong class="jxr_keyword">true</strong>);
<a class="jxr_linenumber" name="411" href="#411">411</a> } <strong class="jxr_keyword">else</strong> {
<a class="jxr_linenumber" name="412" href="#412">412</a> <strong class="jxr_keyword">long</strong> currentTimestamp = 0;
<a class="jxr_linenumber" name="413" href="#413">413</a> <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="414" href="#414">414</a> currentTimestamp = Long.parseLong(properties.getProperty(DataStoreMetaInfo.LAST_UPDATED_BASE + entry.getId(), <span class="jxr_string">"0"</span>));
<a class="jxr_linenumber" name="415" href="#415">415</a> } <strong class="jxr_keyword">catch</strong> (NumberFormatException ex) {
<a class="jxr_linenumber" name="416" href="#416">416</a> <strong class="jxr_keyword">final</strong> String msg = String.format(<span class="jxr_string">"Error parsing '%s' '%s' from nvdcve.lastupdated"</span>,
<a class="jxr_linenumber" name="417" href="#417">417</a> DataStoreMetaInfo.LAST_UPDATED_BASE, entry.getId());
<a class="jxr_linenumber" name="418" href="#418">418</a> Logger
<a class="jxr_linenumber" name="419" href="#419">419</a> .getLogger(StandardUpdate.<strong class="jxr_keyword">class</strong>
<a class="jxr_linenumber" name="420" href="#420">420</a> .getName()).log(Level.FINE, msg, ex);
<a class="jxr_linenumber" name="421" href="#421">421</a> }
<a class="jxr_linenumber" name="422" href="#422">422</a> <strong class="jxr_keyword">if</strong> (currentTimestamp == entry.getTimestamp()) {
<a class="jxr_linenumber" name="423" href="#423">423</a> entry.setNeedsUpdate(false);
<a class="jxr_linenumber" name="424" href="#424">424</a> }
<a class="jxr_linenumber" name="425" href="#425">425</a> }
<a class="jxr_linenumber" name="426" href="#426">426</a> }
<a class="jxr_linenumber" name="427" href="#427">427</a> }
<a class="jxr_linenumber" name="428" href="#428">428</a> } <strong class="jxr_keyword">catch</strong> (NumberFormatException ex) {
<a class="jxr_linenumber" name="429" href="#429">429</a> <strong class="jxr_keyword">final</strong> String msg = <span class="jxr_string">"An invalid schema version or timestamp exists in the data.properties file."</span>;
<a class="jxr_linenumber" name="430" href="#430">430</a> Logger
<a class="jxr_linenumber" name="431" href="#431">431</a> .getLogger(StandardUpdate.<strong class="jxr_keyword">class</strong>
<a class="jxr_linenumber" name="432" href="#432">432</a> .getName()).log(Level.WARNING, msg);
<a class="jxr_linenumber" name="433" href="#433">433</a> Logger.getLogger(StandardUpdate.<strong class="jxr_keyword">class</strong>
<a class="jxr_linenumber" name="434" href="#434">434</a> .getName()).log(Level.FINE, <strong class="jxr_keyword">null</strong>, ex);
<a class="jxr_linenumber" name="435" href="#435">435</a> }
<a class="jxr_linenumber" name="436" href="#436">436</a> }
<a class="jxr_linenumber" name="437" href="#437">437</a> <strong class="jxr_keyword">return</strong> updates;
<a class="jxr_linenumber" name="438" href="#438">438</a> }
<a class="jxr_linenumber" name="439" href="#439">439</a>
<a class="jxr_linenumber" name="440" href="#440">440</a> <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="441" href="#441">441</a> <em class="jxr_javadoccomment"> * Retrieves the timestamps from the NVD CVE meta data file.</em>
<a class="jxr_linenumber" name="442" href="#442">442</a> <em class="jxr_javadoccomment"> *</em>
<a class="jxr_linenumber" name="443" href="#443">443</a> <em class="jxr_javadoccomment"> * @return the timestamp from the currently published nvdcve downloads page</em>
<a class="jxr_linenumber" name="444" href="#444">444</a> <em class="jxr_javadoccomment"> * @throws MalformedURLException thrown if the URL for the NVD CCE Meta data</em>
<a class="jxr_linenumber" name="445" href="#445">445</a> <em class="jxr_javadoccomment"> * is incorrect.</em>
<a class="jxr_linenumber" name="446" href="#446">446</a> <em class="jxr_javadoccomment"> * @throws DownloadFailedException thrown if there is an error downloading</em>
<a class="jxr_linenumber" name="447" href="#447">447</a> <em class="jxr_javadoccomment"> * the nvd cve meta data file</em>
<a class="jxr_linenumber" name="448" href="#448">448</a> <em class="jxr_javadoccomment"> * @throws InvalidDataException thrown if there is an exception parsing the</em>
<a class="jxr_linenumber" name="449" href="#449">449</a> <em class="jxr_javadoccomment"> * timestamps</em>
<a class="jxr_linenumber" name="450" href="#450">450</a> <em class="jxr_javadoccomment"> * @throws InvalidSettingException thrown if the settings are invalid</em>
<a class="jxr_linenumber" name="451" href="#451">451</a> <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="452" href="#452">452</a> <strong class="jxr_keyword">private</strong> <a href="../../../../../org/owasp/dependencycheck/data/update/Updateable.html">Updateable</a> retrieveCurrentTimestampsFromWeb()
<a class="jxr_linenumber" name="453" href="#453">453</a> <strong class="jxr_keyword">throws</strong> MalformedURLException, DownloadFailedException, InvalidDataException, <a href="../../../../../org/owasp/dependencycheck/utils/InvalidSettingException.html">InvalidSettingException</a> {
<a class="jxr_linenumber" name="454" href="#454">454</a>
<a class="jxr_linenumber" name="455" href="#455">455</a> <strong class="jxr_keyword">final</strong> <a href="../../../../../org/owasp/dependencycheck/data/update/Updateable.html">Updateable</a> updates = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/owasp/dependencycheck/data/update/Updateable.html">Updateable</a>();
<a class="jxr_linenumber" name="456" href="#456">456</a> updates.add(MODIFIED, Settings.getString(Settings.KEYS.CVE_MODIFIED_20_URL),
<a class="jxr_linenumber" name="457" href="#457">457</a> Settings.getString(Settings.KEYS.CVE_MODIFIED_12_URL),
<a class="jxr_linenumber" name="458" href="#458">458</a> false);
<a class="jxr_linenumber" name="459" href="#459">459</a>
<a class="jxr_linenumber" name="460" href="#460">460</a> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> start = Settings.getInt(Settings.KEYS.CVE_START_YEAR);
<a class="jxr_linenumber" name="461" href="#461">461</a> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> end = Calendar.getInstance().get(Calendar.YEAR);
<a class="jxr_linenumber" name="462" href="#462">462</a> <strong class="jxr_keyword">final</strong> String baseUrl20 = Settings.getString(Settings.KEYS.CVE_SCHEMA_2_0);
<a class="jxr_linenumber" name="463" href="#463">463</a> <strong class="jxr_keyword">final</strong> String baseUrl12 = Settings.getString(Settings.KEYS.CVE_SCHEMA_1_2);
<a class="jxr_linenumber" name="464" href="#464">464</a> <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = start; i &lt;= end; i++) {
<a class="jxr_linenumber" name="465" href="#465">465</a> updates.add(Integer.toString(i), String.format(baseUrl20, i),
<a class="jxr_linenumber" name="466" href="#466">466</a> String.format(baseUrl12, i),
<a class="jxr_linenumber" name="467" href="#467">467</a> <strong class="jxr_keyword">true</strong>);
<a class="jxr_linenumber" name="468" href="#468">468</a> }
<a class="jxr_linenumber" name="469" href="#469">469</a>
<a class="jxr_linenumber" name="470" href="#470">470</a> <strong class="jxr_keyword">return</strong> updates;
<a class="jxr_linenumber" name="471" href="#471">471</a> }
<a class="jxr_linenumber" name="472" href="#472">472</a>
<a class="jxr_linenumber" name="473" href="#473">473</a> <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="474" href="#474">474</a> <em class="jxr_javadoccomment"> * Deletes the existing data directories.</em>
<a class="jxr_linenumber" name="475" href="#475">475</a> <em class="jxr_javadoccomment"> *</em>
<a class="jxr_linenumber" name="476" href="#476">476</a> <em class="jxr_javadoccomment"> * @throws IOException thrown if the directory cannot be deleted</em>
<a class="jxr_linenumber" name="477" href="#477">477</a> <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="478" href="#478">478</a> <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> deleteExistingData() <strong class="jxr_keyword">throws</strong> IOException {
<a class="jxr_linenumber" name="479" href="#479">479</a> File data = Settings.getDataFile(Settings.KEYS.CVE_DATA_DIRECTORY);
<a class="jxr_linenumber" name="480" href="#480">480</a> <strong class="jxr_keyword">if</strong> (data.exists()) {
<a class="jxr_linenumber" name="481" href="#481">481</a> FileUtils.delete(data);
<a class="jxr_linenumber" name="482" href="#482">482</a> }
<a class="jxr_linenumber" name="483" href="#483">483</a> data = DataStoreMetaInfo.getPropertiesFile();
<a class="jxr_linenumber" name="484" href="#484">484</a> <strong class="jxr_keyword">if</strong> (data.exists()) {
<a class="jxr_linenumber" name="485" href="#485">485</a> FileUtils.delete(data);
<a class="jxr_linenumber" name="486" href="#486">486</a> }
<a class="jxr_linenumber" name="487" href="#487">487</a> }
<a class="jxr_linenumber" name="488" href="#488">488</a>
<a class="jxr_linenumber" name="489" href="#489">489</a> <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="490" href="#490">490</a> <em class="jxr_javadoccomment"> * Closes the CVE and CPE data stores.</em>
<a class="jxr_linenumber" name="491" href="#491">491</a> <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="492" href="#492">492</a> <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> closeDataStores() {
<a class="jxr_linenumber" name="493" href="#493">493</a> <strong class="jxr_keyword">if</strong> (cveDB != <strong class="jxr_keyword">null</strong>) {
<a class="jxr_linenumber" name="494" href="#494">494</a> <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="495" href="#495">495</a> cveDB.close();
<a class="jxr_linenumber" name="496" href="#496">496</a> } <strong class="jxr_keyword">catch</strong> (Exception ignore) {
<a class="jxr_linenumber" name="497" href="#497">497</a> Logger.getLogger(StandardUpdate.<strong class="jxr_keyword">class</strong>.getName()).log(Level.FINEST, <span class="jxr_string">"Error closing the cveDB"</span>, ignore);
<a class="jxr_linenumber" name="498" href="#498">498</a> }
<a class="jxr_linenumber" name="499" href="#499">499</a> }
<a class="jxr_linenumber" name="500" href="#500">500</a> }
<a class="jxr_linenumber" name="501" href="#501">501</a>
<a class="jxr_linenumber" name="502" href="#502">502</a> <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="503" href="#503">503</a> <em class="jxr_javadoccomment"> * Opens the CVE and CPE data stores.</em>
<a class="jxr_linenumber" name="504" href="#504">504</a> <em class="jxr_javadoccomment"> *</em>
<a class="jxr_linenumber" name="505" href="#505">505</a> <em class="jxr_javadoccomment"> * @throws UpdateException thrown if a data store cannot be opened</em>
<a class="jxr_linenumber" name="506" href="#506">506</a> <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="507" href="#507">507</a> <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> openDataStores() <strong class="jxr_keyword">throws</strong> UpdateException {
<a class="jxr_linenumber" name="508" href="#508">508</a> <em class="jxr_comment">//open the cve and cpe data stores</em>
<a class="jxr_linenumber" name="509" href="#509">509</a> <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="510" href="#510">510</a> cveDB = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/owasp/dependencycheck/data/nvdcve/CveDB.html">CveDB</a>();
<a class="jxr_linenumber" name="511" href="#511">511</a> cveDB.open();
<a class="jxr_linenumber" name="512" href="#512">512</a> } <strong class="jxr_keyword">catch</strong> (IOException ex) {
<a class="jxr_linenumber" name="513" href="#513">513</a> closeDataStores();
<a class="jxr_linenumber" name="514" href="#514">514</a> Logger.getLogger(StandardUpdate.<strong class="jxr_keyword">class</strong>.getName()).log(Level.FINE, <span class="jxr_string">"IO Error opening databases"</span>, ex);
<a class="jxr_linenumber" name="515" href="#515">515</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/owasp/dependencycheck/data/UpdateException.html">UpdateException</a>(<span class="jxr_string">"Error updating the CPE/CVE data, please see the log file for more details."</span>);
<a class="jxr_linenumber" name="516" href="#516">516</a> } <strong class="jxr_keyword">catch</strong> (SQLException ex) {
<a class="jxr_linenumber" name="517" href="#517">517</a> closeDataStores();
<a class="jxr_linenumber" name="518" href="#518">518</a> Logger.getLogger(StandardUpdate.<strong class="jxr_keyword">class</strong>.getName()).log(Level.FINE, <span class="jxr_string">"SQL Exception opening databases"</span>, ex);
<a class="jxr_linenumber" name="519" href="#519">519</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/owasp/dependencycheck/data/UpdateException.html">UpdateException</a>(<span class="jxr_string">"Error updating the CPE/CVE data, please see the log file for more details."</span>);
<a class="jxr_linenumber" name="520" href="#520">520</a> } <strong class="jxr_keyword">catch</strong> (DatabaseException ex) {
<a class="jxr_linenumber" name="521" href="#521">521</a> closeDataStores();
<a class="jxr_linenumber" name="522" href="#522">522</a> Logger.getLogger(StandardUpdate.<strong class="jxr_keyword">class</strong>.getName()).log(Level.FINE, <span class="jxr_string">"Database Exception opening databases"</span>, ex);
<a class="jxr_linenumber" name="523" href="#523">523</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/owasp/dependencycheck/data/UpdateException.html">UpdateException</a>(<span class="jxr_string">"Error updating the CPE/CVE data, please see the log file for more details."</span>);
<a class="jxr_linenumber" name="524" href="#524">524</a> } <strong class="jxr_keyword">catch</strong> (ClassNotFoundException ex) {
<a class="jxr_linenumber" name="525" href="#525">525</a> closeDataStores();
<a class="jxr_linenumber" name="526" href="#526">526</a> Logger.getLogger(StandardUpdate.<strong class="jxr_keyword">class</strong>.getName()).log(Level.FINE, <span class="jxr_string">"Class not found exception opening databases"</span>, ex);
<a class="jxr_linenumber" name="527" href="#527">527</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/owasp/dependencycheck/data/UpdateException.html">UpdateException</a>(<span class="jxr_string">"Error updating the CPE/CVE data, please see the log file for more details."</span>);
<a class="jxr_linenumber" name="528" href="#528">528</a> }
<a class="jxr_linenumber" name="529" href="#529">529</a> }
<a class="jxr_linenumber" name="530" href="#530">530</a>
<a class="jxr_linenumber" name="531" href="#531">531</a> <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="532" href="#532">532</a> <em class="jxr_javadoccomment"> * Determines if the epoch date is within the range specified of the</em>
<a class="jxr_linenumber" name="533" href="#533">533</a> <em class="jxr_javadoccomment"> * compareTo epoch time. This takes the (compareTo-date)/1000/60/60/24 to</em>
<a class="jxr_linenumber" name="534" href="#534">534</a> <em class="jxr_javadoccomment"> * get the number of days. If the calculated days is less then the range the</em>
<a class="jxr_linenumber" name="535" href="#535">535</a> <em class="jxr_javadoccomment"> * date is considered valid.</em>
<a class="jxr_linenumber" name="536" href="#536">536</a> <em class="jxr_javadoccomment"> *</em>
<a class="jxr_linenumber" name="537" href="#537">537</a> <em class="jxr_javadoccomment"> * @param date the date to be checked.</em>
<a class="jxr_linenumber" name="538" href="#538">538</a> <em class="jxr_javadoccomment"> * @param compareTo the date to compare to.</em>
<a class="jxr_linenumber" name="539" href="#539">539</a> <em class="jxr_javadoccomment"> * @param range the range in days to be considered valid.</em>
<a class="jxr_linenumber" name="540" href="#540">540</a> <em class="jxr_javadoccomment"> * @return whether or not the date is within the range.</em>
<a class="jxr_linenumber" name="541" href="#541">541</a> <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="542" href="#542">542</a> <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">boolean</strong> withinRange(<strong class="jxr_keyword">long</strong> date, <strong class="jxr_keyword">long</strong> compareTo, <strong class="jxr_keyword">int</strong> range) {
<a class="jxr_linenumber" name="543" href="#543">543</a> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">double</strong> differenceInDays = (compareTo - date) / 1000.0 / 60.0 / 60.0 / 24.0;
<a class="jxr_linenumber" name="544" href="#544">544</a> <strong class="jxr_keyword">return</strong> differenceInDays &lt; range;
<a class="jxr_linenumber" name="545" href="#545">545</a> }
<a class="jxr_linenumber" name="546" href="#546">546</a>
<a class="jxr_linenumber" name="547" href="#547">547</a> <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> spinWaitForFuture(<strong class="jxr_keyword">final</strong> Future&lt;CallableDownloadTask&gt; future) {
<a class="jxr_linenumber" name="548" href="#548">548</a> <em class="jxr_comment">//then wait for downloads to finish</em>
<a class="jxr_linenumber" name="549" href="#549">549</a> <strong class="jxr_keyword">while</strong> (!future.isDone()) {
<a class="jxr_linenumber" name="550" href="#550">550</a> <strong class="jxr_keyword">try</strong> {
<a class="jxr_linenumber" name="551" href="#551">551</a> Thread.sleep(1000);
<a class="jxr_linenumber" name="552" href="#552">552</a> } <strong class="jxr_keyword">catch</strong> (InterruptedException ex) {
<a class="jxr_linenumber" name="553" href="#553">553</a> Logger.getLogger(StandardUpdate.<strong class="jxr_keyword">class</strong>.getName()).log(Level.FINE, <strong class="jxr_keyword">null</strong>, ex);
<a class="jxr_linenumber" name="554" href="#554">554</a> }
<a class="jxr_linenumber" name="555" href="#555">555</a> }
<a class="jxr_linenumber" name="556" href="#556">556</a> }
<a class="jxr_linenumber" name="557" href="#557">557</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>