Skip to content

Commit 0c81cd7

Browse files
committed
Code cleanup
1 parent ebbb825 commit 0c81cd7

File tree

1 file changed

+48
-86
lines changed

1 file changed

+48
-86
lines changed
Lines changed: 48 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -1,70 +1,58 @@
1-
using System;
21
using System.Collections.Generic;
3-
using System.Linq;
42
using NHibernate.Persister.Entity;
53

64
namespace NHibernate.Loader
75
{
8-
// Based on https://raw.githubusercontent.com/hibernate/hibernate-orm/master/hibernate-core/src/main/java/org/hibernate/loader/DefaultEntityAliases.java
96
/// <summary>
107
/// EntityAliases which handles the logic of selecting user provided aliases (via return-property),
118
/// before using the default aliases.
129
/// </summary>
1310
public class DefaultEntityAliases : IEntityAliases
1411
{
15-
private readonly string[] suffixedKeyColumns;
16-
private readonly string[] suffixedVersionColumn;
17-
private readonly string[][] suffixedPropertyColumns;
18-
private readonly string suffixedDiscriminatorColumn;
19-
private readonly string suffix;
20-
private string rowIdAlias;
21-
private readonly IDictionary<string, string[]> userProvidedAliases;
12+
private readonly string _suffix;
13+
private readonly IDictionary<string, string[]> _userProvidedAliases;
14+
private string _rowIdAlias;
2215

2316
public DefaultEntityAliases(ILoadable persister, string suffix)
24-
: this(null, persister, suffix) {}
17+
: this(null, persister, suffix)
18+
{
19+
}
2520

2621
/// <summary>
2722
/// Calculate and cache select-clause aliases.
2823
/// </summary>
2924
public DefaultEntityAliases(IDictionary<string, string[]> userProvidedAliases, ILoadable persister, string suffix)
3025
{
31-
this.suffix = suffix;
32-
this.userProvidedAliases = userProvidedAliases?.Count > 0 ? userProvidedAliases : null;
33-
34-
suffixedKeyColumns = DetermineKeyAliases(persister, suffix);
35-
suffixedPropertyColumns = GetSuffixedPropertyAliases(persister);
36-
suffixedDiscriminatorColumn = DetermineDiscriminatorAlias(persister, suffix);
26+
_suffix = suffix;
27+
_userProvidedAliases = userProvidedAliases?.Count > 0 ? userProvidedAliases : null;
3728

38-
suffixedVersionColumn = persister.IsVersioned ? suffixedPropertyColumns[persister.VersionProperty] : null;
39-
//rowIdAlias is generated on demand in property
29+
SuffixedKeyAliases = DetermineKeyAliases(persister);
30+
SuffixedPropertyAliases = DeterminePropertyAliases(persister);
31+
SuffixedDiscriminatorAlias = DetermineDiscriminatorAlias(persister);
32+
SuffixedVersionAliases = persister.IsVersioned ? SuffixedPropertyAliases[persister.VersionProperty] : null;
4033
}
4134

42-
private string[] DetermineKeyAliases(ILoadable persister, string suffix)
35+
public string[][] GetSuffixedPropertyAliases(ILoadable persister)
4336
{
44-
if (userProvidedAliases == null)
45-
return GetIdentifierAliases(persister, suffix);
46-
47-
return GetUserProvidedAliases(persister.IdentifierPropertyName)
48-
?? GetUserProvidedAliases(EntityPersister.EntityID)
49-
?? GetIdentifierAliases(persister, suffix);
37+
int size = persister.PropertyNames.Length;
38+
string[][] suffixedPropertyAliases = new string[size][];
39+
for (int j = 0; j < size; j++)
40+
{
41+
suffixedPropertyAliases[j] = GetUserProvidedAlias(persister.PropertyNames[j]) ?? GetPropertyAliases(persister, j);
42+
}
43+
return suffixedPropertyAliases;
5044
}
5145

52-
private string DetermineDiscriminatorAlias(ILoadable persister, string suffix)
53-
{
54-
if (userProvidedAliases == null)
55-
return GetDiscriminatorAlias(persister, suffix);
46+
public string[] SuffixedVersionAliases { get; }
5647

57-
return GetUserProvidedAlias(AbstractEntityPersister.EntityClass)
58-
?? GetDiscriminatorAlias(persister, suffix);
59-
}
48+
public string[][] SuffixedPropertyAliases { get; }
6049

61-
/// <summary>
62-
/// Returns default aliases for all the properties
63-
/// </summary>
64-
protected string[][] GetPropertiesAliases(ILoadable persister)
65-
{
66-
return Enumerable.Range(0, persister.PropertyNames.Length).Select(i => GetPropertyAliases(persister, i)).ToArray();
67-
}
50+
public string SuffixedDiscriminatorAlias { get; }
51+
52+
public string[] SuffixedKeyAliases { get; }
53+
54+
// TODO: not visible to the user!
55+
public string RowIdAlias => _rowIdAlias ?? (_rowIdAlias = Loadable.RowIdAlias + _suffix);
6856

6957
protected virtual string GetDiscriminatorAlias(ILoadable persister, string suffix)
7058
{
@@ -78,66 +66,40 @@ protected virtual string[] GetIdentifierAliases(ILoadable persister, string suff
7866

7967
protected virtual string[] GetPropertyAliases(ILoadable persister, int j)
8068
{
81-
return persister.GetPropertyAliases(suffix, j);
69+
return persister.GetPropertyAliases(_suffix, j);
8270
}
8371

84-
private string[] GetUserProvidedAliases(string propertyPath)
72+
private string[] DetermineKeyAliases(ILoadable persister)
8573
{
86-
if (propertyPath == null)
87-
return null;
88-
89-
string[] result;
90-
userProvidedAliases.TryGetValue(propertyPath, out result);
91-
return result;
74+
return
75+
GetUserProvidedAlias(persister.IdentifierPropertyName) ??
76+
GetUserProvidedAlias(EntityPersister.EntityID) ??
77+
GetIdentifierAliases(persister, _suffix);
9278
}
9379

94-
private string GetUserProvidedAlias(string propertyPath)
80+
private string[][] DeterminePropertyAliases(ILoadable persister)
9581
{
96-
return GetUserProvidedAliases(propertyPath)?[0];
97-
82+
return GetSuffixedPropertyAliases(persister);
9883
}
9984

100-
/// <summary>
101-
/// Returns aliases for subclass persister
102-
/// </summary>
103-
public string[][] GetSuffixedPropertyAliases(ILoadable persister)
85+
private string DetermineDiscriminatorAlias(ILoadable persister)
10486
{
105-
if (userProvidedAliases == null)
106-
return GetPropertiesAliases(persister);
107-
108-
int size = persister.PropertyNames.Length;
109-
string[][] suffixedPropertyAliases = new string[size][];
110-
for (int j = 0; j < size; j++)
87+
string[] columns = GetUserProvidedAlias(AbstractEntityPersister.EntityClass);
88+
if (columns != null)
11189
{
112-
suffixedPropertyAliases[j] = GetUserProvidedAliases(persister.PropertyNames[j]) ?? GetPropertyAliases(persister, j);
90+
return columns[0];
11391
}
114-
return suffixedPropertyAliases;
115-
}
116-
117-
public string[] SuffixedVersionAliases
118-
{
119-
get { return suffixedVersionColumn; }
120-
}
121-
122-
public string[][] SuffixedPropertyAliases
123-
{
124-
get { return suffixedPropertyColumns; }
125-
}
126-
127-
public string SuffixedDiscriminatorAlias
128-
{
129-
get { return suffixedDiscriminatorColumn; }
92+
return GetDiscriminatorAlias(persister, _suffix);
13093
}
13194

132-
public string[] SuffixedKeyAliases
95+
private string[] GetUserProvidedAlias(string propertyPath)
13396
{
134-
get { return suffixedKeyColumns; }
135-
}
136-
137-
public string RowIdAlias
138-
{
139-
// TODO: not visible to the user!
140-
get { return rowIdAlias ?? (rowIdAlias = Loadable.RowIdAlias + suffix); }
97+
string[] result = null;
98+
if (propertyPath != null)
99+
{
100+
_userProvidedAliases?.TryGetValue(propertyPath, out result);
101+
}
102+
return result;
141103
}
142104
}
143105
}

0 commit comments

Comments
 (0)