You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ibatis.apache.org by gb...@apache.org on 2005/05/15 10:25:09 UTC

svn commit: r170206 - in /incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper: ./ Configuration/ResultMapping/ Test/ Test/Domain/ Test/Maps/Access/OleDb/ Test/Maps/MSSQL/Odbc/ Test/Maps/MSSQL/OleDb/ Test/Maps/MSSQL/SqlClient/ Test/Maps/MySql/ByteFx/ Test/Maps/MySql/MySql/ Test/Maps/Oracle/ODP/ Test/Maps/Oracle/OracleClient/ Test/NUnit/SqlMapTests/ Test/bin/Debug/

Author: gbayon
Date: Sun May 15 01:25:07 2005
New Revision: 170206

URL: http://svn.apache.org/viewcvs?rev=170206&view=rev
Log:
- Updated discriminator to follow Java usage (need to update doc)

Added:
    incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Domain/CustomInheritance.cs
Removed:
    incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Domain/MyFormula.cs
    incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/DefaultFormula.cs
    incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/IDiscriminatorFormula.cs
Modified:
    incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/IBatisNet.DataMapper.Test.csproj
    incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/Access/OleDb/Document.xml
    incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/Odbc/Document.xml
    incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/OleDb/document.xml
    incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/Document.xml
    incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MySql/ByteFx/Document.xml
    incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MySql/MySql/Document.xml
    incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/Oracle/ODP/Document.xml
    incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/Oracle/OracleClient/Document.xml
    incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/InheritanceTest.cs
    incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/bin/Debug/IBatisNet.DataMapper.Test.dll.config
    incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/Discriminator.cs
    incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultMap.cs
    incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultProperty.cs
    incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/IBatisNet.DataMapper.csproj

Added: incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Domain/CustomInheritance.cs
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Domain/CustomInheritance.cs?rev=170206&view=auto
==============================================================================
--- incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Domain/CustomInheritance.cs (added)
+++ incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Domain/CustomInheritance.cs Sun May 15 01:25:07 2005
@@ -0,0 +1,47 @@
+using System;
+
+using IBatisNet.DataMapper.TypeHandlers;
+
+namespace IBatisNet.DataMapper.Test.Domain
+{
+	/// <summary>
+	/// Description résumée de CustomInheritance.
+	/// </summary>
+	public class CustomInheritance : ITypeHandlerCallback
+	{
+
+		#region ITypeHandlerCallback members
+
+		public object GetNullValue(string nullValue)
+		{
+			throw new NotImplementedException();
+		}
+
+		public object GetResult(IResultGetter getter)
+		{
+			string type = getter.Value.ToString();
+
+			if (type=="Monograph" || type=="Book")
+			{
+				return "Book";
+			}
+			else if (type=="Tabloid" || type=="Broadsheet" || type=="Newspaper")
+			{
+
+				return "Newspaper";
+			}
+			else
+			{
+				return "Document";
+			}
+
+		}
+
+		public void SetParameter(IParameterSetter setter, object parameter)
+		{
+			throw new NotImplementedException(); 
+		}
+
+		#endregion
+	}
+}

Modified: incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/IBatisNet.DataMapper.Test.csproj
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/IBatisNet.DataMapper.Test.csproj?rev=170206&r1=170205&r2=170206&view=diff
==============================================================================
--- incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/IBatisNet.DataMapper.Test.csproj (original)
+++ incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/IBatisNet.DataMapper.Test.csproj Sun May 15 01:25:07 2005
@@ -208,6 +208,11 @@
                     BuildAction = "Compile"
                 />
                 <File
+                    RelPath = "Domain\CustomInheritance.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
                     RelPath = "Domain\Document.cs"
                     SubType = "Code"
                     BuildAction = "Compile"
@@ -234,11 +239,6 @@
                 />
                 <File
                     RelPath = "Domain\LineItemCollection.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Domain\MyFormula.cs"
                     SubType = "Code"
                     BuildAction = "Compile"
                 />

Modified: incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/Access/OleDb/Document.xml
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/Access/OleDb/Document.xml?rev=170206&r1=170205&r2=170206&view=diff
==============================================================================
--- incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/Access/OleDb/Document.xml (original)
+++ incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/Access/OleDb/Document.xml Sun May 15 01:25:07 2005
@@ -7,7 +7,6 @@
 		<typeAlias alias="Book" type="IBatisNet.DataMapper.Test.Domain.Book, IBatisNet.DataMapper.Test" />
 		<typeAlias alias="Newspaper" type="IBatisNet.DataMapper.Test.Domain.Newspaper, IBatisNet.DataMapper.Test" />
 		<typeAlias alias="DocumentCollection" type="IBatisNet.DataMapper.Test.Domain.DocumentCollection, IBatisNet.DataMapper.Test" />
