#region  --------------- Copyright Dresser Wayne Pignone -------------
/*
 * $Log: /Wrk/WayneLibraries/Wrk/Log/InternalEntity.cs $
 * 
 * 2     08-02-13 9:27 Mattias.larsson
 * FxCop fixes.
 */
#endregion

using System.Xml;
namespace Wayne.Lib.Log
{
    internal class InternalEntity : IIdentifiableEntity
    {
        #region Fields

        private int id;
        private string entityType;
        private string entitySubType;
        private IIdentifiableEntity parentEntity;

        #endregion

        #region Construction

        public InternalEntity(XmlElement entityNode)
        {
            this.id = XmlConvert.ToInt32(entityNode.Attributes["Id"].InnerText);
            this.entityType = entityNode.Attributes["EntityType"].InnerText;
            this.entitySubType = entityNode.Attributes["EntitySubType"].InnerText;
            XmlElement parentElement = entityNode["Parent", EventLogXml.Ns];
            if (parentElement != null)
            {
                XmlElement parentEntityElement = parentElement["Entity", EventLogXml.Ns];
                if (parentEntityElement != null)
                    this.parentEntity = new InternalEntity(parentEntityElement);
            }
        }

        #endregion

        #region IIdentifiableEntity Members

        public int Id
        {
            get { return id; }
        }

        public string EntityType
        {
            get { return entityType; }
        }

        /// <summary>
        /// This is used by the logger and should never be set by inheriting classes
        /// </summary>
        public string FullEntityName { get; set; }

        public string EntitySubType
        {
            get { return entitySubType; }
        }

        public IIdentifiableEntity ParentEntity
        {
            get { return parentEntity; }
        }

        #endregion
    }
}