GroundwaterDataInterface.java [src/WaterData] Revision: default  Date:
package WaterData;

import java.util.ArrayList;

/**
* Last Updated: 21-June-2017
* @author Tyler Wible
* @since 10-April-2017
*/
public interface GroundwaterDataInterface {
    public String database = null;
    
    /**
     * Extract water quality data from the current database
     * @param stationId  the station ID for which water quality data is desired
     * @param startDate  the begin date of desired data (yyyy-MM-dd)
     * @param endDate  the end date of desired data (yyyy-MM-dd)
     * @param wqTest  the water quality test desired "00600 Total nitrogen, water, unfiltered, milligrams per liter -- mg/L" (format: "5-digit test-name -- units") or "flow"
     * @return ArrayList of strings of the raw data
     * @throws WaterData.WaterDataException
     */
    public ArrayList<String> extractWaterQualityData_raw(String stationId, String startDate, String endDate, String wqTest) throws WaterDataException;
    
    /**
     * Extract water quality data from the current database
     * @param stationId  the station ID for which water quality data is desired
     * @param startDate  the begin date of desired data (yyyy-MM-dd)
     * @param endDate  the end date of desired data (yyyy-MM-dd)
     * @param wqTest  the water quality test desired "00600 Total nitrogen, water, unfiltered, milligrams per liter -- mg/L" (format: "5-digit test-name -- units") or "flow"
     * @return String[][] array of paired dates and water quality data.
     * Dates (yyyy-MM-dd format) are in the first column [i][0] and water quality data are in the second [i][1]
     * @throws WaterData.WaterDataException
     */
    public String[][] extractWaterQualityData_formatted(String stationId, String startDate, String endDate, String wqTest) throws WaterDataException;
    
//    /**
//     * Extract flow and water quality data from the current database
//     * @param orgId  the organization which provided the data to the database (only used by STORET and CDSN databases)
//     * @param stationId  the station ID for which flow and water quality data is desired
//     * @param startDate  the begin date of desired flow and water quality data (yyyy-MM-dd)
//     * @param endDate  the end date of desired flow and water quality data (yyyy-MM-dd)
//     * @param wqTest  the water quality test desired "00600 Total nitrogen, water, unfiltered, milligrams per liter -- mg/L" (format: "5-digit test-name -- units")
//     * @throws Exception 
//     */
//    public static Object[] extractFlow_and_WQdata(String orgId, String stationId, String startDate, String endDate, String wqTest) throws Exception{
//        
//    }
    /**
     * Extract water table elevation data from the current database
     * @param stationId  the station ID for which water table elevation data is desired
     * @param startDate  the begin date of desired data (yyyy-MM-dd)
     * @param endDate  the end date of desired data (yyyy-MM-dd)
     * @return ArrayList of strings of the raw data
     * @throws WaterData.WaterDataException
     */
    public ArrayList<String> extractWaterTableElevation_raw(String stationId, String startDate, String endDate) throws WaterDataException;
    
    /**
     * Extract water table elevation data from the current database
     * @param stationId  the station ID for which water table elevation data is desired
     * @param startDate  the begin date of desired data (yyyy-MM-dd)
     * @param endDate  the end date of desired data (yyyy-MM-dd)
     * @return String[][] array of paired dates and water table elevation data.
     * Dates (yyyy-MM-dd format) are in the first column [i][0] and water table elevation (ft) data are in the second [i][1]
     * @throws WaterData.WaterDataException
     */
    public String[][] extractWaterTableElevation_formatted(String stationId, String startDate, String endDate) throws WaterDataException;
    
    /**
     * Extract depth to water table data from the current database
     * @param stationId  the station ID for which depth to water table data is desired
     * @param startDate  the begin date of desired data (yyyy-MM-dd)
     * @param endDate  the end date of desired data (yyyy-MM-dd)
     * @return ArrayList of strings of the raw data
     * @throws WaterDataException
     */
    public ArrayList<String> extractDepthToWaterTable_raw(String stationId, String startDate, String endDate) throws WaterDataException;
    
    /**
     * Extract depth to water table data from the current database
     * @param stationId  the station ID for which depth to water table data is desired
     * @param startDate  the begin date of desired data (yyyy-MM-dd)
     * @param endDate  the end date of desired data (yyyy-MM-dd)
     * @return String[][] array of paired dates and depth to water table data.
     * Dates (yyyy-MM-dd format) are in the first column [i][0] and depth to water table (ft) data are in the second [i][1]
     * @throws WaterDataException
     */
    public String[][] extractDepthToWaterTable_formatted(String stationId, String startDate, String endDate) throws WaterDataException;
}