/*
 * Autopsy Forensic Browser
 *
 * Copyright 2012 Basis Technology Corp.
 * Contact: carrier <at> sleuthkit <dot> org
 *
 * 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.sleuthkit.autopsy.report;

import java.util.List;

/**
 * ReportModule that implements a tabular style of reporting.
 * 
 * All TableReportModules will be sent the exact data to report, and will only
 * have to determine how to write and display this data.
 * 
 * The data sent consists of user-chosen fields such as Blackboard Artifacts
 * and File/Result Tags.
 */
 interface TableReportModule extends ReportModule {
    
    /**
     * Start the report. Open any output streams, initialize member variables,
     * write summary and navigation pages. Considered the "constructor" of the report.
     * 
     * @param path String path to save the report
     */
    public void startReport(String path);
    
    /**
     * End the report. Close all output streams and write any end-of-report
     * files.
     */
    public void endReport();
    
    /**
     * Start a new data type for the report. This is how the report will differentiate between
     * the start and end of a certain type of data, such as a blackboard artifact Type.
     * It is up to the report how the differentiation is shown.
     * 
     * @param title String name of the data type
     * @param description Description of the data type
     */
    public void startDataType(String title, String description);
    
    /**
     * End the current data type and prepare for either the end of the report
     * or the start of a new data type.
     */
    public void endDataType();
    
    /**
     * Start a new set, or sub-category, for the current data type.
     * 
     * @param setName String name of the set
     */
    public void startSet(String setName);
    
    /**
     * End the current set and prepare for either the end of the current data type
     * or the start of a new set.
     */
    public void endSet();
    
    /**
     * Add an index of all the sets to the report's current data type. This method
     * is guaranteed to be called before any sets are added to the data type,
     * and may be ignored.
     * 
     * @param sets List of all the String set names
     */
    public void addSetIndex(List<String> sets);
    
    /**
     * Add an element to the current set. An element is considered the 'title' of a
     * table in a set, a sub-set in a sense.
     * 
     * @param elementName String name of element
     */
    public void addSetElement(String elementName);
    
    /**
     * Create a table with the column names given.
     * 
     * @param titles List of String column names
     */
    public void startTable(List<String> titles);
    
    /**
     * End the current table.
     */
    public void endTable();
    
    /**
     * Add a row with the cell values given to the current table.
     * 
     * @param row List of String cell values
     */
    public void addRow(List<String> row);
    
    /**
     * Returns a String date, created by the module. All date values will query
     * the module for it's interpretation of the date before sending it a row 
     * with the date value.
     * 
     * @param date long date as long
     * @return String date as String
     */
    public String dateToString(long date);
    
}

@@ -3627,17 +3627,16 @@
 e for it
-'
 s interp

Fix typo in TableReportModule