Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 16 additions & 15 deletions src/VirtoCommerce.ExportModule.Core/Services/IDataExporter.cs
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
using System;
using System.IO;
using VirtoCommerce.ExportModule.Core.Model;
using VirtoCommerce.Platform.Core.Common;

namespace VirtoCommerce.ExportModule.Core.Services
{
/// <summary>
/// Interface for data exporter implementation.
/// </summary>
public interface IDataExporter
{
void Export(Stream stream, ExportDataRequest request, Action<ExportProgressInfo> progressCallback, ICancellationToken token);
}
}
using System;
using System.Threading;
using System.IO;
using VirtoCommerce.ExportModule.Core.Model;
using VirtoCommerce.Platform.Core.Common;

namespace VirtoCommerce.ExportModule.Core.Services
{
/// <summary>
/// Interface for data exporter implementation.
/// </summary>
public interface IDataExporter
{
void Export(Stream stream, ExportDataRequest request, Action<ExportProgressInfo> progressCallback, CancellationToken token);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,6 @@
</PropertyGroup>
<ItemGroup>

<PackageReference Include="VirtoCommerce.Platform.Core" Version="3.1002.0" />
<PackageReference Include="VirtoCommerce.Platform.Core" Version="3.1039.0" />
</ItemGroup>
</Project>
50 changes: 28 additions & 22 deletions src/VirtoCommerce.ExportModule.Data/Services/DataExporter.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using System.Threading;
using System.Collections.Generic;
using System.IO;
using System.Text;
Expand All @@ -20,7 +21,7 @@ public DataExporter(IKnownExportTypesResolver exportTypesResolver, IExportProvid
_exportProviderFactory = exportProviderFactory;
}

public void Export(Stream stream, ExportDataRequest request, Action<ExportProgressInfo> progressCallback, ICancellationToken token)
public void Export(Stream stream, ExportDataRequest request, Action<ExportProgressInfo> progressCallback, CancellationToken token)
{
if (request == null)
{
Expand Down Expand Up @@ -65,27 +66,7 @@ public void Export(Stream stream, ExportDataRequest request, Action<ExportProgre
token.ThrowIfCancellationRequested();
foreach (var obj in pagedDataSource.Items)
{
try
{
var preparedObject = obj.CloneTyped();

if (preparedObject is IEnumerable<IExportable> enumerable)
{
foreach (var exportable in enumerable)
{
WriteRecord(exportProvider, writer, request, exportable, needTabularData);
}
}
else
{
WriteRecord(exportProvider, writer, request, preparedObject, needTabularData);
}
}
catch (Exception e)
{
exportProgress.Errors.Add(e.Message);
progressCallback(exportProgress);
}
ExportObject(exportProvider, writer, request, obj, needTabularData, exportProgress, progressCallback);
exportedCount++;
}

Expand Down Expand Up @@ -115,6 +96,31 @@ public void Export(Stream stream, ExportDataRequest request, Action<ExportProgre
}


private static void ExportObject(IExportProvider exportProvider, TextWriter writer, ExportDataRequest request, IExportable obj, bool needTabularData, ExportProgressInfo exportProgress, Action<ExportProgressInfo> progressCallback)
{
try
{
var preparedObject = obj.CloneTyped();

if (preparedObject is IEnumerable<IExportable> enumerable)
{
foreach (var exportable in enumerable)
{
WriteRecord(exportProvider, writer, request, exportable, needTabularData);
}
}
else
{
WriteRecord(exportProvider, writer, request, preparedObject, needTabularData);
}
}
catch (Exception e)
{
exportProgress.Errors.Add(e.Message);
progressCallback(exportProgress);
}
}

private static void WriteRecord(IExportProvider exportProvider, TextWriter writer, ExportDataRequest request, IExportable exportable, bool needTabularData)
{
if (needTabularData)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
</PropertyGroup>
<ItemGroup>

<PackageReference Include="VirtoCommerce.AssetsModule.Core" Version="3.1000.0" />
<PackageReference Include="VirtoCommerce.AssetsModule.Core" Version="3.1005.0" />
<ProjectReference Include="..\VirtoCommerce.ExportModule.Core\VirtoCommerce.ExportModule.Core.csproj" />
</ItemGroup>
</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ void ProgressCallback(ExportProgressInfo x)

await using (var stream = await _exportFileStorage.OpenWriteAsync(fileName))
{
_dataExporter.Export(stream, request, ProgressCallback, new JobCancellationTokenWrapper(cancellationToken));
_dataExporter.Export(stream, request, ProgressCallback, cancellationToken.ShutdownToken);
}

notification.DownloadUrl = $"/api/export/download/{fileName}";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,11 @@ public ActionResult CancelExport([FromBody] ExportCancellationRequest cancellati
/// <returns></returns>
[HttpGet]
[Route("download/{fileName}")]
// VC0015: PlatformExport permission was moved to the BackupRestore module but the platform keeps
// the constant for backward compatibility; keep using it here to avoid an Export->BackupRestore dependency.
#pragma warning disable VC0015
[AuthorizeAny(PlatformConstants.Security.Permissions.PlatformExport, ModuleConstants.Security.Permissions.Download)]
#pragma warning restore VC0015
public async Task<ActionResult> DownloadExportFile([FromRoute] string fileName)
{
var contentType = MimeTypeResolver.ResolveContentType(fileName);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="FluentValidation" Version="12.1.1" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="10.0.1" />
<PackageReference Include="VirtoCommerce.Platform.Hangfire" Version="3.1002.0" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="10.0.9" />
<PackageReference Include="VirtoCommerce.Platform.Hangfire" Version="3.1039.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\VirtoCommerce.ExportModule.Core\VirtoCommerce.ExportModule.Core.csproj" />
Expand Down
4 changes: 2 additions & 2 deletions src/VirtoCommerce.ExportModule.Web/module.manifest
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
<version>3.1003.0</version>
<version-tag />

<platformVersion>3.1002.0</platformVersion>
<platformVersion>3.1039.0</platformVersion>
<dependencies>
<dependency id="VirtoCommerce.Assets" version="3.1000.0" />
<dependency id="VirtoCommerce.Assets" version="3.1005.0" />
</dependencies>

<title>Generic Export</title>
Expand Down
Loading