org.hibernate.spatial.dialect.oracle.OracleSpatial10gDialect.java Source code

Java tutorial

Introduction

Here is the source code for org.hibernate.spatial.dialect.oracle.OracleSpatial10gDialect.java

Source

/*
 * Hibernate, Relational Persistence for Idiomatic Java
 *
 * License: GNU Lesser General Public License (LGPL), version 2.1 or later.
 * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
 */
package org.hibernate.spatial.dialect.oracle;

import java.io.Serializable;
import java.sql.Types;
import java.util.Map;

import org.hibernate.boot.model.TypeContributions;
import org.hibernate.dialect.Oracle10gDialect;
import org.hibernate.dialect.function.SQLFunction;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.spatial.HSMessageLogger;
import org.hibernate.spatial.SpatialDialect;
import org.hibernate.spatial.SpatialFunction;

import org.jboss.logging.Logger;

/**
 * Spatial Dialect for Oracle10g databases.
 *
 * @author Karel Maesen
 */
public class OracleSpatial10gDialect extends Oracle10gDialect implements SpatialDialect, Serializable {

    private static final HSMessageLogger log = Logger.getMessageLogger(HSMessageLogger.class,
            OracleSpatial10gDialect.class.getName());

    transient private OracleSDOSupport sdoSupport = new OracleSDOSupport(true);

    /**
     * Constructs the dialect with
     */
    public OracleSpatial10gDialect() {
        super();

        // register geometry type
        registerColumnType(Types.STRUCT, "MDSYS.SDO_GEOMETRY");
        for (Map.Entry<String, SQLFunction> entry : sdoSupport.functionsToRegister()) {
            registerFunction(entry.getKey(), entry.getValue());
        }

    }

    @Override
    public void contributeTypes(TypeContributions typeContributions, ServiceRegistry serviceRegistry) {
        super.contributeTypes(typeContributions, serviceRegistry);
        sdoSupport.contributeTypes(typeContributions, serviceRegistry);
    }

    @Override
    public String getSpatialFilterExpression(String columnName) {
        return sdoSupport.getSpatialFilterExpression(columnName);
    }

    @Override
    public String getSpatialRelateSQL(String columnName, int spatialRelation) {
        return sdoSupport.getSpatialRelateSQL(columnName, spatialRelation);
    }

    @Override
    public String getSpatialAggregateSQL(String columnName, int aggregation) {
        return sdoSupport.getSpatialAggregateSQL(columnName, aggregation);
    }

    @Override
    public String getDWithinSQL(String columnName) {
        return sdoSupport.getDWithinSQL(columnName);
    }

    @Override
    public String getHavingSridSQL(String columnName) {
        return sdoSupport.getHavingSridSQL(columnName);
    }

    @Override
    public String getIsEmptySQL(String columnName, boolean isEmpty) {
        return sdoSupport.getIsEmptySQL(columnName, isEmpty);
    }

    @Override
    public boolean supportsFiltering() {
        return sdoSupport.supportsFiltering();
    }

    @Override
    public boolean supports(SpatialFunction function) {
        return (getFunctions().get(function.toString()) != null);
    }

}