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 */ 016 package org.opengion.hayabusa.report; 017 018 import java.io.BufferedWriter; 019 import java.io.File; 020 import java.io.FileNotFoundException; 021 import java.io.FileOutputStream; 022 import java.io.OutputStreamWriter; 023 import java.io.UnsupportedEncodingException; 024 import org.opengion.hayabusa.common.HybsSystemException; 025 import org.opengion.hayabusa.common.HybsSystem; 026 027 /** 028 * CSVå½¢å¼ã§ãƒ??タを作æ?ã—ã¾ã™ã? 029 * ãƒãƒƒãƒã?コールもå?部ã§è¡Œã„ã¾ã™ã? 030 * 031 * @og.group 帳票シスãƒ?ƒ 032 * 033 * @version 5.9.0.0 034 * @author Masakazu Takahashi 035 * @since JDK6.0, 036 */ 037 public class CSVPrintPointService_DEFAULT extends AbstractCSVPrintPointService { 038 039 private static final String CR = System.getProperty("line.separator"); 040 private final StringBuilder strCSV = new StringBuilder(); // CSVã¯ã“れã«åã 041 042 private final String csvEncode = HybsSystem.sys("REPORT_CSV_TEXT_ENCODE"); 043 044 /** 045 * 発行å?ç? 046 * ファイル出åŠ? 047 * 048 * @return çµæžœ [true:æ£å¸¸/false:異常] 049 */ 050 @Override 051 public boolean execute(){ 052 System.out.print( "CSV create ... " ); 053 BufferedWriter bw = null; 054 String filename= outdir; 055 boolean flg = false; 056 057 try { 058 makeheader(); 059 makebody(); 060 061 bw = getWriter(filename,false,csvEncode); 062 bw.write( strCSV.toString() ); 063 bw.flush(); 064 bw.close(); 065 066 flg = true; 067 068 // if( prgfile != null && prgfile.length() > 0){ 069 // makeShellCommand(); 070 // flg = programRun(); 071 // } 072 073 } 074 catch ( Throwable ex ) { 075 errMsg.append( "CSV Print Request Execution Error. " ).append( CR ); 076 errMsg.append( "==============================" ).append( CR ); 077 errMsg.append( "SYSTEM_ID=[" ).append( systemId ).append( "] , " ); 078 errMsg.append( "YKNO=[" ).append( ykno ).append( "] , " ); 079 errMsg.append( ex.toString() ); 080 errMsg.append( CR ); 081 // throw new RuntimeException( errMsg.toString() ); 082 throw new RuntimeException( errMsg.toString(), ex ); 083 } 084 return flg; 085 } 086 087 /** 088 * ヘッãƒ??出åŠ? 089 * 090 */ 091 private void makeheader(){ 092 //ヘッãƒ?ƒ‡ãƒ¼ã‚¿ã‚’å?力ã™ã‚‹å?åˆã?ã“ã“ã§æŒ?®šã™ã‚‹ã? 093 //strCSV.append( listid ).append( CR ); 094 } 095 096 097 098 /** 099 * 本体ã?出力を行ã„ã¾ã? 100 */ 101 private void makebody(){ 102 103 for( int rowNo=0; rowNo<table.getRowCount(); rowNo++ ) { 104 // カラãƒ?˜ä½ã?処ç? 105 for( int clmNo=0; clmNo<table.getColumnCount(); clmNo++ ) { 106 // å…ˆé?以外ã?カンマを付ã‘ã‚? 107 if( clmNo > 0 ){ strCSV.append( "," ); } 108 // å…¨ã¦ãƒ?ƒ–ルクウォートã§å›²ã? 109 strCSV.append("\"").append( table.getValue( rowNo, clmNo ) ).append("\""); 110 } 111 112 strCSV.append( CR ); 113 } 114 } 115 116 117 /** 118 * ファイル書ãè¾¼ã¿ç”¨ã®ãƒ©ã‚¤ã‚¿ãƒ¼ã‚’è¿”ã—ã¾ã™ã? 119 * 120 * @param fileName ファイルå? 121 * @param append アベンドã™ã‚‹ã‹ 122 * @param encode エンコーãƒ? 123 * 124 * @return ライター 125 */ 126 private BufferedWriter getWriter( final String fileName, final boolean append, final String encode) { 127 File file = new File ( fileName ); 128 BufferedWriter bw; 129 130 try { 131 bw = new BufferedWriter( new OutputStreamWriter( new FileOutputStream( file, append ), encode ) ); 132 } 133 catch ( UnsupportedEncodingException ex ) { 134 errMsg.append( "[ERROR] Input File is written by Unsupported Encoding" ); 135 throw new HybsSystemException( ex ); 136 } 137 catch ( FileNotFoundException ex ) { 138 errMsg.append( "[ERROR] File not Found" ); 139 throw new HybsSystemException( ex ); 140 } 141 return bw; 142 } 143 144 /** 145 * シェルコマンドã?æ–?—å?を作æ?ã—ã¾ã™ã? 146 * 147 * @og.rev 5.4.3.9 引数変更 148 * 149 * @return çµæžœ [true:æ£å¸¸/false:異常] 150 */ 151 private boolean makeShellCommand() { 152 StringBuilder buf = new StringBuilder( HybsSystem.BUFFER_SMALL ); 153 154 buf.append( prgdir + HybsSystem.FS + prgfile ).append( " " ); // 実行ã™ã‚‹ã‚³ãƒžãƒ³ãƒ? 155 buf.append( "\"" ).append( ykno ).append( "\" " ); // 引数?‘ï¼šè¦æ±?O 156 buf.append( "\"" ).append( prtid ).append( "\" " ); // 引数?’:ã?リンタID 157 buf.append( "\"" ).append( prtName ).append( "\" " ); // 引数?“:ã?リンタID 158 buf.append( "\"" ).append( hostName ).append( "\" " ); // 引数?”:ã?ストå 159 buf.append( "\"" ).append( portnm ).append( "\" " ); // 引数?•:ã?リンタãƒã?ãƒ?5.4.3.1(2011/12/27) 160 161 shellCmd = buf.toString(); 162 System.out.println( CR + shellCmd + CR ); 163 164 return true; 165 } 166 }