-		<typeAlias alias="MyFormula" type="IBatisNet.DataMapper.Test.Domain.MyFormula, IBatisNet.DataMapper.Test" />
 	</alias>
 	
 	<resultMaps>  	
@@ -19,13 +18,13 @@
 			<subMap value="Newspaper" resultMapping="newspaper" />
 		</resultMap>
 		
-		<resultMap id="document-custom-formula" class="Document">
+		<!-- <resultMap id="document-custom-formula" class="Document">
 			<result property="Id"			column="Document_ID"/>
 			<result property="Title"			column="Document_Title"/>
 			<discriminator formula="MyFormula"  /> 
 			<subMap value="Book" resultMapping="book" />
 			<subMap value="Newspaper" resultMapping="newspaper" />
-		</resultMap>
+		</resultMap>-->
 		
 		<resultMap id="book" class="Book" extends="document">
 			<result property="PageNumber"		column="Document_PageNumber"/>

Modified: incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/Odbc/Document.xml
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/Odbc/Document.xml?rev=170206&r1=170205&r2=170206&view=diff
==============================================================================
--- incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/Odbc/Document.xml (original)
+++ incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/Odbc/Document.xml Sun May 15 01:25:07 2005
@@ -7,22 +7,22 @@
 		<typeAlias alias="Book" type="IBatisNet.DataMapper.Test.Domain.Book, IBatisNet.DataMapper.Test" />
 		<typeAlias alias="Newspaper" type="IBatisNet.DataMapper.Test.Domain.Newspaper, IBatisNet.DataMapper.Test" />
 		<typeAlias alias="DocumentCollection" type="IBatisNet.DataMapper.Test.Domain.DocumentCollection, IBatisNet.DataMapper.Test" />				
-		<typeAlias alias="MyFormula" type="IBatisNet.DataMapper.Test.Domain.MyFormula, IBatisNet.DataMapper.Test" />
+		<typeAlias alias="CustomInheritance" type="IBatisNet.DataMapper.Test.Domain.CustomInheritance, IBatisNet.DataMapper.Test"/>		
 	</alias>
 	
 	<resultMaps>  	
 		<resultMap id="document" class="Document">
 			<result property="Id"			column="Document_ID"/>
 			<result property="Title"			column="Document_Title"/>
-			<discriminator column="Document_Type"  /> 
+			<discriminator column="Document_Type" type="string"/> 
 			<subMap value="Book" resultMapping="book" />
 			<subMap value="Newspaper" resultMapping="newspaper" />
 		</resultMap>
 		
-		<resultMap id="document-custom-formula" class="Document">
+		<resultMap id="document-custom-handler" class="Document">
 			<result property="Id"			column="Document_ID"/>
-			<result property="Title"			column="Document_Title"/>
-			<discriminator formula="MyFormula"  /> 
+			<result property="Title"		column="Document_Title"/>
+			<discriminator column="Document_Type"  typeHandler="CustomInheritance"/> 
 			<subMap value="Book" resultMapping="book" />
 			<subMap value="Newspaper" resultMapping="newspaper" />
 		</resultMap>
@@ -56,8 +56,8 @@
 			order by Document_Type, Document_Id
 		</select>
 				
-		<select id="GetAllDocumentWithFormula"
-			resultMap="document-custom-formula">
+		<select id="GetAllDocumentWithCustomTypeHandler"
+			resultMap="document-custom-handler">
 			select
 				*
 			from Documents 

Modified: incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/OleDb/document.xml
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/OleDb/document.xml?rev=170206&r1=170205&r2=170206&view=diff
==============================================================================
--- incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/OleDb/document.xml (original)
+++ incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/OleDb/document.xml Sun May 15 01:25:07 2005
@@ -7,22 +7,22 @@
 		<typeAlias alias="Book" type="IBatisNet.DataMapper.Test.Domain.Book, IBatisNet.DataMapper.Test" />
 		<typeAlias alias="Newspaper" type="IBatisNet.DataMapper.Test.Domain.Newspaper, IBatisNet.DataMapper.Test" />
 		<typeAlias alias="DocumentCollection" type="IBatisNet.DataMapper.Test.Domain.DocumentCollection, IBatisNet.DataMapper.Test" />		
