GWSPathクラスは、データベース上の位置情報を格納することのできるオブジェクトのクラスです。GWSPathクラスのデータは、グローバル変数gwsのcurrentPath()メソッドによって取得することができます。GWSPathクラスのオブジェクトはnewによって作成することはできず、currentPath()によって取得したGWSpathクラスのオブジェクトをclone()することによってのみ新しく作成できます。
位置情報の表現. データベース上の位置情報は、データベースのトップレベル項目からのパスの形で表現されます。具体的には、位置情報は次のようなデータのリストになっています。
パスを文字列で表現する際には、上記のデータをスラッシュ区切りでつなげます。たとえば「/会員/会員名=田中/年齢」という文字列は、トップレベル項目の子である「会員」項目の、「会員名」が「田中」であるようなレコードの、「年齢」項目を指し示すパスです。
GWSPath使用方法. GWSPathの典型的な使用方法は次のとおりです。
表 5. GWSPathクラス
| 機能 | 書式 | 説明 |
|---|---|---|
| 複製 | x.clone() | GWSPathオブジェクトを複製して新しくGWSPathオブジェクトを作成し、そのオブジェクトを返します。 |
| 文字列へ変換 | x.toString() | 変数xの指すGWSPathオブジェクトの値を文字列へ変換した値を返します。 |
| 親項目へ移動 | x.up() | 変数xの指すGWSPathオブジェクトの値が示す位置の親項目のパスを求め、x自身に格納します。式の値として、x自身を返します。親項目がテーブルであった場合には、移動後のパスには移動前のレコードを特定する情報も残ります。例えば「/会員/会員名=田中/年齢」から親項目へ移動した場合、移動後の位置は「/会員/会員名=田中」になります。 |
| 子項目へ移動 | x.down(cld) | 変数xの指すGWSPathオブジェクトの値が示す位置の、変数cldが示す子項目のパスを求め、それをx自身に格納します。式の値として、x自身を返します。変数cldの値は文字列(またはそれに変換可能な値)でなくてはなりません。 |
| キーの値をセット | x.setKey(fldname, val) | 変数xの指すGWSPathオブジェクトの値が示すパスに、fldnameで示されるキー項目の値としてvalの値を追加します。式の値としてx自身を返します。 |
| データの読み出し | x.bRead() x.bReadAll() | 変数xの指すGWSPathオブジェクトの値が示す位置のデータを読み出し、そのデータを項目の型とJavaScriptの型との対応によってJavaScriptのデータに変換し、そのデータを式の値として返します。bReadとbReadAllの違いは、指定された位置から子項目を再帰的に全て取得する(bReadAll)か、別ページに分かれているデータは取得せずに再帰を打ち切る(bRead)かという点のみです。 |
| データの更新 | x.bUpdate(val) | 変数xの指すGWSPathオブジェクトの値が示す位置のデータを、引数valで指定されたデータで更新します。式の値としてvalを返します。引数valは項目の型とJavaScriptの型との対応によってJavaScriptのデータからデータベース上のデータ形式へと変換されます。変数xの指す位置の項目の型がテーブルであり、さらにxが特定のレコードを指している場合(setKey()によってそのテーブルの全てのキー項目の値が指定されている場合)は、指されたレコードのみを更新します。xがテーブルの全体を指している場合(setKey()によってそのテーブルのキー項目の値が指定されていない場合)はテーブルの内容を全て消去したうえで引数valのデータがテーブルに作成されます。 |
| データの作成 | x.bInsert(val) | 変数xの指すGWSPathオブジェクトの値が示す位置へ、引数valで指定されたデータを作成します。式の値としてvalを返します。引数valは項目の型とJavaScriptの型との対応によってJavaScriptのデータからデータベース上のデータ形式へと変換されます。変数xの指す位置の項目の型はテーブルでなくてはなりません。また、そのテーブルのレコードを指していてはなりません(setKey()によってそのテーブルのキー項目の値が指定されていてはなりません)。 |
| データの削除 | x.bRemove(val) | 変数xの指すGWSPathオブジェクトの値が示す位置のデータを削除します。式の値としてvalを返します。引数valに指定する内容にはほとんど意味は無く、単にObjectのArrayであれば何でもかまいません。変数xの指す位置の項目の型はテーブルでなくてはなりません。また、そのテーブルのレコードを指していなければなりません(setKey()によってそのテーブルの全てのキー項目の値が指定されていなければなりません)。 |