/* * 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. */ // ZAP: 2015/04/02 Issue 1582: Low memory option 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 */ public interface Database { /** * The default HyperSQL Db: http://hsqldb.org/ */ public static final String DB_TYPE_HSQLDB = "hsqldb"; DatabaseServer getDatabaseServer(); TableHistory getTableHistory(); /** * @return Returns the tableSession. */ TableSession getTableSession(); void addDatabaseListener(DatabaseListener listener); // ZAP: Changed parameter's type from SpiderListener to DatabaseListener. void removeDatabaseListener(DatabaseListener listener); void open(String path) throws ClassNotFoundException, Exception; /** * Closes the database. If the parameter {@code compact} is {@code true}, * the database will be compacted, compacting the database ensures a minimal * space disk usage but it will also take longer to close. Any necessary * cleanups are performed prior to closing the database (the cleanup removes * the temporary {@code HistoryRefernece}s). * * <p> * <b>Note:</b> Calling this method has the same effects as calling the * method {@link #close(boolean, boolean)} with the parameter * {@code cleanup} as {@code true}. * </p> * * @param compact * {@code true} if the database should be compacted, * {@code false} otherwise. * @see org.parosproxy.paros.model.HistoryReference */ // ZAP: Added JavaDoc. void close(boolean compact); /** * Permanently delete the specified session * @param sessionName */ void deleteSession(String sessionName); /** * Closes the database. If the parameter {@code compact} is {@code true}, * the database will be compacted, compacting the database ensures a minimal * space disk usage but it will also take longer to close. If the parameter * {@code cleanup} is {@code true} any necessary cleanups are performed * prior to closing the database (the cleanup removes the temporary * {@code HistoryRefernece}s.) * * @param compact * {@code true} if the database should be compacted, * {@code false} otherwise. * @param cleanup * {@code true} if any necessary cleanups should be performed, * {@code false} otherwise. * @see org.parosproxy.paros.model.HistoryReference */ // ZAP: Added method. Note: any change made to this method must have the // ZAP comment as the content was moved from the paros method close(boolean). void close(boolean compact, boolean cleanup); /** * @return Returns the tableAlert. */ TableAlert getTableAlert(); /** * @param tableAlert The tableAlert to set. */ void setTableAlert(TableAlert tableAlert); /** * @return Returns the tableScan. */ TableScan getTableScan(); /** * @param tableScan The tableScan to set. */ void setTableScan(TableScan tableScan); TableTag getTableTag(); void setTableTag(TableTag tableTag); // ZAP: Added method. TableSessionUrl getTableSessionUrl(); // ZAP: Added method. void setTableSessionUrl(TableSessionUrl tableSessionUrl); // ZAP: Added method. TableParam getTableParam(); TableContext getTableContext(); TableStructure getTableStructure(); /** * The type of the database - eg {@value #DB_TYPE_HSQLDB} * @return */ String getType(); /** * Discards the history associated with the given session ID, called when a session is not to be saved (and a new one is * about to be created). * <p> * Implementations might opt to do nothing, for example, if the database is file based (HSQLDB) and those files are deleted * if the session is not saved. * * @param sessionId the ID of the session * @throws DatabaseException If an error occurred while discarding the history of the session. * @since 2.5.0 */ void discardSession(long sessionId) throws DatabaseException; }