
 XJ                 @   s`   d  d l  m Z d  d l m Z d  d l m Z m Z d  d l m Z Gd d   d e  Z	 d S)    )CLOB)
WKTAdapter)GeometryCollectionPolygon)rangec               @   sF   e  Z d  Z e Z d d   Z d d   Z d d   Z d d   Z d	 S)
OracleSpatialAdapterc             C   sZ   t  | t  r |  j |  n t  | t  r> |  j |  n  | j |  _ | j |  _ d S)a  
        Oracle requires that polygon rings are in proper orientation. This
        affects spatial operations and an invalid orientation may cause
        failures. Correct orientations are:
         * Outer ring - counter clockwise
         * Inner ring(s) - clockwise
        N)
isinstancer   _fix_polygonr   _fix_geometry_collectionZwktZsrid)selfgeom r   [/home/ubuntu/projects/ifolica/build/django/django/contrib/gis/db/backends/oracle/adapter.py__init__   s    zOracleSpatialAdapter.__init__c             C   s   |  j  | j  r- t t | j   | _ n  xM t d t |   D]6 } |  j  | |  sC t t | |   | | <qC qC W| S)N   )_isClockwiseZexterior_ringlistreversedr   len)r   polyir   r   r   r	      s    !z!OracleSpatialAdapter._fix_polygonc             C   sF   x? t  |  D]1 \ } } t | t  r |  j |  | | <q q Wd  S)N)	enumerater   r   r	   )r   Zcollr   r   r   r   r   r
   &   s    z-OracleSpatialAdapter._fix_geometry_collectionc             C   s}   t  |  } d } x^ t |  D]P } | d | } | | | d | | d 7} | | | d | | d 8} q W| d k  S)Ng        r   r   )r   r   )r   Zcoordsnarear   jr   r   r   r   -   s    "z!OracleSpatialAdapter._isClockwiseN)	__name__
__module____qualname__r   Z
input_sizer   r	   r
   r   r   r   r   r   r      s
   r   N)
Z	cx_Oracler   Z+django.contrib.gis.db.backends.base.adapterr   Zdjango.contrib.gis.geosr   r   Zdjango.utils.six.movesr   r   r   r   r   r   <module>   s   