package jp.mosp.common.part;

import java.sql.SQLException;
import java.util.List;

import jp.mosp.common.dao.CmComponentDao;
import jp.mosp.common.dto.CmComponentDto;

/**
 * メニューに関するPartクラス
 * @author yoshida
 * 	@version	0.0.2
 */
public class ComponentPart extends BasePart {

	/**
	 * コンストラクタ
	 */
	public ComponentPart() {
		super();
	}

	/**
	 * コンストラクタ
	 * @param partInfo
	 */
	public ComponentPart(PartInfo partInfo) {
		super(partInfo);
	}

	/**
	 * CM_COMPONENTテーブル用のDAO取得
	 * @return	初期化済みCmComponentDaoインスタンス
	 * @throws Exception
	 */
	public CmComponentDao getCmComponentDao() throws Exception {
		return (CmComponentDao)getPreparedDao(CmComponentDao.class.getCanonicalName());
	}

	/**
	 * メニュー構成情報取得
	 * @param compcode		対象コマンドユニットコード
	 * @param division		対象分類コード
	 * @return	メニュー構成情報
	 * @throws Exception
	 */
	public CmComponentDto findForDto(String compcode, String division) throws Exception {
		return getCmComponentDao().findForDto(compcode, division);
	}

	/**
	 * メニュー構成情報取得
	 * @param compcode		対象コマンドユニットコード
	 * @return				メニュー構成情報
	 * @throws Exception
	 */
	public CmComponentDto findForKey(String compcode) throws Exception {
		return getCmComponentDao().findForKey(compcode);
	}

	/**
	 * メニュー構成情報取得
	 * @param compcode		対象コマンドユニットコード
	 * @return				メニュー構成情報
	 * @throws Exception
	 */
	public CmComponentDto findForComponent(String compcode) throws Exception {
		return getCmComponentDao().findForComponent(compcode);
	}

	/**
	 * 分類別権限区分取得(CM_COMPONENT)
	 * @since	0.0.2
	 * @param division 分類
	 * @return コード配列[][]<br>
	 * 			[0]tcode<br>
	 * 			[1]tname<br>
	 * @throws SQLException
	 * @throws NoSuchFieldException
	 * @throws IllegalAccessException
	 */
	public String[][] getDivisionAuthArray(String division) throws Exception {
		// コードの取得
		List<CmComponentDto> list = getCmComponentDao().findForAvailable(division);     
		String[][] aryCode = new String[list.size()][2];
		// Stingの配列に格納
		for (int i = 0; i < list.size(); i++) {
			aryCode[i][0] = list.get(i).getCompCode();
			aryCode[i][1] = list.get(i).getCompName();
		}
		return aryCode;
	}

	/**
	 * 分類別権限区分取得(CM_COMPONENT)
	 * @since	0.0.2
	 * @param division 分類
	 * @return コード配列[][]<br>
	 * 			[0]tcode<br>
	 * 			[1]tname<br>
	 * @throws SQLException
	 * @throws NoSuchFieldException
	 * @throws IllegalAccessException
	 */
	public String[][] getDivisionAuthAllArray(String division) throws Exception {
		// コードの取得
		List<CmComponentDto> list = getCmComponentDao().findForCondition(division);     
		String[][] aryCode = new String[list.size()][2];
		// Stingの配列に格納
		for (int i = 0; i < list.size(); i++) {
			aryCode[i][0] = list.get(i).getCompCode();
			aryCode[i][1] = list.get(i).getCompName();
		}
		return aryCode;
	}

}
