/*
 * Copyright (C) 2005-2006 Kouji Sugisawa. All rights reserved.
 */

package jp.sourceforge.livez.dao.ibatis;

import jp.sourceforge.livez.dao.Imode;
import jp.sourceforge.livez.dao.ImodeDecomail;
import jp.sourceforge.livez.dao.ImodeFlash;
import jp.sourceforge.livez.dao.ImodeIappli;
import jp.sourceforge.livez.dao.ImodeSubscreen;

import org.springframework.dao.DataAccessException;
import org.springframework.orm.ibatis.SqlMapClientTemplate;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;

/**
 * ImodeDAO の iBATIS 版実装クラスです。
 * 
 * @author 杉澤 浩二
 */
public final class ImodeDAO extends SqlMapClientDaoSupport implements jp.sourceforge.livez.dao.ImodeDAO {

	/**
	 * デフォルトコンストラクタです。
	 */
	public ImodeDAO() {}

	/**
	 * 指定された機種名のiモード端末情報を返します。
	 * 対応するiモード端末情報が見つからない場合は <code>null</code> を返します。
	 * 
	 * @param name 機種名
	 * @return iモード端末情報。又は <code>null</code>
	 * @throws DataAccessException DAO の操作で例外が発生した場合
	 */
	@SuppressWarnings("unchecked")
	public Imode load(final String name) throws DataAccessException {
		final SqlMapClientTemplate s = getSqlMapClientTemplate();
		final Imode result = (Imode) s.queryForObject("livez.getImode", name);

		if (result != null) {
			result.setSubscreen((ImodeSubscreen) s.queryForObject("livez.getImodeSubscreen", name));
			result.setIappli((ImodeIappli) s.queryForObject("livez.getImodeIappli", name));
			result.setFlash((ImodeFlash) s.queryForObject("livez.getImodeFlash", name));
			result.setDecomail((ImodeDecomail) s.queryForObject("livez.getImodeDecomail", name));
			result.setFrames(s.queryForList("livez.getImodeFrame", name));
		}

		return result;
	}

}
