PGcircle.java
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:2k
- package postgresql.geometric;
- import java.io.*;
- import java.sql.*;
- import postgresql.util.*;
- /**
- * This represents 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 postgresql
- */
- public String getValue()
- {
- return "<"+center+","+radius+">";
- }
- }