/*  OpenOlap viewer
 *  パッケージ名：openolap.viewer.dao
 *  ファイル：ReportDAO.java
 *  説明：レポートオブジェクトの永続化を管理するインターフェースです。
 *
 *  作成日: 2004/01/07
 */
package openolap.viewer.dao;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;

import openolap.viewer.Report;
import openolap.viewer.common.CommonSettings;
import openolap.viewer.controller.RequestHelper;

/**
 *  インターフェース：ReportDAO
 *  説明：レポートオブジェクトの永続化を管理するインターフェースです。
 */
public interface ReportDAO {

	/**
	 * 未使用のレポートIDを取得を求める。
	 * @param conn Connectionオブジェクト
	 * @return 未使用のレポートID
	 * @exception SQLException 処理中に例外が発生した
	 */
	public String getInitialReportID(Connection conn) throws SQLException;

	/**
	 * クライアントから送信されたデフォルトメンバー、軸の配置情報をモデルのレポートオブジェクトに反映する。
	 *   パラメータ名）
	 *     defaultMembers：全軸のデフォルトメンバー情報
	 *     colItems：列エッジに配置された軸のID
	 *     rowItems：行エッジに配置された軸のID
	 *     pageItems：ページエッジに配置された軸のID
	 * @param helper RequestHelperオブジェクト
	 * @param commonSettings アプリケーションの共通設定オブジェクト
	 */
	public void registAxisPosition(RequestHelper helper, CommonSettings commonSettings);

	/**
	 * レポートの軸のエッジ配置情報を更新する。
	 * @param colItemList 列に配置された軸IDリスト
	 * @param rowItemList 行に配置された軸IDリスト
	 * @param pageItemList ページに配置された軸IDリスト
	 * @param report レポートをあらわすオブジェクト
	 * @param commonSettings アプリケーションの共通設定オブジェクト
	 */
	public void registAxisPosition(ArrayList colItemList, ArrayList rowItemList, ArrayList pageItemList, Report report);

	/**
	 * レポート情報をデータソースへ保存する。
	 * @param report レポートをあらわすオブジェクト
	 * @param conn Connectionオブジェクト
	 * @exception SQLException 処理中に例外が発生した
	 */
	public void saveReport(Report report, Connection conn) throws SQLException;

	/**
	 * キューブシーケンス番号をもとに、レポートオブジェクトを生成する。
	 * @param cubeSeq キューブシーケンス番号
	 * @param commonSettings アプリケーションの共通設定オブジェクト
	 * @return レポートオブジェクト
	 * @exception SQLException 処理中に例外が発生した
	 */
	public Report getInitialReport(String cubeSeq, CommonSettings commonSettings) throws SQLException;

	/**
	 * レポートIDをもとに既存のレポートオブジェクトを求める。
	 * @param reportId レポートID
	 * @param helper RequestHelperオブジェクト
	 * @param commonSettings アプリケーションの共通設定オブジェクト
	 * @return レポートオブジェクト
	 * @exception SQLException 処理中に例外が発生した
	 */
	public Report getExistingReport(String reportId, RequestHelper helper, CommonSettings commonSettings) throws SQLException;

	/**
	 * クライアントから送信されたレポートの名称、親フォルダ情報をモデルのレポートオブジェクトに反映する。
	 *   パラメータ名）
	 *     reportName：レポート名
	 *     folderID：レポートを格納するフォルダのID
	 * @param helper RequestHelperオブジェクト
	 * @param commonSettings アプリケーションの共通設定オブジェクト
	 */
	public void registReport(RequestHelper helper, CommonSettings commonSettings);

}
