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.db;
017
018 import org.opengion.hayabusa.common.HybsSystemException;
019 import org.opengion.fukurou.util.StringUtil;
020
021 import java.sql.SQLData;
022 import java.sql.SQLInput;
023 import java.sql.SQLOutput;
024 import java.sql.SQLException;
025
026 /**
027 * QLData インターフェースを継承した ユーザー変数の受け渡し用オブジェクトです?
028 * 登録されて?属???は、セ?メソ?を?して??番に設定されます?
029 *
030 * @og.group ??/Shell制御
031 *
032 * @version 4.0
033 * @author Kazuhiko Hasegawa
034 * @since JDK5.0,
035 */
036 public class DBUserArg implements SQLData {
037 private String sql_type ;
038
039 private final String[] names;
040 private String[] values;
041
042 /**
043 * すべての属???を指定して、新しい DBUserArg オブジェクトを作?します?
044 *
045 * @og.rev 3.3.3.1 (2003/07/18) ??登録時?後ろスペ?スを削除する?
046 * @og.rev 3.5.6.0 (2004/06/18) ?に取り込み時に、キー配?は?arraycopy を行う?
047 *
048 * @param type ??タベ?スタイプ文字?
049 * @param nms キー配?
050 * @param vals 属?配?
051 */
052 public DBUserArg( final String type,final String[] nms,final String[] vals ) {
053 if( nms == null ) {
054 String errMsg = "引数のキー配??null です?" ;
055 throw new HybsSystemException( errMsg );
056 }
057
058 int size = nms.length;
059 names = new String[size];
060 System.arraycopy( nms,0,names,0,size );
061
062 sql_type = type;
063 values = StringUtil.rTrims( vals );
064 }
065
066 /**
067 * 属?配???を取得します?
068 *
069 * @og.rev 3.5.6.0 (2004/06/18) 取り出し時に?配??clone して返します?
070 * @og.rev 3.6.0.0 (2004/09/22) 属?配??null の場合?、エラー
071 *
072 * @return 属?配?
073 */
074 public String[] getValues() {
075 if( values != null ) {
076 return values.clone();
077 }
078
079 String errMsg = "属?配?が?初期化されて?せん?;
080 throw new HybsSystemException( errMsg );
081 }
082
083 // ============================================================
084 // implements SQLData
085 // ============================================================
086
087 /**
088 * ???タイプ???を返します?
089 *
090 * @return ???タイプ???
091 * @throws SQLException ※ こ?実?ら? SQLException は、throw されません?
092 */
093 public String getSQLTypeName() throws SQLException {
094 return sql_type;
095 }
096
097 /**
098 * ??タベ?ス?より?属?を取得し、オブジェクトを構築します?
099 *
100 * @param stream ストリー?
101 * @param typeName ???タイプ???
102 * @throws SQLException ??タベ?スアクセスエラー
103 */
104 public void readSQL( final SQLInput stream, final String typeName ) throws SQLException {
105 sql_type = typeName;
106
107 values = new String[names.length];
108 for( int i=0; i<names.length; i++ ) {
109 values[i] = stream.readString();
110 }
111 }
112
113 /**
114 * ??タベ?ス?に?属?を設定します?
115 *
116 * @param stream ストリー?
117 * @throws SQLException ??タベ?スアクセスエラー
118 */
119 public void writeSQL( final SQLOutput stream ) throws SQLException {
120 for( int i=0; i<names.length; i++ ) {
121 stream.writeString( values[i] );
122 }
123 }
124 }