CsvRecordSet (クラス)
public CsvRecordSet {inherits StoredRecordSet}
インポート元: CURL.GUI.STANDARD. package 内で定義されています CURL.DATA-ACCESS.BASE.
直接継承しているサブクラス: ConnectedFileRecordSet

データを標準的な CSV (カンマ区切り値) ファイル形式で格納する StoredRecordSet です。

説明

CsvRecordSet は、他の RecordSet と同様に使用できますが、CsvRecordSet.commit メソッドが呼び出されると、ファイルに書き込まれ、CsvRecordSet.load メソッドが呼び出されると、そのファイルからロードされるという機能があります。これにより、クライアントでパーシスタント レコード データを維持するアプレットを作成することが容易になります。
その他の機能として、CsvRecordSet.import メソッドがあります。このメソッドは、特殊パーサー (TextDataReader の形式) を使用して CsvRecordSet にデータを追加できるよう設計されています。データがインポートされると、そのデータは、CSV 形式でローカルに維持されます。

コンストラクタ
create:新しい CsvRecordSet を作成して初期化し、既存のファイルが存在すれば上書きします。
コンストラクタ public {CsvRecordSet.create
url:Url,
fields:RecordFields,
header:#StringArray = null,
modifiable?:bool = true,
character-encoding:CharEncoding = "utf8",
backup?:bool = false,
...:Object
}
default:新しい StoredRecordSet を初期化して返します。
コンストラクタ public {CsvRecordSet.default
url:Url,
fields:#RecordFields = null,
header-line-count:int = 0,
header:#StringArray = null,
modifiable?:bool = true,
character-encoding:CharEncoding = "utf8",
backup?:bool = false,
...:EventHandler
}

プロパティ
_header:ヘッダー行の配列です (ある場合)。
フィールド protected CsvRecordSet._header:#StringArray
backup-done?:最初は false ですが、バックアップが実行されると、true に設定されます。
フィールド protected CsvRecordSet.backup-done?:bool =false
backup?:true の場合、最初に CsvRecordSet がコミットされた時点で現在のファイルの名前が変更されます。
フィールド public-get protected-set CsvRecordSet.backup?:bool
character-encoding:ファイルの文字エンコーディングです。
フィールド public-get protected-set CsvRecordSet.character-encoding:CharEncoding ="utf8"
header:ヘッダー行です。
アクセサ public CsvRecordSet.header:#StringArray
セッター public CsvRecordSet.header:#StringArray
header-line-count:データ レコードの読み取り前に読み取られるファイルの先頭部分の行数です。
フィールド public CsvRecordSet.header-line-count:int =0
tdw:CsvRecordSet.commit メソッドは、使用する CsvRecordSet.write-records メソッド用にこのライターを作成します。
フィールド protected CsvRecordSet.tdw:#TextDataWriter
url:この CsvRecordSet が格納されている場所です。
フィールド public-get protected-set CsvRecordSet.url:Url
プロパティ 継承 StoredRecordSet: change-count, change-count-at-commit, load-state, pending-update?
プロパティ 継承 BasicRecordSet: fields, modifiable?, size
プロパティ 継承 EventManagingRecordSet: batch-events?, suppress-events?
プロパティ 継承 RecordSet: registered-views
プロパティ 継承 EventTarget: event-handlers

メソッド
backup-if-needed:可能な場合は、既存のデータ ファイルのバックアップを作成します。
protected {CsvRecordSet.backup-if-needed}:void
import:reader のデータをインポートします。
public {CsvRecordSet.import
reader:TextDataReader,
converters:#RecordData = null,
append?:bool = true,
ignore-bad-values?:bool = true,
adjustment-proc:#{proc-type {StringArray}:void} = null
}:int
load-records:すべてのレコードを格納場所のファイルからロードします。
protected {CsvRecordSet.load-records}:void
make-reader:この RecordSet のデータを読み取るために使用される TextDataReader を作成して返します。
protected {CsvRecordSet.make-reader}:TextDataReader
make-writer:この RecordSet のデータを書き込むために使用される TextDataWriter を作成して返します。
protected {CsvRecordSet.make-writer}:TextDataWriter
write-record:TextDataWriter を使用して RecordSet レコードを書き込みます。
protected {CsvRecordSet.write-record r:Record}:void
write-records:レコードをストレージに書き込みます。
protected {CsvRecordSet.write-records}:void
メソッド 継承 StoredRecordSet: commit, init-record-data, load, load-record, process-arguments, rebuild, trigger-record-set-event
メソッド 継承 BasicRecordSet: allocate-record, append, append-row-data, commit-record, deindex-record, deindex-record-field, delete-all, delete-record, index-record, index-record-field, init, internal-store-record, member?, new-record, revert, revert-record, set-value, to-Iterator, validate-record, validate-value
メソッド 継承 RecordSet: ensure-attached, ensure-modifiable, handle-event, on-record-set-event, register-view, select, select-one, unregister-view
メソッド 継承 EventTarget: accepts-event-class?, add-event-handler, event-handler-present?, remove-event-handler, verify-event
メソッド 継承 BasicEventTarget: enqueue-event
メソッド 継承 Object: object-describe, object-describe-for-debugging, object-serialize



