jp.littlesoft.data.text
クラス TextTable<E extends Serializable>

java.lang.Object
  上位を拡張 jp.littlesoft.data.Table<E>
      上位を拡張 jp.littlesoft.data.text.TextTable<E>
すべての実装されたインタフェース:
Serializable, Cloneable

public class TextTable<E extends Serializable>
extends Table<E>

テキストデータ(CSV、固定長)を扱うためのテーブルクラス。

テキストデータに対して、以下の操作を行うことができます。

・テキストファイルを読み込み、Tableにデータを設定する。
・テキストデータ(String)を読み込み、Tableにデータを設定する。
・Tableのデータをテキストファイルとして保存する。
・Tableのデータをテキストデータ(String)として取得する。

■■■ CSVデータの入出力について ■■■

CSVデータを扱う場合、Schemaプロパティに以下の入出力形式を指定することができます。
指定しない場合は、全てデータとして入出力を行います。

1. jp.littlesoft.data.TextTable.Schema.SPECIFIED_NAME_AND_TYPE
・1行目[カラム名] + 2行目[カラムタイプ] + 3行目以降[データ]
2. jp.littlesoft.data.TextTable.Schema.SPECIFIED_NAME
・1行目[カラム名] + 2行目以降[データ]
3. jp.littlesoft.data.TextTable.Schema.ONLY_DATA
・1行目以降[データ](デフォルト)

なお、上記形式2、3を利用する場合は、以下の例2、例3のように、CSVデータの入出力前にカラムの追加処理を行う必要があります。

例1: 1行目がカラム名、2行目がカラムタイプ、3行目以降がデータのCSVファイルを読み込む場合。
TextTable text = new TextTable();
// テキストスキーマの設定
text.setSchema(TextTable.Schema.SPECIFIED_NAME_AND_TYPE);
// CSVファイルのロード
text.importTextFile("file:///c:/input_data.csv");
// CSVファイルのセーブ
text.exportTextFile("c:/output_data.csv");

例2: 1行目がカラム名、2行目以降がデータのCSVファイルを読み込む場合。
TextTable text = new TextTable();
// カラムの追加
text.addColumn("Column1", Column.Type.STRING);
text.addColumn("Column2", Column.Type.INT);
text.addColumn("Column3", Column.Type.DATE);
// テキストスキーマの設定
text.setSchema(TextTable.Schema.SPECIFIED_NAME);
// CSVファイルのロード
text.importTextFile("file:///c:/input_data.csv");
// CSVファイルのセーブ
text.exportTextFile("c:/output_data.csv");

例3: 1行目以降がデータのCSVファイルを読み込む場合。
TextTable text = new TextTable();
// カラムの追加
text.addColumn("Column1", Column.Type.STRING);
text.addColumn("Column2", Column.Type.INT);
text.addColumn("Column3", Column.Type.DATE);
// CSVファイルのロード
text.importTextFile("file:///c:/input_data.csv");
// CSVファイルのセーブ
text.exportTextFile("c:/output_data.csv");

なお、データ読み込みの際、CSVデータの項目数 > カラム数 である場合、
データの先頭からカラム数分のデータを読み込みます。(残りのデータは無視されます。)
また、読み込み時にCSVデータのある項目を読み飛ばすことはできません。

■■■ 固定長データの入出力について ■■■

レコード長が固定のデータを読み込むことができます。
各項目の長さは、Tableに追加したカラムに対して設定します。
データ読み込みの際、レコードの長さ > カラムの長さの合計 である場合、
データの先頭からカラムの長さの合計分のデータを読み込みます。(残りのデータは無視されます。)
また、読み込み時にレコードのある項目を読み飛ばすことはできません。
データ読み込みの際、カラムのデータ型が以下のものに関しては、
項目の前後半角スペースをトリミングしてTableにデータを設定します。

データ型: BYTE、SHORT、LONG、INT、FLOAT、DOUBLE、BOOLEAN、BIGDECIMAL、DATE、TIME、TIMESTAMP

日付型のデータを読み込む際は、適切なフォーマットパターンを設定してください。
数値型の場合でデータ出力時に左ゼロ詰めを行いたい場合は、フォーマットパターンを指定してください。

