////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2009-2013 Denim Group, Ltd.
//
// The contents of this file are subject to the Mozilla Public License
// Version 2.0 (the "License"); you may not use this file except in
// compliance with the License. You may obtain a copy of the License at
// http://www.mozilla.org/MPL/
//
// Software distributed under the License is distributed on an "AS IS"
// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
// License for the specific language governing rights and limitations
// under the License.
//
// The Original Code is ThreadFix.
//
// The Initial Developer of the Original Code is Denim Group, Ltd.
// Portions created by Denim Group, Ltd. are Copyright (C)
// Denim Group, Ltd. All Rights Reserved.
//
// Contributor(s): Denim Group, Ltd.
//
////////////////////////////////////////////////////////////////////////
package com.denimgroup.threadfix.data.dao;
import java.util.List;
import com.denimgroup.threadfix.data.entities.Application;
import com.denimgroup.threadfix.data.entities.Finding;
import com.denimgroup.threadfix.data.entities.Vulnerability;
/**
* Basic DAO class for the Vulnerability entity.
*
* @author mcollins
* @author dwolf
*/
public interface VulnerabilityDao {
/**
* @param vulnerabilityId
*/
void delete(Vulnerability vulnerability);
/**
* @return
*/
List<Vulnerability> retrieveAll();
/**
* @return
*/
List<Vulnerability> retrieveAllActive();
/**
* @param applicationId
* @return
*/
List<Vulnerability> retrieveAllActiveByApplication(int applicationId);
/**
* @param vulnerability
* @return
*/
List<Vulnerability> retrieveAllByGenericVulnerabilityAndApp(Vulnerability vulnerability);
/**
* @return
*/
List<Vulnerability> retrieveAllInactive();
/**
*
* @param applicationIdList
* @return
*/
List<Vulnerability> retrieveByApplicationIdList(List<Integer> applicationIdList);
/**
* @param hash
* @param applicationId
* @return
*/
Vulnerability retrieveByHashAndApp(String hash, int applicationId);
/**
* @param id
* @return
*/
Vulnerability retrieveById(int id);
/**
* @param hash
* @param applicationId
* @return
*/
List<Vulnerability> retrieveByLocationHashAndApp(String hash, int applicationId);
/**
* @param hash
* @param applicationId
* @return
*/
List<Vulnerability> retrieveByVariableHashAndApp(String hash, int applicationId);
/**
* @param vulnerability
* @return
*/
List<Vulnerability> retrieveSimilarHashes(Vulnerability vulnerability);
/**
* @param vulnerability
*/
void saveOrUpdate(Vulnerability vulnerability);
/**
*
* This is a ridiculous number of parameters.
* This method is complicated enough though and I didn't want to add bean parsing to it.
*
* @param appId
* @param page
* @param field
* @param sort
* @param param
* @param path
* @param severity
* @param description
* @return
*/
List<Vulnerability> retrieveActiveByAppIdAndPage(int appId, int page, int sort, int field, Integer cwe,
String description, String severity, String path, String param,
boolean open, boolean falsePositive);
/**
*
* @param appId
* @param description
* @param severity
* @param path
* @param param
* @param cweInteger
* @return
*/
long getVulnCountWithFilters(Integer appId, String description,
String severity, String path, String param, Integer cweInteger,
boolean open, boolean falsePositive);
/**
*
* @param application
* @param value
* @return
*/
List<Vulnerability> getFalsePositiveVulnCount(Application application,
boolean value);
/**
*
* @param appId
* @return
*/
long getVulnCount(Integer appId, boolean open);
/**
*
* @param finding
*/
void evict(Finding finding);
/**
*
* @param vulnerabilityIds
*/
void markAllClosed(List<Integer> vulnerabilityIds);
/**
*
* @param vulnerabilityIds
*/
void markAllOpen(List<Integer> vulnerabilityIds);
/**
*/
boolean activeVulnerabilitiesExist();
/**
*/
List<Integer> getTopTenVulnTypes(List<Integer> applicationIdList);
}