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.plugin.io;
017
018 import java.io.PrintWriter;
019
020 import org.opengion.fukurou.util.StringUtil;
021 import org.opengion.hayabusa.db.DBTableModel;
022
023 /**
024 * 【å»?¢予定ã?åŠ?·¥なしカンマ区åˆ?‚Šãƒ?ƒ–ルクォートファイル(CSV)形式書き込みクラスですã?
025 * こã?クラスは、å»?¢予定ですã?代わりに、Data2 の セパレータをカンマに
026 * 設定して使用してくださいã€?
027 *
028 * DefaultTableWriter を継承してã�?�¾すã?で?Œラベル?Œ名前,データの出力部のみ
029 * オーバã?ライドして?Œ可変長カンマ区åˆ?‚Šæ–?—ファイルの出力機è?を実現してã�?�¾すã?
030 *
031 * こã?クラスは、文字型のãƒ??タ出力時の、å?頭が0ã?場合ã?シングルコーãƒ??ションã‚?
032 * 出さなã�?‚ˆã�?�«変更したクラスですã?(専用特殊クラス)
033 *
034 * @og.formSample
035 *
036 * @og.rev 3.1.9.1 (2003/05/20) 新規作æ?
037 * @og.group ファイル出åŠ?
038 *
039 * @version 4.0
040 * @author Kazuhiko Hasegawa
041 * @since JDK5.0,
042 */
043 public class TableWriter_CSV2 extends TableWriter_Default {
044 //* こã?プログラãƒ??VERSIONæ–?—å?を設定しますã? {@value} */
045 private static final String VERSION = "5.2.1.0 (2010/10/01)" ;
046
047 // 4.3.4.4 (2009/01/01)
048 // /**
049 // * ãƒ?ƒ•ォルトコンストラクター
050 // *
051 // */
052 // public TableWriter_CSV2() {
053 // super();
054 // }
055
056 /**
057 * DBTableModel から ãƒ??タを作æ?して,PrintWriter に書きå?しますã?
058 *
059 * @og.rev 3.1.1.0 (2003/03/28) 同期メソãƒ?ƒ‰(synchronized付き)を非同期に変更するã€?
060 * @og.rev 3.5.4.3 (2004/01/05) 引数に PrintWriter を受け取るよã�?�«変更しますã?
061 *
062 * @param writer PrintWriterオブジェクãƒ?
063 */
064 @Override
065 public void writeDBTable( final PrintWriter writer ) {
066 super.setSeparator( CSV_SEPARATOR ); // 3.5.6.0 (2004/06/18)
067 super.writeDBTable( writer );
068 }
069
070 /**
071 * PrintWriter に DBTableModelのãƒ??ブルæƒ??を書き込みますã?
072 * こã?クラスでは?Œデータã‚?ãƒ?ƒ–ルコーãƒ??ション(")で囲みますã?
073 * PrintWriter に DBTableModelのãƒ??ブルæƒ??を書き込みますã?
074 *
075 * @og.rev 2.0.0.1 (2002/09/20) 先é?ã�? でかつ数字タイãƒ?S9)でなã�??合に ' をå?力するよã�?�«修正
076 * @og.rev 2.0.0.5 (2002/09/30) 先é?ã�? でかつ数字タイãƒ?S9 or R)でなã�??合に ' をå?力するよã�?�«修正ã€?
077 * @og.rev 2.3.1.2 (2003/01/28) ãƒ??タ出力時に、改行が余å?に出されるç®?‰€を修正ã€?
078 * @og.rev 3.1.0.0 (2003/03/20) DBColumn から、getDbType() キーを直接取り出ã�?
079 * @og.rev 3.1.1.0 (2003/03/28) 同期メソãƒ?ƒ‰(synchronized付き)を非同期に変更するã€?
080 * @og.rev 3.7.0.2 (2005/02/14) 行番号æƒ??をã?出力すã‚?true)/しなã�?false)を指å®?
081 * @og.rev 3.8.0.1 (2005/06/17) DBTypeã�?NVAR の場合ã?、å?のUnicodeに戻しますã?
082 * @og.rev 5.1.6.0 (2010/05/01) DbType の初期値(dbType)を利用するã€?
083 * @og.rev 5.2.1.0 (2010/10/01) useRenderer 対å¿?
084 *
085 * @param table DBTableModelオブジェクãƒ?
086 * @param writer PrintWriterオブジェクãƒ?
087 */
088 @Override
089 protected void writeData( final DBTableModel table,final PrintWriter writer ) {
090 int numberOfRows = table.getRowCount();
091 boolean useNumber = isUseNumber();
092 boolean useRenderer = isUseRenderer(); // 5.2.1.0 (2010/10/01)
093
094 for( int row=0; row<numberOfRows; row++ ) {
095 if( useNumber ) {
096 writer.print( quotation( String.valueOf( row+1 ) ) );
097 writer.print( CSV_SEPARATOR );
098 }
099
100 for( int i=0; i<numberOfColumns; i++ ) {
101 if( i != 0 ) { writer.print( CSV_SEPARATOR ); }
102 int clm = clmNo[i];
103 String val = table.getValue(row,clm);
104 // if( "NVAR".equals( dbColumn[clm].getDbType()) ) {
105 if( dbType[i] == NVAR ) {
106 val = StringUtil.getReplaceEscape( val );
107 }
108 // 5.2.1.0 (2010/10/01) useRenderer 対å¿?
109 else if( useRenderer ) {
110 val = StringUtil.spanCut( dbColumn[clm].getRendererValue( val ) );
111 }
112
113 // 開始日などの 00000000 を文字å?タイプで渡ã�?
114 writer.print( quotation( val ) );
115 }
116 writer.println();
117 }
118 }
119
120 /**
121 * ãƒ??タを書き込ã‚??合ã?,区åˆ?‚Šæ–?—をセãƒ?ƒˆしますã?
122 * こã?クラスでは?ŒCSV 固定ã?為,区åˆ?‚Šæ–?—ã?セãƒ?ƒˆは無効になりますã?
123 *
124 * @og.rev 3.1.1.0 (2003/03/28) 同期メソãƒ?ƒ‰(synchronized付き)を非同期に変更するã€?
125 *
126 * @param sprt 区åˆ?‚Šæ–??
127 */
128 @Override
129 public void setSeparator( final String sprt ) {
130 super.setSeparator( CSV_SEPARATOR ) ; // 3.5.6.0 (2004/06/18)
131 }
132 }