001/* 002 * Copyright (c) 2009 The openGion Project. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 013 * either express or implied. See the License for the specific language 014 * governing permissions and limitations under the License. 015 */ 016package org.opengion.hayabusa.report; 017 018import org.opengion.fukurou.util.Shell; 019import org.opengion.hayabusa.common.HybsSystem; 020import org.opengion.hayabusa.db.DBTableModel; 021 022/** 023 * CSVPrintPoint インターフェース のデフォルト実装クラスです。 024 * execute() をオーバーライドして、各種CSV取込み方式のシステムに対応して下さい。 025 * 026 * @og.group 帳票システム 027 * 028 * @version 5.0 029 * @author Masakazu Takahashi 030 * @since JDK6.0, 031 */ 032public abstract class AbstractCSVPrintPointService implements CSVPrintPointService { 033 034 protected String ykno = null; 035 protected String systemId = null; 036 protected String fgrun = null; 037 protected String hostName = null; 038 protected String prtName = null; 039 protected DBTableModel table = null; 040 protected DBTableModel tableH = null; 041 protected DBTableModel tableF = null; 042 protected String prgdir = null; 043 protected String prgfile = null; 044 protected String outdir = null; 045 protected String prtid = null; 046 protected String portnm = null; 047 protected String listid = null; 048 protected String modelname = null; 049 protected String csvOutdir = null; 050 051 protected final StringBuilder errMsg = new StringBuilder(); // エラーメッセージ 052 protected String fgkan = GE50Access.FG_ERR2; // 初期値はアプリエラー 053 054 protected int TIMEOUT = HybsSystem.sysInt( "REPORT_DAEMON_TIMEOUT" ); //Shellタイムアウト 055 protected String shellCmd = null; 056 057 protected final static String FGRUN_EXCEL = "H"; 058 protected final static String FGRUN_PDF = "I"; 059 060 private static final String CR = System.getProperty("line.separator"); 061 062 /** 063 * 発行処理 064 * 対象のシステムに応じてこのメソッドをオーバーライドします 065 * 実行後はfgkanの値を正しい値でセットしなおして下さい。 066 * 067 * @return 結果 [true:正常/false:異常] 068 */ 069 public abstract boolean execute(); 070 071 /** 072 * 帳票起動された要求番号をセットします。 073 * 074 * @param no 要求NO 075 */ 076 public void setYkno( final String no ) { 077 ykno = no; 078 } 079 080 /** 081 * システムIDをセットします。 082 * 083 * @param id システムID 084 */ 085 public void setSystemId( final String id ) { 086 systemId = id; 087 } 088 089 /** 090 * 実行方法をセットします。 091 * 092 * @param flag 実行方法 093 */ 094 public void setFgrun( final String flag ) { 095 fgrun = flag; 096 } 097 098 /** 099 * 帳票デーモンが実行されているホスト名をセットします。 100 * 101 * @param host ホスト名 102 */ 103 public void setHostName( final String host ) { 104 hostName = host; 105 } 106 107 /** 108 * プリンター名をセットします。 109 * 110 * @param printerName プリンタ名 111 */ 112 public void setPrinterName( final String printerName ) { 113 prtName = printerName; 114 } 115 116 /** 117 * DBTableModel をセットします。 118 * 119 * @param tbl DBTableModelオブジェクト 120 */ 121 public void setTable( final DBTableModel tbl ) { 122 table = tbl; 123 } 124 125 /** 126 * DBTableModel をセットします。 127 * 128 * @param tbl DBTableModelオブジェクト 129 */ 130 public void setTableH( final DBTableModel tbl ) { 131 tableH = tbl; 132 } 133 134 /** 135 * DBTableModel をセットします。 136 * 137 * @param tbl DBTableModelオブジェクト 138 */ 139 public void setTableF( final DBTableModel tbl ) { 140 tableF = tbl; 141 } 142 143 /** 144 * 起動するバッチ等のプログラム(ディレクトリ)をセットします。 145 * 146 * @param dir バッチプログラムディレクトリ 147 */ 148 public void setPrgDir( final String dir ){ 149 prgdir = dir; 150 } 151 152 /** 153 * 起動するバッチ等のプログラムをセットします。 154 * 空の場合は起動しません。 155 * 156 * @param file バッチプログラム名 157 */ 158 public void setPrgFile( final String file ){ 159 prgfile = file; 160 } 161 162 /** 163 * ファイル出力時のディレクトリを指定します 164 * 165 * @param dir ファイル出力ディレクトリ 166 */ 167 public void setOutDir( final String dir ){ 168 outdir = dir; 169 } 170 171 /** 172 * プリンタIDを指定します 173 * 174 * @param id プリンタID 175 */ 176 public void setPrtId( final String id ){ 177 prtid = id; 178 } 179 180 /** 181 * プリンタのポート名 182 * 183 * @param port ポート名 184 */ 185 public void setPortnm( final String port ){ 186 portnm = port; 187 } 188 189 /** 190 * 帳票IDをセットします 191 * 192 * @param id 帳票ID 193 */ 194 public void setListId( final String id ) { 195 listid = id; 196 } 197 198 /** 199 * 雛形ファイル名をセットします 200 * 201 * @param name 雛形ファイル名 202 */ 203 public void setModelname( final String name ) { 204 modelname = name; 205 } 206 207 /** 208 * 完成フラグを返します。 209 * 210 * @return 完成フラグ String 211 */ 212 public String getFgkan(){ 213 return fgkan; 214 } 215 216 /** 217 * エラーメッセージを返します。 218 * 219 * @return エラーメッセージ String 220 */ 221 public String getErrMsg(){ 222 return errMsg.toString(); 223 } 224 225 /** 226 * シェルの実行を行います 227 * 228 * @og.rev 5.4.3.0 (2011/12/26) 229 * 230 * @return 結果 [true:正常/false:異常] 231 */ 232 protected boolean programRun(){ 233 Shell shell = new Shell(); 234 shell.setCommand( shellCmd,true ); // BATCHプロセスで実行する 235 shell.setWait( true ); // プロセスの終了を待つ 236 shell.setTimeout( TIMEOUT ); 237 238 int rtnCode = shell.exec(); // 0 は正常終了を示す 239 240 if( rtnCode != 0 ) { 241 errMsg.append( "Shell Command exequte Error." ).append( CR ); 242 errMsg.append( "==============================" ).append( CR ); 243 errMsg.append( shellCmd ).append( CR ); 244 errMsg.append( shell.getStdoutData() ).append( CR ); 245 errMsg.append( shell.getStderrData() ).append( CR ); 246 errMsg.append( CR ); 247 return false; 248 } 249 250 return true; 251 } 252 253}