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.plugin.io; 017 018import java.io.PrintWriter; 019 020import org.opengion.hayabusa.common.HybsSystemException; 021import org.opengion.hayabusa.db.DBTableModel; 022 023/** 024 * プロパティファイル形式(エンジン専用特殊形式)の書き出しクラスです。 025 * Ver4 では、プロパティファイル形式をサポートしていません。 026 * 027 * DefaultTableWriter を継承していますので,ラベル,名前,データの出力部のみ 028 * オーバーライドして,プロパティーファイルの出力機能を実現しています。 029 * 030 * @og.group ファイル出力 031 * 032 * @version 4.0 033 * @author Kazuhiko Hasegawa 034 * @since JDK5.0, 035 */ 036public class TableWriter_Properties extends TableWriter_Default { 037 //* このプログラムのVERSION文字列を設定します。 {@value} */ 038 private static final String VERSION = "6.0.1.2 (2014/08/08)" ; 039 040 private static final String headerSequence = "NL-D"; // ヘッダー項目の並び順 041 042 /** 043 * DBTableModel から データを作成して,PrintWriter に書き出します。 044 * 045 * @og.rev 3.1.1.0 (2003/03/28) 同期メソッド(synchronized付き)を非同期に変更する。 046 * @og.rev 3.5.4.3 (2004/01/05) 引数に PrintWriter を受け取るように変更します。 047 * 048 * @param writer PrintWriterオブジェクト 049 */ 050 @Override 051 public void writeDBTable( final PrintWriter writer ) { 052 setHeaderSequence( headerSequence ); 053 super.writeDBTable( writer ); 054 } 055 056 /** 057 * PrintWriter に DBTableModelのテーブル情報を書き込みます。 058 * このクラスでは,データを ダブルコーテーション(")で囲みます。 059 * PrintWriter に DBTableModelのテーブル情報を書き込みます。 060 * 061 * @og.rev 2.3.1.2 (2003/01/28) データ出力時に、改行が余分に出される箇所を修正。 062 * @og.rev 3.1.1.0 (2003/03/28) 同期メソッド(synchronized付き)を非同期に変更する。 063 * @og.rev 6.0.1.2 (2014/08/08) カラム飛ばしできる機能を追加 064 * 065 * @param table DBTableModelオブジェクト 066 * @param writer PrintWriterオブジェクト 067 */ 068 @Override 069 protected void writeData( final DBTableModel table,final PrintWriter writer ) { 070// if( numberOfColumns < 2 ) { 071 if( numberOfColumns < 2 || clmNo[0] < 0 || clmNo[1] < 0 ) { 072 String errMsg = "Properties では、最低、キーと値の2つ以上のカラムが必要です。" 073 + " numberOfColumns=[" + numberOfColumns + "]" ; 074 throw new HybsSystemException( errMsg ); 075 } 076 077 int numberOfRows = table.getRowCount(); 078 String separator = getSeparator(); 079 080 for( int row=0; row<numberOfRows; row++ ) { 081 writer.print( table.getValue(row,clmNo[0]) ); 082 writer.print( "=" ); 083 writer.print( table.getValue(row,clmNo[1]) ); 084 085 for( int i=2; i<numberOfColumns; i++ ) { 086 int clm = clmNo[i]; 087 if( clm < 0 ) { continue; } // 6.0.1.2 (2014/08/08) カラム飛ばし 088 089 writer.print( separator ); 090 writer.print( table.getValue(row,clm) ); 091 } 092 writer.println(); 093 } 094 } 095}