001/* 002 * Copyright (c) 2009 The openGion Project. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 013 * either express or implied. See the License for the specific language 014 * governing permissions and limitations under the License. 015 */ 016package org.opengion.plugin.query; 017 018import org.opengion.fukurou.system.DateSet; // 6.4.2.0 (2016/01/29) 019// import org.opengion.hayabusa.db.DBConstValue; 020 021/** 022 * データベース登録時に、固定値カラムの設定を行う情報を管理するクラスです。 023 * このクラスは、GrowingMIS Ver6用の管理クラスです。 024 * 具体的には、 025 * 物理SEQ SEQxxxx (xxxxはテーブル名) 026 * 作成日時 DYSET 027 * 作成PG PGSET 028 * 作成親PG PGPSET 029 * 作成社員 USRSET 030 * 更新日時 DYUPD 031 * 更新PG PGUPD 032 * 更新親PG PGPUPD 033 * 更新社員 USRUPD 034 * などの情報を、INSERT、UPDATE の状況に応じて提供します。 035 * INSERT には、すべての情報(XXUPD)にも値をセットします。 036 * これは、UPDATE された日付や時刻で、一覧検索できるようにする為で、 037 * null にしておくと、IS NULL で問い合わせる必要があります。 038 * INSERT データだけ取出す場合は、WHERE DYSET = DYUPD とします。 039 * また、物理SEQは、SEQxxxx(xxxxはテーブル名)形式のカラム名とし、 040 * 値は、SEQxxxxS01.NEXTVAL とします。 041 * 042 * コンストラクターでは、テーブル名、ユーザーID,画面ID を受け取ります。 043 * 登録時刻は、このオブジェクトが生成された時間を通常は使用します。 044 * テーブル名を渡すのは、ワークなど、テーブル単位に処理するカラムが 045 * 異なるので、それへの対応です。 046 * 処理が簡素化できるように、ルールを規定すべきです。 047 * 048 * @og.rev 5.5.1.8 (2012/04/17) 新規追加 049 * @og.rev 8.5.6.1 (2024/03/29) AbstractDBConstValue を継承して使用します。 050 * @og.group データ登録 051 * 052 * @version 5.5 053 * @author Kazuhiko Hasegawa 054 * @since JDK7.0, 055 */ 056// public class DBConstValue_VV implements DBConstValue { 057public class DBConstValue_VV extends AbstractDBConstValue { 058 /** このプログラムのVERSION文字列を設定します。 {@value} */ 059 private static final String VERSION = "8.5.6.1 (2024/03/29)" ; 060 061 private static final String[] MSTR_UPDKEYS = { "DYUPD","PGUPD","PGPUPD","USRUPD" }; 062 063// // 8.5.6.1 (2024/03/29) AbstractDBConstValue を継承して使用します。 064// private static final String[] ZERO = new String[0] ; 065// 066// private String[] insKeys = ZERO; 067// private String[] insVals = ZERO; 068// 069// private String[] updKeys = ZERO; 070// private String[] updVals = ZERO; 071 072 /** 073 * デフォルトコンストラクター 074 * 075 * @og.rev 6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor. 076 */ 077 public DBConstValue_VV() { super(); } // これも、自動的に呼ばれるが、空のメソッドを作成すると警告されるので、明示的にしておきます。 078 079 /** 080 * 初期化情報を設定します。 081 * 082 * @og.rev 6.4.2.0 (2016/01/29) DateSet.getDate( String ) を利用するように修正します。 083 * @og.rev 8.5.6.1 (2024/03/29) abstract なのは、pgamen 引数付きの init メソッドです。 084 * 085 * @param table テーブル名 086 * @param user ユーザーID 087 * @param gamen 画面ID 088 */ 089 @Override // DBConstValue 090// public void init( final String table, final String user, final String gamen ) { 091 public void init( final String table, final String user, final String gamen, final String pgamen ) { 092 if( isUseClm( table ) ) { 093 final String userID = "'" + user + "'"; 094 final String gamenID = "'" + gamen + "'"; 095 final String timestamp = "'" + DateSet.getDate( "yyyyMMddHHmmss" ) + "'" ; // 6.4.2.0 (2016/01/29) 096 final String seqID = "SEQ" + table ; 097 final String seqFanc = "SEQ" + table + "S01.NEXTVAL" ; 098 099 insKeys = new String[] { seqID, "DYSET","PGSET","PGPSET","USRSET","DYUPD","PGUPD","PGPUPD","USRUPD" }; 100 insVals = new String[] { 101 seqFanc // SEQ領域の関数 102 ,timestamp // DYSET 103 ,gamenID // PGSET 104 ,gamenID // PGPSET 105 ,userID // USRSET 106 ,timestamp // DYUPD 107 ,gamenID // PGUPD 108 ,gamenID // PGPUPD 109 ,userID // USRUPD 110 }; 111 112 updKeys = MSTR_UPDKEYS; 113 updVals = new String[] { 114 timestamp // DYUPD 115 ,gamenID // PGUPD 116 ,gamenID // PGPUPD 117 ,userID // USRUPD 118 }; 119 } 120 } 121 122// /** 123// * インサートする場合のキー配列を返します。 124// * 125// * 指定の値がなければ、長さゼロ配列を返します。 126// * 127// * @og.rev 8.5.6.1 (2024/03/29) AbstractDBConstValue を継承して使用します。 128// * 129// * @return インサートする場合のキー配列(非null) 130// * @og.rtnNotNull 131// */ 132// @Override // DBConstValue 133// public String[] getInsertKeys() { 134// return insKeys.clone(); 135// } 136 137// /** 138// * インサートする場合の値配列を返します。 139// * 140// * 指定の値がなければ、長さゼロ配列を返します。 141// * 142// * @og.rev 8.5.6.1 (2024/03/29) AbstractDBConstValue を継承して使用します。 143// * 144// * @return インサートする場合のキー配列(非null) 145// * @og.rtnNotNull 146// */ 147// @Override // DBConstValue 148// public String[] getInsertVals() { 149// return insVals.clone(); 150// } 151 152// /** 153// * アップデートする場合のキー配列を返します。 154// * 155// * 指定の値がなければ、長さゼロ配列を返します。 156// * 157// * @og.rev 8.5.6.1 (2024/03/29) AbstractDBConstValue を継承して使用します。 158// * 159// * @return アップデートする場合のキー配列(非null) 160// * @og.rtnNotNull 161// */ 162// @Override // DBConstValue 163// public String[] getUpdateKeys() { 164// return updKeys.clone(); 165// } 166 167// /** 168// * アップデートする場合の値配列を返します。 169// * 170// * 指定の値がなければ、長さゼロ配列を返します。 171// * 172// * @og.rev 8.5.6.1 (2024/03/29) AbstractDBConstValue を継承して使用します。 173// * 174// * @return アップデートする場合のキー配列(非null) 175// * @og.rtnNotNull 176// */ 177// @Override // DBConstValue 178// public String[] getUpdateVals() { 179// return updVals.clone(); 180// } 181 182// /** 183// * デリート(論理削除) する場合のキー配列を返します。 184// * 185// * 指定の値がなければ、長さゼロ配列を返します。 186// * 187// * @og.rev 6.3.9.0 (2015/11/06) Returning 'ZERO' may expose an internal array.(PMD) 188// * @og.rev 8.5.6.1 (2024/03/29) AbstractDBConstValue を継承して使用します。 189// * 190// * @return デリートする場合のキー配列(非null) 191// * @og.rtnNotNull 192// */ 193// @Override // DBConstValue 194// public String[] getLogicalDeleteKeys() { 195// return ZERO.clone(); // 6.3.9.0 (2015/11/06) Returning 'ZERO' may expose an internal array.(PMD) 196// } 197 198// /** 199// * デリート(論理削除) する場合の値配列を返します。 200// * 201// * 指定の値がなければ、長さゼロ配列を返します。 202// * 203// * @og.rev 6.3.9.0 (2015/11/06) Returning 'ZERO' may expose an internal array.(PMD) 204// * @og.rev 8.5.6.1 (2024/03/29) AbstractDBConstValue を継承して使用します。 205// * 206// * @return デリートする場合のキー配列(非null) 207// * @og.rtnNotNull 208// */ 209// @Override // DBConstValue 210// public String[] getLogicalDeleteVals() { 211// return ZERO.clone(); // 6.3.9.0 (2015/11/06) Returning 'ZERO' may expose an internal array.(PMD) 212// } 213 214// /** 215// * カラムを返すかどうかを決めるロジック 216// * 217// * テーブル名が存在していれば、利用可能と判断します。 218// * これは、履歴テーブルなど、この処理を使わない場合に、 219// * テーブル名から判定する場合に使います。現時点では、履歴テーブルは 220// * フレームワーク側で変更するのではなく、トリガ等による自動収集と 221// * しますので、判定対象としていません。 222// * 223// * @og.rev 8.5.6.1 (2024/03/29) AbstractDBConstValue を継承して使用します。 224// * 225// * @param table テーブル名 226// * 227// * @return カラムを返すかどうか(true:カラムを生成/false:カラムは生成しない) 228// */ 229// private boolean isUseClm( final String table ) { 230// return table != null && table.length() > 0 ; 231// } 232}