From: <fab...@us...> - 2011-04-04 15:23:03
|
Revision: 5600 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5600&view=rev Author: fabiomaulo Date: 2011-04-04 15:22:56 +0000 (Mon, 04 Apr 2011) Log Message: ----------- Starting properties split management (<join>) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Mapping/ByCode/ExplicitlyDeclaredModel.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/IClassMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/IModelInspector.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/IPropertyContainerMapper.cs trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/ClassCustomizer.cs trunk/nhibernate/src/NHibernate/NHibernate.csproj trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate/Mapping/ByCode/IJoinMapper.cs trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExpliticMappingTests/RootClassPropertiesSplitsTests.cs Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/ExplicitlyDeclaredModel.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/ExplicitlyDeclaredModel.cs 2011-04-03 19:15:17 UTC (rev 5599) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/ExplicitlyDeclaredModel.cs 2011-04-04 15:22:56 UTC (rev 5600) @@ -368,6 +368,11 @@ return IsMappedFor(tablePerClassEntities, type); } + public bool IsTablePerClassSplit(System.Type type, object splitGroupId, MemberInfo member) + { + return false; + } + public bool IsTablePerClassHierarchy(System.Type type) { ExecuteDelayedTypeRegistration(type); Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/IClassMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/IClassMapper.cs 2011-04-03 19:15:17 UTC (rev 5599) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/IClassMapper.cs 2011-04-04 15:22:56 UTC (rev 5600) @@ -44,5 +44,8 @@ void SchemaAction(SchemaAction action); } - public interface IClassMapper<TEntity> : IClassAttributesMapper<TEntity>, IPropertyContainerMapper<TEntity> where TEntity : class {} + public interface IClassMapper<TEntity> : IClassAttributesMapper<TEntity>, IPropertyContainerMapper<TEntity> where TEntity : class + { + void Join(Action<IJoinMapper<TEntity>> splittedMapping); + } } \ No newline at end of file Added: trunk/nhibernate/src/NHibernate/Mapping/ByCode/IJoinMapper.cs =================================================================== (Binary files differ) Property changes on: trunk/nhibernate/src/NHibernate/Mapping/ByCode/IJoinMapper.cs ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/IModelInspector.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/IModelInspector.cs 2011-04-03 19:15:17 UTC (rev 5599) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/IModelInspector.cs 2011-04-04 15:22:56 UTC (rev 5600) @@ -9,6 +9,7 @@ bool IsEntity(System.Type type); bool IsTablePerClass(System.Type type); + bool IsTablePerClassSplit(System.Type type, object splitGroupId, MemberInfo member); bool IsTablePerClassHierarchy(System.Type type); bool IsTablePerConcreteClass(System.Type type); Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/IPropertyContainerMapper.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/IPropertyContainerMapper.cs 2011-04-03 19:15:17 UTC (rev 5599) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/IPropertyContainerMapper.cs 2011-04-04 15:22:56 UTC (rev 5600) @@ -5,7 +5,7 @@ namespace NHibernate.Mapping.ByCode { - public interface IPropertyContainerMapper : IPlainPropertyContainerMapper + public interface ICollectionPropertiesContainerMapper { void Set(MemberInfo property, Action<ISetPropertiesMapper> collectionMapping, Action<ICollectionElementRelation> mapping); @@ -21,7 +21,9 @@ Action<ICollectionElementRelation> mapping); } - public interface IPropertyContainerMapper<TEntity> : IPlainPropertyContainerMapper<TEntity> where TEntity : class + public interface IPropertyContainerMapper : ICollectionPropertiesContainerMapper, IPlainPropertyContainerMapper {} + + public interface ICollectionPropertiesContainerMapper<TEntity> where TEntity : class { void Set<TElement>(Expression<Func<TEntity, IEnumerable<TElement>>> property, Action<ISetPropertiesMapper<TEntity, TElement>> collectionMapping, @@ -39,8 +41,11 @@ Action<IMapPropertiesMapper<TEntity, TKey, TElement>> collectionMapping, Action<IMapKeyRelation<TKey>> keyMapping, Action<ICollectionElementRelation<TElement>> mapping); + void Map<TKey, TElement>(Expression<Func<TEntity, IDictionary<TKey, TElement>>> property, - Action<IMapPropertiesMapper<TEntity, TKey, TElement>> collectionMapping, - Action<ICollectionElementRelation<TElement>> mapping); + Action<IMapPropertiesMapper<TEntity, TKey, TElement>> collectionMapping, + Action<ICollectionElementRelation<TElement>> mapping); } + + public interface IPropertyContainerMapper<TEntity> : ICollectionPropertiesContainerMapper<TEntity>, IPlainPropertyContainerMapper<TEntity> where TEntity : class {} } \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/ClassCustomizer.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/ClassCustomizer.cs 2011-04-03 19:15:17 UTC (rev 5599) +++ trunk/nhibernate/src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/ClassCustomizer.cs 2011-04-04 15:22:56 UTC (rev 5600) @@ -109,6 +109,11 @@ CustomizersHolder.AddCustomizer(typeof (TEntity), (IClassAttributesMapper m) => m.SchemaAction(action)); } + public void Join(Action<IJoinMapper<TEntity>> splittedMapping) + { + throw new NotImplementedException(); + } + public void EntityName(string value) { CustomizersHolder.AddCustomizer(typeof (TEntity), (IClassAttributesMapper m) => m.EntityName(value)); Modified: trunk/nhibernate/src/NHibernate/NHibernate.csproj =================================================================== --- trunk/nhibernate/src/NHibernate/NHibernate.csproj 2011-04-03 19:15:17 UTC (rev 5599) +++ trunk/nhibernate/src/NHibernate/NHibernate.csproj 2011-04-04 15:22:56 UTC (rev 5600) @@ -309,6 +309,7 @@ <Compile Include="Mapping\ByCode\IGeneratorMapper.cs" /> <Compile Include="Mapping\ByCode\IIdMapper.cs" /> <Compile Include="Mapping\ByCode\IJoinedSubclassMapper.cs" /> + <Compile Include="Mapping\ByCode\IJoinMapper.cs" /> <Compile Include="Mapping\ByCode\IKeyMapper.cs" /> <Compile Include="Mapping\ByCode\IListIndexMapper.cs" /> <Compile Include="Mapping\ByCode\IListPropertiesMapper.cs" /> Added: trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExpliticMappingTests/RootClassPropertiesSplitsTests.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExpliticMappingTests/RootClassPropertiesSplitsTests.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/ExpliticMappingTests/RootClassPropertiesSplitsTests.cs 2011-04-04 15:22:56 UTC (rev 5600) @@ -0,0 +1,51 @@ +using NHibernate.Mapping.ByCode; +using NUnit.Framework; +using SharpTestsEx; + +namespace NHibernate.Test.MappingByCode.ExpliticMappingTests +{ + public class RootClassPropertiesSplitsTests + { + private class MyClass + { + public int Id { get; set; } + public string Something0 { get; set; } + public string SomethingA1 { get; set; } + public string SomethingA2 { get; set; } + public string SomethingB1 { get; set; } + public string SomethingB2 { get; set; } + } + + [Test, Ignore("Not implemented yet")] + public void WhenSplittedPropertiesThenRegister() + { + var inspector = new ExplicitlyDeclaredModel(); + var mapper = new ModelMapper(inspector); + mapper.Class<MyClass>(map => + { + map.Id(x => x.Id, idmap => { }); + map.Join(mj=> + { + mj.Table("MyClassSplit1"); + mj.Property(x => x.SomethingA1); + mj.Property(x => x.SomethingA2); + }); + map.Join(mj => + { + mj.Table("MyClassSplit2"); + mj.Property(x => x.SomethingB1); + mj.Property(x => x.SomethingB2); + }); + map.Property(x => x.Something0); + }); + + inspector.IsTablePerClassSplit(typeof(MyClass), "MyClassSplit1", For<MyClass>.Property(x => x.Something0)).Should().Be.False(); + inspector.IsTablePerClassSplit(typeof(MyClass), "MyClassSplit2", For<MyClass>.Property(x => x.Something0)).Should().Be.False(); + + inspector.IsTablePerClassSplit(typeof(MyClass), "MyClassSplit1", For<MyClass>.Property(x => x.SomethingA1)).Should().Be.True(); + inspector.IsTablePerClassSplit(typeof(MyClass), "MyClassSplit1", For<MyClass>.Property(x => x.SomethingA2)).Should().Be.True(); + inspector.IsTablePerClassSplit(typeof(MyClass), "MyClassSplit2", For<MyClass>.Property(x => x.SomethingB1)).Should().Be.True(); + inspector.IsTablePerClassSplit(typeof(MyClass), "MyClassSplit2", For<MyClass>.Property(x => x.SomethingB2)).Should().Be.True(); + } + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-04-03 19:15:17 UTC (rev 5599) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-04-04 15:22:56 UTC (rev 5600) @@ -519,6 +519,7 @@ <Compile Include="MappingByCode\ExpliticMappingTests\MappingOfPrivateMembersOnRootEntity.cs" /> <Compile Include="MappingByCode\ExpliticMappingTests\NaturalIdTests.cs" /> <Compile Include="MappingByCode\ExpliticMappingTests\PoidTests.cs" /> + <Compile Include="MappingByCode\ExpliticMappingTests\RootClassPropertiesSplitsTests.cs" /> <Compile Include="MappingByCode\ExpliticMappingTests\VersionTests.cs" /> <Compile Include="MappingByCode\For.cs" /> <Compile Include="MappingByCode\NatureDemo\Naturalness\Address.cs" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |