Changeset 3047
- Timestamp:
- 01/17/12 15:47:21 (4 months ago)
- Location:
- MetaModel/trunk
- Files:
-
- 7 edited
-
core/src/main/java/org/eobjects/metamodel/schema/ColumnType.java (modified) (3 diffs)
-
core/src/main/java/org/eobjects/metamodel/schema/SuperColumnType.java (modified) (1 diff)
-
jdbc/src/main/java/org/eobjects/metamodel/jdbc/JdbcDataContext.java (modified) (1 diff)
-
jdbc/src/main/java/org/eobjects/metamodel/jdbc/JdbcDataSet.java (modified) (3 diffs)
-
jdbc/src/main/java/org/eobjects/metamodel/jdbc/JdbcUpdateCallback.java (modified) (5 diffs)
-
jdbc/src/main/java/org/eobjects/metamodel/jdbc/dialects/SQLServerQueryRewriter.java (modified) (2 diffs)
-
jdbc/src/test/java/org/eobjects/metamodel/dialects/SQLServerQueryRewriterTest.java (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
MetaModel/trunk/core/src/main/java/org/eobjects/metamodel/schema/ColumnType.java
r1391 r3047 30 30 import java.lang.reflect.Field; 31 31 import java.math.BigInteger; 32 import java.sql.Blob; 33 import java.sql.Clob; 32 34 import java.util.Comparator; 33 35 import java.util.Date; … … 68 70 69 71 /** 72 * Binary types 73 */ 74 BINARY(BINARY_TYPE), VARBINARY(BINARY_TYPE), LONGVARBINARY(BINARY_TYPE), BLOB( 75 BINARY_TYPE), 76 77 /** 70 78 * Other 71 79 */ 72 BINARY(BINARY_TYPE), VARBINARY(BINARY_TYPE), LONGVARBINARY(BINARY_TYPE), NULL( 73 OTHER_TYPE), OTHER(OTHER_TYPE), JAVA_OBJECT(OTHER_TYPE), DISTINCT( 74 OTHER_TYPE), STRUCT(OTHER_TYPE), ARRAY(OTHER_TYPE), BLOB( 75 BINARY_TYPE), REF(OTHER_TYPE), DATALINK(OTHER_TYPE), ROWID( 76 OTHER_TYPE), SQLXML(OTHER_TYPE); 80 NULL(OTHER_TYPE), OTHER(OTHER_TYPE), JAVA_OBJECT(OTHER_TYPE), DISTINCT( 81 OTHER_TYPE), STRUCT(OTHER_TYPE), ARRAY(OTHER_TYPE), REF(OTHER_TYPE), DATALINK( 82 OTHER_TYPE), ROWID(OTHER_TYPE), SQLXML(OTHER_TYPE); 77 83 78 84 private SuperColumnType _superType; … … 154 160 case CHAR: 155 161 return Character.class; 162 case BLOB: 163 return Blob.class; 164 case CLOB: 165 case NCLOB: 166 return Clob.class; 156 167 default: 157 168 // All other types have fitting java equivalent classes in the super -
MetaModel/trunk/core/src/main/java/org/eobjects/metamodel/schema/SuperColumnType.java
r1391 r3047 29 29 30 30 BOOLEAN_TYPE(Boolean.class), LITERAL_TYPE(String.class), NUMBER_TYPE( 31 Number.class), TIME_TYPE(Date.class), BINARY_TYPE( Object.class), OTHER_TYPE(31 Number.class), TIME_TYPE(Date.class), BINARY_TYPE(byte[].class), OTHER_TYPE( 32 32 Object.class); 33 33 -
MetaModel/trunk/jdbc/src/main/java/org/eobjects/metamodel/jdbc/JdbcDataContext.java
r3016 r3047 956 956 update.run(updateCallback); 957 957 } 958 } finally { 959 updateCallback.close(); 958 updateCallback.close(true); 959 } catch (RuntimeException e) { 960 updateCallback.close(false); 961 throw e; 960 962 } 961 963 } -
MetaModel/trunk/jdbc/src/main/java/org/eobjects/metamodel/jdbc/JdbcDataSet.java
r2990 r3047 36 36 import org.eobjects.metamodel.query.Query; 37 37 import org.eobjects.metamodel.query.SelectItem; 38 import org.eobjects.metamodel.schema.Column; 39 import org.eobjects.metamodel.schema.ColumnType; 38 40 39 41 /** … … 97 99 Object[] values = new Object[_selectItems.length]; 98 100 for (int i = 0; i < values.length; i++) { 99 values[i] = _resultSet.getObject(i + 1); 101 102 values[i] = getValue(_resultSet, i); 100 103 101 104 try { … … 122 125 } 123 126 127 private Object getValue(ResultSet resultSet, int i) throws SQLException { 128 final SelectItem selectItem = _selectItems[i]; 129 final int columnIndex = i + 1; 130 if (selectItem.getFunction() == null) { 131 Column column = selectItem.getColumn(); 132 if (column != null) { 133 ColumnType type = column.getType(); 134 switch (type) { 135 case TIME: 136 return _resultSet.getTime(columnIndex); 137 case DATE: 138 return _resultSet.getDate(columnIndex); 139 case TIMESTAMP: 140 return _resultSet.getTimestamp(columnIndex); 141 case BLOB: 142 return _resultSet.getBlob(columnIndex); 143 case BINARY: 144 case VARBINARY: 145 case LONGVARBINARY: 146 return _resultSet.getBytes(columnIndex); 147 case CLOB: 148 case NCLOB: 149 return _resultSet.getClob(i); 150 case BIT: 151 case BOOLEAN: 152 return _resultSet.getBoolean(i); 153 } 154 } 155 } 156 return _resultSet.getObject(columnIndex); 157 } 158 124 159 /** 125 160 * {@inheritDoc} -
MetaModel/trunk/jdbc/src/main/java/org/eobjects/metamodel/jdbc/JdbcUpdateCallback.java
r3017 r3047 30 30 import org.eobjects.metamodel.schema.Schema; 31 31 import org.eobjects.metamodel.schema.Table; 32 import org.slf4j.Logger; 33 import org.slf4j.LoggerFactory; 32 34 33 35 abstract class JdbcUpdateCallback extends AbstractUpdateCallback implements 34 36 UpdateCallback { 37 38 private static final Logger logger = LoggerFactory 39 .getLogger(JdbcUpdateCallback.class); 35 40 36 41 private final JdbcDataContext _dataContext; … … 62 67 } 63 68 64 public final void close( ) {69 public final void close(boolean success) { 65 70 if (_connection != null) { 66 if ( _preparedStatement != null) {71 if (success && _preparedStatement != null) { 67 72 closePreparedStatement(_preparedStatement); 68 73 } 69 74 75 try { 76 commitOrRollback(success); 77 78 if (_dataContext.isDefaultAutoCommit()) { 79 try { 80 getConnection().setAutoCommit(true); 81 } catch (SQLException e) { 82 throw JdbcUtils.wrapException(e, "enable auto-commit"); 83 } 84 } 85 } finally { 86 getDataContext().close(_connection, null, null); 87 } 88 } 89 } 90 91 private void commitOrRollback(boolean success) { 92 if (success) { 70 93 try { 71 94 getConnection().commit(); … … 73 96 throw JdbcUtils.wrapException(e, "commit transaction"); 74 97 } 75 76 if (_dataContext.isDefaultAutoCommit()) { 77 try { 78 getConnection().setAutoCommit(true); 79 } catch (SQLException e) { 80 throw JdbcUtils.wrapException(e, "enable auto-commit"); 81 } 98 } else { 99 try { 100 getConnection().commit(); 101 } catch (SQLException e) { 102 throw JdbcUtils.wrapException(e, "rollback transaction"); 82 103 } 83 84 getDataContext().close(_connection, null, null);85 104 } 86 105 } … … 95 114 public final RowInsertionBuilder insertInto(Table table) 96 115 throws IllegalArgumentException, IllegalStateException { 97 return new JdbcInsertBuilder(this, table, _dataContext.getQueryRewriter()); 116 return new JdbcInsertBuilder(this, table, 117 _dataContext.getQueryRewriter()); 98 118 } 99 119 … … 134 154 } else { 135 155 if (_preparedStatement != null) { 136 closePreparedStatement(_preparedStatement); 156 try { 157 closePreparedStatement(_preparedStatement); 158 } catch (RuntimeException e) { 159 logger.error("Exception occurred while closing prepared statement: " 160 + _preparedStatementSql); 161 throw e; 162 } 137 163 } 138 164 preparedStatement = createPreparedStatement(sql); -
MetaModel/trunk/jdbc/src/main/java/org/eobjects/metamodel/jdbc/dialects/SQLServerQueryRewriter.java
r2406 r3047 50 50 return result; 51 51 } 52 52 53 @Override 54 public String rewriteFromItem(FromItem item) { 55 return item.toSql(); 56 } 57 53 58 @Override 54 59 protected String rewriteFromItem(JdbcDataContext strategy, Query query, … … 58 63 String alias = item.getAlias(); 59 64 if (alias == null) { 65 // always add an alias in SQL Server 60 66 item.setAlias(table.getName()); 61 67 } -
MetaModel/trunk/jdbc/src/test/java/org/eobjects/metamodel/dialects/SQLServerQueryRewriterTest.java
r2406 r3047 24 24 import org.eobjects.metamodel.jdbc.dialects.IQueryRewriter; 25 25 import org.eobjects.metamodel.jdbc.dialects.SQLServerQueryRewriter; 26 import org.eobjects.metamodel.query.FromItem; 26 27 import org.eobjects.metamodel.query.Query; 27 28 import org.eobjects.metamodel.schema.MutableColumn; … … 46 47 } 47 48 49 public void testRewriteFromItem() throws Exception { 50 assertEquals("foo", 51 qr.rewriteFromItem(new FromItem(new MutableTable("foo")))); 52 } 53 48 54 public void testAliasing() throws Exception { 49 55 Query q = new Query().from(table).select(column);
Note: See TracChangeset
for help on using the changeset viewer.