コンストラクタ詳細
create (コンストラクタ)
public {CsvRecordSet.create
url:Url,
fields:RecordFields,
header:#StringArray = null,
modifiable?:bool = true,
character-encoding:CharEncoding = "utf8",
backup?:bool = false,
...:Object
}

新しい CsvRecordSet を作成して初期化し、既存のファイルが存在すれば上書きします。

url: CSV ファイルが格納されている場所です。
fields: CsvRecordSet 内のフィールドです。
header: オプションのヘッダー テキストです。
character-encoding: ファイルの文字エンコーディングです。
backup?: true の場合、最初に CsvRecordSet が保存された時点でバックアップが作成されます。
...: EventHandler または RecordData インスタンスが含まれる場合があります。このレコード セットにイベント ハンドラがアタッチされます。RecordData オブジェクトが渡されると、レコードが作成され、指定のデータを保持するためにアタッチされます。


default (コンストラクタ)
public {CsvRecordSet.default
url:Url,
fields:#RecordFields = null,
header-line-count:int = 0,
header:#StringArray = null,
modifiable?:bool = true,
character-encoding:CharEncoding = "utf8",
backup?:bool = false,
...:EventHandler
}

新しい StoredRecordSet を初期化して返します。

説明

レコードセットの内容は、url パラメータで指定されたファイルに格納されます。このファイルが存在しないと、レコードセットは開始時は空で、最初に CsvRecordSet.commit メソッドが呼び出された時点でファイルが作成されます (コミットされていない変更があることが前提)。
CsvRecordSet はヘッダーを持つことができます。ヘッダーは、ファイルの先頭に維持される数行のテキストです。スプレッドシートまたは他のデスクトップ アプリケーションから保存されたファイルにはヘッダーが頻繁に見つかります。既存のファイルを使用する場合は、header-line-count を正確に指定する必要があります。新しく CsvRecordSet.header を指定すると、header-line-count が自動的に更新されます。
url: CSV ファイルが格納されている場所です。
fields: CsvRecordSet 内のフィールドです。このパラメータが NULL の場合、フィールドの型は、DomainDetector を使用してファイルを読み取って、自動的に決定されます。
header-line-count: CSV ファイル ヘッダーの行数です。
header: ヘッダー行です。このパラメータが必要なのは、最初に CsvRecordSet が保存される時点のみです。
modifiable?: CsvRecordSet のデータが変更されるのは、modifiable? が true の場合だけです。
character-encoding: ファイルの文字エンコーディングです。
backup?: true の場合、最初に CsvRecordSet が保存された時点でバックアップが作成されます。
...: このレコード セットにアタッチされるイベント ハンドラです。



プロパティ詳細
_header (フィールド)
protected CsvRecordSet._header:#StringArray

ヘッダー行の配列です (ある場合)。



backup-done? (フィールド)
protected CsvRecordSet.backup-done?:bool =false

最初は false ですが、バックアップが実行されると、true に設定されます。



backup? (フィールド)
public-get protected-set CsvRecordSet.backup?:bool

true の場合、最初に CsvRecordSet がコミットされた時点で現在のファイルの名前が変更されます。

説明

バックアップ ファイルは、最初にレコードセットがロードされた後で 1 回だけ作成されます。この実装では、バックアップ ファイルのサフィックスとしてティルデ (~) を使用します。


character-encoding (フィールド)
public-get protected-set CsvRecordSet.character-encoding:CharEncoding ="utf8"

ファイルの文字エンコーディングです。



header (アクセサ)
アクセサ public CsvRecordSet.header:#StringArray
セッター public CsvRecordSet.header:#StringArray

ヘッダー行です。

説明

ヘッダーは、CsvRecordSet が作成されると読み取られ、ファイルが保存されるたびに書き出されます。
通常、ヘッダーは、最初に CsvRecordSet が作成されるそのときに提供されます。その後、レコードセットがロードされるとファイルから読み取られ、更新がファイルに書き込まれるときにもう一度ファイルに書き出されます。
CsvRecordSet.header-line-count がゼロでなく、header がコンストラクタに渡された場合、ヘッダーのサイズが間違っていると、エラーがスローされます。


header-line-count (フィールド)
public CsvRecordSet.header-line-count:int =0

データ レコードの読み取り前に読み取られるファイルの先頭部分の行数です。



tdw (フィールド)
protected CsvRecordSet.tdw:#TextDataWriter

CsvRecordSet.commit メソッドは、使用する CsvRecordSet.write-records メソッド用にこのライターを作成します。



url (フィールド)
public-get protected-set CsvRecordSet.url:Url

