package com.w11k.lsql.dialects; import com.google.common.base.Optional; import com.w11k.lsql.Table; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; public class H2Dialect extends GenericDialect { public H2Dialect() { setIdentifierConverter(IdentifierConverter.JAVA_CAMEL_CASE_TO_SQL_UPPER_UNDERSCORE); } public Optional<Object> extractGeneratedPk(Table table, ResultSet resultSet) throws SQLException { ResultSetMetaData metaData = resultSet.getMetaData(); int columnCount = metaData.getColumnCount(); if (columnCount == 0) { return Optional.absent(); } else if (columnCount > 1) { throw new IllegalStateException("ResultSet for retrieval of the generated " + "ID contains more than one column."); } return Optional.of(table.column(table.getPrimaryKeyColumn().get()) .getConverter().getValueFromResultSet(getlSql(), resultSet, 1)); } }