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);
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);
if (value != null)
@ -52,13 +54,7 @@ namespace Volo.Abp.Settings
}
}
var defaultStoreValue = await SettingStore.GetOrNullAsync(name, null, null);
if (defaultStoreValue != null)
{
return defaultStoreValue;
}
return setting.DefaultValue;
return null;
}
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);
foreach (var contributor in GetFilteredContributors(entityType, fallback))
{
var value = await contributor.GetOrNullAsync(setting, entityId);
if (value != null)
{
return value;
}
}
var contributors = Enumerable
.Reverse(Contributors.Value)
.SkipWhile(c => c.EntityType != entityType);
if (!fallback)
{
return null;
contributors = contributors.TakeWhile(c => c.EntityType == entityType);
}
var defaultStoreValue = await SettingStore.GetOrNullAsync(name, null, null);
if (defaultStoreValue != null)
foreach (var contributor in contributors)
{
return defaultStoreValue;
var value = await contributor.GetOrNullAsync(setting, entityId);
if (value != null)
{
return value;
}
}
return setting.DefaultValue;
return null;
}
public Task<List<SettingValue>> GetAllAsync()
@ -110,19 +104,5 @@ namespace Volo.Abp.Settings
{
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 ITypeList<ISettingContributor> Contributors { get; }
public ITypeList<ISettingProvider> Providers { get; set; }
public ITypeList<ISettingContributor> Contributors { get; }
public SettingOptions()
{
Contributors = new TypeList<ISettingContributor>();
Providers = new TypeList<ISettingProvider>();
Contributors = new TypeList<ISettingContributor>
{
typeof(DefaultValueSettingContributor),
typeof(DefaultStoreSettingContributor)
};
}
}
}

Loading…
Cancel
Save