-		<typeAlias alias="MyFormula" type="IBatisNet.DataMapper.Test.Domain.MyFormula, IBatisNet.DataMapper.Test" />
+		<typeAlias alias="CustomInheritance" type="IBatisNet.DataMapper.Test.Domain.CustomInheritance, IBatisNet.DataMapper.Test"/>		
 	</alias>
 	
 	<resultMaps>  	
 		<resultMap id="document" class="Document">
 			<result property="Id"			column="Document_ID"/>
 			<result property="Title"			column="Document_Title"/>
-			<discriminator column="Document_Type"  /> 
+			<discriminator column="Document_Type" type="string"/> 
 			<subMap value="Book" resultMapping="book" />
 			<subMap value="Newspaper" resultMapping="newspaper" />
 		</resultMap>
 		
-		<resultMap id="document-custom-formula" class="Document">
+		<resultMap id="document-custom-handler" class="Document">
 			<result property="Id"			column="Document_ID"/>
-			<result property="Title"			column="Document_Title"/>
-			<discriminator formula="MyFormula"  /> 
+			<result property="Title"		column="Document_Title"/>
+			<discriminator column="Document_Type"  typeHandler="CustomInheritance"/> 
 			<subMap value="Book" resultMapping="book" />
 			<subMap value="Newspaper" resultMapping="newspaper" />
 		</resultMap>
@@ -56,8 +56,8 @@
 			order by Document_Type, Document_Id
 		</select>
 				
-		<select id="GetAllDocumentWithFormula"
-			resultMap="document-custom-formula">
+		<select id="GetAllDocumentWithCustomTypeHandler"
+			resultMap="document-custom-handler">
 			select
 				*
 			from Documents 

Modified: incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/Document.xml
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/Document.xml?rev=170206&r1=170205&r2=170206&view=diff
==============================================================================
--- incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/Document.xml (original)
+++ incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/Document.xml Sun May 15 01:25:07 2005
@@ -7,32 +7,32 @@
 		<typeAlias alias="Book" type="IBatisNet.DataMapper.Test.Domain.Book, IBatisNet.DataMapper.Test" />
 		<typeAlias alias="Newspaper" type="IBatisNet.DataMapper.Test.Domain.Newspaper, IBatisNet.DataMapper.Test" />
 		<typeAlias alias="DocumentCollection" type="IBatisNet.DataMapper.Test.Domain.DocumentCollection, IBatisNet.DataMapper.Test" />
-		<typeAlias alias="MyFormula" type="IBatisNet.DataMapper.Test.Domain.MyFormula, IBatisNet.DataMapper.Test" />
+		<typeAlias alias="CustomInheritance" type="IBatisNet.DataMapper.Test.Domain.CustomInheritance, IBatisNet.DataMapper.Test"/>	
 	</alias>
 	
 	<resultMaps>  	
 		<resultMap id="document" class="Document">
 			<result property="Id"			column="Document_ID"/>
-			<result property="Title"			column="Document_Title"/>
-			<discriminator column="Document_Type"  /> 
+			<result property="Title"		column="Document_Title"/>
+			<discriminator column="Document_Type" type="string"/> 
 			<subMap value="Book" resultMapping="book" />
 			<subMap value="Newspaper" resultMapping="newspaper" />
 		</resultMap>
 		
-		<resultMap id="document-custom-formula" class="Document">
+		<resultMap id="document-custom-handler" class="Document">
 			<result property="Id"			column="Document_ID"/>
-			<result property="Title"			column="Document_Title"/>
-			<discriminator formula="MyFormula"  /> 
+			<result property="Title"		column="Document_Title"/>
+			<discriminator column="Document_Type"  typeHandler="CustomInheritance"/> 
 			<subMap value="Book" resultMapping="book" />
 			<subMap value="Newspaper" resultMapping="newspaper" />
 		</resultMap>
 		
 		<resultMap id="book" class="Book" extends="document">
-			<result property="PageNumber"		column="Document_PageNumber"/>
+			<result property="PageNumber" column="Document_PageNumber"/>
 		</resultMap>
 		
 		<resultMap id="newspaper" class="Newspaper"  extends="document">
-			<result property="City"			column="Document_City"/>
+			<result property="City"	column="Document_City"/>
 		</resultMap>
 		
 	</resultMaps>  
@@ -56,8 +56,8 @@
 			order by Document_Type, Document_Id
 		</select>
 		
-		<select id="GetAllDocumentWithFormula"
-			resultMap="document-custom-formula">
+		<select id="GetAllDocumentWithCustomTypeHandler"
+			resultMap="document-custom-handler">
 			select
 				*
 			from Documents 

