package jp.cssj.cti.transcoder;

/**
 * トランスコーダーを生成するクラスです。
 * 
 * @author <a href="mailto:miyabe at gnn.co.jp">MIYABE Tatsuhiko </a>
 * @version $Id: TranscoderFactory.java,v 1.5 2005/08/18 04:51:26 harumanx Exp $
 */
public final class TranscoderFactory {
	private TranscoderFactory() {
		// hidden
	}

	/**
	 * このクラスのインスタンスを返します。
	 * 
	 * @return
	 */
	public static TranscoderFactory newTranscoderFactory() {
		return new TranscoderFactory();
	}

	/**
	 * トランスコーダを作成します。
	 * 
	 * @return
	 */
	public Transcoder newTranscoder() {
		try {
			String className = System.getProperty("jp.cssj.cti.transcoder",
					"jp.cssj.cti.ctip.server.TranscoderImpl");
			Class clazz = Class.forName(className);
			return (Transcoder) clazz.newInstance();
		} catch (Exception e) {
			throw new RuntimeException("トランスコーダを作成できません", e);
		}
	}

	/**
	 * SAXハンドラとして実装されたトランスコーダを返します。
	 * 
	 * @return
	 */
	public TranscoderHandler newTranscoderHandler() {
		try {
			String className = System.getProperty("jp.cssj.cti.transcoder",
					"jp.cssj.cti.ctip.server.TranscoderHandlerImpl");
			Class clazz = Class.forName(className);
			return (TranscoderHandler) clazz.newInstance();
		} catch (Exception e) {
			throw new RuntimeException("トランスコーダを作成できません", e);
		}
	}
}