/*
* Copyright 2004-2015 the Seasar Foundation and the Others.
*
* 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.seasar.framework.unit;
import org.seasar.extension.dataset.DataSet;
import org.seasar.extension.dataset.DataTable;
/**
* Excelファイルやデータベースにアクセスします。
* <p>
* 通常、このインターフェースの実装クラスは<code>s2junit4.dicon</code>に定義されます。
* </p>
*
* @author taedium
*
*/
public interface DataAccessor {
/**
* Excelファイルから読み込みんだデータを返します。
*
* @param path
* Excelファイルのパス
* @return データセット
*/
DataSet readXls(String path);
/**
* Excelファイルから読み込みんだデータを返します。
*
* @param path
* Excelファイルのパス
* @param trimString
* 文字列に含まれる空白を取り除く場合<code>true</code>
* @return データセット
*/
DataSet readXls(String path, boolean trimString);
/**
* データセットのデータをExcelに書き込みます。
*
* @param path
* Excelファイルのパス
* @param dataSet
* データセット
*/
void writeXls(String path, DataSet dataSet);
/**
* データセットのデータをデータベースに書き込みます。
*
* @param dataSet
* データセット
*/
void writeDb(DataSet dataSet);
/**
* データベースから読み込んだデータを返します。
* <p>
* 読み込む対象とするテーブルはデータセットの情報から特定します。
* </p>
*
* @param dataSet
* データセット
* @return 新しいデータセット
*/
DataSet readDb(DataSet dataSet);
/**
* テーブル名を指定してデータベースから読み込んだデータを返します。
*
* @param table
* テーブル名
* @return データテーブル
*/
DataTable readDbByTable(String table);
/**
* テーブル名と条件を指定してデータベースから読み込んだデータを返します。
*
* @param table
* テーブル名
* @param condition
* 条件
* @return データテーブル
*/
DataTable readDbByTable(String table, String condition);
/**
* SQLを指定してデータベースから読み込んだデータを返します。
*
* @param sql
* SQL
* @param tableName
* テーブル名
* @return データテーブル
*/
DataTable readDbBySql(String sql, String tableName);
/**
* 指定されたExcelファイルのデータをデータベースに書き込みます。
*
* @param path
* Excelファイルのパス
*/
void readXlsWriteDb(String path);
/**
* 指定されたExcelファイルのデータをデータベースに書き込みます。
*
* @param path
* Excelファイルのパス
* @param trimString
* 文字列に含まれる空白を取り除く場合<code>true</code>
*/
void readXlsWriteDb(String path, boolean trimString);
/**
* 指定されたExcelファイルのデータでデータベースのテーブルの特定行を置換します。
*
* @param path
* Excelファイルのパス
*/
void readXlsReplaceDb(String path);
/**
* 指定されたExcelファイルのデータでデータベースのテーブルの特定行を置換します。
*
* @param path
* Excelファイルのパス
* @param trimString
* 文字列に含まれる空白を取り除く場合<code>true</code>
*/
void readXlsReplaceDb(String path, boolean trimString);
/**
* 指定されたExcelファイルのデータでデータベースのテーブルの全行を置換します。
*
* @param path
* Excelファイルのパス
*/
void readXlsAllReplaceDb(String path);
/**
* 指定されたExcelファイルのデータでデータベースのテーブルの全行を置換します。
*
* @param path
* Excelファイルのパス
* @param trimString
* 文字列に含まれる空白を取り除く場合<code>true</code>
*/
void readXlsAllReplaceDb(String path, boolean trimString);
/**
* 主キーを条件としてデータベースのデータを再読み込みし、新しいデータを返します。
*
* @param dataSet
* データセット
* @return 新しいデータセット
*/
DataSet reload(DataSet dataSet);
/**
* 主キーを条件としてデータベースのテーブルのデータを再読み込みし、新しいデータを返します。
*
* @param table
* データテーブル
* @return 新しいデータテーブル
*/
DataTable reload(DataTable table);
/**
* データセットに主キーが存在する場合は主キーを条件に再読み込みし、含まれていない場合は全件を読み込みます。
* 再読み込み、または読み込みはデータテーブルごとに行い新しいデータを返します。
*
* @param dataSet
* データセット
* @return 新しいデータセット
*/
DataSet reloadOrReadDb(DataSet dataSet);
/**
* 主キーを条件にしてデータベースのデータを削除します。
*
* @param dataSet
* データセット
*/
void deleteDb(DataSet dataSet);
/**
* 指定されたテーブルのデータをデータベースから削除します。
*
* @param tableName
* テーブル名
*/
void deleteTable(String tableName);
}