#region Apache Notice /***************************************************************************** * $Header: $ * $Revision: $ * $Date: $ * * iBATIS.NET Data Mapper * Copyright (C) 2004 - Gilles Bayon * * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ********************************************************************************/ #endregion #region Using using System; using System.Data; using IBatisNet.DataMapper.Configuration.ParameterMapping; using IBatisNet.DataMapper.Configuration.ResultMapping; #endregion namespace IBatisNet.DataMapper.TypeHandlers { /// /// Custom type handler for adding a TypeHandlerCallback /// internal class CustomTypeHandler : BaseTypeHandler { private ITypeHandlerCallback _callback = null; public CustomTypeHandler(ITypeHandlerCallback callback) { _callback = callback; } public ITypeHandlerCallback Callback { get { return _callback; } set { /* nop */ } } /// /// Performs processing on a value before it is used to set /// the parameter of a IDbCommand. /// /// /// The value to be set /// Data base type public override void SetParameter(IDataParameter dataParameter, object parameterValue, string dbType) { IParameterSetter setter = new ParameterSetterImpl(dataParameter); _callback.SetParameter(setter, parameterValue); } public override object GetValueByName(ResultProperty mapping, IDataReader dataReader) { IResultGetter getter = new ResultGetterImpl(dataReader, mapping.ColumnName); return _callback.GetResult(getter); } public override object GetValueByIndex(ResultProperty mapping, IDataReader dataReader) { IResultGetter getter = new ResultGetterImpl(dataReader, mapping.ColumnIndex); return _callback.GetResult(getter); } public override object ValueOf(Type type, string s) { return _callback.ValueOf(s); } public override object GetDataBaseValue(object outputValue, Type parameterType) { IResultGetter getter = new ResultGetterImpl(outputValue); return _callback.GetResult(getter); } public override bool IsSimpleType { get { return true; } } } }