tbf/TBF/Rig/Output/FlexFlow/FlexFlowCfg.cs

200 lines
6.8 KiB
C#

///
/// Copyright (c) 2021 Sensus Slovensko a.s.
///
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using Common;
using Config.Entities;
using TBF.Rig.Generic;
using TBF.Resources;
namespace TBF.Rig.Output.FlexFlow
{
public enum WebApi
{
REST,
SOAP,
}
/// <summary>
/// Holds FlexFlow.Rest configuration.
/// </summary>
public class FlexFlowCfg : ComponentCfgBase, Generic.IComponentCfg, IParamsProvider
{
public static XmlSerializer Serializer = XmlSerializer.FromTypes(new[] { typeof(FlexFlowCfg) })[0];
public override XmlSerializer GetSerializer() { return Serializer; }
public IComponentCfgCtrl GetControl(IList<Config.Entities.Component> cmpntEntities) { return new Configs.ParamsProvider.ComponentCfgCtrl(this, null); }
///
/// Serialized parameters
///
public string BaseUrl;
public WebApi GetUnitInfoApi;
public string GetUnitInfoUrl;
public WebApi SaveResultsApi;
public string SaveResultsUrl;
public bool CheckPreviousRecords;
public bool SaveResults;
public bool SendUserId;
/// Private parameterless constructor invoked by all other (public) constructors
FlexFlowCfg() { }
public FlexFlowCfg(string name, IComponentFactory factory)
: this()
{
Name = name;
Factory = factory;
ParentName = string.Empty;
InitializeAll();
}
public string ComponentName { get { return Name; } }
public void InitializeAll()
{
BaseUrl = "http://gdlm02205:4450/?wsdl";
GetUnitInfoUrl = string.Empty;
SaveResultsUrl = string.Empty;
CheckPreviousRecords = true;
SaveResults = true;
SendUserId = true;
}
string[] paramNames = new string[]
{
"Base URL", /// 0
"Get unit info", /// 1
"GetUnitInfo Web API", /// 2
"GetUnitInfo URL relative to base URL", /// 3
"Save result", /// 4
"SaveResult Web API", /// 5
"SaveResult URL relative to base URL", /// 6
"Send user ID", /// 7
};
public string ParamName(int i) { return paramNames[i]; }
public int ParamsCount() { return paramNames.Length; }
public ICollection<string> ParamValues(int i)
{
switch (i)
{
case 1:
case 4:
case 7:
return new string[] { Strings.yes, Strings.no };
case 2:
case 5:
return new string[] { WebApi.REST.ToString(), WebApi.SOAP.ToString() };
default:
return null;
}
}
public string ToString(int i)
{
switch (i)
{
case 0: return BaseUrl;
case 1: return CheckPreviousRecords ? Strings.yes : Strings.no;
case 2: return GetUnitInfoApi.ToString();
case 3: return GetUnitInfoUrl;
case 4: return SaveResults ? Strings.yes : Strings.no;
case 5: return SaveResultsApi.ToString();
case 6: return SaveResultsUrl;
case 7: return SendUserId ? Strings.yes : Strings.no;
default:
return string.Format("{0} CheckPrev.={1}, SaveResults={2}, URL={3}, URL2={4}",
Name,
CheckPreviousRecords,
SaveResults,
BaseUrl,
GetUnitInfoUrl);
}
}
public CfgUpdateFlags UpdateParam(int i, string str)
{
switch (i)
{
case 0: BaseUrl = str; return CfgUpdateFlags.RestartRqrd;
case 1: CheckPreviousRecords = (str == Strings.yes); return CfgUpdateFlags.RestartRqrd;
case 2:
foreach (var wa in new WebApi[] { WebApi.REST, WebApi.SOAP })
if (str == wa.ToString())
{
GetUnitInfoApi = wa;
return CfgUpdateFlags.RestartRqrd;
}
return CfgUpdateFlags.None;
case 3: GetUnitInfoUrl = str; return CfgUpdateFlags.RestartRqrd;
case 4: SaveResults = (str == Strings.yes); return CfgUpdateFlags.RestartRqrd;
case 5:
foreach (var wa in new WebApi[] { WebApi.REST, WebApi.SOAP })
if (str == wa.ToString())
{
SaveResultsApi = wa;
return CfgUpdateFlags.RestartRqrd;
}
return CfgUpdateFlags.None;
case 6: SaveResultsUrl = str; return CfgUpdateFlags.RestartRqrd;
case 7: SendUserId = (str == Strings.yes); return CfgUpdateFlags.RestartRqrd;
default: return CfgUpdateFlags.None;
}
}
public bool ValidateParam(int i, string strValue, out string message)
{
message = string.Empty;
switch (i)
{
case 0:
case 3:
case 6:
return true;
case 1:
case 2:
case 4:
case 5:
case 7:
if (ParamValues(i).Contains(strValue)) return true;
break;
default:
message = "Invalid index";
return false;
}
message = ParamName(i) + " is invalid";
return false;
}
void CopyContentTo(FlexFlowCfg prms)
{
prms.BaseUrl = this.BaseUrl;
prms.CheckPreviousRecords = this.CheckPreviousRecords;
prms.GetUnitInfoApi = this.GetUnitInfoApi;
prms.GetUnitInfoUrl = this.GetUnitInfoUrl;
prms.SaveResults = this.SaveResults;
prms.SaveResultsApi = this.SaveResultsApi;
prms.SaveResultsUrl = this.SaveResultsUrl;
prms.SendUserId = this.SendUserId;
}
public IParamsProvider Clone()
{
FlexFlowCfg pars = new FlexFlowCfg();
CopyContentTo(pars);
return pars;
}
public bool UpdateEmbeddedDbEntity()
{
return true; /// =OK, do nothing
}
}
}