/*
 * Copyright (c) 2003, PostgreSQL Global Development Group
 * See the LICENSE file in the project root for more information.
 */

package org.postgresql.geometric;

import org.postgresql.util.GT;
import org.postgresql.util.PGobject;
import org.postgresql.util.PGtokenizer;
import org.postgresql.util.PSQLException;
import org.postgresql.util.PSQLState;

import java.io.Serializable;
import java.sql.SQLException;

This represents org.postgresql's circle datatype, consisting of a point and a radius.
/** * 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 center point.
/** * This is the center point. */
public PGpoint center;
This is the radius.
/** * This is the radius. */
public double radius;
Params:
  • x – coordinate of center
  • y – coordinate of center
  • r – radius of circle
/** * @param x coordinate of center * @param y coordinate of center * @param r radius of circle */
public PGcircle(double x, double y, double r) { this(new PGpoint(x, y), r); }
Params:
  • c – PGpoint describing the circle's center
  • r – radius of circle
/** * @param c PGpoint describing the circle's center * @param r radius of circle */
public PGcircle(PGpoint c, double r) { this(); this.center = c; this.radius = r; }
Params:
  • s – definition of the circle in PostgreSQL's syntax.
Throws:
/** * @param s definition of the circle in PostgreSQL's syntax. * @throws SQLException on conversion failure */
public PGcircle(String s) throws SQLException { this(); setValue(s); }
This constructor is used by the driver.
/** * This constructor is used by the driver. */
public PGcircle() { setType("circle"); }
Params:
  • s – definition of the circle in PostgreSQL's syntax.
Throws:
/** * @param s definition of the circle in PostgreSQL's syntax. * @throws SQLException on conversion failure */
@Override public void setValue(String s) throws SQLException { PGtokenizer t = new PGtokenizer(PGtokenizer.removeAngle(s), ','); if (t.getSize() != 2) { throw new PSQLException(GT.tr("Conversion to type {0} failed: {1}.", type, s), PSQLState.DATA_TYPE_MISMATCH); } try { center = new PGpoint(t.getToken(0)); radius = Double.parseDouble(t.getToken(1)); } catch (NumberFormatException e) { throw new PSQLException(GT.tr("Conversion to type {0} failed: {1}.", type, s), PSQLState.DATA_TYPE_MISMATCH, e); } }
Params:
  • obj – Object to compare with
Returns:true if the two circles are identical
/** * @param obj Object to compare with * @return true if the two circles 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; } public int hashCode() { long v = Double.doubleToLongBits(radius); return (int) (center.hashCode() ^ v ^ (v >>> 32)); } public Object clone() throws CloneNotSupportedException { PGcircle newPGcircle = (PGcircle) super.clone(); if (newPGcircle.center != null) { newPGcircle.center = (PGpoint) newPGcircle.center.clone(); } return newPGcircle; }
Returns:the PGcircle in the syntax expected by org.postgresql
/** * @return the PGcircle in the syntax expected by org.postgresql */
public String getValue() { return "<" + center + "," + radius + ">"; } }