robbie.dao.x
クラス XQueryParseUtil

java.lang.Object
  拡張robbie.dao.x.XQueryParseUtil

public class XQueryParseUtil
extends java.lang.Object

XQueryのXML要素解析のユーティリティクラス。

Ver1.2まではXQueryに実装していたメソッドを、Ver1.3.0以降はstaticメソッドとして分離しました。

導入されたバージョン:
1.3.0

メソッドの概要
static java.lang.StringBuffer handleBetweenElement(org.jdom.Element ele, java.util.Map params, java.util.List paramsMapList)
          <between>要素からSQL文字列を生成。
static java.lang.StringBuffer handleConstElement(org.jdom.Element ele, java.util.Map params, java.util.List paramsMapList)
          <const>要素からSQL文字列を生成する。
static java.lang.Object handleLikeAttribute(java.lang.String likeStr, java.lang.Object valueObj)
          <like>属性がある場合にはバインドする変数にワイルドカードを追加する。
static java.lang.StringBuffer handleListElement(org.jdom.Element ele, java.util.Map params, java.util.List paramsMapList)
          <list>要素からSQL文字列を生成。
static java.lang.StringBuffer handleQueryElement(org.jdom.Element ele, java.util.Map params, java.util.List paramsMapList)
          <query>、<subquery>、<case>、<default>要素からSQL文字列を生成する。
static java.lang.StringBuffer handleRepeatElement(org.jdom.Element ele, java.util.Map params, java.util.List paramsMapList)
          <repeat>要素からSQL文字列を生成。
static java.lang.StringBuffer handleSwitchElement(org.jdom.Element ele, java.util.Map params, java.util.List paramsMapList)
          <switch>要素からSQL文字列を生成。
static java.lang.StringBuffer handleVarElement(org.jdom.Element ele, java.util.Map params, java.util.List paramsMapList)
          <var>要素からSQL文字列を生成。
static java.lang.StringBuffer handleWhereElement(org.jdom.Element ele, java.util.Map params, java.util.List paramsMapList)
          <where>属性からSQL文字列を生成。
static boolean isSpaceOnly(java.lang.String str)
          空白のみの文字列かどうかをチェックする。
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

メソッドの詳細

handleQueryElement

public static java.lang.StringBuffer handleQueryElement(org.jdom.Element ele,
                                                        java.util.Map params,
                                                        java.util.List paramsMapList)
<query>、<subquery>、<case>、<default>要素からSQL文字列を生成する。

 query、switch、list、where、var、repeat、between要素、CDATAが記述可能です。
 テキストが有効なのは、query、case(default)、subquery要素の
 直下のコンテンツのみです。
 その他のwhere、switch、list要素では、テキストは許されません。
 また、その逆でquery、case(default)、subquery要素の直下ではconst要素は使用出来ません。
 const要素はwhereおよびlist要素でのみ使用できます。
 

パラメータ:
ele - 要素オブジェクト
params - 入力パラメータMap
paramsMapList - バインド変数のList
戻り値:
SQL文字列(有効なSQL文字列が生成できない場合にはnull)

handleConstElement

public static java.lang.StringBuffer handleConstElement(org.jdom.Element ele,
                                                        java.util.Map params,
                                                        java.util.List paramsMapList)
<const>要素からSQL文字列を生成する。

 この要素は、var、repeat、betweenと同様にleaf(枝の先端)となる要素です。
 子要素は存在しません。
 また、このconst要素はwhere要素、またはlist要素でのみ指定できます。
 

パラメータ:
ele - 要素オブジェクト
params - 入力パラメータMap
paramsMapList - バインド変数のList
戻り値:
SQL文字列(文字列が生成できない場合にはnull)

handleVarElement

public static java.lang.StringBuffer handleVarElement(org.jdom.Element ele,
                                                      java.util.Map params,
                                                      java.util.List paramsMapList)
<var>要素からSQL文字列を生成。

 var要素内には、パラメータに対応するバインド変数「?」を
 一つだけ含むテキストであることが想定されています。
 子要素がある場合には無視されます。
 また、パラメータが存在しない場合にはこの要素の存在は
 無視されるため、動的にSQLを作成する場合にはvar要素と
 where、list要素を利用してSQLを定義します。
 

