Browse Source

Simplify setting manager by extracting two default contributor.

pull/204/head
Halil İbrahim Kalkan 8 years ago
parent
commit
89dd7f4970
  1. 19
      src/Volo.Abp.Settings/Volo/Abp/Settings/DefaultStoreSettingContributor.cs
  2. 20
      src/Volo.Abp.Settings/Volo/Abp/Settings/DefaultValueSettingContributor.cs
  3. 50
      src/Volo.Abp.Settings/Volo/Abp/Settings/SettingManager.cs
  4. 10
      src/Volo.Abp.Settings/Volo/Abp/Settings/SettingOptions.cs

19
src/Volo.Abp.Settings/Volo/Abp/Settings/DefaultStoreSettingContributor.cs

@ -0,0 +1,19 @@
using System.Threading.Tasks;
namespace Volo.Abp.Settings
{
public class DefaultStoreSettingContributor : SettingContributor
{
public override string EntityType => null;
public DefaultStoreSettingContributor(ISettingStore settingStore)
: base(settingStore)
{
}
public override Task<string> GetOrNullAsync(SettingDefinition setting, string entityId)
{
return SettingStore.GetOrNullAsync(setting.Name, null, null);
}
}
}

20
src/Volo.Abp.Settings/Volo/Abp/Settings/DefaultValueSettingContributor.cs

@ -0,0 +1,20 @@
using System.Threading.Tasks;
namespace Volo.Abp.Settings
{
public class DefaultValueSettingContributor : SettingContributor
{
public override string EntityType => null;
public DefaultValueSettingContributor(ISettingStore settingStore)
: base(settingStore)
{
}
public override Task<string> GetOrNullAsync(SettingDefinition setting, string entityId)
{
return Task.FromResult(setting.DefaultValue);
}
}
}

50
src/Volo.Abp.Settings/Volo/Abp/Settings/SettingManager.cs

@ -43,7 +43,9 @@ namespace Volo.Abp.Settings
var setting = SettingDefinitionManager.Get(name); var setting = SettingDefinitionManager.Get(name);
foreach (var contributor in Enumerable.Reverse(Contributors.Value)) var contributors = Enumerable.Reverse(Contributors.Value);
foreach (var contributor in contributors)
{ {
var value = await contributor.GetOrNullAsync(setting, null); var value = await contributor.GetOrNullAsync(setting, null);
if (value != null) if (value != null)
@ -52,13 +54,7 @@ namespace Volo.Abp.Settings
} }
} }
var defaultStoreValue = await SettingStore.GetOrNullAsync(name, null, null); return null;
if (defaultStoreValue != null)
{
return defaultStoreValue;
}
return setting.DefaultValue;
} }
public virtual async Task<string> GetOrNullAsync(string name, string entityType, string entityId, bool fallback = true) public virtual async Task<string> GetOrNullAsync(string name, string entityType, string entityId, bool fallback = true)
@ -68,27 +64,25 @@ namespace Volo.Abp.Settings
var setting = SettingDefinitionManager.Get(name); var setting = SettingDefinitionManager.Get(name);
foreach (var contributor in GetFilteredContributors(entityType, fallback)) var contributors = Enumerable
{ .Reverse(Contributors.Value)
var value = await contributor.GetOrNullAsync(setting, entityId); .SkipWhile(c => c.EntityType != entityType);
if (value != null)
{
return value;
}
}
if (!fallback) if (!fallback)
{ {
return null; contributors = contributors.TakeWhile(c => c.EntityType == entityType);
} }
var defaultStoreValue = await SettingStore.GetOrNullAsync(name, null, null); foreach (var contributor in contributors)
if (defaultStoreValue != null)
{ {
return defaultStoreValue; var value = await contributor.GetOrNullAsync(setting, entityId);
if (value != null)
{
return value;
}
} }
return setting.DefaultValue; return null;
} }
public Task<List<SettingValue>> GetAllAsync() public Task<List<SettingValue>> GetAllAsync()
@ -110,19 +104,5 @@ namespace Volo.Abp.Settings
{ {
throw new System.NotImplementedException(); throw new System.NotImplementedException();
} }
private IEnumerable<ISettingContributor> GetFilteredContributors(string entityType, bool fallback)
{
var contributors = Enumerable
.Reverse(Contributors.Value)
.SkipWhile(c => c.EntityType != entityType);
if (!fallback)
{
contributors = contributors.TakeWhile(c => c.EntityType == entityType);
}
return contributors;
}
} }
} }

10
src/Volo.Abp.Settings/Volo/Abp/Settings/SettingOptions.cs

@ -4,14 +4,18 @@ namespace Volo.Abp.Settings
{ {
public class SettingOptions public class SettingOptions
{ {
public ITypeList<ISettingContributor> Contributors { get; }
public ITypeList<ISettingProvider> Providers { get; set; } public ITypeList<ISettingProvider> Providers { get; set; }
public ITypeList<ISettingContributor> Contributors { get; }
public SettingOptions() public SettingOptions()
{ {
Contributors = new TypeList<ISettingContributor>();
Providers = new TypeList<ISettingProvider>(); Providers = new TypeList<ISettingProvider>();
Contributors = new TypeList<ISettingContributor>
{
typeof(DefaultValueSettingContributor),
typeof(DefaultStoreSettingContributor)
};
} }
} }
} }

Loading…
Cancel
Save