public void LogReferencesExportTest() { var reader = new CSVReader(_inputFilePath); _data.Sensors = reader.ReadSensors(); _data.Sensors = new List <Sensor> { _data.Sensors[0] }; using (var writer = File.CreateText(_outputFilePath + "ChangesTest.csv")) { writer.WriteLine("Change matrix for file: " + Path.GetFileName(_outputFilePath)); writer.WriteLine("Date,Time,Temperature"); for (var time = _data.StartTimeStamp; time <= _data.EndTimeStamp; time = time.AddMinutes(_data.DataInterval)) { writer.WriteLine(time.ToString("dd/MM/yyyy,HH:mm") + ",1"); } } var ll = new LinkedList <int>(); ll.AddFirst(1); for (var time = _data.StartTimeStamp; time <= _data.EndTimeStamp; time = time.AddMinutes(_data.DataInterval)) { _data.Sensors[0].CurrentState.Changes.Add(time, ll); } DatasetExporter.Export(_data, _outputFilePath, ExportFormat.CSV, true, false, true, loadInUnloadedValues: false); Assert.AreEqual(Tools.GenerateMD5HashFromFile(_outputFilePath + "ChangesTest.csv"), Tools.GenerateMD5HashFromFile(_outputFilePath + " Changes Matrix.csv")); }
private static void XslValueOfForDataFields (XmlWriter writer, IList<string> sFileds, DatasetExporter.ExportFormat formatType) { // xsl:value-of for data fields for (int i = 0; i < sFileds.Count; i++) { writer.WriteString("\""); writer.WriteStartElement("xsl:value-of"); writer.WriteAttributeString("select", sFileds[i]); writer.WriteEndElement(); // xsl:value-of writer.WriteString("\""); if (i != sFileds.Count - 1) { writer.WriteString ((formatType == DatasetExporter.ExportFormat.Csv) ? "," : " "); } } }
// Function : WriteStylesheet // Arguments : writer, sHeaders, sFileds, FormatType // Purpose : Creates XSLT file to apply on dataset's XML file internal static void CreateStylesheet (XmlTextWriter writer, string[] sHeaders, string[] sFileds, DatasetExporter.ExportFormat formatType) { ConstructXslSkeleton(writer); // xsl-template writer.WriteStartElement("xsl:template"); writer.WriteAttributeString("match", "/"); XslValueOfForHeaders (writer, sHeaders, sFileds, formatType); XslForEach(writer); XslValueOfForDataFields (writer, sFileds, formatType); FinalizeXslStylesheet(writer); }
public void ExportAsCSVNoEmptyLinesAndMetaData() { var reader = new CSVReader(Path.Combine(_inputFilePath)); _data.Sensors = reader.ReadSensors(); DatasetExporter.Export(_data, _outputFilePath, ExportFormat.CSV, false, true, false, ExportedPoints.AllPoints, DateColumnFormat.TwoDateColumn, loadInUnloadedValues: false); Assert.AreEqual(Tools.GenerateMD5HashFromFile(_outputFilePath), Tools.GenerateMD5HashFromFile(_inputFilePath)); }
public void ExportAsCSVEmptyLinesIncludedWithAverageEveryHour() { var reader = new CSVReader(Path.Combine(_inputFilePath)); _data.Sensors = reader.ReadSensors(); DatasetExporter.Export(_data, _outputFilePath, ExportFormat.CSV, true, false, false, ExportedPoints.HourlyPoints, DateColumnFormat.TwoDateColumn, loadInUnloadedValues: false); Assert.AreEqual(File.ReadLines(_outputFilePath).Count(), ((_data.ExpectedDataPointCount) / 4) + 1); }
public void ExportCSVWithIndividualDateColumns() { var dateTime = new DateTime(2011, 8, 4, 0, 0, 0); var givenDataSet = new Dataset(new Site(1, "Steven", "Kerry", Contact, Contact, new GPSCoords(0, 0))); var sampleData = new Dictionary <DateTime, float> { { dateTime.AddMinutes(15), 100 }, { dateTime.AddMinutes(30), 100 }, { dateTime.AddMinutes(45), 100 }, { dateTime.AddMinutes(60), 100 } }; var s = new Sensor("Awesome Sensor", "Awesome"); var ss = new SensorState(s, DateTime.Now, sampleData, null); s.AddState(ss); givenDataSet.AddSensor(s); DatasetExporter.Export(givenDataSet, _outputFilePath, ExportFormat.CSV, true, false, false, ExportedPoints.AllPoints, DateColumnFormat.SplitDateColumn, loadInUnloadedValues: false); Assert.AreEqual(DatasetOutputWithIndividualColumns, File.ReadAllText(_outputFilePath)); }
public void ExportsRawDataWhenRequested() { var reader = new CSVReader(_inputFilePath); _data.Sensors = reader.ReadSensors(); Assert.AreNotEqual(0, _data.Sensors[0].CurrentState.Values[new DateTime(2009, 1, 10, 7, 45, 0)]); // Make some changes to check the raw comes out var newState = _data.Sensors[0].CurrentState.Clone(); newState.Values[new DateTime(2009, 1, 10, 7, 45, 0)] = 0; _data.Sensors[0].AddState(newState); DatasetExporter.Export(_data, _outputFilePath, ExportFormat.CSV, true, false, false, ExportedPoints.AllPoints, DateColumnFormat.TwoDateColumn, true, loadInUnloadedValues: false); reader = new CSVReader(_outputFilePath + " Raw.csv"); _data.Sensors = reader.ReadSensors(); Assert.AreNotEqual(0, _data.Sensors[0].CurrentState.Values[new DateTime(2009, 1, 10, 7, 45, 0)]); }
public void btnExport() { var dialog = new SaveFileDialog(); dialog.Filter = ExportFormat.CSV.FilterText; if (dialog.ShowDialog() == DialogResult.OK) { try { DatasetExporter.Export(Dataset, dialog.FileName, ExportFormat.CSV, IncludeEmptyLines, IncludeMetaData, IncludeChangeLog, ExportedPoints, DateColumnFormat, ExportRawData, true, true); }catch (Exception e) { Common.ShowMessageBoxWithException("Failed to Export", "Sorry something went wrong with exporting", false, true, e); } this.TryClose(); } }
private static void ConstructXsltStylesheet (string[] sHeaders, string[] sFileds, DatasetExporter.ExportFormat FormatType, out MemoryStream memoryStream, out XmlTextWriter writer) { // XSLT to use for transforming this dataset. memoryStream = new MemoryStream(); writer = new XmlTextWriter (memoryStream, Encoding.UTF8); XslStylesheetConstructor.CreateStylesheet (writer, sHeaders, sFileds, FormatType); writer.Flush(); memoryStream.Seek (0, SeekOrigin.Begin); }
// Function : Export_with_XSLT_Windows // Arguments : dsExport, sHeaders, sFileds, FormatType, FileName // Purpose : Exports dataset into CSV / Excel format internal static void ExportWithXsltWindows (DataSet datasetToExport, string[] sHeaders, string[] sFileds, DatasetExporter.ExportFormat FormatType, string FileName) { try { MemoryStream memoryStream; XmlTextWriter writer; ConstructXsltStylesheet (sHeaders, sFileds, FormatType, out memoryStream, out writer); StringWriter sw = PerformXsltTransform (datasetToExport, memoryStream); PerformFileWrite (FileName, memoryStream, writer, sw); } catch (Exception Ex) { throw Ex; } }
// Function : Export_with_XSLT_Web // Arguments : dsExport, sHeaders, sFileds, FormatType, FileName // Purpose : Exports dataset into CSV / Excel format internal static void ExportWithXsltWeb (DataSet datasetToExport, string[] sHeaders, string[] sFileds, DatasetExporter.ExportFormat formatType, string fileName) { try { TextWriter textWriter = new StringWriter(); var response = new HttpResponse(textWriter); ConfigureHttpResponse (formatType, fileName, response); // XSLT to use for transforming this dataset. var stream = new MemoryStream(); var writer = new XmlTextWriter (stream, Encoding.UTF8); XslStylesheetConstructor.CreateStylesheet (writer, sHeaders, sFileds, formatType); writer.Flush(); var stringWriter = PerformXslTransform (datasetToExport, stream); PerformResponseWrite (writer, stream, response, stringWriter); } catch (ThreadAbortException Ex) { string errMsg = Ex.Message; } catch (Exception Ex) { throw Ex; } }
private static void ConfigureHttpResponse (DatasetExporter.ExportFormat formatType, string fileName, HttpResponse response) { // Appending Headers response.Clear(); response.Buffer = true; if (formatType == DatasetExporter.ExportFormat.Csv) { response.ContentType = "text/csv"; response.AppendHeader ("content-disposition", "attachment; filename=" + fileName); } else { response.ContentType = "application/vnd.ms-excel"; response.AppendHeader ("content-disposition", "attachment; filename=" + fileName); } }
private static void XslValueOfForHeaders (XmlWriter writer, IList<string> sHeaders, ICollection<string> sFileds, DatasetExporter.ExportFormat formatType) { // xsl:value-of for headers for (int i = 0; i < sHeaders.Count; i++) { writer.WriteString("\""); writer.WriteStartElement("xsl:value-of"); writer.WriteAttributeString("select", "'" + sHeaders[i] + "'"); writer.WriteEndElement(); // xsl:value-of writer.WriteString("\""); if (i != sFileds.Count - 1) writer.WriteString ((formatType == DatasetExporter.ExportFormat.Csv) ? "," : " "); } }