STRING型はカラムのTrimTypeプロパティの設定によりトリミングについての振る舞いが変化します。
ディフォルトではスペースのトリミングは行われません。

以下の形式を設定することで、データ出力時の項目に対するスペースの補完処理のタイプを指定することができます。

1.jp.littlesoft.ds.data.TextTable.PadType.LEFT
・スペースを左から詰める
2.jp.littlesoft.ds.data.TextTable.PadType.RIGHT
・スペースを右から詰める(デフォルト)
3.jp.littlesoft.ds.data.TextTable.PadType.NOT_ASSIGNED;
・なにもしない

例1:固定長データを読み込み、以下の設定で出力を行う場合。
・Column1のデータの右側をトリミングする。
・Column2に数値フォーマットパターン"0000000000"を設定し、左ゼロ詰めを行う
・Column3に日時フォーマットパターン"yyyy/MM"を設定する。
・補完処理(左詰)を設定する。

【入力データ】

Column1Column2Column3
あいうえお  1234567   2002/09/17
あいうえお  1234567   2002/09/17
あいうえお  1234567   2002/09/17
Column1・・・長さ12(データ10 + 半角スペース2)
Column2・・・長さ10(データ7 + 半角スペース3)
Column3・・・長さ10(データ10)

【コーディング】
TextTable text = new TextTable(TextTable.Type.FIXED_LENGTH_TEXT);
// カラムの追加
text.addColumn("Column1", Column.Type.STRING);
text.addColumn("Column2", Column.Type.INT);
text.addColumn("Column3", Column.Type.DATE);
// カラムの長さを設定
text.getColumn("Column1").setLength(12);
text.getColumn("Column2").setLength(10);
text.getColumn("Column3").setLength(10);
// Column1のデータの右側をトリミング
text.getColumn("Column1").setTrimType(Column.TrimType.RIGHT);
// Column2に数値フォーマットパターンを設定(左ゼロ詰め)
text.getColumn("Column2").setFormatPattern("0000000000");
// Column3に日時フォーマットパターンを設定
text.getColumn("Column3").setFormatPattern("yyyy/MM");
// 出力時の補完処理の設定(左詰)
text.setTextPadType(TextTable.PadType.LEFT);
// 固定長テキストファイルのロード
text.importTextFile("file:///c:/input_data.txt");
// 固定長テキストファイルのセーブ
text.exportTextFile("c:/output_data.txt");

【出力データ】
Column1Column2Column3
あいうえお0001234567 2002/09
あいうえお0001234567 2002/09
あいうえお0001234567 2002/09

※デフォルトではヘッダにカラム名が出力されますが、setHeaderType(TextTable.HeaderType.DATA_FIELD_CAPTION); とすることでカラム名の代わりにキャプションを出力するようになります。

バージョン:
1.3.0
作成者:
LittleSoft Corporation
関連項目:
直列化された形式

入れ子のクラスの概要
static class TextTable.HeaderType
          ヘッダの種類を管理するクラス。
static class TextTable.PadType
          補完の種類を管理するクラス。
static class TextTable.Schema
          出力構成の種類を管理するクラス。
static class TextTable.Type
          出力の種類を管理するクラス。
 
クラス jp.littlesoft.data.Table から継承された入れ子のクラス/インタフェース
Table.SortKey
 
フィールドの概要
static int BUFFER_SIZE
          export/importする際のバッファサイズです。
 
クラス jp.littlesoft.data.Table から継承されたフィールド
_params, $$, active, columns, entity, params
 
コンストラクタの概要
TextTable()
          TextRowSetクラスのコンストラクタ。
TextTable(TextTable.Type textType)
          TextRowSetクラスのコンストラクタ。
 
メソッドの概要
 boolean checkMoreRow(boolean toLast)
          追加行が存在するかどうかを調べます.
