Skip to content

Commit 0037e01

Browse files
committed
Implement support of SqlCheck in mapping by code
1 parent d2599c6 commit 0037e01

15 files changed

+339
-12
lines changed

src/NHibernate.Test/MappingByCode/MappersTests/JoinMapperTests.cs

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,20 @@ public void CanSetSqlInsert()
112112
Assert.That(hbmJoin.SqlInsert.Text[0], Is.EqualTo("blah"));
113113
}
114114

115+
[Test]
116+
public void CanSetSqlInsertWithCheck()
117+
{
118+
var mapdoc = new HbmMapping();
119+
var hbmJoin = new HbmJoin();
120+
var mapper = new JoinMapper(typeof(MyClass), "AA", hbmJoin, mapdoc);
121+
mapper.SqlInsert("blah", SqlCheck.RowCount);
122+
123+
Assert.That(hbmJoin.SqlInsert, Is.Not.Null);
124+
Assert.That(hbmJoin.SqlInsert.Text[0], Is.EqualTo("blah"));
125+
Assert.That(hbmJoin.SqlInsert.checkSpecified, Is.True);
126+
Assert.That(hbmJoin.SqlInsert.check, Is.EqualTo(HbmCustomSQLCheck.Rowcount));
127+
}
128+
115129
[Test]
116130
public void SetSqlUpdate()
117131
{
@@ -124,6 +138,20 @@ public void SetSqlUpdate()
124138
Assert.That(hbmJoin.SqlUpdate.Text[0], Is.EqualTo("blah"));
125139
}
126140

141+
[Test]
142+
public void SetSqlUpdateWithCheck()
143+
{
144+
var mapdoc = new HbmMapping();
145+
var hbmJoin = new HbmJoin();
146+
var mapper = new JoinMapper(typeof(MyClass), "AA", hbmJoin, mapdoc);
147+
mapper.SqlUpdate("blah", SqlCheck.RowCount);
148+
149+
Assert.That(hbmJoin.SqlUpdate, Is.Not.Null);
150+
Assert.That(hbmJoin.SqlUpdate.Text[0], Is.EqualTo("blah"));
151+
Assert.That(hbmJoin.SqlUpdate.checkSpecified, Is.True);
152+
Assert.That(hbmJoin.SqlUpdate.check, Is.EqualTo(HbmCustomSQLCheck.Rowcount));
153+
}
154+
127155
[Test]
128156
public void SetSqlDelete()
129157
{
@@ -136,6 +164,20 @@ public void SetSqlDelete()
136164
Assert.That(hbmJoin.SqlDelete.Text[0], Is.EqualTo("blah"));
137165
}
138166

167+
[Test]
168+
public void SetSqlDeleteWithCheck()
169+
{
170+
var mapdoc = new HbmMapping();
171+
var hbmJoin = new HbmJoin();
172+
var mapper = new JoinMapper(typeof(MyClass), "AA", hbmJoin, mapdoc);
173+
mapper.SqlDelete("blah", SqlCheck.RowCount);
174+
175+
Assert.That(hbmJoin.SqlDelete, Is.Not.Null);
176+
Assert.That(hbmJoin.SqlDelete.Text[0], Is.EqualTo("blah"));
177+
Assert.That(hbmJoin.SqlDelete.checkSpecified, Is.True);
178+
Assert.That(hbmJoin.SqlDelete.check, Is.EqualTo(HbmCustomSQLCheck.Rowcount));
179+
}
180+
139181
[Test]
140182
public void CanSetSqlSubselect()
141183
{

src/NHibernate/Mapping/ByCode/IClassMapper.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,4 +77,4 @@ public interface IClassMapper<TEntity> : IClassAttributesMapper<TEntity>, IPrope
7777
{
7878
void Join(string splitGroupId, Action<IJoinMapper<TEntity>> splitMapping);
7979
}
80-
}
80+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
using NHibernate.Util;
2+
3+
namespace NHibernate.Mapping.ByCode
4+
{
5+
//6.0 TODO: merge into IEntitySqlsMapper
6+
public interface IEntitySqlsWithCheckMapper
7+
{
8+
void SqlInsert(string sql, SqlCheck sqlCheck);
9+
void SqlUpdate(string sql, SqlCheck sqlCheck);
10+
void SqlDelete(string sql, SqlCheck sqlCheck);
11+
}
12+
13+
public static class EntitySqlsWithCheckMapperExtensions
14+
{
15+
public static void SqlInsert(this IEntitySqlsMapper mapper, string sql, SqlCheck sqlCheck)
16+
{
17+
ReflectHelper
18+
.CastOrThrow<IEntitySqlsWithCheckMapper>(mapper, "SqlInsert with sqlCheck")
19+
.SqlInsert(sql, sqlCheck);
20+
}
21+
22+
public static void SqlUpdate(this IEntitySqlsMapper mapper, string sql, SqlCheck sqlCheck)
23+
{
24+
ReflectHelper
25+
.CastOrThrow<IEntitySqlsWithCheckMapper>(mapper, "SqlUpdate with sqlCheck")
26+
.SqlUpdate(sql, sqlCheck);
27+
}
28+
29+
public static void SqlDelete(this IEntitySqlsMapper mapper, string sql, SqlCheck sqlCheck)
30+
{
31+
ReflectHelper
32+
.CastOrThrow<IEntitySqlsWithCheckMapper>(mapper, "SqlDelete with sqlCheck")
33+
.SqlDelete(sql, sqlCheck);
34+
}
35+
}
36+
}

