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

数据库系统

开发平台:

Unix_Linux

  1. package postgresql.geometric;
  2. import java.awt.Point;
  3. import java.io.*;
  4. import java.sql.*;
  5. import postgresql.util.*;
  6. /**
  7.  * This implements a version of java.awt.Point, except it uses double
  8.  * to represent the coordinates.
  9.  *
  10.  * <p>It maps to the point datatype in postgresql.
  11.  */
  12. public class PGpoint extends PGobject implements Serializable,Cloneable
  13. {
  14.   /**
  15.    * The X coordinate of the point
  16.    */
  17.   public double x;
  18.   
  19.   /**
  20.    * The Y coordinate of the point
  21.    */
  22.   public double y;
  23.   
  24.   /**
  25.    * @param x coordinate
  26.    * @param y coordinate
  27.    */
  28.   public PGpoint(double x,double y)
  29.   {
  30.     this();
  31.     this.x = x;
  32.     this.y = y;
  33.   }
  34.   
  35.   /**
  36.    * This is called mainly from the other geometric types, when a
  37.    * point is imbeded within their definition.
  38.    *
  39.    * @param value Definition of this point in PostgreSQL's syntax
  40.    */
  41.   public PGpoint(String value) throws SQLException
  42.   {
  43.     this();
  44.     setValue(value);
  45.   }
  46.   
  47.   /**
  48.    * Required by the driver
  49.    */
  50.   public PGpoint()
  51.   {
  52.     setType("point");
  53.   }
  54.   
  55.   /**
  56.    * @param s Definition of this point 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.removePara(s),',');
  62.     try {
  63.       x = Double.valueOf(t.getToken(0)).doubleValue();
  64.       y = Double.valueOf(t.getToken(1)).doubleValue();
  65.     } catch(NumberFormatException e) {
  66.       throw new PSQLException("postgresql.geo.point",e.toString());
  67.     }
  68.   }
  69.   
  70.   /**
  71.    * @param obj Object to compare with
  72.    * @return true if the two boxes are identical
  73.    */
  74.   public boolean equals(Object obj)
  75.   {
  76.     if(obj instanceof PGpoint) {
  77.       PGpoint p = (PGpoint)obj;
  78.       return x == p.x && y == p.y;
  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 PGpoint(x,y);
  89.   }
  90.   
  91.   /**
  92.    * @return the PGpoint in the syntax expected by postgresql
  93.    */
  94.   public String getValue()
  95.   {
  96.     return "("+x+","+y+")";
  97.   }
  98.   
  99.   /**
  100.    * Translate the point with the supplied amount.
  101.    * @param x integer amount to add on the x axis
  102.    * @param y integer amount to add on the y axis
  103.    */
  104.   public void translate(int x,int y)
  105.   {
  106.     translate((double)x,(double)y);
  107.   }
  108.   
  109.   /**
  110.    * Translate the point with the supplied amount.
  111.    * @param x double amount to add on the x axis
  112.    * @param y double amount to add on the y axis
  113.    */
  114.   public void translate(double x,double y)
  115.   {
  116.     this.x += x;
  117.     this.y += y;
  118.   }
  119.   
  120.   /**
  121.    * Moves the point to the supplied coordinates.
  122.    * @param x integer coordinate
  123.    * @param y integer coordinate
  124.    */
  125.   public void move(int x,int y)
  126.   {
  127.     setLocation(x,y);
  128.   }
  129.   
  130.   /**
  131.    * Moves the point to the supplied coordinates.
  132.    * @param x double coordinate
  133.    * @param y double coordinate
  134.    */
  135.   public void move(double x,double y)
  136.   {
  137.     this.x = x;
  138.     this.y = y;
  139.   }
  140.   
  141.   /**
  142.    * Moves the point to the supplied coordinates.
  143.    * refer to java.awt.Point for description of this
  144.    * @param x integer coordinate
  145.    * @param y integer coordinate
  146.    * @see java.awt.Point
  147.    */
  148.   public void setLocation(int x,int y)
  149.   {
  150.     move((double)x,(double)y);
  151.   }
  152.   
  153.   /**
  154.    * Moves the point to the supplied java.awt.Point
  155.    * refer to java.awt.Point for description of this
  156.    * @param p Point to move to
  157.    * @see java.awt.Point
  158.    */
  159.   public void setLocation(Point p)
  160.   {
  161.     setLocation(p.x,p.y);
  162.   }
  163.   
  164. }