protected  void doLoadData()
          データのロードを行います。
 void export(OutputStream out)
          TextTableのデータをOutputStreamに出力する。
 void export(Writer writer)
          TextTableのデータをWriterに出力する。
 void exportTextFile(String fileName)
          TextTableのデータをテキストファイルとして保存します。
 String exportTextString()
          TextTableのデータをテキストデータとして取得します。
 char getDelimiter()
          区切り文字を取得します。
 String getEncoding()
          エンコーディングを取得します。
 String[] getExportColumns()
          出力するカラム名配列を取得します。
 TextTable.HeaderType getHeaderType()
          CSVデータ出力時に出力するヘッダタイプを取得します。
 String getLineSeparator()
          改行コードを取得します。
 TextTable.PadType getPadType()
          文字列の補完処理のタイプを取得します。
 char getQuote()
          クォート文字を取得します。
 TextTable.Schema getSchema()
          CSVデータ入出力時のテキストスキーマを取得します。
 TextTable.Type getType()
          テキストタイプ(CSVまたは固定長テキスト)を取得します。
 void importTextFile(InputStream inputStream)
          テキストファイルを読み込み、TextTableにデータをセットします。
 void importTextFile(String fileURL)
          テキストファイルを読み込み、TextTableにデータをセットします。
 void importTextString(String data)
          テキストデータを読み込み、TextTableにデータをセットします。
protected  void internalOnActivate()
          アクティブ時の内部設定.
 boolean isQuoteInExport()
          CSVデータ出力時に、クォート文字を出力するかどうかのフラグを取得します。
 void setDelimiter(char delimiter)
          区切り文字を設定します。
 void setEncoding(String encoding)
          エンコーディングを設定します。
 void setExportColumns(String[] exportFieldNames)
          出力するカラム名配列を設定します。
 void setHeaderType(TextTable.HeaderType headerType)
          CSVデータ出力時に出力するヘッダタイプを指定します。
 void setLineSeparator(String lineSeparator)
          改行コードを設定します。
 void setPadType(TextTable.PadType textPadType)
          文字列の補完処理のタイプを設定するします。
 void setQuote(char quote)
          クォート文字を設定します。
 void setQuoteInExport(boolean quoteInExport)
          CSVデータ出力時に、クォート文字を出力するかどうかを設定します。
 void setSchema(TextTable.Schema textSchema)
          CSVデータ入出力時のテキストスキーマを設定します。
 void setType(TextTable.Type textType)
          テキストタイプ(CSVまたは固定長テキスト)を設定します。
 
クラス jp.littlesoft.data.Table から継承されたメソッド
activate, addChangeListener, addColumn, addColumn, addColumn, addColumns, addTableListener, allEntities, allRows, appendRow, appendRow, applyFilter, applySortFilter, cancelUpdates, checkActive, checkDeactive, checkDuplicate, checkDuplicate, clearColumns, deleteAllRows, deleteRow, doSetupColumn, fireAfterSetValue, fireBeforeSetValue, fireDataChanged, fireOnActivate, fireOnColumnSetup, fireOnPassivate, fireRowDeleting, fireRowFiltering, fireRowValidating, first, getAllRowCount, getCaptionResource, getCharsetForCheckingLength, getColumn, getColumn, getColumn, getColumn, getColumnArray, getColumnCount, getColumns, getDataProvider, getDataResolver, getEntity, getEntity, getEntityType, getName, getNullables, getParams, getRow, getRow, getRowCount, getRowID, getRowIndex, getSortKeys, inBounds, indexOf, indexOf, indexOfColumn, indexOfColumn, indexOfDBColumnName, indexOfRow, insertRow, insertRow, internalFree, internalMoveTo, internalPut, internalPut, internalRemove, internalSetup, isActive, isApplyFilter, isHasMoreRow, isTypedRow, last, moveTo, next, passivate, previous, releaseFilter, releaseFilter, removeChangeListener, removeColumn, removeTableListener, resolveChanges, setActive, setAllRowCount, setCaptionResource, setCaptionResource, setCharsetForCheckingLength, setDataProvider, setDataResolver, setEntityType, setHasMoreRow, setName, setNullableAll, setNullables, setSortKeys, sortRows, sortRows, sortRows, startEditing, startEditing, validate, validate, validateAllRows, visibleEntities, visibleRows
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

