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
}
}