/*
 * @(#)Mapper.java
 *
 * RID-X : Mapper
 *
 * @author  Intelligent Technology Inc.
 * @version 1.01 2002/02/15
 *
 * Copyright 2001 Nomura Research Institute, LTD. All rights reserved.
 */

package jp.co.nri.rid.mapper;


import org.w3c.dom.*;
import jp.co.nri.rid.error.RidException;


/**
 * Mapper
 */
public class Mapper {

    //
    private static String pr_errorString;   // エラーメッセージ

/**
  * コンストラクタ
  *
  */
    public Mapper() {
        //クリア
        pr_errorString = "";
    }



/******************************************************************************/



/**
  * (Mapper_Type1)
  *
  *   Mapファイルに記述された内容をもとに
　*   Inputファイルの指定されたタグに、指定された属性と値を追加する
  *
  * @param  String      in_file         INPUTファイル   (HTML形式)
  * @param  String      map_file        MAPファイル     (XML 形式)
  * @param  Document    data_doc        DATAのDocument  (XML 形式)
  * @param  String      out_file        OUTPUTファイル  (HTML形式)
  *
  * @return boolean     true(成功) / false (失敗)
　*--------------------------------------------------------------------------
  *
  *  #InputFile
  *   
  *   <a name="top"> トップページ </a>
  *
  *  #MapFile
  *
  *   <MapAttr srcTag="a" srcKey="name" dataTag="PageData" dataKey="name">
  *       <MapAttrData inTag="URL" outAttr="hrer"/>
  *   </MapAttr>
  *
  *   srcTag  : inputFileのタグ名
  *   srcKey  : inputFileの属性キー
  *   dataTag : dataFileのタグ名
  *   dataKey : dataFileの属性キー
  *   inTag   : dataFileのデータタグ名
  *   outAttr : inputFileに追加する属性名
  *
  *       キー：srcKeyの値とdataKeyの値が同じもの
  *
  *  #DataFile
  *
  *   <PageData name="top">
  *     <URL>../topFrame.html</URL>
  *   </PageData>
  *
  *  #OutputFile
  *   
  *   <a name="top" hrer="../topFrame.html"> トップページ </a>
  */
    public boolean Type1(String in_file, String map_file, Document data_doc, String out_file)  throws RidException {

        boolean ret;

        MapperType1 mt1 = new MapperType1();
        ret  = mt1.Type1(in_file, map_file,  data_doc,  out_file);
 
        return ret;
    }

/**
  * (Mapper_Type1　DOM版)
　*
  *   Mapファイルに記述された内容をもとに
　*   Input XMLに指定されたタグに、指定された属性と値を追加する
  *   InputXmlを修正するので、新規にXMLを生成しない
  *
  * @param  Element     in_Element      INPUT XMLのルートエレメント
  * @param  String      map_file        MAPファイル     (XML 形式)
  * @param  Element     data_Element    DATA XMLのルートエレメント
  *
  * @return boolean     true(成功) / false (失敗)
  *----------------------------------------------------------------------------
  *
  *  #InputFile
  *   
  *   <a name="top"> トップページ </a>
  *
  *  #MapFile
  *
  *   <MapAttr srcTag="a" srcKey="name" dataTag="PageData" dataKey="name">
  *       <MapAttrData inTag="URL" outAttr="hrer"/>
  *   </MapAttr>
  *
  *   srcTag  : inputFileのタグ名
  *   srcKey  : inputFileの属性キー
  *   dataTag : dataFileのタグ名
  *   dataKey : dataFileの属性キー
  *   inTag   : dataFileのデータタグ名
  *   outAttr : inputFileに追加する属性名
  *
  *       キー：srcKeyの値とdataKeyの値が同じもの
  *
  *  #DataFile
  *
  *   <PageData name="top">
  *     <URL>../topFrame.html</URL>
  *   </PageData>
  
  */
    public boolean Type1Xml(Element in_Element, String map_file, Element data_Element) throws RidException {

        boolean ret;
        MapperType1 mt1 = new MapperType1();
        ret  = mt1.Type1Xml(in_Element, map_file, data_Element);
        return ret;
    }

/**
  * (Mapper_Type2)
  *
  * テンプレートファイル（HTML)の<Rid_Tmp>タグを
　* DATAドキュメントの値に置換して、指定されたファイルに出力する
  *
  * @param  String      in_file         INPUTファイル   (HTML形式)
  * @param  Document　  data_doc        DATAドキュメント(XML 形式)
  * @param  String      out_file        OUTPUTファイル  (HTML形式)
  *
  * @return boolean     true(成功) / false (失敗)
  */
    public boolean Type2(String in_file, Document data_doc, String out_file)  throws RidException {

        boolean ret;
        MapperType2 mt2 = new MapperType2();
        ret  = mt2.Type2(in_file,  data_doc, out_file);
        return ret;
   }

    public boolean TypeScript(String in_file, Document data_doc, String out_file)  throws RidException {

        boolean ret;
        MapperType2 mt2 = new MapperType2();
        ret  = mt2.TypeScript(in_file,  data_doc, out_file);
        return ret;
   }

/**
  * (Mapper_Type3)
  *
  * テンプレートファイル（HTML)の<MapRepeat>タグを
　* DATAドキュメントの値に置換して、指定されたファイルに出力する
  * ※<MapRepeat>---</MapRepeat>を繰り返し可能
  *
  * @param  String      in_file         INPUTファイル   (HTML形式)
  * @param  Document　  data_doc        DATAドキュメント(XML 形式)
  * @param  String      out_file        OUTPUTファイル  (HTML形式)
  *
  * @return boolean     true(成功) / false (失敗)
  */
    public boolean Type3(String in_file,  Document data_doc, String out_file) throws RidException {
        boolean ret;

        MapperType3 mt3 = new MapperType3();
        ret  = mt3.Type3(in_file,  data_doc, out_file);
        return ret;
    }

/**
  * エラーメッセージの設定
  *
  * @param  String      errorString     エラーメッセージ
  * @return void
  */
    private void setErrorString(String errorString) {
        pr_errorString = errorString;
    }

/**
  * エラーメッセージの取得
  *
  * @return String      エラーメッセージ
  */
    public String getErrorString() {
        return pr_errorString;
    }

}