
    dfu                     J    d dl mZ d dlmZ d dlmZmZ  G d de          ZdS )    )GeometryField)DatabaseSchemaEditor)strip_quotestruncate_namec                        e Zd ZdZdZdZdZdZ fdZd Z	 fdZ
d fd
	Z fdZ fdZ fdZ fdZd Zd Z xZS )OracleGISSchemaEditora  
        INSERT INTO USER_SDO_GEOM_METADATA
            ("TABLE_NAME", "COLUMN_NAME", "DIMINFO", "SRID")
        VALUES (
            %(table)s,
            %(column)s,
            MDSYS.SDO_DIM_ARRAY(
                MDSYS.SDO_DIM_ELEMENT('LONG', %(dim0)s, %(dim2)s, %(tolerance)s),
                MDSYS.SDO_DIM_ELEMENT('LAT', %(dim1)s, %(dim3)s, %(tolerance)s)
            ),
            %(srid)s
        )zPCREATE INDEX %(index)s ON %(table)s(%(column)s) INDEXTYPE IS MDSYS.SPATIAL_INDEXzDROP INDEX %(index)sz?DELETE FROM USER_SDO_GEOM_METADATA WHERE TABLE_NAME = %(table)sz\DELETE FROM USER_SDO_GEOM_METADATA WHERE TABLE_NAME = %(table)s AND COLUMN_NAME = %(column)sc                 H     t                      j        |i | g | _        d S N)super__init__geometry_sql)selfargskwargs	__class__s      hD:\Python Project\djangoTemplates\venv\Lib\site-packages\django/contrib/gis/db/backends/oracle/schema.pyr   zOracleGISSchemaEditor.__init__    s-    $)&)))    c                 @    | j         j                            |          S r
   )
connectionopsgeo_quote_name)r   names     r   r   z$OracleGISSchemaEditor.geo_quote_name$   s    "11$777r   c                     t          || j        j        j                  r.t	                                          t          |                    S t	                                          |          S r
   )
isinstancer   r   Adapterr   quote_valuestr)r   valuer   s     r   r   z!OracleGISSchemaEditor.quote_value'   sS    eT_0899 	377&&s5zz222ww""5)))r   Fc                    t                                          |||          }t          |t                    r|j        j        }| j                            | j        | 	                    |          | 	                    |j
                  |j        d         |j        d         |j        d         |j        d         |j        |j        dz             |j        rx| j                            | j        |                     |                     ||                    |                     |          |                     |j
                  dz             |S )Nr            )tablecolumndim0dim1dim2dim3	tolerancesrid)indexr#   r$   )r   
column_sqlr   r   _metadb_tabler   appendsql_add_geometry_metadatar   r$   _extent
_tolerancer*   spatial_indexsql_add_spatial_index
quote_name_create_spatial_index_name)r   modelfieldinclude_defaultr,   r.   r   s         r   r,   z OracleGISSchemaEditor.column_sql,   sL   WW''uoFF
e]++ 	{+H$$.!00::"11%,??!M!,!M!,!M!,!M!,!&!1!J	 	
   " 
!((.!% ;;E5II" " "&!:!:"&//%,"?"? 	 	 	 r   c                 r    t                                          |           |                                  d S r
   )r   create_modelrun_geometry_sqlr   r7   r   s     r   r;   z"OracleGISSchemaEditor.create_modelJ   s3    U###r   c                     t                                          |           |                     | j        d|                     |j        j                  iz             d S )Nr#   )r   delete_modelexecute!sql_clear_geometry_table_metadatar   r-   r.   r=   s     r   r?   z"OracleGISSchemaEditor.delete_modelN   sc    U###2,,U[-ABB	
 	
 	
 	
 	
r   c                 t    t                                          ||           |                                  d S r
   )r   	add_fieldr<   r   r7   r8   r   s      r   rC   zOracleGISSchemaEditor.add_fieldW   s5    %'''r   c           
         t          |t                    r|                     | j        |                     |j        j                  |                     |j                  dz             |j        rF|                     | j	        d| 
                    |                     ||                    iz             t                                          ||           d S )N)r#   r$   r+   )r   r   r@   !sql_clear_geometry_field_metadatar   r-   r.   r$   r3   sql_drop_spatial_indexr5   r6   r   remove_fieldrD   s      r   rH   z"OracleGISSchemaEditor.remove_field[   s    e]++ 	LL6!001EFF"11%,??    " / ;;E5II" "   	UE*****r   c                 R    | j         D ]}|                     |           g | _         d S r
   )r   r@   )r   sqls     r   r<   z&OracleGISSchemaEditor.run_geometry_sqlo   s7    $ 	 	CLLr   c                 f    t          t          |j        j                  d|j        dd          S )N__id   )r   r   r-   r.   r$   )r   r7   r8   s      r   r6   z0OracleGISSchemaEditor._create_spatial_index_namet   s9     &u{';<<<<elllKR
 
 	
r   )F)__name__
__module____qualname__r0   r4   rG   rA   rF   r   r   r   r,   r;   r?   rC   rH   r<   r6   __classcell__)r   s   @r   r   r      s,       !	+  4I &	' &
    8 8 8* * * * *
     <         
 
 
 
 
         + + + + +(  

 
 
 
 
 
 
r   r   N)django.contrib.gis.db.modelsr    django.db.backends.oracle.schemar   django.db.backends.utilsr   r   r    r   r   <module>rW      s    6 6 6 6 6 6 A A A A A A @ @ @ @ @ @ @ @s
 s
 s
 s
 s
0 s
 s
 s
 s
 s
r   