/*
* 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.criterion;
import java.util.HashMap;
import java.util.Map;
/**
* Represents the parameters that can be passed into Oracle's Spatial operators
*
* @author Karel Maesen
*/
public class SDOParameterMap {
/**
* The distance parameter
*/
public static final String DISTANCE = "distance";
/**
* The sdo_batch_size parameter
*/
public static final String SDO_BATCH_SIZE = "sdo_batch_size";
/**
* The sdo_num_res parameter
*/
public static final String SDO_NUM_RES = "sdo_num_res";
/**
* The unit parameter
*/
public static final String UNIT = "unit";
/**
* The min_resolution parameter
*/
public static final String MIN_RESOLUTION = "min_resolution";
/**
* The max_resolution parameter
*/
public static final String MAX_RESOLUTION = "max_resolution";
/**
* The mask parameter
*/
public static final String MASK = "mask";
/**
* The querytype parameter
*/
public static final String QUERYTYPE = "querytype";
private Map<String, Object> params = new HashMap<String, Object>();
/**
* Constructs an empty instance
*/
public SDOParameterMap() {
}
/**
* Checks whether this instance is empty
*
* @return true if empty, false otherwise
*/
public boolean isEmpty() {
return this.params.isEmpty();
}
public Double getDistance() {
return (Double) params.get( DISTANCE );
}
/**
* Adds the distance parameter with the specified value
*
* @param distance The value for the distance parameter
*/
public void setDistance(Double distance) {
if ( distance != null ) {
params.put( DISTANCE, distance );
}
}
/**
* Removes the distance parameter
*/
public void removeDistance() {
params.remove( DISTANCE );
}
public Integer getSdoBatchSize() {
return (Integer) params.get( SDO_BATCH_SIZE );
}
/**
* Adds the sdo_batch_size parameter with the specified value
*
* @param size The value for the sdo_batch_size parameter
*/
public void setSdoBatchSize(Integer size) {
if ( size != null ) {
params.put( SDO_BATCH_SIZE, size );
}
}
/**
* Removes the sdo_batch_size parameter
*/
public void removeSdoBatchSize() {
params.remove( SDO_BATCH_SIZE );
}
public Integer getSdoNumRes() {
return (Integer) params.get( SDO_NUM_RES );
}
/**
* Adds the sdo_num_res parameter with the specified value
*
* @param res The value for the sdo_num_res parameter
*/
public void setSdoNumRes(Integer res) {
if ( res != null ) {
params.put( SDO_NUM_RES, res );
}
}
/**
* Removes the sdo_num_res parameter
*/
public void removeSdoNumRes() {
params.remove( SDO_NUM_RES );
}
public String getUnit() {
return (String) this.params.get( UNIT );
}
/**
* Adds the unit parameter with the specified value
*
* @param unit The value for the unit parameter
*/
public void setUnit(String unit) {
if ( unit != null ) {
this.params.put( UNIT, unit );
}
}
/**
* Removes the unit parameter
*/
public void removeUnit() {
this.params.remove( UNIT );
}
public Double getMaxResolution() {
return (Double) params.get( MAX_RESOLUTION );
}
/**
* Adds the max_resolution parameter with the specified value
*
* @param res The value for the max_resolution parameter
*/
public void setMaxResolution(Double res) {
if ( res != null ) {
params.put( MAX_RESOLUTION, res );
}
}
/**
* Removes the max_resolution parameter
*/
public void removeMaxResolution() {
params.remove( MAX_RESOLUTION );
}
public Double getMinResolution() {
return (Double) params.get( MIN_RESOLUTION );
}
/**
* Adds the min_resolution parameter with the specified value
*
* @param res The value for the min_resolution parameter
*/
public void setMinResolution(Double res) {
if ( res != null ) {
params.put( MIN_RESOLUTION, res );
}
}
/**
* Removes the min_resolution parameter
*/
public void removeMinResolution() {
params.remove( MIN_RESOLUTION );
}
public String getMask() {
return (String) this.params.get( MASK );
}
/**
* Adds the mask parameter with the specified value
*
* @param mask The value for the mask parameter
*/
public void setMask(String mask) {
if ( mask != null ) {
this.params.put( MASK, mask );
}
}
/**
* Removes the mask parameter
*/
public void removeMask() {
this.params.remove( MASK );
}
/**
* Adds the querytype parameter with value "FILTER"
*/
public void setQueryTypeToFilter() {
this.params.put( QUERYTYPE, "FILTER" );
}
public String getQueryType() {
return (String) this.params.get( QUERYTYPE );
}
/**
* Adds the querytype parameter with the specified value
*
* @param queryType The value for the quertype parameter
*/
public void setQueryType(String queryType) {
if ( queryType != null ) {
this.params.put( QUERYTYPE, queryType );
}
}
/**
* Removes the querytype parameter
*/
public void removeQueryType() {
this.params.remove( QUERYTYPE );
}
/**
* Returns all parameters contained in this instance as a quoted String containing
* the <parameter name>=<parameter value> pairs separated by spaces.
*
* The return format is as expected by the various SDO_GEOMETRY spatial functions.
*
* @return String
*/
public String toQuotedString() {
final StringBuilder stb = new StringBuilder();
if ( params.isEmpty() ) {
return "";
}
stb.append( '\'' );
for ( Map.Entry<String, Object> kv : params.entrySet() ) {
if ( kv.getValue() == null ) {
continue;
}
stb.append( kv.getKey() ).append( "=" ).append( kv.getValue() ).append( " " );
}
stb.deleteCharAt( stb.length() - 1 );
stb.append( '\'' );
return stb.toString();
}
}