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.io; 017 018import org.opengion.hayabusa.db.ColumnActionListener; // 6.2.2.0 (2015/03/27) 019 020import java.io.File; // 6.2.0.0 (2015/02/27) 021 022/** 023 * DBTableModel インターフェース のオブジェクトをReader を用いて入力する為の共通インターフェースです。 024 * 025 * @og.group ファイル入力 026 * 027 * @version 4.0 028 * @author Kazuhiko Hasegawa 029 * @since JDK5.0, 030 */ 031public interface TableReader { 032 033 /** 034 * ヘッダー情報の入力時の区切り文字 035 */ 036 String TAB_SEPARATOR = "\t"; // 項目区切り文字 037 038 /** 039 * DBTableModel から 各形式のデータを作成して Reader より読み取ります。 040 * 041 * @og.rev 3.5.4.3 (2004/01/05) 引数に、BufferedReader を受け取ル要に変更します。 042 * @og.rev 6.2.0.0 (2015/02/27) TableReader クラスの呼び出し元メソッドの共通化(EXCEL,TEXT)。新規 043 * 044 * @param filename 読み取り元ファイル名 045 * @param enc ファイルのエンコード文字列 046 */ 047 void readDBTable( final File filename , final String enc ); 048 049 /** 050 * データを読み込む場合の区切り文字をセットします。 051 * 052 * なお、このメソッドは、サブクラスによっては使用しない場合があります。 053 * もし、使用しないサブクラスを作成する場合は UnsupportedOperationException 054 * を throw するようにサブクラスで実装して下さい。 055 * 056 * @param separator 区切り文字 057 */ 058 void setSeparator( final String separator ) ; 059 060 /** 061 * DBTableModelのデータとしてEXCELファイルを読み込むときのシート名を設定します。 062 * これにより、複数の形式の異なるデータを順次読み込むことや、シートを指定して 063 * 読み取ることが可能になります。 064 * sheetNos と sheetName が同時に指定された場合は、sheetNos が優先されます。エラーにはならないのでご注意ください。 065 * のでご注意ください。 066 * このメソッドは、isExcel() == true の場合のみ利用されます。 067 * 068 * @og.rev 3.5.4.2 (2003/12/15) 新規追加 069 * 070 * @param sheetName シート名 071 * @see #setSheetNos( String ) 072 */ 073 void setSheetName( final String sheetName ) ; 074 075 /** 076 * EXCELファイルを読み込むときのシート番号を指定します(初期値:0)。 077 * 078 * EXCEL読み込み時に複数シートをマージして取り込みます。 079 * シート番号は、0 から始まる数字で表します。 080 * ヘッダーは、最初のシートのカラム位置に合わせます。(ヘッダータイトルの自動認識はありません。) 081 * よって、指定するシートは、すべて同一レイアウトでないと取り込み時にカラムのずれが発生します。 082 * 083 * シート番号の指定は、CSV形式で、複数指定できます。また、N-M の様にハイフンで繋げることで、 084 * N 番から、M 番のシート範囲を一括指定可能です。また、"*" による、全シート指定が可能です。 085 * これらの組み合わせも可能です。( 0,1,3,5-8,10-* ) 086 * ただし、"*" に関しては例外的に、一文字だけで、すべてのシートを表すか、N-* を最後に指定するかの 087 * どちらかです。途中には、"*" は、現れません。 088 * シート番号は、重複(1,1,2,2)、逆転(3,2,1) での指定が可能です。これは、その指定順で、読み込まれます。 089 * sheetNos と sheetName が同時に指定された場合は、sheetNos が優先されます。エラーにはならないのでご注意ください。 090 * このメソッドは、isExcel() == true の場合のみ利用されます。 091 * 092 * 初期値は、0(第一シート) です。 093 * 094 * @og.rev 5.5.7.2 (2012/10/09) 新規追加 095 * 096 * @param sheetNos EXCELファイルのシート番号(0から始まる) 097 * @see #setSheetName( String ) 098 */ 099 void setSheetNos( final String sheetNos ) ; 100 101 /** 102 * EXCELファイルを読み込むときのシート単位の固定値を設定するためのカラム名とアドレスを指定します。 103 * カラム名は、CSV形式で指定します。 104 * 対応するアドレスを、EXCEL上の行-列を0から始まる整数でCSV形式で指定します。 105 * これにより、シートの一か所に書かれている情報を、DBTableModel のカラムに固定値として 106 * 設定することができます。 107 * 例として、DB定義書で、テーブル名をシートの全レコードに設定したい場合などに使います。 108 * このメソッドは、isExcel() == true の場合のみ利用されます。 109 * 110 * @og.rev 5.5.8.2 (2012/11/09) 新規追加 111 * 112 * @param constKeys 固定値となるカラム名(CSV形式) 113 * @param constAdrs 固定値となるアドレス(行-列,行-列,・・・) 114 */ 115 void setSheetConstData( final String constKeys,final String constAdrs ) ; 116 117 /** 118 * ここに指定されたカラム列に NULL が現れた時点で読み取りを中止します。 119 * 120 * これは、指定のカラムは必須という事を条件に、そのレコードだけを読み取る処理を行います。 121 * 複数Sheetの場合は、次のSheetを読みます。 122 * 現時点では、Excel の場合のみ有効です。 123 * 124 * @og.rev 5.5.8.2 (2012/11/09) 新規追加 125 * 126 * @param clm カラム列 127 */ 128 void setNullBreakClm( final String clm ) ; 129 130 /** 131 * ここに指定されたカラム列に NULL が現れたレコードは読み飛ばします。 132 * 133 * 例えば、更新対象カラムで、null の場合は、何もしない、などのケースで使用できます。 134 * 複数カラムの場合は、AND条件やOR条件などが、考えられるため、 135 * カラムを一つにまとめて、指定してください。 136 * 137 * @og.rev 6.2.3.0 (2015/05/01) 行読み飛ばし nullSkipClm追加 138 * 139 * @param clm カラム列 140 */ 141 void setNullSkipClm( final String clm ) ; 142 143 /** 144 * 読み取り元ファイルのカラム列を、外部(タグ)より指定します。 145 * ファイルに記述された #NAME より優先して使用されます。 146 * 147 * @og.rev 3.5.4.5 (2004/01/23) 新規作成 148 * 149 * @param clms 読み取り元ファイルのカラム列(CSV形式) 150 */ 151 void setColumns( final String clms ) ; 152 153 /** 154 * 行番号情報を、使用している(true)/していない(false)を指定します。 155 * 156 * 通常のフォーマットでは、各行の先頭に行番号が出力されています。 157 * 読み取り時に、#NAME 属性を使用する場合は、この行番号を無視しています。 158 * #NAME 属性を使用せず、columns 属性でカラム名を指定する場合(他システムの 159 * 出力ファイルを読み取るケース等)では、行番号も存在しないケースがあり、 160 * その様な場合に、useNumber="false" を指定すれば、データの最初から読み取り始めます。 161 * この場合、出力データのカラムの並び順が変更された場合、columns 属性も 162 * 指定しなおす必要がありますので、できるだけ、#NAME 属性を使用するように 163 * してください。 164 * なお、EXCEL 入力には、この設定は適用されません。(暫定対応) 165 * 初期値は、true(使用する) です。 166 * 167 * @og.rev 3.7.0.5 (2005/04/11) 新規追加 168 * 169 * @param useNumber 行番号情報 [true:使用している/false:していない] 170 */ 171 void setUseNumber( final boolean useNumber ) ; 172 173 /** 174 * データの読み飛ばし件数を設定します。 175 * 176 * TAB区切りテキストやEXCEL等のデータの読み始めの初期値を指定します。 177 * ファイルの先頭行が、0行としてカウントしますので、設定値は、読み飛ばす 178 * 件数になります。(1と指定すると、1件読み飛ばし、2行目から読み込みます。) 179 * 読み飛ばしは、コメント行などは、無視しますので、実際の行数分読み飛ばします。 180 * #NAME属性や、columns 属性は、有効です。 181 * 182 * @og.rev 5.1.6.0 (2010/05/01) 新規作成 183 * 184 * @param count 読み始めの初期値 185 */ 186 void setSkipRowCount( final int count ) ; 187 188 /** 189 * ColumnActionListenerオブジェクトを設定します。 190 * 191 * ColumnActionListenerオブジェクトは、カラム名配列設定時と、それに対応する値配列設定時に 192 * 呼ばれるイベントリスナーです。 193 * 具体的なテーブル処理は、このイベントを使用して書き込みを行います。 194 * 195 * @og.rev 6.2.2.0 (2015/03/27) 新規作成 196 * 197 * @param listener ColumnActionListenerオブジェクト 198 */ 199 void setColumnActionListener( final ColumnActionListener listener ) ; 200 201 /** 202 * デバッグ情報を出力するかどうかを指定します。 203 * 204 * EXCELなどを読み取る場合、シートマージで読み取ると、エラー時の行番号が、連番になるため、 205 * どのシートなのか、判らなくなります。 206 * そこで、どうしてもわからなくなった場合に備えて、デバッグ情報を出力できるようにします。 207 * 通常は使用しませんので、設定を無視します。 208 * 初期値は、false:デバッグ情報を出力しない です。 209 * 210 * @og.rev 5.5.7.2 (2012/10/09) 新規作成 211 * 212 * @param useDebug デバッグ情報を出力するかどうかを指定 213 */ 214 void setDebug( final boolean useDebug ) ; 215}