概要: Webエンジン Ver 5.1.2.0 (2010/01/01) をリリースいたします。 今回のリリースのおける主な変更点は、以下の2点です。 @業務ロジックフレームワーク 業務ロジックをJavaで記述するためのフレームワークをリリースします。 ドキュメントについては、openGion@Wikiの「業務ロジック - Javaでの開発」を参照して下さい。 AMySQL、PostgreSQL対応 MySQL、PostgreSQL対応に対応します。 なお、現時点では、雛型サンプルの画面については、動作しますが、その他のサンプルについては、 一部動作しない可能性があります。これらについては、順次対応する予定です。 ※ バージョンアップされる場合は、ビルドファイル(verup.x.x.x.x.zip)に含まれるchanges.txtを確認の上、 作業をお願いします。 ※ 変更点に関する詳細及びその他の修正内容については、添付のリリースノートを参照下さい。 5.1.2.0 (2010/01/01) [Calc帳票・256ページを超えた場合の対応] Calc帳票で、1要求番号当りのページ数が256を超えた場合に、256枚目までしか出力されない件について 対応します。元々、この問題は、Calcが1ファイル当りに256シートまでしか扱えないことが原因でした。 今回の対応では、256シートを超える場合、再度続きのデータから処理を行うことによって、それ以降の データも出力されるように対応します。 但し、以下の2点については、ご注意下さい。 @データの解析、出力処理は、ファイル単位(最大256シート)に行われます。このため、257枚目以降で エラーが発生した場合、それより前の部分については、出力されてしまいます。 (要求番号のステータスとしては、"アプリエラー"となります) Aファイル出力を行った場合、256シート単位でファイルが分割されます。この場合、出力ファイル名は、 1ファイル目 : GE50にセットした出力ファイル名(現状通り) 2ファイル目以降 : "ファイル名"_[1から始まる連番]."拡張子"となります。 また、今回の対応と合わせて、処理後に、GE50の処理行数と処理ページ数が正しくセットされるように 改善します。 org.opengion.hayabusa.report2.ExecQueue.getOutputName() org.opengion.hayabusa.report2.ExecQueue.addExecPageCnt(int) org.opengion.hayabusa.report2.ExecQueue.getExecPagesCnt() org.opengion.hayabusa.report2.ExecQueue.setExecRowCnt(int) org.opengion.hayabusa.report2.ExecQueue.getExecRowCnt() org.opengion.hayabusa.report2.ExecQueue.setEnd(boolean) org.opengion.hayabusa.report2.ExecQueue.isEnd() org.opengion.hayabusa.report2.ExecQueue.MAX_SHEETS_PER_FILE org.opengion.hayabusa.report2.ExecProcess.process() org.opengion.hayabusa.report2.ExecThread.exec(ExecQueue) org.opengion.hayabusa.report2.OdsContentParser.OdsContentParser(ExecQueue, String) org.opengion.hayabusa.report2.OdsContentParser.execContent() org.opengion.hayabusa.report2.QueueManager_DB.SQL_UPDATE_GE50 org.opengion.hayabusa.report2.QueueManager_DB.status(ExecQueue, int) [Calc帳票・バグ修正] Calc帳票で、出力時の例外処理でCalcオブジェクトが正しくCloseされていないバグを修正します。 org.opengion.hayabusa.report2.ExecProcess.output(String...) [タグリブマニュアル・クイックリファレンスマニュアル作成] build時にタグリブマニュアルのクイックリファレンスを作成するようにします。 クリックリファレンスは、アーカイブ内の、uap/webapps/gf/doc/taglib/quickReference.htmlに 保存されます。 GFX004 -> DOC08 画面ID変更 build.xml [サンプル・HSQLDB対応] サンプル画面が、HSQLDBで動作しない問題について対応します。 gf/jsp/GF9130 gf/jsp/GF9430 gf/jsp/GF9500 gf/jsp/GF9510 [MySQL対応・不具合修正] MySQL対応で、ロール登録画面が動作しなくなっていた問題に対応します。 ge/jsp/GE0019 ge/jsp/GE0020 [Calc帳票システム・MySQL対応] Calc帳票システムで、帳票明細データの各カラムへの分割処理を内部で処理するようにします。 従来は、帳票レイアウト登録(REP03)画面で、レイアウト変更時に、データを分割するための SQL文を生成し、これを利用して、帳票明細データを分割し、DBTableModelを生成していました。 しかし、このSQL文で必要となる、バイト数ベースの文字分割関数(OracleのSUBSTRB)は、他の DBでは通常、用意されていません。このため、今回、MySQL等、他のデータベースに対応するため、 データの分割処理を、内部で処理するように変更します。 これに伴い、GE54(帳票雛形定義)のHSQL,FSQL,BSQLの項目については、Calc帳票としては、有閑 となります。また、レイアウト変更時も、これらの項目に対してのSQL文のセットは行いません。 もし、旧Excel帳票システムを利用する場合は、GE54のトリガを利用して、SQL文をセットして下さい。 (具体的には、ge\db\oracle\sql\05_SRC\forOldExcelReportSystem内のスクリプトを参照して下さい) ge/jsp/REP02/verify.jsp ge/jsp/REP03/entry.jsp org.opengion.fukurou.db.DBFunctionName.getFunctionName(String, String) org.opengion.hayabusa.report2.ExecQueue.setFsql(String) 廃止 org.opengion.hayabusa.report2.ExecQueue.getFsql() 廃止 org.opengion.hayabusa.report2.ExecQueue.setBsql(String) 廃止 org.opengion.hayabusa.report2.ExecQueue.getBsql() 廃止 org.opengion.hayabusa.report2.ExecQueue.setHsql(String) 廃止 org.opengion.hayabusa.report2.ExecQueue.getHsql() 廃止 org.opengion.hayabusa.report2.QueueManager_DB.create() org.opengion.hayabusa.report2.QueueManager_DB.set(ExecQueue) org.opengion.hayabusa.report2.QueueManager_DB.DBTableModelCreator org.opengion.hayabusa.report2.OdsConverter.print(XComponent, String) org.opengion.plugin.table.TableFilter_REPORTDATA org.opengion.plugin.table.TableFilter_REPORTLAYOUT.execute() [og:equalsタグ・仕様変更] og:equalsタグで、ignoreCase属性を指定しない場合でも、大文字、小文字を区別して条件判定を行う ように仕様を変更します。 org.opengion.hayabusa.taglib.EqualsTag org.opengion.hayabusa.taglib.EqualsTag.release2() [編集種別(AUTOAREA,TEXTAREA)の仕様変更] 編集種別のAUTOAREA,TEXTAREAで、データの先頭が'_'となっている場合に、自動的に書き込み不可に なる機能を廃止します。データより書き込み制御を行う場合は、og:viewタグのwritableControl属性で 明示的に対象となるカラムを指定して下さい。 org.opengion.plugin.column.Editor_AUTOAREA.getValue(String) org.opengion.plugin.column.Editor_AUTOAREA.getValue(int, String) org.opengion.plugin.column.Editor_TEXTAREA.getValue(String) org.opengion.plugin.column.Editor_TEXTAREA.getValue(int, String) [フィルター機能追加] HybsFileFilter に、ディレクトリの判定を行うかどうかを指定する引数を、コンストラクタに追加します。 これを利用できるように、Process_FileSearch に、useDIR パラメータを実装します。 fukurou.util.HybsFileFilter#HybsFileFilter( final boolean useDIR ) fukurou.process.Process_FileSearch#init( final ParamProcess paramProcess ) [機能追加] ValueTag で、DBTableModel を参照する場合の scope を指定できるように、tblScope 属性を追加します。 従来は、DBTableModel は、scope="session" からのみ、取得するようになっていました。 (tableId は、パラメータで指定可能でした。) 従来から存在している scope パラメータは、出力のValue に対する指定でした。 hayabusa.taglib.ValueTag#setTblScope( final String scp ) hayabusa.taglib.ValueTag#release2() hayabusa.taglib.ValueTag#doEndTag() [機能追加] HybsFileFilter で、引数のパラメータを、'|' 区切り文字で複数設定可能にします。 また、reverse 引数を追加することで、結果を反転できるようにします。 この対応により、UnMatchesFilter が不要になったため、削除します。 これに伴い、Process_FileSearch に、反転させるパラメータを追加します。 hayabusa.taglib.FileWhereTag#doEndTag() fukurou.process.Process_FileSearch#init( final ParamProcess paramProcess ) fukurou.util.HybsFileFilter$StartsWithFilter fukurou.util.HybsFileFilter$EndsWithFilter fukurou.util.HybsFileFilter$InstrFilter fukurou.util.HybsFileFilter$EqualsFilter fukurou.util.HybsFileFilter$MatchesFilter fukurou.util.HybsFileFilter$UnMatchesFilter 削除 fukurou.util.HybsFileFilter#startsWith( final String prefix,final boolean reverse ) fukurou.util.HybsFileFilter#endsWith( final String suffix,final boolean reverse ) fukurou.util.HybsFileFilter#instr( final String str,final boolean reverse ) fukurou.util.HybsFileFilter#fileEquals( final String str,final boolean reverse ) fukurou.util.HybsFileFilter#matches( final String str,final boolean reverse ) fukurou.util.HybsFileFilter#unMatches( final String str ) 削除 [微修正] MainProcess で、実行が行われているかどうかの表示で、50件ごとの、"." や、1000件毎の Count=[件数] 表示を、標準出力ではなく、エラー出力に変更します。 これは、出力のログを、リダイレクト ">" 記号で出力させると、混ざって出力されるためです。 fukurou.process.MainProcess#run() TableDiff で、debug 出力時の項目を増やします。また、デバッグ出力が判る様に、文字列 "DEBUG:" を 先頭に付与します。 fukurou.process.TableDiff.java [表示機能修正] display 属性と、debug 属性を見直します。 display 属性は、基本的に、条件に合致した場合の次ぎに渡す行を出力します。 また、debug 属性は、先頭に、"DEBUG:"文字列を追記しますので、通常の画面出力と区別できるようにします。 fukurou.process.Process_DBWriter#action( final LineModel data ) fukurou.process.Process_FileCopy#action( final LineModel data ) fukurou.process.Process_FileSearch#action( final LineModel data ) fukurou.process.Process_Grep#action( final LineModel data ) fukurou.process.Process_TableDiff#action( final LineModel model ) fukurou.process.Process_TableFilter#action( final LineModel data ) fukurou.process.Process_TableWriter#action( final LineModel data ) [共通JSP] 共通JSP(common/gamen/03_DBSEARCH)で、検索結果に、tableFilter で、LABEL を付ける箇所で、 DB登録処理(INSERT,UPDATE,DELETE など)で、エラーになるため、検索件数が0件以上のみ、処理するように変更。 jsp/common/gamen/03_DBSEARCH/result.jsp [FireBird対応] DBスクリプト作成 画面で、FireBird を選択できるように、項目を追加します。 jsp/GF2140/query.jsp [MySQL対応] 明示的に、TransactionIsolation に、TRANSACTION_READ_COMMITTED を指定する。 fukurou.db.ConnectionPool#createInstance() setObject に ParameterMetaData の getParameterType を渡す。(PostgreSQL対応) fukurou.business.AbstractBizLogic.execSQL( String, int, ArrayTableModel ) fukurou.db.DBUtil.dbExecute( final String stmt ,final String[] args, final ApplicationInfo appInfo, final String dbid, final boolean useHeader ) fukurou.db.DBUtil.dbExist( final String stmt ,final String[] args, final ApplicationInfo appInfo , final String dbid ) fukurou.process.Process_DBCountFilter#init( final ParamProcess paramProcess ) fukurou.process.Process_DBCountFilter#end( final boolean isOK ) fukurou.process.Process_DBCountFilter#action( final LineModel data ) fukurou.process.Process_DBMerge#init( final ParamProcess paramProcess ) fukurou.process.Process_DBMerge#end( final boolean isOK ) fukurou.process.Process_DBMerge#action( final LineModel data ) fukurou.process.Process_DBMerge#makePrepareStatement( final String table,final LineModel data ) hayabusa.db.DBSimpleTable#startInsert() hayabusa.db.DBSimpleTable#startUpdate() hayabusa.db.DBSimpleTable#startDelete() hayabusa.db.DBSimpleTable#execute( final String[] values ) hayabusa.db.DBSimpleTable#close( final boolean commitFlag ) [GrepChange修正] 置換処理を実施する(true)かどうかを指定するパラメータを追加します。(初期値:置換する[true]) 処理速度向上と、置換する場合の前処理(ファイルのコピーやリネームなど)を実行しないようにします。 fukurou.process.Process_GrepChange#init( final ParamProcess paramProcess ) fukurou.process.Process_GrepChange#action( final LineModel data ) [微修正] connection.setAutoCommit は、ConnectionFactory で設定済みなので、コメントアウトする。 hayabusa.common.SystemParameter#loadDBResource( final Map sysParam ) 5.1.1.2 (2009/12/10) [業務ロジックフレームワーク・Linux対応] 業務ロジックフレームワークで、Javaソースのコンパイル時に指定しているクラスパスの区切り文字が Windows依存(;)になっていたため、File.pathSeparatorCharを使い、Linuxでも動作するようにします。 org.opengion.hayabusa.taglib.BizLogicTag org.opengion.fukurou.util.HybsLoaderConfig.HybsLoaderConfig(String, String, boolean) org.opengion.fukurou.util.HybsLoaderConfig.HybsLoaderConfig(String, String, boolean, boolean, String) [MySQL対応] MySQLで、500Byte以上のカラムについては、カラム定義をVARCHARではなく、TEXTで定義します。 これは、MySQLの制限として @ユニークインデックスは、767 bytes 以内にする必要がある。 Aインデックスは、1000byte 以内にする必要がある。 Bテーブルの全カラムの合計バイト数が、65535 を超えるとエラー(UTF-8の場合、実バイト数x3) が存在するためです。 この対応に伴い、ROLES等、インデックスのキーになっている項目も、定義がTEXTになります。 このような場合、INDEXの定義として、部分インデックス(先頭255Bytesのみインデックス化)を使用 することで、対応を行います。 org.opengion.plugin.table.TableFilter_TABLE_MYSQL.makeLineList(String[], boolean) org.opengion.plugin.table.TableFilter_INDEX.execute() org.opengion.plugin.table.TableFilter_INDEX.makeIndexClmStr(String, int) org.opengion.plugin.table.TableFilter_INDEX_MYSQL.makeIndexClmStr(String, int) org.opengion.fukurou.db.DBFunctionName.getFunctionName(String, String) [Admin管理画面・バグ修正] Admin管理画面の「パラメータ」が正しく表示されないバグを修正します。 (原因:リンク時に画面IDが正しくセットされていなかったため) org.opengion.hayabusa.servlet.HybsAdmin.getAdminLink() 5.1.1.1 (2009/12/02) [選択行スクロール・バグ修正] 行選択後、画面遷移した際に、選択行に自動的に遷移する機能で、ヘッダーラベルに改行が 含まれている場合に、入力行が隠れてしまう(スクロールし過ぎてしまう)バグを修正します。 このバグを修正するため、スクロールする際の基準となる行を、既存の「選択行の1つ前」から 「選択行自身」に変更します。 jsp/common/default.js#focus2() org.opengion.plugin.view.AbstractViewForm.isFirstChecked(int)