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

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

public class DBCodeListLoader
extends Object
implements ReloadableCodeListLoader

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

このクラスを用いてコードリストを生成する場合は、 dataSource属性に使用するデータソースを指定したあと、 init-method属性にloadを指定し、load()メソッドを最初に実行する必要がある。
また、本クラスはスレッドセーフではないため、 業務閉塞機能もしくはサーバ閉塞機能等を利用し、 コードリストへの参照が行われない状態にてreload()メソッドを 実行するように閉塞設計を行う必要がある。
スレッドセーフとする場合、コードリスト参照時に排他制御がかかり 性能劣化をもたらす原因となり得るため注意が必要である。

コードリストをデータベースから取得するための 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

コンストラクタの概要
DBCodeListLoader()
           
 
メソッドの概要
 CodeBean[] getCodeBeans()
          コードリストを取得する。
 DataSource getDataSource()
          dataSourceを取得する。
 String getSql()
          コードリストを取得するSQLを取得する。
 void load()
          コードリストの初期化を行う。
protected  void loadCodeList()
          コードリストを読み込む。
 void reload()
          コードリストの再読み込みを行う。
 void setDataSource(DataSource dataSource)
          dataSourceを設定する。
 void setSql(String sql)
          コードリストを取得するSQLを設定する。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

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 DataSource getDataSource()
dataSourceを取得する。

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

setDataSource

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

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

getSql

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

戻り値:
SQL文

setSql

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

パラメータ:
sql - SQL文


Copyright © 2012. All Rights Reserved.