mirror of
https://github.com/postgres/postgres.git
synced 2025-08-30 06:01:21 +03:00
106 lines
2.2 KiB
Java
106 lines
2.2 KiB
Java
package org.postgresql.geometric;
|
|
|
|
import java.io.*;
|
|
import java.sql.*;
|
|
import org.postgresql.util.*;
|
|
|
|
/**
|
|
* This implements the polygon datatype within PostgreSQL.
|
|
*/
|
|
public class PGpolygon extends PGobject implements Serializable,Cloneable
|
|
{
|
|
/**
|
|
* The points defining the polygon
|
|
*/
|
|
public PGpoint points[];
|
|
|
|
/**
|
|
* Creates a polygon using an array of PGpoints
|
|
*
|
|
* @param points the points defining the polygon
|
|
*/
|
|
public PGpolygon(PGpoint[] points)
|
|
{
|
|
this();
|
|
this.points = points;
|
|
}
|
|
|
|
/**
|
|
* @param s definition of the circle in PostgreSQL's syntax.
|
|
* @exception SQLException on conversion failure
|
|
*/
|
|
public PGpolygon(String s) throws SQLException
|
|
{
|
|
this();
|
|
setValue(s);
|
|
}
|
|
|
|
/**
|
|
* Required by the driver
|
|
*/
|
|
public PGpolygon()
|
|
{
|
|
setType("polygon");
|
|
}
|
|
|
|
/**
|
|
* @param s Definition of the polygon in PostgreSQL's syntax
|
|
* @exception SQLException on conversion failure
|
|
*/
|
|
public void setValue(String s) throws SQLException
|
|
{
|
|
PGtokenizer t = new PGtokenizer(PGtokenizer.removePara(s),',');
|
|
int npoints = t.getSize();
|
|
points = new PGpoint[npoints];
|
|
for(int p=0;p<npoints;p++)
|
|
points[p] = new PGpoint(t.getToken(p));
|
|
}
|
|
|
|
/**
|
|
* @param obj Object to compare with
|
|
* @return true if the two boxes are identical
|
|
*/
|
|
public boolean equals(Object obj)
|
|
{
|
|
if(obj instanceof PGpolygon) {
|
|
PGpolygon p = (PGpolygon)obj;
|
|
|
|
if(p.points.length != points.length)
|
|
return false;
|
|
|
|
for(int i=0;i<points.length;i++)
|
|
if(!points[i].equals(p.points[i]))
|
|
return false;
|
|
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* This must be overidden to allow the object to be cloned
|
|
*/
|
|
public Object clone()
|
|
{
|
|
PGpoint ary[] = new PGpoint[points.length];
|
|
for(int i=0;i<points.length;i++)
|
|
ary[i] = (PGpoint)points[i].clone();
|
|
return new PGpolygon(ary);
|
|
}
|
|
|
|
/**
|
|
* @return the PGpolygon in the syntax expected by org.postgresql
|
|
*/
|
|
public String getValue()
|
|
{
|
|
StringBuffer b = new StringBuffer();
|
|
b.append("(");
|
|
for(int p=0;p<points.length;p++) {
|
|
if(p>0) b.append(",");
|
|
b.append(points[p].toString());
|
|
}
|
|
b.append(")");
|
|
return b.toString();
|
|
}
|
|
}
|