using System.Xml.Linq; using VRH.Log4Pro.MultiLanguageManager; using Vrh.XmlProcessing; using System.Collections.Generic; using System.Linq; namespace Vrh.OneReport { /// /// A "ReportDirectory.Report" elemet reprezentáló osztály. /// public class ReportListItem : XmlLinqBase { #region Built'in classes #region ElementNames class /// /// Az XML fájlban ilyen elem nevek találhatóak /// egy "ReportDirectory.Report" elemben. /// public new class ElementNames : XmlLinqBase.ElementNames { /// /// 'Preset' elem név. /// public const string PRESET = "Preset"; } #endregion ElementNames class #region AttributeNames static class /// /// Az XML fájlban ilyen attribútum nevek találhatóak /// egy "ReportDirectory.Report" elemben. /// public static class AttributeNames { /// /// 'DisplayName' attribútum név. /// public const string DISPLAYNAME = "DisplayName"; /// /// 'Name' attribútum név. /// public const string ID = "Id"; /// /// 'LCIDList' attribútum név. /// public const string LCIDLIST = "LCIDList"; /// /// 'UseCommonPresets' attribútum név. /// public const string USECOMMONPRESETS = "UseCommonPresets"; /// /// Default value of UseCommonPresets attribute /// public const bool USECOMMONPRESETSDEFAULT = true; } #endregion AttributeNames static class #endregion Built'in classes #region Private variables /// /// A "ReportDirectory.Report" elemet jelentő XElement /// objektum értéke, hogy a késleltetett feldolgozáshoz /// elérhető legyen. /// private readonly XElement m_ReportXelement; /// /// A környezetben érvényes nyelvi kód. /// A késleltett feldolgozás miatt megőrzendő. /// private readonly string m_LCID; /// /// a commonpreset listát tartalmazza /// private readonly List m_commonpresetlist; #endregion Private variables #region Properties /// /// A riport azonosítója. /// Kötelező! /// public string Id { get; private set; } /// /// A riport publikus megnevezése (leírása). /// public string DisplayName { get; private set; } /// /// Az adott riport lista elem, melyik nyelvekhez tartozik. /// Kötelező! /// public string LCIDList { get; private set; } /// /// Az adott riportban használni kell a General/CommonPresets részben definiált preset-eket /// public bool UseCommonPresets { get; private set; } #region Presets property /// /// A riporthoz tartozó alapértelmezett paraméter-értékek. /// Késleltetett feldolgozással, hogy ha csak a riport elnevezése kell, akkor /// ne töltsön időt a Preset-ek összeszedésével. /// Mindig van értéke, de lehet 0 tételszámmal, ha nincs Preset. /// public List Presets { get { if (m_Presets == null ) { m_Presets = PresetElement.PresetElementList(m_ReportXelement); if (this.UseCommonPresets) { var presetkeylist = m_Presets.Select(x => x.Id); foreach (var pr in m_commonpresetlist) { if (!presetkeylist.Contains(pr.Id)) { m_Presets.Add(pr); } } }; //m_Presets = new List(); // if (m_Element != null) // { // IEnumerable presetsXE = m_Element.Elements(ElementNames.PRESET); // if (presetsXE != null && presetsXE.Any()) // { // foreach (var presetXE in presetsXE) // { // this.Presets.Add(new PresetElement(presetXE)); // } // } // } } return m_Presets; } } private List m_Presets = null; #endregion Presets property #endregion Properties #region Constructor /// /// Példány létrehozása egy XElement alapján. /// /// Egy "ReportDirectory.Report" elem. /// A környezetben érvényes nyelvi kód. /// A környezetben érvényes nyelvi kód. public ReportListItem(XElement reportXelement, List commonpresetlist, string lcid) { if (reportXelement != null) { // Értékek megőrzése a késleltett feldolgozás miatt. m_ReportXelement = reportXelement; m_LCID = lcid; m_commonpresetlist = commonpresetlist; this.Id = GetValue(AttributeNames.ID, reportXelement, "", true, true); this.DisplayName = GetValue(reportXelement.Attribute(AttributeNames.DISPLAYNAME), ""); this.LCIDList = GetValue(AttributeNames.LCIDLIST, reportXelement, "*", false, false); this.UseCommonPresets = GetValue(AttributeNames.USECOMMONPRESETS, reportXelement, AttributeNames.USECOMMONPRESETSDEFAULT, false, false); } } #endregion Constructor } }