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.hayabusa.taglib;
017
018 import org.opengion.hayabusa.common.HybsSystem;
019 import org.opengion.hayabusa.common.HybsSystemException;
020 import org.opengion.hayabusa.db.DBTableModel;
021 import org.opengion.hayabusa.db.Query;
022 import org.opengion.hayabusa.db.DBSysArg;
023 import org.opengion.hayabusa.db.DBUserArg;
024 import org.opengion.hayabusa.resource.GUIInfo;
025
026 import org.opengion.fukurou.util.ErrorMessage;
027 import org.opengion.fukurou.util.StringUtil ;
028 import static org.opengion.fukurou.util.StringUtil.nval ;
029
030 /**
031 * PLSQLã‚’CALLã—ã¦ãƒ??タベã?スã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã‚¿ã‚°ã§ã™ã?
032 * queryType = "JDBCPLSQL" ãŒã?標準ã§ç”¨æ„ã•れã¦ã?¾ã™ã?
033 * queryType 㨠実際ã®Javaクラスã¨ã®é–¢é€£ä»˜ã‘ã¯ã€ã‚·ã‚¹ãƒ?ƒ リソース㮠Query_JDBCPLSQL 属æ?ã§ã™ã?
034 *
035 * DBTableModelå†??ãƒ??ã‚¿ã‚?é…å?ã§PL/SQLã«æ¸¡ã—ã¦DB登録ã—ã¾ã™ã?
036 *
037 * ※ ã“ã?ã‚¿ã‚°ã¯ã€Transaction ã‚¿ã‚°ã®å¯¾è±¡ã§ã™ã?
038 *
039 * @og.formSample
040 * â—å½¢å¼ï¼?lt;og:plsqlUpdate command="…" names="…" dbType="…" queryType="JDBCPLSQL" >{plsql(?,?,?,?,?)} <og:plsqlUpdate>
041 * â—body?šã‚ã‚?EVAL_BODY_BUFFERED:BODYを評価ã—ã?{@XXXX} ã‚’è§£æžã—ã¾ã?
042 *
043 * â—Tag定義??
044 * <og:plsqlUpdate
045 * queryType ã€TAG】Query を発行ã™ã‚‹ç‚ºã®ã‚¯ãƒ©ã‚¹IDを指定ã—ã¾ã?{@og.doc03Link queryType åˆæœŸå€¤:JDBCPLSQL})
046 * command ã€TAG】コマンãƒ?NEW,RENEW)ã‚’ã‚»ãƒ?ƒˆã—ã¾ã?PlsqlUpdateTag,UpdateTag ã®å ´åˆã?ã€ENTRY)
047 * scope ã€TAG】ã‚ャãƒ?‚·ãƒ¥ã™ã‚‹å ´åˆã?スコープ[request/page/session/applicaton]を指定ã—ã¾ã?åˆæœŸå€¤:session)
048 * maxRowCount ã€TAGã€?通常ã¯ä½¿ã?¾ã›ã‚“)ãƒ??ã‚¿ã®æœ?¤§èªã¿è¾¼ã¿ä»¶æ•°ã‚’指定ã—ã¾ã?(åˆæœŸå€¤:DB_MAX_ROW_COUNT[=1000])(0:[無制é™])
049 * skipRowCount ã€TAGã€?通常ã¯ä½¿ã?¾ã›ã‚“)ãƒ??ã‚¿ã®èªã¿å§‹ã‚ã®åˆæœŸå€¤ã‚’指定ã—ã¾ã?
050 * notfoundMsg ã€TAGã€‘æ¤œç´¢çµæžœãŒã‚¼ãƒä»¶ã®å ´åˆã«è¡¨ç¤ºã™ã‚‹ãƒ¡ãƒ?‚»ãƒ¼ã‚¸ãƒªã‚½ãƒ¼ã‚¹IDを指定ã—ã¾ã?åˆæœŸå€¤:MSG0077[対象ãƒ??ã‚¿ã¯ã‚りã¾ã›ã‚“ã§ã—ãŸ])
051 * names ã€TAG】PL/SQLを利用ã™ã‚‹å ´åˆã?引数ã«ã‚»ãƒ?ƒˆã™ã¹ã?ãƒ??ã‚¿ã®åç§°ã‚’CSVå½¢å¼ã§è¤?•°æŒ?®šã—ã¾ã?
052 * dbType ã€TAG】Queryã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã«æ¸¡ã™å¼•æ•°ã®ã‚¿ã‚¤ãƒ—定義(ä¾?typeå_ARRAY)
053 * selectedAll ã€TAG】データをå?ä»¶é¸æŠžæ¸ˆã¿ã¨ã—ã¦å‡¦ç?™ã‚‹ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:false)
054 * tableId ã€TAGã€?通常ã¯ä½¿ã?¾ã›ã‚“)çµæžœã®DBTableModelã‚’ã?sessionã«ç™»éŒ²ã™ã‚‹ã¨ãã?ã‚ーを指定ã—ã¾ã?
055 * dbid ã€TAGã€?通常ã¯ä½¿ã?¾ã›ã‚“)Queryオブジェクトを作æ?ã™ã‚‹æ™‚ã?DB接続IDを指定ã—ã¾ã?
056 * stopError ã€TAG】PLSQL/SQL処ç?‚¨ãƒ©ãƒ¼ã®æ™‚ã«å‡¦ç?‚’䏿¢ã™ã‚‹ã‹ã©ã?‹[true/false]ã‚’è¨å®šã—ã¾ã?åˆæœŸå€¤:true)
057 * tableModelCommit ã€TAG】テーブルモãƒ?ƒ«ã®ç¢ºå®šå?ç?‚’行ã†ã‹ã©ã?‹[true/false]ã‚’è¨å®šã—ã¾ã?åˆæœŸå€¤:true)
058 * debug ã€TAG】デãƒãƒƒã‚°æƒ??ã‚’å?力ã™ã‚‹ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:false)
059 * > ... Body ...
060 * </og:plsqlUpdate>
061 *
062 * â—使用ä¾?
063 * ・引数/プãƒã‚·ã‚¸ãƒ£ãƒ¼ã‚’ä»–ã?JSPã‹ã‚‰æ¸¡ã™å?å?
064 * ã€copy.jspã€?
065 * <og:hidden name="names" value="UNIQ,USRID,ECNO,EDBN" />
066 * <og:hidden name="SQL" value="{ call RKP0271E.RK0271E( ?,?,?,?,? ) }" />
067 * ã€entry.jspã€?
068 * <og:plsqlUpdate
069 * command = "{@command}"
070 * names = "{@names}" →PL/SQLã«æ¸¡ã™å¼•æ•°(é…å?)ã®ã‚«ãƒ©ãƒ?
071 * dbType = "RK0271ARG" →PL/SQLã«æ¸¡ã™å¼•æ•°(é…å?)ã®å®šç¾©ãƒ•ァイルå?
072 * queryType = "JDBCPLSQL" >
073 * {@SQL} →CALLã™ã‚‹PL/SQL
074 * </og:plsqlUpdate>
075 *
076 * ・引数/プãƒã‚·ã‚¸ãƒ£ãƒ¼ã‚’直接書ãå?å?
077 * ã€entry.jspã€?
078 * <og:plsqlUpdate
079 * command = "{@command}"
080 * names = "UNIQ,USRID,ECNO,EDBN" →PL/SQLã«æ¸¡ã™å¼•æ•°(é…å?)ã®ã‚«ãƒ©ãƒ?
081 * dbType = "RK0271ARG" →PL/SQLã«æ¸¡ã™å¼•æ•°(é…å?)ã®å®šç¾©ãƒ•ァイルå?
082 * queryType = "JDBCPLSQL" >
083 * { call RKP0271E.RK0271E( ?,?,?,?,? )} →CALLã™ã‚‹PL/SQL
084 * </og:plsqlUpdate>
085 *
086 * ?œï¼œå‚è€?¼žï¼?
087 * ・RKP0271E.RK0271E( ?,?,?,?,? )ã®?¢??£ã®æ„味
088 * (RKP0271E.spc)------------------------------------------------------------
089 * CREATE OR REPLACE PACKAGE RKP0271E AS
090 * PROCEDURE RK0271E(
091 * P_KEKKA OUT NUMBER -- 1個目ã®?¢??£â‡’çµæžœ 0:æ£å¸¸ 1:è¦å‘?2:異常
092 * ,P_ERRMSGS OUT ERR_MSG_ARRAY -- 2個目ã®?¢??£â‡’エラーメãƒ?‚»ãƒ¼ã‚¸é…å?
093 * ,P_NAMES IN VARCHAR2 -- 3個目ã®?¢??£â‡’カラãƒ?ãƒã‚§ãƒ?‚¯ç”¨æ–?—å?
094 * ,P_SYSARGS IN SYSARG_ARRAY -- 4個目ã®?¢??£â‡’登録æ¡ä»¶é…å?(改å»?A:追åŠ?C:変更/D:削除)ç‰ãŒ?¾?¯??•れã¾ã?
095 * ,P_RK0271 IN RK0271ARG_ARRAY -- 5個目ã®?¢??£â‡’登録ãƒ??ã‚¿é…å?
096 *
097 * ・RK0271ARGã®å®šç¾©ã®ä»•æ–¹
098 * (RK0271ARG.sql)------------------------------------------------------------
099 * DROP TYPE RK0271ARG_ARRAY;
100 * CREATE OR REPLACE TYPE RK0271ARG AS OBJECT
101 * (
102 * UNIQ VARCHAR2(11)
103 * ,USRID VARCHAR2(5)
104 * ,ECNO VARCHAR(7)
105 * ,EDBN VARCHAR(2)
106 * ) ;
107 * /
108 * CREATE OR REPLACE TYPE RK0271ARG_ARRAY AS VARRAY(100) OF RK0271ARG;
109 * /
110 *
111 * @og.group ?¤?¢ç™»éŒ²
112 *
113 * @version 4.0
114 * @author Kazuhiko Hasegawa
115 * @since JDK5.0,
116 */
117 public class PlsqlUpdateTag extends QueryTag {
118 //* ã“ã?プãƒã‚°ãƒ©ãƒ??VERSIONæ–?—å?ã‚’è¨å®šã—ã¾ã™ã? {@value} */
119 private static final String VERSION = "5.5.5.2 (2012/08/10)" ;
120
121 private static final long serialVersionUID = 555220120810L ;
122
123 /** command å¼•æ•°ã«æ¸¡ã™äº‹ã?出æ¥ã‚?コマンãƒ? 登録{@value} */
124 public static final String CMD_ENTRY = "ENTRY" ;
125 /** command å¼•æ•°ã«æ¸¡ã™äº‹ã?出æ¥ã‚?コマンãƒ?リスãƒ? */
126 private static final String COMMAND_LIST = CMD_ENTRY;
127
128 /** 引数ã®ã‚¿ã‚¤ãƒ—定義 */
129 protected String userDBType = null;
130
131 // 3.5.2.0 (2003/10/20) å†?ƒ¨ã‚ªãƒ–ジェクトタイプåã‚?シスãƒ?ƒ パラメータ ã§å®šç¾©ã—ã¾ã™ã?
132 private static final String SYSARG = "SYSARG";
133 private boolean selectedAll = false;
134
135 private boolean isTableModelCommit = true; // 5.5.5.2 (2012/08/10)
136
137 /**
138 * Taglibã®é–‹å§‹ã‚¿ã‚°ãŒè¦‹ã¤ã‹ã£ãŸã¨ãã«å‡¦ç?™ã‚?doStartTag() ã‚?オーãƒã?ライドã—ã¾ã™ã?
139 *
140 * @return 後続å?ç??æŒ?¤º
141 */
142 @Override
143 public int doStartTag() {
144 dyStart = System.currentTimeMillis();
145
146 table = (DBTableModel)getObject( tableId );
147 if( table == null || table.getRowCount() == 0 ||
148 ! check( command, COMMAND_LIST ) ) { return(SKIP_BODY); }
149
150 startQueryTransaction( tableId ); // 3.6.0.8 (2004/11/19)
151 return( EVAL_BODY_BUFFERED ); // Body を評価ã™ã‚‹ã€? extends BodyTagSupport æ™?
152 }
153
154 /**
155 * Taglibã®çµ‚äº?‚¿ã‚°ãŒè¦‹ã¤ã‹ã£ãŸã¨ãã«å‡¦ç?™ã‚?doEndTag() ã‚?オーãƒã?ライドã—ã¾ã™ã?
156 *
157 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応ã?release2() ã‚?doEndTag()ã§å‘¼ã¶ã€?
158 * @og.rev 3.5.5.2 (2004/04/02) TaglibUtil.makeHTMLErrorTable メソãƒ?ƒ‰ã‚’利用
159 * @og.rev 3.6.0.8 (2004/11/19) DBTableModel をセーブã™ã‚‹æ™‚ã«ã€ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ãƒã‚§ãƒ?‚¯ã‚’行ã„ã¾ã™ã?
160 * @og.rev 3.6.1.0 (2005/01/05) オーãƒã?フãƒãƒ¼æ™‚ã¨ç™»éŒ²ä»¶æ•°ã®è¡¨ç¤ºã‚’コメントã—ã¾ã™ã?
161 * @og.rev 4.3.3.0 (2008/09/22) æ¤œç´¢çµæžœã‚’ã?"DB.ERR_CODE" ã‚ーã§ãƒªã‚¯ã‚¨ã‚¹ãƒˆã«ã‚»ãƒ?ƒˆã™ã‚‹ã€?
162 * @og.rev 4.3.3.0 (2008/09/22) 属æ? stopError ã®è¨å®šã«ã‚ˆã‚Šã€JSP処ç?‚’䏿¢ã™ã‚‹ã‹ã©ã?‹ã‚’制御ã—ã¾ã™ã?
163 * @og.rev 4.3.5.7 (2009/03/22) アクセスカウントä¸å?åˆå¯¾å¿?
164 *
165 * @return 後続å?ç??æŒ?¤º
166 */
167 @Override
168 public int doEndTag() {
169 debugPrint(); // 4.0.0 (2005/02/28)
170
171 String label = HybsSystem.BR; // 検索ã—ãªã‹ã£ãŸå?åˆã?
172 if( check( command, COMMAND_LIST ) ) {
173
174 // 3.5.5.2 (2004/04/02) TaglibUtil.makeHTMLErrorTable メソãƒ?ƒ‰ã‚’利用
175 String err = TaglibUtil.makeHTMLErrorTable( errMessage,getResource() );
176 if( err != null && err.length() > 0 ) {
177 if( errCode >= ErrorMessage.NG ) { // 異常ã®å ´å?
178 label = err;
179 }
180 setSessionAttribute( errMsgId,errMessage );
181 }
182 else {
183 removeSessionAttribute( errMsgId );
184 }
185 // 4.3.3.0 (2008/09/22) æ¤œç´¢çµæžœã‚’ã?"DB.ERR_CODE" ã‚ーã§ãƒªã‚¯ã‚¨ã‚¹ãƒˆã«ã‚»ãƒ?ƒˆã™ã‚‹ã€?
186 setRequestAttribute( "DB.ERR_CODE", String.valueOf( errCode ) );
187
188 // 3.6.0.8 (2004/11/19) トランザクションãƒã‚§ãƒ?‚¯ã‚’行ã„ã¾ã™ã?
189 // 4.0.0.0 (2007/11/29) 入れåif ã®çµ±å?
190 if( table != null && ! commitTableObject( tableId, table ) ) {
191 jspPrint( "PlsqlUpdateTag Query処ç?Œå‰²ã‚Šè¾¼ã¾ã‚Œã¾ã—ãŸã€?BTableModel ã¯ç™»éŒ²ã—ã¾ã›ã‚“ã€? );
192 return (SKIP_PAGE);
193 }
194 }
195
196 jspPrint( label );
197
198 // int rtnCode = EVAL_PAGE;
199 // if( errCode >= ErrorMessage.NG ) { // 異常
200 // rtnCode = SKIP_PAGE;
201 // }
202 // else {
203 // rtnCode = EVAL_PAGE;
204 // }
205
206 // 4.0.0 (2005/01/31) 処ç?™‚間集è¨?
207 long dyTime = System.currentTimeMillis()-dyStart;
208
209 // 4.0.0 (2005/01/31) ã‚»ã‚ュリãƒ?‚£ãƒã‚§ãƒ?‚¯(ãƒ??タアクセス件数登録)
210 GUIInfo guiInfo = (GUIInfo) getSessionAttribute( HybsSystem.GUIINFO_KEY );
211 executeCount = getParameterRows().length ; // 4.3.5.7 (2009/03/16) アクセス件数ä¸å?åˆå¯¾å¿œã?ãƒã‚§ãƒ?‚¯è¡Œã¨ä»®å®?
212 if( guiInfo != null ) { guiInfo.addWriteCount( executeCount,dyTime,sql ); }
213 // 4.3.3.0 (2008/09/22) 属æ? stopError ã®è¨å®šã«ã‚ˆã‚Šã€å?ç?‚’䏿¢ã™ã‚‹ã‹ã‚’判æ–ã—ã¾ã™ã?
214 int rtnCode = ( ( errCode >= ErrorMessage.NG ) && ( stopError ) ) ? SKIP_PAGE : EVAL_PAGE;
215 return( rtnCode );
216 }
217
218 /**
219 * タグリブオブジェクトをリリースã—ã¾ã™ã?
220 * ã‚ャãƒ?‚·ãƒ¥ã•れã¦å†åˆ©ç”¨ã•れるã?ã§ã€ãƒ•ィールドã?åˆæœŸè¨å®šã‚’行ã„ã¾ã™ã?
221 *
222 * @og.rev 2.0.0.4 (2002/09/27) カスタãƒ?‚¿ã‚°ã® release() メソãƒ?ƒ‰ã‚’ã?追åŠ?
223 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応ã?release2() ã‚?doEndTag()ã§å‘¼ã¶ã€?
224 * @og.rev 3.5.2.0 (2003/10/20) sysDBType å»?¢ã€‚SYSARG ã¯ã€ã‚·ã‚¹ãƒ?ƒ パラメータ ã§å®šç¾©ã—ã¾ã™ã?
225 * @og.rev 5.5.5.2 (2012/08/10) isTableModelCommit追�
226 *
227 */
228 @Override
229 protected void release2() {
230 super.release2();
231 userDBType = null;
232 selectedAll = false;
233 isTableModelCommit = true; // 5.5.5.2 (2012/08/10)
234 }
235
236 /**
237 * Query を実行ã—ã¾ã™ã?
238 *
239 * @og.rev 2.1.2.3 (2002/12/02) ãƒ??タベã?ス更新時ã«ã€æ›´æ–°ãƒ•ラグをセãƒ?ƒˆã™ã‚‹ã‚ˆã†ã«å¤‰æ›´
240 * @og.rev 3.5.0.0 (2003/09/17) カラãƒ?ã§ã¯ãªãã?カラãƒ?•ªå·ã‚’å?ã«æ±‚ã‚ã¦ãŠãæ–¹å¼ã«å¤‰æ›´ã€?
241 * @og.rev 3.5.2.0 (2003/10/20) å†?ƒ¨ã‚ªãƒ–ジェクトタイプåã‚?シスãƒ?ƒ パラメータ ã§å®šç¾©ã—ã¾ã™ã?
242 * @og.rev 3.5.4.2 (2003/12/15) HTMLTableViewForm クラスå変更(â‡?ViewForm_HTMLTable)
243 * @og.rev 3.5.6.0 (2004/06/18) DBRowHeader ã®ãƒ‘ッケージプライベã?ト化ã«ä¼´ãªã?¤‰æ›´
244 * @og.rev 4.0.0.0 (2005/01/31) setArguments å»?¢ã€Query#execute ã«ã€å¼•æ•°ã‚’ã™ã¹ã¦è¿½åŠ?
245 * @og.rev 4.3.0.0 (2008/07/22) DBSysArgã®å¼•æ•°ã«æ—¥ä»˜ã?PGã€ãƒ¦ãƒ¼ã‚¶ãƒ¼IDを追åŠ?
246 * @og.rev 5.5.5.2 (2012/08/10) isTableModelCommitã«ã‚ˆã‚‹ãƒ??ブルモãƒ?ƒ«ç¢ºå®šå?ç??コントãƒãƒ¼ãƒ«
247 *
248 * @param query オブジェク�
249 */
250 @Override
251 protected void execute( final Query query ) {
252 try {
253 if( names == null ) {
254 String errMsg = "names 属æ?ãŒã?è¨å®šã•れã¦ã?¾ã›ã‚“ã€? + HybsSystem.CR
255 + sql + HybsSystem.CR ;
256 throw new HybsSystemException( errMsg ); // 3.5.5.4 (2004/04/15) 引数ã®ä¸¦ã³é ?¤‰æ›´
257 }
258 else {
259 int[] rowNo = getParameterRows();
260 int rowCount = rowNo.length ;
261 if( rowCount > 0 ) {
262 String[] nameArray = StringUtil.csv2Array( names );
263 int[] clmNo = getTableColumnNo( nameArray ); // 3.5.0.0
264
265 String curdate = HybsSystem.getDate( "yyyyMMddHHmmss" ); // 4.3.0.0
266 String pgid = getGUIInfoAttri( "KEY" ); // 4.3.0.0
267 String userid = getUser().getAttribute( "ID" ); // 4.3.0.0
268
269 DBSysArg[] sysArg = new DBSysArg[rowCount];
270 DBUserArg[] userArg = new DBUserArg[rowCount];
271 for( int i=0; i<rowCount; i++ ) {
272 int row = rowNo[i];
273 String cdkh = table.getModifyType( row );
274 // sysArg[i] = new DBSysArg( SYSARG,row,cdkh ); // 3.5.2.0 // 4.3.0.0
275 sysArg[i] = new DBSysArg( SYSARG,row,cdkh,curdate,pgid,userid );
276 String[] values = getTableModelData( clmNo,row ); // 3.5.0.0
277 userArg[i] = new DBUserArg( userDBType,nameArray,values );
278 }
279 query.execute( names,userDBType + "_ARRAY",sysArg,userArg );
280 errCode = query.getErrorCode();
281 errMessage = query.getErrorMessage();
282
283 if( errCode < ErrorMessage.NG ) { // 異常以外ã?å ´å?
284 query.commit();
285 if( isTableModelCommit ) { // 5.5.5.2 (2012/08/10))
286 for( int j=rowCount-1; j>=0; j-- ) {
287 int row = rowNo[j];
288 if( DBTableModel.DELETE_TYPE.equals( table.getModifyType( row ) ) ) {
289 table.removeValue( row );
290 }
291 else {
292 table.resetModify( row );
293 }
294 }
295 }
296 }
297 else {
298 query.rollback();
299 }
300 }
301 }
302 }
303 catch( HybsSystemException ex ) {
304 query.rollback();
305 throw ex;
306 }
307 finally {
308 if( query != null ) { query.close(); }
309 }
310 }
311
312 /**
313 * カラãƒ?é…å?(String[])よりã€å¯¾å¿œã™ã‚‹ã‚«ãƒ©ãƒ?oé…å?(int[])を作æ?ã—ã¾ã™ã?
314 *
315 * @og.rev 3.5.0.0 (2003/09/17) æ–°è¦è¿½åŠ?
316 *
317 * @param nameArray カラãƒ?é…å?
318 *
319 * @return カラãƒ?oé…å?
320 */
321 private int[] getTableColumnNo( final String[] nameArray ) {
322 int[] clmNo = new int[ nameArray.length ];
323 for( int i=0; i<clmNo.length; i++ ) {
324 clmNo[i] = table.getColumnNo( nameArray[i] );
325 }
326 return clmNo;
327 }
328
329 /**
330 * æŒ?®šã?行番å·ã®ã€ã‚«ãƒ©ãƒ?oé…å?(int[])ã«å¯¾å¿œã—ãŸå?ã®é…å?ã‚’è¿”ã—ã¾ã™ã?
331 *
332 * 表示ãƒ??ã‚¿ã® HybsSystem.ROW_SEL_KEY ã‚’å?ã«ã€?¸ã°ã‚ŒãŸ 行を
333 * 処ç??対象ã¨ã—ã¾ã™ã?
334 *
335 * @og.rev 3.5.0.0 (2003/09/17) カラãƒ?ã§ã¯ãªãã?カラãƒ?•ªå·ã‚’å—ã‘å–るよã?«ä¿®æ£ã€?
336 *
337 * @param clmNo カラãƒ?oé…å?
338 * @param row 行番å·
339 *
340 * @return 行番å·ã¨ã‚«ãƒ©ãƒ?oé…å?ã«å¯¾å¿œã—ãŸã?値ã®é…å?
341 */
342 private String[] getTableModelData( final int[] clmNo,final int row ) {
343 String[] values = new String[ clmNo.length ];
344 for( int i=0; i<values.length; i++ ) {
345 values[i] = table.getValue( row,clmNo[i] ) ;
346 // NUMBER タイプã?ã‚ャストエラーを防ã為ã®å¯¾å¿?
347 if( values[i] != null && values[i].length() == 0 ) { values[i] = null; }
348 }
349 return values;
350 }
351
352 /**
353 * 表示ãƒ??ã‚¿ã® HybsSystem.ROW_SEL_KEY ã‚’å?ã«ã€?¸ã°ã‚ŒãŸ 行を処ç??対象ã¨ã—ã¾ã™ã?
354 *
355 * @og.rev 4.0.0.0 (2005/01/31) getParameterRows() を使用ã™ã‚‹ã‚ˆã†ã«å¤‰æ›´
356 *
357 * @return é¸æŠžè¡Œã?é…å?
358 */
359 @Override
360 protected int[] getParameterRows() {
361 final int[] rowNo ;
362 if( selectedAll ) {
363 int rowCnt = table.getRowCount(); // 3.5.5.7 (2004/05/10)
364 rowNo = new int[ rowCnt ];
365 for( int i=0; i<rowCnt; i++ ) {
366 rowNo[i] = i;
367 }
368 } else {
369 rowNo = super.getParameterRows(); // 4.0.0 (2005/01/31)
370 }
371 return rowNo ;
372 }
373
374 /**
375 * ã€TAG】Queryã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã«æ¸¡ã™å¼•æ•°ã®ã‚¿ã‚¤ãƒ—定義(ä¾?typeå_ARRAY)ã€?
376 *
377 * @og.tag
378 * ã“ã“ã§ã¯ã€type 定義ã®PL/SQLåã‚’æŒ?®šã—ã¾ã™ã?
379 * 行を表ã™é?列ã?ã€typeå_ARRAY ã¨ã?†åç§°ã§ã™ã?
380 *
381 * @param type 定義ã®PL/SQLå?
382 */
383 public void setDbType( final String type ) {
384 userDBType = getRequestParameter( type );
385 }
386
387 /**
388 * ã€TAG】データをå?ä»¶é¸æŠžæ¸ˆã¿ã¨ã—ã¦å‡¦ç?™ã‚‹ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:false)ã€?
389 *
390 * @og.tag
391 * å…¨ã¦ã®ãƒ??ã‚¿ã‚’é¸æŠžæ¸ˆã¿ãƒ??ã‚¿ã¨ã—ã¦æ‰±ã£ã¦å‡¦ç?—ã¾ã™ã?
392 * 全件処ç?™ã‚‹å?åˆã«ã€?true/false)を指定ã—ã¾ã™ã?
393 * åˆæœŸå€¤ã¯ false ã§ã™ã?
394 *
395 * @param all ãƒ??ã‚¿ã‚’å?ä»¶é¸æŠžæ¸ˆã¿ [true:å…¨ä»¶é¸æŠžæ¸ˆã¿/false:通常]
396 */
397 public void setSelectedAll( final String all ) {
398 selectedAll = nval( getRequestParameter( all ),selectedAll );
399 }
400
401 /**
402 * ã€TAG】Query を発行ã™ã‚‹ç‚ºã®ã‚¯ãƒ©ã‚¹IDを指定ã—ã¾ã?{@og.doc03Link queryType åˆæœŸå€¤:JDBCPLSQL})ã€?
403 *
404 * @og.tag
405 * 引数æŒ?®šã?INSERT/UPDATEæ–?‚’実行ã™ã‚‹å?åˆã?ã€queryType 属æ?を使用ã—ã¾ã™ã?
406 * ã“ã?ã‚¿ã‚°ã§ã¯ã€execute( String ,String , DBSysArg[] , DBUserArg[] )を実行ã—ã¾ã™ã?
407 * 代表çš?ªã‚¯ãƒ©ã‚¹ã¨ã—ã¦ã€?JDBCPLSQL" ãŒæ¨™æº–ã§ç”¨æ„ã•れã¦ã?¾ã™ã?
408 *
409 * ã‚¿ã‚°ã«ã‚ˆã‚Šä½¿ç”¨ã§ãã‚‹/出æ¥ãªã?Œã‚りã¾ã™ãŒã€ã“れã?ã€org.opengion.hayabusa.db
410 * 以下ã? Query_**** クラス㮠**** を与ãˆã¾ã™ã?
411 * ã“れらã?ã€Query インターフェースを継承ã—ãŸã‚µãƒ–クラスã§ã™ã?
412 * {@og.doc03Link queryType Query_**** クラス}
413 *
414 * @og.rev 3.5.4.2 (2003/12/15) JavaDocコメント用ã«ãƒ¡ã‚½ãƒ?ƒ‰è¿½åŠ??
415 *
416 * @param id Query を発行ã™ã‚‹ç‚ºã®å®Ÿã‚¯ãƒ©ã‚¹ ID
417 * @see org.opengion.hayabusa.db.Query Queryã®ã‚µãƒ–クラス
418 * @see org.opengion.hayabusa.db.Query#execute( String ,String , DBSysArg[] , DBUserArg[] )
419 */
420 @Override
421 public void setQueryType( final String id ) {
422 super.setQueryType( nval( id,"JDBCPLSQL" ) );
423 }
424
425 /**
426 * ã€TAG】テーブルモãƒ?ƒ«ã«å¯¾ã™ã‚‹ç¢ºå®šå?ç?‚’行ã†ã‹ã©ã?‹ã‚’指定ã—ã¾ã?åˆæœŸå€¤:true)ã€?
427 *
428 * @og.tag
429 * PlsqlUpdateã‚¿ã‚°ã§ã€ã‚¨ãƒ©ãƒ¼ãŒãªã‹ã£ãŸå?åˆã?通常ã€ãƒ†ãƒ¼ãƒ–ルモãƒ?ƒ«ã®æ”¹å»?«å¾“ã£ã¦å‡¦ç?Œè¡Œã‚れã¾ã™ã?
430 * ?ˆæ”¹å»ƒDã«ã¤ã?¦ã¯å‰Šé™¤å‡¦ç?‚’行ã„ã€ãã®ä»–ã«ã¤ã?¦ã¯æ”¹å»?‚’å…?«æˆ»ã™ï¼?
431 *
432 * ã“ã?パラメータをfalseã«æŒ?®šã™ã‚‹ã¨ã€ãƒ†ãƒ¼ãƒ–ルモãƒ?ƒ«ã«å¯¾ã™ã‚‹å‡¦ç?‚’行ã„ã¾ã›ã‚“ã€?
433 * ã“れã¯ã€ä¾‹ãˆã°PL/SQLã§ã‚¨ãƒ©ãƒ¼ãƒã‚§ãƒ?‚¯ã®ã¿ã‚’行ã„ãŸã„å ´åˆã«æœ‰åйã§ã™ã?
434 * åˆæœŸå€¤ã¯true(処ç?‚’行ã†?‰ã§ã™ã?
435 *
436 * @og.rev 5.5.5.2 (2012/08/10) æ–°è¦ä½œæ?
437 *
438 * @param flag ãƒ??ブルモãƒ?ƒ«ã«å¯¾ã™ã‚‹å‡¦ç?‚’行ã†ã‹ã©ã?‹
439 */
440 public void setTableModelCommit( final String flag ) {
441 isTableModelCommit = nval( getRequestParameter( flag ),isTableModelCommit );
442 }
443
444 /**
445 * ã“ã?オブジェクトã?æ–?—å?表ç¾ã‚’è¿”ã—ã¾ã™ã?
446 * 基本çš?«ãƒ?ƒãƒ?‚°ç›®çš?«ä½¿ç”¨ã—ã¾ã™ã?
447 *
448 * @return ã“ã?ã‚¯ãƒ©ã‚¹ã®æ–?—å?表ç¾
449 */
450 @Override
451 public String toString() {
452 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() )
453 .println( "VERSION" ,VERSION )
454 .println( "selectedAll" ,selectedAll )
455 .fixForm().toString()
456 + HybsSystem.CR
457 + super.toString() ;
458 }
459 }