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