/*
 * @(#)GenerateRefresht.java
 *
 * RID-X    : 製作指示書／紙芝居のTOPへリフレッシュするHTMLを生成
 *
 * @author    Intelligent Technology Inc.
 * @version   1.01 2001/12/21
 *
 * Copyright 2001 Nomura Research Institute, LTD. All rights reserved.
 */
package jp.co.nri.rid.generator;

import java.io.*;
import java.util.*;
import org.w3c.dom.*;


import jp.co.nri.rid.mapper.*;
import jp.co.nri.rid.error.*;
import jp.co.nri.rid.snapshot.*;


/**
 * リフレッシュするHTMLを生成
 */
public class GenerateRefresh extends GenerateParser {

/**
  * デフォルトコンストラクタ
  */
    public GenerateRefresh() {
    }


/**
  * リフレッシュの生成
  *
  * @param  String        templateDir     テンプレートファイルのDir
  * @param  String        outDir          出力Dir
  * @param  String        html_name       リフレッシュするHTMLファイル名
  * @return boolean true(成功) / false (失敗)
  */
    public boolean generateRefresh(String templateDir, String outDir, String html_name) throws RidException, Exception {

        boolean ret = false;
        xcopy xc = new xcopy();
        RidMessage ridMsg = new RidMessage();

        // テンプレートファイル
        String template = templateDir + File.separator + puTemplRefresh;
        if (!xc.fileExists(template)) {
            throw new RidException(ridMsg.Error("E4001", template));
        }

        //出力ファイル名
        String out = outDir + File.separator + puOutRefresh;

        //データの生成
        Document temp_data = generateRefreshData(html_name + puOutFrame);

        //HTMLの生成
        Mapper mapper = new Mapper();
        if( !mapper.Type2(template, temp_data, out)) {
            throw new RidException(ridMsg.Error("E4002",mapper.getErrorString()));
        }
        return true;
    }

/**
  * リフレッシュのデータ生成
  *
  * @param  String      refresh_page       ページの名前
  * @return Document    リフレッシュのドュメント
  */
    private Document generateRefreshData(String refresh_page) throws Exception {

        String refresh_html;

        refresh_html = "<meta http-equiv=\"refresh\" content=\"0;URL=" + refresh_page + "\">";

        XmlUtil xu = new XmlUtil();
        Document doc = new org.apache.xerces.dom.DocumentImpl();
        Element topElem = doc.createElement(puRootTag);
        doc.appendChild(topElem);
        xu.createOrSetTextValue(topElem, "refresh", refresh_html);
        return doc;

    }
}
