Télécharger la liste

Description du projet

Projectの概要

JSPカスタムタグをベースとした、Webアプリケーションフレームワークです。
SQLの知識さえあれば、データのCRUD操作をメインとした業務システムが 簡単に構築することができます。

このフレームワークは、村田機械株式会社の基幹システムを構築するために 開発され、ほぼ全ての基幹システムは、これを利用して構築し、稼動しています。

(基本機能)
・ユーザー管理         ・認証・アクセス制御
・多言語対応          ・Excel入出力機能
・ガントチャート表示、編集機能 ・定型帳票作成、発行機能
・定型メール送信機能      ・データベース定義管理機能
・バッチ処理機能

各種詳細情報及びドキュメントについては、openGion@Websiteを参照して下さい。


Java を含む標章は、米国 Sun Microsystems, Inc.の商標であり、同社のJava ブランドの技術を使用した製品を指します。
Excel は、Microsoft Corporationの米国及びその他の国における登録商標です。
コンテンツ中に記載された社名および製品名は、すべて各社の商標または登録商標です。

Système requise

System requirement is not defined

Livrée : 2014-01-10 15:04
opengion 5.7.2.0 (4 files Cacher)

Notes de release

5.7.2.0 (2014/01/10)
[ガントの週表示 バグ]
zoom="0" , "1" の場合の、週単位のヘッダー色制御で、休日データが
ある場合に、余分な </span>タグによって、ヘッダー色制御がおかしくなる
不具合を修正しました。
上段(月)と下段(日)で、上段の休日表示を削除した際に、対となる</span>を
消し忘れていた為。
hayabusa.taglib.GanttHeaderTag#makeZoom( final String upper ,final String lower ,final int add, final boolean useMonth )

[nullパスワード対応]
ConnectionFactory 内部の ConnectionPool で、パスワード が null の場合に、エラーに
なっていたので、パスワードが存在しな場合は、空文字に変更します。
具体的には、EDbid クラスの password の初期値を、空文字に変更します。
fukurou.db.EDbid#password 初期値を null から、"" に変更

[SystemParameter のエラー処理]
SystemParameter で、エラー時のメッセージを、見直します。
基本的には、一旦文字列にして、セットするようにします。
hayabusa.common.SystemParameter#loadParameter( final Class<?> cls )
hayabusa.common.SystemParameter#loadParameter( final String keyword )
RuntimeException は、catch しないようにします。
hayabusa.common.SystemParameter#loadDBResource( final Map<String,String> sysParam )
Throwable の情報をもう少し詳細に出します。
hayabusa.common.SystemParameter#makeSystemParameter( final ServletContext context )
fukurou.util.StringUtil#ogStackTrace( final Throwable th )
INSTALL_CONTEXTS で、初期インストールを行おうとするとき、SQLException 以外のエラーが
発生したり、テーブルが存在しないのに、正常終了で、null を返したりする場合がある為、
ver の初期値を、"none" にすることで、対応します。
hayabusa.common.SystemParameter#getOldMaxVersion()

[DB作成用のXML]
DB作成用のXMLファイルの index 作成では、DROP 構文を出力しないようにします。
基本的に、自動作成を考えると、既存のINDEXを削除して、作成するケースはほとんどないと
考えられます。
jsp/GF2140/result.jsp
ORACLE以外のデータベースでは、SRC、TRG、ARG のスクリプトは作成しません。
gf/build.xml
テーブル定義で、小数点の定義を作成する箇所が間違っていた。
plugin.table.TableFilter_TABLE_HSQLDB#makeLineList( final String[] data,final boolean first )
plugin.table.TableFilter_TABLE_POSGRE#makeLineList( final String[] data,final boolean first )
plugin.table.TableFilter_TABLE_SQLSERVER#makeLineList( final String[] data,final boolean first )

DB定義 で、テーブル GE56 のプライマリキーを、GE56_UQ で作成していましたが、
hsqldb の、IDENTITY カラム制約の関係で、通常のユニークキーとします。
DB定義 GE56 GE56_UQ ユニーク GEIDX01 16 16 SYSTEM_ID YKNO UNIQSEQ GE
(データベース上の、値の変更。)
【定義管理】→ インデックス → システムID=GE 、 テーブル名=GE56 で、インデックスタイプを変更します。

[必須自動チェックのコントロール]
query.jspで設置したカラムに対してエンジンでhiddenを出力しておき、
検索時に自動でチェックを行うカラムを取得できるようになっていますが、
スクリプト等(eventColumn含む)でmustのコントロールを行う際に
邪魔になる場合があるため、属性で出力を制御できるようにします。
useMustHidden属性をcolumn,input,select,textareaタグで利用できるようにします。
hayabusa.taglib.HTMLTagSupport#useMustHidden
hayabusa.taglib.HTMLTagSupport#setUseMustHidden( final String flag )
hayabusa.taglib.HTMLTagSupport#makeMustHidden( final String name )
hybs-taglib.tld

