优化ETL过滤模块
大石头 编写于 2017-08-29 17:11:46
X
using System;
using System.Collections.Generic;
using System.Xml.Serialization;

namespace NewLife.Net.UPnP
{
    /// <summary>设备</summary>
    public class Device
    {
        #region 属性
        private String _deviceType;
        /// <summary>设备类型</summary>
        public String deviceType
        {
            get { return _deviceType; }
            set { _deviceType = value; }
        }

        private String _presentationURL;
        /// <summary>管理网址</summary>
        public String presentationURL
        {
            get { return _presentationURL; }
            set { _presentationURL = value; }
        }

        private String _friendlyName;
        /// <summary>对于用户的简短描述</summary>
        public String friendlyName
        {
            get { return _friendlyName; }
            set { _friendlyName = value; }
        }

        private String _manufacturer;
        /// <summary>生产厂家</summary>
        public String manufacturer
        {
            get { return _manufacturer; }
            set { _manufacturer = value; }
        }

        private String _manufacturerURL;
        /// <summary>制造商的网址</summary>
        public String manufacturerURL
        {
            get { return _manufacturerURL; }
            set { _manufacturerURL = value; }
        }

        private String _modelDescription;
        /// <summary>描述</summary>
        public String modelDescription
        {
            get { return _modelDescription; }
            set { _modelDescription = value; }
        }

        private String _modelName;
        /// <summary>产品名称</summary>
        public String modelName
        {
            get { return _modelName; }
            set { _modelName = value; }
        }

        private String _modelNumber;
        /// <summary>产品型号</summary>
        public String modelNumber
        {
            get { return _modelNumber; }
            set { _modelNumber = value; }
        }

        private String _UDN;
        /// <summary>唯一设备名称</summary>
        public String UDN
        {
            get { return _UDN; }
            set { _UDN = value; }
        }

        private String _UPC;
        /// <summary>通用产品编码缩写</summary>
        public String UPC
        {
            get { return _UPC; }
            set { _UPC = value; }
        }

        private List<Service> _serviceList;
        /// <summary>服务项目</summary>
        [XmlArray("serviceList")]
        [XmlArrayItem("service")]
        public List<Service> serviceList
        {
            get { return _serviceList; }
            set { _serviceList = value; }
        }

        private List<Device> _deviceList;
        /// <summary>设备 仅当根设备带有嵌入式设备时要求</summary>
        [XmlArray("deviceList")]
        [XmlArrayItem("device")]
        public List<Device> deviceList
        {
            get { return _deviceList; }
            set { _deviceList = value; }
        }
        #endregion

        #region 方法
        /// <summary>已重载。</summary>
        /// <returns></returns>
        public override String ToString()
        {
            //return String.Format("{0} {1}", friendlyName, manufacturer);
            return friendlyName;
        }
        #endregion

        #region 设备/服务
        /// <summary>获取指定设备指定类型的服务</summary>
        /// <param name="serviceType"></param>
        /// <returns></returns>
        public Service GetService(String serviceType) { return GetService(this, serviceType); }

        static Service GetService(Device device, String serviceType)
        {
            if (device == null || device.serviceList == null || device.serviceList.Count < 1) return null;

            foreach (var item in device.serviceList)
            {
                if (item.serviceType.EqualIgnoreCase(serviceType)) return item;
            }

            if (device.deviceList == null || device.deviceList.Count < 1) return null;

            foreach (var item in device.deviceList)
            {
                var service = GetService(item, serviceType);
                if (service != null) return service;
            }

            return null;
        }

        /// <summary>取得广域网IP连接设备</summary>
        /// <returns></returns>
        public Service GetWANIPService()
        {
            return GetService("urn:schemas-upnp-org:service:WANIPConnection:1");
        }
        #endregion
    }
}