5.6.7.0 (2013/07/27) [初期install の見直し] 初期インストールを見直します。 ・出力フォルダを、db/common と、db/resource に分離します。 db/common は、DBID=DEFAULT になり、db/resource は、DBID=RESOURCE になります。 ・db/oracle , db/firebird … などのフォルダは、各コンテキストのDB定義になりますので DBID=DEFAULT で処理します。 ・sql フォルダと xmlフォルダの階層を合わせる。 それぞれ、同じ階層構造に合わせます。基本的には、それぞれのフォルダの下位に、 install と update フォルダを作成します。 ・build.xml を簡易化します。 ant の定義ファイルを見直し、簡素化します。上記出力先変更に伴う、見直しです。 gf/build.xml src/META-INF/hybs-taglib.tld WEB-INF/hybs-taglib.tld Tomcat起動時の処理処理(SystemParameter)で、クラスパスが、resource 以下の拡張XDKファイルは DBID=RESOURCEに登録し、クラスパスが、xml 以下の拡張XDKファイルは、DBID=DEFAULT に登録します。 hayabusa.common.SystemParameter#loadDBResource( final Map sysParam ) SystemInstaller でも、同様に、db/common と、db/[DBNAME]/xml は、DBID=DEFAULT に db/resource は、DBID=RESOURCEに登録します。 関連する処理で、SystemInstaller 内の各サブ処理ごとに、コミットしているので、 メソッドの中でコミットするように修正します。 これは、ORACLEとfirebirdのDDL処理の違いなどに関連します。 hayabusa.common.SystemInstaller#SystemInstaller( final Connection conn, final PrintWriter out ) hayabusa.common.SystemInstaller#getOldMaxVersion() hayabusa.common.SystemInstaller#getOldSystemVersion( final String systemId, final String hostUrl ) hayabusa.common.SystemInstaller#dbXMLResourceInsert() hayabusa.common.SystemInstaller#execScripts( final EXEC_TYPE type, final String scriptPath, final Connection conn ) hayabusa.taglib.SysInstallTag#doEndTag() hayabusa.common.SystemParameter#loadDBResource( final Map sysParam ) fukurou.db.DBUtil#getProductName( final Connection conn ) fukurou.xml.HybsXMLSave#useParameterMetaData( final Connection conn ) [TableFilter_DBARG_OUT に xml出力機能追加] TableFilter_DBARG_OUT に、xml出力機能を追加します。 簡易インストールと、ソースコード自動化の一環です。 TABLEやINDEL作成スクリプトが XML化されているので、それに準拠するためです。 ただし、ARG変数は、ORACLEでPL/SQLを実行する場合にしか使いませんので、 今後はできるだけ使わない方向を考えています。 plugin.table.TableFilter_DBARG_OUT.java 他のTableFilterも、修正しておきます。 plugin.table.TableFilter_DBSRC_OUT.java plugin.table.TableFilter_INDEX.java plugin.table.TableFilter_INDEX_FIREBIRD.java plugin.table.TableFilter_SEQUENCE.java plugin.table.TableFilter_SEQUENCE_FIREBIRD.java plugin.table.TableFilter_SEQUENCE_HSQLDB.java plugin.table.TableFilter_SEQUENCE_MYSQL.java plugin.table.TableFilter_SEQUENCE_POSGRE.java plugin.table.TableFilter_SEQUENCE_SQLSERVER.java plugin.table.TableFilter_TABLE.java plugin.table.TableFilter_TABLE_FIREBIRD.java plugin.table.TableFilter_THUMBNAIL.java plugin.table.TableFilter_UNIQ_NAME.java ge/jsp/GE0009 gf/jsp/GF2140 gf/jsp/GF2150 gf/jsp/GF7110 [HybsXMLSave に DDL処理件数追加] HybsXMLSave に DDL(データ定義言語:Data Definition Language)の処理件数の カウンターを追加します。 通常は、executeUpdate の戻り値(int)を 削除数としてカウントしていますが、 DDL実行時は、0 が返されるため、delete や insert などの DML(データ操作言語:Data Manipulation Language)文と分けてカウントします。 あくまで、参考情報として、カウントするだけです。 fukurou.xml.HybsXMLSave#actionExecSQL( final TagElement tag ) fukurou.xml.HybsXMLSave#getDDLCount() fukurou.xml.HybsXMLSave#main( final String[] args ) hayabusa.common.InitFileLoader#loadXML( final InputStream stream, final Connection conn,final String table ) hayabusa.taglib.DirectXMLSaveTag#doEndTag() [DBUtil の CLOB対応] DBUtil で、検索した際に、Clob等のオブジェクト系の結果を、きちんと文字列に変換するように 修正します。 従来は、String.valueOf( obj ) していた為、CLOB 、ROWID、TIMESTAMP がうまく変換されませんでした。 fukurou.db.DBUtil#resultToArray( final ResultSet resultSet,final boolean useHeader ) [DB定義変更] GF83 のシーケンス、トリガ、インデックスを追加します。 すでに、テーブルは作成済みかも知れませんが、トリガがないと UNIQキーの自動作成ができません。また、インデックスがないと、 検索処理が時間がかかります。 gf\changes\5670\GF83S.sql gf\changes\5670\GF83C.sql [XML出力の改行の見直し] 拡張XDKのファイル出力で、余計な改行が出力されない様に、見直します。 plugin.io.TableWriter_XML#writeData( final DBTableModel table,final PrintWriter writer ) [URLConnectの見直し] URLConnect で、レスポンスコードに応じて、RuntimeException を投げるかどうかを指定する -errEx 引数を追加します。 -errEx=true を指定すると、レスポンスコードが、4XX,5XX の時に RuntimeException を投げます。 初期値は、false です。 fukurou.util.URLConnect#main( final String[] args ) 同時に、レスポンスコードに対応する文字列 を追加します。JavaのHttpURLConnection の定数で 定義済み以外の値を追加します。 fukurou.util.URLConnect#code2Message( final int code ) [ActiveDirectoryに対するLDAP接続対応] ActiveDirectoryのLDAPインターフェイスに対して接続を行うと、 Unprocessed Continuation Reference(s)エラーが発生したため JNDI上のREFERRAL属性をシステムリソースから設定可能にします。 初期値は空で、設定した場合のみ該当の値がContext.REFERRALにセットされます。 fukurouのProcessはバッチ上からreferralで指定して下さい。 同時にmeilSenderタグのldapKey,ldapValsの初期値をシステムリソースで設定可能にします。 LDAP_MAILSEND_KEY,LDAP_MAILSEND_VALSで指定して下さい。 hayabusa.resource.LDAPSearch#init() hayabusa.common.SystemData#LDAP_SEARCH_REFERRAL hayabusa.common.SystemData#LDAP_MAILSEND_KEY hayabusa.common.SystemData#LDAP_MAILSEND_VALS hayabusa.taglib.MailSenderTag#release2() furkurou.process.Process_LDAPReader#init( final ParamProcess paramProcess ) [DBConfigEditorTag 修正] DBConfigEditorTag に、DBConfigのプルダウン情報の取得機能を追加します。 DBIDのキーと、タイトルをつないだ、コードリソース情報を作成する機能を追加します。 これにより、使用しているシステムのDBID一覧をプルダウンメニューとして使用できます。 開発用のシステムとしての利用が想定できます。 また、command と type にセットできる値のチェックを行います。 hayabusa.taglib.DBConfigEditorTag#setCommand( final String cmd ) hayabusa.taglib.DBConfigEditorTag#setType( final String tp ) fukurou.db.DatabaseConfig.java [javadocの見直し] javadoc 作成時に、ソースコードのHTMLも作成するように変更します。 メインのjavadocタグに、linksource="true" を追加します。 gf/build.xml [共通属性 caseNN の追加] 共通属性 caseNN を追加します。 これは、caseKey、caseVal に関連するタグの実行可否を判定する要因です。 caseKey と caseVal の場合は、どちらも null の場合は、許可(true)になります。 これは、過去の互換性を持たせるためです。どちらかが null 出ない場合は、 caseKey.matches( caseVal ) の結果が適用されますが、マッチさせる条件が必要です。 ここで、引数が、null 出ない場合(Not Null = NN)に、許可(true)させる場合は、 設定が難しくなります。 そこで、単に、null でなければ許可(true)にする caseNN 属性を追加します。 既存の caseKey、caseVal を持っているタグに、追加します。 hayabusa.taglib.CommonTagSupport#release2() hayabusa.taglib.CommonTagSupport#setCaseNN( final String cnn ) hayabusa.taglib.CommonTagSupport#useTag() hybs-taglib.tld og:and , og:button , og:column , og:columnEditor , og:hidden , og:input , og:link , og:message , og:option , og:orderBy , og:popup , og:query , og:queryOption , og:select , og:submit , og:tableMerge , og:tbody , og:tfoot , og:thead , og:userInfo , og:value , og:view , og:fileUpdate , og:directXMLSave , og:writeTableParam [BizLogicTag 関連の修正] BizLogicTag で、Exception を throw するとき、一旦、errMsg 変数にセットします hayabusa.taglib.BizLogicTag#call( final String logicName , final Transaction tran ) hayabusa.taglib.BizLogicTag#makeVals() fukurou.business.AbstractBizLogic.java fukurou.business.ArrayTableModel#ArrayTableModel( final String[] nms, final String[][] vs, final String[] ms ) fukurou.business.ArrayTableModel#toString() fukurou.business.BizLogic_CURSOR#init() fukurou.business.BizLogic_TABLE#main() 5.6.6.2 (2013/07/19) [EXEC_START_TAG の付け忘れ] xml出力で、 を付け忘れていたので修正します。 plugin.table.TableFilter_TABLE#makeHeadLine( final int[] clmNo,final String[] data ) [IPアドレスからのホスト逆引き機能追加] {@SYS.HOSNAME xxx.xxx.xxx.xxx}でホスト名称を逆引きできるようにします。 取得できない場合は空白文字を返します。 IPアドレスからInetAddressオブジェクトが作成できない場合等はエラーになります。 名逆引きメソッドは、他での利用は殆ど無いと判断して、現段階ではCommonTagSupportに作成します。 hayabusa.taglib.CommonTagSupport#sys( final String key ) hayabusa.taglib.CommonTagSupport#getHostName( final String ip ) jsp/common/gamen/01_ADMIN/printSystemParameter.jsp 5.6.6.1 (2013/07/12) [ColumnSetTag,EntryTag 機能追加] ColumnSetTag,EntryTag に、action="SUFIX" , action="PREFIX" を追加します。 value に指定した記号を、後ろから検索し、前後に分割する機能です。 分割記号(value に指定した記号)は、分割後の値には含みません。 例えば、"AAA/BBB/CCC.xls" という値に対して、 action="SUFIX" value="." ⇒ xls action="SUFIX" value="/" ⇒ CCC.xls action="PREFIX" value="." ⇒ AAA/BBB/CCC action="PREFIX" value="/" ⇒ AAA/BBB という具合です。 hayabusa.taglib.ColumnSetTag.java コメント修正 hayabusa.taglib.EntryTag#actionExec( final String action,final String clmId, final String oldValue,final String newValue ) [TableFilter_THUMBNAIL 修正] THUMB_SUFIX パラメータを追加します。これは、サムネイル画像の拡張子の指定です。 ここで指定した拡張子に、画像フォーマットを変換して、出力します。 初期値は、AUTO です。 AUTOの場合は、元ファイルと同じ拡張子が使われます。 自分で指定する場合は、拡張子違いの元ファイルがあれば重複しますので注意が必要です。 拡張子が bmp の場合の、png に置き換えは行いません。 plugin.table.TableFilter_THUMBNAIL#execute() 関連して、拡張子求め( getSuffix( String ) )が null を返す対応を入れます。 また、拡張子変換がある為、オリジナルサイズがサムネイルより小さい場合、変換なしの処理を 行っていましたがこれを廃止し、必ず変換するようにします。 よって、オリジナルサイズがサムネイル指定サイズより小さい場合は、拡大されます。 fukurou.util.ImageResizer#convert( final BufferedImage inputImage, final String out, final int sizeX, final int sizeY ) fukurou.util.ImageResizer#isReaderSuffix( final String fileName ) fukurou.util.ImageResizer#isWriterSuffix( final String fileName ) [ValueTag の修正] ValueTagで、value指定が null の場合、エラーになっていたので、正式にエラーチェックするようにします。 hayabusa.taglib.ValueTag#actionExec( final String action,final String value ) hayabusa.taglib.ValueTag#setAttribute( final String key,final String value,final String action ) [FileUploadTag の修正] FileUploadTagで、添え字がない場合に、columns 属性を使用すると、レコードが作成されなかったが 使い勝手の観点から、1行だけDBTableModelを作成するように変更します。 hayabusa.taglib.FileUploadTag#makeDBTableFromClms( final MultipartRequest multi ) hayabusa.servlet.MultipartRequest.java 不要な name 属性をコメントアウト [xmlファイルの取込み] データベース処理や、リソースファイルなどの XMLファイル形式のデータ取込み処理を、 resource ファイルと、xml ファイルの両方に適用するように修正します。 クラスパス内の検索で、xmlも対象とします。 これに伴い、再読み込み防止処置のタイムスタンプの書き換えを、jar ファイルにも適用します。 hayabusa.common.SystemParameter#loadDBResource( final Map sysParam ) hayabusa.common.InitFileLoader#loadInitFiles( final boolean useTimeStamp ) 拡張XDK形式のMERGE_SQL 対応に適用します。 これは、ROWSET、ROW 形式の XMLフォームで、MERGE_SQL を登録すると、そのSQL文で、 UPDATEして、結果が0件ならINSERTを行います。 これにより、更新処理もできるようになります。 本来は、MERGE_SQL は、どこに入れてもよく、MERGE_SQL が現れるまでは、INSERTのみで、 MERGE_SQL 以降は、有れば更新、なければ追加処理が実行されますが、TableWriter_XML では、firstExecSql の次に挿入します。 通常、firstExecSql には、delete 文を書いて、全件削除-全件INSERT するので、 MERGE_SQL を使う場合は、firstExecSql は、使いません。(使っても構いません) plugin.io.TableWriter_XML#setParam( final List listParam ) plugin.io.TableWriter_XML#writeData( final DBTableModel table,final PrintWriter writer ) hayabusa.taglib.WriteTableParamTag#KEY_LIST [SystemOut.java クラスの新規作成] System.out.prinltn を簡易的に使用できるようにするクラス SystemOut を新規作成します。 これは、個々のクラスから、System.out で書き込んでいる デバッグ情報を簡易的に出力 できるようにしたクラスです。 fukurou.util.SystemOut.java [TableFilter 関連] 5.6.6.0 (2013/07/05) で対応した、TableFilter のkeys の整合性チェックで、 チェックすべきキーを、static 宣言していた為、すべてのTableFilter のキーが 登録されてしまい、チェックになりませんでした。 そこで、インスタンス変数とし、コンストラクタで、init メソッドを呼び出す方式に 変更します。 hayabusa.db.AbstractTableFilter#AbstractTableFilter() hayabusa.db.AbstractTableFilter#init( final Map keysMap ) plugin.table.TableFilter_BIKO2CODE.java plugin.table.TableFilter_CLMSET.java plugin.table.TableFilter_DBARG.java plugin.table.TableFilter_DBARG_OUT.java plugin.table.TableFilter_DBSELECT.java plugin.table.TableFilter_DTYPE.java plugin.table.TableFilter_INDEX.java plugin.table.TableFilter_LABEL.java plugin.table.TableFilter_REPORTDATA.java plugin.table.TableFilter_ROTATE.java plugin.table.TableFilter_SEQRESET.java plugin.table.TableFilter_TABLE.java plugin.table.TableFilter_THUMBNAIL.java plugin.table.TableFilter_UNIQ_NAME.java plugin.table.TableFilter_UPPER.java [TableWriter 関連] TableWriter 関連も、TableFilter と同様に、各サブクラスで設定可能な keys の整合性チェックを行います。 本来は、TableFilter と同じ方式で対応すべきですが、多くの TableWriter が パラメータを使用しない(個々に属性定義してしまっている)のと、 パラメータを一つづつ登録してくるのではなく、Listにまとめて登録してくる など、微妙に方式が異なる為、違う方式で実装します。 各サブクラスに static でマップを作成しておき、整合性チェックするようにします。 hayabusa.io.AbstractTableWriter#checkParam( final String key,final Map keysMap ) plugin.io.TableWriter_JSON#setParam( final List listParam ) plugin.io.TableWriter_CalcDef#setParam( final List listParam ) plugin.io.TableWriter_XML#setParam( final List listParam ) WriteTableParamTag に、caseKey、caseVal 属性を追加します。 hayabusa.taglib.WriteTableParamTag#doStartTag() hayabusa.taglib.WriteTableParamTag#doEndTag() hybs-taglib.tld writeTableParam タグに、caseKey、caseVal 属性追加 [xmlファイルを直接登録する] これに伴い、デバッグ情報が少なかったので、対応しました。 fukurou.xml.HybsXMLSave#actionRow( final TagElement tag ) fukurou.xml.HybsXMLSave#actionExecSQL( final TagElement tag ) fukurou.xml.HybsXMLSave#actionMergeSQL( final TagElement tag ) key が null や ゼロ文字列の場合は、Map に追加しません。 hayabusa.taglib.DirectXMLSaveTag#getAfterMap() fukurou.xml.TagElement#put( final String key, final String val ) DirectXMLSaveTag に、caseKey、caseVal 属性を追加します。 hayabusa.taglib.DirectXMLSaveTag#doStartTag() hayabusa.taglib.DirectXMLSaveTag#doEndTag() hybs-taglib.tld directXMLSave タグに、caseKey、caseVal 属性追加 テスト的に、GEとGFのdb初期データをjar化する処理を、ant の build.xml に追加 サンプルJSPを作成します。 jsp/GF7100 [タグリブマニュアルの修正] タグリブマニュアルの充実を図る為の修正を行います。 まずは、各タグクラスに付けている og.group タグを、独立させます。 現在は、 属性の最初に表示していますが、 として 用意します。 GF23 テーブルに、属性を用意し、個別に検索できるようにします。 fukurou.taglet.DocletTaglib#writeContents( final ClassDoc[] classes,final DocletTagWriter writer ) fukurou.taglet.DocletTaglib#makeGroupTag( final Tag[] tag ) gf\src\xslt\GF23.xsl [廃止のクラスのJavaDoc修正] 廃止のクラスのJavaDoc のog.group タグの文字部分に、(廃止)文字を追加します。 hayabusa.taglib.StackHeaderTag.java hayabusa.taglib.TableExistTag.java hayabusa.taglib.TabTableTag.java hayabusa.taglib.TabTag.java hayabusa.taglib.UpdateTag.java _build.bat の spec チェックで、Deprecated アノテーション のチェックを行います。 内容は、@Deprecated アノテーションを見つけて、コメントに、【廃止】という文字が 存在するかどうかで判定します。 無ければ、警告とし、JavaDoc に記述します。 fukurou.taglet.DocletSpecific#checkTag( final ExecutableMemberDoc menber ) 以下の、コメントを修正します。 [javadoc] 警告5:【廃止】= C:\opengion\uap\webapps\gf\src\org\opengion\fukurou\process\ConnDataFactory.java:64 ConnDataFactory [javadoc] 警告5:【廃止】= C:\opengion\uap\webapps\gf\src\org\opengion\fukurou\process\ConnDataFactory.java:77 createConnData [javadoc] 警告5:【廃止】= C:\opengion\uap\webapps\gf\src\org\opengion\fukurou\process\ConnDataFactory.java:105 closeConnData [javadoc] 警告5:【廃止】= C:\opengion\uap\webapps\gf\src\org\opengion\fukurou\process\ConnDataFactory.java:140 clear [javadoc] 警告5:【廃止】= C:\opengion\uap\webapps\gf\src\org\opengion\fukurou\process\ConnData.java:76 ConnData [javadoc] 警告5:【廃止】= C:\opengion\uap\webapps\gf\src\org\opengion\fukurou\process\ConnData.java:103 getConnection [javadoc] 警告5:【廃止】= C:\opengion\uap\webapps\gf\src\org\opengion\fukurou\process\ConnData.java:111 getUniq [javadoc] 警告5:【廃止】= C:\opengion\uap\webapps\gf\src\org\opengion\fukurou\process\ConnData.java:119 getCreateTime [javadoc] 警告5:【廃止】= C:\opengion\uap\webapps\gf\src\org\opengion\fukurou\process\ConnData.java:129 makeApplicationInfo [javadoc] 警告5:【廃止】= C:\opengion\uap\webapps\gf\src\org\opengion\fukurou\process\ConnData.java:150 toString [javadoc] 警告5:【廃止】= C:\opengion\uap\webapps\gf\src\org\opengion\hayabusa\taglib\TabTag.java:344 setStyle