Modified: incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MySql/ByteFx/Document.xml
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MySql/ByteFx/Document.xml?rev=170206&r1=170205&r2=170206&view=diff
==============================================================================
--- incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MySql/ByteFx/Document.xml (original)
+++ incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MySql/ByteFx/Document.xml Sun May 15 01:25:07 2005
@@ -7,22 +7,22 @@
 		<typeAlias alias="Book" type="IBatisNet.DataMapper.Test.Domain.Book, IBatisNet.DataMapper.Test" />
 		<typeAlias alias="Newspaper" type="IBatisNet.DataMapper.Test.Domain.Newspaper, IBatisNet.DataMapper.Test" />
 		<typeAlias alias="DocumentCollection" type="IBatisNet.DataMapper.Test.Domain.DocumentCollection, IBatisNet.DataMapper.Test" />
-		<typeAlias alias="MyFormula" type="IBatisNet.DataMapper.Test.Domain.MyFormula, IBatisNet.DataMapper.Test" />
+		<typeAlias alias="CustomInheritance" type="IBatisNet.DataMapper.Test.Domain.CustomInheritance, IBatisNet.DataMapper.Test"/>		
 	</alias>
 	
 	<resultMaps>  	
 		<resultMap id="document" class="Document">
 			<result property="Id"			column="Document_ID"/>
 			<result property="Title"			column="Document_Title"/>
-			<discriminator column="Document_Type"  /> 
+			<discriminator column="Document_Type" type="string"/> 
 			<subMap value="Book" resultMapping="book" />
 			<subMap value="Newspaper" resultMapping="newspaper" />
 		</resultMap>
 		
-		<resultMap id="document-custom-formula" class="Document">
+		<resultMap id="document-custom-handler" class="Document">
 			<result property="Id"			column="Document_ID"/>
-			<result property="Title"			column="Document_Title"/>
-			<discriminator formula="MyFormula"  /> 
+			<result property="Title"		column="Document_Title"/>
+			<discriminator column="Document_Type"  typeHandler="CustomInheritance"/> 
 			<subMap value="Book" resultMapping="book" />
 			<subMap value="Newspaper" resultMapping="newspaper" />
 		</resultMap>
@@ -56,13 +56,13 @@
 			order by Document_Type, Document_Id
 		</select>		
 		
-		<statement id="GetAllDocumentWithFormula"
-			resultMap="document-custom-formula">
+		<select id="GetAllDocumentWithCustomTypeHandler"
+			resultMap="document-custom-handler">
 			select
 				*
 			from Documents 
 			order by Document_Type, Document_Id
-		</statement>
+		</select>
 		
   </statements>
 	

Modified: incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MySql/MySql/Document.xml
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MySql/MySql/Document.xml?rev=170206&r1=170205&r2=170206&view=diff
==============================================================================
--- incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MySql/MySql/Document.xml (original)
+++ incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MySql/MySql/Document.xml Sun May 15 01:25:07 2005
@@ -7,22 +7,22 @@
 		<typeAlias alias="Book" type="IBatisNet.DataMapper.Test.Domain.Book, IBatisNet.DataMapper.Test" />
 		<typeAlias alias="Newspaper" type="IBatisNet.DataMapper.Test.Domain.Newspaper, IBatisNet.DataMapper.Test" />
 		<typeAlias alias="DocumentCollection" type="IBatisNet.DataMapper.Test.Domain.DocumentCollection, IBatisNet.DataMapper.Test" />
-		<typeAlias alias="MyFormula" type="IBatisNet.DataMapper.Test.Domain.MyFormula, IBatisNet.DataMapper.Test" />
+		<typeAlias alias="CustomInheritance" type="IBatisNet.DataMapper.Test.Domain.CustomInheritance, IBatisNet.DataMapper.Test"/>		
 	</alias>
 	
 	<resultMaps>  	
 		<resultMap id="document" class="Document">
 			<result property="Id"			column="Document_ID"/>
 			<result property="Title"			column="Document_Title"/>
-			<discriminator column="Document_Type"  /> 
+			<discriminator column="Document_Type" type="string"/> 
 			<subMap value="Book" resultMapping="book" />
 			<subMap value="Newspaper" resultMapping="newspaper" />
 		</resultMap>
 		
-		<resultMap id="document-custom-formula" class="Document">
+		<resultMap id="document-custom-handler" class="Document">
 			<result property="Id"			column="Document_ID"/>
-			<result property="Title"			column="Document_Title"/>
-			<discriminator formula="MyFormula"  /> 
+			<result property="Title"		column="Document_Title"/>
+			<discriminator column="Document_Type"  typeHandler="CustomInheritance"/> 
 			<subMap value="Book" resultMapping="book" />
 			<subMap value="Newspaper" resultMapping="newspaper" />
 		</resultMap>
