/* * Copyright (C) 2011, Emergya (http://www.emergya.es) * * @author <a href="mailto:marias@emergya.com">MarĂ­a Arias</a> * * This file is part of GoFleet * * This software is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * As a special exception, if you link this library with other files to * produce an executable, this library does not by itself cause the * resulting executable to be covered by the GNU General Public License. * This exception does not however invalidate any other reasons why the * executable file might be covered by the GNU General Public License. */ package org.gofleet.openLS.ddbb.order; import org.hibernate.Criteria; import org.hibernate.HibernateException; import org.hibernate.criterion.CriteriaQuery; import org.hibernate.criterion.Order; import com.vividsolutions.jts.geom.Geometry; /** * @author marias * */ public class StDistance extends Order { private static final long serialVersionUID = -3189851876865663801L; protected String propertyName = ""; protected Geometry geom = null; protected boolean ascending = false; protected StDistance(String propertyName, Geometry geom, boolean ascending) { super(propertyName, ascending); this.propertyName = propertyName; this.geom = geom; this.ascending = ascending; } public String toSqlString(Criteria criteria, CriteriaQuery criteriaQuery) throws HibernateException { return toString() + (ascending ? " asc" : " desc"); } @Override public String toString() { return "st_distance(" + propertyName + ", st_geomfromtext('" + geom.toText() + "', " + geom.getSRID() + "))"; } public static StDistance asc(String propertyName, Geometry geom) { return new StDistance(propertyName, geom, true); } public static StDistance des(String propertyName, Geometry geom) { return new StDistance(propertyName, geom, false); } }