5.7.1.2 (2013/12/20)
[javadoc の修正]
若干のJavaDocの修正を行います。
og:message msg ⇒ lbl など。
hayabusa\taglib\FileTag.java(74): * &lt;og:message msg="RKE_0157" comment="回路図が存在しません。" /&gt;
hayabusa\taglib\FileUploadTag.java(107): * &lt;og:message msg="MSG0003" comment="ファイルの登録が完了しました。" /&gt;
hayabusa\taglib\FileUploadTag.java(136): * &lt;og:message msg="MSG0003" comment="ファイルの登録が完了しました。" /&gt;
hayabusa\taglib\LinkTag.java(104): * &lt;img src="{&#064;SYS.JSP}/image/insert.gif" alt="Excel Insert" /&gt;&lt;og:message msg="MSG0057" /&gt;
hayabusa\taglib\MessageTag.java(40): * ●形式:&lt;og:message msg="…" val0=[…] … /&gt;
hayabusa\taglib\MessageTag.java(69): * &lt;og:message msg=&quot;MSG0032&quot; language=&quot;ja&quot; /&gt;
hayabusa\taglib\MessageTag.java(75): * &lt;og:message msg=&quot;MSG0032&quot; &gt;検索条件&lt;/og:message&gt;
hayabusa\taglib\ButtonTag.java(73): * &lt;og:button type="submit" name="test" value="1" msg="MSG0103" /&gt; MessageResource プロパティのラベル使用したいときはmsg属性を使います。
hayabusa\taglib\DataCheckTag.java(78): * msg = "{&#064;msg}"
hayabusa\taglib\FieldsetTag.java(39): * このタグの lbl 属性か、msg 属性に、リソース情報を記述することで、直接 legendタグ を
hayabusa\taglib\FieldsetTag.java(44): * lbl="…" or msg="…" ラベルかメッセージリソースのキー
hayabusa\taglib\FieldsetTag.java(70): * &lt;og:fieldset msg="GEM0001" defaultNone="false" &gt;
hayabusa\taglib\FileUploadTag.java(87): * &lt;tr&gt;&lt;og:input type="text" name="submitter" value="{&#064;USER.JNAME}" size="20" msg="MSG0014" /&gt;&lt;/tr&gt;
hayabusa\taglib\FileUploadTag.java(89): * &lt;og:input type="file" name="file_01" size="30" msg="MSG0015" /&gt;
hayabusa\taglib\FileUploadTag.java(92): * &lt;og:input type="file" name="file_02" size="30" msg="MSG0015" /&gt;
hayabusa\taglib\FileUploadTag.java(95): * &lt;og:input type="file" name="file_03" size="30" msg="MSG0015" /&gt;
hayabusa\taglib\HelpTag.java(58): * &lt;og:help guiInfoKey="{&#064;GUI.KEY}" msg="HELP" /&gt;
hayabusa\taglib\HelpTag.java(63): * msg = "メッセージリソースのメッセージIDを指定します。"
hayabusa\taglib\HelpTag.java(377): * このURLが指定されない場合、ヘルプリンクは、msgLbl属性で指定されたテキストで表示されます。
hayabusa\taglib\MessageTag.java(27): * msg 属性に メッセージリソースのキーを与えることで、 ロケールにあわせたリソースを使用して、
hayabusa\taglib\MessageTag.java(35): * msg 属性を使用する場合、val0 ~ val9 までの引数を使用することができます。これは、
hayabusa\taglib\MessageTag.java(37): * msg 属性とlbl 属性は同時に使用できません。
hayabusa\taglib\MessageTag.java(210): * msg 属性でメッセージリソースから読み取りますが,開発途中で
hayabusa\taglib\MessageTag.java(365): * なお、command によるメッセージの自動選択は、msg , lbl ともにセットされていない
hayabusa\taglib\OptionTag.java(59): * &lt;og:select name="ORDER_BY" msg="ORDER_BY"&gt;
hayabusa\taglib\OptionTag.java(64): * &lt;og:select name="ORDER_BY" msg="ORDER_BY"&gt;
hayabusa\taglib\OptionTag.java(68): * MessageResource プロパティの値を使用したいとききはmsg属性を使います。
hayabusa\taglib\OptionTag.java(70): * &lt;og:option msg="MSG0001" /&gt;
hayabusa\taglib\OptionTag.java(178): * lbl 属性/msg 属性でセットされた場合は,そちらを優先します。
hayabusa\taglib\QueryButtonTag.java(79): * msg = "MSG0010" 検索ボタンに表示するメッセージID(初期値:MSG0010)
hayabusa\taglib\QueryOptionTag.java(88): * &lt;og:option msg="" /&gt; 初期値を設定したいときはvalue属性を使います。
hayabusa\taglib\SelectTag.java(103): * &lt;og:option msg="MSG0001" /&gt; MessageResource プロパティの値を使用したいとききはmsg属性を使います。
hayabusa\taglib\ViewIGanttTag.java(88): * &lt;og:iGanttBar type="1" colorNo="[COLOR]" start="[DYORDER]" end="[DYNOKI]" msg="[PN]" /&gt;
hayabusa\taglib\ViewIGanttTag.java(89): * &lt;og:iGanttBar type="0" src="../image/dia_blue.gif" start="[DYORDER]" msg="開始" /&gt;
hayabusa\taglib\ViewIGanttTag.java(90): * &lt;og:iGanttBar type="0" src="../image/dia_red.gif" end="[DYNOKI]" msg="終了" /&gt;
hayabusa\taglib\ViewIGanttTag.java(137): * &lt;og:iGanttBar type="1" colorNo="[COLOR]" start="[DYORDER]" end="[DYNOKI]" msg="[COSTCLM]"
hayabusa\taglib\ViewIGanttTag.java(139): * &lt;og:iGanttBar type="0" src="../image/dia_blue.gif" start="[DYORDER]" msg="開始" /&gt;

