PGlseg.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 implements a lseg (line segment) consisting of two points
  7.  */
  8. public class PGlseg 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 coordinate for first point
  17.    * @param y1 coordinate for first point
  18.    * @param x2 coordinate for second point
  19.    * @param y2 coordinate for second point
  20.    */
  21.   public PGlseg(double x1,double y1,double x2,double y2)
  22.   {
  23.     this(new PGpoint(x1,y1),new PGpoint(x2,y2));
  24.   }
  25.   
  26.   /**
  27.    * @param p1 first point
  28.    * @param p2 second point
  29.    */
  30.   public PGlseg(PGpoint p1,PGpoint p2)
  31.   {
  32.     this();
  33.     this.point[0] = p1;
  34.     this.point[1] = p2;
  35.   }
  36.   
  37.   /**
  38.    * @param s definition of the circle in PostgreSQL's syntax.
  39.    * @exception SQLException on conversion failure
  40.    */
  41.   public PGlseg(String s) throws SQLException
  42.   {
  43.     this();
  44.     setValue(s);
  45.   }
  46.   
  47.   /**
  48.    * reuired by the driver
  49.    */
  50.   public PGlseg()
  51.   {
  52.     setType("lseg");
  53.   }
  54.   
  55.   /**
  56.    * @param s Definition of the line segment in PostgreSQL's syntax
  57.    * @exception SQLException on conversion failure
  58.    */
  59.   public void setValue(String s) throws SQLException
  60.   {
  61.     PGtokenizer t = new PGtokenizer(PGtokenizer.removeBox(s),',');
  62.     if(t.getSize() != 2)
  63.       throw new PSQLException("postgresql.geo.lseg");
  64.     
  65.     point[0] = new PGpoint(t.getToken(0));
  66.     point[1] = new PGpoint(t.getToken(1));
  67.   }
  68.   
  69.   /**
  70.    * @param obj Object to compare with
  71.    * @return true if the two boxes are identical
  72.    */
  73.   public boolean equals(Object obj)
  74.   {
  75.     if(obj instanceof PGlseg) {
  76.       PGlseg p = (PGlseg)obj;
  77.       return (p.point[0].equals(point[0]) && p.point[1].equals(point[1])) ||
  78. (p.point[0].equals(point[1]) && p.point[1].equals(point[0]));
  79.     }
  80.     return false;
  81.   }
  82.   
  83.   /**
  84.    * This must be overidden to allow the object to be cloned
  85.    */
  86.   public Object clone()
  87.   {
  88.     return new PGlseg((PGpoint)point[0].clone(),(PGpoint)point[1].clone());
  89.   }
  90.   
  91.   /**
  92.    * @return the PGlseg in the syntax expected by postgresql
  93.    */
  94.   public String getValue()
  95.   {
  96.     return "["+point[0]+","+point[1]+"]";
  97.   }
  98. }