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 */
016 package org.opengion.plugin.query;
017
018 import org.opengion.hayabusa.common.HybsSystem;
019 import org.opengion.hayabusa.db.DBConstValue;
020
021 /**
022 * ãƒ??タベã?ス登録時に、固定å?カラãƒ??設定を行うæƒ??を管ç�?�™るクラスですã?
023 * こã?クラスは、GrowingMIS Ver6用の管ç�?‚¯ラスですã?
024 * 具体的にはã€?
025 * 物ç�?EQ SEQxxxx (xxxxはãƒ??ブルå�?
026 * 作æ?日æ™? DYSET
027 * 作æ??°?§ PGSET
028 * 作æ?親?°?§ PGPSET
029 * 作æ?社員 USRSET
030 * 更新日æ™? DYUPD
031 * 更新?°?§ PGUPD
032 * 更新親?°?§ PGPUPD
033 * 更新社員 USRUPD
034 * などのæƒ??をã?INSERT、UPDATE の状況に応じて提供しますã?
035 * INSERT には、すべてのæƒ??(XXUPD)にもå?をセãƒ?ƒˆしますã?
036 * これは、UPDATE された日付や時刻で、ä¸?¦§検索できるようにする為でã€?
037 * null にしておくと、IS NULL で問い合わせるå¿?¦�がありますã?
038 * INSERT ãƒ??タã�?�‘取å?すå?合ã?、WHERE DYSET = DYUPD としますã?
039 * またã? 物ç�?EQは、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.group ãƒ??タ登録
050 *
051 * @version 5.5
052 * @author Kazuhiko Hasegawa
053 * @since JDK7.0,
054 */
055 public class DBConstValue_VV implements DBConstValue {
056 //* こã?プログラãƒ??VERSIONæ–?—å?を設定しますã? {@value} */
057 private static final String VERSION = "5.5.1.8 (2012/04/17)" ;
058
059 // private static final String[] MSTR_INSKEYS =
060 // new String[] { "DYSET","PGSET","PGPSET","USRSET","DYUPD","PGUPD","PGPUPD","USRUPD" };
061
062 private static final String[] MSTR_UPDKEYS =
063 new String[] { "DYUPD","PGUPD","PGPUPD","USRUPD" };
064
065 private static final String[] ZERO = new String[0] ;
066
067 private String[] insKeys = ZERO;
068 private String[] insVals = ZERO;
069
070 private String[] updKeys = ZERO;
071 private String[] updVals = ZERO;
072
073 /**
074 * 初期化情報を設定しますã?
075 *
076 * @param table ãƒ??ブルå�?
077 * @param user ユーザーID
078 * @param gamen 画面ID
079 */
080 public void init( final String table, final String user, final String gamen ) {
081 if( isUseClm( table ) ) {
082 String userID = "'" + user + "'";
083 String gamenID = "'" + gamen + "'";
084 String timestamp = "'" + HybsSystem.getDate( "yyyyMMddHHmmss" ) + "'" ;
085 String seqID = "SEQ" + table ;
086 String seqFanc = "SEQ" + table + "S01.NEXTVAL" ;
087
088 // insKeys = MSTR_INSKEYS;
089 insKeys = new String[] { seqID, "DYSET","PGSET","PGPSET","USRSET","DYUPD","PGUPD","PGPUPD","USRUPD" };
090 insVals = new String[] {
091 seqFanc // SEQ領域の関数
092 ,timestamp // DYSET
093 ,gamenID // PGSET
094 ,gamenID // PGPSET
095 ,userID // USRSET
096 ,timestamp // DYUPD
097 ,gamenID // PGUPD
098 ,gamenID // PGPUPD
099 ,userID // USRUPD
100 };
101
102 updKeys = MSTR_UPDKEYS;
103 updVals = new String[] {
104 timestamp // DYUPD
105 ,gamenID // PGUPD
106 ,gamenID // PGPUPD
107 ,userID // USRUPD
108 };
109 }
110 }
111
112 /**
113 * インサートするå?合ã?キー配å?を返しますã?
114 *
115 * æŒ?®šã?値がなければã€?•·さゼロ配å?を返しますã?
116 *
117 * @return インサートするå?合ã?キー配å?(非null)
118 */
119 public String[] getInsertKeys() {
120 return insKeys.clone();
121 }
122
123 /**
124 * インサートするå?合ã?値配å?を返しますã?
125 *
126 * æŒ?®šã?値がなければã€?•·さゼロ配å?を返しますã?
127 *
128 * @return インサートするå?合ã?キー配å?(非null)
129 */
130 public String[] getInsertVals() {
131 return insVals.clone();
132 }
133
134 /**
135 * アãƒ??ãƒ??トするå?合ã?キー配å?を返しますã?
136 *
137 * æŒ?®šã?値がなければã€?•·さゼロ配å?を返しますã?
138 *
139 * @return アãƒ??ãƒ??トするå?合ã?キー配å?(非null)
140 */
141 public String[] getUpdateKeys() {
142 return updKeys.clone();
143 }
144
145 /**
146 * アãƒ??ãƒ??トするå?合ã?値配å?を返しますã?
147 *
148 * æŒ?®šã?値がなければã€?•·さゼロ配å?を返しますã?
149 *
150 * @return アãƒ??ãƒ??トするå?合ã?キー配å?(非null)
151 */
152 public String[] getUpdateVals() {
153 return updVals.clone();
154 }
155
156 /**
157 * ãƒ?ƒªーãƒ?論理削除) する場合ã?キー配å?を返しますã?
158 *
159 * æŒ?®šã?値がなければã€?•·さゼロ配å?を返しますã?
160 *
161 * @return ãƒ?ƒªートするå?合ã?キー配å?(非null)
162 */
163 public String[] getLogicalDeleteKeys() {
164 return ZERO;
165 }
166
167 /**
168 * ãƒ?ƒªーãƒ?論理削除) する場合ã?値配å?を返しますã?
169 *
170 * æŒ?®šã?値がなければã€?•·さゼロ配å?を返しますã?
171 *
172 * @return ãƒ?ƒªートするå?合ã?キー配å?(非null)
173 */
174 public String[] getLogicalDeleteVals() {
175 return ZERO;
176 }
177
178 /**
179 * カラãƒ?‚’返すかどã�?�‹を決めるロジãƒ?‚¯
180 *
181 * ãƒ??ブル名が存在してã�?‚Œば、利用可能と判断しますã?
182 * これは、履歴ãƒ??ブルなど、この処ç�?‚’使わなã�??合にã€?
183 * ãƒ??ブル名から判定するå?合に使ã�?�¾すã?現時点では、履歴ãƒ??ブルは
184 * フレーãƒ?ƒ¯ーク側で変更するのではなくã?トリガ等による自動収é›?�¨
185 * しますã?で、判定対象としてã�?�¾せんã€?
186 *
187 * @param table ãƒ??ブルå�?
188 *
189 * @return カラãƒ?‚’返すかどã�?�‹(true:カラãƒ?‚’生æ?/false:カラãƒ??生æ?しなã�?
190 */
191 private boolean isUseClm( final String table ) {
192 boolean flag = ( table != null && table.length() > 0 ) ;
193
194 return flag ;
195 }
196 }