6.4.0.4 (2015/12/26) [HTML5適用時のmust属性] USE_IE7_HEADER = "false" で、USE_HTML5_HEADER = "true" の場合、must="true"で、 HTML5標準の必須属性である、required属性を出力していましたが、すべてに適用すると いろいろと問題が発生するため、出力を制御できるように変更します。 具体的には、システムリソースに、USE_MUST_REQUIRED キーワードを用意します。 初期値は、"true" なので、must="true" で、同時出力されます。 hayabusa.common.SystemData#USE_MUST_REQUIRED hayabusa.taglib.HTMLTagSupport#doEndTag() [shutdownが出来なかった件] %CATALINA_HOME%/bin/catalina.bat で、ACTION=stop 時に、 CATALINA_OPTS がクリアされているため、SHUTDOWN_PORT が効かなかった。 goto execCmd 時(stopも含む)では、CMD_LINE_ARGS も効かないため、 唯一のパラメータの JAVA_OPTS に、shutdownPort を指定するようにします。 opengionV6\uap\bin\startup.bat [Writer(ログ)のCloseは、ここでは行わない] fukurou.xml.XMLFileLoader#loadClassPathFiles(String path) fukurou.xml.XMLFileLoader#loadXMLFiles(File fileObj) [jsp , js , css , tld更新] fileDownload.jsp の entry タグに、useConsistency="false" を入れます。 fileDownloadList.txt を読み取り、マージする際の、entryタグでは 整合性チェックは不要です。 C:\opengionV6\uap\webapps\gf\jsp\common\fileDownload.jsp [Firebirdのembedded版対応] デモ環境で使う Firebirdのembedded版に、JDBCアクセスできるようにしました。 uap\bin\startupWebMICS.bat db\firebird\embedded版.txt apps\jdk180u66\jre\lib\ext\jaybird-full-2.2.9.jar c:\MICS\jaybird\jaybird22.dll (MICS用) 6.4.0.3 (2015/12/14) [ヘッダーソート後のTableModel] 6.2.5.0 (2015/06/05) で対応した [Edit機能]改善で、 viewLink,viewMarker の取り込み処理の変更で、ヘッダーソート時に 取り込まなくなっていましたので、対応します。 hayabusa.taglib.ViewFormTag#doStartTag() 6.2.5.0 (2015/06/05) 以降のフレームワークは、この不具合を 含んだままになっていますので、ご注意ください。 [jsp , js , css , tld更新] C:\opengionV6\uap\webapps\gf\jsp\DOC23\query.jsp C:\opengionV6\uap\webapps\gf\jsp\DOC23\result.jsp C:\opengionV6\uap\webapps\gf\jsp\menu\autoRun.jsp 6.4.0.2 (2015/12/11) [リソース画面修正] ・画面リソース(GE0002) の検索条件に、アドレス 追加 ・ラベルリソース(GE0005) の 概要説明 欄が、TEXTAREA になるのを止める。 [CommentLineParser 改造] fukurou.process.FileLineModel#getLineCnt(File file,File ocFile) fukurou.process.Process_FileCopy#action(LineModel data) fukurou.process.Process_Grep#findKeyword(File file) [ResourceManagerの取得を、先に行っておく] hayabusa.taglib.ColumnCheckTag#makeErrorMessage(ErrorMessage errMsg) hayabusa.taglib.ColumnCheckTag#makeEntryErrorMessage(ErrorMessage errMsg) [Transaction の commit は、errCode で判定します] hayabusa.taglib.QueryTag#doAfterBody() [Transformer のエラーを、より詳細に出力します] fukurou.xml.DomParser#write(File aFile,Document aDocument) fukurou.xml.XSLT#transform(Reader xmlReader) fukurou.xml.XSLT#init(ErrorListener errListener) [columns="*" のときのカラムは、リソースに存在する分のみとする] hayabusa.taglib.ColumnCheckTag#setColumns(String clms) [org.xml.sax.ErrorHandler の登録] fukurou.model.EventReader_XLSX#eventReader(File file,TableModelHelper helper) [sufix によるコメント処理方法の変更] fukurou.util.CommentLineParser#CommentLineParser(String sufix) [useDIR 属性に、onlyパラメータを追加します[false:File/true:File+Dir/only:Dir]] fukurou.process.Process_FileSearch#init(ParamProcess paramProcess) fukurou.util.HybsFileFilter#accept(File pathname) fukurou.util.HybsFileFilter#HybsFileFilter() fukurou.util.HybsFileFilter#HybsFileFilter(String useDIR,boolean ignoreCase) hayabusa.taglib.FileWhereTag#doEndTag() hayabusa.taglib.FileWhereTag#release2() hayabusa.taglib.FileWhereTag#setUseDir(String flag) [飛び先の画面が見つからない(アクセス権がない)場合、転送先URL を null にする] hayabusa.taglib.ForwardTag#doEndTag() hayabusa.taglib.ForwardTag#makeGamenLink() [ソースGrep検索(DOC23)] ・ソースGrep検索で、suffixの初期値を、「jsp」から、空文字に変更。 ・コメント除去で、og:comment タグも除去できるように修正。 gf/jsp/DOC23/query.jsp gf/jsp/DOC23/result.jsp [JavaDoc修正] prefix,suffix,instr,equals に、("|"で複数指定可) の説明をJavaDocに追加。 fukurou.util.HybsFileFilter.java fukurou.process.Process_FileSearch.java [jsp , js , css , tld更新] C:\opengionV6\uap\webapps\gf\jsp\common\filePopup.jsp [紙芝居自動作成] 紙芝居自動作成機能( システム定数:USE_AUTO_RUN = true )の場合の処理で、 対象外の画面ID指定を、jsp/custom/autoRunParam.js で記述していましたが、 処理を実行する画面のリスト( runList )も指定できるようにしました。 除外( ommitList )と同時設定可能です。同じ画面IDを、両方に記述した場合は、 除外( ommitList )が優先されます。 jsp/custom/autoRunParam.js jsp/menu/autoRun.jsp [build.xml修正] RELEASE-NOTES 情報作成 target=check で、単独呼び出し時は、ソース行出力するようにします。 また、先週以降に更新されたJSP,JS,CSS,TLDファイルをピックアップする機能を追加します。 gf/_build.bat , gf/build.xml [V5 修正反映] 5.9.3.0 (2015/12/04) の残りの対応を反映します。 [帳票CSV出力機能追加] ・帳票定義単位に、オプションを記述出来るようにします。  このオプションをRFWプラグインでCSVのヘッダに出力します。 hayabusa.repotr.CSVPrintRequest#execute() hayabusa.report.CSVPrintPointService#setOption( String option ) hayabusa.report.CSVPrintPointService#setFgcut( String flg ) hayabusa.report.AbstractCSVPrintPointService#setOption( final String opt ) hayabusa.report.AbstractCSVPrintPointService#setFgcut( final String flg ) plugin.report.CSVPrintPointService_RFW#makeheader() plugin.report.CSVPrintPointService_RFW#makebody() ※ GE54.OPTIONS カラム追加と、ge/jsp/REP05/result.jsp,copy.jsp 修正のみ、 次のVer で行います。 6.4.0.1 (2015/12/04) [日付の加工エラー] 日付フォーマットで、2015/123/1 となる。/ の入れる位置が異なる。 とりあえず、元に戻します。 plugin.column.Renderer_YMD31#getValue( final String value , final boolean isView ) plugin.column.Renderer_YM#getValue( final String value , final boolean isView ) plugin.column.Renderer_YMD#getValue( final String value , final boolean isView ) plugin.column.Renderer_YMDH#getValue( final String value , final boolean isView ) [V5 修正反映] 5.9.3.0 (2015/12/04) [mailSender修正の追加対応] ・Ver.5に対しては添付ファイル名を履歴に残すようにしておきます。 ・USE_MAILSENDER_HISTORYをSystemDataに追加していなかったので、追加しておきます。 ・その他、コメントの修正を行います。 hayabusa.mail.MailModuleUtil#setInitParams(...) hayabusa.taglib.MailSenderTag#doEndTag() hayabusa.common.SystemData#USE_MAILSENDER_HISTORY hayabusa.mail.MailSenderTag その他コメント対応 6.4.0.0 (2015/11/27) 5.9.2.3 (2015/11/27) で、タグリブの項目を追加したため、VerUpしておきます。 gf/src/META-INF/taglib.tld gf/WEB-INF/taglib.tld 6.3.9.1 (2015/11/27) public protected private abstract static final synchronized native strictfp // 6.3.9.1 (2015/11/20) A method should have only one exit point, and that should be the last statement in the method.(PMD) [リソース追加] MSG0087 フォルダ無し フォルダが存在していません。 MSG0088 アクセス不可 アクセス可能か確認してください。 MSG0089_DE てにはを で、 MSG0089_NI てにはを に、 MSG0089_WA てにはを は、 MSG0089_WO てにはを を、 MSG0089_GA てにはを が、 [フォルダ存在チェックの追加] mainProcess タグの processID="FileSearch" で、フォルダが存在しない場合や、ネットワークドライブで 繋がらない場合に、エラーを表示する為に、fileタグに機能追加します。 gf/jsp/DOC18/jspAllInsert.jsp gf/jsp/DOC18/result.jsp gf/jsp/DOC18/result.jsp gf/jsp/DOC23/result.jsp gf/jsp/DOC31/htmlUpdate.jsp gf/jsp/GF7090/FileSearch_Grep.jsp [PMD対応] 修飾子を付けない(パッケージプライベート)で、本当に必要なのか、付け忘れなのかチェックします。 To avoid mistakes add a comment at the beginning of the XXXX method if you want a default access modifier コメントを付けるべきでしょう。(何らかのコメントで、PMDのエラーチェックが回避できれば良いのですけど) 6.3.9.1_refactoring.txt [A method/constructor shouldnt explicitly throw java.lang.Exception(PMD)] fukurou.mail.MailRX#main(String[] args) fukurou.xml.JspSaxParser#main(String[] args) hayabusa.report2.DocConverter_OOO#main(String[] args) [AbstractTransferReadHTTP、TransferExec_FILEGET クラスから移動] fukurou.transfer.TransferConfig#connect(String url,String postData) [DBEditConfigManager から、移動] hayabusa.db.DBEditConfig#getEditKeys(String guikey,String editName) [MultipartRequest#getParameters(String)は、null ではなく長さが0の配列を返す] hayabusa.taglib.FileUploadTag#getParamVal(String key,MultipartRequest multi) [TransferConfig#connect(String,String) に移動する] fukurou.transfer.AbstractTransferExecHTTP#execute(String[] vals,TransferConfig config,Transaction tran) fukurou.transfer.AbstractTransferReadHTTP#read(TransferConfig config,Transaction tran) fukurou.transfer.AbstractTransferReadHTTP#complete(TransferConfig config,Transaction tran) fukurou.transfer.AbstractTransferReadHTTP#error(TransferConfig config,ApplicationInfo appInfo) fukurou.transfer.TransferExec_FILEGET#execute(String[] vals,TransferConfig config,Transaction tran) [common/option/gantt.css として、共通化するとともに、useGantt=true 時のみ組み込みます] hayabusa.taglib.HeadTag#doEndTag() [getEditKeys(String,String) は、DBEditConfigManager ⇒ DBEditConfig へ移動] hayabusa.db.DBEditConfigManager#DBEditConfigManager(Map attribute) hayabusa.resource.UserInfo#addEditConfig(String guikey,String editName,DBEditConfig config) hayabusa.resource.UserInfo#deleteEditConfig(String guikey,String editName) [htmlend.jsp をインクルード処理しない箇所で、判定方法を、htmlend を含むかどうかに変更] fukurou.xml.JspIncludeReader#getString(File file,String encode) [null ではなく長さが0の配列を返すことを検討する(findbugs)] hayabusa.servlet.MultipartRequest#getParameters(String name) hayabusa.servlet.MultipartRequest#getIntParameters(String name) [カラムが一つも表示されないケースは、考えないことにする] plugin.view.ViewForm_HTMLSimpleList#create(int startNo,int pageSize) [コンストラクタを用意して、KEY,NAME をセットするように変更します] hayabusa.develop.AbstractJspCreate#AbstractJspCreate(String key,String names) plugin.develop.JspCreate_COLUMN#JspCreate_COLUMN() plugin.develop.JspCreate_COLUMN#JspCreate_COLUMN(String key,String names) plugin.develop.JspCreate_COMMENT#JspCreate_COMMENT() plugin.develop.JspCreate_HIDEMENU#JspCreate_HIDEMENU() plugin.develop.JspCreate_ORDER_BY#JspCreate_ORDER_BY() plugin.develop.JspCreate_QUERY#JspCreate_QUERY() plugin.develop.JspCreate_TABLE_UPDATE#JspCreate_TABLE_UPDATE() plugin.develop.JspCreate_VIEW#JspCreate_VIEW() [メソッドの出口は、最後の1か所にすべきです(PMD)] fukurou.db.DBFunctionName#getDBName(String dbName) fukurou.db.DBFunctionName#getFunctionName(String func) fukurou.model.ArrayDataModel#getColumnNos(String[] clmNms) fukurou.model.ExcelModel#getValues(int rowNo) fukurou.model.ExcelModel#getValue(int rowNo,int colNo) fukurou.model.NativeType#getType(String str) [修飾子 なし → private に変更] hayabusa.develop.JspEnumeration.WHERE_OPERATORS#inFormat(String str,boolean is_number) hayabusa.develop.JspEnumeration.WHERE_OPERATORS#betweenFormat(String str,String suffix) hayabusa.develop.JspEnumeration.WHERE_OPERATORS#convert(String arg) [修飾子を、public → なし に変更] plugin.io.TableReader_Calc.DomOdsParser#doParse(InputStream inputStream,String sheetName,String sheetNos) plugin.io.TableReader_Calc.DomOdsParser#getRowInfoList() [修飾子を、public → なし(パッケージプライベート)に変更] fukurou.util.Shell.ProcessReader#getString() fukurou.util.Shell.ProcessReader#isEnd() fukurou.util.Shell.ProcessReader#getStartTime() fukurou.util.Shell.ProcessReader#getEndTime() fukurou.xml.OGAttributes.OGAtts#OGAtts(String key,String val) [修飾子を、なし → private に変更] hayabusa.servlet.multipart.FilePart#write(OutputStream out) hayabusa.taglib.TableUpdateParamTag.NamesData#add(String nm,String val) hayabusa.taglib.TableUpdateParamTag.NamesData#add(String[] nms,String[] vals) hayabusa.taglib.TableUpdateParamTag.NamesData#getNames() hayabusa.taglib.TableUpdateParamTag.NamesData#getVals() plugin.io.TableReader_POI#readDBTable(File file,String enc) plugin.view.ViewForm_HTMLGanttTable#formatItd(int nTblRow,TableFormatter myIteFormat,StringBuilder strBuf) [内部処理が、長さが0の配列を返すように変更されたので、その対応] hayabusa.taglib.CommonTagSupport#getParameterRows() [継承されていないため、protected → private に変更します] plugin.develop.JspCreate_QUERY#queryText(List selects,List clmCmnt,List tables,List joins,JspConvertEntity join_on) plugin.develop.JspCreate_QUERY#apperEle(String start_key,String value,List default_value) plugin.develop.JspCreate_QUERY#andWhereQuery(String left,String operator,String right,boolean is_number) plugin.develop.JspCreate_QUERY#andWhereConst(String left,String right,boolean is_number) [3項演算子を || or && で簡素化できる(PMD)] hayabusa.db.DBColumn#useMultiSelect() hayabusa.html.AbstractViewForm#getBoolParam(String key) hayabusa.servlet.HybsAdmin#doGet(HttpServletRequest req,HttpServletResponse res) hayabusa.taglib.TabLinkTag#makeTabsFromQuery() [V5 修正反映] 5.9.2.0 (2015/11/06) [ガントヘッダー見直し] 5.9.0.1でIE用ganttCSSを作成しましたが、IE以外でも実用上問題なく表示させるため全面的にヘッダーの構造を見直します。 単純なテキスト出力であったものを、divを日付単位で配置した構造に変更しています。 エンジンのバージョンアップが簡単に出来ない環境で互換モードを解いたIEを利用する場合は、ganttIE.cssを読み込んで対応してください。 廃止タグを利用していたGF7218/result.jspをGanttHeaderタグ利用に変更します。 hayabusa.taglib.GanttHeaderTag jsp/common/default.css gf/jsp/GF7218/result.jsp [V5 修正反映] 5.9.2.1 (2015/11/13) [帳票verify画面修正] ヘッダのみ存在して、フッタが存在しない帳票でverify画面を開くと、 フッタがヘッダと同じ情報として表示されてしまうため、tableIdを付加しておきます。 ge/jsp/REP02/vefiry.jsp [TimeoutID の未定義エラー対策] ポップアップ等で検索中表示のスクリプトのエラーが発生するため対応。 (V6はインクルード方式に変更されているが、V5はとりあえずこの方式のままとする) hayabusa.taglib.HeadTag#UNBLOCKUI_READY [hideMenuタグ修正] idを指定した際に正しい形で出力されていなかったため、修正します。 hayabusa.taglib.HideMenuTag#doStartTag() [V5 修正反映] なお、以下の修正は、V5ソースを元に、V6基準に合わせて修正していますので、ソースは一致しません。 5.9.2.2 (2015/11/20) [fileタグ機能追加] fileタグにZIP圧縮機能を追加します。 fileURL+file1のファイルもしくはディレクトリを、file2にZIP圧縮します。 また、GFにfileタグのテスト用画面を作成します。 hayabusa.taglib.FileTag#actionExec( final String action ) gf/jsp/GF7150 [帳票CSV出力修正] 帳票ツール対応の一環で、CSV出力でグループIDとデーモングループを利用できるようにします。 RFWプラグインでは出力ファイル名にグループIDを付加すると同時に、ビッグジョブ対応として デーモングループ名にBIGが入ってる場合は_BIGを付加したディレクトリに出力するようにします。 (その他、一部コメントの修正も実施) [ヘッダ固定修正] chromeで、横スクロールバーしか出ない場合にデータが隠れていました。 スクロースバーの幅が取得できない場合に、強制的に17px扱いとします。 jsp/common/scrollBar2.js#getSBWidth [V5 修正反映] 5.9.2.3 (2015/11/27) [mailSender改修] mailSenderタグでメールを送信した場合にはエンジン側には履歴を残していませんでした。 画面からの送信のため、サーバ側でエラーになるような通常のパターンでは問題はありませんが、 サーバ側で正常に処理された後に送信されないような状況(中継サーバ利用など)のエラー時に 問題があるめ履歴を残せるようにします。 mailSenderタグのuseHistory(初期値はUSE_MAILSENDER_HISTORY:false)をtrueとする事で GE32,34テーブルに送信履歴を限定的ながら落とすようにします。 スキーマを分けている場合は、内部的にGE32S02シーケンスを利用しているので注意してください。 (システムID、送信元アドレス、送信先アドレス、タイトル、本文について履歴を残します) hayabusa.mail.MailModuleUtil 新規作成 hayabusa.taglib.MailSenderTag#release2() hayabusa.taglib.MailSenderTag#setUseHistory( final String flag ) hayabusa.taglib.MailSenderTag#doEndTag() taglib.tld gf/jsp/GF6220/page3.jsp,result.jsp [IEのイントラネット互換モードチェック対応] イントラネットでの互換モードを行うチェックを入れられていても、最新のレンダリングで表示するような 設定を入れられるようにします。 具体的には、metaタグの http-equiv="X-UA-Compatible" content="IE=edge"の設定をheadタグで出力可能とします。 初期値はシステムリソースのUSE_EDGE_HEADER(false)です。 hayabusa.taglib.HeadTag#EDGE_HEAD hayabusa.taglib.HeadTag#doEndTag() hayabusa.taglib.HeadTag#setUseEdgeHeader( final String flag ) hayabusa.taglib.HeadTag#release2() hayabusa.common.SystemData#USE_EDGE_HEADER hybs-taglib.tld [HTML5対応modalDialogのシステムリソース設定] インラインフレームを利用したmodalDialogを、標準的に利用するかどうかの設定をheadタグから行えるようにします。 useHTML5Modalの値をtrueとする事でcommon/option/html5modalDialog.jsとcssを読み込みます。 初期値はシステムリソースのUSE_HTML5_MODAL(false)です。 hayabusa.taglib.HeadTag#HTML5_MODAL_JS hayabusa.taglib.HeadTag#HTML5_MODAL_CSS hayabusa.taglib.HeadTag#doEndTag() hayabusa.taglib.HeadTag#setUseHTML5Modal( final String flag ) hayabusa.taglib.HeadTag#release2() hayabusa.common.SystemData#USE_EDGE_HEADER hybs-taglib.tld [HTML5向けポップアップ修正] ポップアップ表示では上位を見ていくようにしたが、BODYを持っているページが上位に存在しない場合に正しく表示されないため、 「上位でFrameタグを持っていないwindow」を見るように修正します。 つまり、frameではなくiframeで構成された上位が存在していれば表示されるため、今までのフレーム構造の場合は 起動フレームにのみ表示されます。 また、複数起動のため同様に既にポップアップが上がっている場合はそのレベルでは上げないようにします。 その他、Close可能領域の色を少し変更しておきます。 jsp/common/option/html5modalDialog.js jsp/common/option/html5modalDialog.css 6.3.9.0 (2015/11/06) [リファクタリング] findbugs-3.0.1 , pmd-bin-5.3.3 によるチェックを行い、修正できる範囲で、修正しています。 それ以外に、細かいソース変更は入っていますので、ここでピックアップしていないソースも 修正が入っている可能性があります。 6.3.9.0_refactoring.txt [W100 default.css] バルクセットで、ヘッダー部のテキストフィールドの大きさを、幅100%で 指定していましたが、罫線(枠線)が消えるため、少し小さめにとります。 93% 位に変更します。 src/script/common/default.css#table input[type="text"].W100 { [Java8 ラムダ式] Java8より、関数インターフェース には、@FunctionalInterface アノーテーションを付ける事に なっているので、追加します。 これは、abstractなメソッドが1つだけのインターフェースを関数インターフェースと呼んでおり、 無名クラスを使ったコールバックが、簡素化して記述できるようになっています。 fukurou\model\EventReader.java(36): public interface EventReader { fukurou\transfer\TransferExec.java(33): public interface TransferExec { fukurou\util\Cleanable.java(25): public interface Cleanable { fukurou\xml\JspParserFilter.java(29): public interface JspParserFilter { hayabusa\io\ChartPlot.java(30): public interface ChartPlot { hayabusa\remote\RemoteControllable.java(30): public interface RemoteControllable { [PDF変換を一括処理できるように、コマンド追加] fukurou.model.JacobUtil#main(String[] args) [TagBuffer を使用するように変更] fukurou.util.XHTMLTag#iframe(Attributes attri,String urlEncode) [synchronized 処理を外す] fukurou.model.JacobUtil#copyExcel(File inFile,File outFile) fukurou.model.JacobUtil#excel2PDF(File inFile,File outPdf) fukurou.model.JacobUtil#toPrint(File inFile,String printer) [セルに値をセットするときに、セルタイプを考慮する] fukurou.model.ExcelModel#textConverter(TextConverter conv) [新規追加] fukurou.model.ExcelModel#sheetSelected(boolean isSelect) fukurou.model.ExcelModel#sheetCopy(TextConverter conv,String shName) fukurou.model.POIUtil#setValue(Cell oCell,String val) [V5 修正反映] なお、以下の修正は、V5ソースを元に、V6基準に合わせて修正していますので、ソースは一致しません。 5.9.1.2 (2015/10/23) [RFW用出力変更] 社内では帳票システムのプリンタIDをRFWのプリンタ名と一致させるようにするため、 CSV出力上のRDSetOutputPrinterはプリンタ名ではなくプリンタIDを出力します。 plugin.report.CSVPrintPointService_RFW#makeheader() [iframeタグ新規作成] HTML5ではframeタグは廃止となり、iframeタグを利用するようになっていますが、エンジンにiframeタグを作成する機能がなかったため追加します。 iframeタグはframeタグを継承して作成しているため、元のprivateメソッドをprotected化しています。 hybs-taglib.tld hayabusa.taglib.IframeTag 新規作成 hayabusa.taglib.FrameTag#getUrlEncode() hayabusa.taglib.FrameTag#isNormalRequestKey( final String key ) hayabusa.taglib.FrameTag#dbTable fukurou.util.XHTMLTag#IFRAME_KEY fukurou.util.XHTMLTag#iframe( final Attributes attri,final String urlEncode ) [index画面の追加] フレームを切ってメニューを表示するのではなく、JavaScriptを利用してiframeで表示させるタイプのindexを作成しておきます。 試作的扱いですが、mouseoutによる遅延自動折り畳みが実行されるよう適用しています。メニューの移動も可能です。 gf/jsp/index3.jsp gf/jsp/menu/simpleMenu.jsp jsp/common/default.css [htmlend.jsp修正、追加] og:headタグのペアとして、純粋にhtmlタグの終了タグのみを持つhtmlend2.jspを作成しておきます。 jsp/common/htmlend2.jsp [自己終了タグの出力修正] HTML5の自己終了対象外タグで、自己終了として出力している箇所で気が付いた部分を修正しておきます。 hayabusa.taglib.TopMenuTag#makeOneLevelMenu() hayabusa.taglib.QueryButtonTag#getEditSelect( final DBEditConfig[] configs, final String selEditName ) hayabusa.servlet.HybsAdmin#getSystemResource() hayabusa.servlet.HybsAdmin#ClassInfo hayabusa.servlet.HybsAdmin#getLoginUser( final String sort,final boolean direc ) plugin.view.ViewForm_HTMLCustomTable#getTableHead() plugin.view.ViewForm_HTMLFormatTable#getTableHead() plugin.view.ViewForm_HTMLGanttTable#getTableHead() plugin.view.ViewForm_HTMLRotationTable#getHead() plugin.view.ViewForm_HTMLSeqClmTable#getHead() plugin.view.ViewForm_HTMLStackedGanttTable#getHead() plugin.view.ViewForm_HTMLTable#getHead() jsp/common/htmlend.jsp jsp/common/gamen/01_ADMIN/printConfig.jsp, printContext.jsp, printHeader.jsp, printPageContext.jsp ,printRequesMethodt.jsp, printRequest.jsp, printSettion.jsp, printSystemInfo.jsp, printSystemParameter.jsp, printUserData.jsp, printUserInfo.jsp [XLSX出力の形式選択] fileDownload.jspを利用したExcel出力で、xls,xlsxの形式をシステムリソースで設定可能とします。 (6.2.0.0で対応されているTABLE_WRITER_EXCEL_TYPEをVer.5にも追加します) 初期値はxlsとします。 hayabusa.common.SystemData#TABLE_WRITER_EXCEL_TYPE [日付ピッカー修正] 新日付ピッカーでは元のスクリプトから日付文字列の合成方法を変更していたため、 特定の日付で数値として加算される不具合がありました。修正します。 jsp/common/eventScript.js#glDatePicker → calendar3.js 6.3.8.6 (2015/10/23) [ソースチェック] WARNING14B og:link タグの href属性に関するソースチェックは、 画面ID指定時は、警告ではなく、エラーにします。 ERROR07A に変更します。 DOC18/xsltV6/GF70_PROG.xsl 6.3.8.5 (2015/10/16) [新規作成] fukurou.util.StringUtil#ogErrMsgPrint(String msg,Throwable th) [ogErrMsgPrint 使用] fukurou.util.StringUtil#numberFormat(String in,int minFraction) [StringUtil.ogErrMsgPrint 使用] fukurou.util.FileUtil#copy(File fromFile,File toFile,boolean keepTimeStamp) fukurou.util.FileUtil#changeCrLfcopy(File fromFile,File toFile) fukurou.util.FileUtil#copy(InputStream in,File toFile) fukurou.util.FileUtil#copy(InputStream input,OutputStream output) [FileMap 修正] コンストラクターで、Exception を throw しないようにします。 FileMapで、コンストラクターでのExceptionを止めます。 エラー判定は、内部にためておきます。 fukurou.util.FileMap#FileMap(String dir,Set resourcePaths) fukurou.util.FileMap#FileMap(String dir,String path,Set resourcePaths) fukurou.util.FileMap#FileMap(String dir) fukurou.util.FileMap#FileMap(String dir,String path) [Exception を throw しないようにします] fukurou.util.FileMap#exists(String key) [6.3.8.4 (2015/10/09) 修正] 前回、[FAQ の見直し]として、KBFAQ FAQ区分から、大分類、小分類を無くし、 回答と分類のみに分けましたが、使用されていました。(Ver5では) そこで、もう一度見直しをかけます。 jsp/common/gamen/22_FAQ jsp/common/gamen/23_FAQRGST 6.3.8.4 (2015/10/09) [画面IDで取得] 紙芝居作成時に、検収実績(PUR3309-K) &検収戻し(PUR3309) のような、 同一フォルダで、画面IDのみ変更しているケースで、紙芝居は、 画面ID単位に作成したいため、従来の URI(実フォルダ)ではなく、 リクエストパラメータの画面IDを取得するように変更します。 [セーブフォルダを、URIではなく、画面IDから取得する] hayabusa.filter.FileFilter#makeFileName(HttpServletRequest request) [デバッグメッセージの追加] hayabusa.filter.URLCheckFilter#isValidAccess(ServletRequest request) [#XXXX %S などの対応] getLabel(String) は汎用過ぎるので、少し分ける。 hayabusa.resource.ResourceManager#makeLabelArray(String[] args) hayabusa.resource.ResourceManager#getLongLabel(String key) hayabusa.resource.ResourceManager#getRawShortLabel(String key) hayabusa.resource.ResourceManager#getExtLabel(String key) [アノテーション対応、解除] @WebServlet , @WebFilter アノテーションが動作していないという件で、 理由が判明しました。 WEB-INF/web.xml の web-app 宣言で、version="3.0" を指定したとき、 metadata-complete="false" を指定しないと、アノテーションが解釈されません。 これは、省略時のデフォルト ですが、openGion では、使用する/しないを、都度 指定していた為、metadata-complete="true" にしていたのを忘れていました。 今回、ServletContextListener で、FilterRegistration や、ServletRegistration で、(起動時ですが)動的に使用する/しないを指定できることが判明しているため、 アノテーション指定は、廃止します。 [FileMap のコンストラクタ変更に伴う対応] fukurou.util.FileMap#getFilename(String[] keys) [別のコンストラクターを呼ぶようにします] fukurou.util.FileMap#FileMap(String dir,Set resourcePaths) fukurou.util.FileMap#FileMap(String dir,String path,Set resourcePaths) fukurou.util.FileMap#FileMap(String dir) fukurou.util.FileMap#FileMap(String dir,String path) [新規作成] fukurou.util.FileMap#dataSet(String fname,String path) [GE80(FAQテーブル)の取得は廃止] (helpタグで行う) hayabusa.resource.GUIData#toString() hayabusa.resource.GUIData#GUIData(String[] data) hayabusa.resource.GUIInfo#getAttribute(String key) [KBLINK(リンク区分)を画面のイメージファイルに割り当てます] hayabusa.resource.GUIData#getImageKey() hayabusa.resource.GUIInfo#getImageKey() hayabusa.taglib.TopMenuTag#makeTagMenu(GUIInfo guiInfo,String bodyIn,int type) [GE80(FAQテーブル)の関連画面ID のキャッシュ] hayabusa.taglib.HelpTag#loadGE80() [extension 廃止] hayabusa.taglib.HelpTag#release2() [topMenu 内でのHelp機能を廃止します] hayabusa.taglib.HelpTag#doEndTag() hayabusa.taglib.TopMenuTag#makeTagMenuString(String href,String target,String bodyIn,String gamenId,String imgKey,int type) hayabusa.taglib.TopMenuTag#doEndTag() hayabusa.taglib.TopMenuTag#release2() [ヘルプファイルと、GE80(FAQテーブル)の関連画面ID のキャッシュ] hayabusa.taglib.HelpTag#makeHelpTag() [判定ロジックを、画面リソースではなく、内部Setで行う] hayabusa.taglib.HelpTag#makeTagFaq() [廃止] フォルダをスキャンして、必要なHelpファイルを見つけるため、 拡張子を指示する必要がなくなりました。 hayabusa.taglib.HelpTag#setExtension(String ext) [FAQ の見直し] 機能的な見直しではなく、内部処理的な見直しです。 E80(FAQテーブル)の検索を、画面リソース取得時に行っていますが、それを止めて、 help タグ内で、リストを作成して、Mapで保管する方式に変更します。 ・topMenuタグ内に、helpタグを配置した場合の画面分類ヘルプ機能を廃止します。 使い方が良く判らない。 FAQ登録(23_FAQRGST) を見直します。 ・KBFAQ FAQ区分 を、大分類、小分類などではなく、回答と分類のみに分けます。 (KBFAQ1 廃止) jsp/common/gamen/22_FAQ jsp/common/gamen/23_FAQRGST 6.3.8.3 (2015/10/03) [linkタグのhref属性] linkタグで、gamenId指定時に、href属性がない場合の、 JSPソースチェックを追加しました。(WARNING14B) これがないと、雛形(紙芝居)作成時に、リンクに ファイル名が記述されていないため、動作しません。 Tomcatの場合、conf/web.xml の welcome-file-list で、 index.jsp が指定されている為、動作します。 gf/jsp/DOC21/query.jsp リソース未使用検索 gf/jspDOC22/query.jsp ソース全文検索 gf/jspGF6230/result.jsp LDAP+MAIL [java/tomcat VerUp] 6.3.8.0 (2015/09/11) で、AccessStop を外部から制御対応で、 汎用的に、Filter全般に、同様の制御フラグを組み込みます。 それに伴い、メソッド名と、内部フラグの名称、意味(true/false)も変更します。 [AccessStop を外部から制御できるように、コマンドと状態を受けるようにする] hayabusa.servlet.HybsAdmin#doGet(HttpServletRequest req,HttpServletResponse res) hayabusa.servlet.HybsAdmin#getAccessStop(String isStop) hayabusa.servlet.HybsAdmin#getAdminLink() [アノテーション対応、解除] 6.3.4.0 (2015/08/01) で、記述した、@WebServlet アノテーションが、良く判らないので、コメントアウトします。 web.xml の記述がなくせると思ってましたが、これだけではだめなようです。 hayabusa.servlet.FileDownload.java(83): @WebServlet(name="org.opengion.hayabusa.servlet.FileDownload",urlPatterns={"/jsp/fileDownload"}) hayabusa.servlet.HybsAdmin.java(109): @WebServlet(name="org.opengion.hayabusa.servlet.HybsAdmin",urlPatterns={"/jsp/admin"}) hayabusa.servlet.MakeImage.java(68): @WebServlet(name="org.opengion.hayabusa.servlet.MakeImage",urlPatterns={"/jsp/makeImage"}) hayabusa.servlet.RemoteControlServlet.java(49): @WebServlet(name="org.opengion.hayabusa.servlet.RemoteControlServlet",urlPatterns={"/servlet/remoteControl"}) [Filter アノテーション対応] @WebFilter アノテーションを追加しておきます。 ただし、フィルターのアノテーションでは、順番を指定できません。 順番を指定する場合は、web.xml に、 のみ記述します。 ※ tomcat8.0.26 ですが、どうも認識しないようです。(Tomcat (7.0.14) 時点で指摘有) hayabusa.filter.AccessStopFilter.java(84): @WebFilter(filterName="AccessStopFilter", urlPatterns="/jsp/*") hayabusa.filter.FileFilter.java(75): @WebFilter(filterName="FileFilter", urlPatterns="/jsp/*") hayabusa.filter.GZIPFilter.java(71): @WebFilter(filterName="GZIPFilter", urlPatterns="/jsp/*") hayabusa.filter.URLCheckFilter.java(85): @WebFilter(filterName="URLCheckFilter", urlPatterns="/jsp/*") hayabusa.filter.URLHashFilter.java(108): @WebFilter(filterName="URLHashFilter", urlPatterns="*.jsp") [Servlet/Filter 情報を作成] hayabusa.servlet.HybsAdmin#doGet(HttpServletRequest req,HttpServletResponse res) hayabusa.servlet.HybsAdmin#getRegistrationMessage(HttpSession session) [プログラムによるWebアプリケーションの拡張] hayabusa.common.HybsContextListener#contextInitialized(ServletContextEvent event) hayabusa.common.HybsContextListener#addRegistration(ServletContext context) [filenameの初期値設定] hayabusa.filter.URLCheckFilter#init(FilterConfig filterConfig) hayabusa.filter.URLHashFilter#init(FilterConfig config) [アクセス拒否を示すメッセージファイルの内容を取り出します] hayabusa.filter.URLCheckFilter#doFilter(ServletRequest request,ServletResponse response,FilterChain chain) hayabusa.filter.URLCheckFilter#refuseMsg() hayabusa.filter.URLHashFilter#doFilter(ServletRequest request,ServletResponse response,FilterChain chain) hayabusa.filter.URLHashFilter#refuseMsg() [フィルターの停止処理] hayabusa.filter.AccessStopFilter#doFilter(ServletRequest request,ServletResponse response,FilterChain chain) hayabusa.filter.FileFilter#doFilter(ServletRequest req,ServletResponse res,FilterChain chain) メソッド名変更、引数の意味反転。 hayabusa.filter.FileFilter#setUseFilter(boolean flag) hayabusa.filter.AccessStopFilter#setUseFilter(boolean flag) hayabusa.filter.FileFilter#isUseFilter() hayabusa.filter.AccessStopFilter#isUseFilter() 判定をdoFilterメソッドに移動。 hayabusa.filter.AccessStopFilter#isStop(ServletRequest request) [メニュー関連] メニューの見え方をカスタマイズできるように、id 属性を追加しておきます。 jsp/custom/query_info.jsp jsp/custom/custom.css 消すためのサンプル jsp/menu/matrixMenu.jsp id="matrixMenu_link" , id="GroupMenu" 追加 hayabusa.common.SystemData#HEADER_MENU_TYPE [NONE(表示しない) 追加] hayabusa.taglib.TopMenuTag#doEndTag() hayabusa.taglib.TopMenuTag#setMenuType(String type) [紙芝居作成用の自動実行] JSPのマトリクスメニューや、ツリーメニューの画面IDリンクを順番にスキャンし、 登録ボタン(追加、変更、削除)と、リンクを順番に実行していくJavaScriptを 作成しました。 これを利用して、紙芝居作成用の画面操作を自動実行します。 現時点では、まだ、評価版です。 gf/jsp/menu/autoRun.jsp gf/jsp/menu/multiMenu.jsp gf/jsp/menu/matrixMenu.jsp 6.3.8.2 (2015/09/26) [サンプルJSP修正] gf/jsp/GF6380 ファイルクエリー gf/jsp/GF7213 XYバー gf/jsp/GF7220 ドラッグ情報登録 gf/jsp/GF7221 ドラッグサンプル1 gf/jsp/GF7222 ドラッグサンプル2 gf/jsp/GF7230 ワークフロー [V5 修正反映] 5.9.0.2 (2015/09/25) [multiMenu.css修正] メニューのリンククリック時に背景色を変更する機能がありますが、IE7互換モード以外で動作していませんでした。 原因はmultiMenu.cssのコメントが正しくなかったためで、書き方を修正します。 jsp/menu/multiMenu.css 6.3.8.1 (2015/09/18) [サンプルJSP追加] Ver5のgoogleMapのサンプル(TEST01 〜 TEST10)を持ってきました。 ちょっと、フォーマット等を合わせています。 gf/jsp/TEST01 Map位置表示 gf/jsp/TEST02 Map検索表示 gf/jsp/TEST03 Map位置popup gf/jsp/TEST04 Map移動 gf/jsp/TEST05 Map2点マーカー gf/jsp/TEST06 Map自作マーカー gf/jsp/TEST07 Mapツールチップ gf/jsp/TEST08 Mapマーカーpopup gf/jsp/TEST09 Mapルート gf/jsp/TEST10 Mapルート(クリック) [java/tomcat VerUp] 6.3.8.0 (2015/09/11) で、アップした、commons-codec-1.10.jar で、 java.lang.NoClassDefFoundError: org/apache/commons/codec/binary/Base64 が発生するので、元に戻します。(原因不明) jdk180u60/jre/lib/ext/commons-codec-1.10.jar → commons-codec-1.9.jar [GF46(位置情報サンプル)見直し] レイアウト表示とgoogleMapの緯度経度情報の サンプルとして、GF46を見直します。 オリジナルの座席表は難しいので、廃止します。 変更_20150918 GF_DB定義書.xlsx で、スキーマ変更 GF46(位置情報サンプル) 全項目見直し(テーブル再作成) DROP TABLE GF46; @GF46S.sql @GF46C.sql 6.3.8.0 (2015/09/11) [5.9.0.1 (2015/09/11) 対応] [gannt.js修正] ガントチャートのheightResetによるテーブルの高さ調整がIE9以降で動作していなかったため対応します。 chrome、firefoxのガントチャートでの実行は確認しています。 IE7モード以外での、テーブル行の高さ判定の条件を変更しているため、例えば旧タイプの左右分割等でheightResetを利用している場合は、 以前と異なった動作となる可能性があります。 また、横スクロールバーが出ない場合の調整を行うように修正しています。(IE7モードでは動作しません) jsp/common/option/gantt.js#heightReset(evt) jsp/common/option/gantt.js#ganttResize(evt, iSBits) [IE用ganntCSS作成] IE8以降ではlayout-grid-char(IE専用スタイル)が意図した表示とならないため、letter-spacingを利用して表示可能なCSSを用意しておきます。 自動読み込みではなく、ガントチャートのヘッダを利用する画面で、個別に読み込む事とします。IE7互換モードでは不要です。 又、上下で文字数が異なるパターン(日本語曜日が入ってるもの)はずれが生じます。 その場合は日が正しく枠内に入るように調整しています。 jsp/common/option/ganttIE.css → ganttIE8.css (Ver6 独自対応) jsp/common/option/ganttIE7.css (従来の設定を adjustGanttTable.css から移植)(Ver6 独自対応) [EventColumn修正] イベントカラムでは初期動作の制御用に先頭アンダースコアを付ける事が出来ますが、付けた場合にSQL文中で$xの表記を行っていると カラム名への変換が正しくされていませんでしたので対応します。 hayabusa.db.DBEventColumn#getRendParam() hayabusa.db.DBEventColumn#getEditParam() hayabusa.db.DBEventColumn#evColReplace( final String inStr ) [帳票GE50取得条件変更] Excel帳票のGE50検索条件に、Calc帳票同様GE54の条件を追加します。 pluglin.daemon.Daemon_Report#GE50_SELECT [AccessStop を外部から制御できるように、コマンドと状態を受けるようにする] hayabusa.servlet.HybsAdmin#doGet(HttpServletRequest req,HttpServletResponse res) hayabusa.servlet.HybsAdmin#getAccessStop(String isStop) hayabusa.servlet.HybsAdmin#getAdminLink() [FileUtil#getPrintWriter( File,String ) を使用] fukurou.xml.DomParser#write(File aFile,Document aDocument) fukurou.xml.JspSaxParser#write(File aFile,OGDocument node) plugin.report.CSVPrintPointService_DEFAULT#execute() plugin.report.CSVPrintPointService_RFW#execute() plugin.report.RFIDPrintPointService_DEFAULT#execute() [FileUtil#getPrintWriter( OutputStream,String ) を使用] hayabusa.taglib.DirectWriteTableTag#doEndTag() hayabusa.taglib.URLConnectTag#doEndTag() [Oracle Database 12cリリース1 (12.1)以降、StructDescriptor は非推奨] fukurou.db.ResultSetValue#ResultSetValue(ResultSet res) [SSL接続するかどうか] hayabusa.taglib.MailSenderTag#setUseSSL(String isSSL) [SSL接続するかどうかを指定するパラメータを追加します] fukurou.mail.MailRX#start() fukurou.mail.MailRX#useSSL(boolean isSSL) fukurou.mail.MailReceiver#start(String[] args) fukurou.mail.MailTX#MailTX(String host,String charset) fukurou.mail.MailTX#MailTX(String host,String charset,String smtpPort,String authType,String authPort,String authUser,String authPass,boolean useSSL) fukurou.mail.MailTransfer#start(String[] args) hayabusa.mail.DefaultMailManager#send() hayabusa.mail.MailManager_DB#sendMail(String paraKey,String systemId,List emList) hayabusa.taglib.MailSenderTag#doStartTag() hayabusa.taglib.MailSenderTag#release2() [idxEnd = -1 の場合、無限ループになる] (javadoc上では -1 のハズ) hayabusa.filter.FileResponseTransform.HrefChangeData#replace(String file,String inStr) [エラーメッセージが2重になっていたので、バージョン情報のみにする] hayabusa.common.HybsSystemException#printStack() [ガント系 ヘッダーの幅指定を、default.css から分離] hayabusa.taglib.HeadTag#doEndTag() [キャラクタセットに、UTF-8 を追加します] fukurou.mail.MailCharsetFactory.Mail_8bit_Charset#Mail_8bit_Charset(String charset) fukurou.mail.MailCharsetFactory#newInstance(String charset) [セーブ対象外のファイルのCSV形式での指定(omitFiles属性)] hayabusa.filter.FileFilter#init(FilterConfig filterConfig) hayabusa.filter.FileFilter#makeFileName(HttpServletRequest request) [パラメータの初期値設定と、passUsers、addUsers 属性追加] hayabusa.filter.AccessStopFilter#init(FilterConfig filterConfig) hayabusa.filter.AccessStopFilter#isStop(ServletRequest request) [GE ロールエラー] 検索条件にロールを指定するとエラーになっていた為、画面JSPを修正しました。 ge/jsp/GE0001/result.jsp(51): ge/jsp/GE0001/result.jsp(52): ge/jsp/GE0002/result.jsp(87): ge/jsp/GE0019/result.jsp(55): ge/jsp/GE0019/result.jsp(64): ge/jsp/GE0020/result.jsp(50): ge/jsp/GE0020/result.jsp(61): [java/tomcat VerUp] このエンジンから、jdk180u60 、 tomcat8.0.26 をターゲットとします。 実際の所、それに関する修正はありません。 同時に、jdk180u60 の ext の各モジュールのバージョンをアップします。 jdk180u60/jre/lib/ext/jaybird-full-2.2.8.jar jdk180u60/jre/lib/ext/h2-1.4.188.jar jdk180u60/jre/lib/ext/commons-compress-1.10.jar jdk180u60/jre/lib/ext/jcifs-1.3.18.jar jdk180u60/jre/lib/ext/mysql-connector-java-5.1.36-bin.jar jdk180u60/jre/lib/ext/commons-logging-1.1.3.jar jdk180u60/jre/lib/ext/postgresql-9.4-1202.jdbc41.jar jdk180u60/jre/lib/ext/hsqldb-2.3.3.jar jdk180u60/jre/lib/ext/javax.mail_1.5.4.jar jdk180u60/jre/lib/ext/commons-codec-1.10.jar jdk180u60/jre/lib/ext/jsch-0.1.53.jar jdk180u60/jre/lib/ext/sqljdbc_4.2.6420.100_jpn.jar jdk180u60/jre/lib/ext/ojdvc7.jar jdk180u60/jre/lib/ext/orai18n.jar WEB-INF/lib/taglibs*** のバージョンをアップします。 WEB-INF/lib/taglibs-standard-impl-1.2.1.jar → taglibs-standard-impl-1.2.5.jar WEB-INF/lib/taglibs-standard-jstlel-1.2.1.jar → taglibs-standard-jstlel-1.2.5.jar WEB-INF/lib/taglibs-standard-spec-1.2.1.jar → taglibs-standard-spec-1.2.5.jar 6.3.7.0 (2015/09/04) [5.9.0.0 (2015/09/04) 対応] [帳票のCSV出力対応] 外部の帳票出力ツールとの連携を行う場合等にCSV出力が必要になります。 RFIDと同じような仕掛けで、CSVデータとして帳票のデータを出力できるようにします。 システムリソースで指定するRFID及びCSVの出力パターンはplugin扱いとして、hayabusa.reportに配置していた RFIDのDEFAULTはpluginパッケージに移動します。 CSVの出力方式は単純なCSVと、Report & Form Warehouse用のヘッダを付ける2つのクラスを作成しておきます。 hayabusa.report.CSVPrintPointService hayabusa.report.AbstractCSVPrintPointService hayabusa.report.CSVPrintRequest hayabusa.report.ReportProcessing#FGRUN_G,FGRUN_H,FGRUN_I hayabusa.report.ReportProcessing#execute() hayabusa.report.RFIDPrintPointService_DEFAULT ⇒廃止(pluginに移動) hayabusa.report2.ExecQueue#CSV_PRINT,CSV_PRINT_EXCEL,CSV_PRINT_PDF hayabusa.report2.ExecQueue#setOutputName( final String outputDir, final String outputFile, final String type, final String yokyu ) hayabusa.report2.ExecProcess#csv() hayabusa.report2.ExecProcess#process() hayabusa.common.SystemData#REPORT_CSV_SERVICE_CLASS,REPORT_CSV_TEXT_ENCODE,REPORT_RFID_SERVICE_CLASS plugin.report.CSVPrintPointService_DEFAULT plugin.report.CSVPrintPointService_RFW plugin.report.RFIDPrintPointService_DEFAULT [XLSX対応] XLSXは、EXCEL出力時もメモリを多く使うため、機能制限はあるが、XSSFWorkbook を SXSSFWorkbook に切り替えます。 標準を、SXSSFWorkbook に切り替えてみる。 fukurou.model.ExcelModel#ExcelModel( final File file , final boolean isOpen ) [AutoCloseableを使用したtry-with-resources構築に対応] plugin.table.TableFilter_CMNT_CLM#execute() plugin.table.TableFilter_CMNT_TBL#execute() plugin.table.TableFilter_DBARG_OUT#execute() plugin.table.TableFilter_DBSRC_OUT#execute() plugin.table.TableFilter_SEQUENCE#execute() plugin.table.TableFilter_TABLE#execute() 6.3.6.1 (2015/08/28) で、対応した、処理で、commit() 漏れの箇所の修正も行っています。 [title属性の設定方法変更] hayabusa.taglib.HeadTag#doStartTag() hayabusa.taglib.HeadTag#doEndTag() hayabusa.taglib.HeadTag#sessionInit() [ファイナライズを呼び出します] hayabusa.servlet.HybsAdmin#getCloseMessage(HttpSession session) 6.3.6.1 (2015/08/28) [all.tagsの対応] all.tags が、HTML5非対応なので、条件判定でNullエラーしない様に修正。 $().find化 すると、HTML5でも使用できるようになるが、ガントが横に並ばなくなる。 src/script/common/option/adjustGanttTable.js src/script/common/option/gantt.js#breakAdjust() [copySTの対応] jsp以下の common,menu,image を、jspCommonX.X.X.X.jar に圧縮・配布する対応で、 jsp/common/gamen/14_EDIT/tab.jsp で、og:file タグの copy アクションで、 実ファイル(common/fileDownloadListDef.txt) を取得できなくてエラーになって いました。 そこで、URLのパスでファイルを取得できる copySTアクションを追加しました。 jsp/common/gamen/14_EDIT/tab.jsp [アプリケーション情報の復活] ORACLEのアクセス情報を設定するシステムパラメータの USE_DB_APPLICATION_INFO を、6.2.5.0 (2015/06/05) 初期値変更 true → false しましたが、トリガで削除する場合の更新履歴に、削除ユーザーをセットする のに使用していた為、初期値を元の true に戻します。 [eventScript.js] realtimecheck.jsp の呼び出しイベントで、アドレスが、'../common/realtimecheck.jsp' になっていた為、jsp/common/gamen 以下の相対パスが異なる画面で常にエラーが 発生していました。 JavaScriptで絶対パスを取得して、つなげます。 ただし、パスに、jsp が含まれることを前提とします。 gf/src/script/common/eventScript.js gf/jsp/common/eventScript.jsp [カラム名変更] DB検索画面で、SQL入力欄のカラム名(INSQL)が、カラムリソース未登録の為、警告が出ます。 他の画面で使用中の、カラム名(SQL_TEXT)に置き換えます。INSQL → SQL_TEXT jsp/common/gamen/03_DBSEARCH/changeSQL.jsp(2): {@INSQL} jsp/common/gamen/03_DBSEARCH/query.jsp(49):
jsp/common/gamen/03_DBSEARCH/query.jsp(50): Ctrl-C jsp/common/gamen/03_DBSEARCH/query.jsp(52): jsp/common/gamen/06_INSTALL/directTableInsert.jsp(33): {@INSQL} jsp/common/gamen/06_INSTALL/directTableInsert.jsp(66): {@INSQL} jsp/common/gamen/06_INSTALL/query.jsp(29): jsp/GF6250/query.jsp(93): jsp/GF6250/result.jsp(24): jsp/GF6250/result.jsp(53): jsp/GF6250/result.jsp(84): {@INSQL} jsp/GF6270/query.jsp(49):
jsp/GF6270/query.jsp(50): Ctrl-C jsp/GF6270/query.jsp(52): jsp/GF6270/result.jsp(28): {@INSQL} [Transaction でAutoCloseableを使用したtry-with-resources構築に対応] fukurou.db.DBUtil#dbExecute(String stmt,String[] args,ApplicationInfo appInfo,String dbid) fukurou.db.DBUtil#dbExecute(String stmt,String[] args,ApplicationInfo appInfo,String dbid,boolean useHeader) fukurou.db.DBUtil#dbCallExecute(String stmt,String[] args,ApplicationInfo appInfo) fukurou.db.DBUtil#dbCallExecute(String stmt,String[] args,ApplicationInfo appInfo,String dbid) fukurou.db.DBUtil#dbExist(String stmt,String[] args,ApplicationInfo appInfo,String dbid) fukurou.db.DBUtil#dbExecute(String stmt,String[] args,ApplicationInfo appInfo) hayabusa.db.DBTableModelUtil#makeDBTable(String stmt,String[] args,ResourceManager resource,ApplicationInfo appInfo,String dbid) hayabusa.remote.TransferExecWrapper#remoteControl(Map valMap) hayabusa.remote.TransferReadWrapper#remoteControl(Map valMap) hayabusa.taglib.BizLogicTag#execute() hayabusa.taglib.DataCheckTag#doEndTag() hayabusa.taglib.DirectTableInsertTag#create(File file) hayabusa.taglib.DirectWriteTableTag#create(PrintWriter out) hayabusa.taglib.DirectXMLSaveTag#doEndTag() hayabusa.taglib.QueryOptionTag#doAfterBody() hayabusa.taglib.QueryTag#doAfterBody() hayabusa.taglib.TableFilterTag#doEndTag() hayabusa.taglib.UserInfoTag#doAfterBody() hayabusa.taglib.ValueTag#doAfterBody() plugin.daemon.Daemon_Transfer_CB01#startDaemon() [AutoCloseable の close() メソッドに対応] return 不要。 fukurou.db.TransactionReal#close() fukurou.db.TransactionImpl#close() fukurou.db.Transaction#close() fukurou.db.Transaction#commit() fukurou.db.Transaction#rollback() fukurou.db.TransactionImpl#commit() fukurou.db.TransactionImpl#rollback() hayabusa.db.AbstractQuery#commit() hayabusa.db.AbstractQuery#rollback() hayabusa.taglib.CommonTagSupport#getTransaction() hayabusa.taglib.TransactionTag#getTranObj() メソッド名変更。 fukurou.db.TransactionImpl#finish() 内部処理見直し。 fukurou.db.TransactionImpl#connClose(Connection conn,String dbid) 正常時は、commit()。 hayabusa.taglib.TransactionTag#doEndTag() 異常時は、rollback()。 hayabusa.taglib.TransactionTag#doCatch(Throwable th) 終了時は、finish()。 hayabusa.taglib.TransactionTag#release2() [copyST アクション追加] ACT_COPYST 対応( copyST アクション時に、copy元に、アドレス指定できるようにする) hayabusa.taglib.FileTag#actionExec(String action) hayabusa.taglib.FileTag#setAction(String cmd) [DirectTableInsertTag でSQLException発生時のみ throwする] hayabusa.taglib.ReadTableTag#doEndTag() [InputStreamで指定されたファイルのコピー] fukurou.util.FileUtil#copy(InputStream in,File toFile) [copy元(fromFile)がフォルダがディレクトリの場合は、#copyDirectry( File,File,boolean ) を呼ぶ] fukurou.util.FileUtil#copy(File fromFile,File toFile,boolean keepTimeStamp) [エラー時のメッセージ情報を増やします] fukurou.util.FileUtil#copy(InputStream input,OutputStream output) [close(),realClose() 廃止] Queryはキャッシュしません。 hayabusa.db.AbstractQuery#createTableModel(ResultSet resultSet) hayabusa.db.AbstractQuery#init() hayabusa.taglib.EntryQueryTag#execute(Query query) hayabusa.taglib.TableUpdateTag#execute(Query query) plugin.query.Query_JDBC#execute(String[] args) plugin.query.Query_JDBCArrayCallable#execute(String[] args) plugin.query.Query_JDBCCallable#execute(String[] args) plugin.query.Query_JDBCErrMsg#execute(String[] args) plugin.query.Query_JDBCKeyEntry#execute(String[] keys,String[] args) plugin.query.Query_JDBCPLSQL#execute(String names,String dbArrayType,DBSysArg[] sysArg,DBUserArg[] userArg) plugin.query.Query_JDBCPrepared#execute(String[] args) plugin.query.Query_JDBCTableUpdate#execute(int[] rowNo,DBTableModel table) plugin.query.Query_JDBCUpdate#execute(String[] args) [style属性のマージ] plugin.column.Editor_COLOR#getValue(String value) plugin.column.Editor_COLOR#getValue(int row,String value) plugin.column.Editor_COLOR#Editor_COLOR() plugin.column.Editor_COLOR#Editor_COLOR(DBColumn clm) [throw new RuntimeException するのではなく、System.err.println する] fukurou.util.StringUtil#numberFormat(String in,int minFraction) [新規作成] fukurou.util.StringUtil#ogErrMsg(String msg,Throwable th) [03_DBSEARCHのDB更新処理] [検索か更新か判定するフラグ(updateFlag)を用意します] hayabusa.taglib.QueryTag#release2() hayabusa.taglib.QueryTag#execute(Query query) DB更新処理は、メッセージ表示後、終了する。 jsp/common/gamen/03_DBSEARCH/result.jsp [14_EDITの【出力方法設定】タブ] UserInfoに、'_'roles は、全アクセス許可にする。 hayabusa.resource.UserInfo#isAccess(String role) jsp/common/gamen/14_EDIT/result_REPORT.jsp [ 枠の指定と、
の static final String 化] hayabusa.servlet.HybsAdmin#getInfomation() hayabusa.servlet.HybsAdmin#getLoginUser(String sort,boolean direc) hayabusa.servlet.HybsAdmin.ClassInfo#getClassInfoData() hayabusa.servlet.HybsAdmin#getSystemResource() hayabusa.servlet.HybsAdmin#getAdminLink() [03_DBSEARCHのDB更新処理] 透明な イメージファイルを用意しました。 gf/jsp/image/transparent.png [リファクタリング] 6.3.6.1_refactoring.txt 6.3.6.0 (2015/08/16) [useTimeView の初期値を、VIEW_USE_TIMEBAR にする] hayabusa.taglib.ChartCreateTag#setUseTimeView(String flag) hayabusa.taglib.ChartCreateTag#release2() hayabusa.taglib.DBMetaDataQueryTag#setUseTimeView(String flag) hayabusa.taglib.DirectTableInsertTag#setUseTimeView(String flag) hayabusa.taglib.DirectWriteTableTag#setUseTimeView(String flag) hayabusa.taglib.DirectXMLSaveTag#setUseTimeView(String flag) hayabusa.taglib.FileUpdateTag#setUseTimeView(String flag) hayabusa.taglib.QueryButtonTag#release2() hayabusa.taglib.QueryButtonTag#setUseTimeView(String flag) hayabusa.taglib.QueryTag#setUseTimeView(String flag) hayabusa.taglib.ViewFormTag#setUseTimeView(String flag) hayabusa.taglib.ViewFormTag#release2() [キャッシュ処理のロジックを整理します] hayabusa.taglib.ChartCreateTag#doStartTag() [System.arraycopy が使える箇所は、置き換えます] fukurou.mail.MailTX#main(String[] args) fukurou.taglet.DocletTaglib#methodLabelCode(MethodDoc method) fukurou.util.DateSet#change(byte[] inByte) fukurou.util.StringUtil#stringFill(String str,int su_fill,String encode) hayabusa.db.DBTableModelSorter#shuttlesort(int[] from,int[] to,int low,int high) hayabusa.html.CrossMap#add(String[] rowKeys) hayabusa.io.ChartDataset#makeMeterPlot() hayabusa.io.ChartDataset#makeThermometerPlot() hayabusa.io.ChartDataset#makeCompassPlot() hayabusa.resource.CodeData#CodeData(String clm,Map data,boolean[] useFlag) 6.3.5.1 (2015/08/16) ※ 6.3.6.0 (2015/08/16) と同時リリースになるため、これ単独の Buildは作成しません。 [リファクタリング] 6.3.5.1_refactoring.txt [og.value の簡素化] {@og.value PACKAGE.CLASS#FIELD} で、staticフィールドの値を取得して いますが、HybsSystem とSystemData のみパッケージ無しでも処理できる ように対応しました。(Javadocコメントの修正) [HybsSystem とSystemData のみパッケージ無しでも処理できるように対応] fukurou.taglet.DocletUtil#valueTag(String txt,Tag tag) [cache は、ローカル変数とする] masterKey に、初期値指定。 hayabusa.taglib.ChartCreateTag#release2() [doStartTag() 削除に伴う、dyStart の移動] hayabusa.taglib.DirectXMLSaveTag#doEndTag() [masterKey に、初期値指定] hayabusa.taglib.ChartCreateTag#setMasterKey(String mkey) [useTimeView の初期値を、VIEW_USE_TIMEBAR にする] hayabusa.taglib.QueryButtonTag#release2() hayabusa.taglib.QueryButtonTag#setUseTimeView(String flag) public static final String VIEW_USE_TIMEBAR = "true" ; [キャッシュ処理のロジックを整理します] hayabusa.taglib.ChartCreateTag#doStartTag() hayabusa.taglib.ChartCreateTag#doEndTag() 新規追加。 hayabusa.taglib.ChartCreateTag#setCacheScope(String scp) [コンストラクターで、イメージタグの設定と有効時間の算出を行います] hayabusa.taglib.ChartCreateTag.ChartCache#ChartCache(String imgTag,int ccTime) [メソッド名を変更します] hayabusa.taglib.ChartCreateTag.ChartCache#getImageTag() 6.3.5.0 (2015/08/08) [5.8.9.0 (2015/08/07) 対応] [日付ピッカー(カレンダー)] HTML5ブラウザ対応としてmodalDialogを利用しない形の日付ピッカーをYMD3として用意しておきます。 このピッカーはフレーム内に表示されるため、画面からはみ出す場合の処理を修正実装をしていますが 小さなフレーム内の場合はスクロールが出ます。 月曜開始の対応は行っていますが、多言語対応はしていません。 この対応の中で、 default.css , eventScript.js に、それぞれ追記されていますが、 ちょっと整理したいので、Ver6 ではファイルを一旦分けます。 → calendar3.css , calendar3.js にまとめます。 そのため、calendar3.css , calendar3.js は、default.css , default.js と同時に組み込むようにします。 hayabusa.taglib.HeadTag#doEndTag() [5.8.9.0 (2015/08/07) 対応] [HTML5対応ポップアップ] モダンブラウザではmodalDialogが利用できないため、別の方法でポップアップを実現する必要があります。 対応として、画面内でiframeを作成して指定URLを表示するタイプのポップアップをオプションとして用意しておきます。 この方式の欠点としては、QUERY部のように小さいフレームで立ち上げると該当画面が表示しきれずスクロールが出る事です。 2つのファイルを上げる側と上げられる側で読み込む事で自動的にこのタイプとなります。(片方だけ読み込んだ場合は動作しなくなります) 現段階ではシステムリソースでの切り替えには対応しません。 jsp/common/option/html5modalDialog.js jsp/common/option/html5modalDialog.css [セッション維持] 定期的に指定のJSPにアクセスして、セッションを維持します。 内部的には単純にURLに非同期でアクセスするだけです。 jsp/common/intervalAccess.js src/script/common/intervalAccess.js hayabusa.taglib.HeadTag#setUseIntervalAccess(String flag) hayabusa.taglib.HeadTag#doEndTag() [検索中表示のクリア] headタグ上で、result.jsp に直接出力していた JavaScript を、 unblockUI.js ファイルとして、include する形式に変更します。 jsp/common/jquery/unblockUI.js src/script/common/jquery/unblockUI.js [forループの変更と、大文字小文字の区別廃止] hayabusa.taglib.CommonTagSupport#check(String in,String[] check) [クリッカブル・マップ処理のロジックを整理します] hayabusa.taglib.ChartCreateTag#doEndTag() [チャートの画像ファイル名指定に対応] hayabusa.taglib.ChartCreateTag#setChartFile(String file) hayabusa.taglib.ChartCreateTag#release2() hayabusa.taglib.ChartCreateTag#getTempFile(String fileURL) [valueタグにESCAPEアクション追加] valueタグにESCAPEアクションを追加しました。 これは、タグ( < > など) をエスケープすることで、ソースを画面上に 表示できるようになります。 hayabusa.taglib.ValueTag#actionExec( final String action,final String value ) [リファクタリング] 6.3.5.0_refactoring.txt 6.3.4.0 (2015/08/01) [JSPのモジュール化] JSPのモジュール化とは、JARファイルの「META-INF/resources」配下に 静的コンテンツやJSPを作成し、Webアプリケーションの「WEB-INF/lib」に JARを配置することで、それらのファイルにWebからアクセスできる機能です。 これは、フォルダ指定で、Default Welcome File を使用するアクセスはできない 様です。よって、アクセスする場合は、ファイルまで指定が必要です。 FileUDTag の javascript:ogOpen で、EDIT_GAMENID(= "14_EDIT") 指定で フォルダ指定のみだったので、アクセスできない状況でしたので、index.jsp を 追記しました。 [14_EDIT の指定で、フォルダではなく、index.jspまで指定します] hayabusa.taglib.FileUDTag#doEndTag() [caseKey,caseVal,caseNN,caseNull,caseIf 属性対応] このタグ自体を利用するかどうかを指定する caseKey,caseVal,caseNN,caseNull,caseIf 属性を追加します。 hayabusa.taglib.ChartCreateTag#doStartTag() hayabusa.taglib.ChartCreateTag#doEndTag() hayabusa.taglib.ChartDatasetTag#doStartTag() hayabusa.taglib.ChartDatasetTag#doEndTag() hayabusa.taglib.ColumnMarkerTag#doStartTag() hayabusa.taglib.DataCheckTag#doStartTag() hayabusa.taglib.DirectWriteTableTag#doStartTag() hayabusa.taglib.DirectWriteTableTag#doEndTag() hayabusa.taglib.EntryTag#doStartTag() hayabusa.taglib.EntryTag#doEndTag() hayabusa.taglib.ForwardTag#doEndTag() hayabusa.taglib.MainProcessTag#doStartTag() hayabusa.taglib.MainProcessTag#doEndTag() hayabusa.taglib.PlsqlUpdateTag#doStartTag() hayabusa.taglib.PlsqlUpdateTag#doEndTag() hayabusa.taglib.ProcessTag#doStartTag() hayabusa.taglib.QueryButtonTag#doStartTag() hayabusa.taglib.QueryButtonTag#doEndTag() hayabusa.taglib.ShellTag#doEndTag() hayabusa.taglib.TableUpdateParamTag#doStartTag() hayabusa.taglib.TableUpdateParamTag#doEndTag() hayabusa.taglib.TableUpdateTag#doStartTag() hayabusa.taglib.TableUpdateTag#doEndTag() hayabusa.taglib.TextareaTag#doStartTag() hayabusa.taglib.ViewLinkTag#doStartTag() hayabusa.taglib.ViewLinkTag#doEndTag() hayabusa.taglib.ViewMarkerTag#doStartTag() hayabusa.taglib.ViewMarkerTag#doEndTag() [クラス名の変更] TFormatTag , ViewParamTag は、実際にはタグとして使用しない 共通の親クラスとしてしか使用していないため、クラス名から、xxxTag を 取り除きます。 TFormatTag.java → TFormatImpl.java ViewParamTag.java → ViewParamImpl.java hayabusa.taglib.ItdTag.java(115): final TFormatImpl tFormat = (TFormatImpl)findAncestorWithClass( this, TFormatImpl.class ); hayabusa.taglib.TbodyTag.java(98): public class TbodyTag extends TFormatImpl { hayabusa.taglib.TfootTag.java(64): public class TfootTag extends TFormatImpl { hayabusa.taglib.TheadTag.java(64): public class TheadTag extends TFormatImpl { hayabusa.taglib.ViewAjaxTreeParamTag.java(94): public class ViewAjaxTreeParamTag extends ViewParamImpl { hayabusa.taglib.ViewCalendarParamTag.java(81): public class ViewCalendarParamTag extends ViewParamImpl { hayabusa.taglib.ViewCrossParamTag.java(108): public class ViewCrossParamTag extends ViewParamImpl { hayabusa.taglib.ViewGanttParamTag.java(85): public class ViewGanttParamTag extends ViewParamImpl { hayabusa.taglib.ViewStackParamTag.java(55): public class ViewStackParamTag extends ViewParamImpl { hayabusa.taglib.ViewTimeBarParamTag.java(122): public class ViewTimeBarParamTag extends ViewParamImpl { hayabusa.taglib.ViewTimeTableParamTag.java(105): public class ViewTimeTableParamTag extends ViewParamImpl { [アノテーション対応] Servletを利用する場合は「@WebServlet」 Filterを使用する場合は「@WebFilter」 Listenerを使用する場合は「@WebListener」 hayabusa.common.HybsSessionListener hayabusa.common.HybsContextListener hayabusa.servlet.MakeImage hayabusa.servlet.UploadedFile hayabusa.servlet.RemoteControlServlet hayabusa.servlet.HybsAdmin hayabusa.servlet.FileDownload [Selection_HM の引数から、lang 属性を削除します] hayabusa.db.SelectionFactory#newSelection(String type,String editPrm,String lang) hayabusa.db.Selection_HM#Selection_HM(String editPrm) [Selection_NULL の引数から、lang 属性を削除します] hayabusa.db.Selection_NULL#Selection_NULL(String strCode) [Selection_NUM の引数から、lang 属性を削除します] hayabusa.db.Selection_NUM#Selection_NUM(String editPrm) hayabusa.db.Selection_YMD#Selection_YMD(String editPrm) [Setオブジェクト利用] hayabusa.taglib.CommonTagSupport#check(String in,Set check) [String から Set に置き換え] hayabusa.taglib.ColumnTag#setTd(String flag) hayabusa.taglib.InputTag#setTd(String flag) hayabusa.taglib.SelectTag#setTd(String flag) hayabusa.taglib.ButtonTag#setType(String type) hayabusa.taglib.ColumnEditorTag#setType(String type) hayabusa.taglib.ColumnTag#setType(String type) hayabusa.taglib.HeadTag#setAdjustEvent(String ajEvent) hayabusa.taglib.InputTag#setType(String type) hayabusa.taglib.ViewIBarTag#setType(String type) [String配列 から Set に置き換え] hayabusa.taglib.CookieTag#actionExec(String action) hayabusa.taglib.CookieTag#setAction(String act) hayabusa.taglib.DBMetaDataQueryTag#doStartTag() hayabusa.taglib.DBMetaDataQueryTag#doEndTag() hayabusa.taglib.DBMetaDataQueryTag#setAction(String cmd) hayabusa.taglib.DataCheckTag#doEndTag() hayabusa.taglib.EqualsTag#setOperator(String ope) hayabusa.taglib.EqualsTag#setCompareType(String type) hayabusa.taglib.FileOptionTag#setOrderBy(String ordr) hayabusa.taglib.FileQueryTag#setOrderBy(String clm) hayabusa.taglib.FileTag#setAction(String cmd) hayabusa.taglib.FileUpdateTag#doEndTag() hayabusa.taglib.FileUpdateTag#setAction(String act) hayabusa.taglib.JspCreateTag#setTagNames(String tags) hayabusa.taglib.LDAPQueryTag#doEndTag() hayabusa.taglib.MailSenderTag2#doEndTag() hayabusa.taglib.QueryTag#doStartTag() hayabusa.taglib.QueryTag#doEndTag() hayabusa.taglib.ReadTableTag#doEndTag() hayabusa.taglib.RegistryQueryTag#doEndTag() hayabusa.taglib.RequestCacheTag#setAction(String act) hayabusa.taglib.ScheduleTag#doEndTag() hayabusa.taglib.ShellTag#setAction(String act) hayabusa.taglib.SubmitTag#setAction(String act) hayabusa.taglib.TableMergeTag#doEndTag() hayabusa.taglib.TopMenuTag#setMenuType(String type) hayabusa.taglib.UserInfoTag#doEndTag() hayabusa.taglib.ValueTag#setCommand(String cmd) hayabusa.taglib.ValueTag#setAction(String act) hayabusa.taglib.ValueTag#doEndTag() hayabusa.taglib.ViewFormTag#setCommand(String cmd) hayabusa.taglib.ViewFormTag#setTableRowWritable(DBTableModel table) hayabusa.taglib.ViewIMatrixTag#setMode(String mode) hayabusa.taglib.WriteTableParamTag#setKey(String prmKey) [TFormatTag.java → TFormatImpl.java] hayabusa.taglib.ItdTag#doEndTag() [eventValue のSQL処理は、jsp/common/eventColumnMaker.jsp で行う] hayabusa.taglib.ColumnTag#doStartTag() [eventValue 追加] hayabusa.taglib.ColumnEditorTag#setEventValue(String val) hayabusa.taglib.ColumnEditorTag#release2() hayabusa.taglib.ColumnEditorTag#getModifyConfig(DBColumn dbColumn) hayabusa.taglib.SelectTag#release2() hayabusa.taglib.SelectTag#makeTag() hayabusa.taglib.SelectTag#setEventValue(String val) [isExec は、パラメータではなく、ローカル変数] hayabusa.taglib.DataCheckTag#release2() [useDir 属性と、groupDir 属性 を追加します] hayabusa.taglib.FileOptionTag#doEndTag() hayabusa.taglib.FileOptionTag#release2() hayabusa.taglib.FileOptionTag#makeLabel(File path,OptionAncestorIF select,Comparator comp,boolean grpDir) hayabusa.taglib.FileOptionTag#setGroupDir(String flag) hayabusa.taglib.FileOptionTag#setUseDir(String flag) 6.3.3.0 (2015/07/25) [maxlength 削除] CHBOX , CHBOX2 のエディターには、maxlength は不要なので削除します。 ちなみに、未対応ですが、input属性の type 属性の値が text、email、 search、password、tel、url 以外の場合 maxlength は無視されるので、 出力する必要はありませんが、 plugin.column.Editor_CHBOX#Editor_CHBOX(DBColumn clm) plugin.column.Editor_CHBOX2#Editor_CHBOX2(DBColumn clm) [CHBOXのid属性 追加] CHBOX に、id属性を出力します。(CHBOX2 には対応しません) CHBOX は、'1'、'0' でデータを管理する特別なチェックボックスです。 個々の name に対して、2進法的な考え方なので、基本、name 属性はかぶりません。 よって、基本的には、CHBOX に、id属性を出力してもよいはずです。 なお、CHBOX2は、同一名称に複数データを出力できる私用なので、id属性の 追加はやめておきます。 plugin.column.Editor_CHBOX#getValue(String value) plugin.column.Editor_CHBOX#getValue(int row,String value) [STRUCTタイプの対応] fukurou.db.ResultSetValue#getColumnCount() fukurou.db.ResultSetValue#getNames() fukurou.db.ResultSetValue#getColumnName(int clmNo) fukurou.db.ResultSetValue#getColumnDisplaySize(int clmNo) fukurou.db.ResultSetValue#isWritable(int clmNo) fukurou.db.ResultSetValue#next() fukurou.db.ResultSetValue#getValue(int clmNo) fukurou.db.ResultSetValue#getValues() fukurou.db.ResultSetValue#getNumber(int clmNo) fukurou.db.ResultSetValue#getClassName(int clmNo) fukurou.db.ResultSetValue.ColumnInfo#ColumnInfo(String name,int type,int size,boolean isWrit,int clmNo,int objNo) fukurou.db.ResultSetValue.ColumnInfo#getName() fukurou.db.ResultSetValue#ResultSetValue(ResultSet res) [eventValue 追加] eventColumn使用時の値を、SQL文から求めるためのqueryをセットします。 hayabusa.db.DBColumn#DBColumn(String lang,ColumnData clmData,LabelData lblData,CodeData cdData) hayabusa.db.DBColumn#DBColumn(DBColumnConfig config) hayabusa.db.DBColumn#getConfig() hayabusa.db.DBColumn#getEventValue() hayabusa.db.DBColumnConfig#setEventValue(String val) hayabusa.db.DBColumnConfig#getEventValue() hayabusa.db.DBEventColumn#getEventValue() hayabusa.db.DBEventColumn#DBEventColumn(String name,String eventColumn,String eventValue,String eventUrl,String renderer,String editor,String rendParam,String editParam) hayabusa.taglib.ColumnTag#setEventValue(String val) hayabusa.taglib.ColumnTag#doStartTag() hayabusa.taglib.ColumnTag#release2() hayabusa.taglib.ColumnTag#getInsertTag(DBColumn clm,String value) hayabusa.taglib.CommonTagSupport#addEventColumn(DBColumn col) hayabusa.taglib.CommonTagSupport#addEventColumn(String name,String evCol,String evVal,String url,String renderer,String editor,String rendParam,String editParam) src/META-INF/hybs-taglib.tld WEB-INF/hybs-taglib.tld gf/jsp/GF6410/query.jsp gf/jsp/GF6410/makeColumnJob.jsp gf/src/script/common/eventScript.js gf/jsp/common/eventColumnMaker.jsp gf/jsp/common/eventColumn.jsp gf/jsp/common/eventScript.jsp [5.8.8.2 (2015/07/17) 対応] [URLチェックのマルチバイト文字対応] を取り込みました。 6.3.2.0 (2015/07/10) [columnEditor タグ] columnEditor に、codeKeyVal 属性を追加します。 この属性は、column にありましたが、一時廃止予定にしていました。 これは、renderer , editor に、"KVMENU" を指定して、param に、 「キー:ラベル キー:ラベル」の文字列を指定する方法の、簡易版です。 src/META-INF/hybs-taglib.tld WEB-INF/hybs-taglib.tld [1行分のフォーマット(lineFormat属性)対応] LineModelで、Formatter処理できるように、対応します fukurou.process.Process_TableWriter#init(ParamProcess paramProcess) fukurou.process.Process_TableWriter#action(LineModel data) fukurou.model.Formatter#getLineFormatString(DataModel model) fukurou.process.LineModel#getValue(int row,int clm) fukurou.process.LineModel#getValues(int row) [help 属性の追加] column タグにhelp属性を追加します。 これは、このカラムに対するヘルプファイルを指定します。 hayabusa.taglib.ColumnTag#setHelp(String url) hayabusa.taglib.ColumnTag#makeHelpLink(String url) hayabusa.taglib.ColumnTag#release2() hayabusa.taglib.ColumnTag#makeTag() カラムヘルプ標準アイコンを、追加します。 opengion/hayabusa/common/SystemData#DEFAULT_CLMHELP_ICON = "/image/help3.png" ; help属性を組み込みます。 gf/jsp/DOC01\query.jsp gf/jsp/DOC02\query.jsp gf/jsp/DOC03\query.jsp gf/jsp/DOC16\query.jsp gf/jsp/DOC22\query.jsp gf/jsp/GF2081\query.jsp gf/jsp/GF6040\result.jsp [titleの設定] もし、spanタグでマークアップされていれば、取り除きます。 hayabusa.taglib.HeadTag#doEndTag() [指定のURLの文字列から、最適なURLを作成します] hayabusa.taglib.CommonTagSupport#makeUrl(String url) 6.3.1.1 (2015/07/10) ※ 6.3.2.0 (2015/07/10) と同時リリースになるため、これ単独の Buildは作成しません。 [対訳ツール 新規作成] 原文と訳文をデータベースに登録しておくことで、原文→訳文 処理を 行うプログラムを作成しました。 gf/jsp/DOC30 新規追加 旧 GFX0003 廃止 gf/jsp/DOC31 新規追加 旧 GFX0003 廃止 [作りかけ画面、テーブル削除] GFX017 廃止 GFW41 , GFX01 , GFX02 , GFX03 削除 [labelの右寄せ] #label , label , .label について、text-align: right; を CSS設定します。 なお、全体に影響する為、jsp/custom/custom.css に設定します。 ge/jsp/custom/custom.css gf/jsp/custom/custom.css [ガント表示] 6.0.2.5 (2014/10/31) で、行ったガント対応で、1行に複数ガントを表示する (iGantタグでmargeRowsをTRUEにしたとき)うまく動かなくなりました。 一部を元に戻します。 common/option/adjustGanttTable.js 1443行目 // 6.0.2.5 (2014/10/31) all.tagsの$().find化 対応漏れ? ○ var tBodyObjs = viewTableObj.all.tags("TBODY"); × var tBodyObjs = $(viewTableObj).find("TBODY"); // ※ガントが横に並ばない [帳票エラー表示] 帳票デーモンのエラー表示で、タグが含まれていると、表示が崩れます。 ERRMSG カラムの表示種別を、HTMLPRE に変更します。 リソース更新 [BodyString,BodyRawStringは、CommonTagSupport で、trim() します] hayabusa.taglib.ColumnEditorTag#doAfterBody() hayabusa.taglib.CommonTagSupport#getBodyString() hayabusa.taglib.CommonTagSupport#getBodyRawString() hayabusa.taglib.DataCheckTag#doAfterBody() hayabusa.taglib.QueryOptionTag#doAfterBody() hayabusa.taglib.QueryTag#doAfterBody() hayabusa.taglib.TabLinkTag#doAfterBody() hayabusa.taglib.UserInfoTag#doAfterBody() hayabusa.taglib.WriteTableParamTag#doAfterBody() [CommentSet で管理します] fukurou.util.CommentLineParser#line(String inLine,CommentLineParser.CommentSet cmntSet) fukurou.util.CommentLineParser#line(String inLine) [JspWriter を使用する場合は、タグをエスケープする必要がある] fukurou.process.Process_Logger#logging(String msg) fukurou.process.Process_Logger#errLog(String msg,Throwable th) fukurou.process.Process_Logger#setLoggingWriter(PrintWriter logWriter) fukurou.process.Process_Logger#setDisplayWriter(PrintWriter dispWriter) [LoggerProcessがない場合は、本体で追加しているので、処理を削除します] fukurou.process.MainProcess#main(String[] args) [Map作成時に、DBTableModel のグループ化を行うかどうか指定できるようにする] hayabusa.taglib.TableMergeTag#doEndTag() hayabusa.taglib.TableMergeTag#makeKeyMap(DBTableModel table,String keys,boolean useCheckOnly,boolean useGroup) [Modify のフォーマットを、指定可能にします] fukurou.process.FileLineModel#setModifyForm(String form) [RuntimeException を throwする機能を追加] fukurou.process.AbstractProcess#throwException(String errMsg,boolean isAbend) fukurou.process.AbstractProcess#throwException(String errMsg,Throwable th,boolean isAbend) [SQL文から、TAB→スペース変換と、余計な改行を削除します] hayabusa.taglib.QueryTag#toString() [action="REPLACE" の、fromVal,toVal は、カンマ区切りで指定可能にする] hayabusa.taglib.ValueTag#actionExec(String action,String value) [codeKeyVal 属性を追加] hayabusa.taglib.ColumnEditorTag#release2() hayabusa.taglib.ColumnEditorTag#getModifyConfig(DBColumn dbColumn) hayabusa.taglib.ColumnEditorTag#setCodeKeyVal(String keyval) [plus アクションの追加] fukurou.process.Process_BulkQuery#init(ParamProcess paramProcess) [useOmitCmnt、useAllFind 機能追加] fukurou.process.Process_Grep#init(ParamProcess paramProcess) fukurou.process.Process_Grep#findKeyword(File file) [メソッドチェーン化と、大文字/小文字の区別なし(ignoreCase=true)対応] fukurou.process.Process_FileSearch#init(ParamProcess paramProcess) hayabusa.taglib.FileWhereTag#doEndTag() [出力ファイルを別フォルダにコピー置換する機能を追加] fukurou.process.Process_GrepChange#init(ParamProcess paramProcess) fukurou.process.Process_GrepChange#action(LineModel data) [大文字/小文字の区別[true:しない/false:する]] fukurou.util.HybsFileFilter#HybsFileFilter() fukurou.util.HybsFileFilter#HybsFileFilter(boolean isUseDIR,boolean ignoreCase) [大文字/小文字の区別なし(ignoreCase=true)対応] hayabusa.taglib.FileWhereTag#release2() hayabusa.taglib.FileWhereTag#setIgnoreCase(String flag) [改廃コードを設定する CDKH アクションを追加] hayabusa.taglib.TableMergeTag#makeCdkh(DBTableModel masterTbl,Map masterMap,DBTableModel slaveTbl,Map slaveMap) [簡易リファレンスは、documents.html ではなく、quickReference.html です] hayabusa.taglib.CommonTagSupport#getDocumentLink() [自分自身を返します] fukurou.util.HybsFileFilter#addFileFilter(FileFilter filter) fukurou.util.HybsFileFilter#startsWith(String prefix) fukurou.util.HybsFileFilter#startsWith(String prefix,boolean reverse) fukurou.util.HybsFileFilter#endsWith(String suffix) fukurou.util.HybsFileFilter#endsWith(String suffix,boolean reverse) fukurou.util.HybsFileFilter#instr(String str) fukurou.util.HybsFileFilter#instr(String str,boolean reverse) fukurou.util.HybsFileFilter#fileEquals(String str) fukurou.util.HybsFileFilter#fileEquals(String str,boolean reverse) fukurou.util.HybsFileFilter#matches(String str) fukurou.util.HybsFileFilter#matches(String str,boolean reverse) fukurou.util.HybsFileFilter#lastModified(String modify) fukurou.util.HybsFileFilter#isLarger(String slen) fukurou.util.HybsFileFilter#isSmaller(String slen) fukurou.util.HybsFileFilter#isHidden(String flag) fukurou.util.HybsFileFilter#isHidden(String flag,boolean reverse) [読込フラグ(FGLOAD) のマーカー設定追加] hayabusa.resource.ColumnDataLoader#getColumnData(String key) hayabusa.resource.LabelDataLoader#getLabelData(String key) 6.3.1.0 (2015/06/28) [default.css で角を丸くする] input[type="search"] と circleクラス属性に、角を丸くする CSS を設定します。 type="search" は、HTML5 の機能ですが、openGion としては、全文検索系の入力欄として 通常のあいまい検索と分けたいと思います。 なお、HTML5 ネイティブでのみ、角が丸くなり、互換モードでは従来通りです。 jsp/common/default.css src/script/common/default.css [4:個人設定可のリソースの取得方法に修正(バグFix)] TABLE_WRITER_EXCEL_TYPE hayabusa.taglib.FileUDTag#doEndTag() [ErrorConstants のDeprecated に伴う、FormulaError への置き換え] fukurou.model.EventReader_XLS.ExcelListener#processRecord(Record record) [ExcelStyleFormat を使用します] fukurou.model.POIUtil#getNumericTypeString(Cell oCell) [FILEPATH,ADDRESS,FILENAME 属性追加] fukurou.process.FileLineModel#FileLineModel(boolean isLineCnt) fukurou.process.FileLineModel#FileLineModel(boolean isLineCnt,boolean isMD5,boolean isOmit) fukurou.process.FileLineModel#FileLineModel(boolean isLineCnt,boolean isMD5,boolean isOmit,boolean isPath) fukurou.process.FileLineModel#FileLineModel(LineModel model) fukurou.process.FileLineModel#setFileVals(int level,File file) fukurou.process.FileLineModel#FileLineModel() fukurou.process.FileLineModel#FileLineModel(boolean isLineCnt,boolean isMD5) [TextConverterに、引数(cmnt)を追加] fukurou.model.ExcelModel#textConverter(TextConverter conv) fukurou.model.ExcelModel#crConv(TextConverter conv,String val,String cmnt) fukurou.model.ExcelModel#textConverter(Map convMap) fukurou.model.POIUtil#excelReader2(File file,TextConverter conv) fukurou.model.TextConverter#change(Object val,Object cmnt) plugin.io.TableReader_POI#readDBTable(File file,String enc) [caseKey、caseVal、caseNN、caseNull、caseIf 属性追加] hayabusa.taglib.TextTag#doEndTag() hayabusa.taglib.TextTag#doStartTag() src/META-INF/hybs-taglib.tld WEB-INF/hybs-taglib.tld [display属性の追加] fukurou.process.Process_DBParam#init(ParamProcess paramProcess) [errAbend属性追加] fukurou.process.Process_FileSearch#init(ParamProcess paramProcess) fukurou.process.Process_FileSearch#makeLineModel(int rowNo) fukurou.process.Process_Grep#init(ParamProcess paramProcess) fukurou.process.Process_Grep#action(LineModel data) [nioを使用すると UTF-8とShuft-JISで、エラーになる] fukurou.model.EventReader_TEXT#eventReader(File file,TableModelHelper helper) fukurou.process.FileLineModel#getLineCnt(File file,File ocFile) fukurou.process.Process_FileCopy#action(LineModel data) fukurou.process.Process_Grep#findKeyword(File file) fukurou.process.Process_Grep#changeKeyword(File inFile,File outFile,int firstLineNo) fukurou.process.Process_GrepChange#action(LineModel data) fukurou.process.Process_TableDiff#init(ParamProcess paramProcess) fukurou.process.Process_TableDiff#next() fukurou.process.Process_TableDiff#readName(BufferedReader reader) fukurou.process.Process_TableDiff#readF2Data(File file2,String encode2) fukurou.process.Process_TableReader#next() fukurou.util.CommentLineParser#main(String[] args) hayabusa.filter.AccessStopFilter#doFilter(ServletRequest request,ServletResponse response,FilterChain chain) hayabusa.filter.URLCheckFilter#doFilter(ServletRequest request,ServletResponse response,FilterChain chain) hayabusa.report2.OdsContentParser#readOOoXml(String fileName) [readText の取得方法を変更する] hayabusa.taglib.ExcelFileTag#doEndTag() [rowNo(行番号)も引数に取るようにします] fukurou.model.POIUtil#getCellMsg(Cell oCell) fukurou.model.POIUtil#getCelKigo(int rowNo,int colNo) [useDivOneLevel がうまく動かなかったので、修正] hayabusa.taglib.TopMenuTag#makeNextguiMenu() [個人リソースのUSE_ADD_KEY_LABELで初期値設定] hayabusa.taglib.ColumnEditorTag#getModifyConfig(DBColumn dbColumn) hayabusa.taglib.ColumnTag#getInsertTag(DBColumn clm,String value) hayabusa.taglib.SelectTag#doStartTag() セレクトメニューの場合、キー:ラベル形式で表示するかどうか[true/false/null]を指定します。 hayabusa.common.SystemData#USE_ADD_KEY_LABEL = "" ; gf\jsp\common\fileDownload.jsp [外部からも使えるように、static化します] fukurou.model.ExcelStyleFormat#getNumberValue(String fmtStr,double val) fukurou.model.ExcelStyleFormat#isDateFormat(String fmt) fukurou.model.ExcelStyleFormat#dateFormat(double val) [新規作成] hayabusa.taglib.ExcelFileTag#getExcelText(ExcelModel excel) [読込フラグ(FGLOAD) のマーカー設定追加] hayabusa.resource.ColumnDataLoader#getColumnData(String key) hayabusa.resource.LabelDataLoader#getLabelData(String key) 6.3.0.0 (2015/06/22) [ソースの整理] ソースのコメントを整理します。 何かあれば、過去のzipから、変更箇所を洗い出してください。 6.2.6.0 (2015/06/19) [リセット呼び出し] 全件無条件でのリセット呼び出しの使用有無。 hayabusa.common.SystemData#RESET_ACTION_ALL_USE = "true" ; [プリンター一覧] サーバーのプリンター一覧取得時に、除外するプリンタ名(の先頭一致)をCSV形式で指定します。 hayabusa.common.SystemData#OMIT_PRINTER_NAMES = "Fax,Microsoft XPS" ; サーバーのプリンター一覧のスペース区切り文字列対応 hayabusa.common.HybsSystem#getPrinter() PRINTERに対応します hayabusa.taglib.CommonTagSupport#sys(String key) [keyVal指定方法] 廃止の取りやめ:なんとなく便利なので残します。 hayabusa.taglib.ColumnTag#setCodeKeyVal(String keyval) keyVal指定方法で、キーだけの場合も設定可能にします。 DOC14\query.jsp(53): GFX004\result.jsp(54): [helpの移動] common/jquery/jquery-ui.js jspファイルに直接組み込んでいる場合は、削除 common\gamen\14_EDIT\result.jsp(11): common\gamen\14_EDIT\result_CLMSEQ.jsp(11): common\gamen\14_EDIT\result_REPORT.jsp(11): GF2202\main.jsp(10): gf\script\common\autoManual.js jsp\common\autoManual.js helpの移動をするには、このJavaScriptが必要 hayabusa.taglib.HeadTag#doEndTag() [リモートリソースのキャッシュクリア] リソース更新時に、リモートリソースのキャッシュクリアを行うかどうか指定します。 GEでリソース更新する場合に、元のシステムへの自動反映させるため、初期値は、true にします。 hayabusa.common.SystemData#USE_REMOTE_RESOURCE_CLEAR = "true" ; [共通化ファイル入力、出力] tableIdを引数に取れるように対応。3PAIN など、tableId を分けている場合に、指定します。 jsp/common/upload.jsp jsp/common/filePopup.jsp [#csv2ArrayExt(String,int)の戻り値を、文字列配列から数字配列に変更] plugin.io.TableReader_Calc.DomOdsParser#processBook(Document doc,String sheetName,String sheetNos) [QUERYに表示される1行メニュは、説明なしの画面名称のみ表示する] hayabusa.taglib.TopMenuTag#makeOneLevelMenu() hayabusa.taglib.TopMenuTag#makeNextguiMenu() [caseIf 属性の追加] hayabusa.taglib.CommonTagSupport#release2() hayabusa.taglib.CommonTagSupport#setCaseIf(String cif) hayabusa.taglib.CommonTagSupport#useTag() [titleが未設定の時は、画面名称(画面ID)とする] hayabusa.taglib.HeadTag#doStartTag() [type別Selectionの場合、ラベルリソースを使用する為、言語を引数で渡す] hayabusa.db.SelectionFactory#newSelection(String type,String editPrm,String lang) hayabusa.db.Selection_HM#Selection_HM(String editPrm,String lang) hayabusa.db.Selection_KEYVAL#Selection_KEYVAL(String strCode,String lang) hayabusa.db.Selection_NULL#Selection_NULL(String strCode,String lang) hayabusa.db.Selection_NUM#Selection_NUM(String editPrm,String lang) hayabusa.db.Selection_YMD#Selection_YMD(String editPrm,String lang) plugin.column.Editor_MENU#Editor_MENU(DBColumn clm,String type) plugin.column.Renderer_MENU#Renderer_MENU(DBColumn clm,String type) [アルファベットの対応を廃止し、数字配列のみサポートします] fukurou.util.StringUtil#csv2ArrayExt(String csvData,int maxNo) [キーのnull判定は行わない] (個別のメソッド内で実施している。) hayabusa.taglib.ValueTag#setKey(String key1) [キーの判定に、isEmpty() が漏れていた] hayabusa.taglib.ValueTag#setSQLAttribute(DBTableModel table) [新規作成] fukurou.model.ExcelModel#getSheetNames() fukurou.model.ExcelModel#getNames() fukurou.model.ExcelModel#getStyleNames() hayabusa.taglib.ExcelFileTag.java fukurou.model.JacobUtil#toPrint(File inFile,String printer) fukurou.model.JacobUtil#saveAs(File inFile,File outFile) [行-列形式と、SHEET文字列判定を採用] fukurou.model.POIUtil#kigo2rowCol(String kigo) [行ループを 0〜最終行の 降順で廻してなかった] hayabusa.taglib.EntryTag#allReset() hayabusa.taglib.EntryTag#allAction() hayabusa.taglib.EntryTag#resetData() [表題(title)属性のスペース対策(KEY:LBL をダブルクオートで囲う)] fukurou.db.DatabaseConfig#getCodeKeyVal() [リファクタリング] 6.2.6.0_refactoring.txt 6.2.5.1 (2015/06/12) [CSV形式のkeys,vals引数(CSV引数)対応] hayabusa.taglib.ScheduleTag#setAttribute() hayabusa.taglib.ScheduleTag#setKeys(String key) hayabusa.taglib.ScheduleTag#setVals(String val) hayabusa.taglib.CommonTagSupport#getCSVParameter(String csvKey,String csvVal) [Modify情報が書かれていると、DELETE状況が再セットされないため、削除されなかった] hayabusa.taglib.TableMergeTag#makeIntersect(DBTableModel masterTbl,Map masterMap,Map slaveMap) hayabusa.taglib.TableMergeTag#makeMinus(DBTableModel masterTbl,Map masterMap,Map slaveMap) [StringUtil.nvalを、すべてのパラメータ取得時に適用します] plugin.daemon.Daemon_URLConnect#initDaemon() [シート名重複が自分自身の場合は、何もしない。] fukurou.model.ExcelModel#setSheetName( final int shNo, final String sheetName ) [サンプルソース、リソース関連修正] ge/jsp/GE0005/result.jsp ラベル(DESCRIPTION をTEXTAREAに変更) gf/jsp/GF6270 EXCEL出力 gf/jsp/GF6350 スケジュール機能 gf/jsp/GF6390 シェル実行 gf/jsp/GFX003 対訳 gf/jsp/GFX004 対訳 [build.xml 修正] target name="spec" と、target name="check" で、javadoc からXMLファイルを作成したり、 警告やリリースノート情報を作成していましたが、publicクラスのみの設定になっていました。 全クラスを対象にするため、private="true" 属性を追加します。 gf/build.xml 6.2.5.0 (2015/06/05) [DirectTableInsertTag] 読み取り件数オーバーフロー時、HybsOverflowException を throw します。 hayabusa/taglib/DirectTableInsertTag#values( final String[] vals, final int rowNo ) デバック時に1行単位に出力するのを止めます。 fukurou.model/TableModelHelper#values( final String[] vals, final int rowNo ) [help機能] 1.showViewManual 関数(カラム情報からマニュアルを自動作成するJavaScript)を resultScript.js から独立させ、新たに、autoManual.js を作成し、query.jsp でも このマニュアルが使えるようにします。 2.上記対応の為、既存のquery.jsp の画面単位マニュアルのアイコンを変更します。 gf/src/script/common/resultScript.js showViewManual 関数 削除 gf/src/script/common/autoManual.js showViewManual 関数 移植 gf/jsp/image/help.png 画面マニュアルのイメージ変更 gf/jsp/custom/query_info.jsp onClick="showViewManual()" の画像イメージ追加 gf/jsp/custom/result_info.jsp alt="Item Definition" を、title="Help" alt="help2" に変更 gf/jsp/custom/result_FS_info.jsp 同上 gf/jsp/custom/result_mdfy_info.jsp 同上 hayabusa.taglib.HeadTag#doEndTag() [Edit機能] システム定数追加 USE_EDIT_WITH_NAME_SEQ * EDITNAME利用時に、カラムの非表示が無ければ、書き込み許可するかどうか(true:許可/false:不許可)を指定。 * writeCheckタグで利用されます。 * この設定は、個別指定できません。 * 初期値:USE_EDIT_WITH_NAME_SEQ = "true" システム定数追加 USE_EDIT_WITH_VIEW_CHANGE * EDITNAME利用時の編集可能時に、update.jsp等で、ViewFormType を、画面の指定通りにするか、 * HTMLSeqClmTable に、強制的に切り替えるかを、指定します(true:強制切替/false:通常通り)。 * 通常、検索を意識した、EDITNAME利用ですが、ユーザーがカスタマイズした並び順で、 * 登録したい場合に、true に設定します。 * viewタグで利用されます。 * この設定は、個別指定できません。 * 初期値:USE_EDIT_WITH_VIEW_CHANGE = "false" hayabusa.taglib.WriteCheckTag#isWrite() 上記動作確認用のサンプル修正。 jsp/GF6050 [Edit機能] 6.0.3.0 (2014/11/13) で、対応した EditMarker使用時の対策を解除します。 元々は、ポップアップのカラムが、edit画面に出てしまうための対応でしたが、 今の仕様は、カラムの配置換えのみでは、登録できるようにしているため、 ポップアップも書き込み禁止にできなくなったためです。 hayabusa.taglib.ViewFormTag#doEndTag() hayabusa.taglib.ViewFormTag#release2() hayabusa.taglib.ViewFormTag#doStartTag() 6.0.3.0 (2014/11/13) Edit機能で、JSPソース変更時の対応で、EditMarker 使用時に、Edit編集画面に 不要なカラムが表示される現象の対応を行います。 [HTML5対策] 6.2.4.2 (2015/05/29) で、textareaの自動改行しなくなった件で、CSS に、 white-space: normal; を設定しましたが、この場合、長い文章の初めの箇所では 手動で改行した場合は、改行されますが、短い文章や、長い文章でも、最後の方では リターンを打っても、改行されず、少し隙間が空く程度に見えます。 どうも、pre を指定しないとダメなようです。 これでも何か不都合がある場合は、再度調整します。 src\script\common\default.css 6.2.4.2 (2015/05/29) HTML5(IE11 ネイティブモード)で、textarea の文字が自動で折り返さなくなった。 どうも、td タグの white-space: nowrap; 属性が継承されてしまうようです。 default.css で、textarea { white-space: normal; } を設定しておきます。 [readTableタグ 仕様変更] AutoReaderの仕様を変更します。 これは、文字列配列で管理していた、リード順を、AutoReaderParam という内部クラスで 管理するように変更しました。 また、encode を指定した場合は、"Text" + encode を先に処理する様に変更しました。 hayabusa.taglib.ReadTableTag#doEndTag() hayabusa.taglib.ReadTableTag#release2() hayabusa.taglib.ReadTableTag#afterEnd() hayabusa.taglib.DirectTableInsertTag#afterEnd() hayabusa.taglib.DirectTableInsertTag#create(File file) [JavaDoc出力] タグリブマニュアルの元情報である、Doclet出力で、param 属性取得を、 (0:パラメータ、1:ラベル、2:コメント、3:コード) に分解しており、この、2:コメント を、 javadoc.xml の comment 属性に出力します。 これに伴い、GEA08_A.xsl を変更し、GEA08_A.xml の出力内容を変えています。 gf/src/xslt/GEA08_A.xsl fukurou.taglet.DocletTaglib#writeContents(ClassDoc[] classes,DocletTagWriter writer) 同時に、htmlフィルターで、BR→改行処理が、引数間違いの為うまくできていなかった件も対応しました。 fukurou.util.StringUtil#htmlFilter(String input,boolean flag) [統合DB対応の除去] アクセスログ取得の為,アプリケーション情報を追記するかどうかのパラメータの初期値を、 false:追記しない に変更します。 これは、特定環境下におけるログ収集機構がないと、ログの収集ができないため、 単に、情報設定の余計な処理が発生するだけになる為です。 hayabusa.common.SystemData#USE_DB_APPLICATION_INFO = false GEのリソース更新時に、同じシステムIDの別のTomcatのリソースのキャッシュをクリアして 同期を取る処理(common/remoteResource.jsp) で、古い接続先情報があると、接続失敗までの タイムアウトがかかり、結果、リソース更新処理がものすごく遅くなる対策を行います。 1.そもそも、複数Tomcatの仕組みでないと使用する必要がない為、システムパラメータで 使用の有無を指定できるようにします。これも、特殊系なので、初期値 false にします。 2.リモートでリソース更新する場合でも、接続失敗までのタイムアウト(秒)を指定できるようにします。 3.リモートで接続するユーザー:パスをシステムリソースで定義しておきます。 hayabusa.common.SystemData#USE_REMOTE_RESOURCE_CLEAR = false hayabusa.common.SystemData#REMOTE_USER_PASS jsp/common/remoteResource.jsp hayabusa.common.SystemData#URL_CONNECT_TIMEOUT = 1 fukurou.util.URLConnect#getConnection() fukurou.util.URLConnect#setTimeout(int tout) fukurou.util.URLConnect#main(String[] args) hayabusa.taglib.URLConnectTag#connect() hayabusa.taglib.URLConnectTag#release2() hayabusa.taglib.URLConnectTag#setTimeout(String tout) [GMIS V6紙芝居対応] 紙芝居(hayabusa.filter.FileResponseTransform.java) のパース処理を、強化します。 ・3ペインの場合の注意 query.jspは、form飛び先がresult.htmになっているので、forward.htmに変更 ・entry.htm からの画面遷移 entry.htm から、すぐさま他の画面に移る場合、戻るボタンを消す。 (登録したときに一瞬戻るボタンが見えてしまうので) 同様の理由で、
・・・・の文字も見えてしまうので、非表示設定で隠す。 ・location.href 時の submit 対応 location.hrefコマンドでとび先のHTMを指定している場合 typeがsubmitになっていると、FORMタグのとび先に遷移してしまうので、 typeをbuttonに変更するとうまくいく。 forward.htm しか処理してなかったのを、location.href を含むタグ内でを処理する様に変更。 [GMIS V6紙芝居対応] hayabusa.taglib.LinkTag#doEndTag() [自動ヘルプ(showViewManual)のquery.jsp 対応] hayabusa.taglib.HeadTag#doEndTag() [5.8.8.0 (2015/06/05) 対応] 5.8.8.0 (2015/06/05) では、URLチェック時の暗号化鍵を引数指定できる対応と、 フレームワーク内のエラーメッセージのリソース化を取り込んでいます。 [URLチェック時の暗号化鍵] URLチェック時はソース内部に書かれた暗号化鍵を利用していますが、セキュリティ的には問題があるため、 外部から指定できるように変更します。 受け側のフィルターではシステムリソースの「URL_CHECK_CRYPT」でキーを指定します。 リンク作成時はLinkタグでurlCheckCryptを指定します。 キーが指定されていない場合は、今まで通りのキーを利用します。 必要十分程度の高速化を図るため、addURLCheckKeyにHybsCryptographyを渡す実装としています。 fukurou.security.HybsCryptography#HybsCryptography( final String cryptKey ) hayabusa.filter.URLCheckFilter#HybsCryptography fukurou.util.XHTMLTag#addURLCheckKey( final String href, final String key, final String userid, final long time ) fukurou.util.XHTMLTag#addURLCheckKey( final String href, final String key, final String userid, final long time, final HybsCryptography crypt ) fukurou.util.XHTMLTag#embedURLCheckKey( final String tag, final String key, final String userid, final long time ) fukurou.util.XHTMLTag#embedURLCheckKey( final String tag, final String key, final String userid, final long time, final HybsCryptography crypt ) hayabusa.taglib.LinkTag#release2() hayabusa.taglib.LinkTag#setUrlCheckCrypt( final String crypt ) hayabusa.taglib.LinkTag#doEndTag() hayabusa.html.ViewLink_LINK#clear() hayabusa.html.ViewLink_LINK#setDBTableModel( final DBTableModel tbl ) hayabusa.html.ViewLink_LINK#getMarkerString( final int row,final int clm,final String value ) hybs-taglib.tld [Ver6 独自対応] urlCheckTimeの初期値を、INIT_TIMEに変更 hayabusa.taglib.LinkTag#setUrlCheckTime(String time) hayabusa.taglib.LinkTag#release2() [エラーメッセージリソース化] ユーザに表示されるエンジン内部のエラーメッセージの一部をリソース化し、多言語対応可にします。 今回はまず、特定のタグのみ対応を行います。 hayabusa.taglib.FileUploadTag#doEndTag() hayabusa.taglib.ViewFormTag#doStartTag() ラベルリソース(**) ERR0043,ERR0044,ERR0045 6.2.4.2 (2015/05/29) [total が 0 の場合の対応] admin処理で、6.2.4.1 (2015/05/22) ディスク容量を求める処理で、total容量が 0の場合、ゼロ割り算エラーとなったため、対応します。 容量を求めることができないドライブがあると、ゼロが返るようです。 hayabusa/servlet/HybsAdmin#tableTr2( final StringBuilder buf, final String name, final long total, final long usable ) [js エラー対策] jqog.js で、未定義または NULL 参照のプロパティ 'className' は取得できません エラーが 発生したため、null チェックを入れます。 実際の原因は、CustomTables指定時に、og:header タグを使用していなかったため、TR属性が 出力されなかったためです。 src\script\common\jqog.js [HTML5対策] HTML5(IE11 ネイティブモード)で、textarea の文字が自動で折り返さなくなった。 どうも、td タグの white-space: nowrap; 属性が継承されてしまうようです。 default.css で、textarea { white-space: normal; } を設定しておきます。 src\script\common\default.css [Submit(HTML5) 修正] HTML5サンプル画面(GF6040)に、カーブの入力窓、ボタン、画像ボタン、テキストを追加します。 gf/jsp/GF6040/result.jsp submitタグで、画像ボタンを作る場合の、img属性指定時の、画像の配置を、 left top から、center center に変更します。 同時に、スタイル属性追加時は、一番初めにします。そうすることで、 style属性で、これらの設定を上書きできるようになります。 hayabusa/taglib/SubmitTag.java [EXCEL入力画面 修正] サンプルプログラムの、EXCEL入力画面(GF6250)を修正します。 ファイル形式 から、Default、Fixed を削除し、POI を追加します。 gf/jsp/GF6250/query.jsp [GF_DB定義書.xlsx で、スキーマ変更] GF28(対訳テーブル) システムID SYSTEM_ID X(10) VARCHAR2 追加 キーワード KEYWORD X(200) VARCHAR2 追加 保留区分 KBHORYU X(1) VARCHAR2 追加 0:初期 1:翻訳済 9:保留 訳文区分 KBYAKU リソース変更 1:通常ラベル 2:短縮ラベル 3:概要説明 4:ファイル 原文言語 LANG_GEN X(2) VARCHAR2 削除 インデックスおよび、ユニーク制約変更 [画面リソースの変更] 管理 という名称が分かりにくかったので、それぞれ、変更しています。 システム管理 【リソース・帳票管理】 【管理ツール】 [ACT_MAPOBJ アクションの追加] hayabusa.taglib.ValueTag#setSQLAttribute(DBTableModel table) hayabusa.taglib.ValueTag#setTableAttribute(DBTableModel table,String key,String action) [MAPOBJ , ALL_MAPOBJ アクションの追加] hayabusa.taglib.ValueTag#setAction(String act) [POIUtil を使わず、EventReader_XLS、EventReader_XLSX を直接呼び出します] plugin.io.TableReader_Excel#readDBTable(File file,String enc) [POIUtil#extractor → textReader に変更] plugin.io.TableReader_POI#readDBTable(File file,String enc) [POIUtil#extractor の判定方法変更] hayabusa.taglib.FileQueryTag#addFileData(int rowNo,int lvl,File fin) [StringUtil#spanCut(String) → StringUtil#tagCut(String) に変更します] hayabusa.db.AbstractRenderer#getWriteValue(String value) [StringUtil#tagCut(String) をラベルに適用します] hayabusa.io.AbstractTableWriter#writeLabel(DBTableModel table,PrintWriter writer) plugin.io.TableWriter_Calc#writeLabel(DBTableModel table,PrintWriter writer) plugin.io.TableWriter_Excel#writeLabel(DBTableModel table,PrintWriter writer) [executeCount の設定がおかしい] DirectTableInsertTagでは、初期値が -1 のため、件数が1件少なくなっていた。 hayabusa.taglib.DirectTableInsertTag#create(File file) ReadTableTagでは、設定されていなかった。 hayabusa.taglib.ReadTableTag#afterEnd() [エラーを画面に出します] hayabusa.taglib.ReadTableTag#doEndTag() [テキスト変換処理] fukurou.model.ExcelModel#textConverter(TextConverter conv) fukurou.model.ExcelModel#crConv(TextConverter conv,String val) fukurou.model.ExcelModel#textConverter(Map convMap) fukurou.model.TextConverter#change(String val) [引数判定の true/false の処理が逆でした] fukurou.model.POIUtil#main(String[] args) [改行以外に、「。」で分割します。] fukurou.model.POIUtil#wordReader1(File file,TableModelHelper helper) fukurou.model.POIUtil#wordReader2(File file,TableModelHelper helper) [行単位に、取り込むようにします] fukurou.model.POIUtil#pptReader2(File file,TableModelHelper helper) [リファクタリング] 6.2.4.2_refactoring.txt 6.2.4.1 (2015/05/22) [EditConfigTag] doStartTag() メソッドは、親クラスと同じなので、オーバーライド不要 削除します。 hayabusa.taglib.EditConfigTag#doStartTag() [カラムが DBTableModel に存在しない場合、return から continue に変更] hayabusa.taglib.ViewFormTag#makeEditTable(String userViewClms) [REAL_PATH 対応] realPath は、HybsSystem経由で、取得する。 hayabusa.common.SystemParameter#loadInitialParameter(ServletContext context,String contextName) hayabusa.filter.AccessStopFilter#init(FilterConfig filterConfig) hayabusa.filter.FileFilter#init(FilterConfig filterConfig) hayabusa.filter.URLCheckFilter#init(FilterConfig filterConfig) hayabusa.filter.URLHashFilter#init(FilterConfig config) realPath は、setInitialData ではなく、setRealPathメソッドで設定する。 hayabusa.common.HybsSystem#setInitialData(Map param) hayabusa.common.HybsSystem#setRealPath(String path) hayabusa.common.HybsSystem#getRealPath() [メールのSMTP AUTH対応] POP BEFORE SMTPの認証については以前から対応していましたが、SMTP AUTHに対応します。 但し、現行利用しているjavaMailではMD5に対応していないため限定的な対応となります。 認証方法として「SMTP_AUTH」を指定してください。 fukurou.mail.MailTX#MailTX(String host,String charset,String smtpPort,String authType,String authPort,String authUser,String authPass) 追加(コメントのみ修正) fukurou.mail.MailTransfer コメントのみ修正 hayabusa.taglib.MailSenderTag#setAuthType(String type) [javax.mail.1.5.3.jar] mail-1.5.1.jar を、削除し、javax.mail.1.5.3.jar を使用します。 オリジナルのファイルは、javax.mail.jar ですが、ダウンロードしたときの バージョンが判らなくなるので、一応、ファイル名を変えておきます。 既存の、mail-1.5.1.jar ファイルと、名称を変えているので、削除忘れに ご注意ください。 apps\jdk180u45\jre\lib\ext\javax.mail.1.5.3.jar [admin改造:ディスク容量を求めます] ディスクの容量、空き容量、使用率を admin 画面で表示します。 hayabusa.servlet.HybsAdmin#getInfomation() hayabusa.servlet.HybsAdmin#tableTr2(StringBuilder buf,String name,long total,long usable) default.css で、memory、disc、discTD を定義 jsp/common/default.css src/script/common/default.css [GE0006 復活] GE0006 ラベル概要説明 を復活します。 ge/jsp/GE0006 フォルダ、GE0006 リソース 6.2.4.0 (2015/05/15) [Jacob対応] Java COM Bridge JACOBは、JavaからのCOMオートメーションコンポーネント呼び出しを可能とする JAVA-COMブリッジです。COMライブラリのネイティブな呼び出しにJNIを使います。 JACOBは、32bitおよび64bitのJVMをサポートするX86およびx64環境で動作します。 http://osdn.jp/projects/sfnet_jacob-project/ jdk180u45\jre\lib\ext 以下に、jar ファイルを配置する事と、 C:\Windows\System32 に、dllファイルのコピーが必要です。 現状の機能は、EXCELの変換と、PDF化、印刷(プリンタ指定)のみです。 また、サーバーに、EXCEL をインストールする必要があります。 apps\jdk180u45\jre\lib\ext\jacob-1.18-M2.jar 6.2.4.0 (2015/05/15) [fnUnblockUI 未定義エラーに対応] HeadTag の useBlockUI 属性で出力しているJavaScriptで、 fnUnblockUI ファンクションが見つからない場合のエラーに対応しました。 hayabusa.taglib.HeadTag#UNBLOCKUI_READY [TimeoutID の未定義エラー対策] gf\jsp\common\jquery\blockUI.js [submitタグ毎にGAMENIDを出力] submitタグ毎に飛ばし先を変える為、GAMENIDをボタン単位に出力する。 GAMENID は、writeChectタグで hidden で出しているが、commonForward が hidden を拾えなかったため、問題なかった。 hayabusa.taglib.SubmitTag#getHiddenTag(String command,String lbl,String valueLink) [maxScrollBarSize 追加] hayabusa.taglib.ViewFormTag#release2() hayabusa.taglib.ViewFormTag#setMaxScrollBarSize(String size) TLD 修正 hybs-taglib.tld ViewFormTag#maxScrollBarSize [useRedirectHidden 属性追加] hayabusa.taglib.CommonForwardTag#doEndTag() hayabusa.taglib.CommonForwardTag#release2() hayabusa.taglib.CommonForwardTag#getForwardURI(HttpServletRequest request,HttpSession session) hayabusa.taglib.CommonForwardTag#setUseRedirectHidden(String flag) TLD 修正 hybs-taglib.tld CommonForwardTag#useRedirectHidden [ガントが正しく高さ調整されない件] IE以外のブラウザで従来のガントが正しく高さ調整されていない件 scriptタグのfor,eventはHTML5では廃止属性になっており、無視されています。 つまり、タグの位置でスクリプトが実行されており、heightReset中のgetElementById実行時に 対象オブジェクトがまだ存在していないので高さ調整が実行されていません。 (JavaScriptではなくJSP側の問題) ・scriptタグを最下部に配置する ・jQuery等でイベント登録を行う どちらかの方法で対応する必要があるかと思います。 とりあえず廃止属性を削除して、最下部に移動させておきました。 gf/jsp/GANTT06\result.jsp(115): ganttResize(); gf/jsp/GANTT06B\result.jsp(95): ganttResize(); gf/jsp/GANTT06C\result.jsp(117): ganttResize(event,4); gf/jsp/GANTT09\result.jsp(121): ganttResize(evt); gf/jsp/GANTT09\result.jsp(125): ganttResize(evt); [HEAD,TAIL 追加] fukurou.process.Process_Grep#changeKeyword(File inFile,File outFile,int firstLineNo) fukurou.process.Process_Grep#changeKeywordAsBulk(String fileLine,File outFile) [aimai 属性は、BODYのincludeより前に追加] hayabusa.taglib.ColumnTag#makeTag() hayabusa.taglib.InputTag#makeTag() [body 属性のクリアが抜けていた] hayabusa.taglib.InputTag#release2() [logMsg 追加] hayabusa.taglib.WriteCheckTag#release2() [useFmtDeco属性とは無関係に、[!XXXX](値)を対応します] hayabusa.html.ViewMarker_MARKER#getMarkerString(int row,int clm,String value) [エラーを画面に出します] hayabusa.taglib.ReadTableTag#doEndTag() [エンコード範囲内の value は、値を使う] (元に戻す) hayabusa.html.ViewLink_LINK#getMarkerString(int row,int clm,String value) [各andの終わりに、改行とTABを出力します] hayabusa.taglib.SqlWhereTag#makeSqlWhere() [新規作成] fukurou.util.FileInfo#isSUFIX(File file,String[] sufix) fukurou.util.FileInfo#isSUFIX(String filename,String[] sufix) [新規追加] fukurou.model.JacobUtil#excel2PDF(File inFile,File outPdf) fukurou.model.JacobUtil#getPrinters() fukurou.model.JacobUtil#main(String[] args) fukurou.model.JacobUtil#copyExcel(File inFile,File outFile) [無条件でOMITする名称を指定します] hayabusa.taglib.DirectTableInsertTag#doStartTag() hayabusa.taglib.ReadTableTag#addOmitNames(String omit) [途中の状況表示用(ログメッセージ)] hayabusa.taglib.WriteCheckTag#isWrite() 6.2.3.0 (2015/05/01) [CSV形式の作成を、String#join( CharSequence , CharSequence... )を使用] fukurou.db.DBSimpleTable#getInsertSQL() fukurou.process.Process_DBMerge#makePrepareStatement(String table,LineModel data) fukurou.process.Process_DBWriter#makePrepareStatement(String table,LineModel data) fukurou.xml.HybsXMLSave#insertSQL(String[] columns,String tableName) hayabusa.taglib.TableUpdateParamTag#getInsertSQL(TableUpdateParamTag.NamesData namesData) [POIUtil のメソッド名変更に伴う対応] hayabusa.taglib.FileQueryTag#addFileData(int rowNo,int lvl,File fin) [POI関連の拡張子ファイルかどうかを判定] fukurou.model.POIUtil#isPOI(File file) [len == maxSize のとき、パース文字列ではなく、元の値を返していた] fukurou.util.HybsDateUtil#parseDate(String value,int minSize,int maxSize) [list アクション追加、delete 処理は、フォルダ階層を丸ごと削除します] hayabusa.taglib.FileTag#actionExec(String action) [maxlength 変数は、0 の場合は、無制限になります] hayabusa.db.DBColumn#getFieldSize(int maxlength) hayabusa.taglib.ColumnEditorTag#getModifyConfig(DBColumn dbColumn) hayabusa.taglib.ColumnEditorTag#setMaxlength(String len) hayabusa.taglib.ColumnTag#getInsertTag(DBColumn clm,String value) hayabusa.taglib.ColumnTag#setMaxlength(String maxlen) [table属性追加] hayabusa.taglib.DirectTableInsertTag#release2() hayabusa.taglib.DirectTableInsertTag#setTable(String tbl) BODYのSQL文が無くても、table属性で自動生成します。 hayabusa.taglib.DirectTableInsertTag#doStartTag() hayabusa.taglib.DirectTableInsertTag#doAfterBody() [textReader → extractor に変更] fukurou.model.POIUtil#extractor(File file,String encode) [writeKeyLabel 属性を追加] hayabusa.db.DBColumn#DBColumn(String lang,ColumnData clmData,LabelData lblData,CodeData cdData) hayabusa.db.DBColumn#DBColumn(DBColumnConfig config) hayabusa.db.DBColumn#getWriteValue(String value) hayabusa.db.DBColumn#getConfig() hayabusa.io.AbstractTableWriter#createDBColumn() hayabusa.io.AbstractTableWriter#writeLabel(DBTableModel table,PrintWriter writer) hayabusa.io.AbstractTableWriter#writeName(DBTableModel table,PrintWriter writer) hayabusa.io.AbstractTableWriter#writeSize(DBTableModel table,PrintWriter writer) hayabusa.io.AbstractTableWriter#writeClass(DBTableModel table,PrintWriter writer) hayabusa.io.AbstractTableWriter#writeSeparator(DBTableModel table,PrintWriter writer) plugin.io.TableWriter_Default#writeData(DBTableModel table,PrintWriter writer) plugin.io.TableWriter_Excel#writeLabel(DBTableModel table,PrintWriter writer) plugin.io.TableWriter_Excel#writeName(DBTableModel table,PrintWriter writer) plugin.io.TableWriter_Excel#writeSize(DBTableModel table,PrintWriter writer) plugin.io.TableWriter_Excel#writeClass(DBTableModel table,PrintWriter writer) plugin.io.TableWriter_Excel#writeSeparator(DBTableModel table,PrintWriter writer) plugin.io.TableWriter_Excel#writeData(DBTableModel table,PrintWriter writer) [もう一つのコンストラクタを呼びように変更] hayabusa.db.DBColumnConfig#DBColumnConfig(String name) [アップロードファイルを、UPLOAD_FILESキーに、Listオブジェクトに格納します] hayabusa.taglib.FileUploadTag#makeDBTable(MultipartRequest multi) hayabusa.taglib.FileUploadTag#makeDBTableFromClms(MultipartRequest multi) [キー,ラベルで分離して出力するかどうか] writeKeyLabel 属性を追加 hayabusa.taglib.ColumnEditorTag#release2() [キー/ラベルで分離して出力するかどうか] hayabusa.db.DBColumn#isWriteKeyLabel() hayabusa.db.DBColumnConfig#setWriteKeyLabel(boolean flag) hayabusa.db.DBColumnConfig#isWriteKeyLabel() hayabusa.taglib.ColumnEditorTag#setWriteKeyLabel(String flag) [パラメータ変更、textReader → extractor に変更] fukurou.model.POIUtil#main(String[] args) [マーク表示を廃止] hayabusa.db.Selection_DBRADIO#getValueLabel(String selectValue,boolean flag) [内部処理を大幅に変更します] fukurou.util.HybsDateUtil#parseNumber(String value) [新規作成] fukurou.model.POIUtil#textReader(File file,TableModelHelper helper) fukurou.util.FileInfo#getNAME(File file) fukurou.util.FileInfo#getNAME(String filename) fukurou.util.FileInfo#getSUFIX(File file) fukurou.util.FileInfo#getSUFIX(String filename) plugin.io.TableReader_POI#readDBTable(File file,String enc) [新規追加] fukurou.util.HybsDateUtil#addZero(String val) [行読み飛ばし nullSkipClm追加] fukurou.model.TableModelHelper#value(String val,int rowNo,int colNo) fukurou.model.TableModelHelper#setNullSkipClm(String clm) hayabusa.io.AbstractTableReader#setNullSkipClm(String clm) hayabusa.io.TableReader#setNullSkipClm(String clm) hayabusa.taglib.DirectTableInsertTag#create(File file) hayabusa.taglib.ReadTableTag#setNullSkipClm(String clm) hayabusa.taglib.ReadTableTag#release2() plugin.io.TableReader_Excel#readDBTable(File file,String enc) plugin.io.TableReader_Text#readDBTable(File file,String enc) hayabusa.taglib.ReadTableTag#create(File file) [複数処理を考慮して、例外処理は発行しない] hayabusa.taglib.ReadTableTag#doEndTag() [directTableInsert スクリプト自動作成] directTableInsertで、INSERTのSQL文を自動作成します。 テーブル名を指定します。 directTableInsert に、table属性を追加します。 [readTable のnullカラムスキップ] readTable、directTableInsertで、指定のカラムが、null の場合、読み飛ばします。 readTable に、nullSkipClm属性を追加します。 directTableInsert に、nullSkipClm属性を追加します。 [readTable のnullカラムスキップ] セレクトメニューの場合、キーとラベルを分けて出力するかどうか[true/false]を指定します columnEditor に、writeKeyLabel属性を追加します。 hybs-taglib.tld 6.2.2.4 (2015/04/24) [W100 Bulkset入力枠] Bulkset入力枠で、幅 100% 設定で、以下の class属性の場合は、 幅を解除します。 .MD5 , .PN , .DATE , .YM , .YM01 , .YM31 , .YMD , .YMDH , .HMS , .R , .S9 , .X9 , .RADIO gf/jsp/common/default.css gf/src/script/common/default.css [BITBOX 新規追加(暫定)] hayabusa.db.SelectionFactory#newSelection(String type,CodeData codeData,String addKeyLabel) [class="W100"の追加条件に、dbType 制限をかけます] hayabusa.html.AbstractViewForm#getSortedColumnLabel(int column) [getRadioLabel廃止] getValueLabel を使用する。 plugin.column.Renderer_RADIO#getValue(String value) plugin.column.Renderer_RADIO#getWriteValue(String value) [getRadio廃止] getOption として、引数違いとして用意する。 plugin.column.Editor_DBRADIO#getValue(String value) plugin.column.Editor_DBRADIO#getValue(int row,String value) plugin.column.Editor_RADIO#getValue(String value) plugin.column.Editor_RADIO#getValue(int row,String value) [getValueLabel を使用する] hayabusa.db.Selection_RADIO#getValueLabel(String selectValue) [メソッド変更] 旧 #getRadio( String , String , boolean ) hayabusa.db.Selection_DBRADIO#getOption(String name,String selectValue,boolean useLabel) hayabusa.db.Selection_NULL#getOption(String name,String selectValue,boolean useLabel) hayabusa.db.Selection_RADIO#getOption(String name,String selectValue,boolean useLabel) [新規追加(暫定)] hayabusa.db.Selection_BITBOX#getValueLabel(String selectValue,boolean flag) hayabusa.db.Selection_BITBOX#getValueLabel(String selectValue) hayabusa.db.Selection_BITBOX#Selection_BITBOX(CodeData cdData) hayabusa.db.Selection_BITBOX#getOption(String selectValue,boolean seqFlag,boolean useShortLabel) hayabusa.db.Selection_BITBOX#getOption(String name,String selectValue,boolean useLabel) plugin.column.Editor_BITBOX#newInstance(DBColumn clm) plugin.column.Editor_BITBOX#getValue(String value) plugin.column.Editor_BITBOX#getValue(int row,String value) plugin.column.Editor_BITBOX#Editor_BITBOX() plugin.column.Editor_BITBOX#Editor_BITBOX(DBColumn clm) plugin.column.Renderer_BITBOX#newInstance(DBColumn clm) plugin.column.Renderer_BITBOX#getValue(String value) plugin.column.Renderer_BITBOX#getValue(int row,String value) plugin.column.Renderer_BITBOX#getWriteValue(String value) plugin.column.Renderer_BITBOX#Renderer_BITBOX(DBColumn clm) 旧 #getRadio( String , String , boolean ) メソッドの代替えです。 hayabusa.db.Selection#getOption(String name,String selectValue,boolean useLabel) 5.8.6.1 (2015/04/17) を取り込みました。 [DBType_HMS修正] (6.2.2.3 (2015/04/10) の対応分) 0開始の時間が正常に処理されないため修正します。 同時に6桁(hhmmss)と4桁(hhmm)どちらでも正しく動作するように対応します。 [URLCheck機能追加] ロードバランサ等でURL変換を行ってアクセスしているような場合にURLCheckが動作しませんでした。 URLCheckは実際のリクエストURLと、Linkタグで作成した際のURLを後方一致でチェックする機能のため、 復号化されたURLの先頭部分を無視できる設定を追加します。 フィルタ設定の際にignoreURLにhttps://wwwのように無視する部分までのURLを設定してください。 通常は設定する必要ありません。 hayabusa.filter.URLCheckFilter#init(final FilterConfig filterConfig) hayabusa.filter.URLCheckFilter#isValidAccess( final ServletRequest request ) web.xml 6.2.2.3 (2015/04/10) [桁数可変に対応] 数値変換エラーを発生させない様にします。 同時に、前回修正時にのミス修正 plugin.column.DBType_HMS#valueSet(String value) [fullAccessロール指定に、モードのみ指定機能を追加] hayabusa.resource.RoleMode#RoleMode(String roles,String mode) [htmlフィルターに、BR→改行処理機能を追加] fukurou.util.StringUtil#htmlFilter(String input,boolean flag) hayabusa.db.Selection_CODE#Selection_CODE(CodeData cdData,String addKeyLabel) hayabusa.db.Selection_DB#Selection_DB(String newQuery,String dbid,String lang,String addKeyLabel) hayabusa.db.Selection_DB#getValueLabel(String selectValue,boolean flag) hayabusa.resource.LabelData#LabelData(String[] data) hayabusa.resource.LabelData#getLongLabel(String title) hayabusa.taglib.FavoriteLinkTag#getFavoriteIcon() hayabusa.taglib.HelpTag#getLinkBody(String icon,String title) hayabusa.taglib.HideMenuTag#doStartTag() hayabusa.taglib.TopMenuTag#makeTagMenuString(String href,String target,String bodyIn,String gamenId,String imgKey,int type) plugin.column.Renderer_ICON#getValue(String value) plugin.column.Renderer_SLABEL#getValue(String value) 互換性の為のメソッド。 fukurou.util.StringUtil#htmlFilter(String input) [「\n」という文字列を、BRタグに変換する処理を追加] fukurou.util.StringUtil#yenN2br(String input) [雛形シートにそのままデータを書き込んでいく] fukurou.model.ExcelModel#createSheet(String sheetName) シートは削除不要 plugin.io.TableWriter_Excel#writeDBTable() [カレンダの文字サイズ変更] ポップアップカレンダの文字サイズを大きくします。 サイズ変更は、common/calendar2.css で、変更しますが、custom.css でも 変更できるようにしておきます。 ※ common/calendar.jsp の、css の位置を、custom.css の前に移動します。 後から設定したCSS (custom.css)が機能するようにします。 gf/jsp/common/calendar.jsp gf/src/script/common/calendar2.css IEでスクロールバーが出るケースがあるため、2pxのマージンを追加 gf/src/script/common/calendar2.js#setWinSize() 6.2.2.2 (2015/04/03) [W100 Bulkset入力枠] ヘッダーにBulkset用のテキストフィールドを作成していますが、 これを、size="1" maxlength 無指定 で作成します。 size は、ヘッダー幅の最大に合わせる関係で、必要最小限の大きさにするため、 固定で1 にします。ただし、テーブルボディー部のテキストフィールドの大きさに 広がります。 maxlength は、無指定の場合、制限なしになりますが、openGion各部にこのサイズを 使用する箇所があり、変更できないため、テキストフィールド 作成処理に、 強制的に設定するように、修正しています。 [NO_MAXLEN キーの値が、"true" の場合、maxlength を強制削除する] fukurou.util.XHTMLTag#input(Attributes attri,String name,String value,String optAttri) fukurou.util.XHTMLTag#inputAttri(Attributes attri) hayabusa.html.AbstractViewForm#getSortedColumnLabel(int column) [桁数可変に対応] plugin.column.DBType_HMS#valueAdd(String value,String add) plugin.column.DBType_HMS#valueSet(String value) plugin.column.DBType_HMS#valueCheck(String key,String value,int sizeX,int sizeY,String typeParam,boolean isStrict) plugin.column.DBType_HMS#valueAdd(String value) [帳票デーモン起動] 帳票デーモン起動画面で、SYSTEM_ID の扱いが、'{@SYS.SYSTEM_ID}' であったのを、 [SYSTEM_ID] を参照するように変更したが、対応が中途半端であった。 取りあえず、一旦、'{@SYS.SYSTEM_ID}' に戻します。 これは、デーモン起動のパラメータは、GE で作成しますが、デーモンキーワードは、 起動時のシステムID単位に作成する仕様だったのか、単なるミスなのか、判りません。 ただし、起動画面が、SYSTEM_ID 必須ではないため、引数にすることもできないため、 取りあえず戻します。 ※ 注意 Ver5 でも同様のコーディングになっています。 ge/jsp/REP21/result.jsp , result2.jsp 5.8.6.0 (2015/04/03) まで、対応完了 (6.0.3.0で追加した機能の移植なので、これ自体の対応はありません) 6.2.2.1 (2015/03/31) [PostgreSQL対応] 最後の記号を、"/" から、";" に変更します。 db定義関係で、04_VIEW/GEA10V01.xml#SYSDATE を、CURRENT_DATE に変更 plugin.table.TableFilter_DBSRC_OUT#makeEndLine() [SYSDATE 項目追加] fukurou.db.DBFunctionName#DBFunctionName(String con,String substr,String sysdt) fukurou.db.DBFunctionName#getFunctionName(String func) 6.2.2.0 (2015/03/27) [ハイライトのclickイベント] 選択行のハイライト表示を行った場合に、行選択でRadioボタンにclickイベントを発行させるかどうか指定します。 * true にセットすると、行選択で、ラジオにチェックが付くと同時に、クリックイベントが発行されます。 * POPUP系の場合は、その時点でRETURN(画面が閉じて、値がセット)されます。 * 個別に指定する場合は、ViewFormTagで、JavaScriptの hilightRow メソッドの引数に指定します。 * trueの場合、clickイベントを発行させます。 * falseの場合、従来通り、ハイライト表示でラジオのチェックは入りますが、イベントは発行されません。 * 互換性を考えれば、false ですが、POPUP系で、行選択してしまうと、選択できなくなるため、 * 行選択で、即POPUPが閉じる true にしておきます。 * VIEW_USE_HILIGHT_RADIO_CLICK = "true" ; gf\src\script\common\resultScript.js#hilightRow( evt, isCheckOnly, isRadioClick ) hybs-taglib.tld [ラベルキーでの値読込] 行選択時に、色が変わる、row_hilight が、resultScript.js で直接色を定義されていたので、 カスタマイズできませんでした。 そこで、グローバル変数化して、result_info.jsp で指定できるようにしました。 gf\src\script\common\default.css gf\src\script\common\resultScript.js gf\jsp\custom\result_info.jsp gf\jsp\custom\result_tab_info.jsp gf\jsp\custom\result_mdfy_info.jsp gf\jsp\custom\result_FS_info.jsp [曖昧検索で、name と id が異なると動かない] 曖昧検索で、name と id が異なると動かない現象が発生。id は、name から自動生成されるのでidを削除する。 ge/GE0002/query.jsp(50): ge/GE0003/query.jsp(31): ge/GE0004/query.jsp(30): ge/GE0005/query.jsp(30): [DirectWriteTableTag] DirectWriteTableTag で、機能強化します。 @replaceFrom、replaceTo に、\n,\r,\t をサポートします。 hayabusa.taglib.DirectWriteTableTag#setReplaceFrom(String str) hayabusa.taglib.DirectWriteTableTag#setReplaceTo(String str) hayabusa.taglib.DirectWriteTableTag#changeRNT(String str) AXSSチェック,クォートチェック をサポートします。 hayabusa.taglib.DirectWriteTableTag#setQuotCheck(String flag) hayabusa.taglib.DirectWriteTableTag#setXssCheck(String flag) hayabusa.taglib.DirectWriteTableTag#doAfterBody() hayabusa.taglib.DirectWriteTableTag#release2() hybs-taglib.tld [#afterEnd() メソッド 新規作成。] hayabusa.taglib.DirectTableInsertTag#afterEnd() hayabusa.taglib.ReadTableTag#afterEnd() [#replaceParam( String[] , int , ArrayTableModel ) 廃止に伴う処置] fukurou.business.AbstractBizLogic#replaceParam(String[] str) [BRと\nを相互に変換する処理を追加] fukurou.util.StringUtil#br2YenN(String input,boolean flag) hayabusa.db.Selection_CODE#Selection_CODE(CodeData cdData,String addKeyLabel) hayabusa.db.Selection_DB#Selection_DB(String newQuery,String dbid,String lang,String addKeyLabel) hayabusa.db.Selection_DB#getValueLabel(String selectValue,boolean flag) hayabusa.resource.LabelData#LabelData(String[] data) hayabusa.resource.LabelData#getLongLabel(String title) hayabusa.taglib.FavoriteLinkTag#getFavoriteIcon() hayabusa.taglib.HelpTag#getLinkBody(String icon,String title) hayabusa.taglib.HideMenuTag#doStartTag() hayabusa.taglib.TopMenuTag#makeTagMenuString(String href,String target,String bodyIn,String gamenId,String imgKey,int type) plugin.column.Renderer_ICON#getValue(String value) plugin.column.Renderer_SLABEL#getValue(String value) [ColumnAction インナークラスでパラメータを整理する。] hayabusa.taglib.ReadTableTag#setOmitNames(String clms) hayabusa.taglib.ReadTableTag#setCheckColumns(String clms) hayabusa.taglib.ReadTableTag#setAdjustColumns(String clms) hayabusa.taglib.ReadTableTag#setNullCheck(String clms) hayabusa.taglib.ReadTableTag#setUseRenderer(String flag) hayabusa.taglib.ReadTableTag#doEndTag() hayabusa.taglib.ReadTableTag#release2() hayabusa.taglib.ReadTableTag#create(File file) [ColumnActionListener 対応。] hayabusa.db.ColumnActionListener#end(boolean okFlag) hayabusa.io.AbstractTableReader#setTableDBColumn(String[] names) hayabusa.io.AbstractTableReader#setTableColumnValues(String[] values,int rowNo) hayabusa.taglib.DirectTableInsertTag#doStartTag() hayabusa.taglib.DirectTableInsertTag#release2() hayabusa.taglib.DirectTableInsertTag#create(File file) [DBColumnオブジェクトの文字列表現(#toString())を実装します。] hayabusa.db.DBColumn#toString() [Overflow処理(maxRowCount)は、Tag側に戻す。] plugin.io.TableReader_Calc#makeBody(TableReader_Calc.RowInfo rowInfo) [Overflow処理は、Tag側に戻す。] fukurou.model.TableModelHelper#endRow() [SelectionCellEditor I/Fを追加] hayabusa.db.DBColumn#getReaderValue(String value) [TEXTカラムを追加したうえで、ファイルの内容を読み込むかどうか[true/false]を指定します(初期値:false)。] hayabusa.taglib.FileQueryTag#initDBTable() hayabusa.taglib.FileQueryTag#addFileData(int rowNo,int lvl,File fin) hayabusa.taglib.FileQueryTag#setUseText(String flag) [celKigo を求めるロジック変更] fukurou.model.POIUtil#getCellMsg(Cell oCell) fukurou.model.POIUtil#getCelKigo(int colNo) [hilightRow で、行選択時にイベント発行可否を指定できるようにする。] hayabusa.taglib.ViewFormTag#setUseHilightRadioClick(String useClick) hayabusa.taglib.ViewFormTag#doEndTag() [hilightRow で、行選択時にイベント発行可否を指定できるようにする] isHiRadioClick 追加 hayabusa.taglib.ViewFormTag#release2() [interface に変更タイプ と、書込み許可を追加] hayabusa.db.DBTableModel#addColumnValues(String[] values,String modType,boolean rw) hayabusa.db.DBTableModelImpl#addColumnValues(String[] values,String modType,boolean rw) [useText属性追加。] hayabusa.taglib.FileQueryTag#release2() [ファイルの拡張子を、".xls" から、システムリソースの TABLE_WRITER_EXCEL_TYPE に変更] hayabusa.taglib.FileUDTag#doEndTag() [マクロ付Excel(.xlsm)対応] fukurou.model.ExcelModel#ExcelModel(File file,boolean isOpen) fukurou.model.POIUtil#excelReader(File file,TableModelHelper helper) [互換モード/ネイティブモード対応] クリアボタンをbutton→input に変更 hayabusa.taglib.QueryButtonTag#getReset() 検索ボタンをbutton→input に変更 hayabusa.taglib.QueryButtonTag#makeTag() [先頭に、'0 が含まれる場合のセミコロンや、前後のダブルクオートは削除] fukurou.model.TableModelHelper#value(String val,int rowNo,int colNo) [初期値を、無制限に変更] hayabusa.taglib.ReadTableTag#setMaxRowCount(String count) [引数ファイル(Text)を、テキスト化。] fukurou.model.POIUtil#textReader(File file,String encode) fukurou.model.POIUtil#textReader(File file,TableModelHelper helper,String encode) [新規作成] hayabusa.io.AbstractTableReader#setColumnActionListener(ColumnActionListener listener) hayabusa.io.TableReader#setColumnActionListener(ColumnActionListener listener) [新規追加] hayabusa.db.SelectionCellEditor#getReaderValue(String value) [読取時の最大エラー件数(errRowCount) を新規追加] hayabusa.taglib.ReadTableTag#setErrRowCount(String count) 6.2.1.0 (2015/03/13) [ラベルキーでの値読込] 5.2.1.0 (2010/10/01) で導入した、CodeDataのロングラベルから、 コード値を見つける機能を、廃止します。 これは、コードリソースを持つデータをレンデラー形式でファイル出力した場合、 ラベルしか出力されないため、そのファイルをアップロードできないのですが、 無理やり、ラベルからコードの逆変換で、値を求めて、アップロードする機能でした。 ただし、同一ラベルが存在したり、そもそも、その様な中途半端なデータを読み込む事 自体、危険なので、廃止します。 現状は、コードリソースの、キー:ラベル 形式で出力された場合は、コンマ(:)で分解して キーだけ読み取る機能がありますので、そちらが使えます。 hayabusa.resource.CodeData.java#makeLabelMap() hayabusa.io.AbstractTableReader#setTableDBColumn(String[] names) hayabusa.io.AbstractTableReader#setTableColumnValues(String[] values,int rowNo) [GE 見直し] jsp/common/releaseNotes.jsp → jsp/custom/releaseNotes.jsp に変更 jsp/common/dbid_sabun.jsp → jsp/custom/dbid_sabun.jsp に変更 jsp/custom/menu_init.jsp に、U_SYSID 変数に初期システムIDをセットする処理を入れる。 aimai="true" → aimai="V*" に変更し、result.jsp の like '{@XXX}%'" を、like '{@XXX}'" にする。 上記の対応の中で、そもそも、aimai="true" にもなっていないあいまい検索対象カラムも対応する。 [GF/GEの曖昧入力対応] 検索条件の、clazz="aimai" を、aimai="V*" 等に変更します。 これに伴い、query の like 文の "%" を、削除します。 6.2.1.0_aimai.txt [ColumnActionListener 新規作成] hayabusa.db.ColumnActionListener#setNames(String[] names) hayabusa.db.ColumnActionListener#setValues(String[] values,int rowNo) [DBTableModel を外部からセットします。] hayabusa.io.AbstractTableReader#setDBTableModel(DBTableModel table) hayabusa.io.TableReader#setDBTableModel(DBTableModel table) [Default廃止に伴い、Defaultが指定された場合は、Textに置き換える。] hayabusa.taglib.ReadTableTag#setReaderClass(String readerCls) [NAME だけ特殊処理するのではなく、統一する。] fukurou.db.DBFunctionName#getFunctionName(String func,String dbid) [TableReaderModel を外部からセットします。] plugin.io.TableReader_Calc#makeHeaderFromClms() plugin.io.TableReader_Calc#makeHeader(TableReader_Calc.RowInfo rowInfo) plugin.io.TableReader_Excel#readDBTable(File file,String enc) plugin.io.TableReader_Text#readDBTable(File file,String enc) [UserInfo が null の場合の処理を追加。] hayabusa.taglib.ErrorTag#doEndTag() [setTableColumnValuesに、行番号を引数に追加] plugin.io.TableReader_Calc#makeBody(TableReader_Calc.RowInfo rowInfo) [エラーメッセージに SQL文を追加します。] hayabusa.taglib.QueryTag#execute(Query query) [カラム名のゼロ文字列と、"-" も除外する。] hayabusa.html.AbstractViewForm#setBooleanArray(String clsm,boolean def,boolean[] arrays) [ディレクトリ以外からファイルのみに対象を変更。] fukurou.process.FileLineModel#getLineCnt(File file,File ocFile) [ファイルの削除に失敗するため、削除しない。] fukurou.process.FileLineModel#setFileVals(int level,File file) [先頭に、'0 が含まれる場合は、カンマを削除] fukurou.model.TableModelHelper#value(String line,int rowNo,char sepa) fukurou.util.StringUtil#csvOutQuote(String str) [動的カラム(COLUMN)は、TEXT に置き換える。] hayabusa.html.AbstractViewForm#getSortedColumnLabel(int column) 6.2.0.1 (2015/03/06) [画面IDのキー] 画面IDのキーに、"GAMENID" と、"gamenId" の2種類が混在していた為、 "GAMENID" に統一します。 hayabusa.taglib.FileUDTag#doStartTag() hayabusa.taglib.FileUDTag#doEndTag() gf/jsp/common/fileDownload.jsp(25): gf/jsp/common/fileDownload.jsp(35): gf/jsp/common/fileDownload.jsp(38): fileURL = "{@SYS.REAL_PATH}report/{@gamenId}" gf/jsp/common/fileDownload.jsp(47): fileURL = "{@SYS.REAL_PATH}report/{@gamenId}" gf/jsp/common/fileDownload.jsp(79): gf/jsp/common/fileDownload.jsp(89): fileURL = "{@SYS.REAL_PATH}report/{@gamenId}/" gf/jsp/common/gamen/14_EDIT\result.jsp(18): gf/jsp/common/gamen/14_EDIT\result_REPORT.jsp(32): keys="REPNAME,MODELNAME,TYPE,D_MARK,gamenId,GAMENID" gf/jsp/common/gamen/14_EDIT\tab.jsp(19): [ASCII以外の文字の、URLエンコードを行う。] fukurou.util.StringUtil#urlEncode2(String value) hayabusa.html.ViewLink_LINK#getMarkerString(int row,int clm,String value) [EDITNAME利用時に、カラムの非表示が無ければ、書き込み許可する。] hayabusa.taglib.WriteCheckTag#isWrite() [TableFormatter#getLocation(int)の有効判定] plugin.view.ViewForm_HTMLCustomTable#getViewClms() plugin.view.ViewForm_HTMLCustomTreeBOM#getViewClms() plugin.view.ViewForm_HTMLFormatTable#getViewClms() plugin.view.ViewForm_HTMLStackedGanttTable#getViewClms() [hrefアドレスのASCII以外の文字の、URLエンコードを行う。] hayabusa.html.ViewLink_LINK#setDBTableModel(DBTableModel tbl) hayabusa.html.ViewLink_LINK#clear() hayabusa.taglib.LinkTag#makeTag() [互換性の関係で、nullかゼロ文字列の時は、そのまま、in を返す。] fukurou.util.StringUtil#numberFormat(String in,int minFraction) [非表示のマーカーに、Formatter#NO_DISPLAY を使用する。] hayabusa.html.AbstractViewForm#setFormatNoDisplay(TableFormatter format) hayabusa.html.TableFormatter#setNoDisplay(int no) hayabusa.html.TableFormatter#getSystemFormat(int row,int loc) [GFの曖昧入力対応] 検索条件の、clazz="aimai" を、aimai="V*" 等に変更します。 これに伴い、query の like 文の "%" を、削除します。 6.2.0.1_aimai.txt [帳票進捗表示] 帳票を画面から発行した場合、進捗が捉えにくくなっています。 また、PDFやEXCELの場合、作成されたファイルをダウンロードする必要があります。 gf/jsp/common/reportSelect.jsp 帳票振り分け条件のプルダウンメニューを作成します。 gf/jsp/common/reportView.jsp 発行処理後に、状況表示される画面です。 リソース追加 MSG0086 確認 5.8.5.0 (2015/03/06) を取り込みました。 [POPUP機能追加] ポップアップの戻り値をキャレット位置に追記する事ができるようにします。 popupタグの属性でappend="true"を指定してください。 この機能が正常に動作するのは、ポップアップの戻り値が1つの場合です。 それ以外の場合は入力欄の先頭に追加されます。 hayabusa.taglib.PopupTag#setAppend( final String flg ) hayabusa.taglib.PopupTag#makePopup( final boolean useKey ) hayabusa.taglib.PopupTag#release2() jsp/common/default.js hybs-taglib.tld [CACHE仮対応] CACHEはSQLが利用できるODBですので、実際にどの程度利用できるのかはともかく 処理が通るように、内部のリストに追加しておきます。 fukurou.db.DBFunctionName#getSequence( final String seqName, final Transaction tran ) fukurou.db.DBFunctionName#getDBName( final String dbName ) 5.8.4.2 (2015/02/28) を取り込みました。 [伝送修正] deubgの判定が間違っていたので修正します fukurou.transfer.TransferProcess# main( final String[] args ) [JavaDocのアドレス] ORACLEのJavaDoc API のアドレスが変更になっていました。 http://docs.oracle.com/javase/jp/8/api/ ↓ http://docs.oracle.com/javase/jp/8/docs/api/ gf/build.xml 6.2.0.0 (2015/02/27) [カラム幅 100% 指定 clazz="W100"] テキストフィールドで、size指定で、表示桁数を制限している場合、 画面上の入力可能領域(tableのtd範囲)より、テキストフィールドが小さくなる ケースがあり、入力文字数を十分確保できないケースがあります。 そこで table 以下の input[type="text"] を対象に、width:100%; 指定を 入れることで、入力枠を広げます。 なお、「input要素にwidth:100%;を指定すると、微妙に包含ブロックからはみ出す」 (http://memolog.org/2012/06/set_input_width_to_100_percent.html) という現象が発生する為、box-sizingをborder-boxに設定しておきます。 hayabusa.html.AbstractViewForm#getSortedColumnLabel(int column) jsp/common/default.css gf/src/script/common/default.css ※ 注意:table タグを使用せずに、input だけを用意すると、フレームや 画面の幅いっぱいに広がってしまいます。table要素に入れると、tableの 初期の幅に収まるので、その様なことになりません。 css の セレクタに、table の子孫の input[type="text"] を対象にします。 [メニュー関連] メニューで、一覧表作成時に、SLABEL の使用有無を指定する 引数を、 DATALIST、INDBMENU、INMENU にも適用します。 [システムリソース関係] 以下の初期値を変更しました。 ・USE_STRING_EXCEL_OUTPUT = "false" レンデラーを利用したExcel出力時の文字タイプ で、従来は、true(文字列固定)でしたが EXCEL出力時に、数値はそのまま使用したいという要望が多い為、false(DBTypeに従った出力) に変更します。 ・HTML_VIEW_COLUMNS_MAXSIZE = "30" VIEWタグのテキストフィールドを表示する最大桁数 を、"40" → "30" に変更します。 これは、デフォルトの桁数で、一覧入力時に、size="40" は、結構大きな値になります。 また、リソースの表示桁数が、カラムリソースで使えるレベルになってきたので、 表示桁数を、少し小さめにします。 hayabusa.common.SystemData#USE_STRING_EXCEL_OUTPUT hayabusa.common.SystemData#HTML_VIEW_COLUMNS_MAXSIZE [パッケージ変更] 以下のクラスを、fukurou.util → fukurou.model に変更します。 modelより io が近いかもしれませんが、Closer、URLConnect、FileUtil など より、IO に近いクラスを移動させると、外部からの利用に大きな影響が出てきそうなので、 今回のマイナーバージョンアップでは見送ります。 [小さなカラム] 小さなカラムのinputサイズを指定する為、以前は、clazz属性に、"S0" + 桁数(1〜5) を出力し、default.css にて、PXサイズ指定していましたが、厳密にサイズを 指定する必要がない為、だいぶ以前に廃止していました。 その名残がソースコードに残っていた為、削除します。 [overflowMsg 追加] readTableタグと、fileQueryタグに、overflowMsg を追加します。 大きなファイルの読み取りで、maxRowCount 制限はかかっているが、 オーバーフロー時のメッセージを表示していないケースがあったため、 メッセージを表示するように変更します。 hayabusa.taglib.ReadTableTag#release2() hayabusa.taglib.ReadTableTag#setOverflowMsg(String id) TLDファイルに追加します。 gf/src/META-INF/hybs-taglib.tld ReadTableTag, FileQueryTag,に、overflowMsg 追加 gf/WEB-INF/hybs-taglib.tld [addKeyLabel 属性対応] 6.0.4.0 (2014/11/28) で追加した、addKeyLabel 属性の実装を入れました。 これは、セレクトメニューの場合、キー:ラベル形式で表示するかどうかを指定する機能で、 true を指定すると、「強制的に」キー:ラベル形式で表示します。 null の場合、コードリソースや、SQL文に準拠した指定通りの形式で表示しますが、内部処理の 簡素化のため、基本的には、キーなしで、リソース作成しておき、必要に応じて、 キー情報を付与すればよいと思います。 hayabusa.db.SelectionFactory#newSelection(String type,CodeData codeData,String addKeyLabel) hayabusa.db.SelectionFactory#newDBSelection(String query,String dbid,String lang,String addKeyLabel) hayabusa.db.Selection_CODE#getValueLabel(String selectValue,boolean flag) plugin.column.Editor_DBMENU#Editor_DBMENU(DBColumn clm) plugin.column.Editor_DBMENU#getOption(TagBuffer buf,String value,boolean useSlbl) plugin.column.Editor_DBMENU#Editor_DBMENU() plugin.column.Editor_MENU#Editor_MENU(DBColumn clm,String type) plugin.column.Editor_RADIO#Editor_RADIO(DBColumn clm) plugin.column.Renderer_DBMENU#getSelectionValue(String value,boolean useSlbl) plugin.column.Renderer_DBMENU#Renderer_DBMENU() plugin.column.Renderer_DBMENU#Renderer_DBMENU(DBColumn clm) plugin.column.Renderer_MENU#Renderer_MENU(DBColumn clm,String type) plugin.column.Renderer_RADIO#Renderer_RADIO(DBColumn clm) [mustのhidden属性のid] must属性設定時に、hidden出力していますが、同一 name で、カラム名を送っているため、 同一 id がぶつかってしまいます。 XHTMLTag#hidden( String , String , String) の第3引数(=id)に、nullを指定した場合は、 id属性を出力しない様に変更します。 hayabusa.taglib.SelectTag#makeTag() [columnタグに aimai属性追加] 曖昧検索可能フィールドとして、あいまい検索方法を指定する属性、aimai属性を追加します。 * 従来は、clazz="aimai" として、点線の入力フィールドのみ作成していましたが、 * AimaiPicker をCallするようにして、検索方法を指定できるようにします。 * なお、AimaiPickerは、カラムの値に、選択した条件に応じた %を付与するため、 * result.jsp の like には、%を含めない様に記述してください。 * * @ class="aimai" の設定 (ほぼ、従来と同じ) * A AimaiPicker となる、preタグを出力(スペースを含む固定幅文字にするため) * B aimai属性で、前方一致、後方一致、前後曖昧、完全一致 選択が可能 * C aimai属性で選択した検索方法を、submit時にvalueに反映し、result.jsp に送信する。 * * aimai属性の指定方法を以下に示します。 *  "0" または "V" :完全一致 *  "1" または "V*" :前方一致 *  "2" または "*V" :後方一致 *  "3" または "*V*" :前後曖昧 TLDファイルに追加します。 gf/src/META-INF/hybs-taglib.tld ColumnTag に、aimai 追加 gf/WEB-INF/hybs-taglib.tld JavaScript および、CSS で処理しています。 gf/src/script/common/default.css likeComp( _tgtName )、aimaiPickerOg gf/src/script/common/eventScript.js .aimaiClm、.aimai-picker、 [コードリソースのパラメータの指定方法を変更します。] オプションは、データベースを検索して作成されますが、そのSQL文のカラム情報を 使用して オプションタグに各種属性を追加します。 hayabusa.db.Selection_CODE#Selection_CODE(CodeData cdData,String addKeyLabel) hayabusa.db.Selection_DB#Selection_DB(String newQuery,String dbid,String lang,String addKeyLabel) hayabusa.db.Selection_NULL#setCodeParam(StringBuilder buf,String paramKey) hayabusa.taglib.QueryOptionTag#makeLabel(OptionAncestorIF select) hayabusa.taglib.QueryOptionTag#setStyleUseNo(String no) hayabusa.taglib.QueryOptionTag#setDisabledUseNo(String no) [コードリソースのパラメータの指定方法を変更します] styleUseNo,disabledUseNo 属性追加 hayabusa.taglib.QueryOptionTag#release2() [コードリソースの逆引き処理の前に、Key:Val 分解を実行する。] hayabusa.io.AbstractTableReader#setTableColumnValues(String[] values) TLDファイルに追加します。 gf/src/META-INF/hybs-taglib.tld QueryOptionTag に、styleUseNo,disabledUseNo 属性を追加 gf/WEB-INF/hybs-taglib.tld [Description があれば、優先して title 属性に設定します。] hayabusa.db.Selection_DB#getValueLabel(String selectValue,boolean flag) [ERR0010 の引数が、変更されているので、修正します。] hayabusa.db.AbstractDBType#xssCheck(String key,String value,ErrorMessage msg) [EXCEL出力のparamLevel初期値変更 3:標準推奨 → 4:個人設定可] hayabusa.taglib.WriteTableTag#doEndTag() hayabusa.taglib.WriteTableTag#release2() [FileInfoクラスを使用] (#getFileSplit(File)の結果配列は廃止) fukurou.util.FileUtil#renameTo(File fromFile,File toFile,String useBackup) (FileUtil#getExtension(String) の廃止) hayabusa.servlet.UploadedFile#renameTo(String newName,String prefix,String sufix,String useBackup) [List → Set に変更して、TreeSet を使います。] fukurou.taglet.DocletVerCheck#writeContents(ClassDoc[] classes,DocletTagWriter writer,String version) [POIEvent → TableModelHelper に変更] fukurou.model.POIUtil#wordReader(File file,TableModelHelper helper) fukurou.model.POIUtil#wordReader1(File file,TableModelHelper helper) fukurou.model.POIUtil#wordReader2(File file,TableModelHelper helper) fukurou.model.POIUtil#pptReader(File file,TableModelHelper helper) fukurou.model.POIUtil#pptReader1(File file,TableModelHelper helper) fukurou.model.POIUtil#pptReader2(File file,TableModelHelper helper) [Popup(isRenderer=false のviewMarker)のBuikSet Off化対応] hayabusa.html.AbstractViewForm#setColumnBulkSet(String columnName) [PopupのBuikSet Off化にも使うので、HTMLSeqClmTable の条件は外す。] hayabusa.taglib.ViewFormTag#doStartTag() [SLABEL 対応] plugin.column.Editor_DATALIST#Editor_DATALIST() plugin.column.Editor_DATALIST#Editor_DATALIST(DBColumn clm) plugin.column.Editor_DATALIST#getValue(String value) plugin.column.Editor_DATALIST#getValue(int row,String value) plugin.column.Editor_DATALIST#getOption(TagBuffer buf,String value,boolean useSelCache,boolean useSlbl) plugin.column.Editor_INDBMENU#Editor_INDBMENU(DBColumn clm) plugin.column.Editor_INDBMENU#getValue(String value) plugin.column.Editor_INDBMENU#getValue(int row,String value) plugin.column.Editor_INDBMENU#getOption(TagBuffer buf,String value,boolean useSlbl) plugin.column.Editor_INDBMENU#Editor_INDBMENU() plugin.column.Editor_INMENU#getValue(String value) plugin.column.Editor_INMENU#getValue(int row,String value) plugin.column.Editor_INMENU#Editor_INMENU() plugin.column.Editor_INMENU#Editor_INMENU(DBColumn clm) [StringUtil#spanCut(String) を入れます。] hayabusa.db.AbstractRenderer#getWriteValue(String value) [TableReader クラスの呼び出し元メソッドの共通化(EXCEL,TEXT)] hayabusa.io.AbstractTableReader#setSheetName(String sheetName) hayabusa.io.AbstractTableReader#setSheetNos(String sheetNos) hayabusa.io.AbstractTableReader#setNullBreakClm(String clm) hayabusa.taglib.ReadTableTag#doEndTag() plugin.io.TableReader_Default#readDBTable(File file,String enc) [TableReader クラスの呼び出し元メソッドの共通化(EXCEL,TEXT) // * @param out 出力するBufferedReaderオブジェクト] hayabusa.taglib.ReadTableTag#create(File file) [TableReader クラスの呼び出し元メソッドの共通化(EXCEL,TEXT)] 新規 hayabusa.io.AbstractTableReader#readDBTable(File filename,String enc) hayabusa.io.TableReader#readDBTable(File filename,String enc) plugin.io.TableReader_Calc#readDBTable(File file,String enc) plugin.io.TableReader_Excel#readDBTable(File file,String enc) plugin.io.TableReader_Text#readDBTable(File file,String enc) [TagBuffer を使用するように変更。] fukurou.util.XHTMLTag#img(Attributes attri) fukurou.util.XHTMLTag#form(Attributes attri) fukurou.util.XHTMLTag#span(Attributes attri) fukurou.util.XHTMLTag#pre(Attributes attri) fukurou.util.XHTMLTag#button(Attributes attri) fukurou.util.XHTMLTag#input(Attributes attri,String name,String value,String optAttri) fukurou.util.XHTMLTag#hidden(String name,String value,String id) fukurou.util.XHTMLTag#textarea(Attributes attri) fukurou.util.XHTMLTag#link(Attributes attri,String urlEncode) fukurou.util.XHTMLTag#xlink(Attributes attri,String urlEncode) fukurou.util.XHTMLTag#select(Attributes attri,Options opt,String name,String optAttri) fukurou.util.XHTMLTag#option(Attributes attri) fukurou.util.XHTMLTag#frame(Attributes attri,String urlEncode) [aimai 属性を追加。] hayabusa.taglib.TextareaTag#makeTag() [description 概要説明 追加] hayabusa.resource.CodeData#CodeData(String clm,Map data) hayabusa.resource.CodeData#getDescription(int seqNo) hayabusa.resource.CodeData#subsetList(String codeCsv) hayabusa.resource.CodeData#subsetGroup(String group) hayabusa.resource.CodeData#subsetRole(RoleMode userRole) [encodeを取得する為だけに用意] plugin.io.TableReader_Fixed#readDBTable(File file,String enc) [fieldSize 属性の追加] hayabusa.db.DBColumnConfig#getFieldSize() hayabusa.db.DBColumnConfig#setFieldSize(String fieldSize) [getText → extractor に変更] fukurou.model.POIUtil#extractor(File fname) [java.nio.file.Files と、Paths を使用するように変更] fukurou.util.FileUtil#getBufferedReader(File file,String encode) [new BufferedReader … を、FileUtil.getBufferedReader … に変更。] hayabusa.filter.AccessStopFilter#doFilter(ServletRequest request,ServletResponse response,FilterChain chain) hayabusa.filter.URLCheckFilter#doFilter(ServletRequest request,ServletResponse response,FilterChain chain) [onClick パラメータを設定できるようにし、後ろに、popupを追記します。] hayabusa.taglib.PopupTag#makePopup(boolean useKey) [rowspan 属性を追加] hayabusa.taglib.ColumnTag#release2() hayabusa.taglib.ColumnTag#makeTag() hayabusa.taglib.ColumnTag#setRowspan(String sp) hayabusa.taglib.InputTag#release2() hayabusa.taglib.InputTag#makeTag() hayabusa.taglib.InputTag#setRowspan(String sp) hayabusa.taglib.SelectTag#release2() hayabusa.taglib.SelectTag#setRowspan(String sp) hayabusa.taglib.SpaceTag#makeTag() hayabusa.taglib.SpaceTag#setRowspan(String sp) hayabusa.taglib.SpaceTag#release2() [staticメソッドをインスタンスメソッドに変更] fukurou.model.EventReader_XLS#main(String[] args) fukurou.model.EventReader_XLS#eventReader(File file,TableModelHelper helper) fukurou.model.EventReader_XLSX#eventReader(File file,TableModelHelper helper) fukurou.model.EventReader_XLSX#main(String[] args) fukurou.model.POIUtil#excelReader(File file,TableModelHelper helper) [try 〜 finally 構文] fukurou.xml.XMLFileLoader#loadXML(InputStream stream,String table,String file) [viewSize 属性の追加] hayabusa.taglib.ColumnEditorTag#release2() hayabusa.taglib.ColumnEditorTag#getModifyConfig(DBColumn dbColumn) hayabusa.taglib.ColumnEditorTag#setViewSize(String len) hayabusa.taglib.ColumnTag#getInsertTag(DBColumn clm,String value) hayabusa.taglib.ColumnTag#setViewSize(String len) [そのまま数値化できるように、数値部のみを返します。] plugin.column.Renderer_MONEY#getWriteValue(String value) [オーバーフロー時に起動する RuntimeException] fukurou.model.HybsOverflowException#HybsOverflowException() fukurou.model.HybsOverflowException#HybsOverflowException(int rowCnt) fukurou.model.HybsOverflowException#HybsOverflowException(String str) [グラフの重ね合わせ時に、縦軸表示が崩れる対応(暫定)] hayabusa.io.ChartDataset#makeNumberAxis() hayabusa.io.ChartPlot_Category#getPlot(ChartCreate create) [デバッグ情報の出力するかどうか] 新規追加 fukurou.model.TableModelHelper#setDebug(boolean useDebug) fukurou.model.TableModelHelper#isDebug() [データ出力の先頭カンマの判定処理変更] hayabusa.taglib.DirectWriteTableTag#create(PrintWriter out) [ファイル引数を、String → File に変更] fukurou.model.ExcelModel#ExcelModel(File file) fukurou.model.ExcelModel#ExcelModel(File file,boolean isOpen) fukurou.model.ExcelModel#saveFile(File file) fukurou.model.POIUtil#createWorkbook(File file) plugin.io.TableWriter_Excel#writeDBTable() [フィールドサイズ 追加(VIEW_LENGTHと分離して、役割を明確にする)] hayabusa.db.DBColumn#getConfig() hayabusa.db.DBColumn#getFieldSize() hayabusa.db.DBColumn#getFieldSize(int maxlength) hayabusa.db.DBColumnConfig#DBColumnConfig(String name) hayabusa.db.DBColumnConfig#DBColumnConfig(String lang,String name,LabelData labelData,String className,String fieldSize,String viewLength,String maxlength,String writable,String renderer,String editor,CodeData codeData,String dbType,String dataDef,String rendererPrm,String editorPrm,String dbTypePrm,String roles,boolean official,String dbid) hayabusa.db.DBTableModelUtil#makeDBColumn(String name,int column,ResultSetValue rsv,ResourceManager resource) hayabusa.resource.ColumnData#ColumnData(String[] data) hayabusa.resource.ColumnData#getFieldSize() hayabusa.resource.ColumnData#getColumnData() plugin.column.Renderer_AUTOAREA#Renderer_AUTOAREA(DBColumn clm) plugin.column.Renderer_TEXTAREA#Renderer_TEXTAREA(DBColumn clm) [フォーマット系の noDisplay 対応] hayabusa.html.AbstractViewForm#setFormatNoDisplay(TableFormatter format) hayabusa.html.TableFormatter#setNoLocation(int no) plugin.view.ViewForm_CustomData#getTableFoot() plugin.view.ViewForm_CustomData#create(int startNo,int pageSize) plugin.view.ViewForm_HTMLCustomTable#getTableFoot() plugin.view.ViewForm_HTMLCustomTable#create(int startNo,int pageSize) plugin.view.ViewForm_HTMLCustomTreeBOM#create(int stNo,int pgSize) plugin.view.ViewForm_HTMLFormatTable#create(int startNo,int pageSize) plugin.view.ViewForm_HTMLGanttTable#create(int stNo,int pgSize) plugin.view.ViewForm_HTMLGanttTable#getTableHead() plugin.view.ViewForm_HTMLGanttTable#getTableFoot() plugin.view.ViewForm_HTMLStackedGanttTable#create(int sttNo,int pgSize) plugin.view.ViewForm_HTMLStackedGanttTable#getTableFoot() ロジックを共通にするため、処理を移動 plugin.view.ViewForm_HTMLFormatTable#setFormatterList(List list) plugin.view.ViewForm_HTMLFormatTextField#setFormatterList(List list) [マイナス金額を、"-" ではなく、"▲" にします。] plugin.column.Renderer_MONEY#getValue(String value,boolean isView) [リクエスト変数を使用できるように修正。] hayabusa.taglib.ReadTableTag#setDisplayMsg(String id) [初期値設定方法変更] hayabusa.taglib.SpaceTag#setWidth(String wd) hayabusa.taglib.SpaceTag#setColspan(String sp) hayabusa.taglib.SpaceTag#setLabelWidth(String width) hayabusa.taglib.SpaceTag#setValueWidth(String width) [小さなカラムのサイズ指定は、すでに廃止 ("S0" + 桁数(1〜5))] hayabusa.db.AbstractEditor#AbstractEditor(DBColumn clm) hayabusa.taglib.ColumnTag#setMaxlength(String maxlen) hayabusa.taglib.InputTag#setMaxlength(String maxlength) [小数点指定の精度に合わせるのと、内部ロジック完全置換] fukurou.util.StringUtil#numberFormat(String in,int minFraction) [引数からタグを削除し、BODY文字列を切り出します。] fukurou.util.StringUtil#tagCut(String data) plugin.column.Renderer_NOTAG#newInstance(DBColumn clm) plugin.column.Renderer_NOTAG#getWriteValue(String value) [新規作成] fukurou.model.EventReader#eventReader(File file,TableModelHelper helper) fukurou.model.EventReader_TEXT#eventReader(File file,TableModelHelper helper) fukurou.model.TableModelHelper#value(String line,int rowNo,char sepa) fukurou.model.TableModelHelper#startFile(File file) fukurou.util.FileInfo#getValue(String key) fukurou.util.FileInfo#FileInfo(File file) [新規追加] fukurou.model.TableModelHelper#setMaxRowCount(int count) fukurou.model.TableModelHelper#setNullBreakClm(String clm) fukurou.model.TableModelHelper#isOverflow() [日付型の処理(DATE=0,DATETIME=1,TIME=2)] fukurou.model.ExcelStyleFormat#addExtFmtRec(ExtendedFormatRecord extFmtRec) fukurou.model.ExcelStyleFormat#addFmtRec(FormatRecord fmtRec) fukurou.model.ExcelStyleFormat#getNumberValue(String cellStyleStr,String val) fukurou.model.ExcelStyleFormat#getNumberValue(NumberRecord numrec) fukurou.model.ExcelStyleFormat#getNumberValue(String fmtStr,double val) fukurou.model.ExcelStyleFormat#isDateFormat(String fmt) fukurou.model.ExcelStyleFormat#dateFormat(double val) fukurou.model.ExcelStyleFormat#ExcelStyleFormat() fukurou.model.ExcelStyleFormat#ExcelStyleFormat(StylesTable styles) [1文字 String.startsWith の String.charAt(0) 変換] fukurou.util.StringUtil#startsChar(String data,char ch) 5.8.3.2 (2015/01/30) を取り込みました。 [伝送修正] batファイルからの伝送起動時にdebugを指定できるようにします。 -debug=trueを指定してください。 fukurou.transfer.TransferProcess#main( final String[] args ) 6.1.2.0 (2015/01/24) [リソース画面] 画面リソースで、分類を、大分類、小分類の順に変更。選択される分類を ラベルだけの表示に変更。(キー:ラベルだったが、キーに意味がないので、ラベルのみに変更) コードリソース、ラベルソース、システム定数で、曖昧検索欄に、clazz属性を付与。 システム定数で、query.jsp のラカムの配置変更。requls.jsp で、一覧形式に変更 ge/jsp/GE0002/query.jsp ge/jsp/GE0004/query.jsp ge/jsp/GE0004/result.jsp ge/jsp/GE0005/query.jsp ge/jsp/GE0007/query.jsp ge/jsp/GE0007/result.jsp TITLE が where条件から漏れていた。 ge/jsp/GE0008/query.jsp ge/jsp/GE0008/result.jsp ge/jsp/GE0009/query.jsp ge/jsp/GE0013/query.jsp ge/jsp/GE0016/query.jsp ge/jsp/GE0016/result.jsp ge/jsp/GE0017/query.jsp ge/jsp/GE0017/result.jsp ge/jsp/GE0018/query.jsp ge/jsp/GE0019/query.jsp ge/jsp/GE0020/query.jsp [画面廃止] gf/jsp/GFX007 を廃止します。 これに伴い、COLUMN_TYPE リソースを削除します。 これは、DBTYPE の置き換え前のリソースなので、もし、利用していれば、 DBTYPE に変更してください。 jsp/common/gamen/02_TADMIN これは、統合サーバー向けメニューですが、基本的には個々にメンテする 必要がある為、実際は使われていません。 jsp/common/gamen/06_INSTALL 名称を、システムインストール から、ファイル取込 に変更します。 機能的には、XMLファイルだけではなく、テキスト、EXCEL取込みに対応します。 [リソース修正] GE系ラベルリソースを修正しています。 [HTML5 で colgroup が効かない対応] plugin.view.ViewForm_HTMLSeqClmTable#getTableHead() [キャッシュを返すのを、#getHeadLine() に移動。] plugin.view.ViewForm_HTMLTimeTable#getHeadLine(String thTag) plugin.view.ViewForm_HTMLTable#getHeadLine() plugin.view.ViewForm_HTMLTable#getHeadLine(String thTag) plugin.view.ViewForm_HTMLStackedGanttTable#getHeadLine() plugin.view.ViewForm_HTMLStackedGanttTable#getHeadLine(String thTag) plugin.view.ViewForm_HTMLSeqClmTable#getHeadLine(String thTag) plugin.view.ViewForm_HTMLGanttTable#getHeadLine() plugin.view.ViewForm_HTMLGanttTable#getHeadLine(String thTag) plugin.view.ViewForm_HTMLFormatTable#getHeadLine() plugin.view.ViewForm_HTMLFormatTable#getHeadLine(String thTag) plugin.view.ViewForm_HTMLCustomTable#getHeadLine() plugin.view.ViewForm_HTMLCustomTable#getHeadLine(String thTag) [他のクラスでも使用する為、protected化します。] plugin.view.ViewForm_HTMLTable#makeNthChild(StringBuilder buf,int ad,String dbType) 5.8.3.1 (2015/01/23) を取り込みました。 GF2140のスクリプト出力画面で、SYS.DBOUTPUT_PATHを利用した出力ディレクトリ変更を行えるようにします。 通常は利用しませんが、GFやGEのフォルダに対してアクセス制限をかけている場合等で変更したい場合に利用します。 gf/jsp/GF2140/result.jsp 6.1.1.0 (2015/01/17) [BulkSet対応バグ修正] 6.1.0.0 (2014/12/26) 臨時追加 の対応で、getElementsByName() の戻り値で複数存在した場合を ループ処理しましたが、プルダウンメニューの場合も、複数存在しますが、値の設定は、 従来と同じ方法でないと、設定できませんでした。 そこで、BulkSet のキーは、"h_" で始まり、getElementsByName() の戻り値は複数存在するという 条件を追加しました。 jsp/common/default.js gf/src/script/common/default.js [#setBody(String) の代替えメソッドとして、新規追加] fukurou.util.TagBuffer#addBody(String body) [Bulkset関係( ViewLength を使用、左寄せ、SLABEL設定 )] hayabusa.html.AbstractViewForm#getSortedColumnLabel(int column) [getRendererValue の代わりに、getWriteValue を使うように変更。] hayabusa.report.AbstractDBTableReport#getValue(String key) hayabusa.report.AbstractDBTableReport#setHeaderFooter() [localReq変数を使う事で、RequestParameter処理を制御します。] hayabusa.taglib.SqlAndTag#doStartTag() hayabusa.taglib.SqlAndTag#doAfterBody() hayabusa.taglib.SqlAndTag#release2() hayabusa.taglib.SqlAndTag#getRequestValue(String key) hayabusa.taglib.SqlAndTag#makeInstrVals(String instrVals,String instrType,String value) hayabusa.taglib.SqlAndTag#setStartKey(String skey) hayabusa.taglib.SqlAndTag#setMulti(String flag) [コメント修正。separatorは、正規表現が使用できます。] hayabusa.taglib.SqlAndTag#setSeparator(String sepa) [タグリブの param 属性取得(パラメータ、ラベル、解説、コード)] fukurou.taglet.DocletTaglib#writeContents(ClassDoc[] classes,DocletTagWriter writer) fukurou.taglet.DocletTaglib#methodLabelCode(MethodDoc method) [パッケージを import するのと、ロジック見直し。] hayabusa.servlet.HybsAdmin#getAccessStop() [内部構造を見直します。] hayabusa.taglib.EditConfigTag#makeCheckbox(String clm,boolean checked,String bgCnt,String prefix,boolean readonly) hayabusa.taglib.EditConfigTag#makeCheckbox(String clm,boolean checked,String bgCnt,String prefix,boolean readonly,boolean isChbox) hayabusa.taglib.EditConfigTag#makeCell(String body,String bgCnt) [初期値指定のコーディングミス修正] hayabusa.taglib.SqlAndTag#setInstrType(String tp) [可変長配列にメソッドを統合。] hayabusa.html.CreateToken#generateURL(String inURL,long time,String user,String[] param) hayabusa.html.CreateToken#embedToken(String tag,long time,String user,String[] param) hayabusa.html.AbstractCreateToken#generateURL(String inURL,long time,String user,String[] param) hayabusa.html.AbstractCreateToken#embedToken(String tag,long time,String user,String[] param) plugin.token.CreateToken_URLCheck#generateURL(String inURL,long time,String user,String[] param) [引数が、null や空文字列の場合は、処理しません。] hayabusa.taglib.SqlAndTag#makeCSVvalue(String[] array) [引数配列を可変引数にして、execute() を含めて定義します。] hayabusa.db.Query#execute(String[] args) hayabusa.db.AbstractQuery#execute(String[] args) plugin.query.Query_JDBC#execute(String[] args) [戻り値に、自分自身を返すようにします。] fukurou.util.TagBuffer#addBody(String body,boolean flag) fukurou.util.TagBuffer#add(String str) fukurou.util.TagBuffer#add(String key,String val) fukurou.util.TagBuffer#add(String key,String val,boolean flag) fukurou.util.Attributes#set(String key,String value) fukurou.util.Attributes#set(String key,String value,String def) fukurou.util.Attributes#set(Attributes att) fukurou.util.Attributes#add(String key,String value) fukurou.util.Attributes#add(String key,String value,String sepa) fukurou.util.Attributes#addAttributes(Attributes att) [総合計を最初の行に追加するかどうか(FirstTotal)の属性を追加] hayabusa.db.DBEditConfig#DBEditConfig(String editName,String viewClms,・・・・ hayabusa.db.DBEditConfig#useFirstTotal() hayabusa.taglib.EditConfigTag#makeEditTable(String viewClms) hayabusa.taglib.EditConfigTag#saveEditConfig() [リファクタリング] 6.1.1.0_refactoring.txt 5.8.3.0 (2015/01/09) を取り込みました。 [URLConnectの属性セット対応] URLConnectでヘッダ等指定のためにsetRequestPropertyの値を指定できるようにします。 例えばJSON形式でPOSTする場合は通常"Content-Type", "application/json"を指定します。 5.8.2.3 (2014/12/27) を取り込みました。 [USEREDIT.xxx追加] {@xxx.yyy}で取得できる値に、{@USEREDIT.guikey}を追加しておきます。 指定の画面IDよりユーザの利用している標準Edit名を取得します。 6.1.0.0 (2014/12/26) 臨時追加 [default.js#ogPopup] ヘッダー固定のBulkSet対応 として、getElementsByName() の戻り値で複数存在した場合に tmp instanceof HTMLCollection 判定していましたが、どうもうまく取れず、 エラーになるケースが存在しました。 そこで、Object.prototype.toString.call(v) === "[object HTMLCollection]" も試しましたが、 根本的に、HTMLCollection になるケースだけではなさそうでした。 そこで、if( tmp.length ) で、undefined でなければ、ループ処理させるように変更しました。 src/script/common/default.js#ogPopup( p_pgid,p_height,p_width,p_in_Array,p_this,p_out_Array,command,event ) 6.1.0.0 (2014/12/26) [Excel読み取り] Excelの読み取り方法を、イベント方式に変更します。 これは、xlsx形式のEXCELを、ss.usermodel.Workbook オブジェクトで 処理すると、大きなファイルの場合、Out Of Memory Error が発生します。 gf/jsp/GF6250 [ポップアップ修正] ogPopup で、6.0.2.5 (2014/10/31) で修正した「height,width で、"px" がなければ追加」 処理で、数字型と文字列型を判定して処理しないと、いけないことが判明しましたので、 修正します。 JavaScript では、parseInt( '200px',10 ) を、200 という 数値に変換してくれますので、 これに、"px" を 「+」すれば、px が元々付いていてもなくても、数字でも文字列でも 処理することが可能になります。 # 便利だけど、あいまいなので、JavaScriptは、嫌いです。 gf\src\script\common\default.js#ogPopup [ExcelReaderEvent を使用] fukurou.util.ExcelReaderEvent#setSheetConstData(String constKeys,String constAdrs) fukurou.util.ExcelReaderEvent#isNameSet() fukurou.util.ExcelReaderEvent#sheetSize(int size) fukurou.util.ExcelReaderEvent#setNames(String clms,boolean useNumber) fukurou.util.ExcelReaderEvent#setSkipRowCount(int count) fukurou.util.ExcelReader_XSSF#excelReader(String fname,ExcelReaderEvent event) fukurou.model.ExcelModel#saveFile(String filename) fukurou.model.ExcelModel#ExcelModel(String fname,boolean isOpen) plugin.io.TableReader_Excel#readDBTable() plugin.io.TableWriter_Excel#writeDBTable() [シートブレイク処理追加] fukurou.util.ExcelReaderEvent#endSheet(int shtNo) fukurou.util.ExcelReaderEvent#isSkip(int rowNo) fukurou.util.ExcelReaderEvent#setSheetBreak(boolean flag) [ファイル読み取り/書き込み関係] ファイルの読み取り/書き込みに関して、omitNames 属性を追加します。 これは、ファイルの #NAME または、columns で指定するカラム名に対して、 omitNames は、読み込まない、または、書き込まない処理を行います。 指定されていない 名前を与えても、問題ありませ。(無視されるだけです。) hayabusa.io.TableWriter#setOmitNames(String clms) hayabusa.io.TableReader#setOmitNames(String clms) hayabusa.io.AbstractTableWriter#createDBColumn() hayabusa.io.AbstractTableWriter#setOmitNames(String clms) hayabusa.io.AbstractTableReader#setTableDBColumn(String[] names) hayabusa.io.AbstractTableReader#setOmitNames(String clms) hayabusa.taglib.WriteTableTag#release2() hayabusa.taglib.WriteTableTag#setOmitNames(String clms) hayabusa.taglib.ReadTableTag#release2() hayabusa.taglib.ReadTableTag#setOmitNames(String clms) plugin.io.TableReader_Default#readDBTable(BufferedReader reader) plugin.io.TableReader_Calc#makeHeaderFromClms() jsp/common の対応 引数から、ファイルアップロードからreadTable取込みにおいて、 columns属性と、omitNames属性をパラメータで渡せるように修正します。 gf/jsp/common/filePopup.jsp gf/jsp/common/upload.jsp gf/jsp/GF2050 TLDファイルに追加します。 gf/src/META-INF/hybs-taglib.tld ReadTableTag, WriteTableTag,に、omitNames 追加 gf/WEB-INF/hybs-taglib.tld [TableReader_JExcel 廃止] TableReader_JExcel を廃止します。 org.opengion.plugin.io.TableReader_JExcel.java 同時に、jxl-2.6.12.jar を、標準エクステンションから削除します。 C:\opengionV6\apps\jdk180u25\jre\lib\ext\jxl-2.6.12.jar JSP画面のプルダウン候補から除外します。 gf/jsp/GF6250\query.jsp (EXCEL入力) gf/jsp/GF6370\query.jsp (ファイル編集) [BulkSetのポップアップ] BulkSetに、カレンダ選択などのポップアップを使用すると、設定されない 現象を対応しました。 これは、ヘッダー固定すると、設定すべきカラムが、複数存在してしまうためで、 同一名のカラムがあれば、どちらも同じ値を設定するように変更します。 src/script/common/default.js#ogPopup( p_pgid,p_height,p_width,p_in_Array,p_this,p_out_Array,command,event ) [帳票結果の確認画面] 帳票の結果を確認できる画面を作成します。 検索込みで使えるのは、gamen/10_REP に用意します。 それと別に、単独で、使用できる JSP を用意します。 これは、include して使用できるようにします。 gf/jsp/common/gamen/10_REPORT [定数(固定値)専用クラス] 定数(固定値)専用クラスとして、fukurou.util.HybsConst を新規作成します。 これは、HybsSystem.CR などの定数を置き換えます。 Abstract 系のクラスや、taglib/CommonTagSupport などの類似のサブクラスを 大量に持つ根本のクラスには、内部的に、protected で、再定義しています。 それ以外は、static import で、個別に対応しています。 # 定数を継承させるとサブクラス内に汚染されるためよろしくないのですが、 # 定数専用クラスやインターフェースを継承するのではなく、必要な Abstract # クラスに定義しているので、今回は大目に見ましょう。 fukurou.util.HybsConst.java [Column 側に移動。の処理忘れ] hayabusa.db.Selection_DB#Selection_DB(String newQuery,String dbid,String lang) [TABLESPACE_NAME,INITIAL_EXTENT が未設定の場合、設定しません。] plugin.table.TableFilter_TABLE#makeEndLine(int[] clmNo,String[] data) plugin.table.TableFilter_INDEX#makeEndLine(int[] clmNo,String[] data) [dbProductName は、DBUtil 経由ではなく、直接取得する。] fukurou.xml.HybsXMLSave#useParameterMetaData(Connection conn) [findBugs] null ではなく長さが0の配列を返す。 hayabusa.db.DBEditConfigManager#getEditConfigs(String guikey) [refactoring の一環] fukurou.util.HybsLoader#toString() [デバッグ情報を出力するかどうかを指定] hayabusa.io.TableWriter#setDebug(boolean useDebug) hayabusa.io.AbstractTableWriter#setDebug(boolean useDebug) hayabusa.io.AbstractTableWriter#isDebug() hayabusa.taglib.WriteTableTag#create(PrintWriter out) [メールアドレスのリスト件数を見てから、処理の実行を決めます。] hayabusa.mail.DefaultMailManager#getUserIds(List addressList) [引数を、ServletRequest から、HttpServletRequest に変更。] hayabusa.filter.FileFilter#makeFileName(HttpServletRequest request) 5.8.2.2 (2014/12/19) を取り込みました。 [インストール用SQLのXML出力修正] plugin.table.TableFilter_SBSRC_OUT#execute() plugin.table.TableFilter_SBSRC_OUT#makeHeadLine( final int[] clmNo,final String[] data ) 5.8.2.1 (2014/12/13) を取り込みました。 [外部のURLトークン付与機能] Linkタグでプラグインを利用したURLトークン付与機能を追加します。 5.8.2.0 (2014/12/05) を取り込みました。 [メールモジュール画面変更] GE30のUNIQとGE36のPARA_KEYの型の違いで結合時にパフォーマンスの劣化が発生する事があるため、 MAIL07画面上での副問い合わせをやめます。 [EDIT機能] V6で行っている、Edit機能設定後にカラムが追加された場合の対応をメソッドレベルで一部のみ取り込んでおきます 5.8.1.2 (2014/11/21) を取り込みました。 [GE50インデックス変更] 最新のOracleでの検索速度低下に対応するため、GE50_SBインデックスにSYSTEM_IDを追加します。 [伝送の機能追加] ファイル書き出しタイプの処理で、前方30Byte,後方70Byteをスペース埋めとしていましたが互換性の問題で、 実行対象にスペース区切りで状況コード(1byte)、データコード(1byte)、送信先(2byte)、 テキスト種別(4byte) 送信元(2Byte)を指定可能とします。未指定の場合は今まで通りです。 [リファクタリング] 6.1.0.0_refactoring.txt 6.0.4.0 (2014/11/28) [プルダウンのキー選択] プルダウンのキー入力選択は、IE8以降ブラウザ標準になったため、 hayabusa.common.SystemData の USE_MULTI_KEY_SELECT は "false" が 初期値になっています。 これは、プルダウンの表示されている(ラベル)をキー入力で選択しますが、 値では選べません。コードリソースなどで、カラムが長くなる場合は、 値は表示していないため、キー入力で選択できない状況です。 そこで、あまり使われていない、キー選択のJavaScript に ラベルでも値でもキー入力選択できるように、修正します。 jsp/gf/src/script/common/default.js#setKeySelect(oMySelect) [EDIT機能] 6.0.2.1 (2014/09/26) で対応した、EDIT機能で、queryタグが複数ある場合の mainTrans=false 属性の設定チェックで、条件がもう少し複雑でした。 現状では、小計以外エラーになってしまいます。 hayabusa.db.DBTableModelEditor#create( final ResultSet result, final int skipRowCount, final int maxRowCount, final ResourceManager resource, final DBEditConfig config ) throws SQLException { [DirectWriteTableTag] 6.0.3.0 (2014/11/13) で、実装した、DirectWriteTableTag の変更です。 @displayMsg を、"MSG0033"[ 件検索しました] に変更しましたが、元の SystemData#VIEW_DISPLAY_MSG に戻します。 AZip処理を、ZipOutputStream → ZipArchiveOutputStream に変更 BWriteTableTag もZip処理を見直します。 hayabusa.taglib.WriteTableTag#doStartTag() hayabusa.taglib.WriteTableTag#setZipFilename(String zipFile) hayabusa.taglib.WriteTableTag#doEndTag() hayabusa.taglib.WriteTableTag#release2() hayabusa.taglib.DirectWriteTableTag#doEndTag() hayabusa.taglib.DirectWriteTableTag#create(PrintWriter out) [addKeyLabel 属性を追加] hayabusa.taglib.SelectTag#release2() hayabusa.taglib.ColumnTag#release2() hayabusa.taglib.ColumnTag#getInsertTag(DBColumn clm,String value) hayabusa.taglib.ColumnEditorTag#release2() hayabusa.taglib.ColumnEditorTag#getModifyConfig(DBColumn dbColumn) fukurou.util.XHTMLTag#option(Attributes attri,String addKeyLabel) hayabusa.db.DBColumnConfig#setAddKeyLabel(String addKeyLbl) hayabusa.db.DBColumnConfig#getAddKeyLabel() hayabusa.db.DBColumn#getAddKeyLabel() hayabusa.taglib.SelectTag#setAddKeyLabel(String flag) hayabusa.taglib.SelectTag#getAddKeyLabel() hayabusa.taglib.OptionAncestorIF#getAddKeyLabel() hayabusa.taglib.DatalistTag#getAddKeyLabel() hayabusa.taglib.ColumnTag#setAddKeyLabel(String flag) hayabusa.taglib.ColumnEditorTag#setAddKeyLabel(String flag) hayabusa.taglib.QueryOptionTag#makeLabel(OptionAncestorIF select) hayabusa.taglib.OptionTag#makeTag() TLDファイルに追加します。 gf/src/META-INF/hybs-taglib.tld SelectTag, ColumnTag,に、addKeyLabel 追加 gf/WEB-INF/hybs-taglib.tld [#NAME 処理] 従来から、WriteTable系の出力は、区切り文字に関係なく、 タブ区切りで出力していました。これは、#NAME 行を見つけやすくするという 意味合いから、来ていました。 実際は、CSV形式の場合は、#NAME も、指定の区切り文字(CSVなのでカンマ)で 出力すれば、EXCEL等で見る時に、きちんとセルに区切られます。 そこで、出力系は、#NAME 以下、ヘッダー部の区切り文字に、指定のセパレータを 使用して、読込系は、過去の互換性を考慮し、指定のセパレータが、#NAME 列に なければ、タブで読み直すように変更します。 plugin.io.TableReader_Default#readDBTable(BufferedReader reader) fukurou.process.Process_TableReader#readName(BufferedReader reader) fukurou.process.Process_TableDiff#readName(BufferedReader reader) hayabusa.taglib.DirectTableInsertTag#readName(BufferedReader reader) fukurou.process.Process_TableWriter#writeName(LineModel data) [データ出力用のレンデラー] plugin.column.Renderer_COLUMN#getValue(String value) plugin.column.Renderer_PN2#getValue(String value) hayabusa.db.DBColumn#getWriteValue(String value) hayabusa.db.CellRenderer#getWriteValue(String value) hayabusa.db.AbstractRenderer#getWriteValue(String value) plugin.column.Renderer_YMDH#getWriteValue(String value) plugin.column.Renderer_YMD31#getWriteValue(String value) plugin.column.Renderer_YMD#getWriteValue(String value) plugin.column.Renderer_YM#getWriteValue(String value) plugin.column.Renderer_TMSTMP#getWriteValue(String value) plugin.column.Renderer_TEXTAREA#getWriteValue(String value) plugin.column.Renderer_SLABEL#getWriteValue(String value) plugin.column.Renderer_RADIO#getWriteValue(String value) plugin.column.Renderer_PRE#getWriteValue(String value) plugin.column.Renderer_PN2#getWriteValue(String value) plugin.column.Renderer_PASSWD#getWriteValue(String value) plugin.column.Renderer_NUMBER#getWriteValue(String value) plugin.column.Renderer_NBSP#getWriteValue(String value) plugin.column.Renderer_MULTIQUERY#getWriteValue(String value) plugin.column.Renderer_MONEY#getWriteValue(String value) plugin.column.Renderer_MD#getWriteValue(String value) plugin.column.Renderer_ICON#getWriteValue(String value) plugin.column.Renderer_HTMLPRE#getWriteValue(String value) plugin.column.Renderer_HMS#getWriteValue(String value) plugin.column.Renderer_HM#getWriteValue(String value) plugin.column.Renderer_HHM#getWriteValue(String value) plugin.column.Renderer_DECIMAL#getWriteValue(String value) plugin.column.Renderer_COLUMN#getWriteValue(String value) plugin.column.Renderer_COLOR#getWriteValue(String value) plugin.column.Renderer_AUTOAREA#getWriteValue(String value) plugin.io.TableWriter_XML#writeData(DBTableModel table,PrintWriter writer) plugin.io.TableWriter_T#writeData(DBTableModel table,PrintWriter writer) plugin.io.TableWriter_Excel#writeData(DBTableModel table,PrintWriter writer) plugin.io.TableWriter_Default#writeData(DBTableModel table,PrintWriter writer) plugin.io.TableWriter_Data2#writeData(DBTableModel table,PrintWriter writer) plugin.io.TableWriter_Data#writeData(DBTableModel table,PrintWriter writer) plugin.io.TableWriter_CSV3#writeData(DBTableModel table,PrintWriter writer) plugin.io.TableWriter_CSV2#writeData(DBTableModel table,PrintWriter writer) plugin.io.TableWriter_CSV#writeData(DBTableModel table,PrintWriter writer) plugin.io.TableWriter_Calc#writeData(DBTableModel table,PrintWriter writer) hayabusa.db.DBColumn#getFixedValue(String value,String encode) plugin.io.TableWriter_Fixed#writeData(DBTableModel table,PrintWriter writer) [ロジックの共通化] hayabusa.db.AbstractRenderer#getValue(String value) hayabusa.db.AbstractRenderer#getValue(int row,String value) plugin.column.Renderer_YMDH#getValue(String value,boolean isView) plugin.column.Renderer_YMD31#getValue(String value,boolean isView) plugin.column.Renderer_YMD#getValue(String value) plugin.column.Renderer_YMD#getValue(String value,boolean isView) plugin.column.Renderer_YM#getValue(String value) plugin.column.Renderer_YM#getValue(String value,boolean isView) plugin.column.Renderer_TMSTMP#getValue(String value) plugin.column.Renderer_TMSTMP#getValue(String value,boolean isView) plugin.column.Renderer_TEXTAREA#getValue(String value) plugin.column.Renderer_TEXTAREA#getValue(int row,String value) plugin.column.Renderer_TEXTAREA#getRowsColsValue(String value,String cols,String rows) plugin.column.Renderer_NUMBER#getValue(String value,boolean isView) plugin.column.Renderer_MONEY#getValue(String value) plugin.column.Renderer_MONEY#getValue(String value,boolean isView) plugin.column.Renderer_MD#getValue(String value) plugin.column.Renderer_MD#getValue(String value,boolean isView) plugin.column.Renderer_HMS#getValue(String value) plugin.column.Renderer_HMS#getValue(String value,boolean isView) plugin.column.Renderer_HM#getValue(String value,boolean isView) plugin.column.Renderer_HHM#getValue(String value) plugin.column.Renderer_HHM#getValue(String value,boolean isView) plugin.column.Renderer_DECIMAL#getValue(String value) plugin.column.Renderer_DECIMAL#getValue(String value,boolean isView) plugin.column.Renderer_DBMENU#getSelectionValue(String value,boolean uslbl) plugin.column.Renderer_AUTOAREA#getValue(String value) plugin.column.Renderer_AUTOAREA#getValue(int row,String value) plugin.column.Renderer_AUTOAREA#getRowsColsValue(String value,int cols,int rows) [selection が null の場合、警告表示します。] plugin.column.Editor_INMENU#getValue(String value) plugin.column.Editor_INMENU#getValue(int row,String value) plugin.column.Renderer_RADIO#Renderer_RADIO(DBColumn clm) plugin.column.Renderer_RADIO#getValue(String value) plugin.column.Renderer_MENU#Renderer_MENU(DBColumn clm) plugin.column.Renderer_MENU#getValue(String value) plugin.column.Renderer_MENU#getValue(int row,String value) plugin.column.Editor_RADIO#Editor_RADIO(DBColumn clm) plugin.column.Editor_RADIO#getValue(String value) plugin.column.Editor_RADIO#getValue(int row,String value) plugin.column.Editor_MENU#getValue(String value) plugin.column.Editor_MENU#getValue(int row,String value) plugin.column.Editor_INMENU#Editor_INMENU(DBColumn clm) [サブクラスで selection を設定するための対応] plugin.column.Editor_YMDMENU#newInstance(DBColumn clm) plugin.column.Editor_NUMMENU#newInstance(DBColumn clm) plugin.column.Editor_MENU#Editor_MENU(DBColumn clm,Selection sel) plugin.column.Editor_HMMENU#newInstance(DBColumn clm) [NullPointerException が発生するので、事前にチェックします。] hayabusa.db.QueryFactory#newInstance(String id) hayabusa.db.DBTypeFactory#newInstance(String id) hayabusa.db.DBCellFactory#newRenderer(String id,DBColumn clm) hayabusa.db.DBCellFactory#newEditor(String id,DBColumn clm) hayabusa.html.ViewFormFactory#newInstance(String id) hayabusa.resource.CalendarFactory#getCalendarData(String cls,String arg1,String arg2,String arg3,String arg4) hayabusa.taglib.WriteTableTag#create(PrintWriter out) hayabusa.taglib.TableFilterTag#doEndTag() hayabusa.taglib.ReadTableTag#create(BufferedReader out) [レンデラーの表示桁数] レンデラーの表示桁数は、ViewLength属性を元に行う。 主に、小数点の指定を、登録時の制限と表示時で切り替えられるようにするためです。 plugin.column.Renderer_MONEY#newInstance( final DBColumn clm ) plugin.column.Renderer_NUMBER#newInstance( final DBColumn clm ) fukurou.util.StringUtil#numberFormat( final String in, final int minFraction ) [レンデラー、エディター処理] レンデラー、エディター処理で、極力、エラーを発生させない事にします。 実行時エラーなので、テスト時に判明しますが、現時点では、エラーの詳細が 判りにくくなっているため、エラーの状況を掴みやすいようにします。 hayabusa.db.Selection_NULL#getRadio( final String name,final String selectValue,final boolean useLabel ) hayabusa.db.Selection_NULL#getRadioLabel( final String selectValue ) plugin.column.Editor_HMMENU#Editor_HMMENU( final DBColumn clm ) plugin.column.Editor_NUMMENU#Editor_NUMMENU( final DBColumn clm ) plugin.column.Editor_RADIO#Editor_RADIO( final DBColumn clm ) plugin.column.Editor_YMDMENU#Editor_YMDMENU( final DBColumn clm ) plugin.column.Renderer_RADIO#Renderer_RADIO( final DBColumn clm ) 5.7.7.1 (2014/06/13) XXXMENU の editor は、警告を出さない。 でしたが、共通的に、null の場合は、 Selection_NULL を返します。 hayabusa.db.DBColumn#getSelection() [SQLException を throws するように変更。] hayabusa.db.DBMetaData#makeDBTableModel(ResultSet resultSet) [ResultSetValue] データベース検索処理で、ResultSet を使用している箇所を、整理します。 新しいResultSetValueクラスで処理する様に変更します。 hayabusa.db.DBTableModelUtil#makeDBTable(ResultSet result,int skipRowCount,int maxRowCount,ResourceManager resource) hayabusa.db.DBTableModelUtil#makeDBColumn(String name,int column,ResultSetValue rsv,ResourceManager resource) hayabusa.db.DBTableModelEditor#create(ResultSet result,int skipRowCount,int maxRowCount,ResourceManager resource,DBEditConfig config) hayabusa.db.DBTableModelEditor#addGroupRows(ResultSetValue rsv,int skipRowCount,int maxRowCount,boolean[] sumFilter,boolean[] groupFilter) hayabusa.db.DBTableModelEditor#addPlainRows(ResultSetValue rsv,int skipRowCount,int maxRowCount) hayabusa.io.HybsTimeSeriesCollection#innerQueryV(Connection con,String query) hayabusa.io.HybsTimeSeriesCollection#innerQueryH(Connection con,String query) hayabusa.io.HybsTaskSeriesCollection#executeQuery(Connection con,String query) hayabusa.io.HybsCategoryDataset#execute(Connection con,String query) hayabusa.taglib.DatabaseMetaDataTag#resultToString(ResultSet resultSet) fukurou.db.DBUtil#resultToArray(ResultSet resultSet,boolean useHeader) fukurou.db.ResultSetValue#ResultSetValue(ResultSet res) fukurou.db.ResultSetValue#getColumnCount() fukurou.db.ResultSetValue#getNames() fukurou.db.ResultSetValue#getColumnName(int clmNo) fukurou.db.ResultSetValue#getSqlType(int clmNo) fukurou.db.ResultSetValue#getColumnDisplaySizes() fukurou.db.ResultSetValue#getColumnDisplaySize(int clmNo) fukurou.db.ResultSetValue#isWritable() fukurou.db.ResultSetValue#isWritable(int clmNo) fukurou.db.ResultSetValue#next() fukurou.db.ResultSetValue#getValues() org.opengion.hayabusa.db.DBUtil#getClobData( Clob ) から移動 fukurou.db.ResultSetValue#getClobData(Clob clobData) org.opengion.hayabusa.db.DBUtil#getNumber( int , Object ) から移動 fukurou.db.ResultSetValue#getNumber(int clmNo) org.opengion.hayabusa.db.DBUtil#getValue( ResultSet , int , int ) から移動 fukurou.db.ResultSetValue#getValue(int clmNo) org.opengion.hayabusa.db.DBUtil#type2ClassName( int ) から移動 fukurou.db.ResultSetValue#getClassName(int clmNo) [警告3 PRMタイプは、警告にしない。] fukurou.taglet.DocletSpecific#checkTag(ExecutableMemberDoc menber) [DB検索画面] DB検索の 拡張検索条件 で、execution で、tableSpace を選択した場合、 通常の DATAFILE の拡張はできたが、TEMPFILE の拡張ができなかった。 (そもそも、検索対象からも外れていた) TEMPファイルの表領域の拡張ができるように、対応しました。 gf\jsp\common\gamen\03_DBSEARCH\tableSpace.jsp gf\jsp\common\gamen\03_DBSEARCH\resizeDB.jsp [GF6020 画面変更] GF6020 ボタン 画面を、表示種別、編集種別のサンプル画面に変更します。 元々、ボタン関連のサンプル画面を作成する予定でしたが、先に、 Renderer,Editorのサンプル画面を作成します。 gf\jsp\GF6020 [calendar 画面変更] calendar.jsp を若干変更します。 年と月のプルダウンの配置を、変更します。(年、月順に変更) また、ネイティブモードで、センターに表示しない、一行あいてしまう という現象を修正します。 (グレーがダークグレーになってしまう現象は、未対応です。) gf\jsp\common\calendar.jsp 5.8.1.1 (2014/11/14) を取り込みました。 [メール送信時認証対応] 5.4.3.2 (2012/01/06) で、対応した、メール送信時認証対応(POP before SMTP認証)を、 mailSender タグに適用します。 [伝送の機能追加] fukurou,transfer.TransferExec_SAMCB#execute( final String[] vals, final TransferConfig config, final Transaction tran ) 6.0.3.0 (2014/11/13) [Edit機能] Edit機能で、JSPソース変更時の対応で、EditMarker 使用時に、Edit編集画面に 不要なカラムが表示される現象の対応を行います。 * これは特殊処理で、Edit機能で、カラム列をキャッシュしているときに、 * JSPのソース等の変更時に、変更が反映されない対応を行う場合、 * 通常の ViewFormのサブクラスから、Edit専用の ViewForm_HTMLSeqClmTable で * 制御する場合、ViewMarkerのEditMarkerでは、通常非表示(検索の場合)ですが * Editのポップアップ画面に、表示されてしまうのを避けるため、noDisplay に * 強制的にするカラム番号が必要です。 * あくまで、暫定処置です。Edit機能を改修するときに、この機能は削除します。 hayabusa.html.ViewMarker_MARKER#getColumnNos() hayabusa.html.ViewMarker#getColumnNos() hayabusa.html.ViewLink_LINK#getColumnNos() hayabusa.taglib.ViewFormTag#doStartTag() hayabusa.taglib.ViewFormTag#doEndTag() hayabusa.taglib.ViewFormTag#release2() fukurou.mail.MailTransfer#start( final String[] args ) [jFreeChar] lowerBound だけ設定すると、upperBound がおかしくなる。 hayabusa.io.ChartDataset#makeNumberAxis() [DirectWriteTableTag] CSVファイル出力の機能アップ useQuote 【TAG】データをダブルクオートで囲うかどうか指定します(初期値:false) useQuoteEscape 【TAG】データ中にダブルクオート文字が含まれる場合、エスケープするかどうか指定します(初期値:true) useReturnQuote 【TAG】データ中に改行コードが含まれる場合、ダブルクオートで囲うかどうか指定します(初期値:true) replaceFrom 【TAG】置換元文字を指定。一文字単位で置換します。 replaceTo 【TAG】置換先文字を指定。一文字単位で置換します。 hayabusa.taglib.DirectWriteTableTag#release2() hayabusa.taglib.DirectWriteTableTag#create(PrintWriter out) hayabusa.taglib.DirectWriteTableTag#replace(String str) hayabusa.taglib.DirectWriteTableTag#setUseQuote(String flag) hayabusa.taglib.DirectWriteTableTag#setUseQuoteEscape(String flag) hayabusa.taglib.DirectWriteTableTag#setUseReturnQuote(String flag) hayabusa.taglib.DirectWriteTableTag#setReplaceFrom(String str) hayabusa.taglib.DirectWriteTableTag#setReplaceTo(String str) hayabusa.taglib.DirectWriteTableTag#doStartTag() 5.4.3.2 (2012/01/06) で、追加した、メール送信時認証関連で、キーワード等を、変更します。 auth パラメータを authType パラメータに変更します。 システムパラメータの変更(MAIL_SEND_AUTH→MAIL_SEND_AUTH_TYPE)も行いたかったのですが、 Ver5との互換性の関係で、見送ります。 hayabusa.mail.MailPattern#MailPattern(Map params) hayabusa.mail.MailPattern#getAuthType() hayabusa.mail.MailManager_DIRECT#create(Map params,DBTableModel table) hayabusa.mail.MailManager_DB#sendMail(String paraKey,String systemId,List emList) hayabusa.mail.DefaultMailManager#create(Map params) hayabusa.mail.DefaultMailManager#send() hayabusa.mail.DefaultMailManager#setAuthType(String type) fukurou.mail.MailTransfer#start(String[] args) 5.8.1.1 (2014/11/14) を取り込みました。 [メール送信時認証対応] 5.4.3.2 (2012/01/06) で、対応した、メール送信時認証対応(POP before SMTP認証)を、 mailSender タグに適用します。 なお、認証用の POPサーバーは、SMTPサーバーと同一で、ポートもPOPデフォルトとします。 hayabusa.taglib.MailSenderTag#setPort(String port) hayabusa.taglib.MailSenderTag#setAuthType(String type) hayabusa.taglib.MailSenderTag#setAuthUser(String user) hayabusa.taglib.MailSenderTag#setAuthPass(String pass) hayabusa.taglib.MailSenderTag#release2() hayabusa.common.SystemData#MAIL_SEND_AUTH_PORT fukurou.mail.MailTX#MailTX( final String host , final String charset ) fukurou.mail.MailTX#MailTX( final String host , final String charset, final String smtpPort ,final String authType, final String authPort, final String authUser, final String authPass) TLDファイルに追加します。 gf/src/META-INF/hybs-taglib.tld MailSenderTag に、smtpPort,authType,authPort,authUser,authPass 追加 gf/WEB-INF/hybs-taglib.tld 5.8.1.0 (2014/11/07) を取り込みました。 [fileDownloadサーブレット修正] hayabusa.servlet.FileDownload#doPost( final HttpServletRequest request, final HttpServletResponse response ) [Excel取込み] fukurou.util.POIUtil#kigo2rowCol(String kigo) fukurou.util.POIUtil#rowCol2kigo(int rowNo,int colNo) fukurou.util.ExcelReader_XSSF#excelReader(String fname,ExcelReaderEvent event) fukurou.util.ExcelReader_XSSF#getSheetNames(XSSFReader rd) fukurou.util.ExcelReader_XSSF#main(String[] args) fukurou.util.ExcelReader_SS#excelReader(String fname,ExcelReaderEvent event) fukurou.util.ExcelReader_SS#main(String[] args) fukurou.util.ExcelReader_HSSF#excelReader(String fname,ExcelReaderEvent event) fukurou.util.ExcelReader_HSSF#main(String[] args) fukurou.util.ExcelReaderEvent#startSheet(String shtNm,int shtNo) fukurou.util.ExcelReaderEvent#endSheet(int shtNo) fukurou.util.ExcelReaderEvent#value(String val,int rowNo,int colNo) fukurou.util.ExcelReaderEvent#isSkip(int rowNo) fukurou.util.ExcelReaderEvent#endRow(int rowNo) fukurou.util.ExcelReaderEvent#columnNames(String[] names) fukurou.util.ExcelReaderEvent#values(String[] vals,int rowNo) [JavaDoc修正] ValueTag.java で、アクションとコマンドの関係の表形式を見直します。 少し煩雑なので、グルーピングしてまとめる表記に変更します。 hayabusa.taglib.ValueTag.java 6.0.2.5 (2014/10/31) [Excel取込み] POIUtil で、セル情報を作成する時に、値もセットします。 fukurou.util.POIUtil#getCellMsg( final Cell oCell ) Cellの開始、終了番号が、マイナスのケースの対応 fukurou.util.POIUtil#activeWorkbook( final Workbook wkbook , final boolean isCellDel ) debug=true で、詳細情報を出力します。 hayabusa.taglib.ReadTableTag#doEndTag() plugin.io.TableReader_Excel#readDBTable() gf/jsp/common/filePopup.jsp gf/jsp/GF2050/result.jsp エラーメッセージに、preタグを付けます。 hayabusa.taglib.TaglibUtil#makeHTMLErrorTable( final ErrorMessage errMsg,final ResourceManager resource ) ForwardTag.java で、debug="true" を設定したときは、forward も sendRedirect も行わない。 互換性という事では、注意が必要かも。 知らずに、forwardタグに、debug="true" と記述していた場合、今までは、JSPにフラッシュされない程度の 出力がされていたが、そのまま、forward されて、何事もなく実行されていた。 hayabusa.taglib.ForwardTag#doEndTag() [HTML5対応:カレンダpopup] ogPopup で、height , width に、"px" が付いていないと、HTML5 では サイズとして認識されない。 ogPopup の引数に、"px" を追加するとともに、ogPopup メソッド内で、 "px" がなければ、追加するように、修正します。 gf/src/script/common/default.js#ogPopup plugin.column.Editor_YMD2#CAL1 サイズ変更時に、IE判定しているが、IEネイティブモードでは、効かないため、 別の方法で判定します。 具体的には、window.dialogWidth 属性は、IEしかないので、これの有無で判定します。 ちなみに、IEでは、resizeBy メソッドが使えないためです。 gf/src/script/common/calendar2.js [HTML5対応:ガントバー] document.all が、IE11のHTML5モードで廃止されたため、修正(たぶん修正漏れ) gf/src/script/common/option/adjustGanttTable.js IEのHTML5(ネイティブ)の場合、ヘッダーの文字間隔がずれます。 これは、adjustGanttTable.css の 5.6.2.1 (2013/03/08) firefox 対応で入れた letter-spacing (文字間隔) が影響しているためです。 これを解決するには、ブラウザ判定を行って、CSS で対応する必要があり、 addBrowserClass.js を新規導入します。 これは、html タグに、ie のclass属性を追加します。 みたいな感じで、CSSで、この class属性を指定します。 現時点では、HeadTag で、gantt 指定を行った場合のみ、addBrowserClass.js を インクルードします。adjustGanttTable.js の中から、このメソッドを呼び出します。 gf/src/script/common/option/adjustGanttTable.js gf/src/script/common/option/adjustGanttTable.css gf/src/script/common/option/addBrowserClass.js hayabusa.taglib.HeadTag#ADD_BRWS_CLS_JS hayabusa.taglib.HeadTag#doEndTag() stackedGantt の layout-grid-char の設定を、default.css に移します。 以前は、stackedGantt でしか使わないので、adjustGanttTable.css で 設定していましたが、他の th.zoomXX の設定と同じ場所で管理します。 gf/src/script/common/default.css javaScriptで、BODYがないと入れ子になってしまう。 そこで、iGantBar関連のタグのBody部に、"" を追記する。 これは、TomcatのXMLパーサーの問題っぽい。 hayabusa.taglib.ViewIBarTag#doEndTag() hayabusa.taglib.ViewIGanttBarTag#doEndTag() hayabusa.taglib.ViewIGanttTag#doEndTag() hayabusa.taglib.ViewIHeadTag#doEndTag() hayabusa.taglib.ViewIMatrixTag#doEndTag() hayabusa.taglib.ViewITableTag#doEndTag() hayabusa.taglib.ViewITaskTag#doEndTag() [初期エラー対応] 初期エラー発生時は、ユーザーも取得できないので、Languageは、null でも返す。 custom/init.jsp は、なくてもエラーにはしない。 リクエストパラメータに、USERID 属性でユーザー指定する機能を復活。 headタグのuseGuest属性は、廃止。 hayabusa.taglib.CommonTagSupport#getLanguage() hayabusa.taglib.HeadTag#sessionInit() hayabusa.taglib.HeadTag#release2() hayabusa.taglib.HeadTag#setUseGuest( final String flag ) 廃止 gf/src/META-INF/hybs-taglib.tld gf/WEB-INF/hybs-taglib.tld HybsSystemException 発生時に、出来るだけエラーメッセージの表示を行っていませんが、 もう少しだけ、表示内容を、出すことにします。 これは、以前、セキュリティ対策として、エラーメッセージは必要以上に出さなくしましたが、 毎回、ログを確認するのも手間なので、少し修正します。 hayabusa.common.HybsSystemException.java [findBugs対応] hayabusa.io.HybsTimeSeriesCollection#equals(Object object) hayabusa.io.HybsTimeSeriesCollection#hashCode() hayabusa.taglib.JspInitTag#getCount() entrySet イテレータを使用するように変更。 hayabusa.taglib.ViewParamTag#initParam(Map map) null ではなく、サイズ0の配列を返すように変更。 hayabusa.db.AbstractTableFilter#getParameterRows() マルチ起動対策用カウンタのfindBugs対応。 hayabusa.taglib.JspInitTag#doEndTag() [Edit関係のDB取得方法修正] Edit関係は、Queryではなく、DBTableModelEditor.java でSQL処理を行っていますが、 この方法が、簡易的に処理されており、オブジェクト型のデータベースカラムに対応できていません。 (CLOB や DATE型のこと) その結果、Edit機能を使用すると、Date型の日付処理の表記がおかしくなります。 hayabusa.db.DBTableModelEditor#create( final ResultSet result, final int skipRowCount, final int maxRowCount, final ResourceManager resource, final DBEditConfig config ) hayabusa.db.DBTableModelEditor#addPlainRows( final ResultSet result, final int[] types, final int skipRowCount, final int maxRowCount, final boolean isOther ) fukurou.util.HybsDateUtil#parseNumber( final String value ) [AbstractMailManager 変更] AbstractMailManager クラスは、abstract宣言されていますが、abstractメソッドを持っていません。 これは、DefaultMailManager として、クラス名を変更します。 hayabusa.mail.AbstractMailManager.java → DefaultMailManager.java hayabusa.mail.MailManager_DB.java(43): public class MailManager_DB extends AbstractMailManager { hayabusa.mail.MailManager_DIRECT.java(29): * バッチ送信する場合と共通する部分はスーパークラス AbstractMailManager に実装していますが、 hayabusa.mail.MailManager_DIRECT.java(40): public class MailManager_DIRECT extends AbstractMailManager { hayabusa.mail.MailManager_DIRECT.java(143): if( AbstractMailManager.FGJ_SEND_WAIT.equals( table.getValue( i, IDX_FGJ_MAIL ) ) ) { hayabusa.mail.MailPattern.java(174): String[][] ptn = DBUtil.dbExecute( selGE31, selGE30Args, AbstractMailManager.appInfo, DBID ); // 5.5.5.1 (2012/08/07) hayabusa.mail.MailPattern.java(197): String[][] jkn = DBUtil.dbExecute( selGE37, selGE37Args, AbstractMailManager.appInfo, DBID ); hayabusa.mail.MailPattern.java(424): grpMember[IDX_FGJ] = AbstractMailManager.FGJ_SEND_WAIT; // 送信待 hayabusa.mail.MailPattern.java(427): grpMember[IDX_FGJ] = AbstractMailManager.FGJ_ADDR_ERR; // アドレス取得エラー hayabusa.mail.MailPattern.java(451): indMember[IDX_FGJ] = AbstractMailManager.FGJ_SEND_WAIT; hayabusa.mail.MailPattern.java(454): indMember[IDX_FGJ] = AbstractMailManager.FGJ_ADDR_ERR; hayabusa.mail.MailPattern.java(460): indMember[IDX_FGJ] = AbstractMailManager.FGJ_ADDR_ERR; // 状況コード hayabusa.mail.MailPattern.java(481): String[][] ge33Datas = DBUtil.dbExecute( selGE33,ge33SelArgs,AbstractMailManager.appInfo, DBID ); // 5.5.5.1 (2012/08/07) hayabusa.mail.MailPattern.java(694): String[][] ge35Datas = DBUtil.dbExecute( selGE35,ge35SelArgs,AbstractMailManager.appInfo, DBID ); // 5.5.5.1 (2012/08/07) [リファクタリング] A method/constructor shouldnt explicitly throw java.lang.Exception fukurou.util.AbstractConnect#actionGET( final String localFile, final String remoteFile ) throws IOException ; fukurou.util.AbstractConnect#actionGETdir( final String localDir, final String remoteDir ) throws IOException ; fukurou.util.AbstractConnect#actionPUT( final String localFile, final String remoteFile ) throws IOException ; fukurou.util.AbstractConnect#actionPUTdir( final String localDir, final String remoteDir ) throws IOException { fukurou.util.AbstractConnect#actionDEL( final String remoteFile ) throws IOException ; fukurou.util.AbstractConnect#actionDELdir( final String remoteDir ) throws IOException ; fukurou.util.SFTPConnect#actionGET( final String localFile, final String remoteFile ) throws IOException { fukurou.util.SFTPConnect#actionGETdir( final String localDir, final String remoteDir ) throws IOException { fukurou.util.SFTPConnect#actionPUT( final String localFile, final String remoteFile ) throws IOException fukurou.util.SFTPConnect#actionDEL( final String remoteFile ) throws IOException fukurou.util.SFTPConnect#actionDELdir( final String remoteDir ) throws IOException [リファクタリング] 6.0.2.5_refactoring.txt 6.0.2.4 (2014/10/17) [EDIT機能修正] 以前、5.7.7.3 (2014/06/27) にて、画面修正時の、EDIT登録カラムが無くなった場合、 エラーを検知し、メッセージを表示するようにしましたが、それと類似で、カラムを 追加した場合に、EDIT画面に新規追加分のカラムが表示されません。 これは、カラムの並び替えを行っているため、EDIT登録データが更新されていないためです。 EDIT登録カラムと、素のカラムを比較して、新しく増えているカラムを、追加するように 機能修正します。 hayabusa.taglib.EditConfigTag#doEndTag() hayabusa.taglib.EditConfigTag#checkViewClms( final String viewClms , final String fullClms ) hayabusa.db.DBLastSql#setOrgClmNames( final String clmNames ) hayabusa.db.DBLastSql#getOrgClmNames() hayabusa.taglib.ViewFormTag#doStartTag() hayabusa.taglib.ViewFormTag#doEndTag() hayabusa.taglib.ViewFormTag#release2() hayabusa.taglib.ViewFormTag#makeEditTable( final String userViewClms ) plugin.view.ViewForm_HTMLSeqClmTable#getViewClms() [ganttHeaderタグ] @daySpan 属性で、HHmm-HHmm 形式の終了時刻が小さい場合( 2000-0800 など )の処理で、 内部計算側と、ヘッダー情報の文字列 の2か所に対応が必要でしたが、ヘッダー情報の文字列側の 対応が漏れていました。setDaySpan(String) メソッド側で、判定処理を入れます。 hayabusa.taglib.GanttHeaderTag#setDaySpan( final String val ) hayabusa.taglib.GanttHeaderTag#makeZoomTime( final int hourOfPixcel,final int step,final boolean useTani ) A同上の処理で、JavaScript側の日付、時刻計算の修正 gf/src/script/common/option/adjustGanttTable.js#showGantBar( gantTd ,listGantBar ,lineHeight ) → jsp/common/option/adjustGanttTable.js に圧縮コンパイルされる。 [upload タグ機能追加] upload タグ(FileUploadTag)に、機能追加します。 @ name + _NEW と同じ考え方で、_PFX(接頭辞) , _SFX(接尾辞) 機能を追加します。 A 上記機能は、_NEW との併用可能。_NEW がない場合は、オリジナル(アップロードされた元のファイル名)に付与 B useBackup="rename" で、すでに同名のファイルが存在した場合に、"_001" のような文字列を追加したファイルにリネームします。 Windowsの " - コピー (2)" に近いですが、桁数を抑えるのと、useBackup="true" と異なり、過去の同一ファイル名は そのまま、有効になります。同一ファイルが同一フォルダに存在する場合のみ連番が付与されます。 C name + _NEW の指定に、フォルダを含めることが可能。ただし、接続文字列は、"/" とする。 同時にアップロードを行う場合に、個別にフォルダを振り分けたり、_PFX(接頭辞) に、フォルダを指定 することも可能です。 D 最大転送サイズ(Byte)を 10M → 30M に変更 hayabusa.taglib.FileUploadTag#release2() hayabusa.taglib.FileUploadTag#setUseBackup( final String flag ) hayabusa.taglib.FileUploadTag#makeDBTableFromClms( final MultipartRequest multi ) hayabusa.servlet.MultipartRequest#MultipartRequest(final HttpServletRequest request,・・・ fukurou.util.StringUtil#nvalAdd( final String... strs ) fukurou.util.FileUtil#getFileSplit( final File file ) fukurou.util.FileUtil#renameTo( final File fromFile , final File toFile , final String useBackup ) fukurou.util.FileUtil#getExtension( final String fileName ) [img タグに title 属性を記述] img タグに title 属性が記述されていないものについて、追記します。 今まで、alt 属性は付けているケースがありますが、title 属性の付け忘れがいくつかあります。 hayabusa.taglib.HideMenuTag#doStartTag() hayabusa.taglib.QueryButtonTag.java(125) hayabusa.taglib.QueryButtonTag.java(129) hayabusa.taglib.QueryButtonTag.java(133) hayabusa.taglib.QueryButtonTag.java(137) hayabusa.taglib.QueryButtonTag.java(156) plugin.column.Renderer_ICON#getValue( final String value ) [Renderer_HHM の桁合わせ] Renderer_HHM で、分が、1桁の場合、XX:X 表記になってしまうバグを修正。 これは、XX:0X にします。 共通メソッドを用意します。 fukurou.util.StringUtil#intFill( final int num,final int su_fill ) plugin.column.Renderer_HHM#getValue( final String value ) [リファクタリング] Nm:setOutDir(String) と setOutdir(String) は、紛らわしいです。 hayabusa.taglib.JspCreateTag#setOutdir( final String dir ) → setOutDir( final String dir ) gf/jsp/GF2201/jspOut.jsp(64): 〜 の 終了タグの直前に、改行コードを入れます。 現在、ほとんどのケースでセットされていますが、まれに、抜けています。 そこで、EXEC_END_TAG 宣言の使用を、isXml で個別にみるのではなく、 isXml で、キャッシュした変数を使用します。 また、XML_START_TAG、XML_END_TAG、EXEC_START_TAG、EXEC_END_TAG の 定数は、AbstractTableFilter 側で定義しなおします。 修正箇所は多いですが、単純作業です。 plugin.table.TableFilter_SEQUENCE_SQLSERVER#makeLineList(int[] clmNo,String[] data) plugin.table.TableFilter_SEQUENCE_POSGRE#makeLineList(int[] clmNo,String[] data) plugin.table.TableFilter_SEQUENCE_MYSQL#makeLineList(int[] clmNo,String[] data) plugin.table.TableFilter_SEQUENCE_HSQLDB#makeLineList(int[] clmNo,String[] data) plugin.table.TableFilter_SEQUENCE_FIREBIRD#makeLineList(int[] clmNo,String[] data) plugin.table.TableFilter_SEQUENCE#makeLineList(int[] clmNo,String[] data) plugin.table.TableFilter_INDEX#makeEndLine(int[] clmNo,String[] data) plugin.table.TableFilter_INDEX#makeDropLine(int[] clmNo,String[] data) plugin.table.TableFilter_INDEX_HSQLDB#makeEndLine(int[] clmNo,String[] data) plugin.table.TableFilter_TABLE_SQLSERVER#makeEndLine(int[] clmNo,String[] data) plugin.table.TableFilter_TABLE_POSGRE#makeEndLine(int[] clmNo,String[] data) plugin.table.TableFilter_TABLE_MYSQL#makeEndLine(int[] clmNo,String[] data) plugin.table.TableFilter_TABLE_HSQLDB#makeEndLine(int[] clmNo,String[] data) plugin.table.TableFilter_TABLE_FIREBIRD#makeEndLine(int[] clmNo,String[] data) plugin.table.TableFilter_TABLE_FIREBIRD#makeUniqSeq(int[] clmNo,String[] data) plugin.table.TableFilter_TABLE#execute() plugin.table.TableFilter_TABLE#makeEndLine(int[] clmNo,String[] data) plugin.table.TableFilter_TABLE#makeUniqSeq(int[] clmNo,String[] data) plugin.table.TableFilter_INDEX_SQLSERVER#makeEndLine(int[] clmNo,String[] data) plugin.table.TableFilter_INDEX_POSGRE#makeEndLine(int[] clmNo,String[] data) plugin.table.TableFilter_INDEX_MYSQL#makeEndLine(int[] clmNo,String[] data) plugin.table.TableFilter_INDEX_MYSQL#makeDropLine(int[] clmNo,String[] data) plugin.table.TableFilter_INDEX_FIREBIRD#makeEndLine(int[] clmNo,String[] data) plugin.table.TableFilter_CMNT_TBL#execute() plugin.table.TableFilter_CMNT_CLM#execute() plugin.table.TableFilter_SEQUENCE#execute() plugin.table.TableFilter_DBARG_OUT#execute() plugin.table.TableFilter_DBARG_OUT#makeHeadLine(String objName) plugin.table.TableFilter_DBARG_OUT#makeEndLine(String objName) plugin.table.TableFilter_DBSRC_OUT#makeEndLine() [Drop構文の変更] TableFilter_INDEX で、DROP引数を、false(初期値)にすると、INDEXのDROP構文が出力されなくなります。 これは、新規作成時に、まだ、INDEXが存在しない時に、DROP構文が実行されると、 エラーとなり、以下の処理が実行されなくなるケースがある為です。(PostgreSQL,firebirdなど) 今まで、GF2140 で、true(DROP構文を出力する)になっていましたが、出力しないようにします。 代わりに、falseの場合には、DROP構文をまとめたファイル(AllDropC.xml等)のファイルを 作成するようにします。 jsp/GF2140 plugin.table.TableFilter_INDEX#execute() [パレート図] パレート図は、100分率にします。 hayabusa.io.HybsCategoryDataset#execute(Connection con,String query) hayabusa.io.HybsCategoryDataset#execute(DBTableModel table) hayabusa.io.HybsCategoryDataset#changeParetoData(double sum) 6.0.2.2 (2014/10/03) [EDIT機能] データベースから、"EDIT_NAME_(画面ID)_(エディット名)" で取り出すとき、"_" で分割していた為、 画面ID や エディット名 に、"_" を含むと、分割をミスっていました。 そこで、分割方法を、"EDIT_NAME_" の前半と、設定値の (エディット名) の後半を削除して、残りを (画面ID) とする方法に変更します。 また、6.0.2.1 (2014/09/26) で、初期値のキーワードの、EDIT_NAME_SELECTED_ を、EDIT_NAME_ に 変更しましたが、"EDIT_NAME_" が付いていると、先の分割時に、対象となる為、EDIT_SELECTED_ に 変更します。 それ以外に、メソッドの配置を、変更します。 hayabusa.db.DBEditConfig#getKeySet( final String[] keys ) 廃止 hayabusa.db.DBEditConfig#getEditKeys( final String guikey, final String editName ) 廃止 → DBEditConfigManager.java へ移動 hayabusa.db.DBEditConfigManager#DBEditConfigManager() 新規追加(デフォルトは互換性の為残しておきます。) hayabusa.db.DBEditConfigManager#DBEditConfigManager( final Map attribute ) 新規追加 → 内部処理は、UserInfo.java DBEditConfig.java などから移植 hayabusa.db.DBEditConfigManager#getEditKeys( final String guikey, final String editName ) DBEditConfig から移植 hayabusa.resource.UserInfo#UserInfo( final String userID,・・・・ hayabusa.resource.UserInfo#makeEditConfigMap() 廃止 hayabusa.resource.UserInfo#addEditConfig( final String guikey, final String editName, final DBEditConfig config ) hayabusa.resource.UserInfo#deleteEditConfig( final String guikey, final String editName ) hayabusa.resource.UserInfo#setSelectedEdit( final String guikey, final String editName ) hayabusa.resource.UserInfo#getSelectedEdit( final String guikey ) [JFreeChar関連] HybsColorBar3D を新規追加 これは、先に追加した、HybsColorBar の 3D版です。 hayabusa.io.HybsBarRenderer3D.java 新規作成 前回追加した、HybsJDBCCategoryDataset.java を廃止し、HybsCategoryDataset.java に統一します。 これは、JDBCCategoryDatasetの データベース機能と、DBTableModel から Dataset を作成する機能を 兼ね備えて、かつ、HybsDataset インターフェースを実装します。 HybsDataset インターフェースは、シリーズのラベル指定、カテゴリカラーバー、パレート図用積上げ 計算などの処理を行うための、インターフェースで、それらの処理も、HybsCategoryDataset に実装します。 カテゴリのカラー名の指定を行う場合、最後のカラムが、カラー名の文字列になります。 select category,series1,series2,series3,・・・,color from ・・・ color文字列の検索結果は、Dataset には含まれません。 その場合、color カラムがシリーズとして認識されない様に、ChartDatasetTag で、useCategoryColor="true" を指定しておく必要があります。このフラグは、HybsCategoryDataset を使う処理以外では効果が ありません(シリーズとして使用されてしまう)のでご注意ください。 このフラグは、カテゴリカラーバーを使う場合には必要ですが、カテゴリカラーバーと(例えばパレート図) を合成する場合に、パレート図側にも useCategoryColor="true" を設定しておけば、同じSQL または、 DBTableModel を使う事ができるというためのフラグです。 hayabusa.taglib.ChartDatasetTag#setUseVerticalLabels( final String useCategoryColor ) { hayabusa.io.ChartDataset#setUseCategoryColor( final boolean useCateColor ) hayabusa.io.ChartFactory#newDataset( final Connection conn,final String query, final String type,final String[] lbls,final boolean useCateColor ) hayabusa.io.ChartFactory#newDataset( final DBTableModel table , final String type,final String[] lbls,final boolean useCateColor ) hayabusa.io.ChartDataset#makeDataset( final Connection conn,final String sql ) hayabusa.io.ChartDataset#makeDataset( final DBTableModel table ) Seriesの縦持ち対応は、別途検討しますが、とりあえず保留にしておきます。 hayabusa.io.HybsJDBCCategoryDataset.java_horyu 保留 gf/src/META-INF/hybs-taglib.tld gf/WEB-INF/hybs-taglib.tld [ライブラリ更新] postgreSQL を評価するに当たり、JDBCドライバを置き換えておきます。 postgresql-9.3-1100.jdbc41.jar → postgresql-9.3-1102.jdbc41.jar apps/jdk180u**/jre/lib/ext/postgresql-9.3-1102.jdbc41.jar 交換 [不具合修正] 初期化漏れでエラーになっていたので、修正します。 plugin.view.ViewForm_HTMLCrossTable#init( final DBTableModel table ) 6.0.2.1 (2014/09/26) [EDIT機能] 集計機能で、数字項目の合計を算出する処理で、queryタグが複数ある場合、集計しない方の query タグに、mainTrans=false でEDIT機能を実行しない様にする必要がありますが、 そうしないと、カラムが存在しないので、NullPointerExceptionエラーが発生します。 その場合、エラーになかなか気づかないため、ソース上で、NullPointerException エラーではなく、 何らかのメッセージを表示して、気づきを与えます。 hayabusa.db.DBTableModelEditor#create( final ResultSet result, final int skipRowCount, final int maxRowCount, final ResourceManager resource, final DBEditConfig config ) throws SQLException { hayabusa.db.DBTableModelEditor#addTotalRows( final int maxRowCount, final ResourceManager resource, final boolean[] sumFilter , final boolean[] groupFilter, final boolean[] subTotalFilter, final boolean[] totalFilter ) { EDIT_NAME_SELECTED_ を、EDIT_NAME_ に変更 します。 どう見ても、このキーでは何もしていません。 hayabusa.resource.UserInfo#setSelectedEdit( final String guikey, final String editName ) hayabusa.resource.UserInfo#getSelectedEdit( final String guikey ) [JFreeChar関連] itemLabelVisible="true" の時に、バーに値を表示しますが、Bar3D の時のみ、値が表示されたり されなかったりしました。 これは、org.jfree.chart.renderer.category.BarRenderer3D の コンストラクタで実行されている setBasePositiveItemLabelPosition(TextAnchor) に、ItemLabelAnchor.INSIDE12,TextAnchor.TOP_CENTER で 作成された ItemLabelPosition が渡されているため、文字数がバーの幅より大きい場合、表示されない 状況になっていました。 ちなみに、BarRenderer は、親クラス(のさらに親)の org.jfree.chart.renderer.AbstractRenderer で、 ItemLabelAnchor.OUTSIDE12, TextAnchor.BOTTOM_CENTER で作成されます。 ChartDataset の CategoryItemRenderer 取得処理で、書き換えておきます。 hayabusa.io.ChartDataset#getRenderer( final int serNo , final CategoryURLGenerator urlGen ) パレート図作成用の HybsParetoLine キーワードを追加します。 hayabusa.io.ChartFactory#newDataset( final Connection conn,final String query,final String type,final String[] lbls ) hayabusa.io.ChartFactory#newDataset( final DBTableModel table , final String type,final String[] lbls ) gf/jsp/GF7212 グラフ合成、パレート図 関連項目として、データベースのタイプの処理を、DBUtil クラスに集約します。 hayabusa.db.DBTableModelUtil#makeDBColumn( final String name,final LabelData labelData, final ResultSetMetaData metaData,final int column,final String lang ) fukurou.db.DBUtil#getNumber( final int type, final Object resultObj ) fukurou.db.DBUtil#getNumber( final int type, final Object resultObj ) [ColorMap.java 新規作成] org.opengion.fukurou.util.StringUtil に含まれていた、ColorMap関連の処理を、 ColorMap.java に集約します。 fukurou.util.ColorMap.java 新規作成 hayabusa.io.ChartCreate.java(408): chartBackColor = StringUtil.getColorInstance( chBackClr ); hayabusa.io.ChartCreate.java(425): plotBackColor = StringUtil.getColorInstance( plBackClr ); hayabusa.io.ChartCreate.java(750): domainLineColor = StringUtil.getColorInstance( color ); hayabusa.io.ChartCreate.java(792): rangeLineColor = StringUtil.getColorInstance( color ); hayabusa.io.ChartDataset.java(547): markColors[i] = StringUtil.getColorInstance( mkCol[i] ); hayabusa.io.ChartDataset.java(599): markOverColors[i] = StringUtil.getColorInstance( ovCol[i] ); hayabusa.io.ChartDataset.java(818): shapeColors[i] = StringUtil.getColorInstance( colors[i] ); hayabusa.io.ChartDataset.java(892): seriesColors[i] = StringUtil.getColorInstance( colors[i] ); hayabusa.io.HybsJDBCCategoryDataset.java(185): Color color = StringUtil.getColorInstance( colStr ); plugin.view.ViewForm_ImageTimeBar.java(811): obj[1] = (colStr != null) ? StringUtil.getColorInstance( colStr ) : uniqColor(); 6.0.2.0 (2014/09/19) 5.8.0.1 (2014/09/12) まで反映 [POI(EXCEL入出力)関係] POI による、EXCELバイナリファイルに対する、データモデルクラスを追加します。 また、ユーティリティクラスと、イベント処理クラスも追加します。 これに伴い、関係する EXCEL処理を、こちらに移動させます。 fukurou.model.ExcelModel.java 新規追加 fukurou.util.POIEvent.java 新規追加 fukurou.util.POIUtil.java 新規追加 fukurou.process.Process_GrepChangeExcel 大幅変更 plugin.io.TableReader_Excel.java 大幅変更 plugin.io.TableWriter_Excel.java 大幅変更 plugin.io.ExcelUtil.java 廃止(機能は ExcelModel に移行) WriteTableTag に、EXCEL関係の機能を追加します。 これは、TableWriter_Excel のみに適用します。 useCellStyle 【TAG】EXCEL出力時に、データを書き込んだ範囲に罫線を入れるかどうかを指定します useAutoCellSize 【TAG】EXCEL出力時に、セルの幅をデータの幅に自動的に合わせるかどうかを指定します useActiveWorkbook 【TAG】EXCEL出力時に、セルの有効範囲を設定するかどうかを指定します pageBreakColumn 【TAG】EXCEL出力時に、シート変更するキーとなるカラム名を指定します(このカラムの値がシート名になります) fileBreakColumn 【TAG】EXCEL出力時に、ファイル名を変更するキーとなるカラム名を指定します(このカラムの値がファイル名になります) gf/jsp/GF6270 hayabusa.taglib.WriteTableTag#release2() hayabusa.taglib.WriteTableTag#create( final PrintWriter out ) hayabusa.taglib.WriteTableTag#setUseCellStyle( final String useStyle ) hayabusa.taglib.WriteTableTag#setUseAutoCellSize( final String useAutoSize ) hayabusa.taglib.WriteTableTag#setUseActiveWorkbook( final String useActWB ) hayabusa.taglib.WriteTableTag#setPageBreakColumn( final String pbColumn ) hayabusa.taglib.WriteTableTag#setFileBreakColumn( final String fbColumn ) hayabusa.io.TableWriter#setUseCellStyle( final boolean useStyle ) hayabusa.io.TableWriter#setUseAutoCellSize( final boolean useAutoSize ) hayabusa.io.TableWriter#setUseActiveWorkbook( final boolean useActWB ) hayabusa.io.TableWriter#setPageBreakColumn( final String pbColumn ) hayabusa.io.TableWriter#setFileBreakColumn( final String fbColumn ) hayabusa.io.AbstractTableWriter#setUseCellStyle( final boolean useStyle ) hayabusa.io.AbstractTableWriter#setUseAutoCellSize( final boolean useAutoSize ) hayabusa.io.AbstractTableWriter#setUseActiveWorkbook( final boolean useActWB ) hayabusa.io.AbstractTableWriter#setPageBreakColumn( final String pbColumn ) hayabusa.io.AbstractTableWriter#setFileBreakColumn( final String fbColumn ) plugin.io.TableWriter_Excel#setUseCellStyle( final boolean useStyle ) plugin.io.TableWriter_Excel#setUseAutoCellSize( final boolean useAutoSize ) plugin.io.TableWriter_Excel#setUseActiveWorkbook( final boolean useActWB ) plugin.io.TableWriter_Excel#setPageBreakColumn( final String pbColumn ) plugin.io.TableWriter_Excel#setFileBreakColumn( final String fbColumn ) ファイル分割出力の関係で、setFilename( final String filename )を、ディレクトリとファイルを 渡すように変更します。 Reader側も分離すべきですが、今回は見送ります。 hayabusa.io.TableWriter#setFilename( final String directory , final String filename ) hayabusa.io.AbstractTableWriter#setFilename( final String directory , final String filename ) plugin.io.TableWriter_Calc#setFilename( final String directory , final String filename ) { plugin.io.TableWriter_Excel#setFilename( final String directory , final String filename ) { また、これらのメソッドが増えることに伴い、AbstractTableWriter.java で、UnsupportedOperationException を throw していた処理を止め、System.err.println にすることで、TableWriter_Excel 以外の EXCEL関連クラスの 継承を廃止して、簡素化します。 hayabusa.io.AbstractTableWriter#setSheetName( final String sheetName ) hayabusa.io.AbstractTableWriter#setRefSheetName( final String sheetName ) hayabusa.io.AbstractTableWriter#setRefFilename( final String filename ) hayabusa.io.AbstractTableWriter#setFontName( final String fontName ) hayabusa.io.AbstractTableWriter#setFontPoint( final short point ) hayabusa.io.AbstractTableWriter#setSkipRowCount( final int skipRowCount ) gf/src/META-INF/hybs-taglib.tld gf/WEB-INF/hybs-taglib.tld WORD などの処理も行うため、POIの jar を追加します。 ついでに、バージョンも上げておきます。 apps/jdk180u**/jre/lib/ext/poi-scratchpad-3.10.1-20140818.jar 追加 apps/jdk180u**/jre/lib/ext/poi-3.10.1-20140818.jar ver Up apps/jdk180u**/jre/lib/ext/poi-ooxml-3.10.1-20140818.jar ver Up apps/jdk180u**/jre/lib/ext/poi-ooxml-schemas-3.10.1-20140818.jar ver Up [Bulkset エラー回避] viewタグに、columnBulkSet を設定したり、システムリソースで、VIEW_USE_DEFAULT_BULKSET を true で運用する場合、カラムタグの種類に応じて、SQL実行エラー等が 発生するケースがあります。 Editor_QUERY、Renderer_MULTIQUERY、Renderer_QUERY については、5.7.9.0 (2014/08/08) で 個別に対応しましたが、今後の対応を考えると、AbstractViewForm#getSortedColumnLabel(int)で エラーを処理する仕組みも入れておきます。 個別対応分は、現状のまま、残しておきます。 ここでは、エラー発生時は、バルクセットのカラムを作成しないことにします。 hayabusa.html.AbstractViewForm#getSortedColumnLabel( final int column ) [DB定義DB関連] DB定義DB関連で、テーブル名のあいまい検索を、like のままにするが % 記号は、自分で入力する方式に変更します。 これは、例えば履歴テーブルを、XX01R とする場合、%R とすると、従来は、 %R% で検索されてしまい、テーブル名の途中に R が含まれていてもヒットしたためです。 検索カラムの初期値は、% を入れていますが、通常の曖昧と区別する意味で入れているだけです。 gf/jsp/GF2010 テーブル gf/jsp/GF2020 テーブルカラム gf/jsp/GF2030 インデックス gf/jsp/GF2040 インデックスカラム gf/jsp/GF2180 移行DB一覧 [ファイルリンクの不正文字] ファイルのアップロード、ダウンロードにおいて、href 部分はURLEncodeしていませんが、 そこに、";" や "%" があると、ダウンロードできなくなります。 useHrefEncode="true" にすることで、href 部分に対して、(;%)の2文字だけ URLEncodeを 行うかどうかを指定します(初期値:false) 初期値は、システムパラメータの USE_HREF_URLENCODE[=false] です。 なお、ファイルに限定する意味で、useGamenId="false" の場合のみ、有効にします。 hayabusa.common.SystemData#USE_HREF_URLENCODE hayabusa.taglib.LinkTag#release2() hayabusa.taglib.LinkTag#setUseHrefEncode( final String useEnc ) hayabusa.taglib.LinkTag#doEndTag() hayabusa.html.ViewLink_LINK#clear() hayabusa.html.ViewLink_LINK#setDBTableModel( final DBTableModel tbl ) hayabusa.html.ViewLink_LINK#getMarkerString( final int row,final int clm,final String value ) gf/jsp/GF6260/result.jsp サンプル [ライブラリ更新] JKD と POI と JFreeChart のライブラリを更新します。 jdk180u20 , tomcat8.0.11 , poi-3.10.1-20140818.jar , jfreechart-1.0.19 なお、WORDやPoworPoint関連の処理で、poi-scratchpad-3.10.1-20140818.jar を 新規追加していますので、必ず設定が必要です。 jdk180u20/jre/lib/ext/jfreechart-1.0.19.jar jdk180u20/jre/lib/ext/jcommon-1.0.23.jar jdk180u20/jre/lib/ext/poi-3.10.1-20140818.jar jdk180u20/jre/lib/ext/poi-ooxml-3.10.1-20140818.jar jdk180u20/jre/lib/ext/poi-ooxml-schemas-3.10.1-20140818.jar jdk180u20/jre/lib/ext/poi-scratchpad-3.10.1-20140818.jar 特に新規追加 [websocket関連] websocket 関連で、サンプルを作成します。サーブレットではありませんが、 多くのクラスを作成する予定もない為、とりあえず hayabusa.servlet パッケージに 置いておきます。 hayabusa.servlet.WebSocketDemo.java build.xml に、lib/websocket-api.jar を追加します。 websocket 関連クラスをコンパイルする時に必要です。 gf/build.xml [javadoc更新] 各パッケージのコメントを、package.html で作成していましたが、jdk1.5 以降は、 package-info.java で作成することが推奨されています。(知らなかった…) 既存の package.html は package-info.java に置き換えます。 取りあえず、トップパッケージのみ変更します。 標準ドックレット com.sun.tools.doclets.standard.Standard をカスタマイズして、 クラスの概要説明部分の文書を、
 ・・・ 
