]> source.dussan.org Git - jackcess.git/commitdiff
expand javadocs for core interfaces
authorJames Ahlborn <jtahlborn@yahoo.com>
Thu, 8 Aug 2013 02:47:05 +0000 (02:47 +0000)
committerJames Ahlborn <jtahlborn@yahoo.com>
Thu, 8 Aug 2013 02:47:05 +0000 (02:47 +0000)
git-svn-id: https://svn.code.sf.net/p/jackcess/code/jackcess/trunk@769 f203690c-595d-4dc9-a70b-905162fa7fd2

24 files changed:
TODO.txt
src/java/com/healthmarketscience/jackcess/Column.java
src/java/com/healthmarketscience/jackcess/ColumnBuilder.java
src/java/com/healthmarketscience/jackcess/Cursor.java
src/java/com/healthmarketscience/jackcess/CursorBuilder.java
src/java/com/healthmarketscience/jackcess/DataType.java
src/java/com/healthmarketscience/jackcess/Database.java
src/java/com/healthmarketscience/jackcess/DatabaseBuilder.java
src/java/com/healthmarketscience/jackcess/Index.java
src/java/com/healthmarketscience/jackcess/IndexBuilder.java
src/java/com/healthmarketscience/jackcess/IndexCursor.java
src/java/com/healthmarketscience/jackcess/Relationship.java
src/java/com/healthmarketscience/jackcess/Row.java
src/java/com/healthmarketscience/jackcess/Table.java
src/java/com/healthmarketscience/jackcess/TableBuilder.java
src/java/com/healthmarketscience/jackcess/impl/ComplexColumnSupport.java
src/java/com/healthmarketscience/jackcess/impl/DatabaseImpl.java
src/java/com/healthmarketscience/jackcess/impl/IndexImpl.java
src/java/com/healthmarketscience/jackcess/util/Joiner.java
test/src/java/com/healthmarketscience/jackcess/BigIndexTest.java
test/src/java/com/healthmarketscience/jackcess/CursorBuilderTest.java
test/src/java/com/healthmarketscience/jackcess/CursorTest.java
test/src/java/com/healthmarketscience/jackcess/IndexTest.java
test/src/java/com/healthmarketscience/jackcess/impl/IndexCodesTest.java

index 2de5697d422cf17f388081154048aec9e98414a6..3d74657a0614a7469a683fe0b5eb75c901279821 100644 (file)
--- a/TODO.txt
+++ b/TODO.txt
@@ -58,10 +58,10 @@ Refactor goals:
 - implement page buffering in PageChannel
   * need to implement logical flushing in update code (startUpdate/finishUpdate)
 * limit size of IndexPageCache?
-- make non-thread-safeness more explicit
+* make non-thread-safeness more explicit
 - refactor free-space handlers Table/Column?
-- update index/cookbook for new api
-- add basic walk-through in class javadocs to guide users to correct classes
+* update index/cookbook for new api
+* add basic walk-through in class javadocs to guide users to correct classes
   and basic getting started stuff.
 
 * public api final cleanup:
index 82268e5c43d0fbbee3d7be72afd66f5cbda8ac72..86e8ab0be0c2d53241852b3b8caffed97d29510f 100644 (file)
@@ -27,7 +27,11 @@ import com.healthmarketscience.jackcess.complex.ComplexColumnInfo;
 import com.healthmarketscience.jackcess.complex.ComplexValue;
 
 /**
- * Access database column definition
+ * Access database column definition.  A {@link Table} has a list of Column
+ * instances describing the table schema.
+ * <p>
+ * A Column instance is not thread-safe (see {@link Database} for more
+ * thread-safety details).
  *
  * @author James Ahlborn
  */
index 90ddc342dfabed4ce6e57a322ff600590284eada..0154ce187a0e0af946d23d07eb8ea96fa60dfd76 100644 (file)
@@ -36,7 +36,8 @@ import com.healthmarketscience.jackcess.impl.JetFormat;
 import com.healthmarketscience.jackcess.impl.DatabaseImpl;
 
 /**
- * Builder style class for constructing a Column.
+ * Builder style class for constructing a {@link Column}.  See {@link
+ * TableBuilder} for example usage.
  *
  * @author James Ahlborn
  */
