PRODUCT: EZServlet Package: EZ�N�b�N

おばんざい
更新履歴:
リリース(2001/09/05)

目次:

1. 高機能プロパティハンドラ:CoolProperties

com.ngMAT.Common.CoolPropertiesは、java.util.Propertiesをベースに、以下のような機能拡張を行った高機能プロパティハンドラである。

1-1. Unicode以外の国際対応:#EncodingType

CoolPropertiesで読み込むプロパティファイルはファイル内で
     #EncodingType=<enctypename>
と指定することで任意のエンコーディングでロードされる。Includesされるファイルを含めて一回指定すれば、全てが、そのエンコーディングでロードされる。通常は、プロジェクト全体共通のプロパティファイル内で指定する。

例:
#EncodingType=SJIS

1-2. 階層型ファイル構成:Includes

プロパティファイル内で、
Includes=<filenamelist>
と指定することで、<filenamelist>で指定されたファイルが指定された位置でロードされる。<filenamelist>には","で区切り複数ファイル名指定可能であるが、Includes指定を複数回してもよい。

例:
includes=/hoge/properties/env.properties

1-3. 複数環境切り替え機能:#ifdef

プロパティファイル内で
#ifdef:<varname>=<value>
...
#endif
と囲むことで、その行より手前で定義されているプロパティ<varname>の値に依存した形で、プロパティを設定することができる。

例:
以下の様に記述すると、env.propertiesの中で指定するENVの値を変更するだけで、複数の環境に共通のプロパティファイルを作成可能。もちろん、#ifdefばかり並べてしまっては単一のファイルにする意味は無くなるので、#ifdefは極力少なくなるようファイルを分割するほうが望ましい。

includes=/hoge/properties/env.properties

#ifdef:ENV=DEV
includes=/hoge/properties/url.dev.properties
#endif
#ifdef:ENV=TEST
includes=/hoge/properties/url.production.properties
#endif
#ifdef:ENV=TPRODUCTION
includes=/hoge/properties/url.production.properties
#endif

1-4. 変数参照機能(V2001のみ):#VariableReference, {$...}

プロパティファイル内で、
#VariableReference=enable
と指定することで、その行以降のプロパティ宣言で、定義済みプロパティ値の参照が可能となる。参照する際には{$<varname>}形式で記述する。なお、{$...}という文字列そのものを値としたい場合には、直前にもう1つ"{"を配置し、{{$varname}と記述する。さらに、もう1つ"{"を直前に配置すると最初の"{"がエスケープされる。

例:
以下の例では、boyoyonの値は、".....HOGEHOGE---{{$foo} --- {POIPOI}"となる。

hoge=HOGEHOGE
foo=POIPOI
boyoyon=.....{$hoge}---{{$foo} --- {{{$foo}}


2. データベースコネクションプール:DBConnction, PooledDBConnection

com.ngMAT.Common.DBConnection及びcom.ngMAT.Common.PooledDBConnection(V2001のみ)は、番犬(デフォルト名は「パトラッシュ」)付きのデータベース接続プール機能を提供する。なお、DBConnectionでは、単一の設定(結果的に接続先は単一に限定)しか対応しない。2回目以降のDBConnection#getConnection(String)呼び出しでのプロパティファイル名は同一でなければならない(というか別のものを渡しても有効にならない^^;)

データベースコネクションプールのプロパティファイル設定の詳細については、それぞれのクラスのドキュメントを参照されたい。

Ver. 1com.ngMAT.Common.DBConnection
Ver. 2001com.ngMAT.Common.DBConnection
com.ngMAT.Common.PooldDBConnection

3. HTMLテンプレート:HTMLTemplate

com.ngMAT.HTMLTemplateは、HTML「など」テキストファイル内の決められた形のタグ(デフォルトでは"または形式)を動的なデータで穴埋めを容易に行うためのクラスである。名前は"HTML"Templateだが、特にHTMLに特化しているわけではないので、メール本文などのプレーンテキストも扱える。


4. 可変行数テーブル:ParsedTable(V2001のみ)

com.ngMAT.HTML.ParsedTableは上記HTMLTemplateで扱うテンプレートファイルの中で、
[[#table name=pared_table_name headers=h rows=r]]
  <TABLE ...>
    <TR ...>
      <TD ...>head1</TD ...>
      <TD ...>head2</TD ...>
    </TR ...>
    <TR ...>
      <TD ...></TD ...>
      <TD ...></TD ...>
    </TR ...>
    <TR ...>
      <TD ...>sample1</TD ...>
      <TD ...>sample2</TD ...>
    </TR ...>
  </TABLE>
[[/#table]]
の様に記述された部分から、HTMLTemplateオブジェクト生成時に、自動的に生成される。この指定とクラスを使用することで、単一のHTMLテンプレート上で可変行数のテーブルも含んだ形でデザインすることができる。
なお、headersとrowsの値を足した行数目以降のテーブル行は実行時に無視される。また、<TABLE>..</TABLE>のネストには対応していないので、[[#table..]]..[[/#table]]の中に、2つ以上の<TABLE>, </TABLE>が登場してはならない。


5. データベース - CSVインタフェースツール : Bcp, PGBcp

com.ngMAT.tools.Bcp(Oracle用)及び、com.ngMAT.tools.PGBcp(PostgreSQL用 V2001のみに収録)は、CSVファイルからテーブルへのロード、及び、テーブルからCSVファイルへの抽出をサポートするツールである。以下のようなオプション機能を有する。

  • 抽出時の対象を絞り込むwhere句の指定(applicationname.Condition)
  • 抽出時に文字列フィールドを引用符で囲むかどうかの指定(Bcp.QuateStringColumns)
  • 抽出時に文字列フィールド中の改行を取り除くかどうかの指定(Bcp.CRLFShuldBeRemoved)
  • 前処理の指定(Bcp.PreProcess、但し、DeleteAll または Truncateのみ指定可)
  • おまけ処理の指定(applicationname.OptionalProcess.Each)

applicationname.OptionalProcess.Each=update hoge set poi=1 where hoge_id=:hoge_id:
とすると、抽出時などに、抽出済みであることを指定するフィールドの更新が抽出と同時に行うことができる。ちなみに、:hoge_id:は、この場合、抽出対象のテーブルのカラムの抽出された各レコードの該当フィールド値に置き換え処理される。
機能詳細については、それぞれのクラスのドキュメントを参照されたい。