/*
このファイルの中身は、NTT オープンソースライセンス　バージョン 1.0（「本
契約」という）の適用を受けます。
本契約を遵守しない限り、このファイルを使用してはなりません。
本契約のコピーは、次のＵＲＬから入手できます。
【配布サイトのURL】 http://www.oss.ecl.ntt.co.jp/lms/

本契約に基づき頒布されるソフトウェアは、現状のまま、明示又は黙示のあらゆ
る種類の保証なしで、頒布されます。本契約に基づく権利及び制限を律する特定
の文言については、本契約を参照してください。

「オリジナルコード」は、 NTT Cyber Space Laboratories Code です。 
「オリジナルコード」の「初期開発者」は、日本電信電話株式会社です。  
日本電信電話株式会社により創作された部分は、Copyright (C) 2004 
日本電信電話株式会社 です。
全ての権利が留保されます。 
「コントリビュータ」：_____________________________________ 


The contents of this file are subject to the NTT Opensource License
Version 1.0 (the License); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
【配布サイトのURL】 http://www.oss.ecl.ntt.co.jp/lms/

Software distributed under the License is distributed on an AS IS
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
License for the specific language governing rights and limitations
under the License.

The Original Code is NTT Cyber Space Laboratories Code .

The Initial Developer of the Original Code is NIPPON TELEGRAPH AND 
TELEPHONE CORPORATION.
Portions created by the NIPPON TELEGRAPH AND TELEPHONE CORPORATION 
are Copyright (C) 2004 NIPPON TELEGRAPH AND TELEPHONE CORPORATION. 
All Rights Reserved.

Contributor(s) ______________________________________.
*/

package jp.co.ntt.lms.lo;

import jp.co.ntt.lms.xmo.MenuData;

import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.Vector;
import java.util.Hashtable;

/**
 * Loリモートインタフェースです。<BR>
 * すべてのLoはこのインタフェースを実装する必要があります。<BR>
 * @author T.Nijou
 * @version 0.0.0.1 2004/01/08
 */
public interface LoTop extends Remote {

// ここから下Lo共通処理

	/**
	 * メニューリストを返します
	 * @param htbParam パラメータ
	 * @return Vector メッセージデータとメニューリスト
	 */
	public Vector getMenuList(Hashtable htbParam) throws RemoteException;

	/**
	 * Lo登録時のLoのセットアップを行います<BR>
	 * Loを登録した時に処理が必要なLOはこのメソッド内に処理を記述してください。
	 * @param htbParam パラメータ
	 * @return Vector メッセージデータと結果
	 */
	public Vector setUp( Hashtable htbParam ) throws RemoteException;

	/**
	 * 教材の開始処理を行います
	 * @param htbParam パラメータ
	 * @return Vector メッセージデータと結果
	 */
	public Vector startLearn( Hashtable htbParam ) throws RemoteException;

	/**
	 * 教材の終了時処理を行います
	 * @param htbParam パラメータ
	 * @return Vector メッセージデータと結果
	 */
	public Vector endLearn( Hashtable htbParam ) throws RemoteException;

	/**
	 * 各Loに登録されているメソッドを起動します
	 * @param strMehodName 起動するメソッド名
	 * @param objParams 起動するメソッドのパラメータ
	 * @return Vector メッセージデータとメソッドの戻り値
	 */
	public Vector execute( String strMethodName, Hashtable objParams ) throws RemoteException;

	/**
	 * 共通ログデータ取得用のメソッドです。
	 * @param htbParam パラメータ
	 * @return Vector メッセージデータと結果
	 */
	public Vector getLoLog( Hashtable htbParam ) throws RemoteException;

	/**
	 * 教材構造取得用のメソッドです。
	 * @param objParams 起動するメソッドのパラメータ
	 * @return Vector メッセージデータとメソッドの戻り値
	 */
	public Vector getMaterialStruct(Hashtable objParams) throws RemoteException;


// ここから下がLo個別処理

	/**
	 * 教材リストを返します
	 * @param htbParam パラメータ
	 * @return Vector メッセージデータと教材リスト
	 */
	public Vector getMaterialList(Hashtable htbParam) throws RemoteException;

	/**
	 * メソッドリストを返します
	 * @param htbParam パラメータ
	 * @return Vector メッセージデータとメソッドリスト
	 */
	public Vector getMethodList(Hashtable htbParam) throws RemoteException;

	/**
	 * デフォルトメニューURLを返します
	 * @param htbParam パラメータ
	 * @return Vector メッセージデータとデフォルトメニュー情報
	 */
	public Vector getDefaultMenu(Hashtable htbParam) throws RemoteException;

	/**
	 * 個別ログデータ取得用のメソッドです。
	 * @param htbParam パラメータ
	 * @return Vector メッセージデータと結果
	 */
	public Vector getIndividualLog( Hashtable htbParam ) throws RemoteException;

	/**
	 * 個別ログデータ削除用のメソッドです。
	 * @param htbParam パラメータ
	 * @return Vector メッセージデータと結果
	 */
	public Vector deleteIndividualLog( Hashtable htbParam ) throws RemoteException;

	/**
	 * 個別ログデータ更新用のメソッドです。
	 * @param htbParam パラメータ
	 * @return Vector メッセージデータと結果
	 */
	public Vector changeTypeUpdateIndividualLog( Hashtable htbParam ) throws RemoteException;

	/**
	 * LO個別データを取得します
	 * @param htbParam パラメータ
	 * @return Vector データ
	 */
	public Vector getData( Hashtable htbParam ) throws RemoteException;

	/**
	 * ステータス伝播データを取得します
	 * @param htbParam パラメータ
	 * @return Vector データ
	 */
	public Vector getPropagateRelation( Hashtable htbParam ) throws RemoteException;

	/**
	 * LO情報をコピーします
	 * @param htbParam パラメータ
	 * @return Vector データ
	 */
	public Vector doCopy( Hashtable htbParam ) throws RemoteException;

	/**
	 * 教材構造ファイル取得用のメソッドです。
	 * @param objParams 起動するメソッドのパラメータ
	 * @return Vector メッセージデータとメソッドの戻り値
	 */
	public Vector getMaterialStructFile(Hashtable objParams) throws RemoteException;

	/**
	 * 個別ログ(CSV)データ取得用のメソッドです。
	 * @param htbParam パラメータ
	 * @return Vector メッセージデータと結果
	 */
	public Vector getIndividualLogCSV( Hashtable htbParam ) throws RemoteException;
}
