You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@metamodel.apache.org by ka...@apache.org on 2013/07/19 11:32:48 UTC

[05/61] [partial] Hard rename of all 'org/eobjects' folders to 'org/apache'.

http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/e2e2b37a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/JdbcSimpleUpdateCallback.java
----------------------------------------------------------------------
diff --git a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/JdbcSimpleUpdateCallback.java b/jdbc/src/main/java/org/eobjects/metamodel/jdbc/JdbcSimpleUpdateCallback.java
deleted file mode 100644
index 0bb7cf7..0000000
--- a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/JdbcSimpleUpdateCallback.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.eobjects.metamodel.jdbc;
-
-import java.sql.PreparedStatement;
-import java.sql.SQLException;
-
-import org.eobjects.metamodel.UpdateCallback;
-import org.eobjects.metamodel.UpdateScript;
-import org.eobjects.metamodel.util.FileHelper;
-
-/**
- * Jdbc {@link UpdateCallback} for databases that do not support batch features.
- * Instead we will use a single transaction for the {@link UpdateScript}.
- * 
- * @author Kasper Sørensen
- */
-final class JdbcSimpleUpdateCallback extends JdbcUpdateCallback {
-
-    public JdbcSimpleUpdateCallback(JdbcDataContext dataContext) {
-        super(dataContext);
-    }
-    
-    @Override
-    protected void closePreparedStatement(PreparedStatement preparedStatement) {
-        FileHelper.safeClose(preparedStatement);
-    }
-
-    @Override
-    protected void executePreparedStatement(PreparedStatement st) throws SQLException {
-        st.executeUpdate();
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/e2e2b37a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/JdbcTable.java
----------------------------------------------------------------------
diff --git a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/JdbcTable.java b/jdbc/src/main/java/org/eobjects/metamodel/jdbc/JdbcTable.java
deleted file mode 100644
index 4ab1419..0000000
--- a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/JdbcTable.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.eobjects.metamodel.jdbc;
-
-import java.io.ObjectStreamException;
-import java.util.List;
-
-import org.eobjects.metamodel.schema.Column;
-import org.eobjects.metamodel.schema.MutableTable;
-import org.eobjects.metamodel.schema.Relationship;
-import org.eobjects.metamodel.schema.Schema;
-import org.eobjects.metamodel.schema.TableType;
-
-/**
- * Table implementation that is based on JDBC metadata.
- * 
- * @author Kasper Sørensen
- */
-final class JdbcTable extends MutableTable {
-
-	private static final long serialVersionUID = 5952310469458880330L;
-
-	private final transient MetadataLoader _metadataLoader;
-
-	public JdbcTable(String name, TableType type, JdbcSchema schema, MetadataLoader metadataLoader) {
-		super(name, type, schema);
-		_metadataLoader = metadataLoader;
-	}
-
-	@Override
-	protected List<Column> getColumnsInternal() {
-		if (_metadataLoader != null) {
-			_metadataLoader.loadColumns(this);
-		}
-		return super.getColumnsInternal();
-	}
-
-	@Override
-	protected List<Relationship> getRelationshipsInternal() {
-		Schema schema = getSchema();
-		if (schema instanceof JdbcSchema) {
-			((JdbcSchema) schema).loadRelations();
-		}
-		return super.getRelationshipsInternal();
-	}
-	
-	protected void loadIndexes() {
-		if (_metadataLoader != null) {
-			_metadataLoader.loadIndexes(this);
-		}
-	}
-
-	/**
-	 * Called by the Java Serialization API to serialize the object.
-	 */
-	private Object writeReplace() throws ObjectStreamException {
-		getColumns();
-		loadIndexes();
-		loadPrimaryKeys();
-		return this;
-	}
-
-	public void loadPrimaryKeys() {
-		if (_metadataLoader != null) {
-			_metadataLoader.loadPrimaryKeys(this);
-		}
-	}
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/e2e2b37a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/JdbcUpdateBuilder.java
----------------------------------------------------------------------
diff --git a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/JdbcUpdateBuilder.java b/jdbc/src/main/java/org/eobjects/metamodel/jdbc/JdbcUpdateBuilder.java
deleted file mode 100644
index 622a5ae..0000000
--- a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/JdbcUpdateBuilder.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.eobjects.metamodel.jdbc;
-
-import java.sql.PreparedStatement;
-import java.sql.SQLException;
-import java.util.List;
-
-import org.eobjects.metamodel.MetaModelException;
-import org.eobjects.metamodel.jdbc.dialects.IQueryRewriter;
-import org.eobjects.metamodel.query.FilterItem;
-import org.eobjects.metamodel.query.FromItem;
-import org.eobjects.metamodel.schema.Column;
-import org.eobjects.metamodel.schema.Table;
-import org.eobjects.metamodel.update.AbstractRowUpdationBuilder;
-import org.eobjects.metamodel.update.RowUpdationBuilder;
-import org.eobjects.metamodel.util.FileHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * {@link RowUpdationBuilder} that issues an SQL UPDATE statement
- * 
- * @author Kasper Sørensen
- */
-final class JdbcUpdateBuilder extends AbstractRowUpdationBuilder {
-
-    private static final Logger logger = LoggerFactory.getLogger(JdbcUpdateBuilder.class);
-
-    private final boolean _inlineValues;
-    private final JdbcUpdateCallback _updateCallback;
-    private final IQueryRewriter _queryRewriter;
-
-    public JdbcUpdateBuilder(JdbcUpdateCallback updateCallback, Table table, IQueryRewriter queryRewriter) {
-        this(updateCallback, table, queryRewriter, false);
-    }
-
-    public JdbcUpdateBuilder(JdbcUpdateCallback updateCallback, Table table, IQueryRewriter queryRewriter,
-            boolean inlineValues) {
-        super(table);
-        _updateCallback = updateCallback;
-        _queryRewriter = queryRewriter;
-        _inlineValues = inlineValues;
-    }
-
-    @Override
-    public void execute() throws MetaModelException {
-        String sql = createSqlStatement();
-        logger.debug("Update statement created: {}", sql);
-        final boolean reuseStatement = !_inlineValues;
-        final PreparedStatement st = _updateCallback.getPreparedStatement(sql, reuseStatement);
-        try {
-            if (reuseStatement) {
-                Column[] columns = getColumns();
-                Object[] values = getValues();
-                boolean[] explicitNulls = getExplicitNulls();
-                int valueCounter = 1;
-                for (int i = 0; i < columns.length; i++) {
-                    boolean explicitNull = explicitNulls[i];
-                    if (values[i] != null || explicitNull) {
-                    	JdbcUtils.setStatementValue(st, valueCounter, columns[i], values[i]);
-                    	
-                        valueCounter++;
-                    }
-                }
-
-                List<FilterItem> whereItems = getWhereItems();
-                for (FilterItem whereItem : whereItems) {
-                    if (JdbcUtils.isPreparedParameterCandidate(whereItem)) {
-                        final Object operand = whereItem.getOperand();
-                        final Column column = whereItem.getSelectItem().getColumn();
-                        
-						JdbcUtils.setStatementValue(st, valueCounter, column, operand);
-                        
-                        valueCounter++;
-                    }
-                }
-            }
-            _updateCallback.executePreparedStatement(st, reuseStatement);
-        } catch (SQLException e) {
-            throw JdbcUtils.wrapException(e, "execute update statement: " + sql);
-        } finally {
-            if (_inlineValues) {
-                FileHelper.safeClose(st);
-            }
-        }
-    }
-    
-    protected String createSqlStatement() {
-        return createSqlStatement(_inlineValues);
-    }
-
-    private String createSqlStatement(boolean inlineValues) {
-        final Object[] values = getValues();
-        final Table table = getTable();
-        final StringBuilder sb = new StringBuilder();
-
-        final String tableLabel = _queryRewriter.rewriteFromItem(new FromItem(table));
-
-        sb.append("UPDATE ");
-        sb.append(tableLabel);
-        sb.append(" SET ");
-
-        Column[] columns = getColumns();
-        boolean[] explicitNulls = getExplicitNulls();
-        boolean firstValue = true;
-        for (int i = 0; i < columns.length; i++) {
-            if (values[i] != null || explicitNulls[i]) {
-                if (firstValue) {
-                    firstValue = false;
-                } else {
-                    sb.append(',');
-                }
-                String columnName = columns[i].getName();
-                columnName = _updateCallback.quoteIfNescesary(columnName);
-                sb.append(columnName);
-
-                sb.append('=');
-
-                if (inlineValues) {
-                    sb.append(JdbcUtils.getValueAsSql(columns[i], values[i], _queryRewriter));
-                } else {
-                    sb.append('?');
-                }
-            }
-        }
-
-        sb.append(JdbcUtils.createWhereClause(getWhereItems(), _queryRewriter, inlineValues));
-        String sql = sb.toString();
-        return sql;
-    }
-
-    @Override
-    public String toSql() {
-        return createSqlStatement(true);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/e2e2b37a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/JdbcUpdateCallback.java
----------------------------------------------------------------------
diff --git a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/JdbcUpdateCallback.java b/jdbc/src/main/java/org/eobjects/metamodel/jdbc/JdbcUpdateCallback.java
deleted file mode 100644
index 67f1b7c..0000000
--- a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/JdbcUpdateCallback.java
+++ /dev/null
@@ -1,216 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.eobjects.metamodel.jdbc;
-
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.SQLException;
-
-import org.eobjects.metamodel.AbstractUpdateCallback;
-import org.eobjects.metamodel.UpdateCallback;
-import org.eobjects.metamodel.create.TableCreationBuilder;
-import org.eobjects.metamodel.delete.RowDeletionBuilder;
-import org.eobjects.metamodel.drop.TableDropBuilder;
-import org.eobjects.metamodel.insert.RowInsertionBuilder;
-import org.eobjects.metamodel.schema.Schema;
-import org.eobjects.metamodel.schema.Table;
-import org.eobjects.metamodel.update.RowUpdationBuilder;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-abstract class JdbcUpdateCallback extends AbstractUpdateCallback implements UpdateCallback {
-
-    private static final Logger logger = LoggerFactory.getLogger(JdbcUpdateCallback.class);
-
-    private final JdbcDataContext _dataContext;
-    private Connection _connection;
-    private String _preparedStatementSql;
-    private PreparedStatement _preparedStatement;
-
-    public JdbcUpdateCallback(JdbcDataContext dataContext) {
-        super(dataContext);
-        _dataContext = dataContext;
-    }
-    
-    protected abstract void closePreparedStatement(PreparedStatement preparedStatement);
-
-    protected abstract void executePreparedStatement(PreparedStatement preparedStatement) throws SQLException;
-
-    public void executePreparedStatement(PreparedStatement preparedStatement, boolean reusedStatement)
-            throws SQLException {
-        executePreparedStatement(preparedStatement);
-        if (!reusedStatement) {
-            closePreparedStatement(preparedStatement);
-        }
-    }
-
-    protected final Connection getConnection() {
-        if (_connection == null) {
-            _connection = getDataContext().getConnection();
-            try {
-                _connection.setAutoCommit(false);
-            } catch (SQLException e) {
-                throw JdbcUtils.wrapException(e, "disable auto-commit");
-            }
-        }
-        return _connection;
-    }
-
-    public final void close(boolean success) {
-        if (_connection != null) {
-            if (success && _preparedStatement != null) {
-                closePreparedStatement(_preparedStatement);
-            }
-
-            try {
-                commitOrRollback(success);
-
-                if (_dataContext.isDefaultAutoCommit()) {
-                    try {
-                        getConnection().setAutoCommit(true);
-                    } catch (SQLException e) {
-                        throw JdbcUtils.wrapException(e, "enable auto-commit");
-                    }
-                }
-            } finally {
-                getDataContext().close(_connection, null, null);
-            }
-        }
-    }
-
-    private void commitOrRollback(boolean success) {
-        if (success) {
-            try {
-                getConnection().commit();
-            } catch (SQLException e) {
-                throw JdbcUtils.wrapException(e, "commit transaction");
-            }
-        } else {
-            try {
-                getConnection().rollback();
-            } catch (SQLException e) {
-                throw JdbcUtils.wrapException(e, "rollback transaction");
-            }
-        }
-    }
-
-    @Override
-    public final TableCreationBuilder createTable(Schema schema, String name) throws IllegalArgumentException,
-            IllegalStateException {
-        return new JdbcCreateTableBuilder(this, schema, name);
-    }
-
-    @Override
-    public final RowInsertionBuilder insertInto(Table table) throws IllegalArgumentException, IllegalStateException {
-        return new JdbcInsertBuilder(this, table, _dataContext.getQueryRewriter());
-    }
-
-    @Override
-    public final JdbcDataContext getDataContext() {
-        return _dataContext;
-    }
-
-    protected String quoteIfNescesary(String identifier) {
-        if (identifier == null) {
-            return null;
-        }
-        final String quote = _dataContext.getIdentifierQuoteString();
-        if (quote == null) {
-            return identifier;
-        }
-        boolean quotes = false;
-        if (identifier.indexOf(' ') != -1 || identifier.indexOf('-') != -1) {
-            quotes = true;
-        } else {
-            if (SqlKeywords.isKeyword(identifier)) {
-                quotes = true;
-            }
-        }
-
-        if (quotes) {
-            identifier = quote + identifier + quote;
-        }
-        return identifier;
-    }
-
-    public final PreparedStatement getPreparedStatement(String sql, boolean reuseStatement) {
-        final PreparedStatement preparedStatement;
-        if (reuseStatement) {
-            if (sql.equals(_preparedStatementSql)) {
-                preparedStatement = _preparedStatement;
-            } else {
-                if (_preparedStatement != null) {
-                    try {
-                        closePreparedStatement(_preparedStatement);
-                    } catch (RuntimeException e) {
-                        logger.error("Exception occurred while closing prepared statement: " + _preparedStatementSql);
-                        throw e;
-                    }
-                }
-                preparedStatement = createPreparedStatement(sql);
-                _preparedStatement = preparedStatement;
-                _preparedStatementSql = sql;
-            }
-        } else {
-            preparedStatement = createPreparedStatement(sql);
-        }
-        return preparedStatement;
-    }
-
-    private final PreparedStatement createPreparedStatement(String sql) {
-        try {
-            return getConnection().prepareStatement(sql);
-        } catch (SQLException e) {
-            throw JdbcUtils.wrapException(e, "create prepared statement for: " + sql);
-        }
-    }
-
-    @Override
-    public boolean isDeleteSupported() {
-        return true;
-    }
-
-    @Override
-    public RowDeletionBuilder deleteFrom(Table table) throws IllegalArgumentException, IllegalStateException,
-            UnsupportedOperationException {
-        return new JdbcDeleteBuilder(this, table, _dataContext.getQueryRewriter());
-    }
-
-    @Override
-    public boolean isDropTableSupported() {
-        return true;
-    }
-
-    @Override
-    public TableDropBuilder dropTable(Table table) throws IllegalArgumentException, IllegalStateException,
-            UnsupportedOperationException {
-        return new JdbcDropTableBuilder(this, table, _dataContext.getQueryRewriter());
-    }
-
-    @Override
-    public boolean isUpdateSupported() {
-        return true;
-    }
-
-    @Override
-    public RowUpdationBuilder update(Table table) throws IllegalArgumentException, IllegalStateException,
-            UnsupportedOperationException {
-        return new JdbcUpdateBuilder(this, table, _dataContext.getQueryRewriter());
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/e2e2b37a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/JdbcUtils.java
----------------------------------------------------------------------
diff --git a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/JdbcUtils.java b/jdbc/src/main/java/org/eobjects/metamodel/jdbc/JdbcUtils.java
deleted file mode 100644
index 853750f..0000000
--- a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/JdbcUtils.java
+++ /dev/null
@@ -1,265 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.eobjects.metamodel.jdbc;
-
-import java.io.InputStream;
-import java.io.Reader;
-import java.sql.Blob;
-import java.sql.Clob;
-import java.sql.NClob;
-import java.sql.PreparedStatement;
-import java.sql.SQLException;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
-
-import org.eobjects.metamodel.MetaModelException;
-import org.eobjects.metamodel.jdbc.dialects.IQueryRewriter;
-import org.eobjects.metamodel.query.FilterItem;
-import org.eobjects.metamodel.query.OperatorType;
-import org.eobjects.metamodel.query.QueryParameter;
-import org.eobjects.metamodel.schema.Column;
-import org.eobjects.metamodel.schema.ColumnType;
-import org.eobjects.metamodel.schema.TableType;
-import org.eobjects.metamodel.util.FileHelper;
-import org.eobjects.metamodel.util.FormatHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public final class JdbcUtils {
-
-	private static final Logger logger = LoggerFactory
-			.getLogger(JdbcUtils.class);
-
-	public static MetaModelException wrapException(SQLException e,
-			String actionDescription) throws MetaModelException {
-		String message = e.getMessage();
-		if (message == null || message.isEmpty()) {
-			message = "Could not " + actionDescription;
-		} else {
-			message = "Could not " + actionDescription + ": " + message;
-		}
-
-		logger.error(message, e);
-		logger.error("Error code={}, SQL state={}", e.getErrorCode(),
-				e.getSQLState());
-
-		final SQLException nextException = e.getNextException();
-		if (nextException != null) {
-			logger.error("Next SQL exception: " + nextException.getMessage(),
-					nextException);
-		}
-
-		return new MetaModelException(message, e);
-	}
-
-	/**
-	 * Method which handles the action of setting a parameterized value on a
-	 * statement. Traditionally this is done using the
-	 * {@link PreparedStatement#setObject(int, Object)} method but for some
-	 * types we use more specific setter methods.
-	 * 
-	 * @param st
-	 * @param valueIndex
-	 * @param column
-	 * @param value
-	 * @throws SQLException
-	 */
-	public static void setStatementValue(final PreparedStatement st,
-			final int valueIndex, final Column column, Object value)
-			throws SQLException {
-		final ColumnType type = (column == null ? null : column.getType());
-
-		if (type == null || type == ColumnType.OTHER) {
-			// type is not known - nothing more we can do to narrow the type
-			st.setObject(valueIndex, value);
-			return;
-		}
-
-		if (value == null && type != null) {
-			try {
-				final int jdbcType = type.getJdbcType();
-				st.setNull(valueIndex, jdbcType);
-				return;
-			} catch (Exception e) {
-				logger.warn(
-						"Exception occurred while calling setNull(...) for value index "
-								+ valueIndex
-								+ ". Attempting value-based setter method instead.",
-						e);
-			}
-		}
-
-		if (type == ColumnType.VARCHAR && value instanceof Date) {
-			// some drivers (SQLite and JTDS for MS SQL server) treat dates as
-			// VARCHARS. In that case we need to convert the dates to the
-			// correct format
-			String nativeType = column.getNativeType();
-			Date date = (Date) value;
-			if ("DATE".equalsIgnoreCase(nativeType)) {
-				value = FormatHelper
-						.formatSqlTime(ColumnType.DATE, date, false);
-			} else if ("TIME".equalsIgnoreCase(nativeType)) {
-				value = FormatHelper
-						.formatSqlTime(ColumnType.TIME, date, false);
-			} else if ("TIMESTAMP".equalsIgnoreCase(nativeType)
-					|| "DATETIME".equalsIgnoreCase(nativeType)) {
-				value = FormatHelper.formatSqlTime(ColumnType.TIMESTAMP, date,
-						false);
-			}
-		}
-
-		if (type != null && type.isTimeBased() && value instanceof String) {
-			value = FormatHelper.parseSqlTime(type, (String) value);
-		}
-
-		try {
-			if (type == ColumnType.DATE && value instanceof Date) {
-				Calendar cal = Calendar.getInstance();
-				cal.setTime((Date) value);
-				st.setDate(valueIndex,
-						new java.sql.Date(cal.getTimeInMillis()), cal);
-			} else if (type == ColumnType.TIME && value instanceof Date) {
-				Calendar cal = Calendar.getInstance();
-				cal.setTime((Date) value);
-				st.setTime(valueIndex,
-						new java.sql.Time(cal.getTimeInMillis()), cal);
-			} else if (type == ColumnType.TIMESTAMP && value instanceof Date) {
-				Calendar cal = Calendar.getInstance();
-				cal.setTime((Date) value);
-				st.setTimestamp(valueIndex,
-						new java.sql.Timestamp(cal.getTimeInMillis()), cal);
-			} else if (type == ColumnType.CLOB || type == ColumnType.NCLOB) {
-				if (value instanceof InputStream) {
-					InputStream inputStream = (InputStream) value;
-					st.setAsciiStream(valueIndex, inputStream);
-				} else if (value instanceof Reader) {
-					Reader reader = (Reader) value;
-					st.setCharacterStream(valueIndex, reader);
-				} else if (value instanceof NClob) {
-					NClob nclob = (NClob) value;
-					st.setNClob(valueIndex, nclob);
-				} else if (value instanceof Clob) {
-					Clob clob = (Clob) value;
-					st.setClob(valueIndex, clob);
-				} else if (value instanceof String) {
-					st.setString(valueIndex, (String) value);
-				} else {
-					st.setObject(valueIndex, value);
-				}
-			} else if (type == ColumnType.BLOB || type == ColumnType.BINARY) {
-				if (value instanceof byte[]) {
-					byte[] bytes = (byte[]) value;
-					st.setBytes(valueIndex, bytes);
-				} else if (value instanceof InputStream) {
-					InputStream inputStream = (InputStream) value;
-					st.setBinaryStream(valueIndex, inputStream);
-				} else if (value instanceof Blob) {
-					Blob blob = (Blob) value;
-					st.setBlob(valueIndex, blob);
-				} else {
-					st.setObject(valueIndex, value);
-				}
-			} else if (type.isLiteral()) {
-				final String str;
-				if (value instanceof Reader) {
-					Reader reader = (Reader) value;
-					str = FileHelper.readAsString(reader);
-				} else {
-					str = value.toString();
-				}
-				st.setString(valueIndex, str);
-			} else {
-				st.setObject(valueIndex, value);
-			}
-		} catch (SQLException e) {
-			logger.error("Failed to set parameter {} to value: {}", valueIndex,
-					value);
-			throw e;
-		}
-	}
-
-	public static String getValueAsSql(Column column, Object value,
-			IQueryRewriter queryRewriter) {
-		if (value == null) {
-			return "NULL";
-		}
-		final ColumnType columnType = column.getType();
-		if (columnType.isLiteral() && value instanceof String) {
-			value = queryRewriter.escapeQuotes((String) value);
-		}
-		String formatSqlValue = FormatHelper.formatSqlValue(columnType, value);
-		return formatSqlValue;
-	}
-
-	public static String createWhereClause(List<FilterItem> whereItems,
-			IQueryRewriter queryRewriter, boolean inlineValues) {
-		if (whereItems.isEmpty()) {
-			return "";
-		}
-		StringBuilder sb = new StringBuilder();
-		sb.append(" WHERE ");
-		boolean firstValue = true;
-		for (FilterItem whereItem : whereItems) {
-			if (firstValue) {
-				firstValue = false;
-			} else {
-				sb.append(" AND ");
-			}
-			if (!inlineValues) {
-				if (isPreparedParameterCandidate(whereItem)) {
-					// replace operator with parameter
-					whereItem = new FilterItem(whereItem.getSelectItem(),
-							whereItem.getOperator(), new QueryParameter());
-				}
-			}
-			final String whereItemLabel = queryRewriter
-					.rewriteFilterItem(whereItem);
-			sb.append(whereItemLabel);
-		}
-		return sb.toString();
-	}
-
-	/**
-	 * Determines if a particular {@link FilterItem} will have it's parameter
-	 * (operand) replaced during SQL generation. Such filter items should
-	 * succesively have their parameters set at execution time.
-	 * 
-	 * @param whereItem
-	 * @return
-	 */
-	public static boolean isPreparedParameterCandidate(FilterItem whereItem) {
-		return !whereItem.isCompoundFilter()
-				&& whereItem.getOperator() != OperatorType.IN;
-	}
-
-	public static String[] getTableTypesAsStrings(TableType[] tableTypes) {
-		String[] types = new String[tableTypes.length];
-		for (int i = 0; i < types.length; i++) {
-			if (tableTypes[i] == TableType.OTHER) {
-				// if the OTHER type has been selected, don't use a table
-				// pattern (ie. include all types)
-				types = null;
-				break;
-			}
-			types[i] = tableTypes[i].toString();
-		}
-		return types;
-	}
-}

http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/e2e2b37a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/MetadataLoader.java
----------------------------------------------------------------------
diff --git a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/MetadataLoader.java b/jdbc/src/main/java/org/eobjects/metamodel/jdbc/MetadataLoader.java
deleted file mode 100644
index f7f3861..0000000
--- a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/MetadataLoader.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.eobjects.metamodel.jdbc;
-
-/**
- * Defines the interface for a component capable of loading schema-model
- * metadata.
- */
-interface MetadataLoader {
-
-	public void loadTables(JdbcSchema jdbcSchema);
-
-	public void loadRelations(JdbcSchema jdbcSchema);
-
-	public void loadColumns(JdbcTable jdbcTable);
-
-	public void loadIndexes(JdbcTable jdbcTable);
-
-	public void loadPrimaryKeys(JdbcTable jdbcTable);
-}

http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/e2e2b37a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/QuerySplitter.java
----------------------------------------------------------------------
diff --git a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/QuerySplitter.java b/jdbc/src/main/java/org/eobjects/metamodel/jdbc/QuerySplitter.java
deleted file mode 100644
index 1f74866..0000000
--- a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/QuerySplitter.java
+++ /dev/null
@@ -1,336 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.eobjects.metamodel.jdbc;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import org.eobjects.metamodel.DataContext;
-import org.eobjects.metamodel.MetaModelHelper;
-import org.eobjects.metamodel.data.DataSet;
-import org.eobjects.metamodel.data.Row;
-import org.eobjects.metamodel.query.FilterItem;
-import org.eobjects.metamodel.query.FromClause;
-import org.eobjects.metamodel.query.FromItem;
-import org.eobjects.metamodel.query.FunctionType;
-import org.eobjects.metamodel.query.GroupByItem;
-import org.eobjects.metamodel.query.OperatorType;
-import org.eobjects.metamodel.query.Query;
-import org.eobjects.metamodel.query.SelectItem;
-import org.eobjects.metamodel.schema.Column;
-import org.eobjects.metamodel.schema.Table;
-
-/**
- * The QuerySplitter class makes it possible to split up queries that are
- * expected to yield a huge result set which may cause performance problems like
- * OutOfMemoryError's or very long processing periods. The resulting queries
- * will in union produce the same result, but in smaller bits (resultsets with
- * less rows).
- * 
- * Note that there is an initial performance-penalty associated with splitting
- * the query since some queries will be executed in order to determine
- * reasonable intervals to use for the resulting queries WHERE clauses.
- * 
- * @see Query
- * @see DataContext
- */
-public final class QuerySplitter {
-
-    public final static long DEFAULT_MAX_ROWS = 300000;
-    private static final int MINIMUM_MAX_ROWS = 100;
-    private final static Logger logger = LoggerFactory.getLogger(QuerySplitter.class);
-
-    private final Query _query;
-    private final DataContext _dataContext;
-    private long _maxRows = DEFAULT_MAX_ROWS;
-    private Long _cachedRowCount = null;
-
-    public QuerySplitter(DataContext dc, Query q) {
-        if (dc == null) {
-            throw new IllegalArgumentException("DataContext cannot be null");
-        }
-        if (q == null) {
-            throw new IllegalArgumentException("Query cannot be null");
-        }
-        _dataContext = dc;
-        _query = q;
-    }
-
-    /**
-     * Splits the query into several queries that will together yield the same
-     * result set
-     * 
-     * @return a list of queries that can be executed to yield the same
-     *         collective result as this QuerySplitter's query
-     */
-    public List<Query> splitQuery() {
-        List<Query> result = new ArrayList<Query>();
-        if (isSplittable()) {
-            if (getRowCount() > _maxRows) {
-                Integer subQueryIndex = getSubQueryFromItemIndex();
-                List<Query> splitQueries = null;
-                if (subQueryIndex != null) {
-                    splitQueries = splitQueryBasedOnSubQueries(subQueryIndex);
-                } else {
-                    List<Column> splitColumns = getSplitColumns();
-                    splitQueries = splitQueryBasedOnColumns(splitColumns);
-                }
-                result.addAll(splitQueries);
-            } else {
-                if (logger.isInfoEnabled()) {
-                    logger.info("Accepted query, maxRows not exceeded: " + _query);
-                }
-                result.add(_query);
-            }
-        }
-        if (result.isEmpty()) {
-            logger.debug("Cannot further split query: {}", _query);
-            result.add(_query);
-        }
-        return result;
-    }
-
-    private List<Query> splitQueryBasedOnColumns(List<Column> splitColumns) {
-        List<Query> result = new ArrayList<Query>();
-        if (splitColumns.isEmpty() || getRowCount() <= _maxRows) {
-            if (getRowCount() > 0) {
-                result.add(_query);
-            }
-        } else {
-            Column firstColumn = splitColumns.get(0);
-            splitColumns.remove(0);
-            List<Query> splitQueries = splitQueryBasedOnColumn(firstColumn);
-            for (Query splitQuery : splitQueries) {
-                QuerySplitter qs = new QuerySplitter(_dataContext, splitQuery).setMaxRows(_maxRows);
-                if (qs.getRowCount() > _maxRows) {
-                    // Recursively use the next columns to split queries
-                    // subsequently
-                    result.addAll(qs.splitQueryBasedOnColumns(splitColumns));
-                } else {
-                    if (qs.getRowCount() > 0) {
-                        result.add(splitQuery);
-                    }
-                }
-            }
-        }
-        return result;
-    }
-
-    private List<Query> splitQueryBasedOnColumn(Column column) {
-        SelectItem maxItem = new SelectItem(FunctionType.MAX, column);
-        SelectItem minItem = new SelectItem(FunctionType.MIN, column);
-        Query q = new Query().from(column.getTable()).select(maxItem, minItem);
-        Row row = MetaModelHelper.executeSingleRowQuery(_dataContext, q);
-        long max = ceil((Number) row.getValue(maxItem));
-        long min = floor((Number) row.getValue(minItem));
-        long wholeRange = max - min;
-        List<Query> result = new ArrayList<Query>();
-        if (wholeRange <= 1) {
-            result.add(_query);
-        } else {
-            long numSplits = ceil(getRowCount() / _maxRows);
-            if (numSplits < 2) {
-                // Must as a minimum yield two new queries
-                numSplits = 2;
-            }
-            int splitInterval = (int) (wholeRange / numSplits);
-            for (int i = 0; i < numSplits; i++) {
-                q = _query.clone();
-                long lowLimit = min + (i * splitInterval);
-                long highLimit = lowLimit + splitInterval;
-
-                FilterItem lowerThanFilter = new FilterItem(new SelectItem(column), OperatorType.LESS_THAN, highLimit);
-                FilterItem higherThanFilter = new FilterItem(new SelectItem(column), OperatorType.GREATER_THAN,
-                        lowLimit);
-                FilterItem equalsFilter = new FilterItem(new SelectItem(column), OperatorType.EQUALS_TO, lowLimit);
-
-                if (i == 0) {
-                    // This is the first split query: no higherThan filter and
-                    // include
-                    // IS NULL
-                    FilterItem nullFilter = new FilterItem(new SelectItem(column), OperatorType.EQUALS_TO, null);
-                    FilterItem orFilterItem = new FilterItem(lowerThanFilter, nullFilter);
-                    q.where(orFilterItem);
-                } else if (i + 1 == numSplits) {
-                    // This is the lats split query: no lowerThan filter,
-                    FilterItem orFilterItem = new FilterItem(higherThanFilter, equalsFilter);
-                    q.where(orFilterItem);
-                } else {
-                    higherThanFilter = new FilterItem(higherThanFilter, equalsFilter);
-                    lowerThanFilter = new FilterItem(lowerThanFilter, equalsFilter);
-                    q.where(higherThanFilter);
-                    q.where(lowerThanFilter);
-                }
-                result.add(q);
-            }
-        }
-        return result;
-    }
-
-    private static long floor(Number value) {
-        Double floor = Math.floor(value.doubleValue());
-        return floor.longValue();
-    }
-
-    private static long ceil(Number value) {
-        Double ceil = Math.ceil(value.doubleValue());
-        return ceil.longValue();
-    }
-
-    private List<Query> splitQueryBasedOnSubQueries(int fromItemIndex) {
-        Query subQuery = _query.getFromClause().getItem(fromItemIndex).getSubQuery();
-        QuerySplitter subQuerySplitter = new QuerySplitter(_dataContext, subQuery);
-
-        subQuerySplitter.setMaxRows(_maxRows);
-        List<Query> splitQueries = subQuerySplitter.splitQuery();
-        List<Query> result = new ArrayList<Query>(splitQueries.size());
-        for (Query splitQuery : splitQueries) {
-            Query newQuery = _query.clone();
-            FromClause fromClause = newQuery.getFromClause();
-            String alias = fromClause.getItem(fromItemIndex).getAlias();
-            fromClause.removeItem(fromItemIndex);
-            newQuery.from(new FromItem(splitQuery).setAlias(alias));
-            result.add(newQuery);
-        }
-        return result;
-    }
-
-    private Integer getSubQueryFromItemIndex() {
-        List<FromItem> fromItems = _query.getFromClause().getItems();
-        for (int i = 0; i < fromItems.size(); i++) {
-            Query subQuery = fromItems.get(i).getSubQuery();
-            if (subQuery != null) {
-                if (isSplittable(subQuery)) {
-                    return i;
-                }
-            }
-        }
-        return null;
-    }
-
-    private boolean isSplittable() {
-        return isSplittable(_query);
-    }
-
-    public static boolean isSplittable(Query q) {
-        if (q.getOrderByClause().getItemCount() != 0) {
-            return false;
-        }
-        return true;
-    }
-
-    private List<Column> getSplitColumns() {
-        List<Column> result = new ArrayList<Column>();
-        if (_query.getGroupByClause().getItemCount() != 0) {
-            List<GroupByItem> groupByItems = _query.getGroupByClause().getItems();
-            for (GroupByItem groupByItem : groupByItems) {
-                Column column = groupByItem.getSelectItem().getColumn();
-                if (column != null) {
-                    if (column.isIndexed()) {
-                        // Indexed columns have first priority, they will be
-                        // added to the beginning of the list
-                        result.add(0, column);
-                    } else {
-                        result.add(column);
-                    }
-                }
-            }
-        } else {
-            List<FromItem> fromItems = _query.getFromClause().getItems();
-            for (FromItem fromItem : fromItems) {
-                if (fromItem.getTable() != null) {
-                    addColumnsToResult(fromItem.getTable(), result);
-                }
-                if (fromItem.getJoin() != null && fromItem.getAlias() == null) {
-                    if (fromItem.getLeftSide().getTable() != null) {
-                        addColumnsToResult(fromItem.getLeftSide().getTable(), result);
-                    }
-                    if (fromItem.getRightSide().getTable() != null) {
-                        addColumnsToResult(fromItem.getRightSide().getTable(), result);
-                    }
-                }
-            }
-        }
-        return result;
-    }
-
-    private static void addColumnsToResult(Table table, List<Column> result) {
-        Column[] numberColumns = table.getNumberColumns();
-        for (int i = 0; i < numberColumns.length; i++) {
-            Column column = numberColumns[i];
-            if (column.isIndexed()) {
-                // Indexed columns have first priority, they will be
-                // added to the beginning of the list
-                result.add(0, column);
-            } else {
-                result.add(column);
-            }
-        }
-    }
-
-    /**
-     * @return the total number of rows expected from executing the query.
-     */
-    public long getRowCount() {
-        if (_cachedRowCount == null) {
-            _cachedRowCount = getRowCount(_query);
-        }
-        return _cachedRowCount;
-    }
-
-    private long getRowCount(Query q) {
-        q = q.clone();
-        SelectItem countAllItem = SelectItem.getCountAllItem();
-        if (q.getGroupByClause().getItemCount() > 0) {
-            q = new Query().from(new FromItem(q).setAlias("sq")).select(countAllItem);
-        } else {
-            q.getSelectClause().removeItems();
-            q.select(countAllItem);
-        }
-        Row row = MetaModelHelper.executeSingleRowQuery(_dataContext, q);
-        Number count = (Number) row.getValue(countAllItem);
-        return count.longValue();
-    }
-
-    /**
-     * Sets the desired maximum result set row count. Note that this size cannot
-     * be guaranteed, but will serve as an indicator for determining the
-     * split-size
-     * 
-     * @param maxRows
-     */
-    public QuerySplitter setMaxRows(long maxRows) {
-        if (maxRows < MINIMUM_MAX_ROWS) {
-            throw new IllegalArgumentException("maxRows must be higher than " + MINIMUM_MAX_ROWS);
-        }
-        _maxRows = maxRows;
-        return this;
-    }
-
-    public DataSet executeQueries() {
-        return executeQueries(splitQuery());
-    }
-
-    public DataSet executeQueries(List<Query> splitQueries) {
-        return new SplitQueriesDataSet(_dataContext, splitQueries);
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/e2e2b37a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/SplitQueriesDataSet.java
----------------------------------------------------------------------
diff --git a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/SplitQueriesDataSet.java b/jdbc/src/main/java/org/eobjects/metamodel/jdbc/SplitQueriesDataSet.java
deleted file mode 100644
index 68cc442..0000000
--- a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/SplitQueriesDataSet.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.eobjects.metamodel.jdbc;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import org.eobjects.metamodel.DataContext;
-import org.eobjects.metamodel.MetaModelException;
-import org.eobjects.metamodel.data.AbstractDataSet;
-import org.eobjects.metamodel.data.DataSet;
-import org.eobjects.metamodel.data.Row;
-import org.eobjects.metamodel.query.Query;
-import org.eobjects.metamodel.query.SelectItem;
-
-/**
- * DataSet for split queries. Queries will be executed as needed, not at once.
- * 
- * @see org.eobjects.metamodel.jdbc.QuerySplitter
- */
-final class SplitQueriesDataSet extends AbstractDataSet {
-
-    private static final Logger logger = LoggerFactory.getLogger(SplitQueriesDataSet.class);
-    private final DataContext _dataContext;
-    private Iterator<Query> _queryIterator;
-    private DataSet _currentDataSet;
-    private int _queryIndex = 0;
-
-    public SplitQueriesDataSet(DataContext dataContext, List<Query> splitQueries) {
-        super(getSelectItems(splitQueries));
-        if (dataContext == null || splitQueries == null) {
-            throw new IllegalArgumentException("Arguments cannot be null");
-        }
-        _dataContext = dataContext;
-        _queryIterator = splitQueries.iterator();
-    }
-
-    private static List<SelectItem> getSelectItems(List<Query> splitQueries) {
-        if (splitQueries.isEmpty()) {
-            return new ArrayList<SelectItem>(0);
-        }
-        return splitQueries.get(0).getSelectClause().getItems();
-    }
-
-    @Override
-    public void close() {
-        if (_currentDataSet != null) {
-            logger.debug("currentDataSet.close()");
-            _currentDataSet.close();
-        }
-        _currentDataSet = null;
-        _queryIterator = null;
-    }
-
-    @Override
-    public Row getRow() throws MetaModelException {
-        if (_currentDataSet != null) {
-            return _currentDataSet.getRow();
-        }
-        throw new IllegalStateException("No rows available. Either DataSet is closed or next() hasn't been called");
-    }
-
-    @Override
-    public boolean next() {
-        boolean result;
-        if (_currentDataSet == null) {
-            result = false;
-        } else {
-            result = _currentDataSet.next();
-        }
-        if (!result && _queryIterator.hasNext()) {
-            if (_currentDataSet != null) {
-                logger.debug("currentDataSet.close()");
-                _currentDataSet.close();
-            }
-            Query q = _queryIterator.next();
-            _currentDataSet = _dataContext.executeQuery(q);
-            if (logger.isDebugEnabled()) {
-                _queryIndex++;
-                logger.debug("Executing query #{}", _queryIndex);
-            }
-            result = next();
-        }
-        return result;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/e2e2b37a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/SqlKeywords.java
----------------------------------------------------------------------
diff --git a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/SqlKeywords.java b/jdbc/src/main/java/org/eobjects/metamodel/jdbc/SqlKeywords.java
deleted file mode 100644
index eca70fa..0000000
--- a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/SqlKeywords.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.eobjects.metamodel.jdbc;
-
-import java.util.HashSet;
-import java.util.Set;
-
-class SqlKeywords {
-
-	private static final Set<String> KEYWORDS;
-
-	static {
-		KEYWORDS = new HashSet<String>();
-		KEYWORDS.add("SELECT");
-		KEYWORDS.add("DISTINCT");
-		KEYWORDS.add("AS");
-		KEYWORDS.add("COUNT");
-		KEYWORDS.add("SUM");
-		KEYWORDS.add("MIN");
-		KEYWORDS.add("MAX");
-		KEYWORDS.add("FROM");
-		KEYWORDS.add("WHERE");
-		KEYWORDS.add("LIKE");
-		KEYWORDS.add("IN");
-		KEYWORDS.add("GROUP");
-		KEYWORDS.add("BY");
-		KEYWORDS.add("HAVING");
-		KEYWORDS.add("ORDER");
-	}
-
-	public static boolean isKeyword(String str) {
-		str = str.toUpperCase();
-		return KEYWORDS.contains(str);
-	}
-}

http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/e2e2b37a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/dialects/AbstractQueryRewriter.java
----------------------------------------------------------------------
diff --git a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/dialects/AbstractQueryRewriter.java b/jdbc/src/main/java/org/eobjects/metamodel/jdbc/dialects/AbstractQueryRewriter.java
deleted file mode 100644
index 2cc8ece..0000000
--- a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/dialects/AbstractQueryRewriter.java
+++ /dev/null
@@ -1,259 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.eobjects.metamodel.jdbc.dialects;
-
-import java.util.List;
-
-import org.eobjects.metamodel.jdbc.JdbcDataContext;
-import org.eobjects.metamodel.query.AbstractQueryClause;
-import org.eobjects.metamodel.query.FilterClause;
-import org.eobjects.metamodel.query.FilterItem;
-import org.eobjects.metamodel.query.FromClause;
-import org.eobjects.metamodel.query.FromItem;
-import org.eobjects.metamodel.query.GroupByClause;
-import org.eobjects.metamodel.query.GroupByItem;
-import org.eobjects.metamodel.query.OperatorType;
-import org.eobjects.metamodel.query.OrderByClause;
-import org.eobjects.metamodel.query.OrderByItem;
-import org.eobjects.metamodel.query.Query;
-import org.eobjects.metamodel.query.SelectClause;
-import org.eobjects.metamodel.query.SelectItem;
-import org.eobjects.metamodel.schema.ColumnType;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Abstract implementation of query rewriter. This implementation delegates the
- * rewriting of the Query into several subtasks according to the query items to
- * be rendered. This makes it easy to overload single methods in order to
- * correct syntax quirks.
- */
-public abstract class AbstractQueryRewriter implements IQueryRewriter {
-
-    protected final Logger logger = LoggerFactory.getLogger(getClass());
-
-    private final JdbcDataContext _dataContext;
-
-    public AbstractQueryRewriter(JdbcDataContext dataContext) {
-        _dataContext = dataContext;
-    }
-
-    public JdbcDataContext getDataContext() {
-        return _dataContext;
-    }
-
-    @Override
-    public ColumnType getColumnType(int jdbcType, String nativeType, Integer columnSize) {
-        return ColumnType.convertColumnType(jdbcType);
-    }
-
-    public String rewriteQuery(Query query) {
-        query = beforeRewrite(query);
-
-        final StringBuilder sb = new StringBuilder();
-        sb.append(rewriteSelectClause(query, query.getSelectClause()));
-        sb.append(rewriteFromClause(query, query.getFromClause()));
-        sb.append(rewriteWhereClause(query, query.getWhereClause()));
-        sb.append(rewriteGroupByClause(query, query.getGroupByClause()));
-        sb.append(rewriteHavingClause(query, query.getHavingClause()));
-        sb.append(rewriteOrderByClause(query, query.getOrderByClause()));
-        return sb.toString();
-    }
-
-    public boolean isSchemaIncludedInColumnPaths() {
-        return false;
-    }
-
-    /**
-     * Method to modify query before rewriting begins. Overwrite this method if
-     * you want to change parts of the query that are not just rendering
-     * related. Cloning the query before modifying is recommended in order to
-     * not violate referential integrity of clients (the query is mutable).
-     * 
-     * @param strategy
-     * @param query
-     * @return the modified query
-     */
-    protected Query beforeRewrite(Query query) {
-        return query;
-    }
-
-    @Override
-    public String rewriteColumnType(ColumnType columnType) {
-        return columnType.toString();
-    }
-
-    protected String rewriteOrderByClause(Query query, OrderByClause orderByClause) {
-        StringBuilder sb = new StringBuilder();
-        if (orderByClause.getItemCount() > 0) {
-            sb.append(AbstractQueryClause.PREFIX_ORDER_BY);
-            List<OrderByItem> items = orderByClause.getItems();
-            for (int i = 0; i < items.size(); i++) {
-                OrderByItem item = items.get(i);
-                if (i != 0) {
-                    sb.append(AbstractQueryClause.DELIM_COMMA);
-                }
-                sb.append(rewriteOrderByItem(query, item));
-            }
-        }
-        return sb.toString();
-    }
-
-    @Override
-    public String rewriteFromItem(FromItem item) {
-        return rewriteFromItem(item.getQuery(), item);
-    }
-
-    protected String rewriteOrderByItem(Query query, OrderByItem item) {
-        return item.toSql(isSchemaIncludedInColumnPaths());
-    }
-
-    protected String rewriteHavingClause(Query query, FilterClause havingClause) {
-        StringBuilder sb = new StringBuilder();
-        if (havingClause.getItemCount() > 0) {
-            sb.append(AbstractQueryClause.PREFIX_HAVING);
-            List<FilterItem> items = havingClause.getItems();
-            for (int i = 0; i < items.size(); i++) {
-                FilterItem item = items.get(i);
-                if (i != 0) {
-                    sb.append(AbstractQueryClause.DELIM_AND);
-                }
-                sb.append(rewriteFilterItem(item));
-            }
-        }
-        return sb.toString();
-    }
-
-    protected String rewriteGroupByClause(Query query, GroupByClause groupByClause) {
-        StringBuilder sb = new StringBuilder();
-        if (groupByClause.getItemCount() > 0) {
-            sb.append(AbstractQueryClause.PREFIX_GROUP_BY);
-            List<GroupByItem> items = groupByClause.getItems();
-            for (int i = 0; i < items.size(); i++) {
-                GroupByItem item = items.get(i);
-                if (i != 0) {
-                    sb.append(AbstractQueryClause.DELIM_COMMA);
-                }
-                sb.append(rewriteGroupByItem(query, item));
-            }
-        }
-        return sb.toString();
-    }
-
-    protected String rewriteGroupByItem(Query query, GroupByItem item) {
-        return item.toSql(isSchemaIncludedInColumnPaths());
-    }
-
-    protected String rewriteWhereClause(Query query, FilterClause whereClause) {
-        StringBuilder sb = new StringBuilder();
-        if (whereClause.getItemCount() > 0) {
-            sb.append(AbstractQueryClause.PREFIX_WHERE);
-            List<FilterItem> items = whereClause.getItems();
-            for (int i = 0; i < items.size(); i++) {
-                FilterItem item = items.get(i);
-                if (i != 0) {
-                    sb.append(AbstractQueryClause.DELIM_AND);
-                }
-                sb.append(rewriteFilterItem(item));
-            }
-        }
-        return sb.toString();
-    }
-
-    @Override
-    public String rewriteFilterItem(FilterItem item) {
-        if (item.isCompoundFilter()) {
-            FilterItem[] childItems = item.getChildItems();
-            StringBuilder sb = new StringBuilder();
-            sb.append('(');
-            for (int i = 0; i < childItems.length; i++) {
-                FilterItem child = childItems[i];
-                if (i != 0) {
-                    sb.append(' ');
-                    sb.append(item.getLogicalOperator().toString());
-                    sb.append(' ');
-                }
-                sb.append(rewriteFilterItem(child));
-            }
-            sb.append(')');
-            return sb.toString();
-        }
-
-        final String primaryFilterSql = item.toSql(isSchemaIncludedInColumnPaths());
-
-        final OperatorType operator = item.getOperator();
-        if (operator == OperatorType.DIFFERENT_FROM) {
-            final Object operand = item.getOperand();
-            if (operand != null) {
-                // special case in SQL where NULL is not treated as a value -
-                // see Ticket #1058
-
-                FilterItem isNullFilter = new FilterItem(item.getSelectItem(), OperatorType.EQUALS_TO, null);
-                final String secondaryFilterSql = rewriteFilterItem(isNullFilter);
-
-                return '(' + primaryFilterSql + " OR " + secondaryFilterSql + ')';
-            }
-        }
-
-        return primaryFilterSql;
-    }
-
-    protected String rewriteFromClause(Query query, FromClause fromClause) {
-        StringBuilder sb = new StringBuilder();
-        if (fromClause.getItemCount() > 0) {
-            sb.append(AbstractQueryClause.PREFIX_FROM);
-            List<FromItem> items = fromClause.getItems();
-            for (int i = 0; i < items.size(); i++) {
-                FromItem item = items.get(i);
-                if (i != 0) {
-                    sb.append(AbstractQueryClause.DELIM_COMMA);
-                }
-                sb.append(rewriteFromItem(query, item));
-            }
-        }
-        return sb.toString();
-    }
-
-    protected String rewriteFromItem(Query query, FromItem item) {
-        return item.toSql(isSchemaIncludedInColumnPaths());
-    }
-
-    protected String rewriteSelectClause(Query query, SelectClause selectClause) {
-        StringBuilder sb = new StringBuilder();
-        if (selectClause.getItemCount() > 0) {
-            sb.append(AbstractQueryClause.PREFIX_SELECT);
-            if (selectClause.isDistinct()) {
-                sb.append("DISTINCT ");
-            }
-            List<SelectItem> items = selectClause.getItems();
-            for (int i = 0; i < items.size(); i++) {
-                SelectItem item = items.get(i);
-                if (i != 0) {
-                    sb.append(AbstractQueryClause.DELIM_COMMA);
-                }
-                sb.append(rewriteSelectItem(query, item));
-            }
-        }
-        return sb.toString();
-    }
-
-    protected String rewriteSelectItem(Query query, SelectItem item) {
-        return item.toSql(isSchemaIncludedInColumnPaths());
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/e2e2b37a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/dialects/DB2QueryRewriter.java
----------------------------------------------------------------------
diff --git a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/dialects/DB2QueryRewriter.java b/jdbc/src/main/java/org/eobjects/metamodel/jdbc/dialects/DB2QueryRewriter.java
deleted file mode 100644
index 90eeb9d..0000000
--- a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/dialects/DB2QueryRewriter.java
+++ /dev/null
@@ -1,161 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.eobjects.metamodel.jdbc.dialects;
-
-import java.util.Date;
-import java.util.List;
-
-import org.eobjects.metamodel.jdbc.JdbcDataContext;
-import org.eobjects.metamodel.query.FilterItem;
-import org.eobjects.metamodel.query.FromItem;
-import org.eobjects.metamodel.query.OperatorType;
-import org.eobjects.metamodel.query.Query;
-import org.eobjects.metamodel.query.SelectItem;
-import org.eobjects.metamodel.schema.ColumnType;
-import org.eobjects.metamodel.util.FormatHelper;
-import org.eobjects.metamodel.util.TimeComparator;
-
-/**
- * Query rewriter for IBM DB2
- */
-public class DB2QueryRewriter extends DefaultQueryRewriter implements IQueryRewriter {
-
-    public DB2QueryRewriter(JdbcDataContext dataContext) {
-        super(dataContext);
-    }
-
-    @Override
-    public String escapeQuotes(String filterItemOperand) {
-        return filterItemOperand.replaceAll("\\'", "\\\\'");
-    }
-
-    /**
-     * DB2 expects the fully qualified column name, including schema, in select
-     * items.
-     */
-    @Override
-    public boolean isSchemaIncludedInColumnPaths() {
-        return true;
-    }
-
-    @Override
-    public boolean isMaxRowsSupported() {
-        return true;
-    }
-
-    @Override
-    public boolean isFirstRowSupported() {
-        return true;
-    }
-
-    @Override
-    public String rewriteQuery(Query query) {
-        final Integer firstRow = query.getFirstRow();
-        final Integer maxRows = query.getMaxRows();
-
-        if (maxRows == null && firstRow == null) {
-            return super.rewriteQuery(query);
-        }
-
-        if (firstRow == null || firstRow.intValue() == 1) {
-            // We prefer to use the "FETCH FIRST [n] ROWS ONLY" approach, if
-            // firstRow is not specified.
-            return super.rewriteQuery(query) + " FETCH FIRST " + maxRows + " ROWS ONLY";
-
-        } else {
-            // build a ROW_NUMBER() query like this:
-
-            // SELECT [original select clause]
-            // FROM ([original select clause],
-            // ROW_NUMBER() AS metamodel_row_number
-            // FROM [remainder of regular query])
-            // WHERE metamodel_row_number BETWEEN [firstRow] and [maxRows];
-
-            final Query innerQuery = query.clone();
-            innerQuery.setFirstRow(null);
-            innerQuery.setMaxRows(null);
-
-            final Query outerQuery = new Query();
-            final FromItem subQuerySelectItem = new FromItem(innerQuery).setAlias("metamodel_subquery");
-            outerQuery.from(subQuerySelectItem);
-
-            final List<SelectItem> innerSelectItems = innerQuery.getSelectClause().getItems();
-            for (SelectItem selectItem : innerSelectItems) {
-                outerQuery.select(new SelectItem(selectItem, subQuerySelectItem));
-            }
-
-            innerQuery.select(new SelectItem("ROW_NUMBER() OVER()", "metamodel_row_number"));
-
-            final String baseQueryString = rewriteQuery(outerQuery);
-
-            if (maxRows == null) {
-                return baseQueryString + " WHERE metamodel_row_number > " + (firstRow - 1);
-            }
-
-            return baseQueryString + " WHERE metamodel_row_number BETWEEN " + firstRow + " AND " + (firstRow - 1 + maxRows);
-        }
-    }
-
-    @Override
-    public String rewriteColumnType(ColumnType columnType) {
-        switch (columnType) {
-        case BOOLEAN:
-        case BIT:
-            return "SMALLINT";
-        default:
-            return super.rewriteColumnType(columnType);
-        }
-    }
-
-    @Override
-    public String rewriteFilterItem(FilterItem item) {
-        SelectItem _selectItem = item.getSelectItem();
-        Object _operand = item.getOperand();
-        OperatorType _operator = item.getOperator();
-        if (null != _selectItem && _operand != null) {
-            ColumnType columnType = _selectItem.getExpectedColumnType();
-            if (columnType != null) {
-                if (columnType.isTimeBased()) {
-                    // special logic for DB2 based time operands.
-
-                    StringBuilder sb = new StringBuilder();
-                    sb.append(_selectItem.getSameQueryAlias(true));
-                    final Object operand = FilterItem.appendOperator(sb, _operand, _operator);
-
-                    if (operand instanceof SelectItem) {
-                        final String selectItemString = ((SelectItem) operand).getSameQueryAlias(true);
-                        sb.append(selectItemString);
-                    } else {
-                        Date date = TimeComparator.toDate(_operand);
-                        if (date == null) {
-                            throw new IllegalStateException("Could not convert " + _operand + " to date");
-                        }
-
-                        final String sqlValue = FormatHelper.formatSqlTime(columnType, date, true, "('", "')");
-                        sb.append(sqlValue);
-                    }
-
-                    return sb.toString();
-                }
-            }
-        }
-        return super.rewriteFilterItem(item);
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/e2e2b37a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/dialects/DefaultQueryRewriter.java
----------------------------------------------------------------------
diff --git a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/dialects/DefaultQueryRewriter.java b/jdbc/src/main/java/org/eobjects/metamodel/jdbc/dialects/DefaultQueryRewriter.java
deleted file mode 100644
index d3356cd..0000000
--- a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/dialects/DefaultQueryRewriter.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.eobjects.metamodel.jdbc.dialects;
-
-import java.util.List;
-import java.util.ListIterator;
-
-import org.eobjects.metamodel.jdbc.JdbcDataContext;
-import org.eobjects.metamodel.query.FilterItem;
-import org.eobjects.metamodel.query.FromItem;
-import org.eobjects.metamodel.query.OperatorType;
-import org.eobjects.metamodel.query.Query;
-import org.eobjects.metamodel.query.SelectItem;
-import org.eobjects.metamodel.util.CollectionUtils;
-
-/**
- * Generic query rewriter that adds syntax enhancements that are only possible
- * to resolve just before execution time.
- */
-public class DefaultQueryRewriter extends AbstractQueryRewriter {
-
-    private static final String SPECIAL_ALIAS_CHARACTERS = "- ,.|*%()!#¤/\\=?;:~";
-
-    public DefaultQueryRewriter(JdbcDataContext dataContext) {
-        super(dataContext);
-    }
-
-    @Override
-    protected Query beforeRewrite(Query query) {
-        query = query.clone();
-
-        JdbcDataContext dataContext = getDataContext();
-        if (dataContext != null) {
-            String identifierQuoteString = dataContext.getIdentifierQuoteString();
-            if (identifierQuoteString != null) {
-                List<SelectItem> selectItems = query.getSelectClause().getItems();
-                for (SelectItem item : selectItems) {
-                    String alias = item.getAlias();
-                    if (needsQuoting(alias, identifierQuoteString)) {
-                        item.setAlias(identifierQuoteString + alias + identifierQuoteString);
-                    }
-                }
-                List<FromItem> fromItems = query.getFromClause().getItems();
-                for (FromItem item : fromItems) {
-                    String alias = item.getAlias();
-                    if (needsQuoting(alias, identifierQuoteString)) {
-                        item.setAlias(identifierQuoteString + alias + identifierQuoteString);
-                    }
-                }
-            }
-        }
-        return query;
-    }
-
-    private boolean needsQuoting(String alias, String identifierQuoteString) {
-        boolean result = false;
-        if (alias != null && identifierQuoteString != null) {
-            if (alias.indexOf(identifierQuoteString) == -1) {
-                for (int i = 0; i < SPECIAL_ALIAS_CHARACTERS.length(); i++) {
-                    char specialCharacter = SPECIAL_ALIAS_CHARACTERS.charAt(i);
-                    if (alias.indexOf(specialCharacter) != -1) {
-                        result = true;
-                        break;
-                    }
-                }
-            }
-        }
-        if (logger.isDebugEnabled()) {
-            logger.debug("needsQuoting(" + alias + "," + identifierQuoteString + ") = " + result);
-        }
-        return result;
-    }
-
-    @Override
-    public String rewriteFilterItem(FilterItem item) {
-        Object operand = item.getOperand();
-        if (operand != null) {
-            if (operand instanceof String) {
-                String str = (String) operand;
-                // escape single quotes
-                if (str.indexOf('\'') != -1) {
-                    str = escapeQuotes(str);
-                    FilterItem replacementFilterItem = new FilterItem(item.getSelectItem(), item.getOperator(), str);
-                    return super.rewriteFilterItem(replacementFilterItem);
-                }
-            } else if (operand instanceof Iterable || operand.getClass().isArray()) {
-                // operand is a set of values (typically in combination with an
-                // IN operator). Each individual element must be escaped.
-
-                assert item.getOperator() == OperatorType.IN;
-
-                @SuppressWarnings("unchecked")
-                final List<Object> elements = (List<Object>) CollectionUtils.toList(operand);
-
-                for (ListIterator<Object> it = elements.listIterator(); it.hasNext();) {
-                    Object next = it.next();
-                    if (next == null) {
-                        logger.warn("element in IN list is NULL, which isn't supported by SQL. Stripping the element from the list: {}", item);
-                        it.remove();
-                    } else if (next instanceof String) {
-                        String str = (String) next;
-                        if (str.indexOf('\'') != -1) {
-                            str = escapeQuotes(str);
-                            it.set(str);
-                        }
-                    }
-                }
-
-                FilterItem replacementFilterItem = new FilterItem(item.getSelectItem(), item.getOperator(), elements);
-                return super.rewriteFilterItem(replacementFilterItem);
-            }
-        }
-        return super.rewriteFilterItem(item);
-    }
-
-    @Override
-    public boolean isFirstRowSupported() {
-        return false;
-    }
-
-    @Override
-    public boolean isMaxRowsSupported() {
-        return false;
-    }
-
-    @Override
-    public String escapeQuotes(String item) {
-        return item.replaceAll("\\'", "\\'\\'");
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/e2e2b37a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/dialects/H2QueryRewriter.java
----------------------------------------------------------------------
diff --git a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/dialects/H2QueryRewriter.java b/jdbc/src/main/java/org/eobjects/metamodel/jdbc/dialects/H2QueryRewriter.java
deleted file mode 100644
index 4ed4555..0000000
--- a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/dialects/H2QueryRewriter.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.eobjects.metamodel.jdbc.dialects;
-
-import org.eobjects.metamodel.jdbc.JdbcDataContext;
-
-/**
- * Query rewriter for H2
- */
-public class H2QueryRewriter extends LimitOffsetQueryRewriter {
-
-    public H2QueryRewriter(JdbcDataContext dataContext) {
-        super(dataContext);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/e2e2b37a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/dialects/HsqldbQueryRewriter.java
----------------------------------------------------------------------
diff --git a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/dialects/HsqldbQueryRewriter.java b/jdbc/src/main/java/org/eobjects/metamodel/jdbc/dialects/HsqldbQueryRewriter.java
deleted file mode 100644
index cf54718..0000000
--- a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/dialects/HsqldbQueryRewriter.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.eobjects.metamodel.jdbc.dialects;
-
-import org.eobjects.metamodel.jdbc.JdbcDataContext;
-import org.eobjects.metamodel.query.FilterItem;
-import org.eobjects.metamodel.query.Query;
-import org.eobjects.metamodel.query.SelectClause;
-import org.eobjects.metamodel.query.SelectItem;
-import org.eobjects.metamodel.schema.Column;
-import org.eobjects.metamodel.schema.ColumnType;
-
-/**
- * Query rewriter for HSQLDB
- */
-public class HsqldbQueryRewriter extends DefaultQueryRewriter {
-
-    public HsqldbQueryRewriter(JdbcDataContext dataContext) {
-        super(dataContext);
-    }
-
-    @Override
-    public String rewriteColumnType(ColumnType columnType) {
-        if (columnType == ColumnType.BLOB) {
-            return "LONGVARBINARY";
-        }
-        return super.rewriteColumnType(columnType);
-    }
-
-    @Override
-    public boolean isFirstRowSupported() {
-        return true;
-    }
-
-    @Override
-    public boolean isMaxRowsSupported() {
-        return true;
-    }
-
-    @Override
-    protected String rewriteSelectClause(Query query, SelectClause selectClause) {
-        String result = super.rewriteSelectClause(query, selectClause);
-
-        Integer firstRow = query.getFirstRow();
-        Integer maxRows = query.getMaxRows();
-        if (maxRows != null || firstRow != null) {
-            if (maxRows == null) {
-                maxRows = Integer.MAX_VALUE;
-            }
-            if (firstRow == null || firstRow <= 0) {
-                result = "SELECT TOP " + maxRows + " " + result.substring(7);
-            } else {
-                final int offset = firstRow - 1;
-                result = "SELECT LIMIT " + offset + " " + maxRows + " " + result.substring(7);
-            }
-        }
-
-        return result;
-    }
-
-    @Override
-    public String rewriteFilterItem(FilterItem item) {
-        if (!item.isCompoundFilter()) {
-            final SelectItem selectItem = item.getSelectItem();
-            final Column column = selectItem.getColumn();
-            if (column != null) {
-                if (column.getType() == ColumnType.TIMESTAMP) {
-                    // HSQLDB does not treat (TIMESTAMP 'yyyy-MM-dd hh:mm:ss')
-                    // tokens correctly
-                    String result = super.rewriteFilterItem(item);
-                    int indexOfTimestamp = result.lastIndexOf("TIMESTAMP");
-                    if (indexOfTimestamp != -1) {
-                        result = result.substring(0, indexOfTimestamp)
-                                + result.substring(indexOfTimestamp + "TIMESTAMP".length());
-                    }
-                    return result;
-                }
-            }
-        }
-        return super.rewriteFilterItem(item);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/e2e2b37a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/dialects/IQueryRewriter.java
----------------------------------------------------------------------
diff --git a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/dialects/IQueryRewriter.java b/jdbc/src/main/java/org/eobjects/metamodel/jdbc/dialects/IQueryRewriter.java
deleted file mode 100644
index 4d94d40..0000000
--- a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/dialects/IQueryRewriter.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.eobjects.metamodel.jdbc.dialects;
-
-import java.sql.Types;
-
-import org.eobjects.metamodel.jdbc.JdbcDataContext;
-import org.eobjects.metamodel.query.FilterItem;
-import org.eobjects.metamodel.query.FromItem;
-import org.eobjects.metamodel.query.Query;
-import org.eobjects.metamodel.schema.ColumnType;
-
-/**
- * A query rewriter can be used for rewriting (part of) a query's string
- * representation. This is usefull for databases that deviate from the SQL 99
- * compliant syntax which is delievered by the query and it's query item's
- * toString() methods.
- * 
- * @see AbstractQueryRewriter
- * @see JdbcDataContext
- */
-public interface IQueryRewriter {
-
-	public String rewriteFromItem(FromItem item);
-
-	public String rewriteQuery(Query query);
-
-	public String rewriteFilterItem(FilterItem whereItem);
-
-	/**
-	 * Gets whether this query rewriter is able to write the "Max rows" query
-	 * property to the query string.
-	 * 
-	 * @return whether this query rewriter is able to write the "Max rows" query
-	 *         property to the query string.
-	 */
-	public boolean isMaxRowsSupported();
-
-	/**
-	 * Gets whether this query rewriter is able to write the "First row" query
-	 * property to the query string.
-	 * 
-	 * @return whether this query rewriter is able to write the "First row"
-	 *         query property to the query string.
-	 */
-	public boolean isFirstRowSupported();
-
-	/**
-	 * Escapes the quotes within a String literal of a query item.
-	 * 
-	 * @return String item with quotes escaped.
-	 */
-	public String escapeQuotes(String item);
-
-	/**
-	 * Rewrites the name of a column type, as it is written in CREATE TABLE
-	 * statements. Some databases dont support all column types, or have
-	 * different names for them. The implementation of this method will do that
-	 * conversion.
-	 * 
-	 * @param columnType
-	 * @return
-	 */
-	public String rewriteColumnType(ColumnType columnType);
-
-	/**
-	 * Gets the column type for a specific JDBC type (as defined in
-	 * {@link Types}), native type name and column size.
-	 * 
-	 * @param jdbcType
-	 * @param nativeType
-	 * @param columnSize
-	 * @return
-	 */
-	public ColumnType getColumnType(int jdbcType, String nativeType, Integer columnSize);
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-metamodel/blob/e2e2b37a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/dialects/LimitOffsetQueryRewriter.java
----------------------------------------------------------------------
diff --git a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/dialects/LimitOffsetQueryRewriter.java b/jdbc/src/main/java/org/eobjects/metamodel/jdbc/dialects/LimitOffsetQueryRewriter.java
deleted file mode 100644
index b15b8ca..0000000
--- a/jdbc/src/main/java/org/eobjects/metamodel/jdbc/dialects/LimitOffsetQueryRewriter.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.eobjects.metamodel.jdbc.dialects;
-
-import org.eobjects.metamodel.jdbc.JdbcDataContext;
-import org.eobjects.metamodel.query.Query;
-
-/**
- * Query rewriter for databases that support LIMIT and OFFSET keywords for max
- * rows and first row properties.
- */
-public abstract class LimitOffsetQueryRewriter extends DefaultQueryRewriter {
-
-    public LimitOffsetQueryRewriter(JdbcDataContext dataContext) {
-        super(dataContext);
-    }
-
-    @Override
-    public final boolean isFirstRowSupported() {
-        return true;
-    }
-
-    @Override
-    public final boolean isMaxRowsSupported() {
-        return true;
-    }
-
-    /**
-     * {@inheritDoc}
-     * 
-     * If the Max rows and/or First row property of the query is set, then we
-     * will use the database's LIMIT and OFFSET functions.
-     */
-    @Override
-    public String rewriteQuery(Query query) {
-        String queryString = super.rewriteQuery(query);
-        Integer maxRows = query.getMaxRows();
-        Integer firstRow = query.getFirstRow();
-        if (maxRows != null || firstRow != null) {
-            if (maxRows == null) {
-                maxRows = Integer.MAX_VALUE;
-            }
-            queryString = queryString + " LIMIT " + maxRows;
-
-            if (firstRow != null && firstRow > 1) {
-                // offset is 0-based
-                int offset = firstRow - 1;
-                queryString = queryString + " OFFSET " + offset;
-            }
-        }
-
-
-        return queryString;
-    }
-}