5.7.2.2 (2014/01/24) [MainProcess 修正] MainProcess で、ログ出力と、標準エラー出力の両方とも出力していましたが、 標準エラー出力を停止します。 単に、ログを標準出力に設定した場合、2重に出力されているように見えるためです。 fukurou.process.MainProcess#run() SQL実行エラーを少し詳細に出力します。 fukurou.process.Process_DBCountFilter#action( final LineModel data ) { fukurou.process.Process_DBMerge#action( final LineModel data ) { fukurou.process.Process_DBWriter#action( final LineModel data ) { fukurou.process.Process_FileCopy#action( final LineModel data ) { fukurou.process.Process_Grep#action( final LineModel data ) { fukurou.process.Process_GrepChange3action( final LineModel data ) { fukurou.process.Process_GrepChangeExcel3action( final LineModel data ) { fukurou.process.Process_DBCountFilter#makePrepareStatement( final LineModel data ) fukurou.process.Process_DBMerge#makePrepareStatement( final String table,final LineModel data ) fukurou.process.Process_DBReader#init( final ParamProcess paramProcess ) fukurou.process.Process_DBReader#next() fukurou.process.Process_DBReader#makeLineModel( final int rowNo ) fukurou.process.Process_DBReader#createLineModel( final ResultSet rs ) fukurou.process.Process_DBWriter#makePrepareStatement( final String table,final LineModel data ) fukurou.process.Process_DBWriter#execSql( final String sql ) [DatabaseConfig 修正] 5.6.8.2 (2013/09/20) Tomcat8で、xmlURL が取得できなくなっている対策 で、 xmlURL 変数が、null の場合の再取得で、Tomcat7 の場合でも、WEB-INF/classes フォルダが ないと取得できないケースがあり、(以前より判っている)その場合は、 相対パスでも取れないため、xmlURL 変数の null チェックが必要でした。 それを追加します。 fukurou.db.DatabaseConfig( final String xmlfile ) private final String XmlFilename ⇒ xmlFilename に修正します。 final なので、大文字で始まる固定変数という事だと思うが、static final だけを 大文字(しかも、変数名すべてを大文字)にしているため、これは、変数名を変更します。 fukurou.db.DatabaseConfig.java [UserInfoのsetAttribute 戻し] 5.6.8.1 (2013/09/13) で、対応した、UserInfo のセット値が null の場合は、 処理しないロジックで、null をセットして、メモリ上からクリアするロジックが あると、うまく動作しない(互換性がなくなっている)状況が判りましたので、 以前と同じに、null もセットできるように変更します。 # UserInfo で、セットする値が null、またはゼロ文字列の場合、 # attribute変数に設定しない(DBへも書き込まない)ように変更します。 # これは、無駄なメモリやDB書き込みを減らすためです。 hayabusa.resource.UserInfo#setAttribute( final String key,final String value, final boolean save, final boolean common ) hayabusa.resource.UserInfo#dbLoad() 元は、エンジン内部で使っている変数の無駄な処理を止めるためのロジックなので、 それらをピンポイントで null 登録しない様に変更します。 (EDIT_NAME_*** , EDIT_VIEW_**** , LAST_REQUEST_**** , REPORT_DEFAULT**** , ) ※ すべてを対応したかったが、jspから登録したり、色々なので、とりあえず、EDIT_NAME_SELECTED_ のみ対応 hayabusa.resource.UserInfo#setSelectedEdit( final String guikey, final String editName ) [oracle.sql.*** 関係] JDBCドライバで、ORACLE独自の実装箇所を、出来るだけ、java API の範囲で記述し直します。 Oracle 12c の JDBCドライバを使用した場合、コンパイル時に、警告が出るので、早めに対応します。 なお、racle 12c の JDBCドライバ では、9i 関係のデータベースアクセスに支障が出るため、 当面は、11g の JDBCドライバを使用します。 http://docs.oracle.com/cd/E28389_01/web.1111/b60995/thirdparty.htm なお、この実装は、11.2.0.3のドライバ以降で有効です。 hayabusa/taglib/DirectWriteTableTag#executeCall( final Connection conn,final CallableStatement callStmt,final String[] args ) plugin/query/Query_JDBCArrayCallable#execute( final String[] args ) plugin/query/Query_JDBCErrMsg#execute( final String[] args ) plugin/query/Query_JDBCKeyEntry#execute( final String[] keys, final String[] args ) plugin/query/Query_JDBCPLSQL#execute( final String names,final String dbArrayType,final DBSysArg[] sysArg,final DBUserArg[] userArg ) 5.7.2.1 (2014/01/17) [ReplaceString バグ] ReplaceString$ReplaceData#isOverlap メソッドの結果が反転していたので、修正します。 これは、jdk1.6 で実行した場合、compareToメソッドが実行されず、結果、isOverlapメソッドも 実行されていなかったため、発見できませんでしたが、jdk1.7にすると、compareTo メソッドが 実行され、結果、isOverlapメソッドで、エラー判定されてしまいました。 fukurou.util.ReplaceString$ReplaceData#isOverlap( final ReplaceData other ) [Process_FileSearchのMD5 計算] HybsCryptography に、ファイルを引数に、MD5 を計算するメソッドを追加します。 これを使用して、バッチ系処理で、MD5 の計算結果を出力できるようにします。 Process_FileSearch に、useMD5 引数を追加します。 fukurou.security.HybsCryptography#encrypt( final String org ) fukurou.security.HybsCryptography#decrypt( final String hex ) fukurou.security.HybsCryptography#getMD5( final File input ) fukurou.process.Process_FileSearch#init( final ParamProcess paramProcess ) fukurou.process.FileLineModel#FileLineModel() fukurou.process.FileLineModel#FileLineModel( final boolean isLineCnt ) fukurou.process.FileLineModel#FileLineModel( final boolean isLineCnt,final boolean isMD5 ) fukurou.process.FileLineModel#FileLineModel( final LineModel model ) fukurou.process.FileLineModel#setFileVals( final int level, final File file ) fukurou.process.FileLineModel#getMD5() [UploadedFile のバグ修正] MultipartRequest で 5.6.5.3 (2013/06/28) に修正した箇所を、若干修正します。 修正箇所のコメントは付いていません。(5.6.5.3 のままです) ・RANDOM_KEY の生成で、nextInt( Integer.MAX_VALUE ) に変更。 これは、マイナスのファイル名は、若干嫌だったので、修正します。 ・String tempName = RANDOM_KEY + ・・・ の箇所を、 String uniqKey = RANDOM_KEY + ・・・ に修正。 これは、UploadedFile クラスの引数が、uniqKey になっているのと、 tempName は、いかにも、って感じなので、意味が通るように修正します。 UploadedFile の renameTo メソッドで、FileUtil.renameTo している箇所の 引数の並び順を間違えており、リネームできていませんでした。 hayabusa.servlet.MultipartRequest.java hayabusa.servlet.UploadedFile.renameTo( final String newName , final boolean useBackup )