Browse Source

Extract LocalizedTemplateContentReaderFactory

pull/3792/head
Halil İbrahim Kalkan 6 years ago
parent
commit
a29cdda2c5
  1. 9
      framework/src/Volo.Abp.TextTemplating/Volo/Abp/TextTemplating/VirtualFiles/ILocalizedTemplateContentReaderFactory.cs
  2. 54
      framework/src/Volo.Abp.TextTemplating/Volo/Abp/TextTemplating/VirtualFiles/LocalizedTemplateContentReaderFactory.cs
  3. 51
      framework/src/Volo.Abp.TextTemplating/Volo/Abp/TextTemplating/VirtualFiles/VirtualFileTemplateContentContributor.cs

9
framework/src/Volo.Abp.TextTemplating/Volo/Abp/TextTemplating/VirtualFiles/ILocalizedTemplateContentReaderFactory.cs

@ -0,0 +1,9 @@
using System.Threading.Tasks;
namespace Volo.Abp.TextTemplating.VirtualFiles
{
public interface ILocalizedTemplateContentReaderFactory
{
Task<ILocalizedTemplateContentReader> CreateAsync(TemplateDefinition templateDefinition);
}
}

54
framework/src/Volo.Abp.TextTemplating/Volo/Abp/TextTemplating/VirtualFiles/LocalizedTemplateContentReaderFactory.cs

@ -0,0 +1,54 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp.DependencyInjection;
using Volo.Abp.VirtualFileSystem;
namespace Volo.Abp.TextTemplating.VirtualFiles
{
public class LocalizedTemplateContentReaderFactory : ILocalizedTemplateContentReaderFactory, ISingletonDependency
{
private readonly IVirtualFileProvider _virtualFileProvider;
public LocalizedTemplateContentReaderFactory(IVirtualFileProvider virtualFileProvider)
{
_virtualFileProvider = virtualFileProvider;
}
public Task<ILocalizedTemplateContentReader> CreateAsync(TemplateDefinition templateDefinition)
{
return CreateLocalizedReader(templateDefinition);
}
protected async Task<ILocalizedTemplateContentReader> CreateLocalizedReader(
TemplateDefinition templateDefinition)
{
var virtualPath = templateDefinition
.Properties
.GetOrDefault(VirtualFileTemplateContentContributor.VirtualPathPropertyName) as string;
if (virtualPath == null)
{
return NullLocalizedTemplateContentReader.Instance;
}
var fileInfo = _virtualFileProvider.GetFileInfo(virtualPath);
if (!fileInfo.Exists)
{
throw new AbpException("Could not find a file/folder at the location: " + virtualPath);
}
if (fileInfo.IsDirectory)
{
var folderReader = new FolderLocalizedTemplateContentReader();
await folderReader.ReadContentsAsync(_virtualFileProvider, virtualPath);
return folderReader;
}
else //File
{
var singleFileReader = new SingleFileLocalizedTemplateContentReader();
await singleFileReader.ReadContentsAsync(fileInfo);
return singleFileReader;
}
}
}
}

51
framework/src/Volo.Abp.TextTemplating/Volo/Abp/TextTemplating/VirtualFiles/VirtualFileTemplateContentContributor.cs

@ -1,8 +1,6 @@
using System.Collections.Generic;
using System.Globalization;
using System.Globalization;
using System.Threading.Tasks;
using Volo.Abp.DependencyInjection;
using Volo.Abp.VirtualFileSystem;
namespace Volo.Abp.TextTemplating.VirtualFiles
{
@ -10,57 +8,22 @@ namespace Volo.Abp.TextTemplating.VirtualFiles
{
public const string VirtualPathPropertyName = "VirtualPath";
private readonly IVirtualFileProvider _virtualFileProvider;
private readonly ILocalizedTemplateContentReaderFactory _localizedTemplateContentReaderFactory;
public VirtualFileTemplateContentContributor(IVirtualFileProvider virtualFileProvider)
public VirtualFileTemplateContentContributor(ILocalizedTemplateContentReaderFactory localizedTemplateContentReaderFactory)
{
_virtualFileProvider = virtualFileProvider;
_localizedTemplateContentReaderFactory = localizedTemplateContentReaderFactory;
}
public virtual async Task<string> GetOrNullAsync(TemplateContentContributorContext context)
{
var cultureName = context.Culture ??
CultureInfo.CurrentUICulture.Name;
var localizedReader = await CreateLocalizedReader(context);
var localizedReader = await _localizedTemplateContentReaderFactory
.CreateAsync(context.TemplateDefinition);
return localizedReader.GetContent(
cultureName,
context.Culture ?? CultureInfo.CurrentUICulture.Name,
context.TemplateDefinition.DefaultCultureName
);
}
protected async Task<ILocalizedTemplateContentReader> CreateLocalizedReader(
TemplateContentContributorContext context)
{
var virtualPath = context
.TemplateDefinition
.Properties
.GetOrDefault(VirtualPathPropertyName) as string;
if (virtualPath == null)
{
return NullLocalizedTemplateContentReader.Instance;
}
var fileInfo = _virtualFileProvider.GetFileInfo(virtualPath);
if (!fileInfo.Exists)
{
throw new AbpException("Could not find a file/folder at the location: " + virtualPath);
}
if (fileInfo.IsDirectory)
{
var folderReader = new FolderLocalizedTemplateContentReader();
await folderReader.ReadContentsAsync(_virtualFileProvider, virtualPath);
return folderReader;
}
else //File
{
var singleFileReader = new SingleFileLocalizedTemplateContentReader();
await singleFileReader.ReadContentsAsync(fileInfo);
return singleFileReader;
}
}
}
}
Loading…
Cancel
Save