mirror of
https://github.com/postgres/postgres.git
synced 2025-08-31 17:02:12 +03:00
Another attempt at 7.0
This commit is contained in:
105
src/interfaces/jdbc/org/postgresql/geometric/PGpolygon.java
Normal file
105
src/interfaces/jdbc/org/postgresql/geometric/PGpolygon.java
Normal file
@@ -0,0 +1,105 @@
|
||||
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();
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user