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 018// import org.opengion.fukurou.system.DateSet; // 6.4.2.0 (2016/01/29) 019import org.opengion.hayabusa.db.DBConstValue; 020 021/** 022 * データベース登録時に、固定値カラムの設定を行う情報を管理するクラスです。 023 * このクラスは、システム毎に共通の固定カラムが異なりますので、init メソッドで初期化が必要です。 024 * 例えば、GF では、 025 * 更新フラグ FGJ 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 * 040 * コンストラクターでは、テーブル名、ユーザーID,画面ID を受け取ります。 041 * 登録時刻は、このオブジェクトが生成された時間を通常は使用します。 042 * テーブル名を渡すのは、ワークなど、テーブル単位に処理するカラムが 043 * 異なるので、それへの対応です。 044 * 処理が簡素化できるように、ルールを規定すべきです。 045 * 046 * @og.rev 8.5.6.1 (2024/03/29) 継承で使えるように、Abstractクラスを新規作成します。 047 * @og.group データ登録 048 * 049 * @version 8.5 050 * @author Kazuhiko Hasegawa 051 * @since JDK21.0, 052 */ 053public abstract class AbstractDBConstValue implements DBConstValue { 054 /** このプログラムのVERSION文字列を設定します。 {@value} */ 055 private static final String VERSION = "8.5.6.1 (2024/03/29)" ; 056 057 private static final String[] ZERO = new String[0] ; 058 059 /** 8.5.6.1 (2024/03/29) インサート時のキー配列 */ 060 protected String[] insKeys = ZERO; 061 /** 8.5.6.1 (2024/03/29) インサート時の値配列 */ 062 protected String[] insVals = ZERO; 063 064 /** 8.5.6.1 (2024/03/29) 更新時のキー配列 */ 065 protected String[] updKeys = ZERO; 066 /** 8.5.6.1 (2024/03/29) 更新時の値配列 */ 067 protected String[] updVals = ZERO; 068 069 /** 8.5.6.1 (2024/03/29) 論理削除時のキー配列 */ 070 protected String[] logDelKeys = ZERO; 071 /** 8.5.6.1 (2024/03/29) 論理削除時の値配列 */ 072 protected String[] logDelVals = ZERO; 073 074 /** 075 * デフォルトコンストラクター 076 */ 077 public AbstractDBConstValue() { super(); } // これも、自動的に呼ばれるが、空のメソッドを作成すると警告されるので、明示的にしておきます。 078 079 /** 080 * 初期化情報を設定します。 081 * 082 * @param table テーブル名 083 * @param user ユーザーID 084 * @param gamen 画面ID 085 */ 086 @Override // DBConstValue 087 public void init( final String table, final String user, final String gamen ) { 088 init( table, user, gamen, "" ); 089 } 090 091 /** 092 * 初期化情報を設定します。 093 * 094 * @param table テーブル名 095 * @param user ユーザーID 096 * @param gamen 画面ID 097 * @param pgamen 親画面ID 098 */ 099 abstract public void init( final String table, final String user, final String gamen, final String pgamen ) ; 100 101 /** 102 * インサートする場合のキー配列を返します。 103 * 104 * 指定の値がなければ、長さゼロ配列を返します。 105 * 106 * @return インサートする場合の値配列(非null) 107 * @og.rtnNotNull 108 */ 109 @Override // DBConstValue 110 public String[] getInsertKeys() { 111 return insKeys.clone(); 112 } 113 114 /** 115 * インサートする場合の値配列を返します。 116 * 117 * 指定の値がなければ、長さゼロ配列を返します。 118 * 119 * @return インサートする場合の値配列(非null) 120 * @og.rtnNotNull 121 */ 122 @Override // DBConstValue 123 public String[] getInsertVals() { 124 return insVals.clone(); 125 } 126 127 /** 128 *アップデートする場合のキー配列を返します。 129 * 130 * 指定の値がなければ、長さゼロ配列を返します。 131 * 132 * @return アップデートする場合のキー配列(非null) 133 * @og.rtnNotNull 134 */ 135 @Override // DBConstValue 136 public String[] getUpdateKeys() { 137 return updKeys.clone(); 138 } 139 140 /** 141 * アップデートする場合の値配列を返します。 142 * 143 * 指定の値がなければ、長さゼロ配列を返します。 144 * 145 * @return アップデートする場合のキー配列(非null) 146 * @og.rtnNotNull 147 */ 148 @Override // DBConstValue 149 public String[] getUpdateVals() { 150 return updVals.clone(); 151 } 152 153 /** 154 * デリート(論理削除) する場合のキー配列を返します。 155 * 156 * 指定の値がなければ、長さゼロ配列を返します。 157 * 158 * @return デリートする場合のキー配列(非null) 159 * @og.rtnNotNull 160 */ 161 @Override // DBConstValue 162 public String[] getLogicalDeleteKeys() { 163 return logDelKeys.clone(); 164 } 165 166 /** 167 * デリート(論理削除) する場合の値配列を返します。 168 * 169 * 指定の値がなければ、長さゼロ配列を返します。 170 * 171 * @return デリートする場合のキー配列(非null) 172 * @og.rtnNotNull 173 */ 174 @Override // DBConstValue 175 public String[] getLogicalDeleteVals() { 176 return logDelVals.clone(); 177 } 178 179 /** 180 * カラムを返すかどうかを決めるロジック 181 * 182 * テーブル名より、ロジック的に導き出します。 183 * 184 * @param table テーブル名 185 * 186 * @return カラムを返すかどうか(true:カラムを生成/false:カラムは生成しない) 187 */ 188 protected boolean isUseClm( final String table ) { 189 return table != null && ! table.isEmpty() ; 190 } 191}