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 @@ - - - - - - - - - -
@@ -1554,4 +1544,4 @@
- + \ 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 @@ - - - - - - - - - -
@@ -1554,4 +1544,4 @@
- + \ 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 @@ - - - - - - - - - -
@@ -1554,4 +1544,4 @@
- + \ 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