RecordSetやRecordField、RecordData、Recordに対する操作は多くのロジックで使われます。そのため、ユーティリティを作成しました。
RecordSetUtil
RecordSetUtil.append-arrays / RecordSetUtil.append-hashtables
RecordSetにArrayデータを追加します。(HashTableデータを追加する場合は、append-hashtablesを使います。)
def rs = {RecordSet {RecordFields {RecordField “col1”, domain = int}, {RecordField “col2”, domain = String} } } def data1 = {{Array-of Array} {Array 1, “test1”}, {Array 2, “test2”}, {Array 3, “test3”} } {RecordSetUtil.append-arrays rs, data1} |
RecordSetUtil.to-arrays / RecordSetUtil.to-hashtables
上記とは逆にRecordSetからArrayデータを生成します。(HashTableデータを生成する場合は、to-hashtablesを使います。)
def arrays = {RecordSetUtil.to-arrays rs} |
RecordSetUtil.write-to-stream
RecordSetをOutputStreamに書き出します。
{with-open-streams out = {SerializeOutputStream {write-open-byte url, create? = create?, create-mode = create-mode, error-if-exists? = error-if-exists? } } do {RecordSetUtil.write-to-stream out, rs} } |
逆に呼び出す場合は、read-from-streamを利用します。
その他にも、RecordSetUtilにAPIがあります。詳細は、Curlドキュメンテーションをインストールして、ご参照ください。
RecordFieldUtil
RecordFieldUtil.auto-increment
MySQLなどが持つ、自動的に数値をカウントアップしてくれる機能であるauto_incrementを以下のように記述できます。
def rs = {RecordSet {RecordFields {RecordField “col1”, domain = int, default-value = {RecordFieldUtil.auto-increment} }, {RecordField “col2”, domain = String } } } |
その他にも、RecordFieldUtilにAPIがあります。詳細は、Curlドキュメンテーションをインストールして、ご参照ください。
RecordDataUtil
RecordDataUtil.create
普通のクラスからRecordDataを生成します。(クラスのフィールド名がRecordFieldのカラム名となります。) 下記サンプルではFooクラスからRecordDataを生成しています。
{define-class public Foo {constructor public {default col1:int, col2:String, col3:DateTime} |
def rs = {RecordSet |
RecordUtil
RecordUtil.set-valeu
RecordDataUtil.createとは逆に、Recordの値をFooクラスなどのデータクラスのフィールドへ値をセットします。
{for r in rs do def foo = {Foo 0, “”, {DateTime year=2008, month=1, day=1}} {RecordUtil.set-values r, foo} } |
その他にも、RecordUtilにAPIがあります。詳細は、Curlドキュメンテーションをインストールして、ご参照ください。
パッケージ名:COM.CURLAP.LIB.DATA-ACCESS