この CsvRecordSet が格納されている場所です。






メソッド詳細
backup-if-needed (メソッド)
protected {CsvRecordSet.backup-if-needed}:void

可能な場合は、既存のデータ ファイルのバックアップを作成します。

説明

このメソッドは、CsvRecordSet.commit のときに、新しい更新があるが、その更新がまだ CSV ファイルに書き込まれていない場合に呼び出されます。


import (メソッド)
public {CsvRecordSet.import
reader:TextDataReader,
converters:#RecordData = null,
append?:bool = true,
ignore-bad-values?:bool = true,
adjustment-proc:#{proc-type {StringArray}:void} = null
}:int

reader のデータをインポートします。

説明

インポートされたレコードは、CsvRecordSet.commit メソッドが呼び出されるまではコミットされません。RecordGrid に表示された場合、右クリックのコンテキスト メニューで [コミット] および [元に戻す] コマンドを使用できます。CommandButton または他の CommandBindingbound-command プロパティを使った [コミット] および [元に戻す] ボタンの作成については、『開発者ガイド』の「RecordSetDisplay コマンド」も参照してください。
reader: このレコードセットに追加されるレコードのソースです。
converters: 必要に応じ、データ値用に特殊化されたパーサーを提供する RecordData です。たとえば、converters が次のように指定されているとします。
converters = 
    {RecordData
         amount = {CsvImportNumberConverter {StandardDoubleDomain}},
        due-date = {CsvImportDateConverter {StandardDateDomain}}
    }
これは、amount フィールドが変換されると、CsvImportNumberConverter が使用され、due-date フィールドが変換されると、CsvImportDateConverter が使用されることを示します。他のフィールドでは、変換にフィールドの Domain が使用されます。
append?: true の場合、インポートされたレコードがこの CsvRecordSet に追加されます。false の場合、レコードセットがクリアされてから新しいレコードがインポートされます。
ignore-bad-values?: false の場合、文字列から値への変換でエラーが発生すると、例外がスローされます。true の場合、変換が失敗すると、列の既定値がレコードに格納されます。
adjustment-proc: CSV ファイルがインポートされる時、データの各行は StringArray に構成されます。adjustment-proc が指定されている場合は、値が解析される前にその配列を修正することができます。これは列の追加や、列の統合、それらが処理される前に入力データをきれいにすることについて便利です。


load-records (メソッド)
protected {CsvRecordSet.load-records}:void

すべてのレコードを格納場所のファイルからロードします。

説明

このメソッドは通常、既存のレコードがクリアされた後で、RecordSet.batch-events? = true となっている StoredRecordSet.load メソッドから呼び出されます。RecordState.original 状態の新しいレコードの StoredRecordSet を再度取り込みます。イベントは呼び出し元が扱うため、イベントを発生させる必要はありません。


make-reader (メソッド)
protected {CsvRecordSet.make-reader}:TextDataReader

この RecordSet のデータを読み取るために使用される TextDataReader を作成して返します。

オーバーライド

サブクラスは、このゲッターをオーバーライドして、異なる形式を使用する RecordSet を作成できます。基本クラスは、CSV (カンマ区切り値) 形式を使用します。


make-writer (メソッド)
protected {CsvRecordSet.make-writer}:TextDataWriter

この RecordSet のデータを書き込むために使用される TextDataWriter を作成して返します。

オーバーライド

サブクラスは、このゲッターをオーバーライドして、異なる形式を使用する RecordSet を作成できます。基本クラスは、CSV (カンマ区切り値) 形式を使用します。


write-record (メソッド)
protected {CsvRecordSet.write-record r:Record}:void

TextDataWriter を使用して RecordSet レコードを書き込みます。

説明

このクラスは、カンマ区切り値 (CSV) 形式を使用してレコードを書き込みます。
  • レコードは '\n' によって区切られます。
  • フィールドは ',' によって区切られます。
  • ',' を含むフィールドは '"' によって区切られ、その中の '"' は二重となります。
このメソッドは、レコードセットの変更のコミット中に呼び出されることを前提にして、RecordState.appended および RecordState.original の状態のレコードしか書き込みません。こうしたレコードは、まさにコミットが成功した後に残るレコードです。

オーバーライド

このメソッドは通常オーバーライドされません。 どのようにレコードがファイルに書かれるかを変更するために、 CsvRecordSet.make-writer をオーバーライドします。


write-records (メソッド)
protected {CsvRecordSet.write-records}:void

レコードをストレージに書き込みます。

説明

このメソッドはレコードをループし、レコードの状態が RecordState.deleted または RecordState.detached でない場合に self.write-record を呼び出します。

オーバーライド

サブクラスが StoredRecordSet.write-record をオーバーライドしてファイルに書き込んだり、このメソッドをオーバーライドしてファイルを開いたり、このスーパークラス メソッドを呼び出してレコードを書き込んでからファイルを閉じたりする場合があります。