PGbox.java
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:2k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. package postgresql.geometric;
  2. import java.io.*;
  3. import java.sql.*;
  4. import postgresql.util.*;
  5. /**
  6.  * This  represents the box datatype within postgresql.
  7.  */
  8. public class PGbox extends PGobject implements Serializable,Cloneable
  9. {
  10.   /**
  11.    * These are the two points.
  12.    */
  13.   public PGpoint point[] = new PGpoint[2];
  14.   
  15.   /**
  16.    * @param x1 first x coordinate
  17.    * @param y1 first y coordinate
  18.    * @param x2 second x coordinate
  19.    * @param y2 second y coordinate
  20.    */
  21.   public PGbox(double x1,double y1,double x2,double y2)
  22.   {
  23.     this();
  24.     this.point[0] = new PGpoint(x1,y1);
  25.     this.point[1] = new PGpoint(x2,y2);
  26.   }
  27.   
  28.   /**
  29.    * @param p1 first point
  30.    * @param p2 second point
  31.    */
  32.   public PGbox(PGpoint p1,PGpoint p2)
  33.   {
  34.     this();
  35.     this.point[0] = p1;
  36.     this.point[1] = p2;
  37.   }
  38.   
  39.   /**
  40.    * @param s Box definition in PostgreSQL syntax
  41.    * @exception SQLException if definition is invalid
  42.    */
  43.   public PGbox(String s) throws SQLException
  44.   {
  45.     this();
  46.     setValue(s);
  47.   }
  48.   
  49.   /**
  50.    * Required constructor
  51.    */
  52.   public PGbox()
  53.   {
  54.     setType("box");
  55.   }
  56.   
  57.   /**
  58.    * This method sets the value of this object. It should be overidden,
  59.    * but still called by subclasses.
  60.    *
  61.    * @param value a string representation of the value of the object
  62.    * @exception SQLException thrown if value is invalid for this type
  63.    */
  64.   public void setValue(String value) throws SQLException
  65.   {
  66.     PGtokenizer t = new PGtokenizer(value,',');
  67.     if(t.getSize() != 2)
  68.       throw new PSQLException("postgresql.geo.box",value);
  69.     
  70.     point[0] = new PGpoint(t.getToken(0));
  71.     point[1] = new PGpoint(t.getToken(1));
  72.   }
  73.   
  74.   /**
  75.    * @param obj Object to compare with
  76.    * @return true if the two boxes are identical
  77.    */
  78.   public boolean equals(Object obj)
  79.   {
  80.     if(obj instanceof PGbox) {
  81.       PGbox p = (PGbox)obj;
  82.       return (p.point[0].equals(point[0]) && p.point[1].equals(point[1])) ||
  83. (p.point[0].equals(point[1]) && p.point[1].equals(point[0]));
  84.     }
  85.     return false;
  86.   }
  87.   
  88.   /**
  89.    * This must be overidden to allow the object to be cloned
  90.    */
  91.   public Object clone()
  92.   {
  93.     return new PGbox((PGpoint)point[0].clone(),(PGpoint)point[1].clone());
  94.   }
  95.   
  96.   /**
  97.    * @return the PGbox in the syntax expected by postgresql
  98.    */
  99.   public String getValue()
  100.   {
  101.     return point[0].toString()+","+point[1].toString();
  102.   }
  103. }