Save as XML feature added (#684)

Similar approach used like Save as JSON or Save as CSV.
This commit is contained in:
Mustafa Sadedil
2018-09-10 22:11:51 +03:00
committed by Karl Burtram
parent 026c08b545
commit 98018c5292
6 changed files with 406 additions and 1 deletions

View File

@@ -2,9 +2,9 @@
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
//
using System;
using System.IO;
using System.Linq;
using System.Collections.Concurrent;
using System.Threading.Tasks;
using Microsoft.SqlTools.Hosting.Protocol;
@@ -98,6 +98,12 @@ namespace Microsoft.SqlTools.ServiceLayer.QueryExecution
/// </summary>
internal IFileStreamFactory JsonFileFactory { get; set; }
/// <summary>
/// File factory to be used to create XML files from result sets. Set to internal in order
/// to allow overriding in unit testing
/// </summary>
internal IFileStreamFactory XmlFileFactory { get; set; }
/// <summary>
/// The collection of active queries
/// </summary>
@@ -151,6 +157,7 @@ namespace Microsoft.SqlTools.ServiceLayer.QueryExecution
serviceHost.SetRequestHandler(SaveResultsAsCsvRequest.Type, HandleSaveResultsAsCsvRequest);
serviceHost.SetRequestHandler(SaveResultsAsExcelRequest.Type, HandleSaveResultsAsExcelRequest);
serviceHost.SetRequestHandler(SaveResultsAsJsonRequest.Type, HandleSaveResultsAsJsonRequest);
serviceHost.SetRequestHandler(SaveResultsAsXmlRequest.Type, HandleSaveResultsAsXmlRequest);
serviceHost.SetRequestHandler(QueryExecutionPlanRequest.Type, HandleExecutionPlanRequest);
serviceHost.SetRequestHandler(SimpleExecuteRequest.Type, HandleSimpleExecuteRequest);
@@ -448,6 +455,21 @@ namespace Microsoft.SqlTools.ServiceLayer.QueryExecution
await SaveResultsHelper(saveParams, requestContext, jsonFactory);
}
/// <summary>
/// Process request to save a resultSet to a file in XML format
/// </summary>
internal async Task HandleSaveResultsAsXmlRequest(SaveResultsAsXmlRequestParams saveParams,
RequestContext<SaveResultRequestResult> requestContext)
{
// Use the default XML file factory if we haven't overridden it
IFileStreamFactory xmlFactory = XmlFileFactory ?? new SaveAsXmlFileStreamFactory
{
SaveRequestParams = saveParams,
QueryExecutionSettings = Settings.QueryExecutionSettings
};
await SaveResultsHelper(saveParams, requestContext, xmlFactory);
}
#endregion
#region Inter-Service API Handlers