jp.terasoluna.fw.web.codelist
クラス DBCodeListLoader

java.lang.Object
  上位を拡張 jp.terasoluna.fw.web.codelist.DBCodeListLoader
すべての実装されたインタフェース:
CodeListLoader, ReloadableCodeListLoader

public class DBCodeListLoader
extends java.lang.Object
implements ReloadableCodeListLoader

コードリスト情報の初期化をデータベースを用いて行う、 ReloadableCodeListLoader 実装クラスである。

このクラスを用いてコードリストを生成する場合は、 dataSource属性に使用するデータソースを指定したあと、 init-method属性にloadを指定し、load()メソッドを最初に実行する必要がある。

コードリストをデータベースから取得するための SQL は、Bean定義ファイルから 設定する。

Bean定義ファイルの設定例。
データソースをTerasolunaDataSourceとして定義している場合。

 <bean id="loader1"
       class="jp.terasoluna.fw.web.codelist.DBCodeListLoader"
       init-method="load">
   <property name="dataSource">
     <ref bean="TerasolunaDataSource"/>
   </property>
   <property name="sql">
     <value>SELECT KEY, VALUE FROM CODE_LISTS</value>
   </property>

 </bean>
 

コードリストを格納するクラス CodeBean は、属性 id 、 name を持ち、 SELECT 文で指定されたカラムの順番で CodeBean に 格納される。
上記例では、 KEY が id 、 VALUE が name の順番で格納される。
取得されたカラムが2つに満たない場合、例えば上記例で KEY のみ取得した場合は、 name に null が格納される。 SELECT 文で取得したカラムが3つ以上であるときは、 3つめ以降のカラムは無視される。

SQL で取得された結果は、サーブレットコンテキストに格納され、 JSP 内において、 Struts の<logic:iterate> タグの name 属性や、<html:options>タグの collection 属性をbean名として参照する。
以下は、bean名を "loader1" として、 <html:options> の collection属性に指定 した場合の例である。

JSP 内でのコードリスト使用例。

  <ts:defineCodeList id="loader1" />
  …
  <html:select property="selectOptions">
    <html:options collection="loader1"
                  labelProperty="name"
                  property="id"/>
  </html:select>
  

コードリストのリロードについては、 ReloadCodeListAction を、またコードリストのJSP内での使用方法は、 DefineCodeListTag と、 WriteCodeCountTag を参照のこと。

関連項目:
CodeBean, ReloadCodeListAction, DefineCodeListTag, WriteCodeCountTag

フィールドの概要
private  java.util.List<CodeBean> codeLists
          コードリスト。
private  javax.sql.DataSource dataSource
          DB接続に使用するデータソース。
private  java.lang.Object lockObject
          コードリストに使用するロックオブジェクト。
private  org.apache.commons.logging.Log log
          ログクラス。
private  java.lang.String sql
          コードリストを取得するためのSQL。
 
コンストラクタの概要
DBCodeListLoader()
           
 
メソッドの概要
 CodeBean[] getCodeBeans()
          コードリストを取得する。
 javax.sql.DataSource getDataSource()
          dataSourceを取得する。
 java.lang.String getSql()
          コードリストを取得するSQLを取得する。
 void load()
          コードリストの初期化を行う。
protected  void loadCodeList()
          コードリストを読み込む。
 void reload()
          コードリストの再読み込みを行う。
 void setDataSource(javax.sql.DataSource dataSource)
          dataSourceを設定する。
 void setSql(java.lang.String sql)
          コードリストを取得するSQLを設定する。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

log

private org.apache.commons.logging.Log log
ログクラス。


codeLists

private java.util.List<CodeBean> codeLists
コードリスト。

関連項目:
CodeBean

sql

private java.lang.String sql
コードリストを取得するためのSQL。


dataSource

private javax.sql.DataSource dataSource
DB接続に使用するデータソース。


lockObject

private final java.lang.Object lockObject
コードリストに使用するロックオブジェクト。

コンストラクタの詳細

DBCodeListLoader

public DBCodeListLoader()
メソッドの詳細

load

public void load()
コードリストの初期化を行う。

loadCodeList()を使って既に設定されている dataSourceと指定されたSQL文を元にコードリストを生成する。 コードリストがすでに存在する場合には、何も行わない。

定義:
インタフェース CodeListLoader 内の load

reload

public void reload()
コードリストの再読み込みを行う。

codeListsの同期を取った上でloadCodeList() を呼び出す。

定義:
インタフェース ReloadableCodeListLoader 内の reload

loadCodeList

protected void loadCodeList()
コードリストを読み込む。 dataSourceと指定されたSQL文を元にコードリストを生成する。


getCodeBeans

public CodeBean[] getCodeBeans()
コードリストを取得する。 コードリストは CodeBean の配列として取得できる。
※コードリストは原則としてアプリケーション中で一意となる情報である。 このメソッドをオーバーライドする場合は、業務ロジックなどで コードリストの内容が編集されても影響がないように実装する必要がある。

定義:
インタフェース CodeListLoader 内の getCodeBeans
戻り値:
コードリスト

getDataSource

public javax.sql.DataSource getDataSource()
dataSourceを取得する。

戻り値:
dataSource を表すフィールド値。

setDataSource

public void setDataSource(javax.sql.DataSource dataSource)
dataSourceを設定する。

パラメータ:
dataSource - dataSourceを表すフィールド値。

getSql

public java.lang.String getSql()
コードリストを取得するSQLを取得する。

戻り値:
SQL文

setSql

public void setSql(java.lang.String sql)
コードリストを取得するSQLを設定する。

パラメータ:
sql - SQL文