Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * $Id: FBStringField.java 58482 2013-08-10 14:37:31Z mrotteveel $
   * 
   * Firebird Open Source J2ee connector - jdbc driver
   *
   * Distributable under LGPL license.
   * You may obtain a copy of the License at http://www.gnu.org/copyleft/lgpl.html
   *
   * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * LGPL License for more details.
  *
  * This file was created by members of the firebird development team.
  * All individual contributions remain the Copyright (C) of those
  * individuals.  Contributors to this file are either listed here or
  * can be obtained from a CVS history command.
  *
  * All rights reserved.
  */
 package org.firebirdsql.jdbc.field;
 
 
 import java.sql.Date;
 import java.sql.Time;
 
 import java.io.Reader;
 
Describe class FBStringField here.

Author(s):
Roman Rokytskyy
David Jencks
Mark Rotteveel
Version:
1.0
Todo:
implement data handling code
Todo:
implement correct exception throwing in all setXXX methods that use setString(String), currently it will raise an exception with string conversion error message, instead it should complain about error coresponding to the XXX.
Todo:
think about the right setBoolean and getBoolean (currently it is "Y" and "N", or "TRUE" and "FALSE"). TODO check if the setBinaryStream(null) is allowed by specs.
 
 public class FBStringField extends FBField {
     static final String SHORT_TRUE = "Y";
     static final String SHORT_FALSE = "N";
     static final String LONG_TRUE = "true";
     static final String LONG_FALSE = "false";
     static final String SHORT_TRUE_2 = "T";
     static final String SHORT_TRUE_3 = "1";
     
     protected int possibleCharLength;
     protected int bytesPerCharacter;
 
     FBStringField(XSQLVAR fieldFieldDataProvider dataProviderint requiredTypethrows SQLException {
         super(fielddataProviderrequiredType);
         
          = 1;
          = field.sqllen / ;
     }
    
    
Set connection for this field. This method estimates character length and bytes per chracter.
 
     public void setConnection(GDSHelper gdsHelper) {
         super.setConnection(gdsHelper);
 
          = EncodingFactory.getIscEncodingSize();
     }
 
 	 
     //----- Math code
 
     public byte getByte() throws SQLException {
         if (getFieldData()==nullreturn ;
 
         try {
             return Byte.parseByte(getString().trim());
         } catch (NumberFormatException nfex) {
            throw (SQLExceptioncreateException(
                +" "+getString().trim()).fillInStackTrace();
        }
    }
    
    public short getShort() throws SQLException {
        if (getFieldData()==nullreturn ;
        try {
            return Short.parseShort(getString().trim());
        } catch (NumberFormatException nfex) {
            throw (SQLExceptioncreateException(
                +" "+getString().trim()).fillInStackTrace();
        }
    }
    
    public int getInt() throws SQLException {
        if (getFieldData()==nullreturn ;
        try {
            return Integer.parseInt(getString().trim());
        } catch (NumberFormatException nfex) {
            throw (SQLExceptioncreateException(
                +" "+getString().trim()).fillInStackTrace();
        }
    }
    
    public long getLong() throws SQLException {
        if (getFieldData()==nullreturn ;
        try {
            return Long.parseLong(getString().trim());
        }
        catch (NumberFormatException nfex) {
            throw (SQLExceptioncreateException(
                +" "+getString().trim()).fillInStackTrace();
        }
    }
    
    public BigDecimal getBigDecimal() throws SQLException {
        if (getFieldData()==nullreturn ;

        

Todo:
check what exceptions can be thrown here
        return new BigDecimal(getString().trim());
    }
    
    public float getFloat() throws SQLException {
        if (getFieldData()==nullreturn ;
        try {
            return Float.parseFloat(getString().trim());
        }
        catch (NumberFormatException nfex) {
            throw (SQLExceptioncreateException(
                +" "+getString().trim()).fillInStackTrace();
        }
    }
    
    public double getDouble() throws SQLException {
        if (getFieldData()==nullreturn ;
        try {
            return Double.parseDouble(getString().trim());
        }
        catch (NumberFormatException nfex) {
            throw (SQLExceptioncreateException(
                +" "+getString().trim()).fillInStackTrace();
        }
    }
    //----- getBoolean, getString and getObject code
    public boolean getBoolean() throws SQLException {
        if (getFieldData()==nullreturn ;
        final String trimmedValue = getString().trim();
        return trimmedValue.equalsIgnoreCase() ||
                trimmedValue.equalsIgnoreCase() ||
                trimmedValue.equalsIgnoreCase() ||
                trimmedValue.equalsIgnoreCase();
    }
    public String getString() throws SQLException {
        if (getFieldData()==nullreturn ;
    }
    
    //----- getXXXStream code
    public InputStream getBinaryStream() throws SQLException {
        if (getFieldData()==nullreturn ;
        return new ByteArrayInputStream(getFieldData());
    }
    
    public InputStream getUnicodeStream() throws SQLException {
        if (getFieldData()==nullreturn ;
        return getBinaryStream();
    }
    
    public InputStream getAsciiStream() throws SQLException {
        if (getFieldData()==nullreturn ;
        return getBinaryStream();
    }
    
    public byte[] getBytes() throws SQLException {
        if (getFieldData()==nullreturn ;
        return getFieldData();
    }
    //----- getDate, getTime and getTimestamp code
    public Date getDate(Calendar calthrows SQLException {
        if (getFieldData()==nullreturn ;
        return .decodeDate(getDate(),cal);
    }
    
    public Date getDate() throws SQLException {
        if (getFieldData()==nullreturn ;
        return Date.valueOf(getString().trim());
    }
    
    public Time getTime(Calendar calthrows SQLException {
        if (getFieldData()==nullreturn ;
        return .decodeTime(getTime(),calisInvertTimeZone());
    }
    
    public Time getTime() throws SQLException {
        if (getFieldData()==nullreturn ;
        return Time.valueOf(getString().trim());
    }
    
    public Timestamp getTimestamp(Calendar calthrows SQLException {
        if (getFieldData()==nullreturn ;
		  
        return .decodeTimestamp(getTimestamp(),calisInvertTimeZone());
    }
    
    public Timestamp getTimestamp() throws SQLException {
        if (getFieldData()==nullreturn ;
        return Timestamp.valueOf(getString().trim());
    }
    //--- setXXX methods
	 
    //----- Math code
    public void setByte(byte valuethrows SQLException {
        setString(Byte.toString(value));
    }
    
    public void setShort(short valuethrows SQLException {
        setString(Short.toString(value));
    }
    
    public void setInteger(int valuethrows SQLException {
        setString(Integer.toString(value));
    }
    
    public void setLong(long valuethrows SQLException {
        setString(Long.toString(value));
    }
    
    public void setFloat(float valuethrows SQLException {
        setString(Float.toString(value));
    }
    
    public void setDouble(double valuethrows SQLException {
        setString(Double.toString(value));
    }
    
    public void setBigDecimal(BigDecimal valuethrows SQLException {
        if (value == ) {
            setNull();
            return;
        }
        
        setString(value.toString());
    }
    //----- setBoolean, setString and setObject code
    public void setBoolean(boolean valuethrows SQLException {
        if ( > 4) {
            setString(value ?  : );
        } else if ( >= 1) {
            setString(value ?  : );
        }
    }
    
    public void setString(String valuethrows SQLException {
        if (value == null) {
            setNull();
            return;
        }
    }
    //----- setXXXStream code
    public void setAsciiStream(InputStream inint lengththrows SQLException {
        setBinaryStream(inlength);
    }
    
    public void setUnicodeStream(InputStream inint lengththrows SQLException {
        setBinaryStream(inlength);
    }
    
    public void setBinaryStream(InputStream inint lengththrows SQLException {
        if (in == ) {
            setNull();
            return;
        }
        if (length > .)
            throw new DataTruncation(-1, truefalselength.);
        try {
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            byte[] buff = new byte[4096];
            
            int counter = 0;
            int toRead = length;
            
            while ((counter = in.read(buff, 0, toRead > buff.length ? buff.length : toRead)) != -1) {
                out.write(buff, 0, counter);
                toRead -= counter;
            }
            
            setBytes(out.toByteArray());
        }
        catch (IOException ioex) {
            throw (SQLExceptioncreateException(
                ).fillInStackTrace();
        }
    }
    
    public void setCharacterStream(Reader inint lengththrows SQLException {
        if (in == ) {
            setNull();
            return;
        }
        try {
            StringWriter out = new StringWriter();
            char[] buff = new char[4096];
            int counter = 0;
            while ((counter = in.read(buff)) != -1)
                out.write(buff, 0, counter);
				String outString = out.toString();
            setString(outString.substring(0, length));
        }
        catch (IOException ioex) {
            throw (SQLExceptioncreateException(
                ).fillInStackTrace();
        }
    }
    
    public void setBytes(byte[] valuethrows SQLException {
        if (value == ) {
            setNull();
            return;
        }
        setFieldData(value);
        if (value.length > .)
            throw new DataTruncation(-1, truefalsevalue.length.);
    }
    //----- setDate, setTime and setTimestamp code
    public void setDate(Date valueCalendar calthrows SQLException {
        if (value == ) {
            setNull();
            return;
        }
        setDate(.encodeDate(value,cal));
    }
    
    public void setDate(Date valuethrows SQLException {
        if (value == ) {
            setNull();
            return;
        }
        setString(value.toString());
    }
    
    public void setTime(Time valueCalendar calthrows SQLException {
        if (value == ) {
            setNull();
            return;
        }
        setTime(.encodeTime(value,calisInvertTimeZone()));
    }
    
    public void setTime(Time valuethrows SQLException {
        if (value == ) {
            setNull();
            return;
        }
        setString(value.toString());
    }
    
    public void setTimestamp(Timestamp valueCalendar calthrows SQLException {
        if (value == ) {
            setNull();
            return;
        }
        setTimestamp(.encodeTimestamp(value,calisInvertTimeZone()));
    }
    
    public void setTimestamp(Timestamp valuethrows SQLException {
        if (value == ) {
            setNull();
            return;
        }
        setString(value.toString());
    }
New to GrepCode? Check out our FAQ X