処理します。 fukurou.taglet.DocletStandard.java gf/build.xml を追加 fukurou.taglet.DocletStandard.java {@og.value ・・・・} 処理が、{@og.tag} , {@og.formSample} の処理下においては処理されていなかったので、 処理する様に変更しました。 以前は、{@link ・・・・} のみ、上記タグレット中に処理していました。 fukurou.taglet.AbstractTaglet#text( final Tag tag ) 新規追加 fukurou.taglet.AbstractTaglet#inline( final String key , final String body , final Tag tag ) 新規追加 fukurou.taglet.AbstractTaglet#link( final String in ) 廃止 fukurou.taglet.DocletUtil#valueTag( final Tag tag ) fukurou.taglet.DocletUtil#valueTag( final String txt , final Tag tag ) fukurou.taglet.DocletUtil#doc03LinkTag( final Tag tag ) fukurou.taglet.DocletUtil#doc03LinkTag( final String txt ) fukurou.taglet.DocletUtil#linkTag( final String txt ) fukurou.taglet.TagletFormSampletoString( final Tag tagTag ) fukurou.taglet.TagletFormSampletoString( final Tag[] tagTags ) fukurou.taglet.TagletRevtoString( final Tag tagTag ) fukurou.taglet.TagletRevtoString( final Tag[] tagTags ) fukurou.taglet.TagletTag#toString( final Tag tagTag ) fukurou.taglet.TagletTag#toString( final Tag[] tagTags ) [ViewForm_ImageTimeBar 関連] MICSの稼動チャート で使用している、ViewForm_ImageTimeBar を修正します。 データレコードが存在しない場合の処理を、現状では、useLastData=true(初期値) の場合は、以降のデータは無限に継続している物として扱いますが、検索時の時刻を 元に、それ以降は、表示しないようにします。 既存の、useLastData=false にすると、継続していないとする方式は、残します。(たぶん不要) plugin.view.ViewForm_ImageTimeBar#create( final int startNo, final int pageSize ) plugin.view.ViewForm_ImageTimeBar#paramInit() plugin.view.ViewForm_ImageTimeBar#imageMeker( final Graphics2D g2,final Color oldColor, final int imgX,final int imgY,final int imgW, final boolean useTipsLink,final int row,final StringBuilder out ) [jFreeChart 関連] series データの取得で、series名(ここではカラム名)を、ResultSetMetaData の getColumnName( int ) で取得していましたが、通常は、getColumnLabel( int ) で取得すべきでした。 また、カラム名は、toUpperCase しておきます。 ORACLE は、getColumnName と getColumnLabel で同じ値を返していましたが、fireBird では、 getColumnName が、 NULL で返ってきたため、series 表示がうまくできていませんでした。 hayabusa.io.HybsJDBCCategoryDataset2#innerQuery( final Connection con, final String query ) throws SQLException { HybsJDBCCategoryDataset は、未使用なので、廃止 hayabusa.io.HybsJDBCCategoryDataset.java 廃止 rangeSkip 属性 の初期値を、-1(設定なし)に変更します。 前回の JFreeChart のVerUpで、グリッド線の表示が5個おきに変わったようです。 設定する値を マイナスにすると、初期設定の値を使用するように変更します。 hayabusa.taglib.ChartCreateTag#release2() hayabusa.taglib.ChartCreateTag#setRangeSkip( final String rngSkip ) の JavaDocコメント hayabusa.io.ChartCreate#setRangeSkip( final int rngSkip ) の JavaDocコメント hayabusa.io.HybsCategoryPlot#setRangeSkip( final int rngSkip ) の JavaDocコメント hayabusa.io.HybsCategoryPlot#drawRangeGridlines( final Graphics2D g2, final Rectangle2D dataArea,final List ticks ) { 複数チャート(series)描画時のラベル名を指定する seriesLabels 属性を追加します。 これは、通常、Select文で、series のラベルは、AS を使用して指定しますが、 これに、ラベルリソースを適用する機能です。 ORACLEの場合は、{@LBL.XXXX} で、日本語化した 別名を付けても、ResultSetMetaData#getColumnLabel(int)で 日本語名を取得できますが、firebird の場合、文字化けします。(UTF-8とShift-JISの問題?) そこで、外部から、別名部分を指定する機能が必要になりました。 なお、select category,series1,series2,・・・・,seriesN from table なので、seriesLabels で指定するのは、 series1,series2,・・・・,seriesN の部分になります。 hayabusa.taglib.ChartDatasetTag#setSeriesLabels( final String labels ) hayabusa.io.ChartDataset#makeDataset( final Connection conn,final String sql ) hayabusa.io.ChartDataset#makeDataset( final DBTableModel table ) hayabusa.io.ChartDataset#setSeriesLabels( final String[] labels ) hayabusa.io.ChartFactory#newDataset( final Connection conn,final String query,final String type ) hayabusa.io.ChartFactory#newDataset( final DBTableModel table , final String type ) hayabusa.io.ChartFactory#getSeriesLabels( final DBTableModel table , final String type,final String[] lbls ) hayabusa.io.HybsJDBCCategoryDataset2#HybsJDBCCategoryDataset2( final Connection connection, final String query, final String lbls ) hayabusa.io.HybsJDBCCategoryDataset2#executeQuery( final Connection con, final String query ) hayabusa.io.HybsJDBCCategoryDataset2#innerQuery( final Connection con, final String query, final String[] seriesLabels ) キャッシュ時の制限時間を、秒で指定できるようにします。 現在は、システムリソースの CHART_CACHE_TIME = 600 (秒) で、一律指定しかできませんが、 タグ単位に、指定できるようにします。 何も指定しない場合は、従来通り、システムリソースの CHART_CACHE_TIME が使用されます。 (useCache="true" に設定した場合) これに伴い、tld ファイルに属性追加します。 キャッシュ対象を、JFreeChart オブジェクトではなく、イメージファイルに変更します。 従来は、seriesPikup が更新されない場合は、キャッシュされた JFreeChart オブジェクト から DB検索なしで、イメージ情報を再作成する仕様でしたが、JFreeChart オブジェクト 自体を 長期間キャシュする割に、効果が薄かったため、作成済みのイメージファイルのキャッシュに 限定します。(正確には、イメージファイルを返すタグ文字列のキャッシュです。) hayabusa.taglib.ChartCreateTag#doEndTag() hayabusa.taglib.ChartCreateTag#release2() hayabusa.taglib.ChartCreateTag#setCacheTime( final String ccTime ) hayabusa.taglib.ChartCreateTag#$ChartCache#ChartCache( final String mkey,final int ccTime ) hayabusa.taglib.ChartCreateTag#$ChartCache#setJFreeChart( final JFreeChart chart ) gf/src/META-INF/hybs-taglib.tld gf/WEB-INF/hybs-taglib.tld [DirectXMLSaveTag の修正] DirectXMLSaveTag に、useTimeStamp 属性を追加します。 これは、XMLファイルの読み取りで、タイムスタンプ管理を行うかどうか指定する属性です。 初期値は、互換性より、false です。 hayabusa.taglib.DirectXMLSaveTag#doEndTag() hayabusa.taglib.DirectXMLSaveTag#release2() hayabusa.taglib.DirectXMLSaveTag#setUseTimeStamp( final String flag ) gf/jsp/common/gamen/06_INSTALL/directXMLSave.jsp gf/_build.bat gf/build.xml gf/src/META-INF/hybs-taglib.tld gf/WEB-INF/hybs-taglib.tld 6.0.1.3 (2014/09/08) 6.0.2.0 (2014/09/12) 版の暫定リリース jFreeChart 関連の修正を行ったところまでで、一部のシステムだけリリースします。 6.0.1.2 (2014/08/08) 5.7.9.0 (2014/08/08) を取り込みました。 (tldファイルが更新されましたが、今回は4桁目のみのアップにします。) [WriteTableTag 修正] WriteTableTag で、columns 指定に、カラム飛ばしできる機能を追加します。 これは、,,, など、書き込まないカラムを、未記入にすることで実現します。 refFileURL、refFilename、refSheetName とともに使用すれば、ある程度のレイアウト設定が可能です。 hayabusa.taglib.WriteTableTag#setColumns( final String clms ) JavaDocのみ修正 hayabusa.io.AbstractTableWriter#createDBColumn() hayabusa.io.AbstractTableWriter#writeLabel( final DBTableModel table,final PrintWriter writer ) hayabusa.io.AbstractTableWriter#writeName( final DBTableModel table,final PrintWriter writer ) hayabusa.io.AbstractTableWriter#writeSize( final DBTableModel table,final PrintWriter writer ) hayabusa.io.AbstractTableWriter#writeClass( final DBTableModel table,final PrintWriter writer ) plugin.io.TableWriter_Default#writeData( final DBTableModel table,final PrintWriter writer ) plugin.io.TableWriter_XML#writeData( final DBTableModel table,final PrintWriter writer ) plugin.io.TableWriter_T#writeData( final DBTableModel table,final PrintWriter writer ) plugin.io.TableWriter_JSON#writeData( final DBTableModel table,final PrintWriter writer ) plugin.io.TableWriter_Properties#writeData( final DBTableModel table,final PrintWriter writer ) plugin.io.TableWriter_Fixed#writeData( final DBTableModel table,final PrintWriter writer ) plugin.io.TableWriter_CSV#writeData( final DBTableModel table,final PrintWriter writer ) plugin.io.TableWriter_CSV2#writeData( final DBTableModel table,final PrintWriter writer ) plugin.io.TableWriter_CSV3#writeData( final DBTableModel table,final PrintWriter writer ) plugin.io.TableWriter_Data#writeData( final DBTableModel table,final PrintWriter writer ) plugin.io.TableWriter_Data2#writeData( final DBTableModel table,final PrintWriter writer ) plugin.io.TableWriter_CalcDef#writeData( final DBTableModel table,final PrintWriter writer ) plugin.io.TableWriter_Calc#writeLabel( final DBTableModel table, final PrintWriter writer ) plugin.io.TableWriter_Calc#writeName( final DBTableModel table, final PrintWriter writer ) plugin.io.TableWriter_Calc#writeSize( final DBTableModel table, final PrintWriter writer ) plugin.io.TableWriter_Calc#writeClass( final DBTableModel table, final PrintWriter writer ) plugin.io.TableWriter_Calc#writeData( final DBTableModel table,final PrintWriter writer ) plugin.io.TableWriter_Excel#writeLabel( final DBTableModel table, final PrintWriter writer ) plugin.io.TableWriter_Excel#writeName( final DBTableModel table, final PrintWriter writer ) plugin.io.TableWriter_Excel#writeSize( final DBTableModel table, final PrintWriter writer ) plugin.io.TableWriter_Excel#writeClass( final DBTableModel table, final PrintWriter writer ) plugin.io.TableWriter_Excel#writeData( final DBTableModel table,final PrintWriter writer ) データの書き込み開始位置を設定する属性 skipRowCount を追加します。 なお、この機能は、TableWriter_Excel のみに実装します。 hayabusa.taglib.WriteTableTag#release2() hayabusa.taglib.WriteTableTag#create( final PrintWriter out ) hayabusa.taglib.WriteTableTag#setSkipRowCount( final String count ) hayabusa.io.TableWriter#setSkipRowCount( int skipRowCount ) hayabusa.io.AbstractTableWriter#setSkipRowCount( final int skipRowCount ) plugin.io.TableWriter_Excel#setSkipRowCount( final int skipRowCount ) その他、メソッド統合、protected→private化など、修正 plugin.io.TableWriter_Excel#writeDBTable( final PrintWriter writer ) 廃止 plugin.io.TableWriter_Excel#getNewSheetNameByName( final Workbook workbook, final String nameSet) protected→private化 plugin.io.TableWriter_Excel#createWorkbook( final String fname , final boolean isOpen ) メソッド統合 refSheetName が、未指定の場合は、先頭のシートを使用するように変更します。 hayabusa.taglib.WriteTableTag#setRefSheetName( final String sheet ) JavaDocのみ修正 6.0.1.1 (2014/07/18) 5.7.8.1 (2014/07/18) を取り込みました。 (tldファイルが更新されましたが、今回は4桁目のみのアップにします。) 6.0.1.0 (2014/07/04) tldファイルが更新されましたので、3桁目 VerUpします。 5.7.7.2 (2014/06/20) 5.7.7.3 (2014/06/27) 5.7.8.0 (2014/07/04) を取り込みました。 6.0.0.3 (2014/06/13) 5.7.7.0 (2014/06/06) 5.7.7.1 (2014/06/13) を取り込みました。 6.0.0.2 (2014/05/23) 5.7.6.0 (2014/05/02) 5.7.6.2 (2014/05/16) 5.7.6.3 (2014/05/23) を取り込みました。 6.0.0.1 (2014/04/25) [廃止クラス,廃止メソッド] ・fukurou.process.Process_UnicodeEscape.java 廃止 fukurou.process.Process_StringUtil を利用してください。 ・fukurou.process.ConnData.java 廃止 fukurou.db.ConnectionFactory 等をご使用ください。 ・fukurou.process.ConnDataFactory.java 廃止 fukurou.db.ConnectionFactory 等をご使用ください。 ・hayabusa.common.InitFileLoader.java 廃止 fukurou.xml.XMLFileLoader.java を ご利用ください。 ・hayabusa.taglib.StackHeaderTag.java 廃止 hayabusa.taglib.GanttHeaderTag を ご利用ください。 ・hayabusa.taglib.TableExistTag.java 廃止 hayabusa.taglib.DataCheckTag を使用してください ・hayabusa.taglib.TabTableTag.java 、TabTag.java 廃止 hayabusa.taglib.TabLinkTag、TabTableTag の使用をご検討ください。 ・hayabusa.taglib.UpdateTag.java 廃止 hayabusa.taglib.TableUpdateTag を利用するようにしてください。 ・hayabusa.taglib.ColumnEditorTag#setParameter( final String prm ) columnEditor#parameter 廃止 → param を使用してください。 ・hayabusa.taglib.DataCheckTag#setMsg( final String id ) hayabusa.taglib.DataCheckTag#setMsgParamKeys( final String keys ) dataCheck#msg 廃止 → lbl を使用してください。 dataCheck#msgParamKeys 廃止 → lblParamKeys を使用してください。 ・hayabusa.taglib.TopMenuTag#setUseButtonScript( final String flag ) topMenu#useButtonScript は、すでに何も使われていません。そのまま削除してください。 ・hayabusa.taglib.ValueTag#setNullSet( final String flag ) value#nullSet は、すでに何も使われていません。そのまま削除してください。 gf/src/META-INF/hybs-taglib.tld gf/WEB-INF/hybs-taglib.tld 6.0.0.0 (2014/04/11) [エンジン Ver6 リリース] openGion Ver6 をリリースします。 主な、Ver5からの変更点は、 ・HTML5,CSS3 対応 基本的には、ネイティブモードのHTML5を前提にします。 システムパラメータの USE_IE7_HEADER = "false" , USE_HTML5_HEADER = "true" を、デフォルトに変更します。 どうしても、互換モードでないとまずい場合は、この2つの パラメータを変更してください。 hayabusa\common\SystemData#USE_IE7_HEADER = "false" hayabusa\common\SystemData#USE_HTML5_HEADER = "true" ・openoffice3.4.1 対応 openoffice3.2 ⇒ openoffice3.4.1 にアップします。 openoffice4 への対応は、しばらく保留します。 ・jdk180 , tomcat8.0.x を基準環境とします。 ・apps/jdk180uXX/jre/lib/ext 以下の拡張ライブラリのバージョンアップ これに伴い、本体の新機能が旧のままでは使用できなくなったり、 使い方が異なっていたりするため、Ver6のエンジンをVer5の環境に そのまま適用できません。ただし、JSPのソース自体は、互換性があるはずです。 commons-codec-1.3.jar ⇒ commons-codec-1.9.jar 追加 commons-compress-1.6.jar commons-net-ftp-2.0.jar ⇒ commons-net-3.3.jar geronimo-stax-api_1.0_spec-1.0.jar 削除 追加 dom4j-1.6.1.jar h2-1.1.118.jar ⇒ h2-1.3.175.jar hsqldb.jar ⇒ hsqldb_2.3.1.jar ISOcoated_v2_eci.jar 同じ ISOcoated_v2_eci.jar 追加 jai_codec1.1.3.jar 追加 jai_core1.1.3.jar 追加 jai_imageio1.1.jar jaxen-1.1.6.jar 同じ jaxen-1.1.6.jar jaybird-full-2.1.6.jar ⇒ jaybird-full-2.2.4.jar jcifs-1.3.14.jar ⇒ jcifs-1.3.17.jar jcommon-1.0.17.jar ⇒ jcommon-1.0.21.jar jfreechart-1.0.14 ⇒ jfreechart-1.0.17.jar jsch-0.1.42.jar ⇒ jsch-0.1.50.jar junit-4.10.jar 削除 jxl-266.jar ⇒ jxl-2.6.12.jar mail-141.jar ⇒ mail-1.5.1.jar mysql-connector-java-5.1.10-bin.jar ⇒ mysql-connector-java-5.1.28-bin.jar odfdom.jar ⇒ odfdom_0.7.jar 追加 ogHsqldbExtension.jar ojdbc6.jar ⇒ ojdbc6.jar orai18n.jar 同じ orai18n.jar 追加 poi_commons-logging-1.1.jar log4j-1.2.15.jar ⇒ poi_log4j-1.2.13.jar poi-3.6-20091214.jar ⇒ poi-3.9-20121203.jar poi-ooxml-3.6-20091214.jar ⇒ poi-ooxml-3.9-20121203.jar poi-ooxml-schemas-3.6-20091214.jar ⇒ poi-ooxml-schemas-3.9-20121203.jar postgresql-8.4-701.jdbc4.jar ⇒ postgresql-9.3-1100.jdbc41.jar Qrcode.jar 同じ Qrcode.jar sqljdbc.jar ⇒ sqljdbc4_4.0.2206.100.jar xercesImpl.jar ⇒ xercesImpl-2_11_0.jar xml-apis.jar ⇒ xml-apis-2_11_0.jar xmlbeans-2.3.0.jar ⇒ xmlbeans-2.6.0.jar [ojdbc7_12.1.0.1 対応] ORACLEのJDBCドライバを、11g用から、12c用に変更するに当たり、警告が出るので対応します。 oracle.sql.ARRAY ⇒ oracle.jdbc.OracleArray に置き換えます。 ただし、JDBCドライバ自体は、ORACLE 9i への接続ができなくなるため、従来通りとします。 hayabusa\taglib\DirectWriteTableTag.java(40): import oracle.sql.ARRAY; plugin\query\Query_JDBCArrayCallable.java(34): import oracle.sql.ARRAY; plugin\query\Query_JDBCErrMsg.java(29): import oracle.sql.ARRAY; plugin\query\Query_JDBCKeyEntry.java(29): import oracle.sql.ARRAY; plugin\query\Query_JDBCPLSQL.java(30): import oracle.sql.ARRAY; hayabusa\taglib\DirectWriteTableTag.java(45): import oracle.jdbc.OracleTypes; plugin\query\Query_JDBCArrayCallable.java(34): import oracle.jdbc.OracleTypes; plugin\query\Query_JDBCErrMsg.java(26): import oracle.jdbc.OracleTypes; plugin\query\Query_JDBCKeyEntry.java(26): import oracle.jdbc.OracleTypes; plugin\query\Query_JDBCPLSQL.java(27): import oracle.jdbc.OracleTypes; [odfdom-java-0.8.9 対応] 実質的には非常に多くの修正が発生する為、今回の置き換えは実施しません。 https://incubator.apache.org/odftoolkit/odfdom/ReleaseNotes.html odfdom.OdfFileDom ⇒ odfdom.pkg.OdfFileDom odfdom.doc.office.OdfOfficeAutomaticStyles ⇒ odfdom.incubator.doc.office.OdfOfficeAutomaticStyles org.odftoolkit.odfdom.doc.office.OdfOfficeSpreadsheet ⇒ org.odftoolkit.odfdom.dom.element.office.OfficeSpreadsheetElement odfdom.doc.text.OdfTextParagraph ⇒ odfdom.incubator.doc.text.OdfTextParagraph odfdom.doc.office.OdfOfficeMasterStyles ⇒ odfdom.incubator.doc.office.OdfOfficeMasterStyles odfdom.doc.style.OdfStyle ⇒ odfdom.incubator.doc.style.OdfStyle org.odftoolkit.odfdom.doc.style ⇒ org.odftoolkit.odfdom.dom.style plugin\io\TableWriter_Calc.java plugin\io\TableWriter_CalcDef.java plugin\io\TableWriter_CalcDefAno.java plugin\io\TableWriter_Calc.java plugin\io\TableWriter_CalcDef.java plugin\io\TableWriter_CalcDefAno.java [ファイルアップロード機能] ファイルアップロードで、5.7.1.2 (2013/12/20) で一旦保留にしていたzip 対応を行います。 この機能は、org.opengion.fukurou.util.ZipArchive.java クラスを使用しているため、 org.apache.commons.compress.* パッケージ(commons-compress-1.6.jar)が必要です。 hayabusa.taglib.FileUploadTag.java 全般的に修正 hayabusa.servlet.MultipartRequest#MultipartRequest(final HttpServletRequest request, … hayabusa.servlet.MultipartRequest#getReqParamFileName( final String fname ) hayabusa.common.SystemInstaller#install( final File buildArchive ) hayabusa.report2.ExecProcess#parse() fukurou.util.ZipFileUtil.java 廃止