/*
このファイルの中身は、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) ______________________________________.
*/

//
//	RoleAssignments 管理XMO クライアントクラス
//			変更履歴
//				2004.01.08	新規作成	二條智文

package jp.co.ntt.lms.xmo.RoleAssignments;

import java.rmi.RemoteException;
import java.util.*;

import org.apache.commons.lang.StringEscapeUtils;

import jp.co.ntt.lms.xmo.*;
import jp.co.ntt.lms.xmo.Environment;

/**
 * RoleAssignments 管理XMO クライアントクラスです。<BR>
 * このクラスはAssignments XMO サーバクラスとの接続および、
 * 登録、更新、削除、検索処理に必要なパラメータの設定、検索後の
 * 検索結果の取得メソッドを提供します。<BR>
 * @author T.Nijou
 * @version 0.0.0.1 2004.01.08
 */
public class RoleAssignmentsClient extends XMOBasicClient
	implements RoleAssignmentsTable
{

	private static final String CLASS_NAME = "jp.co.ntt.lms.xmo.RoleAssignments.RoleAssignments";

	/** XMOIDリスト検索メソッド名です */
	private static final String METHOD_SEARCHXMOLIST = "searchXmoList";

	/** XMOIDリストを格納します */
	private String[] mstrXmoList = null;

//	ADD 2005/02/02 START MASUDA [LO一覧(履修済み/中)対応]

	/** RoleAssignmentsリスト検索メソッド名です */
	private static final String METHOD_SELECT = "select";

	/** RoleAssignmentsリストを格納します */
	private Vector selectList = null;

//	ADD 2005/02/02 END MASUDA 

	/**
	 * コンストラクタです。<BR>
	 * 親クラスのコンストラクタを呼び出し、接続先サーバクラス名を
	 * 設定します。
	 */
	public RoleAssignmentsClient() throws Exception {
		super( CLASS_NAME );
	}

	/**
	 * パラメータにアサインIDをセットします
	 */
	public void setRoleAssignID( String strData ) {
		putData( ROLE_ASSIGN_ID, strData );
	}

	/**
	 * アサインIDを取得します
	 */
	public String getRoleAssignID() {
		RoleAssignmentsData objData = (RoleAssignmentsData)getResult();
		return objData.getRoleAssignID();
	}

	/**
	 * パラメータに人々IDをセットします
	 */
	public void setMemberShipID( String strMemberShipID ) {
		putData( MEMBER_SHIP_ID, strMemberShipID );
	}

	/**
	 * 検索結果から現在のインデックスの人々IDを取得します
	 */
	public String getMemberShipID() {
		RoleAssignmentsData objData = (RoleAssignmentsData)getResult();
		return objData.getMemberShipID();
	}

	/**
	 * パラメータにユーザIDをセットします
	 */
	public void setUserID( String strData ) {
		putData( USER_ID, strData );
	}

	/**
	 * ユーザIDを取得します
	 */
	public String getUserID() {
		RoleAssignmentsData objData = (RoleAssignmentsData)getResult();
		return objData.getUserID();
	}

	/**
	 * パラメータにロールIDをセットします
	 */
	public void setRoleID( String strData ) {
		putData( ROLE_ID, strData );
	}

	/**
	 * ロールIDを取得します
	 */
	public String getRoleID() {
		RoleAssignmentsData objData = (RoleAssignmentsData)getResult();
		return objData.getRoleID();
	}

	/**
	 * パラメータにグループIDをセットします
	 */
	public void setGroupID( String strData ) {
		putData( GROUP_ID, strData );
	}

	/**
	 * グループIDを取得します
	 */
	public String getGroupID() {
		RoleAssignmentsData objData = (RoleAssignmentsData)getResult();
		return objData.getGroupID();
	}

	/**
	 * パラメータに処理モードをセットします
	 */
	public void setMode( String strMode ) {
		putData( MODE_KEY, strMode );
	}

	/**
	 * グループIDを検索条件に付与します
	 * デフォルトで"="条件をつけます
	 * @param strGroupID	グループID
	 */
	public void setWhereUserID( String strUserID ) {
		String strCondition = USER_ID + SEARCH_EQUALS + "'" + StringEscapeUtils.escapeSql(strUserID) + "' ";
		setCondition( strCondition );
	}

	/**
	 * 権限IDを検索条件に付与します
	 * デフォルトで"="条件をつけます
	 * @param strRoleID	権限ID
	 */
	public void setWhereRoleID( String strRoleID ) {
		String strCondition = ROLE_ID + SEARCH_EQUALS + "'" + StringEscapeUtils.escapeSql(strRoleID) + "' ";
		setCondition( strCondition );
	}

	/**
	 * グループIDを検索条件に付与します
	 * デフォルトで"="条件をつけます
	 * @param strGroupID	グループID
	 */
	public void setWhereGroupID( String strGroupID ) {
		String strCondition = GROUP_ID + SEARCH_EQUALS + "'" + StringEscapeUtils.escapeSql(strGroupID) + "' ";
		setCondition( strCondition );
	}

	/**
	 * MemberShipIDを検索条件に付与します
	 * デフォルトで"="条件をつけます
	 * @param strMemberShipID	MemberShipID
	 */
	public void setWhereMemberShipID( String strMemberShipID ) {
		String strCondition = MEMBER_SHIP_ID + SEARCH_EQUALS + "'" + StringEscapeUtils.escapeSql(strMemberShipID) + "' ";
		setCondition( strCondition );
	}

	/**
	 * 権限割当IDを検索条件に付与します
	 * デフォルトで"="条件をつけます
	 * @param strRoleAssignID	権限割当ID
	 */
	public void setWhereRoleAssignID( String strRoleAssignID ) {
		String strCondition = ROLE_ASSIGN_ID + SEARCH_EQUALS + "'" + StringEscapeUtils.escapeSql(strRoleAssignID) + "' ";
		setCondition( strCondition );
	}

	/**
	 * RoleAssignmentsIDでOrderbyをかけて検索します
	 */
	public void setOrderByRoleAssID() throws XMOException {
		try{
			//XMS.iniファイルロードクラスのインスタンス
			Environment objEnv = new Environment();
			//SQLServerの場合
			if(objEnv.getDBType().equals( objEnv.DB_SQLSERVER )){
				setOrderBy( "CONVERT(INT," + ROLE_ASSIGN_ID + ")");
				//Oracleの場合
			}else if(objEnv.getDBType().equals( objEnv.DB_ORACLE )){
				setOrderBy( "TO_NUMBER(" + ROLE_ASSIGN_ID + ")" );
			}
		}
		catch ( Exception e ) {
			throw new XMOException( e.getMessage() );
		}
	}

	/**
	 * 削除するuser_idを設定する。<BR>
	 * 共通処理管理 ログ削除処理で使用する。
	 *
	 * @param strID user_id
	 */
	public void setDeleteUserID( String strID ) {
		putData( DELETE_USER_ID, strID );
	}

	/**
	 * 削除するuser_idを設定する。<BR>
	 * 共通処理管理 ログ削除処理で使用する。
	 *
	 * @param strID group_id
	 */
	public void setDeleteGroupID( String strID ) {
		putData( DELETE_GROUP_ID, strID );
	}

	/**
	 * XMOIDリストを検索します。<BR>
	 * ターゲットIDを指定することで、そのターゲットIDに関連する権限のXMOIDリストを取得します。<BR>
	 * たとえば、ターゲットIDにユーザを指定した場合、そのユーザが所属するグループに割り当たっている
	 * XMOIDリストを取得できます。
	 * @param strUserID ユーザID
	 * @param strTargetID ターゲットID
	 * @exception Exception RMI接続エラー
	 */
	public boolean searchXmoList( String strUserID, String strTargetID )
		throws Exception
	{
		// ユーザIDの設定
		if( strUserID != null ) {
			setUserID( strUserID );
		}
		// グループIDの設定
		if( strTargetID != null ) {
			putData( TARGET_ID, strTargetID );
		}


		// メニュー取得
		Vector vecXmoList = (Vector)super.execute( METHOD_SEARCHXMOLIST, htParams );

		// メッセージデータを取得します
		MessageData objMessage = (MessageData)vecXmoList.get(0);

		mobjMessage = objMessage;
		if( mobjMessage != null ) {
			return false;
		}

		// 内部変数に結果を格納
		if( vecXmoList.size() > 0 ) {
			mstrXmoList = (String[])vecXmoList.get(1);
		}

		return true;
	}

	/**
	 * XMOIDリストを取得します。
	 * @return String[] XMOIDリスト(検索メソッドが未実行の場合はnullを返します。)
	 */
	public String[] getXmoList() {
		return mstrXmoList;
	}

//	ADD 2005/02/02 START MASUDA [LO一覧(履修済み/中)対応]
	/**
	 * RoleAssignmentsリストを検索します。<BR>
	 * ユーザIDを指定することで、そのユーザIDに関連するRoleAssignmentsリストを取得します。<BR>
	 * @param strUserID ユーザID
	 * @exception Exception RMI接続エラー
	 */
	public boolean searchList( String strUserID )
		throws Exception
	{
		// ユーザIDの設定
		if( strUserID != null ) {
			setWhereUserID( strUserID );
		}
		// 取得
		Vector vecXmoList = (Vector)super.execute( METHOD_SELECT, htParams );

		// メッセージデータを取得します
		MessageData objMessage = (MessageData)vecXmoList.get(0);

		mobjMessage = objMessage;
		if( mobjMessage != null ) {
			return false;
		}

		// 内部変数に結果を格納
		selectList = (Vector)vecXmoList;

		return true;
	}

	/**
	 * RoleAssignmentsリストを取得します。
	 * @return String[] RoleAssignmentsリスト(検索メソッドが未実行の場合はnullを返します。)
	 */
	public Vector getsearchList() {
		return selectList;
	}
//	ADD 2005/02/02 END MASUDA 

}

