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

数据库系统

开发平台:

Unix_Linux

  1. package postgresql.util;
  2. import java.io.*;
  3. import java.lang.*;
  4. import java.sql.*;
  5. import java.util.*;
  6. /**
  7.  * postgresql.PG_Object is a class used to describe unknown types 
  8.  * An unknown type is any type that is unknown by JDBC Standards
  9.  *
  10.  * <p>As of PostgreSQL 6.3, this allows user code to add their own
  11.  * handlers via a call to postgresql.Connection. These handlers
  12.  * must extend this class.
  13.  */
  14. public class PGobject implements Serializable,Cloneable
  15. {
  16.   protected String type;
  17.   protected String value;
  18.   
  19.   /**
  20.    * This is called by postgresql.Connection.getObject() to create the
  21.    * object.
  22.    */
  23.   public PGobject()
  24.   {
  25.   }
  26.   
  27.   /**
  28.    * This method sets the type of this object.
  29.    *
  30.    * <p>It should not be extended by subclasses, hence its final
  31.    *
  32.    * @param type a string describing the type of the object
  33.    */
  34.   public final void setType(String type)
  35.   {
  36.     this.type = type;
  37.   }
  38.   
  39.   /**
  40.    * This method sets the value of this object. It must be overidden.
  41.    *
  42.    * @param value a string representation of the value of the object
  43.    * @exception SQLException thrown if value is invalid for this type
  44.    */
  45.   public void setValue(String value) throws SQLException
  46.   {
  47.     this.value = value;
  48.   }
  49.   
  50.   /**
  51.    * As this cannot change during the life of the object, it's final.
  52.    * @return the type name of this object
  53.    */
  54.   public final String getType()
  55.   {
  56.     return type;
  57.   }
  58.   
  59.   /**
  60.    * This must be overidden, to return the value of the object, in the
  61.    * form required by postgresql.
  62.    * @return the value of this object
  63.    */
  64.   public String getValue()
  65.   {
  66.     return value;
  67.   }
  68.   
  69.   /**
  70.    * This must be overidden to allow comparisons of objects
  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 PGobject)
  77.       return ((PGobject)obj).getValue().equals(getValue());
  78.     return false;
  79.   }
  80.   
  81.   /**
  82.    * This must be overidden to allow the object to be cloned
  83.    */
  84.   public Object clone()
  85.   {
  86.     PGobject obj = new PGobject();
  87.     obj.type=type;
  88.     obj.value=value;
  89.     return obj;
  90.   }
  91.   
  92.   /**
  93.    * This is defined here, so user code need not overide it.
  94.    * @return the value of this object, in the syntax expected by postgresql
  95.    */
  96.   public String toString()
  97.   {
  98.     return getValue();
  99.   }
  100. }