src/NHibernate/Mapping/ByCode/IJoinMapper.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,4 @@ public interface IJoinAttributesMapper<TEntity> : IEntitySqlsMapper where TEntit
2828

2929
public interface IJoinMapper<TEntity> : IJoinAttributesMapper<TEntity>, ICollectionPropertiesContainerMapper<TEntity>, IBasePlainPropertyContainerMapper<TEntity>
3030
where TEntity : class {}
31-
}
31+
}

src/NHibernate/Mapping/ByCode/Impl/ClassMapper.cs

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
namespace NHibernate.Mapping.ByCode.Impl
1010
{
11-
public class ClassMapper : AbstractPropertyContainerMapper, IClassMapper
11+
public class ClassMapper : AbstractPropertyContainerMapper, IClassMapper, IEntitySqlsWithCheckMapper
1212
{
1313
private readonly HbmClass classMapping;
1414
private readonly IIdMapper idMapper;
@@ -369,6 +369,17 @@ public void SqlInsert(string sql)
369369
classMapping.sqlinsert.Text = new[] {sql};
370370
}
371371

372+
public void SqlInsert(string sql, SqlCheck sqlCheck)
373+
{
374+
if (classMapping.SqlInsert == null)
375+
{
376+
classMapping.sqlinsert = new HbmCustomSQL();
377+
}
378+
classMapping.sqlinsert.checkSpecified = true;
379+
classMapping.sqlinsert.check = (HbmCustomSQLCheck)Enum.Parse(typeof(HbmCustomSQLCheck), sqlCheck.ToString(), true);
380+
classMapping.sqlinsert.Text = new[] { sql };
381+
}
382+
372383
public void SqlUpdate(string sql)
373384
{
374385
if (classMapping.SqlUpdate == null)
@@ -378,6 +389,17 @@ public void SqlUpdate(string sql)
378389
classMapping.sqlupdate.Text = new[] {sql};
379390
}
380391

392+
public void SqlUpdate(string sql, SqlCheck sqlCheck)
393+
{
394+
if (classMapping.SqlUpdate == null)
395+
{
396+
classMapping.sqlupdate = new HbmCustomSQL();
397+
}
398+
classMapping.sqlupdate.checkSpecified = true;
399+
classMapping.sqlupdate.check = (HbmCustomSQLCheck)Enum.Parse(typeof(HbmCustomSQLCheck), sqlCheck.ToString(), true);
400+
classMapping.sqlupdate.Text = new[] { sql };
401+
}
402+
381403
public void SqlDelete(string sql)
382404
{
383405
if (classMapping.SqlDelete == null)
@@ -387,6 +409,17 @@ public void SqlDelete(string sql)
387409
classMapping.sqldelete.Text = new[] {sql};
388410
}
389411

412+
public void SqlDelete(string sql, SqlCheck sqlCheck)
413+
{
414+
if (classMapping.SqlDelete == null)
415+
{
416+
classMapping.sqldelete = new HbmCustomSQL();
417+
}
418+
classMapping.sqldelete.checkSpecified = true;
419+
classMapping.sqldelete.check = (HbmCustomSQLCheck)Enum.Parse(typeof(HbmCustomSQLCheck), sqlCheck.ToString(), true);
420+
classMapping.sqldelete.Text = new[] { sql };
421+
}
422+
390423
public void Subselect(string sql)
391424
{
392425
if (classMapping.Subselect == null)

src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/ClassCustomizer.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,16 +264,31 @@ public void SqlInsert(string sql)
264264
CustomizersHolder.AddCustomizer(typeof(TEntity), (IClassMapper m) => m.SqlInsert(sql));
265265
}
266266

267+
public void SqlInsert(string sql, SqlCheck sqlCheck)
268+
{
269+
CustomizersHolder.AddCustomizer(typeof(TEntity), (IClassMapper m) => m.SqlInsert(sql, sqlCheck));
270+
}
271+
267272
public void SqlUpdate(string sql)
268273
{
269274
CustomizersHolder.AddCustomizer(typeof(TEntity), (IClassMapper m) => m.SqlUpdate(sql));
270275
}
271276

277+
public void SqlUpdate(string sql, SqlCheck sqlCheck)
278+
{
279+
CustomizersHolder.AddCustomizer(typeof(TEntity), (IClassMapper m) => m.SqlUpdate(sql, sqlCheck));
280+
}
281+
272282
public void SqlDelete(string sql)
273283
{
274284
CustomizersHolder.AddCustomizer(typeof(TEntity), (IClassMapper m) => m.SqlDelete(sql));
275285
}
276286

287+
public void SqlDelete(string sql, SqlCheck sqlCheck)
288+
{
289+
CustomizersHolder.AddCustomizer(typeof(TEntity), (IClassMapper m) => m.SqlDelete(sql, sqlCheck));
290+
}
291+
277292
public void Subselect(string sql)
278293
{
279294
CustomizersHolder.AddCustomizer(typeof(TEntity), (IClassMapper m) => m.Subselect(sql));

src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/JoinCustomizer.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,16 +32,31 @@ public void SqlInsert(string sql)
3232
CustomizersHolder.AddCustomizer(typeof(TEntity), (IJoinAttributesMapper m) => m.SqlInsert(sql));
3333
}
3434

35+
public void SqlInsert(string sql, SqlCheck sqlCheck)
36+
{
37+
CustomizersHolder.AddCustomizer(typeof(TEntity), (IJoinAttributesMapper m) => m.SqlInsert(sql, sqlCheck));
38+
}
39+
3540
public void SqlUpdate(string sql)
3641
{
3742
CustomizersHolder.AddCustomizer(typeof(TEntity), (IJoinAttributesMapper m) => m.SqlUpdate(sql));
3843
}
3944

45+
public void SqlUpdate(string sql, SqlCheck sqlCheck)
46+
{
47+
CustomizersHolder.AddCustomizer(typeof(TEntity), (IJoinAttributesMapper m) => m.SqlUpdate(sql, sqlCheck));
48+
}
49+
4050
public void SqlDelete(string sql)
4151
{
4252
CustomizersHolder.AddCustomizer(typeof(TEntity), (IJoinAttributesMapper m) => m.SqlDelete(sql));
4353
}
4454

55+
public void SqlDelete(string sql, SqlCheck sqlCheck)
56+
{
57+
CustomizersHolder.AddCustomizer(typeof(TEntity), (IJoinAttributesMapper m) => m.SqlDelete(sql, sqlCheck));
58+
}
59+
4560
public void Subselect(string sql)
4661
{
4762
CustomizersHolder.AddCustomizer(typeof(TEntity), (IJoinAttributesMapper m) => m.Subselect(sql));

src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/JoinedSubclassCustomizer.cs

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -92,16 +92,31 @@ public void SqlInsert(string sql)
9292
CustomizersHolder.AddCustomizer(typeof (TEntity), (IJoinedSubclassAttributesMapper m) => m.SqlInsert(sql));
9393
}
9494

95+
public void SqlInsert(string sql, SqlCheck sqlCheck)
96+
{
97+
CustomizersHolder.AddCustomizer(typeof(TEntity), (IJoinedSubclassAttributesMapper m) => m.SqlInsert(sql, sqlCheck));
98+
}
99+
95100
public void SqlUpdate(string sql)
96101
{
97102
CustomizersHolder.AddCustomizer(typeof (TEntity), (IJoinedSubclassAttributesMapper m) => m.SqlUpdate(sql));
98103
}
99104

105+
public void SqlUpdate(string sql, SqlCheck sqlCheck)
106+
{
107+
CustomizersHolder.AddCustomizer(typeof(TEntity), (IJoinedSubclassAttributesMapper m) => m.SqlUpdate(sql, sqlCheck));
108+
}
109+
100110
public void SqlDelete(string sql)
101111
{
102112
CustomizersHolder.AddCustomizer(typeof (TEntity), (IJoinedSubclassAttributesMapper m) => m.SqlDelete(sql));
103113
}
104114

115+
public void SqlDelete(string sql, SqlCheck sqlCheck)
116+
{
117+
CustomizersHolder.AddCustomizer(typeof(TEntity), (IJoinedSubclassAttributesMapper m) => m.SqlDelete(sql, sqlCheck));
118+
}
119+
105120
public void Subselect(string sql)
106121
{
107122
CustomizersHolder.AddCustomizer(typeof (TEntity), (IJoinedSubclassAttributesMapper m) => m.Subselect(sql));
@@ -140,10 +155,10 @@ public void Schema(string schemaName)
140155
CustomizersHolder.AddCustomizer(typeof (TEntity), (IJoinedSubclassAttributesMapper m) => m.Schema(schemaName));
141156
}
142157

143-
public void Filter(string filterName, Action<IFilterMapper> filterMapping)
144-
{
145-
CustomizersHolder.AddCustomizer(typeof(TEntity), (IJoinedSubclassAttributesMapper m) => m.Filter(filterName, filterMapping));
146-
}
158+
public void Filter(string filterName, Action<IFilterMapper> filterMapping)
159+
{
160+
CustomizersHolder.AddCustomizer(typeof(TEntity), (IJoinedSubclassAttributesMapper m) => m.Filter(filterName, filterMapping));
161+
}
147162

148163
#endregion
149164

src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/SubclassCustomizer.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,16 +129,31 @@ public void SqlInsert(string sql)
129129
CustomizersHolder.AddCustomizer(typeof (TEntity), (ISubclassMapper m) => m.SqlInsert(sql));
130130
}
131131

