001: /*
002: * Copyright 2004 Clinton Begin
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, either express or implied.
013: * See the License for the specific language governing permissions and
014: * limitations under the License.
015: */
016: package com.ibatis.sqlmap.engine.mapping.parameter;
017:
018: import com.ibatis.common.resources.Resources;
019: import com.ibatis.sqlmap.client.SqlMapException;
020: import com.ibatis.sqlmap.engine.type.JdbcTypeRegistry;
021: import com.ibatis.sqlmap.engine.type.TypeHandler;
022:
023: public class BasicParameterMapping implements ParameterMapping {
024:
025: private static final String MODE_INOUT = "INOUT";
026: private static final String MODE_OUT = "OUT";
027: private static final String MODE_IN = "IN";
028:
029: private String propertyName;
030: private TypeHandler typeHandler;
031: private String typeName; // this is used for REF types or user-defined types
032: private int jdbcType;
033: private String jdbcTypeName;
034: private String nullValue;
035: private String mode;
036: private boolean inputAllowed;
037: private boolean outputAllowed;
038: private Class javaType;
039: private String resultMapName;
040: private Integer numericScale;
041:
042: private String errorString;
043:
044: public BasicParameterMapping() {
045: mode = "IN";
046: inputAllowed = true;
047: outputAllowed = false;
048: }
049:
050: public String getNullValue() {
051: return nullValue;
052: }
053:
054: public void setNullValue(String nullValue) {
055: this .nullValue = nullValue;
056: }
057:
058: public String getPropertyName() {
059: return propertyName;
060: }
061:
062: public void setPropertyName(String propertyName) {
063: this .errorString = "Check the parameter mapping for the '"
064: + propertyName + "' property.";
065: this .propertyName = propertyName;
066: }
067:
068: public String getErrorString() {
069: return errorString;
070: }
071:
072: public TypeHandler getTypeHandler() {
073: return typeHandler;
074: }
075:
076: public void setTypeHandler(TypeHandler typeHandler) {
077: this .typeHandler = typeHandler;
078: }
079:
080: public Class getJavaType() {
081: return javaType;
082: }
083:
084: public void setJavaType(Class javaType) {
085: this .javaType = javaType;
086: }
087:
088: public String getJavaTypeName() {
089: if (javaType == null) {
090: return null;
091: } else {
092: return javaType.getName();
093: }
094: }
095:
096: public void setJavaTypeName(String javaTypeName) {
097: try {
098: if (javaTypeName == null) {
099: this .javaType = null;
100: } else {
101: this .javaType = Resources.classForName(javaTypeName);
102: }
103: } catch (ClassNotFoundException e) {
104: throw new SqlMapException(
105: "Error setting javaType property of ParameterMap. Cause: "
106: + e, e);
107: }
108: }
109:
110: public int getJdbcType() {
111: return jdbcType;
112: }
113:
114: public String getJdbcTypeName() {
115: return jdbcTypeName;
116: }
117:
118: public void setJdbcTypeName(String jdbcTypeName) {
119: this .jdbcTypeName = jdbcTypeName;
120: this .jdbcType = JdbcTypeRegistry.getType(jdbcTypeName);
121: }
122:
123: public String getMode() {
124: return mode;
125: }
126:
127: public void setMode(String mode) {
128: this .mode = mode;
129: inputAllowed = MODE_IN.equals(mode) || MODE_INOUT.equals(mode);
130: outputAllowed = MODE_OUT.equals(mode)
131: || MODE_INOUT.equals(mode);
132: }
133:
134: public boolean isInputAllowed() {
135: return inputAllowed;
136: }
137:
138: public boolean isOutputAllowed() {
139: return outputAllowed;
140: }
141:
142: /**
143: * user-defined or REF types
144: *
145: * @return typeName
146: */
147: public String getTypeName() {
148: return typeName;
149: }
150:
151: /**
152: * for user-defined or REF types
153: * @param typeName
154: */
155: public void setTypeName(String typeName) {
156: this .typeName = typeName;
157: }
158:
159: public String getResultMapName() {
160: return resultMapName;
161: }
162:
163: public void setResultMapName(String resultMapName) {
164: this .resultMapName = resultMapName;
165: }
166:
167: public Integer getNumericScale() {
168: return numericScale;
169: }
170:
171: public void setNumericScale(Integer numericScale) {
172: this.numericScale = numericScale;
173: }
174:
175: }
|