[msg ⇒ msglbl 変更]
getMsglbl() で取得している値を格納する変数(ローカル変数)名を、msg ⇒ msglbl に変更します。
大した意味はありません。
hayabusa\taglib\BackGamenTag#getMsglbl( final String gamenId )
hayabusa\taglib\HideMenuTag#doStartTag()
hayabusa\taglib\LinkTag#doStartTag()

[msg ⇒ errMsg 変更]
エラー発生時に、Exception を throw する時、一旦、String型変数に入れていますが、
その変数名を、errMsg に統一します。
ただし、org.opengion.fukurou.util. オブジェクトの一時変数のケースもあります。
hayabusa\db\DBTableModelEditor.java(79): throw new HybsSystemException( msg );
hayabusa\remote\TransferExecWrapper.java(102): throw new HybsSystemException( msg, ex );
hayabusa\remote\TransferReadWrapper.java(124): throw new HybsSystemException( msg, ex );
hayabusa\resource\UserInfo.java(916): throw new HybsSystemException( msg );
hayabusa\resource\UserInfo.java(921): throw new HybsSystemException( msg );
hayabusa\resource\UserInfo.java(951): throw new HybsSystemException( msg );
hayabusa\servlet\FileDownload.java(163): throw new HybsSystemException( msg );
hayabusa\taglib\EditConfigTag.java(164): throw new HybsSystemException( msg );
hayabusa\taglib\EditConfigTag.java(172): throw new HybsSystemException( msg );
hayabusa\taglib\ReadTableTag.java(277): throw new HybsSystemException( tempMsg.toString() );

[ファイル関係 改造]
FileUtil#copy で、copy先(toFile)のフォルダが存在しなければ、作成します。
fukurou.util.FileUtil#copy( final File fromFile,final File toFile,final boolean keepTimeStamp )

FileTag で、copy元(file1)のファイルが存在しなければ、エラーにします。
hayabusa.taglib.FileTag#actionExec( final String action )

[zipファイル]
zipファイルで、圧縮時のファイルのエンコードを指定できるようにします。
ファイルをZIPにするには、java.util.zipパッケージ を利用するのが一般的です。
ところが、ファイル名にUTF-8文字エンコーディングを利用する為、Windowsの世界では
これを取り扱うアプリケーションも少ないため、文字化けして見えてしまいます。
これを解決するには、エンコードが指定できるアーカイバをる要する必要があります。
有名どころでは、ant.jar に含まれる、org.apache.tools.zip と、Apache Commons の
org.apache.commons.compress です。
org.apache.tools.zip は、java.util.zip とほぼ同じ扱い方、クラス名が使えるので
既存のアプリケーションを作り変えるには、最適です。
openGion では、アーカイバ専用ということで、org.apache.commons.compress を
採用します。
fukurou\util\FileUtil#zip( final File zipFile , final File[] files , final String encording )
fukurou\util\FileUtil#zip( final ArchiveOutputStream aos , final File[] files )
hayabusa.servlet.MultipartRequest#MultipartRequest

