ó
Ø}…_c           @   s2   d  d l  Z  d  d l j Z d d d „  ƒ  YZ d S(   iÿÿÿÿNt   CommonDBc           B   sV   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 RS(	   i    c         C   sd   t  j |  _ |  j j d ƒ | |  _ | |  _ | |  _ | |  _ d  |  _ |  j j d |  j ƒ d  S(   Ns   CommonDB initialized 1s   CommonDB initialized 2(	   t   settingst   loggert   debugt   _Hostt   _Usert	   _Passwordt   _Schemat   Nonet   _Connection(   t   selft   hostt   usert   passwordt   schema(    (    s0   /var/www/titaniumci/src/dbconnectors/CommonDB.pyt   __init__	   s    					c         C   s    |  j  d  k	 r |  j ƒ  n  d  S(   N(   R	   R   t
   disconnect(   R
   (    (    s0   /var/www/titaniumci/src/dbconnectors/CommonDB.pyt   __del__   s    c         C   sZ   |  j  d  k	 r7 t j d 8_ |  j  j ƒ  d  |  _  n  |  j j d j d t j ƒ ƒ d  S(   Ni   s"   Closed COMMONDB DBConnection: {_c}t   _c(   R	   R   R    t   COMMONDB_CONNECTIONt   closeR   t   warningt   format(   R
   (    (    s0   /var/www/titaniumci/src/dbconnectors/CommonDB.pyR      s
    c         C   sn   |  j  d  k rj t j d 7_ |  j j d j d t j ƒ ƒ t j d |  j	 d |  j
 d |  j ƒ |  _  n  d  S(   Ni   s    Open COMMONDB DBConnection: {_c}R   t   serverR   R   (   R	   R   R    R   R   R   R   t   pymssqlt   connectR   R   R   (   R
   (    (    s0   /var/www/titaniumci/src/dbconnectors/CommonDB.pyR   #   s    c         C   sP   |  j  d  k rL |  j  j ƒ  } | j d |  j d | f ƒ | j ƒ  } | Sd  S(   Ns   use sI   ; SELECT customer, default_db_id FROM authentication WHERE auth_token=%s (   R	   R   t   cursort   executeR   t   fetchone(   R
   t   tokent   curt   res(    (    s0   /var/www/titaniumci/src/dbconnectors/CommonDB.pyt
   checkToken*   s
    c   
      C   s¯  |  j  d  k r«|  j  j ƒ  } | j d | | f ƒ | j ƒ  } i i  d 6g  d 6} | g  k rfx| D]ø } i  } | d | d <| d | d <| d | d	 <| d
 | d <| d | d <| d | d <| d | d <| d t k rò | | d <n | d j | ƒ | d }	 |	 t k	 rg |  j | d | d | d | d	 ƒ | j d j d | d	 ƒ ƒ qg qg Wn |  j	 j
 d | d | ƒ |  j	 j d | d	 ƒ |  j  j ƒ  | Sd  S(   Nsœ  SELECT db_info.host, db_info.port, db_info.db_name,
                                db_info.db_type, db_info.username, db_info.psw,
                                data_routing.master_db, db_info.db_adjusted
                        FROM db_info 
                        JOIN data_routing ON db_info.db_id=data_routing.db_id
                        WHERE data_routing.logger_id = %s AND data_routing.auth_token=%st   mastert   mirrori    R   i   t   porti   t   db_namei   t   db_typei   t   usernamei   t   pswi   t	   master_dbi   sU   UPDATE db_info SET db_adjusted=1 
                        WHERE db_name='{_db_name}' t   _db_names%   No routing data was found for logger s    and authentication token s   db_name (   R	   R   R   R   t   fetchallt   Truet   appendt	   adjust_dbR   R   R   t   infot   commit(
   R
   t	   logger_idt   default_db_idR   R   R   t   routing_info_dictt   rowt   routing_infot   db_adjusted(    (    s0   /var/www/titaniumci/src/dbconnectors/CommonDB.pyt   get_routing_data3   s@    


!c         C   sf   |  j  d  k	 rb |  j  j ƒ  } | j d |  j d | | f ƒ | j ƒ  } | d  k	 r[ t St Sn  d  S(   Ns   use sU   ; SELECT db_id FROM data_routing WHERE logger_id=%s AND auth_token=%s AND master_db=1(   R	   R   R   R   R   R   R+   t   False(   R
   t   loggerIdR   R   R   (    (    s0   /var/www/titaniumci/src/dbconnectors/CommonDB.pyt   checkLoggerIdt   s    !c         C   s  t  j d | d | d | ƒ } | j ƒ  } y› | j d | d ƒ | j d ƒ | j d ƒ | j d ƒ | j d	 ƒ | j d
 ƒ | j d ƒ | j d ƒ | j d ƒ | j d ƒ | j d ƒ Wn7 t k
 rþ } | j ƒ  |  j j d t | ƒ ƒ n X| j	 ƒ  | j
 ƒ  d  S(   NR   R   R   s   use t   ;sD   ALTER TABLE xxx_Virtual_Devices ALTER COLUMN Table_name varchar(255)sL   ALTER TABLE xxx_RAW_Device_Properties ALTER COLUMN DEVICE_VALUE varchar(255)s'   DROP INDEX xxx_Last_Data.Table_Name_IDXs?   ALTER TABLE xxx_Last_Data ALTER COLUMN Table_Name nvarchar(255)s)  CREATE NONCLUSTERED INDEX [Table_Name_IDX] ON [dbo].[xxx_Last_Data] 
			(	
   			 [Table_Name] ASC
			)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY] sK   ALTER TABLE xxx_Plant_Device DROP CONSTRAINT PK__xxx_Plan__3214EC2707020F21s+   ALTER TABLE xxx_Plant_Device DROP COLUMN IDs-   DROP INDEX xxx_Plant_Device.Date_and_Time_IDXsI   ALTER TABLE xxx_Plant_Device ALTER COLUMN Date_and_Time datetime NOT NULLs<   ALTER TABLE xxx_Plant_Device ADD PRIMARY KEY (Date_and_Time)s    CommonDB: Error when updating DB(   R   R   R   R   t	   Exceptiont   rollbackR   t   errort   strR/   R   (   R
   R   R   R'   R$   t   connR   t   e(    (    s0   /var/www/titaniumci/src/dbconnectors/CommonDB.pyR-      s(    

(   t   __name__t
   __module__R   R   R   R   R   R    R6   R9   R-   (    (    (    s0   /var/www/titaniumci/src/dbconnectors/CommonDB.pyR       s   								A	(    (   R   t   src.settingsR   R    (    (    (    s0   /var/www/titaniumci/src/dbconnectors/CommonDB.pyt   <module>   s   