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

package jp.sourceforge.livez.dao.hibernate;

import jp.sourceforge.livez.dao.Imode;

import org.springframework.dao.DataAccessException;
import org.springframework.orm.ObjectRetrievalFailureException;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

/**
 * ImodeDAO の Hibernate 3 版実装クラスです。
 * 
 * @author 杉澤 浩二
 */
public final class ImodeDAO extends HibernateDaoSupport 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 HibernateTemplate ht = getHibernateTemplate();
		try {
			final Imode result = (Imode) ht.load(Imode.class, name);
			result.setFrames(ht.find("FROM ImodeFrame WHERE name = ? ORDER BY width, height", name));
			return result;
		} catch (ObjectRetrievalFailureException e) {
			return null;
		}
	}

}
