diff --git a/C4IT_DataHistoryProvider_Base/Publish/F4SD-Cockpit-Server.dll b/C4IT_DataHistoryProvider_Base/Publish/F4SD-Cockpit-Server.dll
index d2fd602..2989a27 100644
Binary files a/C4IT_DataHistoryProvider_Base/Publish/F4SD-Cockpit-Server.dll and b/C4IT_DataHistoryProvider_Base/Publish/F4SD-Cockpit-Server.dll differ
diff --git a/C4IT_DataHistoryProvider_Test/Config/F4SD-DataClusters-Configuration.xml b/C4IT_DataHistoryProvider_Test/Config/F4SD-DataClusters-Configuration.xml
index e1f7f69..fee0b08 100644
--- a/C4IT_DataHistoryProvider_Test/Config/F4SD-DataClusters-Configuration.xml
+++ b/C4IT_DataHistoryProvider_Test/Config/F4SD-DataClusters-Configuration.xml
@@ -762,16 +762,6 @@
-
-
+
\ No newline at end of file
diff --git a/C4IT_DataHistoryProvider_Test/Config/F4SD-DataClusters-Configuration.xsd b/C4IT_DataHistoryProvider_Test/Config/F4SD-DataClusters-Configuration.xsd
index e482e42..ae2c653 100644
--- a/C4IT_DataHistoryProvider_Test/Config/F4SD-DataClusters-Configuration.xsd
+++ b/C4IT_DataHistoryProvider_Test/Config/F4SD-DataClusters-Configuration.xsd
@@ -428,4 +428,4 @@
-
+
\ No newline at end of file
diff --git a/F4SD-Cockpit-ServerCore/DataHistoryConfigGolabalParameters.cs b/F4SD-Cockpit-ServerCore/DataHistoryConfigGolabalParameters.cs
index 287fa01..7d82264 100644
--- a/F4SD-Cockpit-ServerCore/DataHistoryConfigGolabalParameters.cs
+++ b/F4SD-Cockpit-ServerCore/DataHistoryConfigGolabalParameters.cs
@@ -61,9 +61,86 @@ namespace C4IT.DataHistoryProvider
private cConfigHelperParameterList LoadParameters (XmlElement XRoot, cXmlParser Parser)
{
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
+
+ var _result = new cConfigHelperParameterList();
+
try
{
- return cF4sdGlobalConfigParameterParser.Parse(XRoot, Parser);
+ var Items = XRoot.ChildNodes;
+ foreach (var _node in Items)
+ {
+ if (!(_node is XmlElement _item)) continue;
+
+ Parser.EnterElement(_item.Name);
+
+ try
+ {
+ var _attPolicy = _item.GetAttribute("Policy");
+ var _attValue = _item.GetAttribute("Value");
+
+ var _ElementCount = 0;
+ foreach (XmlNode _subNode in _item.ChildNodes)
+ {
+ if (_subNode is XmlElement)
+ _ElementCount++;
+ }
+
+ // check for special parameters
+ switch (_item.Name)
+ {
+ case "InformationClassSearchPriority":
+ var _val = getInformationClassSearchPriority(_item, Parser);
+ if (_val != null)
+ _result.Items[_val.Name] = _val;
+ continue;
+ case "OpenActivitiesExternally":
+ var _openActivitiesEntry = getOpenActivitiesExternallyEntry(_item);
+ if (_openActivitiesEntry != null)
+ _result.Items[_openActivitiesEntry.Name] = _openActivitiesEntry;
+
+ var _overrideValues = getOpenActivitiesExternallyOverrides(_item, Parser);
+ if (_overrideValues != null && _overrideValues.ValueList != null && _overrideValues.ValueList.Count > 0)
+ _result.Items[_overrideValues.Name] = _overrideValues;
+ continue;
+ }
+
+ if (_attPolicy != null && _attValue != null && _ElementCount == 0)
+ {
+ // we have a simple parameter
+ var _policy = cXmlParser.GetEnumFromAttribute(_item, "Policy", enumConfigPolicy.Default);
+ var _value = cXmlParser.GetStringFromXmlAttribute(_item, "Value", String.Empty);
+
+ _result.Items[_item.Name] = new cConfigHelperParameterEntry()
+ {
+ Name = _item.Name,
+ Value = _value,
+ Policy = _policy.ToString(),
+ };
+ }
+ else if (string.IsNullOrEmpty(_attPolicy) && string.IsNullOrEmpty(_attValue) && _ElementCount > 0)
+ {
+ // we have a sublist
+ if (_result.SubItems == null)
+ _result.SubItems = new Dictionary();
+ _result.SubItems[_item.Name] = LoadParameters(_item, Parser);
+ }
+ else
+ {
+ // we have an invalid entry
+ var _msg = $"Invalid entry in F4SD-Global-Configuration.xml: {_item.Name}";
+ Parser.AddMessage(_item, _msg, LogLevels.Warning);
+ LogEntry(_msg, LogLevels.Warning);
+ }
+ }
+ catch (Exception E)
+ {
+ LogException(E);
+ }
+ finally
+ {
+ Parser.LeaveElement(_item.Name);
+ }
+ }
}
catch (Exception E)
{
@@ -74,7 +151,198 @@ namespace C4IT.DataHistoryProvider
if (CM != null) LogMethodEnd(CM);
}
- return new cConfigHelperParameterList();
+ return _result;
+ }
+
+ private cConfigHelperParameterEntry getInformationClassSearchPriority(XmlElement XNode, cXmlParser Parser)
+ {
+
+ MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
+
+ try
+ {
+ var _xNodes = XNode.ChildNodes;
+
+ var _policy = cXmlParser.GetEnumFromAttribute(XNode, "Policy", enumConfigPolicy.Default);
+
+ var _result = new List();
+
+ foreach (var _xNode in _xNodes)
+ {
+ if (!(_xNode is XmlElement _item))
+ continue;
+
+ Parser.EnterElement(_item.Name);
+
+ try
+ {
+ if (_item.Name != "InformationClass")
+ {
+ // we have an invalid entry
+ var _msg = $"Invalid entry in F4SD-Global-Configuration.xml: {_item.Name}, should be ";
+ Parser.AddMessage(_item, _msg, LogLevels.Warning);
+ LogEntry(_msg, LogLevels.Warning);
+ continue;
+ }
+
+ var _InfoClass = cXmlParser.GetEnumFromAttribute(_item, "Type", enumFasdInformationClass.Unknown);
+ if (_InfoClass == enumFasdInformationClass.Unknown)
+ {
+ // we have an invalid type attribute
+ var _strType = cXmlParser.GetStringFromXmlAttribute(_item, "Type", String.Empty);
+ var _msg = $"Invalid type attribute value ({_strType}) in entry {_item.Name}";
+ Parser.AddMessage(_item, _msg, LogLevels.Warning);
+ LogEntry(_msg, LogLevels.Warning);
+ continue;
+ }
+
+ var _strInfoClass = _InfoClass.ToString();
+ if (!_result.Contains(_strInfoClass))
+ _result.Add(_strInfoClass);
+ }
+ catch (Exception E)
+ {
+ LogException(E);
+ }
+ finally
+ {
+ Parser.LeaveElement(_item.Name);
+ }
+ }
+
+ return new cConfigHelperParameterEntry()
+ {
+ Name = XNode.Name,
+ ValueList = _result,
+ Policy = _policy.ToString()
+ };
+ }
+ catch (Exception E)
+ {
+ LogException(E);
+ }
+ finally
+ {
+ if (CM != null) LogMethodEnd(CM);
+ }
+
+ return null;
+ }
+
+ private static cConfigHelperParameterEntry getOpenActivitiesExternallyEntry(XmlElement XNode)
+ {
+ var _policy = cXmlParser.GetEnumFromAttribute(XNode, "Policy", enumConfigPolicy.Default);
+ var _value = cXmlParser.GetStringFromXmlAttribute(XNode, "Value", String.Empty);
+
+ if (string.IsNullOrWhiteSpace(_value))
+ return null;
+
+ return new cConfigHelperParameterEntry()
+ {
+ Name = "OpenActivitiesExternally",
+ Value = _value,
+ Policy = _policy.ToString(),
+ };
+ }
+
+ private cConfigHelperParameterEntry getOpenActivitiesExternallyOverrides(XmlElement XNode, cXmlParser Parser)
+ {
+ MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
+
+ try
+ {
+ var _xNodes = XNode.ChildNodes;
+ var _policy = cXmlParser.GetEnumFromAttribute(XNode, "Policy", enumConfigPolicy.Default);
+ var _result = new List();
+
+ foreach (var _xNode in _xNodes)
+ {
+ if (!(_xNode is XmlElement _item))
+ continue;
+
+ Parser.EnterElement(_item.Name);
+
+ try
+ {
+ if (_item.Name != "OpenActivityOverride")
+ {
+ var _msg = $"Invalid entry in F4SD-Global-Configuration.xml: {_item.Name}, should be ";
+ Parser.AddMessage(_item, _msg, LogLevels.Warning);
+ LogEntry(_msg, LogLevels.Warning);
+ continue;
+ }
+
+ var activityType = cXmlParser.GetStringFromXmlAttribute(_item, "ActivityType", String.Empty)?.Trim();
+ if (string.IsNullOrWhiteSpace(activityType))
+ {
+ var _msg = $"Missing ActivityType attribute value in entry {_item.Name}";
+ Parser.AddMessage(_item, _msg, LogLevels.Warning);
+ LogEntry(_msg, LogLevels.Warning);
+ continue;
+ }
+
+ var valueText = cXmlParser.GetStringFromXmlAttribute(_item, "Value", String.Empty)?.Trim();
+ if (string.IsNullOrWhiteSpace(valueText))
+ {
+ var _msg = $"Missing Value attribute value in entry {_item.Name} ({activityType})";
+ Parser.AddMessage(_item, _msg, LogLevels.Warning);
+ LogEntry(_msg, LogLevels.Warning);
+ continue;
+ }
+
+ var normalizedValue = valueText.ToLowerInvariant();
+ bool? parsedValue = null;
+ switch (normalizedValue)
+ {
+ case "true":
+ case "1":
+ case "yes":
+ parsedValue = true;
+ break;
+ case "false":
+ case "0":
+ case "no":
+ parsedValue = false;
+ break;
+ }
+
+ if (!parsedValue.HasValue)
+ {
+ var _msg = $"Invalid Value attribute value ({valueText}) in entry {_item.Name} ({activityType})";
+ Parser.AddMessage(_item, _msg, LogLevels.Warning);
+ LogEntry(_msg, LogLevels.Warning);
+ continue;
+ }
+
+ _result.Add($"{activityType}={(parsedValue.Value ? "true" : "false")}");
+ }
+ catch (Exception E)
+ {
+ LogException(E);
+ }
+ finally
+ {
+ Parser.LeaveElement(_item.Name);
+ }
+ }
+
+ return new cConfigHelperParameterEntry()
+ {
+ Name = "OpenActivitiesExternallyOverrides",
+ ValueList = _result,
+ Policy = _policy.ToString()
+ };
+ }
+ catch (Exception E)
+ {
+ LogException(E);
+ }
+ finally
+ {
+ if (CM != null) LogMethodEnd(CM);
+ }
+
+ return null;
}
public override bool DoXmlUpdates(XmlElement XmlRoot, bool withM42Config = false, bool withIntuneConfig = false, bool withMobileDeviceConfig = false, bool withCitrixConfig = false)
diff --git a/F4SDwebService/Config/F4SD-DataClusters-Configuration.xml b/F4SDwebService/Config/F4SD-DataClusters-Configuration.xml
index e1f7f69..fee0b08 100644
--- a/F4SDwebService/Config/F4SD-DataClusters-Configuration.xml
+++ b/F4SDwebService/Config/F4SD-DataClusters-Configuration.xml
@@ -762,16 +762,6 @@
-
-
+
\ No newline at end of file
diff --git a/F4SDwebService/F4SD-Cockpit-WebService.csproj b/F4SDwebService/F4SD-Cockpit-WebService.csproj
index 6d07405..5f1d582 100644
--- a/F4SDwebService/F4SD-Cockpit-WebService.csproj
+++ b/F4SDwebService/F4SD-Cockpit-WebService.csproj
@@ -318,15 +318,15 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
Global.asax
@@ -551,6 +551,13 @@
+
+
+ Web.config
+
+
+ Web.config
+
@@ -568,19 +575,6 @@
-
-
- Web.config
-
-
- Web.config
-
-
- Web.config
-
-
- Web.config
-
@@ -677,10 +671,10 @@
-copy "$(ProjectDir)..\..\C4IT FASD\_Common\XmlSchemas\*" "$(ProjectDir)Config"
-copy "$(ProjectDir)..\C4IT_DataHistoryProvider_Test\Config\*.xml" "$(ProjectDir)Config"
-copy "$(ProjectDir)..\C4IT_DataHistoryProvider_Test\License\*" "$(ProjectDir)License"
-
+ copy "$(ProjectDir)..\..\C4IT FASD\_Common\XmlSchemas\*" "$(ProjectDir)Config"
+ copy "$(ProjectDir)..\C4IT_DataHistoryProvider_Test\Config\*.xml" "$(ProjectDir)Config"
+ copy "$(ProjectDir)..\C4IT_DataHistoryProvider_Test\License\*" "$(ProjectDir)License"
+
@@ -692,4 +686,4 @@ copy "$(ProjectDir)..\C4IT_DataHistoryProvider_Test\License\*" "$(ProjectDir)Lic
-->
-
+
\ No newline at end of file
diff --git a/F4SDwebService/Publish/Config/F4SD-DataClusters-Configuration.xml b/F4SDwebService/Publish/Config/F4SD-DataClusters-Configuration.xml
index e1f7f69..fee0b08 100644
--- a/F4SDwebService/Publish/Config/F4SD-DataClusters-Configuration.xml
+++ b/F4SDwebService/Publish/Config/F4SD-DataClusters-Configuration.xml
@@ -762,16 +762,6 @@
-
-
+
\ No newline at end of file
diff --git a/F4SDwebService/Publish/Config/F4SD-DataClusters-Configuration.xsd b/F4SDwebService/Publish/Config/F4SD-DataClusters-Configuration.xsd
index e482e42..ae2c653 100644
--- a/F4SDwebService/Publish/Config/F4SD-DataClusters-Configuration.xsd
+++ b/F4SDwebService/Publish/Config/F4SD-DataClusters-Configuration.xsd
@@ -428,4 +428,4 @@
-
+
\ No newline at end of file
diff --git a/F4SDwebService/Publish/Web.Debug.config b/F4SDwebService/Publish/Web.Debug.config
index 90a6a14..50b847a 100644
--- a/F4SDwebService/Publish/Web.Debug.config
+++ b/F4SDwebService/Publish/Web.Debug.config
@@ -1,13 +1,13 @@
-
+
-
+
-
+
\ No newline at end of file
diff --git a/F4SDwebService/Publish/Web.Release.config b/F4SDwebService/Publish/Web.Release.config
index 9424a42..de3b114 100644
--- a/F4SDwebService/Publish/Web.Release.config
+++ b/F4SDwebService/Publish/Web.Release.config
@@ -1,13 +1,13 @@
-
+
-
+
-
+
\ No newline at end of file