1.1 --- a/visualweb.dataprovider/test/unit/src/org/netbeans/modules/visualweb/dataprovider/CachedRowSetDataProviderTest.java Fri Nov 16 23:25:14 2007 +0000
1.2 +++ b/visualweb.dataprovider/test/unit/src/org/netbeans/modules/visualweb/dataprovider/CachedRowSetDataProviderTest.java Sat Nov 17 01:30:17 2007 +0000
1.3 @@ -6,12 +6,14 @@
1.4 package org.netbeans.modules.visualweb.dataprovider;
1.5
1.6 import com.sun.data.provider.FieldKey;
1.7 +import com.sun.data.provider.RowKey;
1.8 import com.sun.sql.rowset.CachedRowSetXImpl;
1.9 import java.io.File;
1.10 import junit.framework.TestCase;
1.11 import com.sun.data.provider.impl.CachedRowSetDataProvider;
1.12
1.13
1.14 +import java.beans.Beans;
1.15 import java.sql.Connection;
1.16 import java.sql.DriverManager;
1.17 import java.sql.PreparedStatement;
1.18 @@ -36,7 +38,7 @@
1.19 private static final String IDNAME = "id";
1.20 private static final String COL1NAME = "col1";
1.21 private static final String COL2NAME = "col2";
1.22 -
1.23 + private static final String ROWID = "row1";
1.24 private static final int NUMROWS = 10;
1.25
1.26 public CachedRowSetDataProviderTest(String testName) {
1.27 @@ -166,6 +168,79 @@
1.28 provider.close();
1.29 }
1.30
1.31 + public void testInsertRow() {
1.32 + try {
1.33 + int newRowCount = 0;
1.34 + int currentRowCount = 0;
1.35 + CachedRowSetXImpl rowset = new CachedRowSetXImpl();
1.36 + Beans beans = new Beans();
1.37 + beans.setDesignTime(true);
1.38 + CachedRowSetDataProvider provider = new CachedRowSetDataProvider();
1.39 + provider.setCachedRowSet(rowset);
1.40 + currentRowCount = getRowCount(rowset);
1.41 +
1.42 + Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
1.43 + Connection conn = DriverManager.getConnection(DBURL);
1.44 +
1.45 + PreparedStatement insert = conn.prepareStatement(
1.46 + "INSERT INTO " + TABLENAME + " VALUES(?, ?, ?)");
1.47 +
1.48 + for (int i = 1; i <= NUMROWS; i++) {
1.49 + insert.setInt(1, i);
1.50 + insert.setString(2, "col1_" + i);
1.51 + insert.setString(3, "col2_" + i);
1.52 +
1.53 + insert.execute();
1.54 + }
1.55 +
1.56 + newRowCount = getRowCount(rowset);
1.57 + assertEquals(newRowCount, currentRowCount + 1);
1.58 + } catch (ClassNotFoundException ex) {
1.59 + LOGGER.log(Level.FINE, null, ex);
1.60 + } catch (SQLException sqle) {
1.61 + LOGGER.log(Level.FINE, null, sqle);
1.62 + }
1.63 +
1.64 + }
1.65 +
1.66 + public void testRevertChanges() {
1.67 + int newRowCount = 0;
1.68 + int currentRowCount = 0;
1.69 +
1.70 + try {
1.71 + CachedRowSetXImpl rowset = new CachedRowSetXImpl();
1.72 + Beans beans = new Beans();
1.73 + beans.setDesignTime(true);
1.74 + CachedRowSetDataProvider provider = new CachedRowSetDataProvider();
1.75 + provider.setCachedRowSet(rowset);
1.76 +
1.77 + /* Select only one row and one extra column
1.78 + */
1.79 + rowset.setCommand("SELECT " + IDNAME + ", " + COL1NAME + " FROM " + TABLENAME + " WHERE " + IDNAME + " = 1");
1.80 +
1.81 + rowset.setTableName(TABLENAME);
1.82 +
1.83 + //commit changes
1.84 + rowset.execute();
1.85 + provider.commitChanges();
1.86 + currentRowCount = getRowCount(rowset);
1.87 +
1.88 + // add a new row
1.89 + FieldKey fk = new FieldKey(IDNAME);
1.90 + RowKey rk = new RowKey(ROWID);
1.91 + provider.setValue(fk, rk, beans);
1.92 + provider.appendRow();
1.93 + newRowCount = getRowCount(rowset);
1.94 + // test revert changes
1.95 + provider.revertChanges();
1.96 + assertEquals(newRowCount, currentRowCount);
1.97 +
1.98 + } catch (SQLException sqle) {
1.99 + LOGGER.log(Level.FINE, null, sqle);
1.100 + }
1.101 + }
1.102 +
1.103 +
1.104 private void checkRows(CachedRowSetDataProvider provider,
1.105 int expectedRows, int expectedFields) {
1.106 int numrows = provider.getRowCount();
1.107 @@ -185,6 +260,27 @@
1.108 }
1.109 }
1.110 }
1.111 +
1.112 + private int getRowCount(CachedRowSetXImpl rowset) {
1.113 +
1.114 + CachedRowSetDataProvider provider = new CachedRowSetDataProvider();
1.115 + provider.setCachedRowSet(rowset);
1.116 +
1.117 + // Select only one row and one extra column
1.118 + try {
1.119 + rowset.setUrl("jdbc:derby:mydb;create=true");
1.120 + rowset.setCommand("SELECT " + IDNAME + ", " + COL1NAME + " FROM " + TABLENAME + " WHERE " + IDNAME + " = 2");
1.121 + rowset.setTableName(TABLENAME);
1.122 +
1.123 + //commit changes
1.124 + rowset.execute();
1.125 +
1.126 + } catch (SQLException sqle) {
1.127 + LOGGER.log(Level.FINE, null, sqle);
1.128 + }
1.129 +
1.130 + return provider.getRowCount();
1.131 + }
1.132
1.133
1.134 }