132+
public void SqlInsert(string sql, SqlCheck sqlCheck)
133+
{
134+
CustomizersHolder.AddCustomizer(typeof(TEntity), (ISubclassMapper m) => m.SqlInsert(sql, sqlCheck));
135+
}
136+
132137
public void SqlUpdate(string sql)
133138
{
134139
CustomizersHolder.AddCustomizer(typeof (TEntity), (ISubclassMapper m) => m.SqlUpdate(sql));
135140
}
136141

142+
public void SqlUpdate(string sql, SqlCheck sqlCheck)
143+
{
144+
CustomizersHolder.AddCustomizer(typeof(TEntity), (ISubclassMapper m) => m.SqlUpdate(sql, sqlCheck));
145+
}
146+
137147
public void SqlDelete(string sql)
138148
{
139149
CustomizersHolder.AddCustomizer(typeof (TEntity), (ISubclassMapper m) => m.SqlDelete(sql));
140150
}
141151

152+
public void SqlDelete(string sql, SqlCheck sqlCheck)
153+
{
154+
CustomizersHolder.AddCustomizer(typeof(TEntity), (ISubclassMapper m) => m.SqlDelete(sql, sqlCheck));
155+
}
156+
142157
public void Subselect(string sql)
143158
{
144159
CustomizersHolder.AddCustomizer(typeof (TEntity), (ISubclassMapper m) => m.Subselect(sql));

src/NHibernate/Mapping/ByCode/Impl/CustomizersImpl/UnionSubclassCustomizer.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,16 +79,31 @@ public void SqlInsert(string sql)
7979
CustomizersHolder.AddCustomizer(typeof (TEntity), (IUnionSubclassAttributesMapper m) => m.SqlInsert(sql));
8080
}
8181