BUFFER_SIZE

public static int BUFFER_SIZE
export/importする際のバッファサイズです。

コンストラクタの詳細

TextTable

public TextTable()
TextRowSetクラスのコンストラクタ。


TextTable

public TextTable(TextTable.Type textType)
TextRowSetクラスのコンストラクタ。

パラメータ:
textType - テキストタイプ(CSVまたは固定長テキスト)
メソッドの詳細

setType

public void setType(TextTable.Type textType)
テキストタイプ(CSVまたは固定長テキスト)を設定します。

パラメータ:
textType - テキストタイプ

getType

public TextTable.Type getType()
テキストタイプ(CSVまたは固定長テキスト)を取得します。

戻り値:
テキストタイプ

setPadType

public void setPadType(TextTable.PadType textPadType)
文字列の補完処理のタイプを設定するします。

固定長データを扱う場合に利用します。

パラメータ:
textPadType - 補完処理のタイプ
関連項目:
TextTable.PadType

getPadType

public TextTable.PadType getPadType()
文字列の補完処理のタイプを取得します。

固定長データを扱う場合に利用します。

戻り値:
補完処理のタイプ
関連項目:
TextTable.PadType

setSchema

public void setSchema(TextTable.Schema textSchema)
CSVデータ入出力時のテキストスキーマを設定します。

CSVデータを扱う場合に利用します。

パラメータ:
textSchema - テキストスキーマ
関連項目:
TextTable.Schema

getSchema

public TextTable.Schema getSchema()
CSVデータ入出力時のテキストスキーマを取得します。

CSVデータを扱う場合に利用します。

戻り値:
テキストスキーマ
関連項目:
TextTable.Schema

setDelimiter

public void setDelimiter(char delimiter)
区切り文字を設定します。

CSVデータを扱う場合に利用します。

パラメータ:
delimiter - 区切り文字 デフォルト値:カンマ[,]

getDelimiter

public char getDelimiter()
区切り文字を取得します。

CSVデータを扱う場合に利用します。

戻り値:
区切り文字

setQuote

public void setQuote(char quote)
クォート文字を設定します。

CSVデータを扱う場合に利用します。

