List of usage examples for org.hibernate.criterion SimpleProjection SimpleProjection
SimpleProjection
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; } }; }