package com.orientechnologies.orient.jdbc; import org.junit.Test; import java.sql.*; import java.util.Calendar; import java.util.TimeZone; import static org.hamcrest.Matchers.*; import static org.junit.Assert.*; public class OrientJdbcResultSetMetaDataTest extends OrientJdbcBaseTest { @Test public void shouldMapReturnTypes() throws Exception { assertThat(conn.isClosed(), is(false)); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT stringKey, intKey, text, length, date FROM Item"); assertThat(rs.getFetchSize(), equalTo(20)); assertThat(rs.isBeforeFirst(), is(true)); assertThat(rs.next(), is(true)); assertThat(rs.getRow(), equalTo(0)); assertThat(rs.getString(1), equalTo("1")); assertThat(rs.getString("stringKey"), equalTo("1")); assertThat(rs.findColumn("stringKey"), equalTo(1)); assertThat(rs.getInt(2), equalTo(1)); assertThat(rs.getInt("intKey"), equalTo(1)); assertEquals(rs.getString("text").length(), rs.getInt("length")); Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC")); cal.add(Calendar.HOUR_OF_DAY, -1); Date date = new Date(cal.getTimeInMillis()); assertThat(rs.getDate("date").toString(), equalTo(date.toString())); assertThat(rs.getDate(5).toString(), equalTo(date.toString())); rs.last(); assertThat(rs.getRow(), equalTo(19)); rs.close(); assertThat(rs.isClosed(), is(true)); } @Test public void shouldNavigateResultSet() throws Exception { assertFalse(conn.isClosed()); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM Item"); assertThat(rs.getFetchSize(), equalTo(20)); assertThat(rs.isBeforeFirst(), is(true)); assertThat(rs.next(), is(true)); assertThat(rs.getRow(), equalTo(0)); rs.last(); assertThat(rs.getRow(), equalTo(19)); assertThat(rs.next(), is(false)); rs.afterLast(); assertThat(rs.next(), is(false)); rs.close(); assertThat(rs.isClosed(), is(true)); stmt.close(); assertTrue(stmt.isClosed()); } @Test public void shouldReturnResultSetAfterExecute() throws Exception { assertThat(conn.isClosed(), is(false)); Statement stmt = conn.createStatement(); assertThat(stmt.execute("SELECT stringKey, intKey, text, length, date FROM Item"), is(true)); ResultSet rs = stmt.getResultSet(); assertThat(rs, is(notNullValue())); assertThat(rs.getFetchSize(), equalTo(20)); } @Test public void shouldNavigateResultSetByMetadata() throws Exception { assertFalse(conn.isClosed()); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT stringKey, intKey, text, length, date FROM Item"); rs.next(); ResultSetMetaData metaData = rs.getMetaData(); assertThat(metaData.getColumnCount(), equalTo(5)); assertThat(metaData.getColumnName(1), equalTo("stringKey")); assertThat(rs.getObject(1) instanceof String, is(true)); assertThat(metaData.getColumnName(2), equalTo("intKey")); assertThat(metaData.getColumnName(3), equalTo("text")); assertThat(rs.getObject(3) instanceof String, is(true)); assertThat(metaData.getColumnName(4), equalTo("length")); assertThat(metaData.getColumnName(5), equalTo("date")); } @Test public void shouldMapOrientTypesToJavaSQL() throws Exception { assertThat(conn.isClosed(), is(false)); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT stringKey, intKey, text, length, date FROM Item"); rs.next(); ResultSetMetaData metaData = rs.getMetaData(); assertThat(metaData.getColumnCount(), equalTo(5)); assertThat(metaData.getColumnType(2), equalTo(java.sql.Types.INTEGER)); assertThat(metaData.getColumnType(3), equalTo(java.sql.Types.VARCHAR)); assertThat(rs.getObject(3) instanceof String, is(true)); assertThat(metaData.getColumnType(4), equalTo(java.sql.Types.BIGINT)); assertThat(metaData.getColumnType(5), equalTo(java.sql.Types.TIMESTAMP)); assertThat(metaData.getColumnClassName(1), equalTo(String.class.getName())); assertThat(metaData.getColumnType(1), equalTo(java.sql.Types.VARCHAR)); } }