-
Notifications
You must be signed in to change notification settings - Fork 935
/
Copy pathCaseFragment.cs
38 lines (31 loc) · 1.02 KB
/
CaseFragment.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
using System.Collections.Generic;
using NHibernate.Util;
namespace NHibernate.SqlCommand
{
/// <summary> Abstract SQL case fragment renderer </summary>
public abstract class CaseFragment
{
protected internal readonly Dialect.Dialect dialect;
protected internal string returnColumnName;
protected internal IDictionary<string,string > cases = new LinkedHashMap<string,string>();
protected CaseFragment(Dialect.Dialect dialect)
{
this.dialect = dialect;
}
public virtual CaseFragment SetReturnColumnName(string returnColumnName)
{
this.returnColumnName = returnColumnName;
return this;
}
public virtual CaseFragment SetReturnColumnName(string returnColumnName, string suffix)
{
return SetReturnColumnName(new Alias(suffix).ToAliasString(returnColumnName, dialect));
}
public virtual CaseFragment AddWhenColumnNotNull(string alias, string columnName, string value)
{
cases[StringHelper.Qualify(alias, columnName)] = value;
return this;
}
public abstract string ToSqlStringFragment();
}
}