index 5c6d12f2291903f982bc1e8ed3e63b2cd5a0b59b..f84f8dd4ac780f2e90dd82caa2e04ffb9c5d6bf0 100644 (file)
@@ -29,17 +29,23 @@ import com.healthmarketscience.jackcess.util.ErrorHandler;
 import com.healthmarketscience.jackcess.util.IterableBuilder;
 
 /**
- * Manages iteration for a Table.  Different cursors provide different methods
- * of traversing a table.  Cursors should be fairly robust in the face of
- * table modification during traversal (although depending on how the table is
- * traversed, row updates may or may not be seen).  Multiple cursors may
+ * Manages iteration for a {@link Table}.  Different cursors provide different
+ * methods of traversing a table.  Cursors should be fairly robust in the face
+ * of table modification during traversal (although depending on how the table
+ * is traversed, row updates may or may not be seen).  Multiple cursors may
  * traverse the same table simultaneously.
+ * <p/>
+ * Basic cursors will generally iterate table data in the order it appears in
+ * the database and searches will require scanning the entire table.
+ * Additional features are available when utilizing an {@link Index} backed
+ * {@link IndexCursor}.
  * <p>
  * The {@link CursorBuilder} provides a variety of static utility methods to
  * construct cursors with given characteristics or easily search for specific
  * values as well as friendly and flexible construction options.
  * <p>
- * Is not thread-safe.
+ * A Cursor instance is not thread-safe (see {@link Database} for more
+ * thread-safety details).
  *
  * @author James Ahlborn
  */
index 9485090604aba82d6d0d1a04ecba9da812d96de3..26f3f92b6169b76f824077ec2b5e2e01603f1ec8 100644 (file)
@@ -43,9 +43,21 @@ import com.healthmarketscience.jackcess.util.ColumnMatcher;
 
 
 /**
- * Builder style class for constructing a Cursor.  By default, a cursor is
- * created at the beginning of the table, and any start/end rows are
+ * Builder style class for constructing a {@link Cursor}.  By default, a
+ * cursor is created at the beginning of the table, and any start/end rows are
  * inclusive.
+ * <p/>
+ * Simple example traversal:
+ * <pre>
+ *   for(Row row : table.newCursor().toCursor()) {
+ *     // ... process each row ...
+ *   }
+ * </pre>
+ * <p/>
+ * Simple example search:
+ * <pre>
+ *   Row row = CursorBuilder.findRow(table, Collections.singletonMap(col, "foo"));
+ * </pre>
  *
  * @author James Ahlborn
  */
