a
    È[Ùfu  ã                   @   s<   d dl mZ d dlmZ d dlmZmZ G dd„ deƒZdS )é    )ÚGeometryField)ÚDatabaseSchemaEditor)Ústrip_quotesÚtruncate_namec                       s’   e Zd ZdZdZdZdZdZ‡ fdd„Zdd	„ Z	‡ fd
d„Z
d‡ fdd„	Z‡ fdd„Z‡ fdd„Z‡ fdd„Z‡ fdd„Zdd„ Zdd„ Z‡  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                    s   t ƒ j|i |¤Ž g | _d S ©N)ÚsuperÚ__init__Úgeometry_sql)ÚselfÚargsÚkwargs©Ú	__class__© ú~C:\Users\91910\OneDrive\Desktop\vts_admin_rebuild-master\vts\Lib\site-packages\django/contrib/gis/db/backends/oracle/schema.pyr	       s    zOracleGISSchemaEditor.__init__c                 C   s   | j j |¡S r   )Ú
connectionÚopsÚgeo_quote_name)r   Únamer   r   r   r   $   s    z$OracleGISSchemaEditor.geo_quote_namec                    s,   t || jjjƒr tƒ  t|ƒ¡S tƒ  |¡S r   )Ú
isinstancer   r   ZAdapterr   Úquote_valueÚstr)r   Úvaluer   r   r   r   '   s    z!OracleGISSchemaEditor.quote_valueFc                    s°   t ƒ  |||¡}t|tƒr¬|jj}| j | j|  	|¡|  	|j
¡|jd |jd |jd |jd |j|jdœ ¡ |jr¬| j | j|  |  ||¡¡|  |¡|  |j
¡dœ ¡ |S )Nr   é   é   é   )ÚtableÚcolumnZdim0Zdim1Zdim2Zdim3Z	toleranceÚsrid)Úindexr   r   )r   Ú
column_sqlr   r   Ú_metaÚdb_tabler
   ÚappendÚsql_add_geometry_metadatar   r   Z_extentZ
_tolerancer   Úspatial_indexÚsql_add_spatial_indexÚ
quote_nameÚ_create_spatial_index_name)r   ÚmodelÚfieldÚinclude_defaultr!   r#   r   r   r   r!   ,   s8    

øÿÿ
ÿ
ûÿÿ
z OracleGISSchemaEditor.column_sqlc                    s   t ƒ  |¡ |  ¡  d S r   )r   Úcreate_modelÚrun_geometry_sql©r   r*   r   r   r   r-   J   s    z"OracleGISSchemaEditor.create_modelc                    s.   t ƒ  |¡ |  | jd|  |jj¡i ¡ d S )Nr   )r   Údelete_modelÚexecuteÚ!sql_clear_geometry_table_metadatar   r"   r#   r/   r   r   r   r0   N   s    ÿÿÿz"OracleGISSchemaEditor.delete_modelc                    s   t ƒ  ||¡ |  ¡  d S r   )r   Ú	add_fieldr.   ©r   r*   r+   r   r   r   r3   W   s    zOracleGISSchemaEditor.add_fieldc              
      sl   t |tƒrZ|  | j|  |jj¡|  |j¡dœ ¡ |jrZ|  | j	d|  
|  ||¡¡i ¡ tƒ  ||¡ d S )N)r   r   r    )r   r   r1   Ú!sql_clear_geometry_field_metadatar   r"   r#   r   r&   Úsql_drop_spatial_indexr(   r)   r   Úremove_fieldr4   r   r   r   r7   [   s$    

þÿÿ
ÿÿÿÿz"OracleGISSchemaEditor.remove_fieldc                 C   s    | j D ]}|  |¡ qg | _ d S r   )r
   r1   )r   Úsqlr   r   r   r.   o   s    
z&OracleGISSchemaEditor.run_geometry_sqlc                 C   s   t dt|jjƒ|jf dƒS )Nz%s_%s_idé   )r   r   r"   r#   r   r4   r   r   r   r)   t   s    ÿz0OracleGISSchemaEditor._create_spatial_index_name)F)Ú__name__Ú
__module__Ú__qualname__r%   r'   r6   r2   r5   r	   r   r   r!   r-   r0   r3   r7   r.   r)   Ú__classcell__r   r   r   r   r      s$   ÿÿÿ	r   N)Zdjango.contrib.gis.db.modelsr   Z django.db.backends.oracle.schemar   Zdjango.db.backends.utilsr   r   r   r   r   r   r   Ú<module>   s   