1 package org.apache.ojb.broker.platforms; 2 3 17 18 import java.io.ByteArrayInputStream ; 19 import java.io.InputStreamReader ; 20 import java.io.Reader ; 21 import java.io.StringReader ; 22 import java.sql.PreparedStatement ; 23 import java.sql.SQLException ; 24 import java.sql.Types ; 25 26 import org.apache.ojb.broker.query.LikeCriteria; 27 28 33 public class PlatformMySQLImpl extends PlatformDefaultImpl 34 { 35 private static final String LAST_INSERT = "SELECT LAST_INSERT_ID() FROM "; 36 private static final String LIMIT = " LIMIT 1"; 37 38 41 public void setObjectForStatement(PreparedStatement ps, int index, Object value, int sqlType) throws SQLException 42 { 43 switch (sqlType) 44 { 45 case Types.BIT : 46 ps.setObject(index, value); 47 break; 48 49 case Types.BLOB : 50 case Types.LONGVARBINARY : 51 case Types.VARBINARY : 52 if (value instanceof byte[]) 53 { 54 byte buf[] = (byte[]) value; 55 ByteArrayInputStream inputStream = new ByteArrayInputStream (buf); 56 ps.setBinaryStream(index, inputStream, buf.length); 57 58 break; 59 } 60 61 case Types.CLOB : 62 Reader reader = null; 63 int length = 0; 64 65 if (value instanceof String ) 66 { 67 reader = new StringReader ((String ) value); 68 length = (((String ) value)).length(); 69 } 70 else if (value instanceof char[]) 71 { 72 String string = new String ((char[])value); 73 reader = new StringReader (string); 74 length = string.length(); 75 } 76 else if (value instanceof byte[]) 77 { 78 byte buf[] = (byte[]) value; 79 ByteArrayInputStream inputStream = new ByteArrayInputStream (buf); 80 reader = new InputStreamReader (inputStream); 81 } 82 83 ps.setCharacterStream(index, reader, length); 84 break; 85 86 default : 87 super.setObjectForStatement(ps, index, value, sqlType); 88 89 } 90 } 91 95 public byte getJoinSyntaxType() 96 { 97 return SQL92_NOPAREN_JOIN_SYNTAX; 98 } 99 100 public String getLastInsertIdentityQuery(String tableName) 101 { 102 return LAST_INSERT + tableName + LIMIT; 103 } 104 105 110 public void addPagingSql(StringBuffer anSqlString) 111 { 112 anSqlString.append(" LIMIT ?,?"); 113 } 114 115 120 public boolean supportsPaging() 121 { 122 return true; 123 } 124 125 128 public String concatenate(String [] theColumns) 129 { 130 if (theColumns.length == 1) 131 { 132 return theColumns[0]; 133 } 134 135 StringBuffer buf = new StringBuffer (); 136 137 buf.append("concat("); 138 for (int i = 0; i < theColumns.length; i++) 139 { 140 if (i > 0) 141 { 142 buf.append(","); 143 } 144 buf.append(theColumns[i]); 145 } 146 147 buf.append(")"); 148 return buf.toString(); 149 } 150 151 154 public String getEscapeClause(LikeCriteria aCriteria) 155 { 156 if (LikeCriteria.getEscapeCharacter() != LikeCriteria.DEFAULT_ESCPAPE_CHARACTER) 157 { 158 return super.getEscapeClause(aCriteria); 160 } 161 else 162 { 163 return ""; 164 } 165 } 166 } 167 | Popular Tags |