概要: Webエンジン Ver 5.3.8.0 (2011/08/01) をリリースいたします。 今回のリリースは、PostgreSQL対応と、その他機能改善及びバグフィックスです。 ※ バージョンアップされる場合は、ビルドファイル(verup.x.x.x.x.zip)に含まれるchanges.txtを確認の上、 作業をお願いします。 ※ 変更点に関する詳細及びその他の修正内容については、添付のリリースノートを参照下さい。 5.3.8.0 (2011/08/01) [プライマリキー対応] プライマリキー の定義を作成するように、修正します。 これは、INDEXのインデックスタイプ='0' でプライマリキーを、'1'でユニークキーを、 '2' で、通常のインデックスを作成します。 本来は、DB定義書、および、定義書テーブル(GF80)にも、プライマリキー項目を 持つべきですが、現時点で持っている、UK をそのままプライマリキーとするようにします。 これは、DB定義書の取込時に、UK項目をインデックスタイプ='0' で登録するように変更する ことで、対応します。 plugin.table.TableFilter_INDEX#makeLineList( final int[] clmNo,final String[] data,final String clms ) 上記の変更に伴い、DB定義DBの各画面で、機能修正を行います。 これは、使い勝手の向上と、とりあえずの UK キーを、プライマリキー として登録するように修正します。 jsp\GF2010\modify.jsp jsp\GF2020\modify.jsp jsp\GF2030\modify.jsp jsp\GF2040\modify.jsp jsp\GF2050\dbdefIn.jsp また、openGion標準のテーブルスクリプトもUNIQUEではなく、PRIMARY KEYとして設定されるように 変更します。 ge/db gf/db [SqlAndタグの修正] 5.3.8.0 (2011/08/01) Attribute等からも値が取得できるようにする。 で、 hayabusa.taglib.CommonTagSupport#getRequestValues( final String key ) へ追加した処理で、 getRequestValue( String )を呼び出していますが、SqlAndタグで、multi="true" の場合に、 再起処理が呼び出されて、無限ループになってしまいます。(StackOverflowError) よって、2回目以降は、再帰しないように、強制的に multi の値を書き換える処理を入れます。 hayabusa.taglib.SqlAndTag#getRequestValue( final String key ) [postgreSQL対応] ApplicationInfo#useParameterMetaData(Connection) の処理を、EDbid、および、 ConnectionFactory で取得するように変更します。 * PreparedStatement に対して、String化された 数字などを setObject( int,String ) するとき、 * ORACLE と SQLServer は、そのまま設定すれば、自動的に変換されます。 * postgreSQL では、ParameterMetaData#getParameterType(int) で、カラムタイプを取得し、 * setObject( int,String,int ) する必要があります。 * その判定に、このメソッドを使用します。 * ORACLE の場合は、使用しない(false)が返るように設定しています。 * SQLServer では、ORACLEと同様に、false を返します。 fukurou.db.ConnectionFactory#useParameterMetaData( final String dbid ) fukurou.db.EDbid#setMetaDataInfo( final DatabaseMetaData meta ) fukurou.db.EDbid#useParamMetaData() fukurou.db.DBSimpleTable#startInsert() fukurou.db.DBSimpleTable#startUpdate() fukurou.db.DBSimpleTable#startDelete() fukurou.db.DBUtil#dbExist( final String stmt ,final String[] args, final Transaction tran , final String dbid ) { fukurou.db.DBUtil#dbExecute( final String stmt ,final String[] args, final Transaction tran, final String dbid, final boolean useHeader ) { fukurou.process.Process_DBCountFilter#init( final ParamProcess paramProcess ) { fukurou.process.Process_DBMerge#init( final ParamProcess paramProcess ) { fukurou.process.Process_DBWriter#init( final ParamProcess paramProcess ) { fukurou.business.AbstractBizLogic#setTransaction( final Transaction tr ) { fukurou.business.AbstractBizLogic#execSQL( final String sq, final int rw, final ArrayTableModel tbl ) { plugin.query.Query_JDBCTableUpdate#execute( final int[] rowNo, final DBTableModel table ) { hayabusa.db.AbstractQuery#useParameterMetaData() { fukurou.util.ApplicationInfo#useParameterMetaData( final Connection conn ) { 廃止 fukurou.xml.HybsXMLSave#HybsXMLSave( final Connection conn,final String table ) fukurou.xml.HybsXMLSave#useParameterMetaData( final Connection conn ) [postgreSQL対応] setObject で、useParamMetaData が true の場合は、(主にpostgreSQL)ゼロ文字列かどうかを判定し、 その場合は、setObject ではなく、setNull メソッドを使用するように変更します。 fukurou.db.DBSimpleTable#execute( final String[] values ) fukurou.process.Process_DBCountFilter#action( final LineModel data ) fukurou.process.Process_DBMerge#action( final LineModel data ) fukurou.process.Process_DBWriter#action( final LineModel data ) fukurou.xml.HybsXMLSave#actionRow( final TagElement tag ) [ファイルダウンロードバグ修正] ファイルダウンロードサーブレットでファイル名指定を指定した場合、IEでファイル名が途中できれてしまう バグを修正します。これは、URLエンコードすると途中で切れる(IE7のバグ)ことが原因です。 対応して、IEの場合のみファイル名に、Shift_JIS(WIndows-31J)で直接セットします。 org.opengion.hayabusa.servlet.FileDownload.doPost(HttpServletRequest, HttpServletResponse) org.opengion.hayabusa.taglib.ForwardTag.doEndTag() [ヘッダー固定・IE9対応] 旧ヘッダー固定(scrollBar.js)でテーブルに罫線を表示している場合に、最下行の罫線が表示されないバグを 修正します。 jsp/common/scrollBar.css [og:helpタグ改善] og:helpタグでヘルプリンクにアイコン画像が指定できるように対応します。 hybs-taglib.tld iconURL属性追加 org.opengion.hayabusa.taglib.HelpTag.release2() org.opengion.hayabusa.taglib.HelpTag.makeTag() org.opengion.hayabusa.taglib.HelpTag.getLinkBody() org.opengion.hayabusa.taglib.HelpTag.setIconURL(String) [DBConstValue 関係] DBConstValue_GE.java は、コメント部分の誤記(作成PGではなく更新社員)の訂正。 DBConstValue_GF.java は、新規追加で、親画面IDのセットと、実施時の条件判定の isUseClm( String )の条件を緩める。 plugin.query.DBConstValue_GE.java コメント訂正 plugin.query.DBConstValue_GF.java 新規追加 [Process_FileSearch] この処理で、フォルダのみ検索させる方法が無いため、処理中の状態を表示させるように修正。 display="true" で出力されます。 fukurou.process.Process_FileSearch#next() [Transaction関係] 内部変数を初期化し、このオブジェクトが再利用できるようにする。 fukurou.db.TransactionImpl#realClose() TransactionReal の実装は、TransactionImpl を継承し、準拠した形に変更します。 fukurou.db.TransactionReal.java [Transaction関係] Transaction には、TransactionImpl と TransactionReal という2種類存在するが、 ・TransactionImpl は、close() ではなにもせず、realClose() で実際に処理を 完了させる。 ・TransactionReal は、close() で処理を完了させる。 ・よって、引数で渡されてきた先では、close() 処理は行わず、TransactionReal を 生成したクラスでのみ、close() 処理を行う。 ・TransactionImpl と TransactionReal の区別が付かない場合(タグリブ内)は、 最後に、close() 処理を行う。 ・TransactionImpl は、生成したクラス(TransactionTagクラス)でのみ、 realClose() 処理を行う。 ように変更します。 つまり、修正するのは、Transaction を生成していないのに、close() している箇所を コメントアウトし、TransactionReal を生成している箇所で、close() を入れることです。 fukurou.db.DBUtil#dbExecute( final String stmt ,final String[] args ,final ApplicationInfo appInfo ) fukurou.db.DBUtil#dbExecute( final String stmt ,final String[] args, final ApplicationInfo appInfo, final String dbid ) fukurou.db.DBUtil#dbExecute( final String stmt ,final String[] args, final ApplicationInfo appInfo, final String dbid, final boolean useHeader ) fukurou.db.DBUtil#dbExecute( final String stmt ,final String[] args, final Transaction tran, final String dbid, final boolean useHeader ) fukurou.db.DBUtil#dbCallExecute( final String stmt ,final String[] args, final ApplicationInfo appInfo ) fukurou.db.DBUtil#dbCallExecute( final String stmt ,final String[] args, final ApplicationInfo appInfo ,final String dbid ) fukurou.db.DBUtil#dbCallExecute( final String stmt ,final String[] args, final Transaction tran ,final String dbid ) fukurou.db.DBUtil#dbExist( final String stmt ,final String[] args, final ApplicationInfo appInfo , final String dbid ) fukurou.db.DBUtil#dbExist( final String stmt ,final String[] args, final Transaction tran , final String dbid ) hayabusa.db.AbstractQuery#close() hayabusa.db.AbstractQuery#realClose() hayabusa.db.DBTableModelUtil#makeDBTable( final String stmt ,final String[] args , hayabusa.taglib.CommonTagSupport#getRequestValues( final String key ) hayabusa.taglib.QueryOptionTag#doAfterBody() hayabusa.taglib.QueryTag#doAfterBody() hayabusa.taglib.UserInfoTag#doAfterBody() hayabusa.taglib.ValueTag#doAfterBody() [selectタグ改善] selectタグのdefaultVal属性に{@USER.xxx}などが指定できないバグを修正します。 これは、selectタグのdefaultVal,及びvalue属性が、前画面から複数指定された場合に 対応されていたためです。複数指定された場合の処理ロジックとして、今までは、 通常のパラメーターとリクエストキャッシュのみの対応でしたが、今回の対応では、 単一のパラメーター処理と同じく、Attributeや各種設定値({@USER.xxxx}や{@MEM.xxx})など も取得できるように対応します。 org.opengion.hayabusa.taglib.CommonTagSupport.getRequestValues(String)