Prepare Data History Provider 2.7 integration update

- modularize Citrix and agent integrations and add remote desktop endpoints
- extend ticket overview, ticket links, token validation, and staged relation handling
- update configuration, licensing, project, signing, and publish artifacts
This commit is contained in:
Meik
2026-07-20 09:31:52 +02:00
parent a3357e2a36
commit ccc48c521a
62 changed files with 5267 additions and 2521 deletions

View File

@@ -128,6 +128,8 @@ namespace C4IT.DataHistoryProvider
RetVal |= DoXmlInsertTableRow(XmlRoot, "AD-ComputerInfo", "ad-computer", "<Table-Column Name=\"domainDns\" SourceType =\"Static\" Type=\"string\" Cardinal=\"128\"/>", "account");
RetVal |= DoXmlInsertTableRow(XmlRoot, "AD-ComputerInfo", "ad-computer", "<Table-Column Name=\"domainNB\" SourceType =\"Static\" Type=\"string\" Cardinal=\"16\"/>", "account");
RetVal |= DoXmlInsertTableRow(XmlRoot, "Agent-DeviceInfo", "agnt-computer", "<Table-Column Name=\"IsPhoenixInstalled\" SourceName=\"Phoenix Installed\" Type=\"boolean\" Aggregation=\"latestValue\"/>");
RetVal |= DoXmlInsertTableRow(XmlRoot, "Agent-DeviceInfo", "agnt-computer-event-numerical", "<Table-Column Name=\"DeviceActivity\" SourceName=\"Device Activity\" Type=\"bigint\" Aggregation=\"sum\"/>");
RetVal |= DoXmlInsertTableRow(XmlRoot, "Agent-DeviceInfo", "agnt-computer-event-numerical", "<Table-Column Name=\"UserActivity\" SourceName=\"User Activity\" Type=\"bigint\" Aggregation=\"sum\"/>");
RetVal |= DoXmlInsertTableRow(XmlRoot, "Agent-DeviceInfo", "agnt-computer-event-numerical", "<Table-Column Name=\"ProcessorTaskManager\" SourceName=\"Task Manager % Score\" Type=\"float\" Aggregation=\"average\" LateDelivery=\"true\" />");
@@ -248,6 +250,11 @@ namespace C4IT.DataHistoryProvider
, "<Table Name=\"citrix-session-metrics\" Type=\"History\" Key=\"Id\"><Table-Columns><Table-Column Name=\"Id\" Type=\"int\"/><Table-Column Name=\"CollectedDate\" Type=\"datetime\"/><Table-Column Name=\"IcaRttMS\" Type=\"int\" Aggregation=\"average\"/><Table-Column Name=\"IcaLatency\" Type=\"int\" Aggregation=\"average\"/><Table-Column Name=\"ClientL7Latency\" Type=\"int\" Aggregation=\"average\"/><Table-Column Name=\"ServerL7Latency\" Type=\"int\" Aggregation=\"average\"/><Table-Column Name=\"ConnectionState\" Type=\"int\" Aggregation=\"average\"/><Table-Column Name=\"InputBandwidthUsed\" Type=\"int\" Aggregation=\"average\"/><Table-Column Name=\"OutputBandwidthUsed\" Type=\"int\" Aggregation=\"average\"/><Table-Column Name=\"OutputBandwidthAvailable\" Type=\"int\" Aggregation=\"average\"/><Table-Column Name=\"Fps\" Type=\"int\" Aggregation=\"average\"/><Table-Column Name=\"InputFps\" Type=\"int\" Aggregation=\"average\"/><Table-Column Name=\"OutputFps\" Type=\"int\" Aggregation=\"average\"/><Table-Column Name=\"WanLatency\" Type=\"int\" Aggregation=\"average\"/><Table-Column Name=\"DcLatency\" Type=\"int\" Aggregation=\"average\"/></Table-Columns></Table>"
);
RetVal |= DoXmlInsertElement(XmlRoot
, "DataCluster[@Name='citrixMetrics']"
, "Table[@Name='citrix-connectionState-metrics']"
, "<Table Name=\"citrix-connectionState-metrics\" Type=\"History\" Key=\"Id\"><Table-Columns><Table-Column Name=\"Id\" Type=\"int\" /><Table-Column Name=\"StartDate\" Type=\"datetime\" /><Table-Column Name=\"ConnectionState\" Type=\"int\" /><Table-Column Name=\"ConnectionCount\" Type=\"int\" /></Table-Columns></Table>");
RetVal |= DoXmlInsertElement(XmlRoot
, "DataCluster[@Name='citrixMetrics']"
, "Table[@Name='citrix-session-details-icaRttMS']"
@@ -277,6 +284,10 @@ namespace C4IT.DataHistoryProvider
, "Table[@Name='citrix-session-details-inputBandwidthUsed']"
, "<Table Name=\"citrix-session-details-inputBandwidthUsed\" Type=\"Events\" Key=\"Id\" EventTimeCol=\"time\"><Table-Columns><Table-Column Name=\"Id\" Type=\"int\"/><Table-Column Name=\"Value\" SourceName=\"InputBandwidthUsed\" Type=\"int\"/><Table-Column Name=\"time\" SourceName=\"CollectedDate\" Type=\"datetime\"/></Table-Columns></Table>"
);
RetVal |= DoXmlInsertElement(XmlRoot
, "DataCluster[@Name='citrixMetrics']"
, "Table[@Name='citrix-session-details-outputBandwidthUsed']"
, "<Table Name=\"citrix-session-details-outputBandwidthUsed\" Type=\"Events\" Key=\"Id\" EventTimeCol=\"time\"><Table-Columns><Table-Column Name=\"Id\" Type=\"int\" /><Table-Column Name=\"Value\" SourceName=\"OutputBandwidthUsed\" Type=\"int\" /><Table-Column Name=\"time\" SourceName=\"CollectedDate\" Type=\"datetime\" /></Table-Columns></Table>");
RetVal |= DoXmlInsertElement(XmlRoot
, "DataCluster[@Name='citrixMetrics']"
@@ -317,8 +328,7 @@ namespace C4IT.DataHistoryProvider
RetVal |= DoXmlInsertElement(XmlRoot
, "DataCluster[@Name='citrixMetrics']"
, "Table[@Name='citrix-session-machine']"
, "<Table Name=\"citrix-session-machine\" Type=\"Static\" Key=\"Id\"><Table-Columns><Table-Column Name=\"Id\" Type=\"guid\"/><Table-Column Name=\"Name\" Type=\"string\"/><Table-Column Name=\"CatalogName\" SourceName=\"Catalog\" SourceJsonField=\"Name\" Type=\"string\" Default=\"0\"/><Table-Column Name=\"AllocationType\" SourceName=\"Catalog\" SourceJsonField=\"AllocationType\" Type=\"int\" Default=\"0\"/><Table-Column Name=\"DesktopGroupName\" SourceName=\"DesktopGroup\" SourceJsonField=\"Name\" Type=\"string\"/><Table-Column Name=\"DnsName\" Type=\"string\"/><Table-Column Name=\"HostedMachine\" SourceName=\"HostedMachineId\" Type=\"string\"/><Table-Column Name=\"IPAddress\" Type=\"string\"/><Table-Column Name=\"WindowsConnectionSetting\" Type=\"int\" Default=\"0\"/><Table-Column Name=\"CurrentRegistrationState\" Type=\"int\" Default=\"0\"/><Table-Column Name=\"AgentVersion\" Type=\"string\"/><Table-Column Name=\"CurrentSessionCount\" Type=\"int\"/><Table-Column Name=\"OSType\" Type=\"string\"/><Table-Column Name=\"IsInMaintenanceMode\" Type=\"boolean\"/><Table-Column Name=\"Cpu\" SourceName=\"CurrentLoadIndex\" SourceJsonField=\"Cpu\" Type=\"int\" Default=\"0\"/><Table-Column Name=\"Memory\" SourceName=\"CurrentLoadIndex\" SourceJsonField=\"Memory\" Type=\"int\" Default=\"0\"/><Table-Column Name=\"Disk\" SourceName=\"CurrentLoadIndex\" SourceJsonField=\"Disk\" Type=\"int\" Default=\"0\"/></Table-Columns></Table>"
);
, "<Table Name=\"citrix-session-machine\" Type=\"Static\" Key=\"Id\"><Table-Columns><Table-Column Name=\"Id\" Type=\"guid\" /><Table-Column Name=\"Name\" Type=\"string\" /><Table-Column Name=\"CatalogName\" SourceName=\"Catalog\" SourceJsonField=\"Name\" Type=\"string\" Default=\"0\" /><Table-Column Name=\"AllocationType\" SourceName=\"Catalog\" SourceJsonField=\"AllocationType\" Type=\"int\" Default=\"0\" /><Table-Column Name=\"DesktopGroupName\" SourceName=\"DesktopGroup\" SourceJsonField=\"Name\" Type=\"string\" /><Table-Column Name=\"DnsName\" Type=\"string\" /><Table-Column Name=\"HostedMachine\" SourceName=\"HostedMachineId\" Type=\"string\" /><Table-Column Name=\"IPAddress\" Type=\"string\" /><Table-Column Name=\"WindowsConnectionSetting\" Type=\"int\" Default=\"0\" /><Table-Column Name=\"CurrentRegistrationState\" Type=\"int\" Default=\"0\" /><Table-Column Name=\"AgentVersion\" Type=\"string\" /><Table-Column Name=\"CurrentSessionCount\" Type=\"int\" /><Table-Column Name=\"OSType\" Type=\"string\" /><Table-Column Name=\"IsInMaintenanceMode\" Type=\"boolean\" /><Table-Column Name=\"Cpu\" SourceName=\"CurrentLoadIndex\" SourceJsonField=\"Cpu\" Type=\"int\" Default=\"0\" /><Table-Column Name=\"Memory\" SourceName=\"CurrentLoadIndex\" SourceJsonField=\"Memory\" Type=\"int\" Default=\"0\" /><Table-Column Name=\"Disk\" SourceName=\"CurrentLoadIndex\" SourceJsonField=\"Disk\" Type=\"int\" Default=\"0\" /></Table-Columns></Table>");
RetVal |= DoXmlInsertElement(XmlRoot
, "DataCluster[@Name='citrixMetrics']"
@@ -378,19 +388,19 @@ namespace C4IT.DataHistoryProvider
, "Table[@Name='M42Wpm-Ticket-Services']"
);
RetVal |= DoXmlInsertElement(XmlRoot
, "DataCluster[@Name='M42Tickets']"
, "Table[@Name='M42Wpm-Ticket-QuickCalls']"
, "<Table Name=\"M42Wpm-Ticket-QuickCalls\" Type=\"Selection\" Key=\"id\"><Matrix42-DataQueryItems-Template EntityClassName=\"SPSQuickCallClassBase\" EntityTypeNames=\"SPSQuickCallType\" OrderBy=\"\" WhereExpression=\"Restricted = 0\" DataQueryName=\"C4IT - F4SD - Quick Calls\"/><Table-Columns><Table-Column Name=\"id\" SourceName=\"Id\" Type=\"guid\"/><Table-Column Name=\"SysObjectId\" SourceName=\"Sys-ObjectId\" Type=\"guid\"/><Table-Column Name=\"SysName\" SourceName=\"Sys-Name\" Type=\"string\" Cardinal=\"50\"/><Table-Column Name=\"Name\" Type=\"string\" Cardinal=\"300\"/><Table-Column Name=\"Subject\" Type=\"string\" Cardinal=\"1024\"/><Table-Column Name=\"Priority\" Type=\"string\" Cardinal=\"100\"/><Table-Column Name=\"Responsible\" Type=\"string\" Cardinal=\"300\"/><Table-Column Name=\"ResponsibleRole\" Type=\"string\" Cardinal=\"300\"/><Table-Column Name=\"Category\" SourceName=\"Category_Value\" Type=\"guid\"/></Table-Columns></Table>"
, "Table[@Name='M42Wpm-Ticket-Assets']"
);
RetVal |= DoXmlInsertElement(XmlRoot
, "DataCluster[@Name='M42Tickets']"
, "Table[@Name='M42Wpm-Ticket-QuickCalls']"
, "<Table Name=\"M42Wpm-Ticket-QuickCalls\" Type=\"Selection\" Key=\"id\"><Matrix42-DataQueryItems-Template EntityClassName=\"SPSQuickCallClassBase\" EntityTypeNames=\"SPSQuickCallType\" OrderBy=\"\" WhereExpression=\"Restricted = 0\" DataQueryName=\"C4IT - F4SD - Quick Calls\"/><Table-Columns><Table-Column Name=\"id\" SourceName=\"Id\" Type=\"guid\"/><Table-Column Name=\"SysObjectId\" SourceName=\"Sys-ObjectId\" Type=\"guid\"/><Table-Column Name=\"SysName\" SourceName=\"Sys-Name\" Type=\"string\" Cardinal=\"50\"/><Table-Column Name=\"Name\" Type=\"string\" Cardinal=\"300\"/><Table-Column Name=\"Subject\" Type=\"string\" Cardinal=\"1024\"/><Table-Column Name=\"Priority\" Type=\"string\" Cardinal=\"100\"/><Table-Column Name=\"Responsible\" Type=\"string\" Cardinal=\"300\"/><Table-Column Name=\"ResponsibleRole\" Type=\"string\" Cardinal=\"300\"/><Table-Column Name=\"Category\" SourceName=\"Category_Value\" Type=\"guid\"/></Table-Columns></Table>"
, "Table[@Name='M42Wpm-Ticket-Assets']"
);
RetVal |= DoXmlInsertElement(XmlRoot
, "DataCluster[@Name='M42Tickets']"
, "Table[@Name='M42Wpm-Ticket-Categories']"
, "<Table Name=\"M42Wpm-Ticket-Categories\" Type=\"Selection\" Key=\"id\"><Matrix42-DataQueryItems-Template EntityClassName=\"SPSScCategoryClassBase\" EntityTypeNames=\"SPSScCategoryType\" OrderBy=\"\" WhereExpression=\"Hidden = 0\"/><Table-Columns><Table-Column Name=\"id\" SourceName=\"Id\" Type=\"guid\"/><Table-Column Name=\"SysObjectId\" SourceName=\"Sys-ObjectId\" Type=\"guid\"/><Table-Column Name=\"SysName\" SourceName=\"Sys-Name\" Type=\"string\" Cardinal=\"50\"/><Table-Column Name=\"Name\" Type=\"string\" Cardinal=\"300\"/><Table-Column Name=\"parentValue\" SourceName=\"Parent_Value\" Type=\"guid\"/><Table-Column Name=\"parent\" SourceName=\"Parent\" Type=\"string\" Cardinal=\"300\"/></Table-Columns></Table>"
, "Table[@Name='M42Wpm-Ticket-QuickCalls']"
);
RetVal |= DoXmlInsertElement(XmlRoot
, "DataCluster[@Name='M42Tickets']"
, "Table[@Name='M42Wpm-Ticket-Categories']"
, "<Table Name=\"M42Wpm-Ticket-Categories\" Type=\"Selection\" Key=\"id\"><Matrix42-DataQueryItems-Template EntityClassName=\"SPSScCategoryClassBase\" EntityTypeNames=\"SPSScCategoryType\" OrderBy=\"\" WhereExpression=\"Hidden = 0\"/><Table-Columns><Table-Column Name=\"id\" SourceName=\"Id\" Type=\"guid\"/><Table-Column Name=\"SysObjectId\" SourceName=\"Sys-ObjectId\" Type=\"guid\"/><Table-Column Name=\"SysName\" SourceName=\"Sys-Name\" Type=\"string\" Cardinal=\"50\"/><Table-Column Name=\"Name\" Type=\"string\" Cardinal=\"300\"/><Table-Column Name=\"parentValue\" SourceName=\"Parent_Value\" Type=\"guid\"/><Table-Column Name=\"parent\" SourceName=\"Parent\" Type=\"string\" Cardinal=\"300\"/></Table-Columns></Table>"
, "Table[@Name='M42Wpm-Ticket-QuickCalls']"
);
RetVal |= DoXmlInsertElement(XmlRoot
, "DataCluster[@Name='M42Tickets']"
@@ -493,83 +503,96 @@ namespace C4IT.DataHistoryProvider
}
// update table 'M42Wpm-Tickets' columns
RetVal |= DoXmlInsertTableRow(XmlRoot, "M42Tickets", "M42Wpm-Tickets", "<Table-Column Name=\"Urgency\" Type=\"string\" Cardinal=\"64\"/>", "AffectedUser");
RetVal |= DoXmlInsertTableRow(XmlRoot, "M42Tickets", "M42Wpm-Tickets", "<Table-Column Name=\"UrgencyId\" Type=\"int\"/>", "Urgency");
RetVal |= DoXmlInsertTableRow(XmlRoot, "M42Tickets", "M42Wpm-Tickets", "<Table-Column Name=\"Impact\" Type=\"string\" Cardinal=\"64\"/>", "UrgencyId");
RetVal |= DoXmlInsertTableRow(XmlRoot, "M42Tickets", "M42Wpm-Tickets", "<Table-Column Name=\"ImpactId\" Type=\"int\"/>", "Impact");
RetVal |= DoXmlInsertTableRow(XmlRoot, "M42Tickets", "M42Wpm-Ticket-QuickCalls", "<Table-Column Name=\"Category\" SourceName=\"Category_Value\" Type=\"guid\" />", "ResponsibleRole");
var quickCallsCategoryColumn = XmlRoot.SelectSingleNode("DataCluster[@Name='M42Tickets']/Table[@Name='M42Wpm-Ticket-QuickCalls']/Table-Columns/Table-Column[@Name='Category']") as XmlElement;
if (quickCallsCategoryColumn != null)
{
if (!string.Equals(quickCallsCategoryColumn.GetAttribute("SourceName"), "Category_Value", StringComparison.OrdinalIgnoreCase))
{
quickCallsCategoryColumn.SetAttribute("SourceName", "Category_Value");
RetVal = true;
}
if (!string.Equals(quickCallsCategoryColumn.GetAttribute("Type"), "guid", StringComparison.OrdinalIgnoreCase))
{
quickCallsCategoryColumn.SetAttribute("Type", "guid");
RetVal = true;
}
}
var quickCallsTemplate = XmlRoot.SelectSingleNode("DataCluster[@Name='M42Tickets']/Table[@Name='M42Wpm-Ticket-QuickCalls']/Matrix42-DataQueryItems-Template") as XmlElement;
if (quickCallsTemplate != null)
{
if (!string.Equals(quickCallsTemplate.GetAttribute("DataQueryName"), "C4IT - F4SD - Quick Calls", StringComparison.OrdinalIgnoreCase))
{
quickCallsTemplate.SetAttribute("DataQueryName", "C4IT - F4SD - Quick Calls");
RetVal = true;
}
}
var categoriesColumns = XmlRoot.SelectSingleNode("DataCluster[@Name='M42Tickets']/Table[@Name='M42Wpm-Ticket-Categories']/Table-Columns") as XmlElement;
if (categoriesColumns != null)
{
RetVal |= DoXmlInsertTableRow(XmlRoot, "M42Tickets", "M42Wpm-Ticket-Categories", "<Table-Column Name=\"parentValue\" SourceName=\"Parent_Value\" Type=\"guid\" />", "Name");
RetVal |= DoXmlInsertTableRow(XmlRoot, "M42Tickets", "M42Wpm-Ticket-Categories", "<Table-Column Name=\"parent\" SourceName=\"Parent\" Type=\"string\" Cardinal=\"300\" />", "parentValue");
var parentValueColumn = categoriesColumns.SelectSingleNode("Table-Column[@Name='parentValue']") as XmlElement;
if (parentValueColumn != null)
{
if (!string.Equals(parentValueColumn.GetAttribute("SourceName"), "Parent_Value", StringComparison.OrdinalIgnoreCase))
{
parentValueColumn.SetAttribute("SourceName", "Parent_Value");
RetVal = true;
}
if (!string.Equals(parentValueColumn.GetAttribute("Type"), "guid", StringComparison.OrdinalIgnoreCase))
{
parentValueColumn.SetAttribute("Type", "guid");
RetVal = true;
}
}
var parentColumn = categoriesColumns.SelectSingleNode("Table-Column[@Name='parent']") as XmlElement;
if (parentColumn != null)
{
if (!string.Equals(parentColumn.GetAttribute("SourceName"), "Parent", StringComparison.OrdinalIgnoreCase))
{
parentColumn.SetAttribute("SourceName", "Parent");
RetVal = true;
}
if (!string.Equals(parentColumn.GetAttribute("Type"), "string", StringComparison.OrdinalIgnoreCase))
{
parentColumn.SetAttribute("Type", "string");
RetVal = true;
}
if (!string.Equals(parentColumn.GetAttribute("Cardinal"), "300", StringComparison.OrdinalIgnoreCase))
{
parentColumn.SetAttribute("Cardinal", "300");
RetVal = true;
}
}
}
RetVal |= DoXmlInsertTableRow(XmlRoot, "M42Tickets", "M42Wpm-Tickets", "<Table-Column Name=\"Urgency\" Type=\"string\" Cardinal=\"64\"/>", "AffectedUser");
RetVal |= DoXmlInsertTableRow(XmlRoot, "M42Tickets", "M42Wpm-Tickets", "<Table-Column Name=\"UrgencyId\" Type=\"int\"/>", "Urgency");
RetVal |= DoXmlInsertTableRow(XmlRoot, "M42Tickets", "M42Wpm-Tickets", "<Table-Column Name=\"Impact\" Type=\"string\" Cardinal=\"64\"/>", "UrgencyId");
RetVal |= DoXmlInsertTableRow(XmlRoot, "M42Tickets", "M42Wpm-Tickets", "<Table-Column Name=\"ImpactId\" Type=\"int\"/>", "Impact");
RetVal |= DoXmlInsertTableRow(XmlRoot, "M42Tickets", "M42Wpm-Ticket-QuickCalls", "<Table-Column Name=\"Category\" SourceName=\"Category_Value\" Type=\"guid\" />", "ResponsibleRole");
var quickCallsCategoryColumn = XmlRoot.SelectSingleNode("DataCluster[@Name='M42Tickets']/Table[@Name='M42Wpm-Ticket-QuickCalls']/Table-Columns/Table-Column[@Name='Category']") as XmlElement;
if (quickCallsCategoryColumn != null)
{
if (!string.Equals(quickCallsCategoryColumn.GetAttribute("SourceName"), "Category_Value", StringComparison.OrdinalIgnoreCase))
{
quickCallsCategoryColumn.SetAttribute("SourceName", "Category_Value");
RetVal = true;
}
if (!string.Equals(quickCallsCategoryColumn.GetAttribute("Type"), "guid", StringComparison.OrdinalIgnoreCase))
{
quickCallsCategoryColumn.SetAttribute("Type", "guid");
RetVal = true;
}
}
var quickCallsTemplate = XmlRoot.SelectSingleNode("DataCluster[@Name='M42Tickets']/Table[@Name='M42Wpm-Ticket-QuickCalls']/Matrix42-DataQueryItems-Template") as XmlElement;
if (quickCallsTemplate != null)
{
if (!string.Equals(quickCallsTemplate.GetAttribute("DataQueryName"), "C4IT - F4SD - Quick Calls", StringComparison.OrdinalIgnoreCase))
{
quickCallsTemplate.SetAttribute("DataQueryName", "C4IT - F4SD - Quick Calls");
RetVal = true;
}
}
var categoriesColumns = XmlRoot.SelectSingleNode("DataCluster[@Name='M42Tickets']/Table[@Name='M42Wpm-Ticket-Categories']/Table-Columns") as XmlElement;
if (categoriesColumns != null)
{
RetVal |= DoXmlInsertTableRow(XmlRoot, "M42Tickets", "M42Wpm-Ticket-Categories", "<Table-Column Name=\"parentValue\" SourceName=\"Parent_Value\" Type=\"guid\" />", "Name");
RetVal |= DoXmlInsertTableRow(XmlRoot, "M42Tickets", "M42Wpm-Ticket-Categories", "<Table-Column Name=\"parent\" SourceName=\"Parent\" Type=\"string\" Cardinal=\"300\" />", "parentValue");
var parentValueColumn = categoriesColumns.SelectSingleNode("Table-Column[@Name='parentValue']") as XmlElement;
if (parentValueColumn != null)
{
if (!string.Equals(parentValueColumn.GetAttribute("SourceName"), "Parent_Value", StringComparison.OrdinalIgnoreCase))
{
parentValueColumn.SetAttribute("SourceName", "Parent_Value");
RetVal = true;
}
if (!string.Equals(parentValueColumn.GetAttribute("Type"), "guid", StringComparison.OrdinalIgnoreCase))
{
parentValueColumn.SetAttribute("Type", "guid");
RetVal = true;
}
}
var parentColumn = categoriesColumns.SelectSingleNode("Table-Column[@Name='parent']") as XmlElement;
if (parentColumn != null)
{
if (!string.Equals(parentColumn.GetAttribute("SourceName"), "Parent", StringComparison.OrdinalIgnoreCase))
{
parentColumn.SetAttribute("SourceName", "Parent");
RetVal = true;
}
if (!string.Equals(parentColumn.GetAttribute("Type"), "string", StringComparison.OrdinalIgnoreCase))
{
parentColumn.SetAttribute("Type", "string");
RetVal = true;
}
if (!string.Equals(parentColumn.GetAttribute("Cardinal"), "300", StringComparison.OrdinalIgnoreCase))
{
parentColumn.SetAttribute("Cardinal", "300");
RetVal = true;
}
}
}
var categoriesTemplate = XmlRoot.SelectSingleNode("DataCluster[@Name='M42Tickets']/Table[@Name='M42Wpm-Ticket-Categories']/Matrix42-DataQueryItems-Template") as XmlElement;
if (categoriesTemplate != null)
{
var whereExpression = categoriesTemplate.GetAttribute("WhereExpression");
var normalizedWhereExpression = Regex.Replace(whereExpression ?? string.Empty, @"\s+", string.Empty);
if (string.IsNullOrWhiteSpace(whereExpression)
|| string.Equals(normalizedWhereExpression, "Hidden=false", StringComparison.OrdinalIgnoreCase))
{
categoriesTemplate.SetAttribute("WhereExpression", "Hidden = 0");
RetVal = true;
}
}
// correct the type attribute for the M42Wpm-Ticket-History table to Events
var M42JournalItemNode = XmlRoot.SelectSingleNode("DataCluster[@Name='M42Tickets']/Table[@Name='M42Wpm-Ticket-History' and @Type!='HistoryEvents']") as XmlElement;
@@ -2517,13 +2540,13 @@ namespace C4IT.DataHistoryProvider
}
public class cDataHistoryConfigQueryTemplateM42DataQueryItems : cDataHistoryConfigQueryTemplate
{
public string EntityClassName { get; private set; } = null;
public List<string> EntityTypeNames { get; private set; } = null;
public string OrderBy { get; private set; } = null;
public string WhereExpression { get; private set; } = null;
public string DataQueryName { get; private set; } = null;
public class cDataHistoryConfigQueryTemplateM42DataQueryItems : cDataHistoryConfigQueryTemplate
{
public string EntityClassName { get; private set; } = null;
public List<string> EntityTypeNames { get; private set; } = null;
public string OrderBy { get; private set; } = null;
public string WhereExpression { get; private set; } = null;
public string DataQueryName { get; private set; } = null;
internal cDataHistoryConfigQueryTemplateM42DataQueryItems(XmlElement XNode, cXmlParser Parser) :
@@ -2555,11 +2578,11 @@ namespace C4IT.DataHistoryProvider
EntityTypeNames.Add(_e2);
}
OrderBy = cXmlParser.GetStringFromXmlAttribute(XNode2, "OrderBy");
WhereExpression = cXmlParser.GetStringFromXmlAttribute(XNode2, "WhereExpression");
DataQueryName = cXmlParser.GetStringFromXmlAttribute(XNode2, "DataQueryName");
Parser.LeaveElement("Matrix42-DataQueryItems-Template");
OrderBy = cXmlParser.GetStringFromXmlAttribute(XNode2, "OrderBy");
WhereExpression = cXmlParser.GetStringFromXmlAttribute(XNode2, "WhereExpression");
DataQueryName = cXmlParser.GetStringFromXmlAttribute(XNode2, "DataQueryName");
Parser.LeaveElement("Matrix42-DataQueryItems-Template");
IsValid = true;
}