入力ファイル名に、".zip" が、付く場合、アップロードされたファイル群を、ZIP圧縮します。
HTML5の複数ファイルアップロードで、一気に圧縮させる、などの使い方が可能です。
hayabusa.servlet.MultipartRequest#MultipartRequest
ただし、uploadタグの属性には、リクエスト変数が使えません。誤って設定することを
警告する意味で、uploadタグの属性に、{@XXXX} チェックを入れました。
hayabusa\taglib\FileUploadTag#setFileURL( final String url )
hayabusa\taglib\FileUploadTag#setFilename( final String fname )

[ZipFileUtil.java の大幅な見直し]
ZipFileUtil を、java.util.zipパッケージ から、org.apache.commons.compress に変更します。
これに伴い、内部構成の大幅な見直しと、外部インターフェースも変更します。
fukurou\util\ZipFileUtil.java
hayabusa\common\SystemInstaller#install( final File buildArchive )
hayabusa\report2\ExecProcess#parse()

[EditNameの初期値]
Edit機能を利用した場合に、通常は初期値として前回利用分がセットされますが、
システム/ユーザによって初期値をNULLに設定できるようにします。
システムリソースUSE_DEFAULT_EDITNAMEで設定しますが、false指定以外は今まで通りの動作です。
hayabusa.common.SystemData#USE_DEFAULT_EDITNAME
hayabusa.taglib.QueryButtonTag#doEndTag()

[日本語ファイルのIE11対応]
IE11はUserAgnetが変更になりましたが、fileDownloadサーブレットの日本語対応ロジックの影響で
IE11の非互換モードではサーブレット経由のダウンロードが上手くいきませんでした。
とりあえず、新しいAgent(Trident)に対応させておきます。
hayabusa.servlet.FileDownload#doPost( final HttpServletRequest request, final HttpServletResponse response )

5.7.1.1 (2013/12/13)
[DocletSpecific 修正]
DocletSpecific で、VERSION と、serialVersionUID の値を求めるのに、
Class.forName ではなく、FieldDoc から取得するようにします。
Class.forName では、Class構築ができないケースがあり、エラーの為、
値が求められないケースがありました。
fukurou.taglet.DocletSpecific#checkTag2( final String fullName, final ClassDoc classDoc )
fukurou.taglet.DocletSpecific#findFieldDoc( final ClassDoc classDoc ,final String key )
fukurou.taglet.DocletSpecific#getSerialVersionUID( final String clsName ) 廃止
fukurou.taglet.DocletSpecific#getFieldVERSION( final String clsName ) 廃止

上記に伴う、チェックの結果、VERSION と、serialVersionUID の値を修正しました。
fukurou\taglet\DocletSpecific.java
fukurou\util\QrcodeImage.java
hayabusa\taglib\TopMenuTag.java
hayabusa\taglib\TableUpdateParamTag.java
hayabusa\taglib\ReportTableTag.java
hayabusa\taglib\QueryButtonTag.java
hayabusa\taglib\JspCreateTag.java
hayabusa\taglib\HelpTag.java
hayabusa\taglib\GanttHeaderTag.java
hayabusa\taglib\CommonForwardTag.java
hayabusa\taglib\ChartCreateTag.java
plugin\column\Renderer_QUERY.java
plugin\column\Editor_QUERY.java
plugin\daemon\Daemon_Transfer.java
plugin\daemon\Daemon_Report.java
plugin\query\Query_JDBCTableUpdate.java
plugin\query\Query_JDBCPrepared.java
plugin\view\ViewForm_HTMLAjaxTreeTable.java

[Javadoc 見直し]
Javadoc出力で、改行などの見直しを行いました。
タグリブマニュアルの見え方を少し変更します。
fukurou.taglet.DocletParam#start( final RootDoc root )
fukurou.taglet.DocletParam#writeContents( final ClassDoc[] classes,final DocletTagWriter writer )
fukurou.taglet.DocletPlugin#start( final RootDoc root )
fukurou.taglet.DocletPlugin#writeContents( final ClassDoc[] classes,final DocletTagWriter writer )
fukurou.taglet.DocletSpecific#start( final RootDoc root )
fukurou.taglet.DocletSpecific#writeContents( final ClassDoc[] classes,final DocletTagWriter writer )
fukurou.taglet.DocletTaglib#start( final RootDoc root )
fukurou.taglet.DocletTaglib#writeContents( final ClassDoc[] classes,final DocletTagWriter writer )
fukurou.taglet.DocletTagWriter#printTag( final Tag[] tag )

[HTML5 ファイルアップロード対応]
HTML5 から、ファイルアップロード の複数選択(multiple)が
可能になりましたので、その対応を行います。
受け側で、同一名称が存在する場合の処理を入れることで、
複数選択時にも、取り込めるようにします。
hayabusa.servlet.UploadedFile.java 新規追加
hayabusa.servlet.MultipartRequest.java 内部構成見直し

Changelog

No Changelogs