/*
* Zed Attack Proxy (ZAP) and its related class files.
*
* ZAP is an HTTP/HTTPS proxy for assessing web application security.
*
* Licensed under the Apache 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.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.parosproxy.paros.db;
/**
* This interface was extracted from the previous Paros class of the same name.
* The Paros class that implements this interface has been moved to the 'paros' sub package and prefixed with 'Paros'
* @author psiinon
*/
import java.util.List;
import org.parosproxy.paros.model.HistoryReference;
import org.parosproxy.paros.network.HttpMalformedHeaderException;
import org.parosproxy.paros.network.HttpMessage;
public interface TableHistory extends DatabaseListener {
RecordHistory read(int historyId)
throws HttpMalformedHeaderException, DatabaseException;
RecordHistory write(long sessionId, int histType,
HttpMessage msg) throws HttpMalformedHeaderException, DatabaseException;
/**
* Gets all the history record IDs of the given session.
*
* @param sessionId the ID of session of the history records to be returned
* @return a {@code List} with all the history IDs of the given session, never {@code null}
* @throws DatabaseException if an error occurred while getting the history IDs
* @since 2.3.0
* @see #getHistoryIdsOfHistType(long, int...)
*/
List<Integer> getHistoryIds(long sessionId)
throws DatabaseException;
/**
* Gets all the history record IDs of the given session and with the given history types.
*
* @param sessionId the ID of session of the history records
* @param histTypes the history types of the history records that should be returned
* @return a {@code List} with all the history IDs of the given session and history types, never {@code null}
* @throws DatabaseException if an error occurred while getting the history IDs
* @since 2.3.0
* @see #getHistoryIds(long)
* @see #getHistoryIdsExceptOfHistType(long, int...)
*/
List<Integer> getHistoryIdsOfHistType(long sessionId,
int... histTypes) throws DatabaseException;
/**
* Returns all the history record IDs of the given session except the ones with the given history types.
**
* @param sessionId the ID of session of the history records
* @param histTypes the history types of the history records that should be excluded
* @return a {@code List} with all the history IDs of the given session and history types, never {@code null}
* @throws DatabaseException if an error occurred while getting the history IDs
* @since 2.3.0
* @see #getHistoryIdsOfHistType(long, int...)
*/
List<Integer> getHistoryIdsExceptOfHistType(long sessionId,
int... histTypes) throws DatabaseException;
List<Integer> getHistoryList(long sessionId, int histType,
String filter, boolean isRequest) throws DatabaseException;
void deleteHistorySession(long sessionId)
throws DatabaseException;
void deleteHistoryType(long sessionId, int historyType)
throws DatabaseException;
void delete(int historyId) throws DatabaseException;
/**
* Deletes from the database all the history records whose ID is
* in the list {@code ids}, in batches of 1000 records.
*
* @param ids
* a {@code List} containing all the IDs of the
* history records to be deleted
* @throws IllegalArgumentException if {@code ids} is null
* @throws DatabaseException
* if an error occurred while deleting the
* history records
* @since 2.0.0
* @see #delete(List, int)
*/
// ZAP: Added method.
void delete(List<Integer> ids) throws DatabaseException;
/**
* Deletes from the database all the history records whose ID is in the list {@code ids}, in batches of given
* {@code batchSize}.
*
* @param ids a {@code List} containing all the IDs of the history records to be deleted
* @param batchSize the maximum size of records to delete in a single batch
* @throws IllegalArgumentException if {@code ids} is null
* @throws IllegalArgumentException if {@code batchSize} is not greater than zero
* @throws DatabaseException if an error occurred while deleting the history records
* @since 2.3.0
*/
void delete(List<Integer> ids, int batchSize)
throws DatabaseException;
/**
* Deletes all records whose history type was marked as temporary.
*
* @throws DatabaseException if an error occurred while deleting the temporary history records
* @see HistoryReference#getTemporaryTypes()
*/
void deleteTemporary() throws DatabaseException;
boolean containsURI(long sessionId, int historyType,
String method, String uri, byte[] body) throws DatabaseException;
RecordHistory getHistoryCache(HistoryReference ref,
HttpMessage reqMsg) throws DatabaseException,
HttpMalformedHeaderException;
void updateNote(int historyId, String note)
throws DatabaseException;
int lastIndex();
}