|
From: <fab...@us...> - 2009-12-02 04:15:52
|
Revision: 4888
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4888&view=rev
Author: fabiomaulo
Date: 2009-12-02 04:15:42 +0000 (Wed, 02 Dec 2009)
Log Message:
-----------
binders refactoring
- ValuePropertyBinder on the road
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/PropertiesBinder.cs
trunk/nhibernate/src/NHibernate/NHibernate.csproj
Added Paths:
-----------
trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/ValuePropertyBinder.cs
Modified: trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/PropertiesBinder.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/PropertiesBinder.cs 2009-12-01 22:52:47 UTC (rev 4887)
+++ trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/PropertiesBinder.cs 2009-12-02 04:15:42 UTC (rev 4888)
@@ -61,7 +61,7 @@
if ((propertyMapping = entityPropertyMapping as HbmProperty) != null)
{
var value = new SimpleValue(table);
- BindSimpleValue(Serialize(propertyMapping), value, true, propertyName);
+ new ValuePropertyBinder(value, Mappings).BindSimpleValue(propertyMapping, propertyName, true);
property = CreateProperty(entityPropertyMapping, model.ClassName, value, inheritedMetas);
BindValueProperty(propertyMapping, property);
}
Added: trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/ValuePropertyBinder.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/ValuePropertyBinder.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/ValuePropertyBinder.cs 2009-12-02 04:15:42 UTC (rev 4888)
@@ -0,0 +1,55 @@
+using System;
+using System.Linq;
+using NHibernate.Cfg.MappingSchema;
+using NHibernate.Mapping;
+using NHibernate.Util;
+
+namespace NHibernate.Cfg.XmlHbmBinding
+{
+ public class ValuePropertyBinder : Binder
+ {
+ private readonly SimpleValue value;
+
+ public ValuePropertyBinder(SimpleValue value, Mappings mappings)
+ : base(mappings)
+ {
+ if (value == null)
+ {
+ throw new ArgumentNullException("value");
+ }
+ this.value = value;
+ }
+
+ //automatically makes a column with the default name if none is specified by XML
+ public void BindSimpleValue(HbmProperty propertyMapping, string propertyPath, bool isNullable)
+ {
+ new TypeBinder(value, Mappings).Bind(propertyMapping.Type);
+ var formulas = propertyMapping.Formulas.ToArray();
+ if (formulas.Length > 0)
+ {
+ foreach (var hbmFormula in formulas)
+ {
+ value.AddFormula(new Formula {FormulaString = hbmFormula.Text.LinesToString()});
+ }
+ }
+ else
+ {
+ new ColumnsBinder(value, Mappings).Bind(propertyMapping.Columns, isNullable,
+ () =>
+ new HbmColumn
+ {
+ name = mappings.NamingStrategy.PropertyToColumnName(propertyPath),
+ length = propertyMapping.length,
+ scale = propertyMapping.scale,
+ precision = propertyMapping.precision,
+ notnull = propertyMapping.notnull,
+ notnullSpecified = propertyMapping.notnullSpecified,
+ unique = propertyMapping.unique,
+ uniqueSpecified = true,
+ uniquekey = propertyMapping.uniquekey,
+ index = propertyMapping.index
+ });
+ }
+ }
+ }
+}
\ No newline at end of file
Modified: trunk/nhibernate/src/NHibernate/NHibernate.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate/NHibernate.csproj 2009-12-01 22:52:47 UTC (rev 4887)
+++ trunk/nhibernate/src/NHibernate/NHibernate.csproj 2009-12-02 04:15:42 UTC (rev 4888)
@@ -552,6 +552,9 @@
<SubType>Code</SubType>
</Compile>
<Compile Include="Cfg\XmlHbmBinding\TypeBinder.cs" />
+ <Compile Include="Cfg\XmlHbmBinding\ValuePropertyBinder.cs">
+ <SubType>Code</SubType>
+ </Compile>
<Compile Include="Context\WcfOperationSessionContext.cs" />
<Compile Include="Criterion\GroupedProjection.cs" />
<Compile Include="Criterion\IPropertyProjection.cs" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|