You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by py...@apache.org on 2007/04/25 11:20:19 UTC
svn commit: r532274 - in /harmony/enhanced/classlib/trunk/modules/sql/src:
main/java/javax/sql/rowset/ main/java/org/apache/harmony/sql/internal/nls/
test/java/org/apache/harmony/sql/tests/javax/sql/rowset/
Author: pyang
Date: Wed Apr 25 02:20:18 2007
New Revision: 532274
URL: http://svn.apache.org/viewvc?view=rev&rev=532274
Log:
Apply patch for HARMONY-3748( [classlib][sql] 9 new methods in RowSetMetaDataImpl) with modifications
Added:
harmony/enhanced/classlib/trunk/modules/sql/src/main/java/javax/sql/rowset/SqlUtil.java (with props)
Modified:
harmony/enhanced/classlib/trunk/modules/sql/src/main/java/javax/sql/rowset/RowSetMetaDataImpl.java
harmony/enhanced/classlib/trunk/modules/sql/src/main/java/org/apache/harmony/sql/internal/nls/messages.properties
harmony/enhanced/classlib/trunk/modules/sql/src/test/java/org/apache/harmony/sql/tests/javax/sql/rowset/RowSetMetaDataImplTest.java
Modified: harmony/enhanced/classlib/trunk/modules/sql/src/main/java/javax/sql/rowset/RowSetMetaDataImpl.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/sql/src/main/java/javax/sql/rowset/RowSetMetaDataImpl.java?view=diff&rev=532274&r1=532273&r2=532274
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/sql/src/main/java/javax/sql/rowset/RowSetMetaDataImpl.java (original)
+++ harmony/enhanced/classlib/trunk/modules/sql/src/main/java/javax/sql/rowset/RowSetMetaDataImpl.java Wed Apr 25 02:20:18 2007
@@ -40,7 +40,7 @@
private static final int DEFAULT_COLUMN_COUNT = 4;
private static final long serialVersionUID = 6893806403181801867L;
-
+
private int colCount;
private ColInfo[] colInfo;
@@ -161,14 +161,30 @@
colInfo[arrayIndex].columnLabel = label == null ? EMPTY_STRING : label;
}
+ /**
+ * {@inheritDoc}
+ *
+ * @see javax.sql.RowSetMetaData#setColumnName(int, String)
+ */
public void setColumnName(int columnIndex, String columnName)
throws SQLException {
- throw new NotImplementedException();
+ int arrayIndex = columnIndex - 1;
+ checkColumnIndex(arrayIndex);
+ colInfo[arrayIndex].columnName = columnName == null ? EMPTY_STRING
+ : columnName;
}
+ /**
+ * {@inheritDoc}
+ *
+ * @see javax.sql.RowSetMetaData#setSchemaName(int, String)
+ */
public void setSchemaName(int columnIndex, String schemaName)
throws SQLException {
- throw new NotImplementedException();
+ int arrayIndex = columnIndex - 1;
+ checkColumnIndex(arrayIndex);
+ colInfo[arrayIndex].schemaName = schemaName == null ? EMPTY_STRING
+ : schemaName;
}
public void setPrecision(int columnIndex, int precision)
@@ -190,13 +206,30 @@
throw new NotImplementedException();
}
+ /**
+ * {@inheritDoc}
+ *
+ * @see javax.sql.RowSetMetaData#setColumnType(int, int)
+ */
public void setColumnType(int columnIndex, int SQLType) throws SQLException {
- throw new NotImplementedException();
+ SqlUtil.validateType(SQLType);
+
+ int arrayIndex = columnIndex - 1;
+ checkColumnIndex(arrayIndex);
+ colInfo[arrayIndex].colType = SQLType;
}
+ /**
+ * {@inheritDoc}
+ *
+ * @see javax.sql.RowSetMetaData#setColumnTypeName(int, String)
+ */
public void setColumnTypeName(int columnIndex, String typeName)
throws SQLException {
- throw new NotImplementedException();
+ int arrayIndex = columnIndex - 1;
+ checkColumnIndex(arrayIndex);
+ colInfo[arrayIndex].colTypeName = typeName == null ? EMPTY_STRING
+ : typeName;
}
/**
@@ -282,12 +315,26 @@
return colInfo[arrayIndex].columnLabel;
}
+ /**
+ * {@inheritDoc}
+ *
+ * @see java.sql.ResultSetMetaData#getColumnName(int)
+ */
public String getColumnName(int columnIndex) throws SQLException {
- throw new NotImplementedException();
+ int arrayIndex = columnIndex - 1;
+ checkColumnIndex(arrayIndex);
+ return colInfo[arrayIndex].columnName;
}
+ /**
+ * {@inheritDoc}
+ *
+ * @see java.sql.ResultSetMetaData#getSchemaName(int)
+ */
public String getSchemaName(int columnIndex) throws SQLException {
- throw new NotImplementedException();
+ int arrayIndex = columnIndex - 1;
+ checkColumnIndex(arrayIndex);
+ return colInfo[arrayIndex].schemaName;
}
public int getPrecision(int columnIndex) throws SQLException {
@@ -306,12 +353,26 @@
throw new NotImplementedException();
}
+ /**
+ * {@inheritDoc}
+ *
+ * @see java.sql.ResultSetMetaData#getColumnType(int)
+ */
public int getColumnType(int columnIndex) throws SQLException {
- throw new NotImplementedException();
+ int arrayIndex = columnIndex - 1;
+ checkColumnIndex(arrayIndex);
+ return colInfo[arrayIndex].colType;
}
+ /**
+ * {@inheritDoc}
+ *
+ * @see java.sql.ResultSetMetaData#getColumnTypeName(int)
+ */
public String getColumnTypeName(int columnIndex) throws SQLException {
- throw new NotImplementedException();
+ int arrayIndex = columnIndex - 1;
+ checkColumnIndex(arrayIndex);
+ return colInfo[arrayIndex].colTypeName;
}
/**
@@ -345,8 +406,13 @@
return colInfo[arrayIndex].definiteWritable;
}
+ /**
+ * {@inheritDoc}
+ *
+ * @see java.sql.ResultSetMetaData#getColumnClassName(int)
+ */
public String getColumnClassName(int columnIndex) throws SQLException {
- throw new NotImplementedException();
+ return SqlUtil.getClassNameByType(getColumnType(columnIndex));
}
/**
@@ -369,5 +435,13 @@
public boolean definiteWritable = true;
public String columnLabel;
+
+ public String columnName;
+
+ public String schemaName = EMPTY_STRING;
+
+ public String colTypeName;
+
+ public int colType;
}
-}
\ No newline at end of file
+}
Added: harmony/enhanced/classlib/trunk/modules/sql/src/main/java/javax/sql/rowset/SqlUtil.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/sql/src/main/java/javax/sql/rowset/SqlUtil.java?view=auto&rev=532274
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/sql/src/main/java/javax/sql/rowset/SqlUtil.java (added)
+++ harmony/enhanced/classlib/trunk/modules/sql/src/main/java/javax/sql/rowset/SqlUtil.java Wed Apr 25 02:20:18 2007
@@ -0,0 +1,119 @@
+/*
+ * 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 javax.sql.rowset;
+
+import java.sql.SQLException;
+import java.sql.Types;
+import org.apache.harmony.sql.internal.nls.Messages;
+
+
+class SqlUtil{
+ /*
+ * FIXME:Validate column types is defined by java.sql.Types, current implementation is ugly, need to find
+ * an elegant and effient way to check all constants defined in java.util.sql.Types
+ */
+ static void validateType(int type) throws SQLException {
+ switch(type){
+ case Types.ARRAY:
+ case Types.BIGINT:
+ case Types.BINARY:
+ case Types.BIT:
+ case Types.BLOB:
+ case Types.BOOLEAN:
+ case Types.CHAR:
+ case Types.CLOB:
+ case Types.DATALINK:
+ case Types.DATE:
+ case Types.DECIMAL:
+ case Types.DISTINCT:
+ case Types.DOUBLE:
+ case Types.FLOAT:
+ case Types.INTEGER:
+ case Types.JAVA_OBJECT:
+ case Types.LONGVARBINARY:
+ case Types.LONGVARCHAR:
+ case Types.NULL:
+ case Types.NUMERIC:
+ case Types.OTHER:
+ case Types.REAL:
+ case Types.REF:
+ case Types.SMALLINT:
+ case Types.STRUCT:
+ case Types.TIME:
+ case Types.TIMESTAMP:
+ case Types.TINYINT:
+ case Types.VARBINARY:
+ case Types.VARCHAR:
+ return;
+ }
+ throw new SQLException(Messages.getString("sql.28")); //$NON-NLS-1$
+ }
+
+ static String getClassNameByType(int type){
+ String className = null;
+ switch (type) {
+ case Types.BINARY:
+ case Types.BLOB:
+ case Types.LONGVARBINARY:
+ case Types.VARBINARY:
+ className = new byte[0].getClass().getName();
+ break;
+ case Types.DOUBLE:
+ case Types.FLOAT:
+ className = Double.class.getName();
+ break;
+ case Types.BIGINT:
+ className = Long.class.getName();
+ break;
+ case Types.BIT:
+ className = Boolean.class.getName();
+ break;
+ case Types.DECIMAL:
+ case Types.NUMERIC:
+ className = java.math.BigDecimal.class.getName();
+ break;
+ case Types.CLOB:
+ className = new char[0].getClass().getName();
+ break;
+ case Types.DATE:
+ className = java.sql.Date.class.getName();
+ break;
+ case Types.INTEGER:
+ className = Integer.class.getName();
+ break;
+ case Types.REAL:
+ className = Float.class.getName();
+ break;
+ case Types.SMALLINT:
+ className = Short.class.getName();
+ break;
+ case Types.TIME:
+ className = java.sql.Time.class.getName();
+ break;
+ case Types.TIMESTAMP:
+ className = java.sql.Timestamp.class.getName();
+ break;
+ case Types.TINYINT:
+ className = Byte.class.getName();
+ break;
+ default:
+ className = String.class.getName();
+ }
+ return className;
+ }
+}
Propchange: harmony/enhanced/classlib/trunk/modules/sql/src/main/java/javax/sql/rowset/SqlUtil.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: harmony/enhanced/classlib/trunk/modules/sql/src/main/java/org/apache/harmony/sql/internal/nls/messages.properties
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/sql/src/main/java/org/apache/harmony/sql/internal/nls/messages.properties?view=diff&rev=532274&r1=532273&r2=532274
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/sql/src/main/java/org/apache/harmony/sql/internal/nls/messages.properties (original)
+++ harmony/enhanced/classlib/trunk/modules/sql/src/main/java/org/apache/harmony/sql/internal/nls/messages.properties Wed Apr 25 02:20:18 2007
@@ -41,4 +41,5 @@
sql.24=Invalid length for truncate
sql.25=Unsupported operation. SerialClob is not instantiated with a fully implemented Clob object.
sql.26=Invalid column count. Cannot be less or equal to zero
-sql.27=Invalid column index :{0}
\ No newline at end of file
+sql.27=Invalid column index :{0}
+sql.28=Invalid SQL type for column
\ No newline at end of file
Modified: harmony/enhanced/classlib/trunk/modules/sql/src/test/java/org/apache/harmony/sql/tests/javax/sql/rowset/RowSetMetaDataImplTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/sql/src/test/java/org/apache/harmony/sql/tests/javax/sql/rowset/RowSetMetaDataImplTest.java?view=diff&rev=532274&r1=532273&r2=532274
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/sql/src/test/java/org/apache/harmony/sql/tests/javax/sql/rowset/RowSetMetaDataImplTest.java (original)
+++ harmony/enhanced/classlib/trunk/modules/sql/src/test/java/org/apache/harmony/sql/tests/javax/sql/rowset/RowSetMetaDataImplTest.java Wed Apr 25 02:20:18 2007
@@ -2,6 +2,7 @@
import java.sql.SQLException;
+import java.sql.Types;
import javax.sql.rowset.RowSetMetaDataImpl;
import junit.framework.TestCase;
@@ -78,7 +79,44 @@
}
/**
- * @tests {@link javax.sql.rowset.RowSetMetaDataImpl#getColumnLabel(int)
+ * @tests {@link javax.sql.rowset.RowSetMetaDataImpl#getColumnClassName(int)}
+ */
+ public void test_getColumnClassNameI() throws SQLException {
+ try {
+ metaDataImpl.getColumnClassName(1);
+ fail ("should throw SQLException");
+ } catch (SQLException e) {
+ // expected
+ }
+
+ metaDataImpl.setColumnCount(12);
+ assertEquals("java.lang.String", metaDataImpl.getColumnClassName(12));
+
+ metaDataImpl.setColumnTypeName(12, null);
+ assertEquals("java.lang.String", metaDataImpl.getColumnClassName(12));
+ metaDataImpl.setColumnType(12, Types.BLOB);
+ assertEquals("[B", metaDataImpl.getColumnClassName(12));
+ metaDataImpl.setColumnType(12, Types.FLOAT);
+ assertEquals("java.lang.Double", metaDataImpl.getColumnClassName(12));
+ metaDataImpl.setColumnType(12, Types.BIGINT);
+ assertEquals("java.lang.Long", metaDataImpl.getColumnClassName(12));
+ metaDataImpl.setColumnType(12, Types.BIT);
+ assertEquals("java.lang.Boolean", metaDataImpl.getColumnClassName(12));
+ metaDataImpl.setColumnType(12, Types.DECIMAL);
+ assertEquals("java.math.BigDecimal", metaDataImpl.getColumnClassName(12));
+ metaDataImpl.setColumnType(12, Types.TINYINT);
+ assertEquals("java.lang.Byte", metaDataImpl.getColumnClassName(12));
+
+ try {
+ metaDataImpl.getColumnClassName(0);
+ fail ("should throw SQLException");
+ } catch (SQLException e) {
+ // expected
+ }
+ }
+
+ /**
+ * @tests {@link javax.sql.rowset.RowSetMetaDataImpl#getColumnLabel(int)}
*/
public void test_getColumnLabelI() throws SQLException {
try {
@@ -104,6 +142,107 @@
}
/**
+ * @tests {@link javax.sql.rowset.RowSetMetaDataImpl#getColumnName(int)}
+ */
+ public void test_getColumnNameI() throws SQLException {
+ try {
+ metaDataImpl.getColumnName(1);
+ fail ("should throw SQLException");
+ } catch (SQLException e) {
+ // expected
+ }
+
+ metaDataImpl.setColumnCount(13);
+ assertNull(metaDataImpl.getColumnName(12));
+ metaDataImpl.setColumnName(12, null);
+ assertEquals("", metaDataImpl.getColumnName(12));
+ metaDataImpl.setColumnName(12, "ColumnName");
+ assertEquals("ColumnName", metaDataImpl.getColumnName(12));
+
+ try {
+ metaDataImpl.getColumnName(0);
+ fail ("should throw SQLException");
+ } catch (SQLException e) {
+ // expected
+ }
+ }
+
+ /**
+ * @tests {@link javax.sql.rowset.RowSetMetaDataImpl#getColumnType(int)}
+ */
+ public void test_getColumnTypeI() throws SQLException {
+ try {
+ metaDataImpl.getColumnType(1);
+ fail ("should throw SQLException");
+ } catch (SQLException e) {
+ // expected
+ }
+
+ metaDataImpl.setColumnCount(13);
+ metaDataImpl.setColumnType(13, Types.ARRAY);
+ assertEquals(Types.ARRAY, metaDataImpl.getColumnType(13));
+
+ try {
+ metaDataImpl.getColumnType(14);
+ fail ("should throw SQLException");
+ } catch (SQLException e) {
+ // expected
+ }
+ }
+
+ /**
+ * @tests {@link javax.sql.rowset.RowSetMetaDataImpl#getColumnTypeName(int)}
+ */
+ public void test_getColumnTypeNameI() throws SQLException {
+ try {
+ metaDataImpl.getColumnTypeName(223);
+ fail ("should throw SQLException");
+ } catch (SQLException e) {
+ // expected
+ }
+
+ metaDataImpl.setColumnCount(21);
+ metaDataImpl.setColumnType(14, Types.BIGINT);
+ metaDataImpl.setColumnTypeName(14, null);
+ assertEquals("", metaDataImpl.getColumnTypeName(14));
+ metaDataImpl.setColumnTypeName(14, "haha");
+ assertEquals("haha", metaDataImpl.getColumnTypeName(14));
+
+ try {
+ metaDataImpl.getColumnTypeName(22);
+ fail ("should throw SQLException");
+ } catch (SQLException e) {
+ // expected
+ }
+ }
+
+ /**
+ * @tests {@link javax.sql.rowset.RowSetMetaDataImpl#getSchemaName(int)}
+ */
+ public void test_getSchemaNameI() throws SQLException {
+ try {
+ metaDataImpl.getSchemaName(352);
+ fail ("should throw SQLException");
+ } catch (SQLException e) {
+ // expected
+ }
+
+ metaDataImpl.setColumnCount(67);
+ metaDataImpl.setSchemaName(67, null);
+ assertEquals("", metaDataImpl.getSchemaName(67));
+ metaDataImpl.setSchemaName(67, "a \u0053");
+ assertEquals("a S", metaDataImpl.getSchemaName(67));
+
+ try {
+ metaDataImpl.getSchemaName(Integer.MIN_VALUE);
+ fail ("should throw SQLException");
+ } catch (SQLException e) {
+ // expected
+ }
+ }
+
+
+ /**
* @tests {@link javax.sql.rowset.RowSetMetaDataImpl#isAutoIncrement(int)}
*/
public void test_isAutoIncrementI() throws SQLException {
@@ -357,9 +496,35 @@
}
/**
+ * @tests {@link javax.sql.rowset.RowSetMetaDataImpl#setColumnName(int, String)}
+ */
+ public void test_setColumnNameILjava_lang_String() throws SQLException {
+ try {
+ metaDataImpl.setColumnName(1, null);
+ fail ("should throw SQLException");
+ } catch (SQLException e) {
+ // expected
+ }
+
+ metaDataImpl.setColumnCount(4);
+ assertNull(metaDataImpl.getColumnName(1));
+ metaDataImpl.setColumnName(1, "ate dsW");
+ assertEquals("ate dsW", metaDataImpl.getColumnName(1));
+ metaDataImpl.setColumnName(1, null);
+ assertEquals("", metaDataImpl.getColumnName(1));
+
+ try {
+ metaDataImpl.setColumnName(5, "exception");
+ fail ("should throw SQLException");
+ } catch (SQLException e) {
+ // expected
+ }
+ }
+
+ /**
* @tests {@link javax.sql.rowset.RowSetMetaDataImpl#setColumnLabel(int, String)}
*/
- public void test_setColumnLabelIZ() throws SQLException {
+ public void test_setColumnLabelILjava_lang_String() throws SQLException {
try {
metaDataImpl.setColumnLabel(1, null);
fail ("should throw SQLException");
@@ -381,6 +546,60 @@
}
/**
+ * @tests {@link javax.sql.rowset.RowSetMetaDataImpl#setColumnType(int, int)}
+ */
+ public void test_setColumnTypeII() throws SQLException {
+ try {
+ metaDataImpl.setColumnType(1, Types.BIGINT);
+ fail ("should throw SQLException");
+ } catch (SQLException e) {
+ // expected
+ }
+
+ metaDataImpl.setColumnCount(2);
+ assertEquals(0, metaDataImpl.getColumnType(1));
+ metaDataImpl.setColumnType(1, Types.CLOB);
+ assertEquals(Types.CLOB, metaDataImpl.getColumnType(1));
+ metaDataImpl.setColumnType(1, Types.BOOLEAN);
+ assertEquals(Types.BOOLEAN, metaDataImpl.getColumnType(1));
+
+ try {
+ metaDataImpl.setColumnType(1, 66);
+ fail ("should throw SQLException");
+ } catch (SQLException e) {
+ // expected
+ }
+
+ try {
+ metaDataImpl.setColumnType(3, 58);
+ fail ("should throw SQLException");
+ } catch (SQLException e) {
+ // expected
+ }
+ }
+
+ /**
+ * @tests {@link javax.sql.rowset.RowSetMetaDataImpl#setColumnTypeName(int, String)}
+ */
+ public void test_setColumnTypeNameILjava_lang_String() throws SQLException {
+ try {
+ metaDataImpl.setColumnTypeName(1, "aa");
+ fail ("should throw SQLException");
+ } catch (SQLException e) {
+ // expected
+ }
+
+ metaDataImpl.setColumnCount(2);
+ assertNull(metaDataImpl.getColumnTypeName(2));
+ metaDataImpl.setColumnTypeName(2, null);
+ assertEquals("", metaDataImpl.getColumnTypeName(2));
+ metaDataImpl.setColumnTypeName(2, "");
+ assertEquals("", metaDataImpl.getColumnTypeName(2));
+ metaDataImpl.setColumnTypeName(2, "java.lang.String");
+ assertEquals(0, metaDataImpl.getColumnType(2));
+ }
+
+ /**
* @tests {@link javax.sql.rowset.RowSetMetaDataImpl#setCurrency(int, boolean)}
*/
public void test_setCurrencyIZ() throws SQLException {
@@ -400,6 +619,32 @@
try {
metaDataImpl.setCurrency(8, true);
+ fail ("should throw SQLException");
+ } catch (SQLException e) {
+ // expected
+ }
+ }
+
+ /**
+ * @tests {@link javax.sql.rowset.RowSetMetaDataImpl#setSchemaName(int, String)}
+ */
+ public void test_setSchemaNameILjava_lang_String() throws SQLException {
+ try {
+ metaDataImpl.setSchemaName(-12, "asw");
+ fail ("should throw SQLException");
+ } catch (SQLException e) {
+ // expected
+ }
+
+ metaDataImpl.setColumnCount(7);
+ assertEquals("", metaDataImpl.getSchemaName(3));
+ metaDataImpl.setSchemaName(3, "schema name");
+ assertEquals("schema name", metaDataImpl.getSchemaName(3));
+ metaDataImpl.setSchemaName(3, null);
+ assertEquals("", metaDataImpl.getSchemaName(3));
+
+ try {
+ metaDataImpl.setSchemaName(Integer.MIN_VALUE, null);
fail ("should throw SQLException");
} catch (SQLException e) {
// expected