@@ -325,14 +337,13 @@ public class CursorBuilder {
    * types of indexes do not include all entries (namely, some indexes ignore
    * null entries, see {@link Index#shouldIgnoreNulls}).
    * 
-   * @param table the table over which this cursor will traverse
    * @param index index for the table which will define traversal order as
    *              well as enhance certain lookups
    */
-  public static IndexCursor createCursor(Table table, Index index)
+  public static IndexCursor createCursor(Index index)
     throws IOException
   {
-    return table.newCursor().setIndex(index).toIndexCursor();
+    return index.getTable().newCursor().setIndex(index).toIndexCursor();
   }
   
   /**
@@ -343,7 +354,6 @@ public class CursorBuilder {
    * types of indexes do not include all entries (namely, some indexes ignore
    * null entries, see {@link Index#shouldIgnoreNulls}).
    * 
-   * @param table the table over which this cursor will traverse
    * @param index index for the table which will define traversal order as
    *              well as enhance certain lookups
    * @param startRow the first row of data for the cursor (inclusive), or
@@ -351,11 +361,11 @@ public class CursorBuilder {
    * @param endRow the last row of data for the cursor (inclusive), or
    *               {@code null} for the last entry
    */
-  public static IndexCursor createCursor(Table table, Index index,
+  public static IndexCursor createCursor(Index index,
                                          Object[] startRow, Object[] endRow)
     throws IOException
   {
-    return table.newCursor().setIndex(index)
+    return index.getTable().newCursor().setIndex(index)
       .setStartRow(startRow)
       .setEndRow(endRow)
       .toIndexCursor();
@@ -369,7 +379,6 @@ public class CursorBuilder {
    * types of indexes do not include all entries (namely, some indexes ignore
    * null entries, see {@link Index#shouldIgnoreNulls}).
    * 
-   * @param table the table over which this cursor will traverse
    * @param index index for the table which will define traversal order as
    *              well as enhance certain lookups
    * @param startRow the first row of data for the cursor, or {@code null} for
@@ -379,14 +388,14 @@ public class CursorBuilder {
    *               the last entry
    * @param endInclusive whether or not endRow is inclusive or exclusive
    */
-  public static IndexCursor createCursor(Table table, Index index,
+  public static IndexCursor createCursor(Index index,
                                          Object[] startRow,
                                          boolean startInclusive,
                                          Object[] endRow,
                                          boolean endInclusive)
     throws IOException
   {
-    return table.newCursor().setIndex(index)
+    return index.getTable().newCursor().setIndex(index)
       .setStartRow(startRow)
       .setStartRowInclusive(startInclusive)
       .setEndRow(endRow)
@@ -452,15 +461,14 @@ public class CursorBuilder {
    * Warning, this method <i>always</i> starts searching from the beginning of
    * the Table (you cannot use it to find successive matches).
    * 
-   * @param table the table to search
    * @param index index to assist the search
    * @param rowPattern pattern to be used to find the row
    * @return the matching row or {@code null} if a match could not be found.
    */
-  public static Row findRow(Table table, Index index, Map<String,?> rowPattern)
+  public static Row findRow(Index index, Map<String,?> rowPattern)
     throws IOException
   {
-    Cursor cursor = createCursor(table, index);
+    Cursor cursor = createCursor(index);
     if(cursor.findFirstRow(rowPattern)) {
       return cursor.getCurrentRow();
     }
@@ -477,7 +485,6 @@ public class CursorBuilder {
    * distinguishing this situation is important, you will need to use a Cursor
    * directly instead of this convenience method.
    * 
-   * @param table the table to search
    * @param index index to assist the search
    * @param column column whose value should be returned
    * @param columnPattern column being matched by the valuePattern
@@ -485,11 +492,11 @@ public class CursorBuilder {
    *                     desired row
    * @return the matching row or {@code null} if a match could not be found.
    */
-  public static Object findValue(Table table, Index index, Column column,
+  public static Object findValue(Index index, Column column,
                                  Column columnPattern, Object valuePattern)
     throws IOException
   {
-    Cursor cursor = createCursor(table, index);
+    Cursor cursor = createCursor(index);
     if(cursor.findFirstRow(columnPattern, valuePattern)) {
       return cursor.getCurrentRowValue(column);
     }
index 586d16e20cb40cd798a1a8eabf3a33d3dbd28ad9..75a5a4ee66906099701ec501eae997d97f27b51a 100644 (file)
@@ -39,7 +39,8 @@ import java.math.BigInteger;
 import com.healthmarketscience.jackcess.impl.JetFormat;
 
 /**
- * Access data type
+ * Supported access data types.
+ * 
  * @author Tim McCune
  */
 public enum DataType {
index 71a6d59786bf867ff153d744eb42c49bbbd18733..ab4b7ca25bd84c112bf30aa9d600509770206df8 100644 (file)
@@ -44,10 +44,15 @@ import com.healthmarketscience.jackcess.util.LinkResolver;
  * Database has been opened, you can interact with the data via the relevant
  * {@link Table}.  When a Database instance is no longer useful, it should
  * <b>always</b> be closed ({@link #close}) to avoid corruption.
- * <p>
- * Note, Database instances (and all the related objects) are <i>not</i>
+ * <p/>
+ * Database instances (and all the related objects) are <i>not</i>
  * thread-safe.  However, separate Database instances (and their respective
  * objects) can be used by separate threads without a problem.
+ * <p/>
+ * Database instances do not implement any "transactional" support, and
+ * therefore concurrent editing of the same database file by multiple Database
+ * instances (or with outside programs such as MS Access) <i>will generally
+ * result in database file corruption</i>.
  *
  * @author James Ahlborn
  * @usage _general_class_
index e9ea26e1fa366bd07732a448e723fe86651ea563..f0462051e5694dae10eab98d7cd807575913860d 100644 (file)
@@ -30,7 +30,19 @@ import com.healthmarketscience.jackcess.impl.CodecProvider;
 import com.healthmarketscience.jackcess.util.MemFileChannel;
 
 /**
- * Builder style class for opening/creating a Database.
+ * Builder style class for opening/creating a {@link Database}.
+ * <p/>
+ * Simple example usage:
+ * <pre>
+ *   Database db = DatabaseBuilder.open(new File("test.mdb"));
+ * </pre>
+ * <p/>
+ * Advanced example usage:
+ * <pre>
+ *   Database db = new DatabaseBuilder(new File("test.mdb"))
+ *     .setReadOnly(true)
+ *     .open();
+ * </pre>
  *
  * @author James Ahlborn
  */
index 4054c66a73e30c32bdd0e31fef4102c82c6cde4b..9afc6eb98455c86ba496d6425a5b8b5cf62b25f0 100644 (file)
@@ -67,6 +67,11 @@ public interface Index
    */
   public boolean isUnique();
 
+  /**
+   * Convenience method for constructing a new CursorBuilder for this Index.
+   */
+  public CursorBuilder newCursor();
+
   /**
    * Information about a Column in an Index
    */
index 5e05e5ada99bce1683badbd5913303b1cbdbab8d..3ea8443ae68cf00d2f5c90b6d8fd7f7f8e954bb6 100644 (file)
@@ -28,7 +28,8 @@ import com.healthmarketscience.jackcess.impl.IndexData;
 import com.healthmarketscience.jackcess.impl.IndexImpl;
 
 /**
- * Builder style class for constructing an Index.
+ * Builder style class for constructing an {@link Index}.  See {@link
+ * TableBuilder} for example usage.
  *
  * @author James Ahlborn
  */
index 7871b65d78b52a055cf6ca62d427cd130489450e..8adff026f71fd553997be0db476acff27d0705d4 100644 (file)
@@ -24,7 +24,9 @@ import java.io.IOException;
 import com.healthmarketscience.jackcess.util.EntryIterableBuilder;
 
 /**
- * Cursor backed by an index with extended traversal options.
+ * Cursor backed by an {@link Index} with extended traversal options.  Table
+ * traversal will be in the order defined by the backing index.  Lookups which
+ * utilize the columns of the index will be fast.
  *
  * @author James Ahlborn
  */
index 2adb7cb1e8e560594a76b0229e338b8956f4e8e1..d8d82afc6c5a790a765ecf19e80ba52094283311 100644 (file)
@@ -22,7 +22,8 @@ package com.healthmarketscience.jackcess;
 import java.util.List;
 
 /**
- * Information about a relationship between two tables in the database.
+ * Information about a relationship between two tables in the {@link
+ * Database}.
  *
  * @author James Ahlborn
  */
index 00fa09f9366303cdf01329f65f6caf6f3c5f623f..ede63e23c0fac5b6fbe66176353821dec9b280e8 100644 (file)
@@ -22,7 +22,8 @@ package com.healthmarketscience.jackcess;
 import java.util.Map;
 
 /**
- * A row of data as column->value pairs.
+ * A row of data as column name->value pairs.  Values are strongly typed, and
+ * column names are case sensitive.
  *
  * @author James Ahlborn
  */
index a9fb4e79487bc12df4c74aba752fcab70a1aa0a6..516be6afb26b7832f642f5a3e515fb4ffe35f60e 100644 (file)
@@ -27,13 +27,16 @@ import java.util.Map;
 import com.healthmarketscience.jackcess.util.ErrorHandler;
 
 /**
- * A single database table.  A Table instance is retrieved from a Database
- * instance.  The Table instance provides access to the table metadata as well
- * as the table data.  There are basic data operations on the Table interface,
- * but for advanced search and data manipulation a {@link Cursor} instance
- * should be used.
- * <p>
- * Is not thread-safe.
+ * A single database table.  A Table instance is retrieved from a {@link
+ * Database} instance.  The Table instance provides access to the table
+ * metadata as well as the table data.  There are basic data operations on the
+ * Table interface (i.e. {@link #iterator} {@link #addRow}, {@link #updateRow}
+ * and {@link #deleteRow}), but for advanced search and data manipulation a
+ * {@link Cursor} instance should be used.  New Tables can be created using a
+ * {@link TableBuilder}.
+ * <p/>
+ * A Table instance is not thread-safe (see {@link Database} for more
+ * thread-safety details).
  *
  * @author James Ahlborn
  * @usage _general_class_
index 9530f515245d90d67618621dda7027c095ce5f02..98c256f698c1a5bda2bb1d3f8ae34b3f95257283 100644 (file)
@@ -38,7 +38,18 @@ import java.util.Set;
 import com.healthmarketscience.jackcess.impl.DatabaseImpl;
 
 /**
- * Builder style class for constructing a Column.
+ * Builder style class for constructing a {@link Table}.
+ * <p/>
+ * Example:
+ * <pre>
+ *   Table table = new TableBuilder("Test")
+ *     .addColumn(new ColumnBuilder("ID", DataType.LONG)
+ *                .setAutoNumber(true))
+ *     .addColumn(new ColumnBuilder("Name", DataType.TEXT))
+ *     .addIndex(new IndexBuilder(IndexBuilder.PRIMARY_KEY_NAME)
+ *               .addColumns("ID").setPrimaryKey())
+ *     .toTable(db);
+ * </pre>
  *
  * @author James Ahlborn
  */
index 9cf9b6821008daed71ceaba68f19d9e0e49a47c8..6a98ef08aba3c15bc984d6c107bc9cb8163ac698 100644 (file)
@@ -77,7 +77,7 @@ public class ComplexColumnSupport
     DatabaseImpl db = column.getDatabase();
     TableImpl complexColumns = db.getSystemComplexColumns();
     IndexCursor cursor = CursorBuilder.createCursor(
-        complexColumns, complexColumns.getPrimaryKeyIndex());
+        complexColumns.getPrimaryKeyIndex());
     if(!cursor.findFirstRowByEntry(complexTypeId)) {
       throw new IOException(
           "Could not find complex column info for complex column with id " +
index da70cbd5e05ecb2ab2b6130f328b0be27f263e6b..5c28d3693838a47d951b65f1348456fdeb2f8b59 100644 (file)
@@ -1929,8 +1929,7 @@ public class DatabaseImpl implements Database
     
     @Override
     protected Cursor getTableNamesCursor() throws IOException {
-      return _systemCatalog.newCursor()
-        .setIndex(_systemCatalogCursor.getIndex())
+      return _systemCatalogCursor.getIndex().newCursor()
         .setStartEntry(_tableParentId, IndexData.MIN_VALUE)
         .setEndEntry(_tableParentId, IndexData.MAX_VALUE)
         .toIndexCursor();
index 1fd560b2ecef906ca378d3de947c17af3596be69..db762943f90868a03a245382d5e96e92351ae23c 100644 (file)
@@ -33,11 +33,12 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+import com.healthmarketscience.jackcess.CursorBuilder;
 import com.healthmarketscience.jackcess.Index;
-import com.healthmarketscience.jackcess.RowId;
 import com.healthmarketscience.jackcess.IndexBuilder;
+import com.healthmarketscience.jackcess.RowId;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 
 /**
  * Access table (logical) index.  Logical indexes are backed for IndexData,
@@ -220,6 +221,10 @@ public class IndexImpl implements Index, Comparable<IndexImpl>
     return getIndexData().getColumns();
   }
 
+  public CursorBuilder newCursor() {
+    return getTable().newCursor().setIndex(this);
+  }
+  
   /**
    * Whether or not the complete index state has been read.
    */
index 02aa051581b823d72682ba51899eec62b9c99fee..8a4b8547df3eabd476f08df3066b01d5e6e3b4d5 100644 (file)
@@ -81,8 +81,7 @@ public class Joiner
     throws IOException
   {
     Index toIndex = fromIndex.getReferencedIndex();
-    IndexCursor toCursor = CursorBuilder.createCursor(
-        toIndex.getTable(), toIndex);
+    IndexCursor toCursor = CursorBuilder.createCursor(toIndex);
     // text lookups are always case-insensitive
     toCursor.setColumnMatcher(CaseInsensitiveColumnMatcher.INSTANCE);
     return new Joiner(fromIndex, toCursor);
index 70d63d8156608c45f3467ac702b06e9ec757c715..32f228e57492b7614257ad5fecb142452aea53ee 100644 (file)
@@ -125,7 +125,7 @@ public class BigIndexTest extends TestCase {
         String prevValue = firstValue;
         int rowCount = 0;
         List<String> firstTwo = new ArrayList<String>();
-        for(Map<String,Object> row : CursorBuilder.createCursor(t, index)) {
+        for(Map<String,Object> row : CursorBuilder.createCursor(index)) {
           String origVal = (String)row.get("col1");
           String val = origVal;
           if(val == null) {
@@ -145,7 +145,7 @@ public class BigIndexTest extends TestCase {
         index.getIndexData().validate();
 
         // delete an entry in the middle
-        Cursor cursor = CursorBuilder.createCursor(t, index);
+        Cursor cursor = CursorBuilder.createCursor(index);
         for(int i = 0; i < (rowCount / 2); ++i) {
           assertTrue(cursor.moveToNextRow());
         }
@@ -162,7 +162,7 @@ public class BigIndexTest extends TestCase {
         index.getIndexData().validate();
 
         List<String> found = new ArrayList<String>();
-        for(Map<String,Object> row : CursorBuilder.createCursor(t, index)) {
+        for(Map<String,Object> row : CursorBuilder.createCursor(index)) {
           found.add((String)row.get("col1"));
         }
 
@@ -193,7 +193,7 @@ public class BigIndexTest extends TestCase {
 
         index.getIndexData().validate();
 
-        cursor = CursorBuilder.createCursor(t, index);
+        cursor = CursorBuilder.createCursor(index);
         while(cursor.moveToNextRow()) {
           cursor.deleteCurrentRow();
         }
index 26d22e7cbd58b98352d4645a948ae1addd879b2d..affd28cf8d52877bf2379e561ee5fc5fc71fbc72 100644 (file)
@@ -67,13 +67,13 @@ public class CursorBuilderTest extends TestCase {
       Cursor found = new CursorBuilder(table).toCursor();
       assertCursor(expected, found);
 
-      expected = CursorBuilder.createCursor(table, idx);
+      expected = CursorBuilder.createCursor(idx);
       found = new CursorBuilder(table)
         .setIndex(idx)
         .toCursor();
       assertCursor(expected, found);
 
-      expected = CursorBuilder.createCursor(table, idx);
+      expected = CursorBuilder.createCursor(idx);
       found = new CursorBuilder(table)
         .setIndexByName("id")
         .toCursor();
@@ -87,7 +87,7 @@ public class CursorBuilderTest extends TestCase {
         // success
       }
 
-      expected = CursorBuilder.createCursor(table, idx);
+      expected = CursorBuilder.createCursor(idx);
       found = new CursorBuilder(table)
         .setIndexByColumns(table.getColumn("id"))
         .toCursor();
@@ -132,7 +132,7 @@ public class CursorBuilderTest extends TestCase {
         .toCursor();
       assertCursor(expected, found);
 
-      expected = CursorBuilder.createCursor(table, idx);
+      expected = CursorBuilder.createCursor(idx);
       expected.moveNextRows(2);
       sp = expected.getSavepoint();
       found = new CursorBuilder(table)
@@ -142,7 +142,7 @@ public class CursorBuilderTest extends TestCase {
         .toCursor();
       assertCursor(expected, found);
 
-      expected = CursorBuilder.createCursor(table, idx,
+      expected = CursorBuilder.createCursor(idx,
                                           idx.constructIndexRowFromEntry(3),
                                           null);
       found = new CursorBuilder(table)
@@ -151,7 +151,7 @@ public class CursorBuilderTest extends TestCase {
         .toCursor();
       assertCursor(expected, found);
 
-      expected = CursorBuilder.createCursor(table, idx,
+      expected = CursorBuilder.createCursor(idx,
                                           idx.constructIndexRowFromEntry(3),
                                           false,
                                           idx.constructIndexRowFromEntry(7),
index 59de129dda145c2a33c2257af95a9530cffcb584..d10d18b949514405f4250a86d230b0e85eeeb834 100644 (file)
@@ -397,19 +397,19 @@ public class CursorTest extends TestCase {
                                 createExpectedRow("id", 5)));
     if(index != null) {
       assertEquals("data" + 5,
-                   CursorBuilder.findValue(table, index,
+                   CursorBuilder.findValue(index,
                                     table.getColumn("value"),
                                     table.getColumn("id"), 5));
       assertEquals(createExpectedRow("id", 5,
                                      "value", "data" + 5),
-                   CursorBuilder.findRow(table, index,
+                   CursorBuilder.findRow(index,
                                   createExpectedRow("id", 5)));
 
-      assertNull(CursorBuilder.findValue(table, index,
+      assertNull(CursorBuilder.findValue(index,
                                   table.getColumn("value"),
                                   table.getColumn("id"),
                                   -17));
-      assertNull(CursorBuilder.findRow(table, index,
+      assertNull(CursorBuilder.findRow(index,
                                 createExpectedRow("id", 13)));
     }
   }
@@ -586,7 +586,7 @@ public class CursorTest extends TestCase {
 
       assertTable(createUnorderedTestTableData(), table);
 
-      Cursor cursor = CursorBuilder.createCursor(table, idx);
+      Cursor cursor = CursorBuilder.createCursor(idx);
       doTestSimple(cursor, null);
 
       db.close();
@@ -599,7 +599,7 @@ public class CursorTest extends TestCase {
 
       Table table = db.getTable("test");
       Index idx = table.getIndexes().get(0);
-      Cursor cursor = CursorBuilder.createCursor(table, idx);
+      Cursor cursor = CursorBuilder.createCursor(idx);
       doTestMove(cursor, null);
 
       db.close();
@@ -612,7 +612,7 @@ public class CursorTest extends TestCase {
 
       Table table = db.getTable("test");
       Index idx = table.getIndexes().get(0);
-      Cursor cursor = CursorBuilder.createCursor(table, idx);
+      Cursor cursor = CursorBuilder.createCursor(idx);
       doTestReverse(cursor, null);
 
       db.close();
@@ -625,7 +625,7 @@ public class CursorTest extends TestCase {
 
       Table table = db.getTable("test");
       Index idx = table.getIndexes().get(0);
-      Cursor cursor = CursorBuilder.createCursor(table, idx);
+      Cursor cursor = CursorBuilder.createCursor(idx);
       doTestSearch(table, cursor, idx, 42, -13);
 
       db.close();
@@ -639,8 +639,8 @@ public class CursorTest extends TestCase {
       Table table = db.getTable("test");
       Index idx = table.getIndexes().get(0);
 
-      Cursor cursor1 = CursorBuilder.createCursor(table, idx);
-      Cursor cursor2 = CursorBuilder.createCursor(table, idx);
+      Cursor cursor1 = CursorBuilder.createCursor(idx);
+      Cursor cursor2 = CursorBuilder.createCursor(idx);
       doTestLiveAddition(table, cursor1, cursor2, 11);
 
       db.close();
@@ -654,10 +654,10 @@ public class CursorTest extends TestCase {
       Table table = db.getTable("test");
       Index idx = table.getIndexes().get(0);
 
-      Cursor cursor1 = CursorBuilder.createCursor(table, idx);
-      Cursor cursor2 = CursorBuilder.createCursor(table, idx);
-      Cursor cursor3 = CursorBuilder.createCursor(table, idx);
-      Cursor cursor4 = CursorBuilder.createCursor(table, idx);
+      Cursor cursor1 = CursorBuilder.createCursor(idx);
+      Cursor cursor2 = CursorBuilder.createCursor(idx);
+      Cursor cursor3 = CursorBuilder.createCursor(idx);
+      Cursor cursor4 = CursorBuilder.createCursor(idx);
       doTestLiveDeletion(cursor1, cursor2, cursor3, cursor4, 1);
 
       db.close();
@@ -798,7 +798,7 @@ public class CursorTest extends TestCase {
 
       Table table = db.getTable("test");
       Index idx = table.getIndexes().get(0);
-      Cursor cursor = CursorBuilder.createCursor(table, idx);
+      Cursor cursor = CursorBuilder.createCursor(idx);
 
       doTestFindAll(table, cursor, idx);
 
@@ -912,7 +912,7 @@ public class CursorTest extends TestCase {
       Index idx = table.getIndexes().get(0);
 
       Cursor tCursor = CursorBuilder.createCursor(table);
-      Cursor iCursor = CursorBuilder.createCursor(table, idx);
+      Cursor iCursor = CursorBuilder.createCursor(idx);
 
       Cursor.Savepoint tSave = tCursor.getSavepoint();
       Cursor.Savepoint iSave = iCursor.getSavepoint();
@@ -935,7 +935,7 @@ public class CursorTest extends TestCase {
       }
 
       Cursor tCursor2 = CursorBuilder.createCursor(table);
-      Cursor iCursor2 = CursorBuilder.createCursor(table, idx);
+      Cursor iCursor2 = CursorBuilder.createCursor(idx);
 
       tCursor2.restoreSavepoint(tSave);
       iCursor2.restoreSavepoint(iSave);
@@ -1072,7 +1072,7 @@ public class CursorTest extends TestCase {
       Database db = open(testDB);
       Table t1 = db.getTable("Table1");
       Index idx = t1.getIndex(IndexBuilder.PRIMARY_KEY_NAME);
-      IndexCursor cursor = CursorBuilder.createCursor(t1, idx);
+      IndexCursor cursor = CursorBuilder.createCursor(idx);
 
       assertFalse(cursor.findFirstRowByEntry(-1));
       cursor.findClosestRowByEntry(-1);
@@ -1099,7 +1099,7 @@ public class CursorTest extends TestCase {
       Database db = openCopy(testDB);
       Table t1 = db.getTable("Table1");
       Index idx = t1.getIndex("Table2Table1");
-      IndexCursor cursor = CursorBuilder.createCursor(t1, idx);
+      IndexCursor cursor = CursorBuilder.createCursor(idx);
 
       List<String> expectedData = new ArrayList<String>();
       for(Map<String,Object> row : cursor.newEntryIterable(1)
index 8c6284a19d961ad14c0165195f02e46b25bca7a2..5d1548c214846d581ae052c08fe1119eae84f518 100644 (file)
@@ -260,8 +260,8 @@ public class IndexTest extends TestCase {
     assertEquals(origI.getIndexData().getEntryCount(), 
                  tempI.getIndexData().getEntryCount());
 
-    Cursor origC = CursorBuilder.createCursor(orig, origI);
-    Cursor tempC = CursorBuilder.createCursor(temp, tempI);
+    Cursor origC = origI.newCursor().toCursor();
+    Cursor tempC = tempI.newCursor().toCursor();
 
     while(true) {
       boolean origHasNext = origC.moveToNextRow();
index 56f9096f479c9dbeb6b7fef3d4bb7472165a699d..62565ac7e3601c20c7e596502d1daa3224e76050 100644 (file)
@@ -92,7 +92,7 @@ public class IndexCodesTest extends TestCase {
 //         index.initialize();
 //         System.out.println("Ind " + index);
 
-    Cursor cursor = CursorBuilder.createCursor(t, index);
+    Cursor cursor = CursorBuilder.createCursor(index);
     while(cursor.moveToNextRow()) {
 
       Map<String,Object> row = cursor.getCurrentRow();
@@ -118,7 +118,7 @@ public class IndexCodesTest extends TestCase {
     throws Exception
   {
     Object[] idxRow = ((IndexImpl)index).constructIndexRow(expectedRow);
-    Cursor cursor = CursorBuilder.createCursor(t, index, idxRow, idxRow);
+    Cursor cursor = CursorBuilder.createCursor(index, idxRow, idxRow);
 
     Cursor.Position startPos = cursor.getSavepoint().getCurrentPosition();
     
@@ -268,7 +268,7 @@ public class IndexCodesTest extends TestCase {
     
     System.out.println("Ind " + ind);
 
-    Cursor cursor = CursorBuilder.createCursor(t, ind);
+    Cursor cursor = CursorBuilder.createCursor(ind);
     while(cursor.moveToNextRow()) {
       System.out.println("=======");
       String entryStr = 
@@ -320,7 +320,7 @@ public class IndexCodesTest extends TestCase {
     ((IndexImpl)index).initialize();
     System.out.println("Ind " + index);
 
-    Cursor cursor = CursorBuilder.createCursor(t, index);
+    Cursor cursor = CursorBuilder.createCursor(index);
     while(cursor.moveToNextRow()) {
       System.out.println("=======");
       System.out.println("Savepoint: " + cursor.getSavepoint());
@@ -355,7 +355,7 @@ public class IndexCodesTest extends TestCase {
     Map<Character,String[]> inat2CrazyCodes = new TreeMap<Character,String[]>();
     
     
-    Cursor cursor = CursorBuilder.createCursor(t, index);
+    Cursor cursor = CursorBuilder.createCursor(index);
     while(cursor.moveToNextRow()) {
 //       System.out.println("=======");
 //       System.out.println("Savepoint: " + cursor.getSavepoint());
@@ -534,7 +534,7 @@ public class IndexCodesTest extends TestCase {
     Map<Character,String[]> inat2CrazyCodes = new TreeMap<Character,String[]>();
     
     
-    Cursor cursor = CursorBuilder.createCursor(t, index);
+    Cursor cursor = CursorBuilder.createCursor(index);
     while(cursor.moveToNextRow()) {
 //       System.out.println("=======");
 //       System.out.println("Savepoint: " + cursor.getSavepoint());