@@ -56,13 +56,13 @@
 			order by Document_Type, Document_Id
 		</select>		
 		
-		<statement id="GetAllDocumentWithFormula"
-			resultMap="document-custom-formula">
+		<select id="GetAllDocumentWithCustomTypeHandler"
+			resultMap="document-custom-handler">
 			select
 				*
 			from Documents 
 			order by Document_Type, Document_Id
-		</statement>
+		</select>
 		
   </statements>
 	

Modified: incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/Oracle/ODP/Document.xml
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/Oracle/ODP/Document.xml?rev=170206&r1=170205&r2=170206&view=diff
==============================================================================
--- incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/Oracle/ODP/Document.xml (original)
+++ incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/Oracle/ODP/Document.xml Sun May 15 01:25:07 2005
@@ -7,22 +7,22 @@
 		<typeAlias alias="Book" type="IBatisNet.DataMapper.Test.Domain.Book, IBatisNet.DataMapper.Test" />
 		<typeAlias alias="Newspaper" type="IBatisNet.DataMapper.Test.Domain.Newspaper, IBatisNet.DataMapper.Test" />
 		<typeAlias alias="DocumentCollection" type="IBatisNet.DataMapper.Test.Domain.DocumentCollection, IBatisNet.DataMapper.Test" />
-		<typeAlias alias="MyFormula" type="IBatisNet.DataMapper.Test.Domain.MyFormula, IBatisNet.DataMapper.Test" />
+		<typeAlias alias="CustomInheritance" type="IBatisNet.DataMapper.Test.Domain.CustomInheritance, IBatisNet.DataMapper.Test"/>	
 	</alias>
 	
 	<resultMaps>  	
 		<resultMap id="document" class="Document">
 			<result property="Id"			column="Document_ID"/>
 			<result property="Title"			column="Document_Title"/>
-			<discriminator column="Document_Type"  /> 
+			<discriminator column="Document_Type" type="string"/> 
 			<subMap value="Book" resultMapping="book" />
 			<subMap value="Newspaper" resultMapping="newspaper" />
 		</resultMap>
 		
-		<resultMap id="document-custom-formula" class="Document">
+		<resultMap id="document-custom-handler" class="Document">
 			<result property="Id"			column="Document_ID"/>
-			<result property="Title"			column="Document_Title"/>
-			<discriminator formula="MyFormula"  /> 
+			<result property="Title"		column="Document_Title"/>
+			<discriminator column="Document_Type"  typeHandler="CustomInheritance"/> 
 			<subMap value="Book" resultMapping="book" />
 			<subMap value="Newspaper" resultMapping="newspaper" />
 		</resultMap>
@@ -56,13 +56,13 @@
 			order by Document_Type, Document_Id
 		</select>		
 		
-		<statement id="GetAllDocumentWithFormula"
-			resultMap="document-custom-formula">
+		<select id="GetAllDocumentWithCustomTypeHandler"
+			resultMap="document-custom-handler">
 			select
 				*
 			from Documents 
 			order by Document_Type, Document_Id
-		</statement>
+		</select>
 		
   </statements>
 	

Modified: incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/Oracle/OracleClient/Document.xml
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/Oracle/OracleClient/Document.xml?rev=170206&r1=170205&r2=170206&view=diff
==============================================================================
--- incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/Oracle/OracleClient/Document.xml (original)
+++ incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/Oracle/OracleClient/Document.xml Sun May 15 01:25:07 2005
@@ -7,22 +7,22 @@
 		<typeAlias alias="Book" type="IBatisNet.DataMapper.Test.Domain.Book, IBatisNet.DataMapper.Test" />
 		<typeAlias alias="Newspaper" type="IBatisNet.DataMapper.Test.Domain.Newspaper, IBatisNet.DataMapper.Test" />
 		<typeAlias alias="DocumentCollection" type="IBatisNet.DataMapper.Test.Domain.DocumentCollection, IBatisNet.DataMapper.Test" />
-		<typeAlias alias="MyFormula" type="IBatisNet.DataMapper.Test.Domain.MyFormula, IBatisNet.DataMapper.Test" />
+		<typeAlias alias="CustomInheritance" type="IBatisNet.DataMapper.Test.Domain.CustomInheritance, IBatisNet.DataMapper.Test"/>	
 	</alias>
 	
 	<resultMaps>  	
 		<resultMap id="document" class="Document">
 			<result property="Id"			column="Document_ID"/>
 			<result property="Title"			column="Document_Title"/>
