/*
 * MosP - Mind Open Source Project         http://www.mosp.jp/
 * Copyright (C) 1987-2009 MIND Co., Ltd.  http://www.e-mind.co.jp/
 * 
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 */
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;
	}

}
