From: <fab...@us...> - 2009-12-01 16:32:18
|
Revision: 4883 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4883&view=rev Author: fabiomaulo Date: 2009-12-01 16:31:59 +0000 (Tue, 01 Dec 2009) Log Message: ----------- binders refactoring -removed duplicated code Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Cfg/MappingSchema/HbmDiscriminator.cs trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/ClassDiscriminatorBinder.cs trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/RootClassBinder.cs Modified: trunk/nhibernate/src/NHibernate/Cfg/MappingSchema/HbmDiscriminator.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cfg/MappingSchema/HbmDiscriminator.cs 2009-12-01 15:44:13 UTC (rev 4882) +++ trunk/nhibernate/src/NHibernate/Cfg/MappingSchema/HbmDiscriminator.cs 2009-12-01 16:31:59 UTC (rev 4883) @@ -1,4 +1,3 @@ -using System; using System.Collections.Generic; namespace NHibernate.Cfg.MappingSchema @@ -25,6 +24,8 @@ { name = column, length = length, + notnull = notnull, + notnullSpecified = true }; } } Modified: trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/ClassDiscriminatorBinder.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/ClassDiscriminatorBinder.cs 2009-12-01 15:44:13 UTC (rev 4882) +++ trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/ClassDiscriminatorBinder.cs 2009-12-01 16:31:59 UTC (rev 4883) @@ -3,21 +3,22 @@ namespace NHibernate.Cfg.XmlHbmBinding { - public class ClassDiscriminatorBinder : ClassBinder + public class ClassDiscriminatorBinder: Binder { - public ClassDiscriminatorBinder(ClassBinder parent) - : base(parent) + private readonly PersistentClass rootClass; + + public ClassDiscriminatorBinder(PersistentClass rootClass, Mappings mappings) : base(mappings) { + this.rootClass = rootClass; } - public void BindDiscriminator(HbmDiscriminator discriminatorSchema, PersistentClass rootClass, - Table table) + public void BindDiscriminator(HbmDiscriminator discriminatorSchema, Table table) { if (discriminatorSchema == null) return; //DISCRIMINATOR - SimpleValue discriminator = new SimpleValue(table); + var discriminator = new SimpleValue(table); rootClass.Discriminator = discriminator; BindSimpleValue(discriminatorSchema, discriminator); @@ -38,73 +39,23 @@ if (discriminatorSchema.formula != null) { - Formula f = new Formula(); - f.FormulaString = discriminatorSchema.formula; + var f = new Formula {FormulaString = discriminatorSchema.formula}; discriminator.AddFormula(f); } else - BindColumns(discriminatorSchema, discriminator); - } - - private void BindColumns(HbmDiscriminator discriminatorSchema, SimpleValue discriminator) - { - Table table = discriminator.Table; - - //COLUMN(S) - if (discriminatorSchema.column != null) { - Column col = new Column(); - col.Value = discriminator; - BindColumn(discriminatorSchema, col); - col.Name = mappings.NamingStrategy.ColumnName(discriminatorSchema.column); - - if (table != null) - table.AddColumn(col); - - discriminator.AddColumn(col); + new ColumnsBinder(discriminator, Mappings).Bind(discriminatorSchema.Columns, false, + () => + new HbmColumn + { + name = + mappings.NamingStrategy.PropertyToColumnName( + RootClass.DefaultDiscriminatorColumnName), + length = discriminatorSchema.length, + notnull = discriminatorSchema.notnull, + notnullSpecified = true + }); } - else if (discriminatorSchema.Item != null && discriminatorSchema.Item is HbmColumn) - { - HbmColumn theCol = (HbmColumn)discriminatorSchema.Item; - Column col = new Column(); - col.Value = discriminator; - BindColumn(theCol, col, false); - - col.Name = mappings.NamingStrategy.ColumnName(theCol.name); - - if (table != null) - table.AddColumn(col); - //table=null -> an association, fill it in later - - discriminator.AddColumn(col); - - BindIndex(theCol.index, table, col); - BindUniqueKey(theCol.uniquekey, table, col); - } - - if (discriminator.ColumnSpan == 0) - { - Column col = new Column(); - col.Value = discriminator; - BindColumn(discriminatorSchema, col); - - col.Name = mappings.NamingStrategy.PropertyToColumnName( - RootClass.DefaultDiscriminatorColumnName); - - discriminator.Table.AddColumn(col); - discriminator.AddColumn(col); - } } - - private static void BindColumn(HbmDiscriminator discriminatorSchema, Column column) - { - if (discriminatorSchema.length != null) - column.Length = int.Parse(discriminatorSchema.length); - - column.IsNullable = !discriminatorSchema.notnull; - column.IsUnique = false; - column.CheckConstraint = string.Empty; - column.SqlType = null; - } } } \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/RootClassBinder.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/RootClassBinder.cs 2009-12-01 15:44:13 UTC (rev 4882) +++ trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/RootClassBinder.cs 2009-12-01 16:31:59 UTC (rev 4883) @@ -51,7 +51,7 @@ BindCache(classSchema.cache, rootClass); new ClassIdBinder(this).BindId(classSchema.Id, rootClass, table); new ClassCompositeIdBinder(this).BindCompositeId(classSchema.CompositeId, rootClass); - new ClassDiscriminatorBinder(this).BindDiscriminator(classSchema.discriminator, rootClass, table); + new ClassDiscriminatorBinder(rootClass, Mappings).BindDiscriminator(classSchema.discriminator, table); BindTimestamp(classSchema.Timestamp, rootClass, table, inheritedMetas); BindVersion(classSchema.Version, rootClass, table, inheritedMetas); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |