Cause: - ResultsWriter required a generic way to generate customer-specific XML result data from TBF measurement results. - The customer reference XML contains example runtime values and repeated result structures, so it cannot be used directly as the generated output. - TBF result variables must be explicitly mapped to destinations in the customer XML structure. - The generated XML result data must support two output targets: - direct creation of an XML file, - delivery of the XML payload to a Microsoft SQL stored procedure. - Preview generation must allow the XML structure and configured mappings to be verified without executing the production database write. - Increase revision to 3.9.3145.100. Solution: 1. Added XML reference analysis - Creates a clean base XML structure. - Extracts the repeating result prototype. - Prevents sample runtime values from the customer reference XML from leaking into generated results. 2. Added configurable TBF-to-XML result mapping - Allows explicit mapping of TBF result variables to customer XML destinations. - Supports one-time and repeating XML destinations. - Keeps the mapping independent of the semantic meaning of customer XML attribute names. 3. Added XML destination viewer and configurator - Shows the current mapping. - Highlights repeating destinations. - Identifies already used one-time destinations. 4. Added runtime XML result generation - Uses the configured TBF-to-XML mappings. - Uses measurement procedure result data. - Builds the output from the clean base XML and repeating XML prototype. - Generates repeated result records according to the executed measurement procedure. 5. Added simulation-based Preview request - Generates a complete XML payload using simulation values. - Allows XML structure and mapping verification before production execution. - Does not execute the production stored procedure. 6. Added direct XML file output support to UniDataStorageWriter - Supports File / .xml as a physical output target. - Creates the generated XML result file in the configured output directory. 7. Added Microsoft SQL stored-procedure XML output - Supports Microsoft SQL / StoredProcedure as a physical output target. - Passes the generated XML payload through the configured stored procedure parameter. 8. Added optional XML payload archiving - Allows generated XML payloads to be stored in the configured Payload archive. - Can be used together with the Microsoft SQL stored-procedure output. 9. Kept ResultsWriter independent of the physical output target - ResultsWriter generates the result payload. - UniDataStorageWriter decides how and where the payload is physically written. - The same ResultsWriter XML generation mechanism is therefore used for both XML file and MSSQL outputs. 10. Increased revision - Updated revision to 3.9.3145.100.
259 lines
12 KiB
C#
259 lines
12 KiB
C#
///
|
|
/// Copyright (c) 2026 Sensus Slovensko a.s.
|
|
///
|
|
|
|
namespace TBF.Rig.Output.DataStorage.UniDataStorageWriter.UI
|
|
{
|
|
partial class XmlPayloadViewerDlg
|
|
{
|
|
private System.ComponentModel.IContainer components = null;
|
|
|
|
protected override void Dispose(
|
|
bool disposing)
|
|
{
|
|
if (disposing &&
|
|
components != null)
|
|
{
|
|
components.Dispose();
|
|
}
|
|
|
|
base.Dispose(
|
|
disposing);
|
|
}
|
|
|
|
private void InitializeComponent()
|
|
{
|
|
this.parameterLabel = new System.Windows.Forms.Label();
|
|
this.parameterNameTextBox = new System.Windows.Forms.TextBox();
|
|
this.tabControl = new System.Windows.Forms.TabControl();
|
|
this.structureTabPage = new System.Windows.Forms.TabPage();
|
|
this.structureTreeView = new System.Windows.Forms.TreeView();
|
|
this.rawXmlTabPage = new System.Windows.Forms.TabPage();
|
|
this.rawXmlTextBox = new System.Windows.Forms.TextBox();
|
|
this.statusLabel = new System.Windows.Forms.Label();
|
|
this.expandAllButton = new System.Windows.Forms.Button();
|
|
this.collapseAllButton = new System.Windows.Forms.Button();
|
|
this.copyXmlButton = new System.Windows.Forms.Button();
|
|
this.closeButton = new System.Windows.Forms.Button();
|
|
this.tabControl.SuspendLayout();
|
|
this.structureTabPage.SuspendLayout();
|
|
this.rawXmlTabPage.SuspendLayout();
|
|
this.SuspendLayout();
|
|
|
|
//
|
|
// parameterLabel
|
|
//
|
|
this.parameterLabel.AutoSize = true;
|
|
this.parameterLabel.Location = new System.Drawing.Point(12, 15);
|
|
this.parameterLabel.Name = "parameterLabel";
|
|
this.parameterLabel.Size = new System.Drawing.Size(61, 13);
|
|
this.parameterLabel.TabIndex = 0;
|
|
this.parameterLabel.Text = "Parameter:";
|
|
|
|
//
|
|
// parameterNameTextBox
|
|
//
|
|
this.parameterNameTextBox.Anchor =
|
|
((System.Windows.Forms.AnchorStyles)
|
|
(((System.Windows.Forms.AnchorStyles.Top |
|
|
System.Windows.Forms.AnchorStyles.Left) |
|
|
System.Windows.Forms.AnchorStyles.Right)));
|
|
this.parameterNameTextBox.Location = new System.Drawing.Point(79, 12);
|
|
this.parameterNameTextBox.Name = "parameterNameTextBox";
|
|
this.parameterNameTextBox.ReadOnly = true;
|
|
this.parameterNameTextBox.Size = new System.Drawing.Size(809, 20);
|
|
this.parameterNameTextBox.TabIndex = 1;
|
|
|
|
//
|
|
// tabControl
|
|
//
|
|
this.tabControl.Anchor =
|
|
((System.Windows.Forms.AnchorStyles)
|
|
((((System.Windows.Forms.AnchorStyles.Top |
|
|
System.Windows.Forms.AnchorStyles.Bottom) |
|
|
System.Windows.Forms.AnchorStyles.Left) |
|
|
System.Windows.Forms.AnchorStyles.Right)));
|
|
this.tabControl.Controls.Add(this.structureTabPage);
|
|
this.tabControl.Controls.Add(this.rawXmlTabPage);
|
|
this.tabControl.Location = new System.Drawing.Point(12, 42);
|
|
this.tabControl.Name = "tabControl";
|
|
this.tabControl.SelectedIndex = 0;
|
|
this.tabControl.Size = new System.Drawing.Size(876, 520);
|
|
this.tabControl.TabIndex = 2;
|
|
|
|
//
|
|
// structureTabPage
|
|
//
|
|
this.structureTabPage.Controls.Add(this.structureTreeView);
|
|
this.structureTabPage.Location = new System.Drawing.Point(4, 22);
|
|
this.structureTabPage.Name = "structureTabPage";
|
|
this.structureTabPage.Padding = new System.Windows.Forms.Padding(3);
|
|
this.structureTabPage.Size = new System.Drawing.Size(868, 494);
|
|
this.structureTabPage.TabIndex = 0;
|
|
this.structureTabPage.Text = "Structure";
|
|
this.structureTabPage.UseVisualStyleBackColor = true;
|
|
|
|
//
|
|
// structureTreeView
|
|
//
|
|
this.structureTreeView.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
this.structureTreeView.FullRowSelect = true;
|
|
this.structureTreeView.HideSelection = false;
|
|
this.structureTreeView.Location = new System.Drawing.Point(3, 3);
|
|
this.structureTreeView.Name = "structureTreeView";
|
|
this.structureTreeView.ShowNodeToolTips = true;
|
|
this.structureTreeView.Size = new System.Drawing.Size(862, 488);
|
|
this.structureTreeView.TabIndex = 0;
|
|
|
|
//
|
|
// rawXmlTabPage
|
|
//
|
|
this.rawXmlTabPage.Controls.Add(this.rawXmlTextBox);
|
|
this.rawXmlTabPage.Location = new System.Drawing.Point(4, 22);
|
|
this.rawXmlTabPage.Name = "rawXmlTabPage";
|
|
this.rawXmlTabPage.Padding = new System.Windows.Forms.Padding(3);
|
|
this.rawXmlTabPage.Size = new System.Drawing.Size(868, 494);
|
|
this.rawXmlTabPage.TabIndex = 1;
|
|
this.rawXmlTabPage.Text = "Raw XML";
|
|
this.rawXmlTabPage.UseVisualStyleBackColor = true;
|
|
|
|
//
|
|
// rawXmlTextBox
|
|
//
|
|
this.rawXmlTextBox.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
this.rawXmlTextBox.Font = new System.Drawing.Font(
|
|
"Consolas",
|
|
9F,
|
|
System.Drawing.FontStyle.Regular,
|
|
System.Drawing.GraphicsUnit.Point,
|
|
((byte)(238)));
|
|
this.rawXmlTextBox.Location = new System.Drawing.Point(3, 3);
|
|
this.rawXmlTextBox.Multiline = true;
|
|
this.rawXmlTextBox.Name = "rawXmlTextBox";
|
|
this.rawXmlTextBox.ReadOnly = true;
|
|
this.rawXmlTextBox.ScrollBars = System.Windows.Forms.ScrollBars.Both;
|
|
this.rawXmlTextBox.Size = new System.Drawing.Size(862, 488);
|
|
this.rawXmlTextBox.TabIndex = 0;
|
|
this.rawXmlTextBox.WordWrap = false;
|
|
|
|
//
|
|
// statusLabel
|
|
//
|
|
this.statusLabel.Anchor =
|
|
((System.Windows.Forms.AnchorStyles)
|
|
((System.Windows.Forms.AnchorStyles.Bottom |
|
|
System.Windows.Forms.AnchorStyles.Left)));
|
|
this.statusLabel.AutoSize = true;
|
|
this.statusLabel.Location = new System.Drawing.Point(12, 579);
|
|
this.statusLabel.Name = "statusLabel";
|
|
this.statusLabel.Size = new System.Drawing.Size(0, 13);
|
|
this.statusLabel.TabIndex = 3;
|
|
|
|
//
|
|
// expandAllButton
|
|
//
|
|
this.expandAllButton.Anchor =
|
|
((System.Windows.Forms.AnchorStyles)
|
|
((System.Windows.Forms.AnchorStyles.Bottom |
|
|
System.Windows.Forms.AnchorStyles.Left)));
|
|
this.expandAllButton.Location = new System.Drawing.Point(12, 608);
|
|
this.expandAllButton.Name = "expandAllButton";
|
|
this.expandAllButton.Size = new System.Drawing.Size(95, 30);
|
|
this.expandAllButton.TabIndex = 4;
|
|
this.expandAllButton.Text = "Expand all";
|
|
this.expandAllButton.UseVisualStyleBackColor = true;
|
|
this.expandAllButton.Click +=
|
|
new System.EventHandler(this.expandAllButton_Click);
|
|
|
|
//
|
|
// collapseAllButton
|
|
//
|
|
this.collapseAllButton.Anchor =
|
|
((System.Windows.Forms.AnchorStyles)
|
|
((System.Windows.Forms.AnchorStyles.Bottom |
|
|
System.Windows.Forms.AnchorStyles.Left)));
|
|
this.collapseAllButton.Location = new System.Drawing.Point(113, 608);
|
|
this.collapseAllButton.Name = "collapseAllButton";
|
|
this.collapseAllButton.Size = new System.Drawing.Size(95, 30);
|
|
this.collapseAllButton.TabIndex = 5;
|
|
this.collapseAllButton.Text = "Collapse all";
|
|
this.collapseAllButton.UseVisualStyleBackColor = true;
|
|
this.collapseAllButton.Click +=
|
|
new System.EventHandler(this.collapseAllButton_Click);
|
|
|
|
//
|
|
// copyXmlButton
|
|
//
|
|
this.copyXmlButton.Anchor =
|
|
((System.Windows.Forms.AnchorStyles)
|
|
((System.Windows.Forms.AnchorStyles.Bottom |
|
|
System.Windows.Forms.AnchorStyles.Right)));
|
|
this.copyXmlButton.Location = new System.Drawing.Point(682, 608);
|
|
this.copyXmlButton.Name = "copyXmlButton";
|
|
this.copyXmlButton.Size = new System.Drawing.Size(95, 30);
|
|
this.copyXmlButton.TabIndex = 6;
|
|
this.copyXmlButton.Text = "Copy XML";
|
|
this.copyXmlButton.UseVisualStyleBackColor = true;
|
|
this.copyXmlButton.Click +=
|
|
new System.EventHandler(this.copyXmlButton_Click);
|
|
|
|
//
|
|
// closeButton
|
|
//
|
|
this.closeButton.Anchor =
|
|
((System.Windows.Forms.AnchorStyles)
|
|
((System.Windows.Forms.AnchorStyles.Bottom |
|
|
System.Windows.Forms.AnchorStyles.Right)));
|
|
this.closeButton.DialogResult = System.Windows.Forms.DialogResult.OK;
|
|
this.closeButton.Location = new System.Drawing.Point(793, 608);
|
|
this.closeButton.Name = "closeButton";
|
|
this.closeButton.Size = new System.Drawing.Size(95, 30);
|
|
this.closeButton.TabIndex = 7;
|
|
this.closeButton.Text = "Close";
|
|
this.closeButton.UseVisualStyleBackColor = true;
|
|
this.closeButton.Click +=
|
|
new System.EventHandler(this.closeButton_Click);
|
|
|
|
//
|
|
// XmlPayloadViewerDlg
|
|
//
|
|
this.AcceptButton = this.closeButton;
|
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
|
this.ClientSize = new System.Drawing.Size(900, 650);
|
|
this.Controls.Add(this.closeButton);
|
|
this.Controls.Add(this.copyXmlButton);
|
|
this.Controls.Add(this.collapseAllButton);
|
|
this.Controls.Add(this.expandAllButton);
|
|
this.Controls.Add(this.statusLabel);
|
|
this.Controls.Add(this.tabControl);
|
|
this.Controls.Add(this.parameterNameTextBox);
|
|
this.Controls.Add(this.parameterLabel);
|
|
this.MinimumSize = new System.Drawing.Size(650, 450);
|
|
this.Name = "XmlPayloadViewerDlg";
|
|
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
|
this.Text = "XML payload viewer";
|
|
this.Load +=
|
|
new System.EventHandler(this.XmlPayloadViewerDlg_Load);
|
|
this.tabControl.ResumeLayout(false);
|
|
this.structureTabPage.ResumeLayout(false);
|
|
this.rawXmlTabPage.ResumeLayout(false);
|
|
this.rawXmlTabPage.PerformLayout();
|
|
this.ResumeLayout(false);
|
|
this.PerformLayout();
|
|
}
|
|
|
|
private System.Windows.Forms.Label parameterLabel;
|
|
private System.Windows.Forms.TextBox parameterNameTextBox;
|
|
private System.Windows.Forms.TabControl tabControl;
|
|
private System.Windows.Forms.TabPage structureTabPage;
|
|
private System.Windows.Forms.TreeView structureTreeView;
|
|
private System.Windows.Forms.TabPage rawXmlTabPage;
|
|
private System.Windows.Forms.TextBox rawXmlTextBox;
|
|
private System.Windows.Forms.Label statusLabel;
|
|
private System.Windows.Forms.Button expandAllButton;
|
|
private System.Windows.Forms.Button collapseAllButton;
|
|
private System.Windows.Forms.Button copyXmlButton;
|
|
private System.Windows.Forms.Button closeButton;
|
|
}
|
|
} |