82+
public void SqlInsert(string sql, SqlCheck sqlCheck)
83+
{
84+
CustomizersHolder.AddCustomizer(typeof(TEntity), (IUnionSubclassAttributesMapper m) => m.SqlInsert(sql, sqlCheck));
85+
}
86+
8287
public void SqlUpdate(string sql)
8388
{
8489
CustomizersHolder.AddCustomizer(typeof (TEntity), (IUnionSubclassAttributesMapper m) => m.SqlUpdate(sql));
8590
}
8691

92+
public void SqlUpdate(string sql, SqlCheck sqlCheck)
93+
{
94+
CustomizersHolder.AddCustomizer(typeof(TEntity), (IUnionSubclassAttributesMapper m) => m.SqlUpdate(sql, sqlCheck));
95+
}
96+
8797
public void SqlDelete(string sql)
8898
{
8999
CustomizersHolder.AddCustomizer(typeof (TEntity), (IUnionSubclassAttributesMapper m) => m.SqlDelete(sql));
90100
}
91101

102+
public void SqlDelete(string sql, SqlCheck sqlCheck)
103+
{
104+
CustomizersHolder.AddCustomizer(typeof(TEntity), (IUnionSubclassAttributesMapper m) => m.SqlDelete(sql, sqlCheck));
105+
}
106+
92107
public void Subselect(string sql)
93108
{
94109
CustomizersHolder.AddCustomizer(typeof (TEntity), (IUnionSubclassAttributesMapper m) => m.Subselect(sql));

0 commit comments

Comments
 (0)