Example usage for org.hibernate.criterion SimpleProjection SimpleProjection

List of usage examples for org.hibernate.criterion SimpleProjection SimpleProjection

Introduction

In this page you can find the example usage for org.hibernate.criterion SimpleProjection SimpleProjection.

Prototype

SimpleProjection

Source Link

Usage

From source file:com.gisgraphy.hibernate.projection.SpatialProjection.java

License:Open Source License

/**
* projection to get the distance_sphere between a point and a LineString
* 
* @param point// w  w  w  . j a  v  a  2  s.  c o m
*                the point to get the distance
* @param lineStringColumnName the name of the lineString column
* @return the projection
* @see #distance(Point, String)
*/
public static SimpleProjection distance_pointToLine(final Point point, final String lineStringColumnName) {
    return new SimpleProjection() {

        private static final long serialVersionUID = -7424596977297450115L;

        /*
         * (non-Javadoc)
         * 
         * @see org.hibernate.criterion.Projection#getTypes(org.hibernate.Criteria,
         *      org.hibernate.criterion.CriteriaQuery)
         */
        public Type[] getTypes(Criteria criteria, CriteriaQuery criteriaQuery) throws HibernateException {
            return new Type[] { Hibernate.DOUBLE };
        }

        /*
         * (non-Javadoc)
         * 
         * @see org.hibernate.criterion.Projection#toSqlString(org.hibernate.Criteria,
         *      int, org.hibernate.criterion.CriteriaQuery)
         */
        public String toSqlString(Criteria criteria, int position, CriteriaQuery criteriaQuery)
                throws HibernateException {
            String columnName = criteriaQuery.getColumn(criteria, lineStringColumnName);
            String pointAsString = new StringBuffer("st_GeometryFromText( 'POINT(").append(point.getX())
                    .append(" ").append(point.getY()).append(")',").append(SRID.WGS84_SRID.getSRID())
                    .append(")").toString();

            /*String lineMerge = new StringBuffer(LINEMERGE_FUNCTION)
            .append("(")
            .append(columnName)
            .append(")").toString();*/
            String shape = columnName;

            String sqlString = new StringBuffer().append(DISTANCE_SPHERE_FUNCTION).append("(")
                    .append(pointAsString).append(",").append(ST_CLOSEST_POINT).append("(").append(shape)
                    .append(",").append(pointAsString).append(")").append(")").append("as y").append(position)
                    .append("_").toString();

            return sqlString;
        }

    };
}

From source file:com.gisgraphy.hibernate.projection.SpatialProjection.java

License:Open Source License

private static SimpleProjection distance_function(final Point point, final String locationColumnName,
        final String distanceFunction) {
    return new SimpleProjection() {

        /**/*ww  w .  ja v  a2 s . c  om*/
         * 
         */
        private static final long serialVersionUID = -8771843067497785957L;

        /*
         * (non-Javadoc)
         * 
         * @see org.hibernate.criterion.Projection#getTypes(org.hibernate.Criteria,
         *      org.hibernate.criterion.CriteriaQuery)
         */
        public Type[] getTypes(Criteria criteria, CriteriaQuery criteriaQuery) throws HibernateException {
            return new Type[] { Hibernate.DOUBLE };
        }

        /*
         * (non-Javadoc)
         * 
         * @see org.hibernate.criterion.Projection#toSqlString(org.hibernate.Criteria,
         *      int, org.hibernate.criterion.CriteriaQuery)
         */
        public String toSqlString(Criteria criteria, int position, CriteriaQuery criteriaQuery)
                throws HibernateException {
            String columnName = criteriaQuery.getColumn(criteria, locationColumnName);
            StringBuffer sb = new StringBuffer();
            String sqlString = sb.append(distanceFunction).append("(").append(columnName)
                    .append(", st_GeometryFromText( 'POINT(").append(point.getX()).append(" ")
                    .append(point.getY()).append(")',").append(SRID.WGS84_SRID.getSRID()).append(")) as y")
                    .append(position).append("_").toString();
            return sqlString;
        }

    };

}