概要: Webエンジン Ver 5.1.9.0 (2010/08/01) をリリースいたします。 今回のリリースのおける主な変更点は、トランザクション対応及び、各種リファクタリングです。 (1)トランザクション対応 JSPの各タグで処理されるDB処理を1つのトランザクションとして実行できる機能を追加します。 従来は、各タグで独立でCommit/Rollbackを発行していたため、一貫性を保った処理を行うことが できませんでした。 今回の対応では、新たにog:transactionタグを追加し、このタグに囲われた各子タグでは、同じ DB接続を流用することで、1つのトランザクションとして扱えるようにしています。 (2)各種リファクタリング FindBugs,lint4j,PMDで得られた結果等から各種リファクタリングを行っています。 (詳細は、リリースノートを参照して下さい) ※ バージョンアップされる場合は、ビルドファイル(verup.x.x.x.x.zip)に含まれるchanges.txtを確認の上、 作業をお願いします。 ※ 変更点に関する詳細及びその他の修正内容については、添付のリリースノートを参照下さい。 5.1.9.0 (2010/08/01) [DB定義DB・シーケンス定義追加] build.xml シーケンス出力を追加 GF09 新規テーブル gf/jsp/GF2042 新規画面 gf/jsp/GF2140 シーケンススクリプト出力機能追加 gf/jsp/GF2150 シーケンススクリプト出力機能追加 org.opengion.plugin.table.TableFilter_SEQRESET org.opengion.plugin.table.TableFilter_SEQRESET_FIREBIRD org.opengion.plugin.table.TableFilter_SEQRESET_HSQLDB org.opengion.plugin.table.TableFilter_SEQRESET_MYSQL org.opengion.plugin.table.TableFilter_SEQRESET_POSGRE org.opengion.plugin.table.TableFilter_SEQRESET_SQLSERVER [UNIQ番号シーケンス名/トリガー名変更] Oracleでは、MySQLやPostgreSQLなどのように、シーケンス番号を採番するためのカラム種別が 存在していません。このため、テーブル毎にシーケンスを作成し、トリガーでシーケンス番号を 採番しています。 現状では、このシーケンス名は、[TABLE_NAME]S01となっていますが、この場合、同じ命名規則で 新たにシーケンスを定義しようとすると、[TABLE_NAME]S02から採番する必要があり、管理上不都合が 生じる可能性があるため、UNIQカラムのシーケンス番号を取得するためのオブジェクトは、 [TABLE_NAME]S00(トリガーは、[TABLE_NAME]T00)にオブジェクト名を変更します。 但し、既に[TABLE_NAME]S02などのように定義されている、GE32S02(メールモジュールで使用)については、 過去との互換性を考慮し、今回のタイミングでは変更しません。 org.opengion.plugin.table.TableFilter_TABLE.makeUniqSeq(int[], String[]) org.opengion.plugin.table.TableFilter_TABLE.makeUniqTrig(int[], String[], String) org.opengion.plugin.table.TableFilter_TABLE_FIREBIRD.makeUniqSeq(int[], String[]) org.opengion.plugin.table.TableFilter_TABLE_FIREBIRD.makeUniqTrig(int[], String[], String) [ファイル入出力不具合対応] "[Abstractクラス移動]"による変更で、Defaultのファイル入出力が正しく動作しないバグを修正します。 org.opengion.hayabusa.io.TableReader_Default org.opengion.hayabusa.io.TableWriter_Default org.opengion.hayabusa.io.AbstractTableReader org.opengion.plugin.io.TableReader_Default org.opengion.plugin.io.TableWriter_Default [メソッド修正] メソッドの引数を使わずに、インスタンス変数をそのまま使用していた ため、引数を使用するように変更します。 処理的には同じですが、将来的に、何か不測の事態を招く可能性があるため 修正しておきます。 fukurou.xml.XML2TableParser#getCpParentTagName( final String fQName ) BufferedInputStream のスコープを小さくします。(単に変数が離れていたため) fukurou.util.ZipFileUtil#addZipEntry( final ZipOutputStream zos, ・・・・ if 文の 判定を 反転し、then と else を入れ替えます。 ソースチェックの警告対応です。 Avoid if (x != y) ..; else ..; plugin.daemon.Daemon_Report#initDaemon() [画面自動作成] 不要なメソッド・使われていないメソッドを廃止します。 fukurou.xml.OGNode#addTabNode( final int tab ) 廃止 fukurou.xml.OGNode#addTabNode( final int tab , final OGNode node ) 廃止 fukurou.xml.OGAttributes#setAttrTab( final String attTab ) 廃止 id 属性のみ特別にキャッシュしておきます。 fukurou.xml.OGAttributes#OGAttributes( final String attTab , final Attributes attri , final boolean useCR ) fukurou.xml.OGAttributes#setVal( final int adrs , final String val ) { fukurou.xml.OGAttributes#add( final String key , final String val ) { fukurou.xml.OGAttributes#add( final int adrs , final String key , final String val ) { fukurou.xml.OGAttributes#remove( final int adrs ) { メソッドの新規追加 fukurou.xml.OGAttributes#getVal( final String key ) { fukurou.xml.OGAttributes#getId() { return id; } JspSaxParser 、OGAttributes 、OGDocument、OGElement、OGNode について、 それぞれ、修正を行いました。 新規クラスの追加・パッケージの追加 画面自動作成 に伴って、関連するクラスを追加します。 ただし、現状は、仮状態とします。内容の見直しが入る予定です。 hayabusa.taglib.JspCreateTag.java 新規追加 hayabusa.develop パッケージの追加 AbstractJspCreate.java JspConvertEntity.java JspCreateFactory.java JspEnumeration.java plugin.develop パッケージの追加 JspCreate_OG_COLUMN.java JspCreate_OG_COMMENT.java JspCreate_OG_QUERY.java JspCreate_OG_SELECT.java JspCreate_OG_VIEW.java これに伴い、JspCreateTag に関する tld の変更があります。 jspCreate タグ追加 gf/src/META-INF/hybs-taglib.tld gf/WEB-INF/hybs-taglib.tld [画面自動作成 JSP側、リソース追加] 画面リソースの追加、修正を行います。 既存のアドレス、名称の変更もありますので、ご注意ください。 GF2200 common/gamen/13_GUILIST GF2201 common/gamen/11_GUIMAKE GF2202 common/gamen/12_GUIMAKEGUI GF2203 廃止 SPCDEF_SHIYO 仕様書DB登録 GF2250 青紙定義 GF90 GF2251 ← GF2252 移動(利用DB定義) GF91 A, GF90 GF2252 ← GF2252 移動(画面項目定義) GF92 GF2253 画面リンク設定 GF2254 項目チェック基準 GF2255 DBセット基準 GF2256 PG変更履歴 [シーケンス対応] Oracle,Postgresql,MySQL,HSQLDB,Firebirdについて、透過的にシーケンスが扱えるようにします。 近い将来に、シーケンス自体も、DB定義DBで管理し、ここからスクリプトを自動生成することで、 より各DBを意識することなく、シーケンスを扱うことが出来るように対応する予定です。 org.opengion.hayabusa.taglib.BizLogicTag.call(String, Transaction) org.opengion.fukurou.db.DBFunctionName.getSequence(String, Transaction) org.opengion.fukurou.business.BizLogicHelper.setConnection(Connection) 廃止 org.opengion.fukurou.business.BizLogicHelper.setDbid(String) org.opengion.fukurou.business.BizLogicHelper.setTransaction(Transaction) org.opengion.fukurou.business.AbstractBizLogic.seq(String) org.opengion.fukurou.business.AbstractBizLogic.setConnection(Connection) 廃止 org.opengion.fukurou.business.AbstractBizLogic.setDbid(String) org.opengion.fukurou.business.AbstractBizLogic.setTransaction(Transaction) org.opengion.fukurou.business.AbstractBizLogic.exec() org.opengion.fukurou.business.AbstractBizLogic.call(String, String, String, int, ArrayTableModel) [DBスクリプトの移動] DBスクリプトの配置場所を見直します。 db/[DBName]/sql/06_DATA -> db/common/sql/01_DATA に移動(各DB共通化) db/[DBName]/xml/install/06_DATA -> db/common/xml/install/01_DATA に移動(各DB共通化) db/xml -> db/common/xml/install/01_DATA db/common/xml/update/const に移動(不要データが更新される問題に対応) build.xml org.opengion.hayabusa.common.SystemInstaller.loadXMLScript(String, String) org.opengion.hayabusa.common.SystemInstaller.execScripts(String, String) [Calc帳票・複数シート(シートブレイク)機能 バグ修正] Calc帳票システムの複数シート(シートブレイク)機能で、要求NOの最終行に対して、正しくシートブレイク処理が 行わないバグを修正します。 org.opengion.hayabusa.report2.OdsContentParser.getBodyValue(String, int) [パッケージ依存関係見直し] fukurouパッケージは、最下位(最もベースとなる)パッケージなので、hayabusa パッケージを 混ぜないようにします。 hayabusa.common.HybsSystem をコメントアウトして、fukurou 内部に記述します。 fukurou.util.ErrMsg.java(18): import org.opengion.hayabusa.common.HybsSystem; fukurou.util.ErrorMessage.java(21): import org.opengion.hayabusa.common.HybsSystem; fukurou.util.SystemParameter.java(27): import org.opengion.hayabusa.common.HybsSystem; [クラス見直し] JspSaxParser で、static メソッドを廃止。通常のオブジェクトクラスとして扱います。 また、JspSaxParser で、ディレクトリコピー処理で、間にフィルター機能を追加します。 これは、JspParserFilter インターフェースを add できるようにします。 fukurou.xml.JspSaxParser.java fukurou.xml.JspParserFilter.java 新規追加 [taglet の表示方法見直し] カスタムタグの説明用の 独自タグ og.tag の処理方法を変更します。 従来は、og.tag の配列を、テーブルに設定するようなイメージでしたが、 元々、このタグは一つしか現れないため、単純に合成するようにします。 その際、
タグで囲うことで、元のドキュメントのレイアウトを生かすように します。 他のタグレットも、若干修正します。 fukurou.taglet.TagletRev#toString( final Tag[] tagTags ) fukurou.taglet.TagletFormSample#toString( final Tag[] tagTags ) fukurou.taglet.TagletTag#toString( final Tag[] tagTags ) AbstractTaglet.java に対して、処理中のテキストのインラインコメント {@link ・・・} を処理できるようにメソッドを追加します。 例えば、{@link org.opengion.hayabusa.db.CellEditor CellEditor} と登録すると、 Editor に変換します。 fukurou.taglet.AbstractTaglet#link( final String in ) 新規追加 [コメント修正] BizLogicTag の setCommandメソッドのドキュメントを修正します。 入力可能な引数を指定するところで、自分のではなく、QueryTag の static 変数を指定していたため。 自分で指定するには、private static 変数を、public static に変更します。 hayabusa.taglib.BizLogicTag#CMD_ENTRY private static final → public static final 変更 hayabusa.taglib.BizLogicTag.java(420): * @see コマンド定数 javaDoc で警告が出ていたので、修正します。(BizLogic インターフェースが削除された件) hayabusa.taglib.BizLogicTag.java:101 警告 - タグ @link: 参照が見つかりません: org.opengion.fukurou.business.BizLogic BizLogic → BizLogicHelper に変更 renderer hayabusa.taglib.ColumnEditorTag.java(544): * editor hayabusa.taglib.ColumnEditorTag.java(561): * dbType hayabusa.taglib.ColumnTag.java(797): * renderer hayabusa.taglib.ColumnTag.java(814): * editor hayabusa.taglib.ColumnTag.java(831): * dbType hayabusa.taglib.ProcessTag.java(142): * process hayabusa.taglib.QueryTag.java(635): * queryType hayabusa.taglib.ReadTableTag.java(679): * readerClass hayabusa.taglib.ReportTableTag.java(468): * reportClass hayabusa.taglib.ViewFormTag.java(948): * viewFormType hayabusa.taglib.WriteTableTag.java(531): * writerClass 【タグ】と、@og.tag の位置関係がおかしいコメントを修正します。 基本的には、【タグ】 と@og.tag はセットで記述します。 また、【タグ】のすぐ下に、@og.tag を記述して、コメント自体をすべて取り込むようにします。 BackGamenTag.java 、CommonForwardTag.java、CommonTagSupport.java、DBMetaDataQueryTag.java、 EntryTag.java、FileWhereTag.java、MessageTag.java、TextTag.java、TfootTag.java、ViewParamTag.java [コメント削除] 古い API へのリンクを、削除します。 すでに、@see タグで、JavaDoc へのリンクは貼られているので、ほとんど重複状態でした。 hayabusa.taglib.FileWhereTag.java(194): * 正規表現 hayabusa.taglib.FileWhereTag.java(211): * 正規表現 [build.xml 修正] taglet で外部指定しているので、内部の tag 指定は不要なので、コメントアウトしておきます。以下の、javadoc タグの入れ子指定部分 これは使われていなかったので、取り合えずコメントアウト [Abstractクラス移動] pluginパッケージに含まれていた各種Abstractクラスをhayabusaパッケージ内に移動します。 org.opengion.plugin.column.AbstractDBType org.opengion.hayabusa.db に移動 org.opengion.plugin.column.DBTypeCheckUtil org.opengion.hayabusa.db に移動 org.opengion.plugin.column.AbstractEditor org.opengion.hayabusa.db に移動 org.opengion.plugin.column.AbstractRenderer org.opengion.hayabusa.db に移動 org.opengion.plugin.io.TableReader_Default org.opengion.hayabusa.io に移動 org.opengion.plugin.io.TableWriter_Default org.opengion.hayabusa.io に移動 org.opengion.plugin.query.AbstractQuery org.opengion.hayabusa.db に移動 org.opengion.plugin.table.AbstractTableFilter org.opengion.hayabusa.db に移動 org.opengion.plugin.view.AbstractViewForm org.opengion.hayabusa.html に移動 [Javaソース削除] TLD に存在していないソース 2点と、JSPサンプルに使用されていないソース 1点を削除します。 SQLTag は、TLD からも削除します。 hayabusa.taglib.JFreeChartTag.java 完全廃止(javaファイル削除) / すでに、TDLに存在しません。 hayabusa.taglib.TableInOut.java 完全廃止(javaファイル削除) / すでに、TDLに存在しません。 hayabusa.taglib.SQLTag.java 廃止タグ。サンプルJSPにないため、TDL から削除します。 [ソースチェック XSLT定義修正] 廃止タグ、廃止属性の警告の関係で、定義ファイルを修正しました。 JFreeChartTag、TableInOut、SQLTag のクラス廃止 headタグの useInputFocus属性、 writeTableタグの direct 属性を警告に追加しました。 あと、画面表示で、display 属性を追加しました。 gf\jsp\DOC18\xslt\GF70_PROG.xsl gf\jsp\DOC18\query.jsp gf\jsp\DOC18\result.jsp [tldファイル 整合性] hybs-taglib.tld の指定と、各カスタムタグの設定の整合性を取ります。 以下の設定は、あくまで openGion のケースです。一般のTLDやカスタムタグの設定ルールと 異なるケースがあります。 ・TLDファイルの body-content の設定 JSP :JSPとして解釈します。BODYを使う場合は、基本的に JSP です。 tagdependent :そのまま使用します。BODYを使わない場合に設定します。 Empty :BODYなしの場合の設定ですが、厳密にBODYを書いてはいけないので、基本、使いません。 ・doStartTag() の戻り値 SKIP_BODY :BODY部の評価を行いません。つまり、tagdependent とセットで使用します。 EVAL_BODY_INCLUDE :BODY部の評価を行いますが、バッファしません。つまり、doAfterBody()メソッドを呼ばないケースです。 BODY に書かれた内容が、そのまま、出力されます。 EVAL_BODY_BUFFERED :BODY部の評価を行い、かつ、doAfterBody()メソッドを呼ぶ場合は、必須です。 BODY に書かれた内容は出力されません。 つまり、下記の組み合わせのみとします。 BODYなし tagdependent SKIP_BODY BODY部になにか書かれていてもなにもしない。 BODYあり JSP EVAL_BODY_INCLUDE BODY部のJSP結果がそのまま、出力されます。 BODYあり JSP EVAL_BODY_BUFFERED doAfterBody()を使用、または、BODY部の出力を明示的に制御したい場合。 ※ Empty が使えなくなった今、tagdependent と JSP の違いは、BODYあり/なし を明示的に示すためだけに 設定することにします。すべてを、JSP に統一することも可能ですが、あえて区別することにします。 ※ EVAL_BODY_INCLUDE と EVAL_BODY_BUFFERED の違いは、doAfterBody() で値を使用するには、必ず EVAL_BODY_BUFFERED にしなければなりませんが、使わない場合は、BODY部に書かれた設定値を JspWriter に渡すかどうかの判定になります。 EVAL_BODY_BUFFERED の場合は、BODY に書かれた内容は、JspWriter に渡されません。 例えば、一連の処理をBODY部で実行させる場合、その結果(例えば、エラーメッセージ等も含む)を表示させたい 場合は、EVAL_BODY_INCLUDE にしておく必要があります。 逆に、BODY部のタグが、findAncestorWithClass などで上位の親に設定値をすべて渡してしまうケースでは、 上位の親に doAfterBody() がなかったとしても、EVAL_BODY_BUFFERED として、JspWriter に出力しない ケースもありえます。 ・TLDファイルの body-content の設定 InputTag.java → JSP DatabaseMetaDataTag.java → tagdependent DirectXMLSaveTag.java → tagdependent MailSenderTag2.java → tagdependent PopupTag.java → tagdependent RegistryQueryTag.java → tagdependent TableMergeTag.java → tagdependent TableUpdateParamTag.java → tagdependent TabListTag.java → tagdependent ・doStartTag() の戻り値(処理用タグなので、BODY部の表示は出さない。) ViewMarkerTag → EVAL_BODY_BUFFERED ViewLinkTag → EVAL_BODY_BUFFERED EntryTag → EVAL_BODY_BUFFERED WEB-INF/hybs-taglib.tld src/META-INF/hybs-taglib.tld [Transaction 続き] fukurou.db.DBUtil.java ほぼ、すべてのメソッドを修正、Transaction 対応メソッドを新規追加 hayabusa.taglib.QueryTag#traceQuery( final String sql , final Transaction tran ) hayabusa.taglib.TableExistTag.java 廃止タグなので、修正を行いません。 hayabusa.taglib.DataCheckTag.java#doEndTag() hayabusa.taglib.DataCheckTag.java#checkSql( final String str, final ErrMessageManager manager, final String[] values ・・・ hayabusa.taglib.DataCheckTag.java#checkRows( final String str, final ErrMessageManager manager, final Transaction tran ) hayabusa.db.TableFilter#setApplicationInfo( ApplicationInfo appInfo ) ; 廃止 hayabusa.db.TableFilter#setTransaction( Transaction tran ) ; 新規追加 hayabusa.taglib.TableFilterTag#doEndTag() plugin.table.AbstractTableFilter#setApplicationInfo( ApplicationInfo appInfo ) ; 廃止 plugin.table.AbstractTableFilter#setTransaction( Transaction tran ) ; 新規追加 plugin.table.TableFilter_DBSELECT#execute() plugin.table.TableFilter_INDEX#execute() plugin.table.TableFilter_TABLE#execute() [DB定義DB・リソース連携改善] DB定義DB・リソース連携機能で、差分を取る際のリソースの検索方法について、'**'も含むことができるようにします。 gf/jsp/GF2120 [JSPチェック] データベース定義の変更 VIEW_LENGTH、MAX_LENGTH の属性情報が、標準リソースと異なるので、 ここでは別の名称に変更します。 それぞれ、_LENGTH を _SIZE にし、桁数は、20桁とします。 ※ 前回分のおさらい。 ALTER TABLE GF73 MODIFY ( USE_LENGTH VARCHAR2(20) NULL) ; ALTER TABLE GF73 RENAME COLUMN USE_LENGTH TO MAX_LENGTH; ALTER TABLE GF73 MODIFY ( VIEW_LENGTH VARCHAR2(20) ) ; ALTER TABLE GF73 MODIFY ( READONLY VARCHAR2(20) ) ; ALTER TABLE GF73 MODIFY ( DISABLED VARCHAR2(20) ) ; ALTER TABLE GF74 MODIFY ( DBID VARCHAR2(20) ) ; ※ 前回分から、さらに変更分 ALTER TABLE GF73 RENAME COLUMN VIEW_LENGTH TO VIEW_SIZE; ALTER TABLE GF73 RENAME COLUMN MAX_LENGTH TO MAX_SIZE; gf\jsp\DOC18\xslt\GF73_PROG.xsl gf\jsp\DOC13\result.jsp [spaceタグ修正] spase タグに、width 属性、colspan 属性を追加します。 従来は、ラベル部分(前半部分)の大きさ(width 属性)を指定するための labelWidth 属性と 値部分(後半部分)の大きさ(width 属性)を指定指定するための valueWidth 属性が ありましたが、全体の大きさを指定することができませんでした。 そこで、全体の大きさとして、width 属性を指定できるようにしました。 width 属性を指定した場合に、colspan を指定しなかった場合は、colspan="2" に強制的に セットされます。 hayabusa.taglib.SpaceTag#release2() hayabusa.taglib.SpaceTag#makeTag() hayabusa.taglib.SpaceTag#setWidth( final String width ) 新規追加 hayabusa.taglib.SpaceTag#setColspan( final String colspan ) 新規追加 [selectタグ修正] select タグに、addNoValue 属性を追加します。 この属性は、ColumnTag と、ColumnEditorTag にはありましたが、SelectTag には ありませんでした。 (SelectTagは、option を自分で登録するため、NoValue も自分で登録できるので。) ここでは、ColumnTag と同様の方法で、NoValue を登録できるように修正します。 (※ 初期値は、ColumnTag と異なり、false に設定します。これは、旧環境との 互換性のためです。) hayabusa.taglib.SelectTag#doStartTag() hayabusa.taglib.SelectTag#release2() hayabusa.taglib.SelectTag#setAddNoValue( final String flag ) 新規追加 [andタグ修正] and タグに、matchKey 属性、matchVal 属性を追加します。 and タグは、value 属性の中の、{@XXXX} が、null の場合、その条件を 消します。ところが、条件そのものが分岐するケースの場合、引数が、 null にならない場合や、条件違いで、検索するカラムが異なる場合など 分岐処理が発生すると、equals タグで判断する必要が出てきます。 SQL文のWHERE条件が、あまり複雑になると、見通しの悪いプログラムに なってしまいます。 そこで、この and タグを利用する/しない の判断に、matchKey 、matchVal 属性を使えるように機能追加します。 これは、Java の String クラスの、正規表現メソッドを利用して、 matchKey.matches( matchVal ) が、true の場合のみ、and タグを使用するように します。ただし、matchKey 、matchVal どちらかが null の場合は、 判定が無効ということで、true (利用する)とします。 hayabusa.taglib.SqlAndTag#release2() hayabusa.taglib.SqlAndTag#doEndTag() hayabusa.taglib.SqlAndTag#setMatchKey( final String mkey ) hayabusa.taglib.SqlAndTag#setMatchVal( final String mval ) [コードリソースのサブセット対応] コードリソースは、予め決められたプルダウンを作成するための情報を 持っていますが、それは、動的には変えることができません。 (DBMENUは、Select文の引数次第で条件を変えることができます。) 例えば、管理者と一般担当者で、選択できる項目が異なると、従来は、 2種類のコードリソースを用意しておく必要がありました。 また、進捗や状況、パターンに応じて、サブセットを用意したいケースが あったと思います。 ここでは、codeList 属性を追加することにより、ここに、コードリソースの コード値のサブセット(選択範囲)をカンマ区切りで指定することで、 指定のサブセットのみのコードリソースを再作成する機能を用意します。 hayabusa.resource.CodeData#subset( final String codeCsv ) hayabusa.resource.CodeData#subsetList( final String codeCsv ) 新規追加 hayabusa.resource.CodeData#subsetGroup( final String group ) 新規追加 hayabusa.resource.CodeData#subsetRole( final RoleMode role ) 新規追加 hayabusa.taglib.ColumnTag#release2() hayabusa.taglib.ColumnTag#setCodeList( final String list ) hayabusa.taglib.ColumnTag#setCodeGroup( final String list ) hayabusa.taglib.ColumnTag#getInsertTag( final DBColumn clm, final String value ) hayabusa.taglib.ColumnEditorTag#release2() hayabusa.taglib.ColumnEditorTag#setCodeList( final String list ) hayabusa.taglib.ColumnEditorTag#getModifyConfig( final DBColumn dbColumn ) [tldファイルの修正] spaceタグの、width 属性、colspan 属性 selectタグの、addNoValue 属性 andタグの、matchKey 属性、matchVal 属性 columnタグの、codeList 属性、codeGroup 属性 columnEditorタグの、codeList 属性、codeGroup 属性 Transactionタグ これらの属性追加に伴う、hybs-taglib.tld ファイルの更新を行います。 WEB-INF/hybs-taglib.tld src/META-INF/hybs-taglib.tld [コードリソースの階層メニュー対応] Selection_DB には実装されている、optgroup (階層メニュー)を、Selection_CODE にも入れます。 CodeData 、CodeDataLoader 上には、CODELVL などの階層メニューを作成するための 属性は取得しているが、Selection_CODE で利用していません。 データベースから直接取得する、Selection_DB では対応済みです。 ここでは、Selection_CODE にも階層メニューを作成機能を実装します。 hayabusa.resource.CodeData# CodeData( final String clm, final Map data ) hayabusa.resource.CodeData#useGroup() 新規追加 hayabusa.resource.CodeData#useParam() 新規追加 hayabusa.resource.CodeData#getCodeGroup( final int seqNo,final String group ) 廃止 hayabusa.resource.CodeData#isUse( final int seqNo ) 新規追加 hayabusa.resource.CodeData#useRoleMode() 新規追加 hayabusa.db.Selection_CODE#Selection_CODE( final CodeData cdData ) hayabusa.resource.CodeDataLoader#QUERY = "select CLM,CODE, hayabusa.resource.CodeDataLoader#QUERY2 = "select CLM,CODE, [秀丸エディタ 単語補完機能対応] 秀丸エディタの 単語補完機能が、秀丸 Ver7 以降で利用可能になっています。 これを受けて、jsp.hokan.txt ファイルを作成します。 なお、これを、秀丸の実行フォルダにコピーし、ファイルタイプ別の単語補完設定を行います。 ※ このファイルを利用するに当たり、以下の設定も追記しておいてください。 ・[その他]→[ファイルタイプ別の設定]→[その他・単語補完]の単語補完の検索対象で、 辞書ファイルとして、この、jsp.hokan.txt ファイルを登録します。 ファイルタイプは、.jsp にしておきます。 ・辞書ファイルの詳細ボタンで、右下 「さらに」ボタンをクリックします。 ・単語の先頭文字:< ・単語の途中文字:: ="| という設定をしておく必要があります。 その他の設定は、お好みで、お願いします。 build.xml src/xslt/jspHokan.xsl [JavaDoc の整合性チェック機能追加] fukurou.taglet.DocletSpecific build.xml _build.bat [タグリブのトランザクション対応] 通常のタグでは、コネクションプールより、その時々のコネクションを取り出して利用するため、 タグごとに異なるコネクションで処理されます。 また、commit や rollback などもそれぞれのタグで行われるため、連続処理時にエラーが 発生しても、中途半端な状態になります。 ここでは、各 DBID 単位にコネクションを共有し、このタグの間は、同じオブジェクトを commit や、rollback せずに使いまわすようにします。 これにより、複数タグ間のトランザクションや、異なる DBID 間のトランザクションを 実現します。 fukurou.db.Transaction 新規追加 fukurou.db.TransactionReal 新規追加 fukurou.db.TransactionImpl 新規追加 hayabusa.db.Query#setTransaction( final Transaction tran ) ; hayabusa.db.DBTableModelUtil#makeDBTable( final String stmt ,final String[] args , hayabusa.common.HybsSystem#TRANSACTION_KEY = "h_tran"; セッションにセーブするキー plugin.query.AbstractQuery#init() plugin.query.AbstractQuery#commit() plugin.query.AbstractQuery#rollback() plugin.query.AbstractQuery#close() plugin.query.AbstractQuery#realClose() plugin.query.AbstractQuery#getConnection() plugin.query.AbstractQuery#setTransaction( final Transaction tran ) hayabusa.taglib.TransactionTag 新規追加 hayabusa.taglib.QueryTag#doAfterBody() hayabusa.taglib.DirectTableInsertTag#create( final BufferedReader reader ) hayabusa.taglib.DirectWriteTableTag#create( final PrintWriter out ) hayabusa.taglib.DirectXMLSaveTag#doEndTag() hayabusa.taglib.BizLogicTag# hayabusa.taglib.BizLogicTag#release2() hayabusa.taglib.BizLogicTag#execute() hayabusa.taglib.BizLogicTag#call( final BizLogic logic ) hayabusa.taglib.QueryOptionTag#doAfterBody() hayabusa.taglib.UserInfoTag#doAfterBody() hayabusa.taglib.ValueTag#doAfterBody() [ConnData,ConnDataFactory の廃止(Deprecated)] fukurou専用のコネクション管理クラスでしたが、 現在は、ConnectionFactory.java と DBConfig.xml が使用できますので、 廃止します。(Deprecated) fukurou.process.ConnData fukurou.process.ConnDataFactory [JSPチェック] JSPファイルをUTF-8 でセーブする場合、BOM が付与されてしまうケースがありますが、 BOMが付くと、XSLT 変換できないケースがあります。 セーブするときに、BOM マーカーをOFF(つけない)します。 gf\jsp\GF6170\entry.jsp gf\jsp\GF6170\result.jsp gf\jsp\GF6170\undo.jsp gf\jsp\GF6170\update.jsp gf\jsp\GF9130\entry.jsp gf\jsp\GF9130\result.jsp gf\jsp\GF9130\undo.jsp gf\jsp\GF9130\update.jsp gf\jsp\GF9140\entry.jsp gf\jsp\GF9230\entry.jsp gf\jsp\GF9230\result.jsp gf\jsp\GF9230\update.jsp gf\jsp\GF9430\entry.jsp gf\jsp\GF9430\result.jsp gf\jsp\GF9500\result.jsp gf\jsp\GF9540\result.jsp gf\jsp\GF9610\entry.jsp gf\jsp\GF9620\entry.jsp JSPソースチェックの XSLT と、実データベースの整合性が取れていなかったため、 XSLT の修正と、DB定義の変更を行います。 以前のDB定義見直し時の対応漏れ(Ver5 専用設計とします) (TEXT → TEXT_DATA) jsp\DOC18\xslt\GF70_PROG.xsl jsp\DOC18\xslt\GF73_PROG.xsl (KEYS → P_KEYS) (VALS → P_VALS) gf\jsp\DOC18\xslt\GF71_PROG.xsl gf\jsp\DOC18\xslt\GF72_PROG.xsl (NAME → FORM_NAME) (VALUE → FORM_VAL) gf\jsp\DOC18\xslt\GF73_PROG.xsl (GF73 DB定義) gf\jsp\DOC13\result.jsp db\oracle\sql\01_TABLE\GF73S.sql db\oracle\xml\install\01_TABLE\GF73S.xml ALTER TABLE GF73 MODIFY ( USE_LENGTH VARCHAR2(20) NULL) ; ALTER TABLE GF73 RENAME COLUMN USE_LENGTH TO MAX_LENGTH; USE_LENGTH VARCHAR2(9) DEFAULT 0 NOT NULL /* 150 使用桁数 */ ↓ MAX_LENGTH VARCHAR2(20) /* 150 使用桁数 */ ALTER TABLE GF73 MODIFY ( VIEW_LENGTH VARCHAR2(20) ) ; ALTER TABLE GF73 MODIFY ( READONLY VARCHAR2(20) ) ; ALTER TABLE GF73 MODIFY ( DISABLED VARCHAR2(20) ) ; VIEW_LENGTH , READONLY , DISABLED VARCHAR2(10) → VARCHAR2(20) (NAMES → CLMS) (QUERYTYPE → SQL_TYPE) (SCOPE → JSP_SCOPE) (QUERY → SQL_TEXT) gf\jsp\DOC18\xslt\GF74_PROG.xsl (GF74 DB定義) db\oracle\sql\01_TABLE\GF74S.sql db\oracle\xml\install\01_TABLE\GF74S.xml ALTER TABLE GF74 MODIFY ( DBID VARCHAR2(20) ) ; DBID VARCHAR2(10) /* 90 データベースID */ ↓ DBID VARCHAR2(20) /* 90 データベースID */ (VERSION → VERNO) gf\jsp\DOC18\xslt\GF76_PROG.xsl (NAME → NAME_JA) gf\jsp\DOC18\xslt\GF79_PROG.xsl JSPチェックの新しい警告を追加します。 match="og:view" の WARNING21A、WARNING21B、WARNING21C、WARNING21D jsp\DOC18\xslt\GF70_PROG.xsl jsp\DOC18\xslt\GF7X_PROG.xsl 削除 gf\jsp\DOC18\query.jsp [DBConfig.xml編集機能追加] DBConfig.xmlを画面から編集するための機能を追加します。 編集は、管理メニューの「接続先編集」から行います。 jsp/common/gamen/05_DBCONFIG 追加 hybs-taglib.tld org.opengion.fukurou.db.DatabaseConfig.DBID_INFO_KEYS org.opengion.fukurou.db.DatabaseConfig.DBDRIVER_CLASS_KEY org.opengion.fukurou.db.DatabaseConfig.init() org.opengion.fukurou.db.DatabaseConfig.reload() org.opengion.fukurou.db.DatabaseConfig.getDbidMap(Element, EDbid) org.opengion.fukurou.db.DatabaseConfig.getDbidInfoKeys() org.opengion.fukurou.db.DatabaseConfig.getDbidInfo() org.opengion.fukurou.db.DatabaseConfig.setDbidInfo(String[][]) org.opengion.fukurou.db.DatabaseConfig.getDriverList() org.opengion.fukurou.db.DatabaseConfig.getDriverList(Element) org.opengion.fukurou.db.DatabaseConfig.setDriverList(String[]) org.opengion.fukurou.xml.DomParser.write(File, Document) org.opengion.hayabusa.taglib.DataCheckTag.setSelectedAll(String) org.opengion.hayabusa.taglib.DataCheckTag.getParameterRows() org.opengion.hayabusa.taglib.DataCheckTag.release2() [Java業務ロジック改善] Java業務ロジックを実装しているorg.opengion.fukurou.businessパッケージで、タブリブなど外部クラスから 情報をセットするためのメソッドと、業務ロジック内で使用する各種Utilメソッドを分離し、業務ロジックの 各実装クラスから、不要なメソッドが見えないように改善します。 org.opengion.fukurou.business.BizLogicHelper org.opengion.fukurou.business.BizLogic 削除 org.opengion.fukurou.business.AbstractBizLogic org.opengion.fukurou.business.BizLogic_ENTRY org.opengion.fukurou.business.BizLogic_TABLE org.opengion.fukurou.business.BizLogic_CURSOR org.opengion.hayabusa.taglib.BizLogicTag.execute() org.opengion.hayabusa.taglib.BizLogicTag.call(String) [fileタグ改善] fileタグでファイルを読み込み(action="READ")する際のエンコードを指定できるようにします。 エンコードを指定しない場合は、過去との互換性を考慮し、OS依存の文字コードでファイルを読み込みます。 hybs-taglib.tld org.opengion.hayabusa.taglib.FileTag.release2() org.opengion.hayabusa.taglib.FileTag.actionExec(String) org.opengion.hayabusa.taglib.FileTag.setEncode(String) [メール送信・改善] メール送信時のパラメータとして、mail.smtp.localhostの設定を追加します。 これは、openGionとSTMPが同一サーバーで動作している場合、メールサーバーの設定によっては、 "501 Syntax: HELO hostname"というエラーメッセージが返される場合があります。 これに対応するため、localhost接続時にも、ドメイン名つきのホスト名が適用されるように上記の 設定を追加します。 org.opengion.fukurou.mail.MailTX.MailTX(String, String) [文字種別追加(KCL)] 全角+改行のみを許可する文字種別として"KCL"を追加します。 これは、全角のみ(K)をベースとして、改行C(CR+LF)を許可する文字として追加したものになります。 org.opengion.plugin.column.DBType_KCL [readTableタグ・自動読み取り機能のバグ修正] readTableでreaderClassを"AUTO"(自動読み取り)にした場合に、Excel以外の読み取りが正しく処理できない バグを修正します。 org.opengion.hayabusa.taglib.ReadTableTag.doEndTag() [リソース登録画面・改善] 画面リソース登録画面(カラム、コード、ラベル)で、同じ画面ID、アドレスで複数のデータを登録した場合に、 画面上1件しか表示されないバグを修正します。 従来は、異なる作成区分で同じ画面IDのデータについて、もっとも上位の作成区分のデータのみを表示させるため、 画面ID+アドレスでグループ化して表示していましたが、画面リソースの構造上、画面ID、アドレス、作成区分が 同じデータでもロール違いで登録できるため、今回の対応では、グループ表示そのものを廃止しています。 ge/jsp/GE0002/result.jsp [ヘッダー固定不具合修正] 画面遷移なし登録で、選択形式をラジオボタンや非選択形式にする、またはカスタムテーブルを使用した場合に、 行を変更する度に、行の幅が広がってしまうバグを修正します。これは、5.1.4.0 (2010/03/01)の以下の修正と 関連して、ヘッダーとデータ部の構造が異なる際に、ヘッダー部にコピーされる1行目のデータ部のtdのpaddingが 0pxに設定されていないために起こります。今回の対応では、ヘッダー、データ部ともに左右のpaddingについては、 明示的に0pxを指定するようにします。 --------------------------------------------------------------------------------------------------- [画面遷移なし登録・バグ修正] 画面遷移なし登録で、viewFormTypeにHTMLCutomTableや、HTMLFormatTable等を使用している場合に、 変更ボタン等を押すごとに、各項目の幅が少しずつ広がってしまうバグを修正します。 これは、IEのCSS実装のバグで、IEでは、THタグのpaddingが0より大きい場合は、width属性の指定値と、 その結果で表示されるサイズが異なってしまう問題があります。 (但し、この場合でも、colgroupが指定されている場合(HTMLTableの場合)は、正しい値が返ります) 今回の対応としては、ヘッダー固定時のTHタグのpaddingを0にします。 (実際は、データ項目よりヘッダーの方が幅があるということは、レアケースであるため、影響はないと 判断しています) jsp/common/scrollBar2.js jsp/common/scrollBar2.css --------------------------------------------------------------------------------------------------- jsp/common/scrollBar2.css [eventColumnバグ修正] 5.1.8.0 (2010/07/01) の 以下の改善で、動的入替え(eventColumn)が動作しなくなっていた問題に対応します。 ---------------------------------------------------------------------------------------------------- [DBColumnConfig 改善] DBColumnConfig ⇔ DBColumn 間の相互データ更新で、すべての内容をコピーしていなかったため、 再作成すると属性が抜けてしまっていた。 必要な属性を設定するように修正。 今回は、DBColumnConfig の コンストラクタの修正は行っていませんので、セッターメソッドで データを設定しています。 org.opengion.hayabusa.db.DBColumnConfig#setRawEditParameter( final String param ) org.opengion.hayabusa.db.DBColumnConfig#setRawRendParameter( final String param ) org.opengion.hayabusa.db.DBColumn#getConfig() ---------------------------------------------------------------------------------------------------- jsp/common/eventColumn.jsp org.opengion.hayabusa.db.DBColumnConfig org.opengion.hayabusa.db.DBEventColumn org.opengion.hayabusa.taglib.SelectTag [DB定義DB・リソース連携バグ修正] DB定義DBのリソース連携機能で、属性差分更新時に、ラベルリソースが更新されず、新規に追加されてしまう バグを修正します。 gf/jsp/GF2120/GFM0010.jsp,GFM0011.jsp [リソース登録画面・改善] リソース登録画面(カラム、コード、ラベル)で、カラムを検索条件に指定しない状態で、登録を行うと、 再検索時に、登録したデータしか表示されない不具合を修正します。 ge/jsp/GE0003/entry.jsp ge/jsp/GE0004/entry.jsp ge/jsp/GE0005/entry.jsp ge/jsp/REP03/entry.jsp [dataCheckタグ改善] dataCheckタグで、エラーが発生した際、エラー表示の前後に処理・表示を行うJSPをincludeできる機能を追加します。 通常、entry.jspでdataCheckを行う場合は、entry.jsp内で/jsp/common/history_back.jspをincludeしているため、 別途戻るボタンなどのJSPをincludeする必要はありません。 しかし、update.jspでエラーチェックを行った場合は、エラー発生時のみ、戻るボタンを表示する必要があります。 このような場合に対応するため、エラー発生時のみ、処理を行うことが出来る機能を追加します。 hybs-taglib.tld org.opengion.hayabusa.taglib.DataCheckTag.doEndTag() org.opengion.hayabusa.taglib.DataCheckTag.includeJsp(String) org.opengion.hayabusa.taglib.DataCheckTag.release2() org.opengion.hayabusa.taglib.DataCheckTag.setBeforeErrorJsp(String) org.opengion.hayabusa.taglib.DataCheckTag.setAfterErrorJsp(String) jsp/common/history_back.jsp [columnCheckタグ改善] columnCheckタグで、ラジオボタンなど、同じ名前で複数の要素を持つ項目に対して、必須チェックを自動行った場合、 エラーメッセージが要素数分出力されてしまう問題に対応します。 org.opengion.hayabusa.taglib.ColumnCheckTag.makeErrorMessage(ErrorMessage) [Java業務ロジック改善] パラメーターを設定する際、int型、double型でもString.ValueOf()を行うことなく、直接登録できるように します。但し、内部的には、String.ValueOf()を呼び出して、String型で管理していますので、値を取り出す際は、 vari(),vard()等、戻り値の型に対応したメソッドを呼び出す必要があります。 org.opengion.fukurou.business.AbstractBizLogic.set(String, int) org.opengion.fukurou.business.AbstractBizLogic.set(String, double) [各種修正(ドキュメント関係)] JavaDoc関係のワーニングや、設定漏れなど、繻子瑛しました。 詳細は、5.1.9.0_refactoring.txt に記述しておきます。 ・@og.tag は、taglib 専用のタグ説明用の キーワードです。 ・【TAG】は、タグリブ用のキーワードです。 ・Javadoc で、パッケージ 説明のHTML(package.html)を追加します。 ・@Deprecated の説明(コメント)追加 ・public 定数のJavaDocコメント追加 ・public定数 ⇒ private定数に変更 ・そものも、定数自体を廃止 ・protected 定数のJavaDocコメント追加 ・@param の記述が不足しているものに、追記しました。 ・@return の記述が不足しているものに、追記しました。 [自動インストール対応] 画面からシステムのインストールを行うことの出来る機能を追加します。 インストールは、管理メニューの「システムインストール」の画面から行います。 インストール方法の詳細(インストールアーカイブの形式)は、sysInstallタグのタブリブドキュメントを 参照して下さい。 hybs-taglib.tld sysInstallタグ追加 jsp/common/gamen/06_INSTALL org.opengion.hayabusa.common.SystemInstaller org.opengion.hayabusa.common.SystemParameter.loadDBResource(Map ) org.opengion.hayabusa.taglib.SysInstallTag