From: Michael D. <mik...@us...> - 2004-08-23 02:10:18
|
Update of /cvsroot/nhibernate/nhibernate/src/NHibernate/Property In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24251/Property Modified Files: FieldAccessor.cs PropertyAccessorFactory.cs Added Files: CamelCaseStrategy.cs CamelCaseUnderscoreStrategy.cs IFieldNamingStrategy.cs PascalCaseMUnderscoreStrategy.cs Removed Files: FieldMUnderscorePrefixAccessor.cs FieldUnderscorePrefixAccessor.cs Log Message: Refactored how naming strategies for fields are implemented. Index: PropertyAccessorFactory.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Property/PropertyAccessorFactory.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** PropertyAccessorFactory.cs 22 Aug 2004 06:18:54 -0000 1.1 --- PropertyAccessorFactory.cs 23 Aug 2004 02:10:06 -0000 1.2 *************** *** 13,18 **** private static readonly IPropertyAccessor basicPropertyAccessor = new BasicPropertyAccessor(); private static readonly IPropertyAccessor fieldAccessor = new FieldAccessor(); ! private static readonly IPropertyAccessor fieldUnderscoreAccessor = new FieldUnderscorePrefixAccessor(); ! private static readonly IPropertyAccessor fieldMUnderscoreAccessor = new FieldMUnderscorePrefixAccessor(); --- 13,19 ---- private static readonly IPropertyAccessor basicPropertyAccessor = new BasicPropertyAccessor(); private static readonly IPropertyAccessor fieldAccessor = new FieldAccessor(); ! private static readonly IPropertyAccessor fieldCamelCaseAccessor = new FieldAccessor( new CamelCaseStrategy() ); ! private static readonly IPropertyAccessor fieldCamelCaseUnderscoreAccessor = new FieldAccessor( new CamelCaseUnderscoreStrategy() ); ! private static readonly IPropertyAccessor fieldPascalCaseMUnderscoreAccessor = new FieldAccessor( new PascalCaseMUnderscoreStrategy() ); *************** *** 30,37 **** case "field" : return fieldAccessor; ! case "field.underscore" : ! return fieldUnderscoreAccessor; ! case "field.munderscore" : ! return fieldMUnderscoreAccessor; } --- 31,40 ---- case "field" : return fieldAccessor; ! case "field.camelcase" : ! return fieldCamelCaseAccessor; ! case "field.camelcase-underscore" : ! return fieldCamelCaseUnderscoreAccessor; ! case "field.pascalcase-m-underscore" : ! return fieldPascalCaseMUnderscoreAccessor; } --- NEW FILE: CamelCaseStrategy.cs --- using System; namespace NHibernate.Property { /// <summary> /// Implementation of FieldNamingStrategy for fields that are the /// Camel Case version of the PropertyName /// </summary> public class CamelCaseStrategy : IFieldNamingStrategy { #region IFieldNamingStrategy Members public string GetFieldName(string propertyName) { return propertyName.Substring(0, 1).ToLower() + propertyName.Substring(1); } #endregion } } --- NEW FILE: PascalCaseMUnderscoreStrategy.cs --- using System; namespace NHibernate.Property { /// <summary> /// Implementation of FieldNamingStrategy for fields that are prefixed with /// an "m_" and the PropertyName. /// </summary> public class PascalCaseMUnderscoreStrategy : IFieldNamingStrategy { #region IFieldNamingStrategy Members public string GetFieldName(string propertyName) { return "m_" + propertyName; } #endregion } } Index: FieldAccessor.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Property/FieldAccessor.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** FieldAccessor.cs 22 Aug 2004 06:18:54 -0000 1.1 --- FieldAccessor.cs 23 Aug 2004 02:10:06 -0000 1.2 *************** *** 14,18 **** public class FieldAccessor : IPropertyAccessor { ! #region IPropertyAccessor Members --- 14,28 ---- public class FieldAccessor : IPropertyAccessor { ! protected IFieldNamingStrategy namingStragety; ! ! public FieldAccessor() ! { ! } ! ! public FieldAccessor(IFieldNamingStrategy namingStragety) ! { ! this.namingStragety = namingStragety; ! } ! #region IPropertyAccessor Members *************** *** 58,64 **** /// This uses the convention that a Property named <c>Id</c> will have a field </c>id</c> /// </remarks> ! protected virtual string GetFieldName(string propertyName) { ! return propertyName.Substring(0, 1).ToLower() + propertyName.Substring(1); } } --- 68,81 ---- /// This uses the convention that a Property named <c>Id</c> will have a field </c>id</c> /// </remarks> ! private string GetFieldName(string propertyName) { ! if(namingStragety==null) ! { ! return propertyName; ! } ! else ! { ! return namingStragety.GetFieldName(propertyName); ! } } } --- NEW FILE: CamelCaseUnderscoreStrategy.cs --- using System; namespace NHibernate.Property { /// <summary> /// Implementation of FieldNamingStrategy for fields that are prefixed with /// an underscore and the PropertyName is changed to camelCase. /// </summary> public class CamelCaseUnderscoreStrategy : IFieldNamingStrategy { #region IFieldNamingStrategy Members public string GetFieldName(string propertyName) { return "_" + propertyName.Substring(0, 1).ToLower() + propertyName.Substring(1); } #endregion } } --- FieldUnderscorePrefixAccessor.cs DELETED --- --- FieldMUnderscorePrefixAccessor.cs DELETED --- --- NEW FILE: IFieldNamingStrategy.cs --- using System; namespace NHibernate.Property { /// <summary> /// Summary description for IFieldNamingStrategy. /// </summary> public interface IFieldNamingStrategy { /// <summary> /// Converts the Property's name into a Field name /// </summary> /// <param name="propertyName">The name of the Property.</param> /// <returns>The name of the Field.</returns> string GetFieldName(string propertyName); } } |