パラメータ:
quote - クォート文字 デフォルト値:ダブルクォート["]

getQuote

public char getQuote()
クォート文字を取得します。

CSVデータを扱う場合に利用します。

戻り値:
クォート文字

setQuoteInExport

public void setQuoteInExport(boolean quoteInExport)
CSVデータ出力時に、クォート文字を出力するかどうかを設定します。

CSVデータを扱う場合に利用します。

デフォルト値:true

パラメータ:
quoteInExport - True:クォート文字を出力する、False:出力しない

isQuoteInExport

public boolean isQuoteInExport()
CSVデータ出力時に、クォート文字を出力するかどうかのフラグを取得します。

CSVデータを扱う場合に利用します。

戻り値:
True:クォート文字を出力する、False:出力しない

setHeaderType

public void setHeaderType(TextTable.HeaderType headerType)
CSVデータ出力時に出力するヘッダタイプを指定します。

CSVデータを Schema.SPECIFIED_NAME_AND_TYPE または Schema.SPECIFIED_NAME のモードで 出力する場合に利用します。
デフォルト値:HeaderType.COLUMN_NAME

パラメータ:
headerType - HeaderType.COLUMN_NAME:カラム名を出力する。 HeaderType.DATA_FIELD_CAPTION:キャプション出力する。
関連項目:
TextTable.HeaderType

getHeaderType

public TextTable.HeaderType getHeaderType()
CSVデータ出力時に出力するヘッダタイプを取得します。

CSVデータを Schema.SPECIFIED_NAME_AND_TYPE または Schema.SPECIFIED_NAME のモードで 出力する場合に利用します。

戻り値:
CSVデータ出力時に出力するヘッダタイプ
関連項目:
TextTable.HeaderType

setLineSeparator

public void setLineSeparator(String lineSeparator)
改行コードを設定します。

パラメータ:
lineSeparator - 改行コード デフォルト値:システムの改行コード

getLineSeparator

public String getLineSeparator()
改行コードを取得します。

戻り値:
改行コード

setEncoding

public void setEncoding(String encoding)
エンコーディングを設定します。

nullまたは空文字を設定すると、System.getProperty("file.encoding")の値が適用されます。

パラメータ:
encoding - エンコーディング

getEncoding

public String getEncoding()
エンコーディングを取得します。

戻り値:
エンコーディング

importTextFile

public void importTextFile(String fileURL)
                    throws TextException
テキストファイルを読み込み、TextTableにデータをセットします。

このメソッドが呼ばれると、内部でsetActive(true)が呼ばれます。
ファイルタイプに従って、データをTextTableにセットします。

パラメータ:
fileURL - ファイルのURL
例外:
TextException - 例外発生時

importTextString

public void importTextString(String data)
                      throws TextException
テキストデータを読み込み、TextTableにデータをセットします。

このメソッドが呼ばれると、内部でsetActive(true)が呼ばれます。
ファイルタイプに従って、データをTextTableにセットします。

パラメータ:
data - テキストデータ
例外:
TextException - 例外発生時

importTextFile

public void importTextFile(InputStream inputStream)
                    throws TextException
テキストファイルを読み込み、TextTableにデータをセットします。

このメソッドが呼ばれると、内部でsetActive(true)が呼ばれます。
ファイルタイプに従って、データをTextTableにセットします。

パラメータ:
inputStream - テキストファイルから取得したInputStream
例外:
TextException - 例外発生時

exportTextFile

public void exportTextFile(String fileName)
                    throws TextException
TextTableのデータをテキストファイルとして保存します。

エンコードは、setEncoding()で設定したエンコードが適用されます。

パラメータ:
fileName - ファイル名
例外:
TextException - 例外発生時

exportTextString

public String exportTextString()
                        throws TextException
TextTableのデータをテキストデータとして取得します。

エンコードは、setEncoding()で設定したエンコードが適用されます。

戻り値:
テキストデータ
例外:
TextException - 例外発生時

export

public void export(OutputStream out)
            throws TextException
TextTableのデータをOutputStreamに出力する。

エンコードは、setEncoding()で設定したエンコードが適用されます。

パラメータ:
out - 出力先のOutputStreamオブジェクト
例外:
TextException

export

public void export(Writer writer)
            throws TextException
TextTableのデータをWriterに出力する。

出力後、writerオブジェクトはクローズされます。

パラメータ:
writer - 出力先のWriterオブジェクト
例外:
TextException

internalOnActivate

protected void internalOnActivate()
                           throws DataException
アクティブ時の内部設定.

このメソッドの処理は空です。

オーバーライド:
クラス Table<E extends Serializable> 内の internalOnActivate
例外:
jp.littlesoft.data.DataException - エラー発生時
DataException

checkMoreRow

public boolean checkMoreRow(boolean toLast)
                     throws DataException
追加行が存在するかどうかを調べます.

このメソッドは常にfalseを返します。

オーバーライド:
クラス Table<E extends Serializable> 内の checkMoreRow
パラメータ:
toLast - True:最終行まで調べる、False:調べない
戻り値:
False:追加行が存在しない(常にfalseが返されます)
例外:
jp.littlesoft.data.DataException - 例外発生時
DataException - 例外発生時

doLoadData

protected void doLoadData()
                   throws DataException
クラス Table の記述:
データのロードを行います。

このメソッドの処理は空です。

オーバーライド:
クラス Table<E extends Serializable> 内の doLoadData
例外:
DataException - 例外発生時
関連項目:
Table.doLoadData()

setExportColumns

public void setExportColumns(String[] exportFieldNames)
出力するカラム名配列を設定します。

設定されたカラム名のカラムデータを出力します。
nullを指定すると全カラムを出力します。

パラメータ:
exportFieldNames - 出力するカラムデータのカラム名配列

getExportColumns

public String[] getExportColumns()
出力するカラム名配列を取得します。

設定されたカラム名のカラムデータを取得します。

戻り値:
出力するカラムデータのカラム名配列


Copyright (C) 2006-2012 LittleSoft Corporation. All Rights Reserved.