ó
 õ\c           @   s•   d  d l  m Z d  d l m Z d  d l j Z d d d „  ƒ  YZ d e f d „  ƒ  YZ d d d	 „  ƒ  YZ	 d
 d d „  ƒ  YZ
 d d d „  ƒ  YZ d S(   iÿÿÿÿ(   t   etree(   t   SimpleLoggerNt   DeviceContainerc           B   sh   e  Z g  d	 d	 d	 d	 d  „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z RS(
   c         C   sŠ   | |  _  | |  _ | |  _ | |  _ | |  _ i  |  _ g  |  j d <g  |  j d <i  |  _ t j d ƒ |  _	 d  |  _ d  |  _ t |  _ d  S(   Nt   vtypet   dtypet   response(   t   listObjectst   autht   loggerIdt   msgTypet   upidt   filterst   listStatusCodesR    t   Elementt   responseRoott   Nonet   responseTypeNodet   missingValuet   Falset   invalidXMLFlag(   t   selft   devicesR   R   R	   R
   (    (    s5   /var/www/titaniumci/src/containers/DeviceContainer.pyt   __init__   s    									c         C   s¸  t  j j d ƒ t j | ƒ } | j d ƒ |  _ |  j d k rM d |  _ d  S|  j d  k ri t	 |  _
 d  S| j d ƒ |  _ |  j d k r— d |  _ d  S|  j d  k r³ t	 |  _
 d  S| j d ƒ } | d  k sÚ | g  k rì | j d ƒ } n  xÅ | D]½ } t d |  j ƒ } | j | ƒ | j
 r>t  j j d ƒ t	 |  _
 d  S| j d  k rt  j j d	 | j j ƒ  ƒ |  j | j d	 | j j ƒ  ƒ qó n  | j |  j ƒ |  j j | ƒ qó Wd  S(
   Ns,   DeviceContainer: entered readXMLSetRequest()t   slidt    R   s   .//setDevices   .//setdeviceR   s'   INVALID_XML: missing required attributet   MISSING_(   t   settingst   loggert   infoR    t
   fromstringt   getR   R   R   t   TrueR   R   t   findt   Devicet   readFromXMLt   errort   uppert   appendDeviceNodet   deviceIdt   setLIDsR   t   append(   R   t   xmlMsgt   roott	   setDevicet   devtreet   dev(    (    s5   /var/www/titaniumci/src/containers/DeviceContainer.pyt   readXMLSetRequest   s@    						 c   	      C   sü   t  j | ƒ } | j d ƒ j } | d  k s9 | d k rE | |  _ n  | j d ƒ } | j d ƒ } | j d ƒ } | d  k rµ | d k rµ x( | D] } |  j d j | j ƒ q‘ Wn  | d  k rø | d k rø x( | D] } |  j d j | j ƒ qÔ Wn  d  S(   Ns   .//upidR   s
   .//filterss	   .//vtypess   .//deviceTypesR   R   (   R    R   R    t   textR   R
   R   R(   (	   R   R)   R*   t   upidElt	   filtersElt   vtypeElt   dtypeElt   vtt   dt(    (    s5   /var/www/titaniumci/src/containers/DeviceContainer.pyt   readXMLGetRequestK   s    c         C   sO   t  j d ƒ } x$ |  j D] } | j | j ƒ  ƒ q Wt  j | d t ƒ} | S(   NR   t   pretty_print(   R    R   R   R(   t
   writeToXMLt   tostringR   (   R   R*   R-   t	   xmlString(    (    s5   /var/www/titaniumci/src/containers/DeviceContainer.pyt   writeXMLGetResponse`   s
    c         C   s£   xœ |  j  D]‘ } t j d d | j ƒ} | j |  j k ri t j d d |  j | j ƒ} | j | ƒ n" t j d d d ƒ} | j | ƒ |  j j | ƒ q
 Wd  S(   Nt   devicet   sdidt   statust   codet   SUCCESS(   R   R    R   R&   R   R(   R   (   R   R-   t   dR>   (    (    s5   /var/www/titaniumci/src/containers/DeviceContainer.pyt   writeXMLSetResponsek   s    c         C   s   t  j | ƒ |  _ d  S(   N(   R    R   R   (   R   t   respType(    (    s5   /var/www/titaniumci/src/containers/DeviceContainer.pyt   setResponseTypeNodex   s    c         C   sK   t  j d d | ƒ} t  j d d | ƒ} | j | ƒ |  j j | ƒ d  S(   NR<   R=   R>   R?   (   R    R   R(   R   (   R   R=   R?   t
   deviceNodet
   statusNode(    (    s5   /var/www/titaniumci/src/containers/DeviceContainer.pyR%   |   s    c         C   s)   t  j d d | ƒ} |  j j | ƒ d  S(   NR>   R?   (   R    R   R   R(   (   R   R?   RF   (    (    s5   /var/www/titaniumci/src/containers/DeviceContainer.pyt   appendStatusCodeNode‚   s    c         C   s#   |  j  j |  j ƒ t j |  j  ƒ S(   N(   R   R(   R   R    R9   (   R   (    (    s5   /var/www/titaniumci/src/containers/DeviceContainer.pyt   getResponseMsgˆ   s    N(   t   __name__t
   __module__R   R   R.   R6   R;   RB   RD   R%   RG   RH   (    (    (    s5   /var/www/titaniumci/src/containers/DeviceContainer.pyR      s   	0						R!   c        	   B   sD   e  Z d d d d g  g  d d d  „ Z d „  Z d „  Z d „  Z RS(   c	   	      C   sg   | |  _  | |  _ | |  _ | |  _ g  |  _ g  |  _ g  |  _ | |  _ | |  _ d  |  _
 t |  _ d  S(   N(   R&   R   R   t   versiont
   parameterst   paramsToDeletet   deviceValuest   ldidt   categoryR   R   R   R   (	   R   R&   R   R   RK   RL   RN   RO   RP   (    (    s5   /var/www/titaniumci/src/containers/DeviceContainer.pyR      s    										c         C   sw  | j  d ƒ |  _ |  j d k r. d |  _ d  S|  j d  k rJ t |  _ d  S| j  d ƒ |  _ |  j d k rx d |  _ d  S|  j d  k r” t |  _ d  S| j  d ƒ |  _ |  j d k rÂ d |  _ d  S|  j d  k rÞ t |  _ d  S| j  d ƒ |  _ |  j d k rd |  _ d  S|  j d  k r(t |  _ d  S|  j d k rCd |  _ n  |  j j	 ƒ  |  _ | j
 d ƒ } x‘ | D]‰ } t ƒ  } | j | ƒ | j d  k r¦| j |  _ d  S| j r¼t |  _ d  S| j d k rä|  j j | j ƒ qkn  |  j j | ƒ qkW| j
 d	 ƒ } xi | D]a } t ƒ  } | j | ƒ | j d  k rI| j |  _ d  S| j r_t |  _ d  S|  j j | ƒ qWd  S(
   NR=   R   R   RK   t	   dcategoryt   metert   energy_meters
   .//dparamss	   .//values(   R   R&   R   R   R   R   R   RK   RP   R$   R    t   DeviceParameterR"   t   valueRM   R(   t   keyRL   t   DeviceValueRN   (   R   R)   t   paramst   pt   paramt   valuest   vt   devValue(    (    s5   /var/www/titaniumci/src/containers/DeviceContainer.pyR"   ž   sp    														c         C   s«   t  j d d |  j d |  j ƒ} t  j d ƒ } x$ |  j D] } | j | j ƒ  ƒ q: W| j | ƒ t  j d ƒ } x$ |  j D] } | j | j ƒ  ƒ q} W| j | ƒ | S(   NR<   R=   R   t   dparamsR[   (   R    R   R&   R   RL   R(   R8   RN   (   R   R<   R^   RY   R[   t   val(    (    s5   /var/www/titaniumci/src/containers/DeviceContainer.pyR8   ä   s    !c         C   s<   | d |  j  |  _ x! |  j D] } | j |  j ƒ q Wd  S(   Nt   .(   R&   RO   RN   R'   (   R   t   lidR_   (    (    s5   /var/www/titaniumci/src/containers/DeviceContainer.pyR'   ù   s    N(   RI   RJ   R   R   R"   R8   R'   (    (    (    s5   /var/www/titaniumci/src/containers/DeviceContainer.pyR!      s   !	F	RT   c           B   s)   e  Z d d d  „ Z d „  Z d „  Z RS(   c         C   s(   | |  _  | |  _ d  |  _ t |  _ d  S(   N(   RV   RU   R   R   R   R   (   R   RV   RU   (    (    s5   /var/www/titaniumci/src/containers/DeviceContainer.pyR     s    			c         C   s|   | j  d ƒ |  _ |  j d k r. d |  _ d  S|  j d  k rJ t |  _ d  S| j  d ƒ |  _ |  j d  k rx t |  _ d  Sd  S(   Nt   kR   R\   (   R   RV   R   R   R   R   RU   (   R   R)   (    (    s5   /var/www/titaniumci/src/containers/DeviceContainer.pyR"     s    			c         C   s   t  j d d |  j d |  j ƒS(   NRY   Rb   R\   (   R    R   RV   RU   (   R   (    (    s5   /var/www/titaniumci/src/containers/DeviceContainer.pyR8     s    N(   RI   RJ   R   R   R"   R8   (    (    (    s5   /var/www/titaniumci/src/containers/DeviceContainer.pyRT   ÿ   s   	RW   c           B   s8   e  Z d d d d d  „ Z d „  Z d „  Z d „  Z RS(   c         C   s   | |  _  | |  _ | |  _ d |  _ g  |  _ g  |  _ d  |  _ t |  _	 | |  _
 i d d 6d d 6d d 6d d	 6d
 d 6d d 6d d 6|  _ d  S(   Ns   nvarchar(100)t   smallintt   INT16t   intt   INT32t   bigintt   INT64t   floatt   FLOAT32t   bitt   BOOLt	   timestampt	   TIMESTAMPt   STRING(   t   valueIdt   lvidR   t   datatypeRL   RM   R   R   R   R   t   storaget   datatype_dict(   R   Rp   R   Rq   Rs   (    (    s5   /var/www/titaniumci/src/containers/DeviceContainer.pyR     s     									
c         C   sÅ  | j  d ƒ |  _ |  j d k r. d |  _ d  S|  j d  k rJ t |  _ d  S| j  d ƒ |  _ |  j d k rx d |  _ d  S|  j d  k r” t |  _ d  S| j  d ƒ |  _ |  j d  k rÁ d |  _ n  | j  d ƒ } | d  k r| |  j k r|  j j  | ƒ |  _	 qd |  _	 n  | j
 d ƒ } | d  k rÁx” | D]‰ } t ƒ  } | j | ƒ | j d  k rl| j |  _ d  S| j r‚t |  _ d  S| j d k rª|  j j | j ƒ q1n  |  j j | ƒ q1Wn  d  S(	   Nt   svidR   R   Rs   t   cyclicRr   s   nvarchar(100)s
   .//vparams(   R   Rp   R   R   R   R   R   Rs   Rt   Rr   R    t   ValueParameterR"   RU   RM   R(   RV   RL   (   R   t   xmlmsgt   data_storage_typeRX   RY   RZ   (    (    s5   /var/www/titaniumci/src/containers/DeviceContainer.pyR"   1  sJ    							c         C   sh   t  j d d |  j d |  j ƒ} t  j d ƒ } x$ |  j D] } | j | j ƒ  ƒ q: W| j | ƒ | S(   NRU   Ru   R   RL   (   R    R   Rp   R   RL   R(   R8   (   R   RU   RL   RZ   (    (    s5   /var/www/titaniumci/src/containers/DeviceContainer.pyR8   a  s    !c         C   s   | d |  j  |  _ d  S(   NR`   (   Rp   Rq   (   R   RO   (    (    s5   /var/www/titaniumci/src/containers/DeviceContainer.pyR'   o  s    N(   RI   RJ   R   R   R"   R8   R'   (    (    (    s5   /var/www/titaniumci/src/containers/DeviceContainer.pyRW     s   	0	Rw   c           B   s)   e  Z d d d  „ Z d „  Z d „  Z RS(   c         C   s(   | |  _  | |  _ d  |  _ t |  _ d  S(   N(   RV   RU   R   R   R   R   (   R   RV   RU   (    (    s5   /var/www/titaniumci/src/containers/DeviceContainer.pyR   v  s    			c         C   s|   | j  d ƒ |  _ |  j d k r. d |  _ d  S|  j d  k rJ t |  _ d  S| j  d ƒ |  _ |  j d  k rx t |  _ d  Sd  S(   NRb   R   R\   (   R   RV   R   R   R   R   RU   (   R   R)   (    (    s5   /var/www/titaniumci/src/containers/DeviceContainer.pyR"   }  s    			c         C   s   t  j d d |  j d |  j ƒS(   NRY   Rb   R\   (   R    R   RV   RU   (   R   (    (    s5   /var/www/titaniumci/src/containers/DeviceContainer.pyR8     s    N(   RI   RJ   R   R   R"   R8   (    (    (    s5   /var/www/titaniumci/src/containers/DeviceContainer.pyRw   t  s   	(    (    (    (    (   t   lxmlR    t   src.LoggingClassesR   t   src.settingsR   R   t   objectR!   RT   RW   Rw   (    (    (    s5   /var/www/titaniumci/src/containers/DeviceContainer.pyt   <module>   s   ˆrZ