mirror of
https://github.com/postgres/postgres.git
synced 2025-08-28 18:48:04 +03:00
Another attempt at 7.0
This commit is contained in:
108
src/interfaces/jdbc/org/postgresql/geometric/PGcircle.java
Normal file
108
src/interfaces/jdbc/org/postgresql/geometric/PGcircle.java
Normal file
@@ -0,0 +1,108 @@
|
||||
package org.postgresql.geometric;
|
||||
|
||||
import java.io.*;
|
||||
import java.sql.*;
|
||||
import org.postgresql.util.*;
|
||||
|
||||
/**
|
||||
* This represents org.postgresql's circle datatype, consisting of a point and
|
||||
* a radius
|
||||
*/
|
||||
public class PGcircle extends PGobject implements Serializable,Cloneable
|
||||
{
|
||||
/**
|
||||
* This is the centre point
|
||||
*/
|
||||
public PGpoint center;
|
||||
|
||||
/**
|
||||
* This is the radius
|
||||
*/
|
||||
double radius;
|
||||
|
||||
/**
|
||||
* @param x coordinate of centre
|
||||
* @param y coordinate of centre
|
||||
* @param r radius of circle
|
||||
*/
|
||||
public PGcircle(double x,double y,double r)
|
||||
{
|
||||
this(new PGpoint(x,y),r);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param c PGpoint describing the circle's centre
|
||||
* @param r radius of circle
|
||||
*/
|
||||
public PGcircle(PGpoint c,double r)
|
||||
{
|
||||
this();
|
||||
this.center = c;
|
||||
this.radius = r;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param s definition of the circle in PostgreSQL's syntax.
|
||||
* @exception SQLException on conversion failure
|
||||
*/
|
||||
public PGcircle(String s) throws SQLException
|
||||
{
|
||||
this();
|
||||
setValue(s);
|
||||
}
|
||||
|
||||
/**
|
||||
* This constructor is used by the driver.
|
||||
*/
|
||||
public PGcircle()
|
||||
{
|
||||
setType("circle");
|
||||
}
|
||||
|
||||
/**
|
||||
* @param s definition of the circle in PostgreSQL's syntax.
|
||||
* @exception SQLException on conversion failure
|
||||
*/
|
||||
public void setValue(String s) throws SQLException
|
||||
{
|
||||
PGtokenizer t = new PGtokenizer(PGtokenizer.removeAngle(s),',');
|
||||
if(t.getSize() != 2)
|
||||
throw new PSQLException("postgresql.geo.circle",s);
|
||||
|
||||
try {
|
||||
center = new PGpoint(t.getToken(0));
|
||||
radius = Double.valueOf(t.getToken(1)).doubleValue();
|
||||
} catch(NumberFormatException e) {
|
||||
throw new PSQLException("postgresql.geo.circle",e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param obj Object to compare with
|
||||
* @return true if the two boxes are identical
|
||||
*/
|
||||
public boolean equals(Object obj)
|
||||
{
|
||||
if(obj instanceof PGcircle) {
|
||||
PGcircle p = (PGcircle)obj;
|
||||
return p.center.equals(center) && p.radius==radius;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* This must be overidden to allow the object to be cloned
|
||||
*/
|
||||
public Object clone()
|
||||
{
|
||||
return new PGcircle((PGpoint)center.clone(),radius);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the PGcircle in the syntax expected by org.postgresql
|
||||
*/
|
||||
public String getValue()
|
||||
{
|
||||
return "<"+center+","+radius+">";
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user