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

	/**
	 * 変換する
	 */
	public function transform( DTO $in_data, IModel $in_model, DTO $out_data, IModel $out_model )
	{
		if ( $in_model === NULL || $out_model === NULL || get_class($in_model) === get_class($out_mode) ){
			$out_data = clone $in_data;
			return $out_data;
		}

		// コピー元モデルのフィールド一覧を取得
		$field_list = $out_model->getFieldList();

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

			// 変換先にフィールドが定義されているかチェック
			if ( !$out_model->fieldExists( s($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;
	}


}

return __FILE__;