<?php
/**
* 単純なトランスフォーマ
*
* PHP version 5
*
* @package    components.db
* @author     stk2k <stk2k@sazysoft.com>
* @copyright  2008 stk2k, sazysoft
*/
class SimpleTransformer implements ITransformer
{
	/*
	 * コンストラクタ
	 */
	public function __construct()
	{
	}

	/**
	 * トランスフォーマ名
	 */
	public function getTransformerName()
	{
		return "Simple Transformer";
	}

	/**
	 * トランスフォーマを初期化する
	 */
	public function init( Config $config )
	{
	}

	/**
	 * 変換する
	 */
	public function transform( DTO $in_data, IModel $in_model, DTO $out_data, IModel $out_model )
	{
		// コピー元モデルのフィールド一覧を取得
		$field_list = $out_model->getFieldList();

		// フィールドごとにコピー
		foreach( $field_list as $field ){

			// 変換先にフィールドが定義されているかチェック
			if ( !$out_model->fieldExists($field) ){
				// 存在していない場合は変換エラー
				throw new TransformException( $in_model, $out_model, "OUT model doesn't have a field[$field]" );
			}

			// そのままコピー
			$out_data->$field = $in_data->$field;
		}

		return $out_data;
	}


}