-			<discriminator column="Document_Type"  /> 
+			<discriminator column="Document_Type" type="string"/> 
 			<subMap value="Book" resultMapping="book" />
 			<subMap value="Newspaper" resultMapping="newspaper" />
 		</resultMap>
 		
-		<resultMap id="document-custom-formula" class="Document">
+		<resultMap id="document-custom-handler" class="Document">
 			<result property="Id"			column="Document_ID"/>
-			<result property="Title"			column="Document_Title"/>
-			<discriminator formula="MyFormula"  /> 
+			<result property="Title"		column="Document_Title"/>
+			<discriminator column="Document_Type"  typeHandler="CustomInheritance"/> 
 			<subMap value="Book" resultMapping="book" />
 			<subMap value="Newspaper" resultMapping="newspaper" />
 		</resultMap>
@@ -56,13 +56,13 @@
 			order by Document_Type, Document_Id
 		</select>		
 		
-		<statement id="GetAllDocumentWithFormula"
-			resultMap="document-custom-formula">
+		<select id="GetAllDocumentWithCustomTypeHandler"
+			resultMap="document-custom-handler">
 			select
 				*
 			from Documents 
 			order by Document_Type, Document_Id
-		</statement>
+		</select>
 		
   </statements>
 	

Modified: incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/InheritanceTest.cs
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/InheritanceTest.cs?rev=170206&r1=170205&r2=170206&view=diff
==============================================================================
--- incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/InheritanceTest.cs (original)
+++ incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/InheritanceTest.cs Sun May 15 01:25:07 2005
@@ -103,12 +103,12 @@
 		}
 
 		/// <summary>
-		/// Test All document with formula
+		/// Test All document with Custom Type Handler
 		/// </summary>
 		[Test] 
