]> source.dussan.org Git - jackcess.git/commitdiff
add some convenience methods for working with primary keys
authorJames Ahlborn <jtahlborn@yahoo.com>
Mon, 24 Mar 2014 02:13:09 +0000 (02:13 +0000)
committerJames Ahlborn <jtahlborn@yahoo.com>
Mon, 24 Mar 2014 02:13:09 +0000 (02:13 +0000)
git-svn-id: https://svn.code.sf.net/p/jackcess/code/jackcess/trunk@850 f203690c-595d-4dc9-a70b-905162fa7fd2

src/main/java/com/healthmarketscience/jackcess/CursorBuilder.java
src/main/java/com/healthmarketscience/jackcess/IndexCursor.java
src/main/java/com/healthmarketscience/jackcess/impl/IndexCursorImpl.java
src/test/java/com/healthmarketscience/jackcess/IndexTest.java

index 1c2b312dbc4075bf0623f1fce5b5ad6300bf1bbe..f9d5c71b5f2a1b4b7cf89b2e204819af938a1d21 100644 (file)
@@ -346,6 +346,16 @@ public class CursorBuilder {
   {
     return index.getTable().newCursor().setIndex(index).toIndexCursor();
   }
+
+  /**
+   * Creates an indexed cursor for the primary key cursor of the given table.
+   * @param table the table over which this cursor will traverse
+   */
+  public static IndexCursor createPrimaryKeyCursor(Table table)
+    throws IOException
+  {
+    return createCursor(table.getPrimaryKeyIndex());
+  }
   
   /**
    * Creates an indexed cursor for the given table, narrowed to the given
@@ -426,6 +436,36 @@ public class CursorBuilder {
     return null;
   }
   
+  /**
+   * Convenience method for finding a specific row (as defined by the cursor)
+   * where the index entries match the given values.  See {@link
+   * IndexCursor#findRowByEntry(Object...)} for details on the entryValues.
+   * 
+   * @param index the index to search
+   * @param entryValues the column values for the index's columns.
+   * @return the matching row or {@code null} if a match could not be found.
+   */
+  public static Row findRowByEntry(Index index, Object... entryValues)
+    throws IOException
+  {
+    return createCursor(index).findRowByEntry(entryValues);
+  }
+  
+  /**
+   * Convenience method for finding a specific row by the primary key of the
+   * table.  See {@link IndexCursor#findRowByEntry(Object...)} for details on
+   * the entryValues.
+   * 
+   * @param table the table to search
+   * @param entryValues the column values for the table's primary key columns.
+   * @return the matching row or {@code null} if a match could not be found.
+   */
+  public static Row findRowByPrimaryKey(Table table, Object... entryValues)
+    throws IOException
+  {
+    return findRowByEntry(table.getPrimaryKeyIndex(), entryValues);
+  }
+  
   /**
    * Convenience method for finding a specific row in a table which matches a
    * given row "pattern".  See {@link Cursor#findFirstRow(Column,Object)} for
index 108ecdfedb6dc6a60e53c788a7f6f489d9858127..5fdcab1b2e6456bae568cd28ce239e27d645dd83 100644 (file)
@@ -36,6 +36,17 @@ public interface IndexCursor extends Cursor
 
   public Index getIndex();
 
+  /**
+   * Finds the first row (as defined by the cursor) where the index entries
+   * match the given values.  If a match is not found (or an exception is
+   * thrown), the cursor is restored to its previous state.
+   *
+   * @param entryValues the column values for the index's columns.
+   * @return the matching row or {@code null} if a match could not be found.
+   */
+  public Row findRowByEntry(Object... entryValues) 
+    throws IOException;
+  
   /**
    * Moves to the first row (as defined by the cursor) where the index entries
    * match the given values.  If a match is not found (or an exception is
index 365cd2ed6f2ce31351231f7995421e3c80fed311..c2f0280b195a4386e396bef1a1e2ae3d2388448e 100644 (file)
@@ -125,6 +125,15 @@ public class IndexCursorImpl extends CursorImpl implements IndexCursor
     return _index;
   }
 
+  public Row findRowByEntry(Object... entryValues) 
+    throws IOException
+  {
+    if(findFirstRowByEntry(entryValues)) {
+      return getCurrentRow();
+    }
+    return null;
+  }
+  
   public boolean findFirstRowByEntry(Object... entryValues) 
     throws IOException 
   {
index 2b325a6fd1a26c3bb047dea6b94d61a54628485d..aad03763dbff35a49621511b423058659aa750bf 100644 (file)
@@ -538,7 +538,7 @@ public class IndexTest extends TestCase {
 
       assertTable(expectedRows, t);
 
-      IndexCursor pkCursor = CursorBuilder.createCursor(t.getPrimaryKeyIndex());
+      IndexCursor pkCursor = CursorBuilder.createPrimaryKeyCursor(t);
       assertCursor(expectedRows, pkCursor);
 
       assertCursor(expectedRows, 
@@ -633,7 +633,7 @@ public class IndexTest extends TestCase {
 
       assertTable(expectedRows, t);
 
-      IndexCursor pkCursor = CursorBuilder.createCursor(t.getPrimaryKeyIndex());
+      IndexCursor pkCursor = CursorBuilder.createPrimaryKeyCursor(t);
       assertCursor(expectedRows, pkCursor);
 
       assertCursor(expectedRows,