RecordSetユーティリティ

 

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
  field public col1:int
  field public col2:String
  field public col3:DateTime

  {constructor public {default col1:int, col2:String, col3:DateTime}
    set self.col1 = col1
    set self.col2 = col2
    set self.col3 = col3
  }
}

 

def rs = {RecordSet
                {RecordFields
                     {RecordField “col1”, domain = int},
                     {RecordField “col2”, domain = String},
                     {RecordField “col3”, domain = DateTime}
                }
           }
def foos =
      {{Array-of Foo}
           {Foo 1, “val1”, {DateTime year=2009, month=1, day=1}},
           {Foo 2, “val2”, {DateTime year=2009, month=2, day=2}},
           {Foo 3, “val3”, {DateTime year=2009, month=3, day=3}}
      }
{for foo in foos do
       {rs.append {RecordDataUtil.create foo}}
}

 

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