-		public void GetAllDocumentWithFormula() 
+		public void GetAllDocumentWithCustomTypeHandler() 
 		{
-			IList list = sqlMap.QueryForList("GetAllDocumentWithFormula", null);
+			IList list = sqlMap.QueryForList("GetAllDocumentWithCustomTypeHandler", null);
 
 			Assert.AreEqual(6, list.Count);
 			Book book = (Book) list[0];

Modified: incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/bin/Debug/IBatisNet.DataMapper.Test.dll.config
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/bin/Debug/IBatisNet.DataMapper.Test.dll.config?rev=170206&r1=170205&r2=170206&view=diff
==============================================================================
--- incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/bin/Debug/IBatisNet.DataMapper.Test.dll.config (original)
+++ incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/bin/Debug/IBatisNet.DataMapper.Test.dll.config Sun May 15 01:25:07 2005
@@ -20,7 +20,7 @@
 		<!-- To test MySql via MySql provider value="MySql"  -->
 		<!-- To test via OleDb provider (any database) value="OleDb"  -->
 		<!-- To test via Odbc provider (any database) value="Odbc"  -->
-		<add key="providerType" value="SqlClient"/>
+		<add key="providerType" value="OleDb"/>
 	</appSettings>
 	
 	<!-- This section contains the log4net configuration settings -->

Modified: incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/Discriminator.cs
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/Discriminator.cs?rev=170206&r1=170205&r2=170206&view=diff
==============================================================================
--- incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/Discriminator.cs (original)
+++ incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/Discriminator.cs Sun May 15 01:25:07 2005
@@ -29,7 +29,6 @@
 using System;
 using System.Collections;
 using System.Collections.Specialized;
-using System.Data;
 using System.Xml.Serialization;
 using IBatisNet.DataMapper.Scope;
 
@@ -47,9 +46,7 @@
 
 		#region Fields
 		[NonSerialized]
-		private string _discriminatorColumn = string.Empty;
-		[NonSerialized]
-		private IDiscriminatorFormula _formula = null;
+		private ResultProperty _mapping = null;
 		/// <summary>
 		/// (discriminatorValue (string), ResultMap)
 		/// </summary>
@@ -60,41 +57,102 @@
 		/// </summary>
 		[NonSerialized]
 		private ArrayList _subMaps = null;
+
+		[NonSerialized]
+		private string _nullValue = string.Empty;
+		[NonSerialized]
+		private string _columnName = string.Empty;
+		[NonSerialized]
+		private int _columnIndex = ResultProperty.UNKNOWN_COLUMN_INDEX;
 		[NonSerialized]
-		private string _formulaClassName = string.Empty;//typeof(DefaultFormula).FullName;
+		private string _dbType = string.Empty;
+		[NonSerialized]
+		private string _clrType = string.Empty;
+		[NonSerialized]
+		private string _callBackName= string.Empty;
 		#endregion 
 
 		#region Properties
 
 		/// <summary>
-		/// Formula class name, 
-		/// used to calculate the discriminator value to use
+		/// Specify the custom type handlers to used.
+		/// </summary>
+		/// <remarks>Will be an alias to a class wchic implement ITypeHandlerCallback</remarks>
+		[XmlAttribute("typeHandler")]
+		public string CallBackName
+		{
+			get { return _callBackName; }
+			set { _callBackName = value; }
+		}
+
+		/// <summary>
+		/// Give an entry in the 'DbType' enumeration
+		/// </summary>
+		/// <example >
+		/// For Sql Server, give an entry of SqlDbType : Bit, Decimal, Money...
+		/// <br/>
+		/// For Oracle, give an OracleType Enumeration : Byte, Int16, Number...
+		/// </example>
+		[XmlAttribute("dbType")]
+		public string DbType
+		{
+			get { return _dbType; }
+			set { _dbType = value; }
+		}
+
+		/// <summary>
+		/// Specify the CLR type of the result.
+		/// </summary>
+		/// <remarks>
+		/// The type attribute is used to explicitly specify the property type of the property to be set.
+		/// Normally this can be derived from a property through reflection, but certain mappings such as
+		/// HashTable cannot provide the type to the framework.
+		/// </remarks>
+		[XmlAttribute("type")]
+		public string CLRType
+		{
+			get { return _clrType; }
+			set { _clrType = value; }
+		}
+
+		/// <summary>
+		/// Column Index
 		/// </summary>
-		[XmlAttribute("formula")]
-		public string FormulaClassName
+		[XmlAttribute("columnIndex")]
+		public int ColumnIndex
 		{
-			get { return _formulaClassName; }
-			set { _formulaClassName = value; }
+			get { return _columnIndex; }
+			set { _columnIndex = value; }
 		}
 
 		/// <summary>
 		/// Column Name
 		/// </summary>
 		[XmlAttribute("column")]
-		public string DiscriminatorColumn
+		public string ColumnName
+		{
+			get { return _columnName; }
+			set { _columnName = value; }
+		}
+
+		/// <summary>
+		/// Null value replacement.
+		/// </summary>
+		/// <example>"no_email@provided.com"</example>
+		[XmlAttribute("nullValue")]
+		public string NullValue
 		{
-			get { return _discriminatorColumn; }
-			set { _discriminatorColumn = value; }
+			get { return _nullValue; }
+			set { _nullValue = value; }
 		}
 
 		/// <summary>
-		/// A formula to calculate the discriminator value to use
+		/// Th underlying ResultProperty
 		/// </summary>
 		[XmlIgnore]
-		public IDiscriminatorFormula Formula
+		public ResultProperty ResultProperty
 		{
-			get { return _formula; }	
-			set { _formula = value; }	
+			get { return _mapping; }
 		}
 		#endregion 
 
@@ -113,22 +171,29 @@
 		#region Methods
 
 		/// <summary>
+		/// Initilaize the underlying mapping
+		/// </summary>
+		/// <param name="configScope"></param>
+		public void SetMapping(ConfigurationScope configScope)
+		{
+			configScope.ErrorContext.MoreInfo = "Initialize discriminator mapping";
+			_mapping = new ResultProperty();
+			_mapping.ColumnName =  _columnName;
+			_mapping.ColumnIndex = _columnIndex;
+			_mapping.CLRType = _clrType;
+			_mapping.CallBackName = _callBackName;
+			_mapping.DbType = _dbType;
+			_mapping.NullValue = _nullValue;
+
+			_mapping.Initialize( configScope, null );
+		}
+
+		/// <summary>
 		/// Initialize the Discriminator
 		/// </summary>
 		/// <param name="configScope"></param>
 		public void Initialize(ConfigurationScope configScope)
 		{
-			// Set the formula
-			if (_formulaClassName.Length == 0)
-			{
-				_formula = new DefaultFormula(_discriminatorColumn);
-			}
-			else
-			{
-				Type formulaType = configScope.SqlMapper.GetType(_formulaClassName);
-				_formula = Activator.CreateInstance(formulaType) as IDiscriminatorFormula;
-			}
-
 			// Set the ResultMaps
 			for(int index=0; index<_subMaps.Count; index++)
 			{
@@ -149,16 +214,13 @@
 		/// <summary>
 		/// Find the SubMap to use.
 		/// </summary>
-		/// <param name="dataReader">A IDataReader which contains result values</param>
+		/// <param name="discriminatorValue">the discriminator value</param>
 		/// <returns>The find ResultMap</returns>
-		public ResultMap GetSubMap(IDataReader dataReader)
+		public ResultMap GetSubMap(string discriminatorValue)
 		{
-			// Find the resultmap to use
-			// 1/ Find the value to test
-			// 2/ Find the  resultmap
-			string discriminatorValue = _formula.GetDiscriminatorValue(dataReader);
 			return _resultMaps[discriminatorValue] as ResultMap;
 		}
+
 		#endregion 
 
 

Modified: incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultMap.cs
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultMap.cs?rev=170206&r1=170205&r2=170206&view=diff
==============================================================================
--- incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultMap.cs (original)
+++ incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultMap.cs Sun May 15 01:25:07 2005
@@ -206,7 +206,7 @@
 		private void GetChildNode(ConfigurationScope configScope)
 		{
 			XmlSerializer serializer = null;
-			ResultProperty property = null;
+			ResultProperty mapping = null;
 			SubMap subMap = null;
 
 			#region Load the Result Properties
@@ -214,19 +214,19 @@
 			serializer = new XmlSerializer(typeof(ResultProperty));
 			foreach ( XmlNode resultNode in configScope.NodeContext.SelectNodes("result") )
 			{
-				property = (ResultProperty) serializer.Deserialize(new XmlNodeReader(resultNode));
+				mapping = (ResultProperty) serializer.Deserialize(new XmlNodeReader(resultNode));
 					
-				configScope.ErrorContext.MoreInfo = "initialize result property :"+property.PropertyName;
+				configScope.ErrorContext.MoreInfo = "initialize result property :"+mapping.PropertyName;
 
 				PropertyInfo propertyInfo = null;
 
-				if ( property.PropertyName != "value" && !typeof(IDictionary).IsAssignableFrom(_class) )
+				if ( mapping.PropertyName != "value" && !typeof(IDictionary).IsAssignableFrom(_class) )
 				{
-					propertyInfo = ReflectionInfo.GetInstance(_class).GetSetter( property.PropertyName );
+					propertyInfo = ReflectionInfo.GetInstance(_class).GetSetter( mapping.PropertyName );
 				}
-				property.Initialize( configScope, propertyInfo );
+				mapping.Initialize( configScope, propertyInfo );
 
-				this.AddResultPropery( property  );
+				this.AddResultPropery( mapping  );
 			}
 			#endregion 
 
@@ -239,6 +239,8 @@
 				configScope.ErrorContext.MoreInfo = "initialize discriminator";
 
 				this.Discriminator = (Discriminator) serializer.Deserialize(new XmlNodeReader(discriminatorNode));
+
+				this.Discriminator.SetMapping( configScope );
 			}
 			#endregion 
 
@@ -326,9 +328,12 @@
 		public ResultMap ResolveSubMap(IDataReader dataReader)
 		{
 			 ResultMap subMap = this;
-			if (this.Discriminator != null)
-			{
-				subMap = this.Discriminator.GetSubMap(dataReader);
+			if (_discriminator != null)
+			{	
+				ResultProperty mapping = _discriminator.ResultProperty;
+				object dataBaseValue = mapping.TypeHandler.GetDataBaseValue( mapping, dataReader);
+				subMap = _discriminator.GetSubMap( dataBaseValue.ToString() );
+
 				if (subMap == null) 
 				{
 					subMap = this;

Modified: incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultProperty.cs
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultProperty.cs?rev=170206&r1=170205&r2=170206&view=diff
==============================================================================
--- incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultProperty.cs (original)
+++ incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultProperty.cs Sun May 15 01:25:07 2005
@@ -192,13 +192,7 @@
 		public string PropertyName
 		{
 			get { return _property; }
-			set 
-			{ 
-				if ((value == null) || (value.Length < 1))
-					throw new ArgumentNullException("The property attribute is mandatory in a result property.");
-
-				_property = value; 
-			}
+			set { _property = value; }
 		}
 
 		/// <summary>

Modified: incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/IBatisNet.DataMapper.csproj
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/IBatisNet.DataMapper.csproj?rev=170206&r1=170205&r2=170206&view=diff
==============================================================================
--- incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/IBatisNet.DataMapper.csproj (original)
+++ incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/IBatisNet.DataMapper.csproj Sun May 15 01:25:07 2005
@@ -271,17 +271,7 @@
                     BuildAction = "Compile"
                 />
                 <File
-                    RelPath = "Configuration\ResultMapping\DefaultFormula.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
                     RelPath = "Configuration\ResultMapping\Discriminator.cs"
-                    SubType = "Code"
-                    BuildAction = "Compile"
-                />
-                <File
-                    RelPath = "Configuration\ResultMapping\IDiscriminatorFormula.cs"
                     SubType = "Code"
                     BuildAction = "Compile"
                 />