//namespace iSchedulerMonitorXXXX
//{
// using System;
// using System.Collections.Generic;
// using System.Linq;
// using System.Text;
// using System.Threading.Tasks;
// using System.Xml.Linq;
// using Vrh.XmlProcessing;
// //using Vrh.Web.Common.Lib;
// #region iSchedulerXMLProcessor class
// public class iSchedulerXMLProcessor : LinqXMLProcessorBase
// {
// #region Elements and Attributes private classes
// private class Elements
// {
// public const string DATABASECONNECTIONSTRING = "DatabaseConnectionString";
// public const string OBJECTTYPE = "ObjectType";
// public const string GROUPID = "GroupId";
// public const string MONITORSERVICE = "MonitorService";
// public const string CHECKINTERVAL = "CheckInterval";
// public const string ISCHEDULERPARAMETERS = "iSchedulerParameters";
// }
// private class Attributes
// {
// }
// #endregion Elements and Attributes private classes
// #region Properties
// ///
// /// Feldolgozás közben keletkezett hibaüzenetek.
// ///
// public string ErrorMessage { get; private set; } = string.Empty;
// ///
// /// Itt a model létrejöttekor egy fix érték: "en-US".
// ///
// public string LCID { get; private set; }
// ///
// /// Az adatbázishoz való kapcsolódás adatai.
// /// A ConnectionStringStore által feloldott érték, ha nem tudta feloldani akkor ami az xml-ben van.
// ///
// private string _DatabaseConnectionStringName = null;
// private string _DatabaseConnectionString = null;
// public string DatabaseConnectionString
// {
// get
// {
// if (_DatabaseConnectionString == null)
// {
// _DatabaseConnectionStringName = GetValue(GetXElement(Elements.DATABASECONNECTIONSTRING), "");
// try { _DatabaseConnectionString = ConnectionStringStore.GetSQL(_DatabaseConnectionStringName); }
// catch { _DatabaseConnectionString = _DatabaseConnectionStringName; }
// if (string.IsNullOrWhiteSpace(_DatabaseConnectionString)) { throw new ApplicationException($"The <{Elements.DATABASECONNECTIONSTRING}> element is missing or empty!"); }
// }
// return _DatabaseConnectionString;
// }
// }
// #region ObjectType property
// ///
// /// Az xml-ben található object type.
// /// Az ütemezések lekérdezéséhez szükséges.
// ///
// public string ObjectType
// {
// get
// {
// if (_ObjectType == null)
// {
// _ObjectType = GetValue(GetXElement(Elements.OBJECTTYPE), "");
// if (string.IsNullOrWhiteSpace(_ObjectType)) { throw new ApplicationException($"The <{Elements.OBJECTTYPE}> element is missing or empty!"); }
// }
// return _ObjectType;
// }
// }
// private string _ObjectType = null;
// #endregion ObjectType property
// #region GroupId property
// ///
// /// Az xml-ben található GroupId érték.
// /// Az ütemezések lekérdezéséhez szükséges.
// ///
// public string GroupId
// {
// get
// {
// if (_GroupId == null)
// {
// _GroupId = GetValue(GetXElement(Elements.GROUPID), "");
// if (string.IsNullOrWhiteSpace(_GroupId)) { throw new ApplicationException($"The <{Elements.GROUPID}> element is missing or empty!"); }
// else if (_GroupId.Trim() == "*") { throw new ApplicationException($"The value of the <{Elements.GROUPID}> element can not equal '*'!"); }
// }
// return _GroupId;
// }
// }
// private string _GroupId = null;
// #endregion GroupId property
// #region CheckInterval property
// ///
// /// Az időzítések figyelése ennyi időközönként (másodperc) fog megtörténni.
// /// Minimum: 60 sec (1perc), maximum: 86400 sec (1nap).
// /// Ha a tulajdonság nem létezik, vagy értelmezhetetlen, akkor a minimum lesz.
// ///
// public int CheckInterval
// {
// get
// {
// if (_CheckInterval < CheckIntervalMinimum)
// {
// string chckint = GetValue(GetXElement(Elements.MONITORSERVICE, Elements.CHECKINTERVAL), "");
// if (string.IsNullOrEmpty(chckint))
// {
// _CheckInterval = CheckIntervalMinimum;
// }
// else
// {
// if (!int.TryParse(chckint, out _CheckInterval)) { _CheckInterval = CheckIntervalMinimum; }
// }
// _CheckInterval = Math.Min(Math.Max(_CheckInterval, CheckIntervalMinimum), CheckIntervalMaximum);
// }
// return _CheckInterval;
// }
// }
// private int _CheckInterval;
// #endregion CheckInterval properties
// #region iSchedulerParameters property
// ///
// /// Az iScheduler xml paraméter file pontos elérési útja.
// /// Ha nincs megadva a plugin InstanceData paramétereként, akkor ez lesz használatos, ha pedig ez sincs megadva,
// /// akkor maga a plug InstanceConfig paramétereként megadott file.
// /// Minimum: 60 sec (1perc), maximum: 86400 sec (1nap).
// /// Ha a tulajdonság nem létezik, vagy értelmezhetetlen, akkor a minimum lesz.
// ///
// public string iSchedulerParameters
// {
// get { return GetValue(GetXElement(Elements.MONITORSERVICE, Elements.ISCHEDULERPARAMETERS), ""); }
// }
// //private string _iSchedulerParameters;
// #endregion iSchedulerParameters properties
// ///
// /// Az időzítések figyelésének minimum értéke.
// ///
// public int CheckIntervalMinimum { get; private set; }
// ///
// /// Az időzítések figyelésének maximum értéke.
// ///
// public int CheckIntervalMaximum { get; private set; }
// public string ScheduleMonitorXmlPath { get; private set; }
// public string ScheduleXmlPath { get; private set; }
// #endregion Properties
// public iSchedulerXMLProcessor(string scheduleMonitorXmlPath, string scheduleXmlPath = null) : base(scheduleMonitorXmlPath)
// {
// try
// {
// base._xmlNameSpace = string.Empty;
// base._xmlFileDefinition = scheduleMonitorXmlPath;
// this.SetThrowException(true);
// XElement rootXE = base.GetRootElement(); // csak azért, hogy kiderüljenek az XML hibák!
// this.SetThrowException(false);
// //rootXE = base.GetRootElement(); // csak azért, hogy kiderüljenek az XML hibák!
// LCID = "en-US"; //fix érték, mert nincs honnan megtudni a beállítást!
// CheckIntervalMinimum = 60; // 1 perc
// CheckIntervalMaximum = 86400; // 1 nap
// this.ScheduleMonitorXmlPath = scheduleMonitorXmlPath;
// this.ScheduleXmlPath = string.IsNullOrEmpty(scheduleXmlPath) ? this.iSchedulerParameters : scheduleXmlPath;
// this.ScheduleXmlPath = string.IsNullOrEmpty(this.ScheduleXmlPath) ? this.ScheduleMonitorXmlPath : this.ScheduleXmlPath;
// this._CheckInterval = -1; // annak jelzése, hogy a beállítás még nem történt meg.
// if (ErrorMessage != string.Empty) { throw new ApplicationException(ErrorMessage); }
// }
// catch (Exception ex)
// {
// throw new ApplicationException("Error occured while xml processing!", ex);
// }
// }
// }
// #endregion iSchedulerXMLProcessor class
//}