You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-dev@db.apache.org by br...@apache.org on 2003/11/23 11:23:29 UTC

cvs commit: db-ojb/src/java/org/apache/ojb/broker/platforms PlatformMySQLImpl.java

brj         2003/11/23 02:23:29

  Modified:    src/java/org/apache/ojb/broker/platforms
                        PlatformMySQLImpl.java
  Log:
  added support for LOBs (patch by Michael Mogley)
  
  Revision  Changes    Path
  1.7       +105 -73   db-ojb/src/java/org/apache/ojb/broker/platforms/PlatformMySQLImpl.java
  
  Index: PlatformMySQLImpl.java
  ===================================================================
  RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/platforms/PlatformMySQLImpl.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- PlatformMySQLImpl.java	16 Nov 2003 18:21:48 -0000	1.6
  +++ PlatformMySQLImpl.java	23 Nov 2003 10:23:29 -0000	1.7
  @@ -1,66 +1,59 @@
   package org.apache.ojb.broker.platforms;
   
  -/* ====================================================================
  - * The Apache Software License, Version 1.1
  - *
  - * Copyright (c) 2001 The Apache Software Foundation.  All rights
  - * reserved.
  - *
  +/*
  + * ==================================================================== The
  + * Apache Software License, Version 1.1
  + * 
  + * Copyright (c) 2001 The Apache Software Foundation. All rights reserved.
  + * 
    * Redistribution and use in source and binary forms, with or without
  - * modification, are permitted provided that the following conditions
  - * are met:
  - *
  - * 1. Redistributions of source code must retain the above copyright
  - *    notice, this list of conditions and the following disclaimer.
  - *
  - * 2. Redistributions in binary form must reproduce the above copyright
  - *    notice, this list of conditions and the following disclaimer in
  - *    the documentation and/or other materials provided with the
  - *    distribution.
  - *
  - * 3. The end-user documentation included with the redistribution,
  - *    if any, must include the following acknowledgment:
  - *       "This product includes software developed by the
  - *        Apache Software Foundation (http://www.apache.org/)."
  - *    Alternately, this acknowledgment may appear in the software itself,
  - *    if and wherever such third-party acknowledgments normally appear.
  - *
  - * 4. The names "Apache" and "Apache Software Foundation" and
  - *    "Apache ObjectRelationalBridge" must not be used to endorse or promote products
  - *    derived from this software without prior written permission. For
  - *    written permission, please contact apache@apache.org.
  - *
  - * 5. Products derived from this software may not be called "Apache",
  - *    "Apache ObjectRelationalBridge", nor may "Apache" appear in their name, without
  - *    prior written permission of the Apache Software Foundation.
  - *
  - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  - * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  - * SUCH DAMAGE.
  + * modification, are permitted provided that the following conditions are met:
  + *  1. Redistributions of source code must retain the above copyright notice,
  + * this list of conditions and the following disclaimer.
  + *  2. Redistributions in binary form must reproduce the above copyright
  + * notice, this list of conditions and the following disclaimer in the
  + * documentation and/or other materials provided with the distribution.
  + *  3. The end-user documentation included with the redistribution, if any,
  + * must include the following acknowledgment: "This product includes software
  + * developed by the Apache Software Foundation (http://www.apache.org/)."
  + * Alternately, this acknowledgment may appear in the software itself, if and
  + * wherever such third-party acknowledgments normally appear.
  + *  4. The names "Apache" and "Apache Software Foundation" and "Apache
  + * ObjectRelationalBridge" must not be used to endorse or promote products
  + * derived from this software without prior written permission. For written
  + * permission, please contact apache@apache.org.
  + *  5. Products derived from this software may not be called "Apache", "Apache
  + * ObjectRelationalBridge", nor may "Apache" appear in their name, without
  + * prior written permission of the Apache Software Foundation.
  + * 
  + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
  + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
  + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
  + * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
  + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    * ====================================================================
  - *
  - * This software consists of voluntary contributions made by many
  - * individuals on behalf of the Apache Software Foundation.  For more
  - * information on the Apache Software Foundation, please see
  - * <http://www.apache.org/>.
  + * 
  + * This software consists of voluntary contributions made by many individuals
  + * on behalf of the Apache Software Foundation. For more information on the
  + * Apache Software Foundation, please see <http://www.apache.org/> .
    */
   
  +import java.io.ByteArrayInputStream;
  +import java.io.InputStreamReader;
  +import java.io.Reader;
  +import java.io.StringReader;
   import java.sql.PreparedStatement;
   import java.sql.SQLException;
   import java.sql.Types;
   
   /**
  - * @version 	1.0
  - * @author 	jakob br�uchi
  + * @version 1.0
  + * @author jakob br�uchi
    * @version $Id$
    */
   public class PlatformMySQLImpl extends PlatformDefaultImpl
  @@ -69,20 +62,56 @@
       private static final String LIMIT = " LIMIT 1";
   
       /*
  -     * @see Platform#setObjectForStatement(PreparedStatement, int, Object, int)
  -     */
  -    public void setObjectForStatement(PreparedStatement ps, int index, Object value, int sqlType)
  -        throws SQLException
  +	 * @see Platform#setObjectForStatement(PreparedStatement, int, Object, int)
  +	 */
  +    public void setObjectForStatement(PreparedStatement ps, int index, Object value, int sqlType) throws SQLException
       {
  -        if (sqlType == Types.BIT)
  -            ps.setObject(index, value);
  -        else
  -            super.setObjectForStatement(ps,index,value,sqlType);
  -    }
  +        switch (sqlType)
  +        {
  +            case Types.BIT :
  +                ps.setObject(index, value);
  +                break;
  +
  +            case Types.BLOB :
  +            case Types.LONGVARBINARY :
  +            case Types.VARBINARY :
  +                if (value instanceof byte[])
  +                {
  +                    byte buf[] = (byte[]) value;
  +                    ByteArrayInputStream inputStream = new ByteArrayInputStream(buf);
  +                    ps.setBinaryStream(index, inputStream, buf.length);
  +
  +                    break;
  +                }
  +
  +            case Types.CLOB :
  +                Reader reader = null;
  +                int length = 0;
  +
  +                if (value instanceof String)
  +                {
  +                    reader = new StringReader((String) value);
  +                    length = (((String) value)).length();
  +                }
  +                else if (value instanceof byte[])
  +                {
  +                    byte buf[] = (byte[]) value;
  +                    ByteArrayInputStream inputStream = new ByteArrayInputStream(buf);
  +                    reader = new InputStreamReader(inputStream);
  +                }
  +
  +                ps.setCharacterStream(index, reader, length);
  +                break;
   
  +            default :
  +                super.setObjectForStatement(ps, index, value, sqlType);
  +
  +        }
  +    }
       /**
  -     * Get join syntax type for this RDBMS - one on of the constants from JoinSyntaxType interface
  -     */
  +	 * Get join syntax type for this RDBMS - one on of the constants from
  +	 * JoinSyntaxType interface
  +	 */
       public byte getJoinSyntaxType()
       {
           return SQL92_NOPAREN_JOIN_SYNTAX;
  @@ -92,22 +121,25 @@
       {
           return LAST_INSERT + tableName + LIMIT;
       }
  -    
  -    /* (non-Javadoc)
  -     * @see org.apache.ojb.broker.platforms.Platform#addPagingSql(java.lang.StringBuffer)
  -     */
  +
  +    /*
  +	 * (non-Javadoc)
  +	 * 
  +	 * @see org.apache.ojb.broker.platforms.Platform#addPagingSql(java.lang.StringBuffer)
  +	 */
       public void addPagingSql(StringBuffer anSqlString)
       {
           anSqlString.append(" LIMIT ?,?");
       }
   
  -   
  -    /* (non-Javadoc)
  -     * @see org.apache.ojb.broker.platforms.Platform#supportsPaging()
  -     */
  +    /*
  +	 * (non-Javadoc)
  +	 * 
  +	 * @see org.apache.ojb.broker.platforms.Platform#supportsPaging()
  +	 */
       public boolean supportsPaging()
       {
           return true;
       }
  -    
  +
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org