パラメータ:
ele - 要素オブジェクト
params - 入力パラメータMap
paramsMapList - バインド変数のList
戻り値:
SQL文字列(文字列が生成できない場合にはnull)

handleRepeatElement

public static java.lang.StringBuffer handleRepeatElement(org.jdom.Element ele,
                                                         java.util.Map params,
                                                         java.util.List paramsMapList)
<repeat>要素からSQL文字列を生成。

 基本的にrepeat要素はIN述語のデータを展開するときのみに使用します。
 それ以外の使用については想定していませんので注意してください。
 また、var要素でreq属性がtrueである時と同様にパラメータが存在しなければ
 エラーとします。
 

パラメータ:
ele - 要素オブジェクト
params - 入力パラメータMap
paramsMapList - バインド変数のList
戻り値:
SQL文字列(文字列が生成できない場合にはnull)

handleBetweenElement

public static java.lang.StringBuffer handleBetweenElement(org.jdom.Element ele,
                                                          java.util.Map params,
                                                          java.util.List paramsMapList)
<between>要素からSQL文字列を生成。

 between要素はSQLのBETWEEN句のように、2つセットで指定する必要が
 ある場合に利用します。従って、varと違って2つのKEYの存在チェックを
 行なう必要があります。
 また、便宜上betweenという名前にしただけで、between句にしか使えない物では
 ありません。  
 

パラメータ:
ele - 要素オブジェクト
params - 入力パラメータMap
paramsMapList - バインド変数のList
戻り値:
SQL文字列(文字列が生成できない場合にはnull)

handleSwitchElement

public static java.lang.StringBuffer handleSwitchElement(org.jdom.Element ele,
                                                         java.util.Map params,
                                                         java.util.List paramsMapList)
<switch>要素からSQL文字列を生成。

 switch要素内では、case、defaultしか許されません。
 テキストも無視されます。
 

パラメータ:
ele - 要素オブジェクト
params - 入力パラメータMap
paramsMapList - バインド変数のList
戻り値:
SQL文字列(文字列が生成できない場合にはnull)

handleListElement

public static java.lang.StringBuffer handleListElement(org.jdom.Element ele,
                                                       java.util.Map params,
                                                       java.util.List paramsMapList)
<list>要素からSQL文字列を生成。

 list要素内では、テキストは許されません。
 これは、listが子Elementの結果同士を結合するための
 機能を実装するためです。
 従ってvar、repeat, const、list、switch、subqueryの要素および
 空白文字列のみを許可し、残りの要素は無視します。
 ただし、空白文字列に対してはjoin文字列で結合は行ないません。
 

パラメータ:
ele - 要素オブジェクト
params - 入力パラメータMap
paramsMapList - バインド変数のList
戻り値:
SQL文字列(文字列が生成できない場合にはnull)

handleWhereElement

public static java.lang.StringBuffer handleWhereElement(org.jdom.Element ele,
                                                        java.util.Map params,
                                                        java.util.List paramsMapList)
<where>属性からSQL文字列を生成。

 list要素との違いは、join属性がセットされていなければ、
 値を"AND"でjoin属性をセットすることと、WHERE文字列を
 先頭に追加することです。
 

パラメータ:
ele - 要素オブジェクト
params - 入力パラメータMap
paramsMapList - バインド変数のList
戻り値:
SQL文字列

handleLikeAttribute

public static java.lang.Object handleLikeAttribute(java.lang.String likeStr,
                                                   java.lang.Object valueObj)
<like>属性がある場合にはバインドする変数にワイルドカードを追加する。

変数がStringではない場合には、何もしない。

パラメータ:
likeStr -
valueObj -
戻り値:
バインド変数文字列

isSpaceOnly

public static boolean isSpaceOnly(java.lang.String str)
空白のみの文字列かどうかをチェックする。

実際には、半角空白、全角空白、CR、LF、タブ以外の 文字が入っていないかをチェックしている。

パラメータ:
str -
戻り値:
空白のみならtrue