using System;
using System.Collections.Generic;
using System.Linq;
using Umbraco.Core.ObjectResolution;
namespace Umbraco.Core.Persistence.SqlSyntax
{
///
/// A resolver to return all ISqlSyntaxProvider objects
///
internal sealed class SqlSyntaxProvidersResolver : ManyObjectsResolverBase
{
///
/// Constructor
///
///
internal SqlSyntaxProvidersResolver(IEnumerable syntaxProviders)
: base(syntaxProviders)
{
}
///
/// Gets the implementations.
///
public IEnumerable SqlSyntaxProviders
{
get
{
return Values;
}
}
///
/// Gets a by its attributed provider.
///
/// ProviderName from the ConnectionString settings
/// that corresponds to the attributed provider or the default Sql Server Syntax Provider.
public ISqlSyntaxProvider GetByProviderNameOrDefault(string providerName)
{
var provider =
Values.FirstOrDefault(
x =>
x.GetType()
.FirstAttribute()
.ProviderName.ToLowerInvariant()
.Equals(providerName.ToLowerInvariant()));
if (provider != null)
return provider;
return Values.First(x => x.GetType() == typeof (SqlServerSyntaxProvider));
}
}
}