Browse Source

Extract LocalizedTemplateContentReaderFactory

pull/3792/head
Halil İbrahim Kalkan 7 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 System.Threading.Tasks;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
using Volo.Abp.VirtualFileSystem;
namespace Volo.Abp.TextTemplating.VirtualFiles namespace Volo.Abp.TextTemplating.VirtualFiles
{ {
@ -10,57 +8,22 @@ namespace Volo.Abp.TextTemplating.VirtualFiles
{ {
public const string VirtualPathPropertyName = "VirtualPath"; 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) public virtual async Task<string> GetOrNullAsync(TemplateContentContributorContext context)
{ {
var cultureName = context.Culture ?? var localizedReader = await _localizedTemplateContentReaderFactory
CultureInfo.CurrentUICulture.Name; .CreateAsync(context.TemplateDefinition);
var localizedReader = await CreateLocalizedReader(context);
return localizedReader.GetContent( return localizedReader.GetContent(
cultureName, context.Culture ?? CultureInfo.CurrentUICulture.Name,
context.TemplateDefinition.DefaultCultureName 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