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/14 13:14:50 UTC
svn commit: r170134 - in
/incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper:
Configuration/DomSqlMapBuilder.cs
Configuration/ResultMapping/Discriminator.cs
Configuration/ResultMapping/ResultMap.cs
Configuration/ResultMapping/ResultProperty.cs
MappedStatements/MappedStatement.cs Scope/RequestScope.cs
Author: gbayon
Date: Sat May 14 04:14:49 2005
New Revision: 170134
URL: http://svn.apache.org/viewcvs?rev=170134&view=rev
Log:
- refactor code
Modified:
incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/DomSqlMapBuilder.cs
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/MappedStatements/MappedStatement.cs
incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Scope/RequestScope.cs
Modified: incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/DomSqlMapBuilder.cs
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/DomSqlMapBuilder.cs?rev=170134&r1=170133&r2=170134&view=diff
==============================================================================
--- incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/DomSqlMapBuilder.cs (original)
+++ incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/DomSqlMapBuilder.cs Sat May 14 04:14:49 2005
@@ -448,9 +448,9 @@
}
}
}
+ _configScope.ErrorContext.Reset();
#endregion
- _configScope.ErrorContext.Reset();
#region Resolve "resultMap" attribute on Result Property + initialize Discriminator property
@@ -469,13 +469,14 @@
}
if (resultMap.Discriminator != null)
{
- resultMap.Discriminator.Initialize(_configScope.SqlMapper);
+ resultMap.Discriminator.Initialize(_configScope);
}
}
+ _configScope.ErrorContext.Reset();
+
#endregion
- _configScope.ErrorContext.Reset();
}
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=170134&r1=170133&r2=170134&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 Sat May 14 04:14:49 2005
@@ -31,6 +31,7 @@
using System.Collections.Specialized;
using System.Data;
using System.Xml.Serialization;
+using IBatisNet.DataMapper.Scope;
#endregion
@@ -92,14 +93,8 @@
[XmlIgnore]
public IDiscriminatorFormula Formula
{
- get
- {
- return _formula;
- }
- set
- {
- _formula = value;
- }
+ get { return _formula; }
+ set { _formula = value; }
}
#endregion
@@ -120,8 +115,8 @@
/// <summary>
/// Initialize the Discriminator
/// </summary>
- /// <param name="sqlMap"></param>
- public void Initialize(SqlMapper sqlMap)
+ /// <param name="configScope"></param>
+ public void Initialize(ConfigurationScope configScope)
{
// Set the formula
if (_formulaClassName.Length == 0)
@@ -130,7 +125,7 @@
}
else
{
- Type formulaType = sqlMap.GetType(_formulaClassName);
+ Type formulaType = configScope.SqlMapper.GetType(_formulaClassName);
_formula = Activator.CreateInstance(formulaType) as IDiscriminatorFormula;
}
@@ -138,7 +133,7 @@
for(int index=0; index<_subMaps.Count; index++)
{
SubMap subMap = _subMaps[index] as SubMap;
- _resultMaps.Add(subMap.DiscriminatorValue, sqlMap.GetResultMap( subMap.ResultMapName ) );
+ _resultMaps.Add(subMap.DiscriminatorValue, configScope.SqlMapper.GetResultMap( subMap.ResultMapName ) );
}
}
@@ -156,7 +151,7 @@
/// </summary>
/// <param name="dataReader">A IDataReader which contains result values</param>
/// <returns>The find ResultMap</returns>
- public ResultMap GetResultMap(IDataReader dataReader)
+ public ResultMap GetSubMap(IDataReader dataReader)
{
// Find the resultmap to use
// 1/ Find the value to test
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=170134&r1=170133&r2=170134&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 Sat May 14 04:14:49 2005
@@ -28,6 +28,7 @@
using System;
using System.Collections;
+using System.Data;
using System.Reflection;
using System.Xml;
using System.Xml.Serialization;
@@ -181,7 +182,6 @@
/// </summary>
/// <param name="configScope"></param>
public void Initialize( ConfigurationScope configScope )
- //SqlMapper sqlMap, XmlNode node)
{
try
{
@@ -216,6 +216,8 @@
{
property = (ResultProperty) serializer.Deserialize(new XmlNodeReader(resultNode));
+ configScope.ErrorContext.MoreInfo = "initialize result property :"+property.PropertyName;
+
PropertyInfo propertyInfo = null;
if ( property.PropertyName != "value" && !typeof(IDictionary).IsAssignableFrom(_class) )
@@ -234,6 +236,8 @@
XmlNode discriminatorNode = configScope.NodeContext.SelectSingleNode("discriminator");
if (discriminatorNode != null)
{
+ configScope.ErrorContext.MoreInfo = "initialize discriminator";
+
this.Discriminator = (Discriminator) serializer.Deserialize(new XmlNodeReader(discriminatorNode));
}
#endregion
@@ -241,8 +245,13 @@
#region Load the SubMap Properties
serializer = new XmlSerializer(typeof(SubMap));
+ if (configScope.NodeContext.SelectNodes("subMap").Count>0 && this.Discriminator==null)
+ {
+ throw new ConfigurationException("The discriminator is null, but somehow a subMap was reached. This is a bug.");
+ }
foreach ( XmlNode resultNode in configScope.NodeContext.SelectNodes("subMap") )
{
+ configScope.ErrorContext.MoreInfo = "initialize subMap";
subMap = (SubMap) serializer.Deserialize(new XmlNodeReader(resultNode));
subMap.ResultMapName = this.SqlMapNameSpace + DomSqlMapBuilder.DOT + subMap.ResultMapName;
this.Discriminator.Add( subMap );
@@ -307,6 +316,29 @@
target = dataBaseValue;
}
}
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="dataReader"></param>
+ /// <returns></returns>
+ public ResultMap ResolveSubMap(IDataReader dataReader)
+ {
+ ResultMap subMap = this;
+ if (this.Discriminator != null)
+ {
+ subMap = this.Discriminator.GetSubMap(dataReader);
+ if (subMap == null)
+ {
+ subMap = this;
+ }
+ else if (subMap != this)
+ {
+ subMap = subMap.ResolveSubMap(dataReader);
+ }
+ }
+ return subMap;
}
#endregion
}
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=170134&r1=170133&r2=170134&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 Sat May 14 04:14:49 2005
@@ -43,10 +43,14 @@
[XmlRoot("result")]
public class ResultProperty
{
+ #region Const
+
/// <summary>
///
- /// </summary>
+ /// </summary>
public const int UNKNOWN_COLUMN_INDEX = -999999;
+
+ #endregion
#region Fields
[NonSerialized]
Modified: incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/MappedStatements/MappedStatement.cs
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/MappedStatements/MappedStatement.cs?rev=170134&r1=170133&r2=170134&view=diff
==============================================================================
--- incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/MappedStatements/MappedStatement.cs (original)
+++ incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/MappedStatements/MappedStatement.cs Sat May 14 04:14:49 2005
@@ -378,21 +378,19 @@
// If there's an ResultMap, use it
if (request.ResultMap != null)
{
- request.SetResultMap(reader);
- //ResultMap resultMap = request.ResultMap;
+ ResultMap resultMap = request.GetResultMap(reader);
if (outObject == null)
{
- outObject = request.ResultMap.CreateInstanceOfResult();
+ outObject = resultMap.CreateInstanceOfResult();
}
// For each Property in the ResultMap, set the property in the object
- foreach(DictionaryEntry entry in request.ResultMap.ColumnsToPropertiesMap)
+ foreach(DictionaryEntry entry in resultMap.ColumnsToPropertiesMap)
{
ResultProperty property = (ResultProperty)entry.Value;
- SetObjectProperty(request, request.ResultMap, property, ref outObject, reader);
+ SetObjectProperty(request, resultMap, property, ref outObject, reader);
}
- request.ResetResultmap();
}
else // else try to use a ResultClass
{
Modified: incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Scope/RequestScope.cs
URL: http://svn.apache.org/viewcvs/incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Scope/RequestScope.cs?rev=170134&r1=170133&r2=170134&view=diff
==============================================================================
--- incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Scope/RequestScope.cs (original)
+++ incubator/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Scope/RequestScope.cs Sat May 14 04:14:49 2005
@@ -25,13 +25,13 @@
#endregion
#region Using
-using System;
-using System.Data;
-using System.Collections;
+using System.Collections;
+using System.Data;
using IBatisNet.DataMapper.Configuration.ParameterMapping;
using IBatisNet.DataMapper.Configuration.ResultMapping;
using IBatisNet.DataMapper.Configuration.Statements;
+
#endregion
namespace IBatisNet.DataMapper.Scope
@@ -46,7 +46,6 @@
private ErrorContext _errorContext = null;
private ParameterMap _parameterMap = null;
private ResultMap _resultMap = null;
- private ResultMap _initialResultMap = null;
private PreparedStatement _preparedStatement = null;
private Queue _properties = new Queue();
@@ -114,30 +113,18 @@
#endregion
#region Method
+
+
/// <summary>
/// Check if the ResultMap is well set, process case of subMap resultMap.
/// </summary>
/// <param name="dataReader">The current IDataReader</param>
- public void SetResultMap(IDataReader dataReader)
+ /// <returns>the resultMap to use</returns>
+ public ResultMap GetResultMap(IDataReader dataReader)
{
- _initialResultMap = _resultMap;
- if (_resultMap.Discriminator != null)
- {
- _resultMap = _resultMap.Discriminator.GetResultMap(dataReader);
- if (_resultMap==null)
- {
- _resultMap = _initialResultMap;
- }
- }
+ return _resultMap.ResolveSubMap(dataReader);
}
- /// <summary>
- /// Reset the resultMap to his intila value
- /// </summary>
- public void ResetResultmap()
- {
- _resultMap = _initialResultMap;
- }
#endregion
}
}