Fix for save as Json failure (#216)

* Fix exception due to repeat disposal of stream

* Fix off by one index for saving selection

* Fix to overwrite file if file already exists

* Fix test for Json save selection

* Add Json Formatting
This commit is contained in:
Sharon Ravindran
2017-01-18 15:47:44 -08:00
committed by GitHub
parent 8a8d4338f1
commit 31e1422a0e
5 changed files with 6 additions and 7 deletions

View File

@@ -51,7 +51,7 @@ namespace Microsoft.SqlTools.ServiceLayer.QueryExecution.DataStorage
/// <returns>Stream writer</returns>
public IFileStreamWriter GetWriter(string fileName)
{
return new SaveAsCsvFileStreamWriter(new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite), SaveRequestParams);
return new SaveAsCsvFileStreamWriter(new FileStream(fileName, FileMode.Create, FileAccess.ReadWrite), SaveRequestParams);
}
/// <summary>

View File

@@ -48,7 +48,7 @@ namespace Microsoft.SqlTools.ServiceLayer.QueryExecution.DataStorage
/// <returns>Stream writer</returns>
public IFileStreamWriter GetWriter(string fileName)
{
return new SaveAsJsonFileStreamWriter(new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite), SaveRequestParams);
return new SaveAsJsonFileStreamWriter(new FileStream(fileName, FileMode.Create, FileAccess.ReadWrite), SaveRequestParams);
}
/// <summary>

View File

@@ -39,6 +39,7 @@ namespace Microsoft.SqlTools.ServiceLayer.QueryExecution.DataStorage
// Setup the internal state
streamWriter = new StreamWriter(stream);
jsonWriter = new JsonTextWriter(streamWriter);
jsonWriter.Formatting = Formatting.Indented;
// Write the header of the file
jsonWriter.WriteStartArray();
@@ -59,7 +60,7 @@ namespace Microsoft.SqlTools.ServiceLayer.QueryExecution.DataStorage
// Write the items out as properties
int columnStart = ColumnStartIndex ?? 0;
int columnEnd = ColumnEndIndex ?? columns.Count;
int columnEnd = (ColumnEndIndex != null) ? ColumnEndIndex.Value + 1 : columns.Count;
for (int i = columnStart; i < columnEnd; i++)
{
jsonWriter.WritePropertyName(columns[i].ColumnName);
@@ -84,9 +85,8 @@ namespace Microsoft.SqlTools.ServiceLayer.QueryExecution.DataStorage
{
// Write the footer of the file
jsonWriter.WriteEndArray();
// This closes the underlying stream, so we needn't call close on the underlying stream explicitly
jsonWriter.Close();
streamWriter.Dispose();
base.Dispose();
}
}

View File

@@ -99,7 +99,6 @@ namespace Microsoft.SqlTools.ServiceLayer.QueryExecution.DataStorage
return;
}
FileStream.Flush();
FileStream.Dispose();
}
public virtual void Dispose()