/*
!=======================================================================
!
!  PROGRAM  PHASE-Viewer  (PHASE-Viewer 2014.01 ver.3.3.0)
!
!  Created on 2006/01/11, 16:02
!  AUTHOR(S): KOGA, Junichiro
!  File : BatExecScript.java
!  
!  Contact address :  Phase System Consortium
!                     E-mail: phase_system@nims.go.jp URL https://azuma.nims.go.jp
!
!
!   Since 2002, this program set had been intensively developed as a part of the following 
!  national projects supported by the Ministry of Education, Culture, Sports, Science and
!  Technology (MEXT) of Japan; "Frontier Simulation Software for Industrial Science
!  (FSIS)" from 2002 to 2005, "Revolutionary Simulation Software (RSS21)" from 2006 to
!  2008. "Research and Development of Innovative Simulation Software (RISS)" from 2008
!  to 2013. These projects is lead by the Center for Research on Innovative Simulation 
!  Software (CISS), the Institute of Industrial Science (IIS), the University of Tokyo.
!   Since 2013, this program set has been further developed centering on PHASE System
!  Consortium. 
!   The activity of development of this program set has been supervised by Takahisa Ohno.
!
!=======================================================================
 */

package ciss.phase_viewer.scripting.scriptexecscripts;

import org.apache.log4j.Logger;

import ciss.phase_viewer.scripting.scriptreplace.ScriptKeywordsReplacer;
import ciss.phase_viewer.settings.GlobalProperties;
import ciss.phase_viewer.settings.PropertiesManager;
import ciss.phase_viewer.ssh.hosts.HostInfo;

/**
 * Batファイルを実行するBatスクリプトを作成.
 * 
 * @author
 */
public class BatExecScript implements ScriptExecScript {
    private Logger logger = Logger.getLogger(BatExecScript.class.getName());
    private GlobalProperties props = PropertiesManager
            .getGlobalProperties(PropertiesManager.PROPERTIES_PVIEWER);

    /** Creates a new instance of BatExecScript */
    public BatExecScript() {
    }

    public String createScriptExecScript(String[] execScripts, HostInfo hostInfo) {
        if (execScripts == null || execScripts.length == 0) {
            return "";
        }
        String[] tmpscripts = new String[execScripts.length];
        for (int i = 0; i < tmpscripts.length; i++) {
            tmpscripts[i] = ScriptKeywordsReplacer.REPLACED_FILE_PREFIX
                    + execScripts[i];
        }
        String ret = "REM script execution script for the windows batch file, created by PHASE-Viewer"
                + System.getProperty("line.separator");
        ret += "cd /D __TARGETDIR__" + System.getProperty("line.separator");
        String call = "call ";
        for (int i = 0; i < tmpscripts.length; i++) {
            ret += call + tmpscripts[i] + System.getProperty("line.separator");
        }

        String remove = props.getProperty("scripting_remove_tmpfiles");
        boolean rem = new Boolean(remove).booleanValue();

        if (rem) {
            java.util.Vector unique = ciss.phase_viewer.common.Utils
                    .removeDupli(tmpscripts);
            if (unique != null) {
                for (int i = 0; i < unique.size(); i++) {
                    ret += "del " + (String) unique.get(i)
                            + System.getProperty("line.separator");
                }
            }
            ret += "del script_exec.bat" + System.getProperty("line.separator");
        }

        return ret;
    }

    public String getScriptExecScriptName(HostInfo hostInfo) {
        return "script_exec.bat";
    }

    public String getScriptExecScriptExecString(String scriptExecScript,
            HostInfo hostInfo) {
        return "\"" + scriptExecScript + "\" > Log";
    }

}
