summaryrefslogtreecommitdiff
path: root/src/interfaces/jdbc/org/postgresql/geometric/PGpolygon.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/interfaces/jdbc/org/postgresql/geometric/PGpolygon.java')
-rw-r--r--src/interfaces/jdbc/org/postgresql/geometric/PGpolygon.java105
1 files changed, 105 insertions, 0 deletions
diff --git a/src/interfaces/jdbc/org/postgresql/geometric/PGpolygon.java b/src/interfaces/jdbc/org/postgresql/geometric/PGpolygon.java
new file mode 100644
index 0000000000..b805a1df30
--- /dev/null
+++ b/src/interfaces/jdbc/org/postgresql/geometric/PGpolygon.java
@@ -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();
+ }
+}