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 String grpid = null; // 5.9.2.2 (2015/11/20) 052 protected String dmngrp = null; // 5.9.2.2 (2015/11/20) 053 protected String option = null; // 5.9.3.0 (2015/12/04) 054 protected String fgcut = null; // 5.9.3.0 (2015/12/04) 055 056 057 protected final StringBuilder errMsg = new StringBuilder(); // エラーメッセージ 058 protected String fgkan = GE50Access.FG_ERR2; // 初期値はアプリエラー 059 060 protected int TIMEOUT = HybsSystem.sysInt( "REPORT_DAEMON_TIMEOUT" ); //Shellタイムアウト 061 protected String shellCmd = null; 062 063 protected final static String FGRUN_EXCEL = "H"; 064 protected final static String FGRUN_PDF = "I"; 065 066 private static final String CR = System.getProperty("line.separator"); 067 068 /** 069 * 発行処理 070 * 対象のシステムに応じてこのメソッドをオーバーライドします 071 * 実行後はfgkanの値を正しい値でセットしなおして下さい。 072 * 073 * @return 結果 [true:正常/false:異常] 074 */ 075 public abstract boolean execute(); 076 077 /** 078 * 帳票起動された要求番号をセットします。 079 * 080 * @param no 要求NO 081 */ 082 public void setYkno( final String no ) { 083 ykno = no; 084 } 085 086 /** 087 * システムIDをセットします。 088 * 089 * @param id システムID 090 */ 091 public void setSystemId( final String id ) { 092 systemId = id; 093 } 094 095 /** 096 * 実行方法をセットします。 097 * 098 * @param flag 実行方法 099 */ 100 public void setFgrun( final String flag ) { 101 fgrun = flag; 102 } 103 104 /** 105 * 帳票デーモンが実行されているホスト名をセットします。 106 * 107 * @param host ホスト名 108 */ 109 public void setHostName( final String host ) { 110 hostName = host; 111 } 112 113 /** 114 * プリンター名をセットします。 115 * 116 * @param printerName プリンタ名 117 */ 118 public void setPrinterName( final String printerName ) { 119 prtName = printerName; 120 } 121 122 /** 123 * DBTableModel をセットします。 124 * 125 * @param tbl DBTableModelオブジェクト 126 */ 127 public void setTable( final DBTableModel tbl ) { 128 table = tbl; 129 } 130 131 /** 132 * DBTableModel をセットします。 133 * 134 * @param tbl DBTableModelオブジェクト 135 */ 136 public void setTableH( final DBTableModel tbl ) { 137 tableH = tbl; 138 } 139 140 /** 141 * DBTableModel をセットします。 142 * 143 * @param tbl DBTableModelオブジェクト 144 */ 145 public void setTableF( final DBTableModel tbl ) { 146 tableF = tbl; 147 } 148 149 /** 150 * 起動するバッチ等のプログラム(ディレクトリ)をセットします。 151 * 152 * @param dir バッチプログラムディレクトリ 153 */ 154 public void setPrgDir( final String dir ){ 155 prgdir = dir; 156 } 157 158 /** 159 * 起動するバッチ等のプログラムをセットします。 160 * 空の場合は起動しません。 161 * 162 * @param file バッチプログラム名 163 */ 164 public void setPrgFile( final String file ){ 165 prgfile = file; 166 } 167 168 /** 169 * ファイル出力時のディレクトリを指定します 170 * 171 * @param dir ファイル出力ディレクトリ 172 */ 173 public void setOutDir( final String dir ){ 174 outdir = dir; 175 } 176 177 /** 178 * プリンタIDを指定します 179 * 180 * @param id プリンタID 181 */ 182 public void setPrtId( final String id ){ 183 prtid = id; 184 } 185 186 /** 187 * プリンタのポート名 188 * 189 * @param port ポート名 190 */ 191 public void setPortnm( final String port ){ 192 portnm = port; 193 } 194 195 /** 196 * 帳票IDをセットします 197 * 198 * @param id 帳票ID 199 */ 200 public void setListId( final String id ) { 201 listid = id; 202 } 203 204 /** 205 * 雛形ファイル名をセットします 206 * 207 * @param name 雛形ファイル名 208 */ 209 public void setModelname( final String name ) { 210 modelname = name; 211 } 212 213 /** 214 * グループIDをセットします 215 * 216 * @param id グループID 217 */ 218 public void setGrpId( final String id ) { 219 grpid = id; 220 } 221 222 /** 223 * デーモングループをセットします 224 * 225 * @param name デーモングループ 226 */ 227 public void setDmnGrp( final String name ) { 228 dmngrp = name; 229 } 230 231 /** 232 * オプション文字列をセットします 233 * 234 * @param opt オプション文字列 235 */ 236 public void setOption( final String opt ) { 237 option = opt; 238 } 239 240 /** 241 * ページエンドカットフラグをセットします 242 * 243 * @param flg エンドカットフラグ 244 */ 245 public void setFgcut( final String flg ) { 246 fgcut = flg; 247 } 248 249 /** 250 * 完成フラグを返します。 251 * 252 * @return 完成フラグ String 253 */ 254 public String getFgkan(){ 255 return fgkan; 256 } 257 258 /** 259 * エラーメッセージを返します。 260 * 261 * @return エラーメッセージ String 262 */ 263 public String getErrMsg(){ 264 return errMsg.toString(); 265 } 266 267 /** 268 * シェルの実行を行います 269 * 270 * @og.rev 5.4.3.0 (2011/12/26) 271 * 272 * @return 結果 [true:正常/false:異常] 273 */ 274 protected boolean programRun(){ 275 Shell shell = new Shell(); 276 shell.setCommand( shellCmd,true ); // BATCHプロセスで実行する 277 shell.setWait( true ); // プロセスの終了を待つ 278 shell.setTimeout( TIMEOUT ); 279 280 int rtnCode = shell.exec(); // 0 は正常終了を示す 281 282 if( rtnCode != 0 ) { 283 errMsg.append( "Shell Command exequte Error." ).append( CR ); 284 errMsg.append( "==============================" ).append( CR ); 285 errMsg.append( shellCmd ).append( CR ); 286 errMsg.append( shell.getStdoutData() ).append( CR ); 287 errMsg.append( shell.getStderrData() ).append( CR ); 288 errMsg.append( CR ); 289 return false; 290 } 291 292 return true; 293 } 294 295}