Skip to content

Commit

Permalink
#124: Covered ColumunMetadataReader by unit tests and refactored it.
Browse files Browse the repository at this point in the history
  • Loading branch information
redcatbear committed Apr 2, 2019
1 parent 645573e commit 89108ef
Show file tree
Hide file tree
Showing 7 changed files with 583 additions and 121 deletions.
Original file line number Diff line number Diff line change
@@ -1,25 +1,19 @@
package com.exasol.adapter.dialects;

import com.exasol.adapter.jdbc.ColumnAdapterNotes;
import com.exasol.adapter.jdbc.ConnectionInformation;
import com.exasol.adapter.jdbc.JdbcAdapterProperties;
import java.sql.*;
import java.util.*;

import com.exasol.adapter.jdbc.*;
import com.exasol.adapter.metadata.ColumnMetadata;
import com.exasol.adapter.metadata.DataType;
import com.exasol.adapter.sql.AggregateFunction;
import com.exasol.adapter.sql.ScalarFunction;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import java.util.*;

/**
* Abstract implementation of a dialect. We recommend that every dialect should
* extend this abstract class.
* Abstract implementation of a dialect. We recommend that every dialect should extend this abstract class.
*
* TODO Find solution to handle unsupported types (e.g. exceeding varchar size).
* E.g. skip column or always truncate or add const-null column or throw error
* or make configurable
* TODO Find solution to handle unsupported types (e.g. exceeding varchar size). E.g. skip column or always truncate or
* add const-null column or throw error or make configurable
*/
public abstract class AbstractSqlDialect implements SqlDialect {

Expand Down Expand Up @@ -63,7 +57,7 @@ public ColumnMetadata mapColumn(final ResultSet columns) throws SQLException {
boolean isNullable = true;
try {
final String nullable = columns.getString("IS_NULLABLE");
if (nullable != null && nullable.toLowerCase().equals("no")) {
if ((nullable != null) && nullable.toLowerCase().equals("no")) {
isNullable = false;
}
} catch (final SQLException ex) {
Expand All @@ -75,7 +69,7 @@ public ColumnMetadata mapColumn(final ResultSet columns) throws SQLException {
boolean isIdentity = false;
try {
final String identity = columns.getString("IS_AUTOINCREMENT");
if (identity != null && identity.toLowerCase().equals("yes")) {
if ((identity != null) && identity.toLowerCase().equals("yes")) {
isIdentity = true;
}
} catch (final SQLException ex) {
Expand All @@ -97,7 +91,7 @@ public ColumnMetadata mapColumn(final ResultSet columns) throws SQLException {
String comment = "";
try {
final String commentString = columns.getString("REMARKS");
if (commentString != null && !commentString.isEmpty()) {
if ((commentString != null) && !commentString.isEmpty()) {
comment = commentString;
}
} catch (final SQLException ex) {
Expand All @@ -111,7 +105,7 @@ public ColumnMetadata mapColumn(final ResultSet columns) throws SQLException {
}
final String adapterNotes = ColumnAdapterNotes.serialize(new ColumnAdapterNotes(jdbcType, columnTypeName));
return ColumnMetadata.builder().name(colName).adapterNotes(adapterNotes).type(colType).nullable(isNullable)
.identity(isIdentity).defaultValue(defaultValue).comment(comment).build();
.identity(isIdentity).defaultValue(defaultValue).comment(comment).build();
}

private static DataType getExaTypeFromJdbcType(final JdbcTypeDescription jdbcTypeDescription) throws SQLException {
Expand Down Expand Up @@ -301,10 +295,11 @@ public SqlDialectContext getContext() {
public void handleException(final SQLException exception,
final JdbcAdapterProperties.ExceptionHandlingMode exceptionMode) throws SQLException {
throw exception;
};
}

@Override
public String generatePushdownSql(final ConnectionInformation connectionInformation, final String columnDescription, final String pushdownSql) {
public String generatePushdownSql(final ConnectionInformation connectionInformation, final String columnDescription,
final String pushdownSql) {
final StringBuilder jdbcImportQuery = new StringBuilder();
if (columnDescription == null) {
jdbcImportQuery.append("IMPORT FROM JDBC AT ").append(connectionInformation.getCredentials());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,8 @@ public class JdbcTypeDescription {
private final int charOctedLength;
private final String typeName;

public JdbcTypeDescription(int jdbcType, int decimalScale, int precisionOrSize,
int charOctedLength
) {
this(jdbcType, decimalScale, precisionOrSize, charOctedLength, null);
}

public JdbcTypeDescription(int jdbcType, int decimalScale, int precisionOrSize, int charOctedLength,
String typeName) {
public JdbcTypeDescription(final int jdbcType, final int decimalScale, final int precisionOrSize,
final int charOctedLength, final String typeName) {
this.jdbcType = jdbcType;
this.decimalScale = decimalScale;
this.precisionOrSize = precisionOrSize;
Expand All @@ -23,22 +17,22 @@ public JdbcTypeDescription(int jdbcType, int decimalScale, int precisionOrSize,
}

public int getJdbcType() {
return jdbcType;
return this.jdbcType;
}

public int getDecimalScale() {
return decimalScale;
return this.decimalScale;
}

public int getPrecisionOrSize() {
return precisionOrSize;
return this.precisionOrSize;
}

public int getCharOctedLength() {
return charOctedLength;
return this.charOctedLength;
}

public String getTypeName() {
return typeName;
return this.typeName;
}
}
Loading

0 comments on commit 89108ef

Please sign in to comment.