]> source.dussan.org Git - jackcess.git/commitdiff
more javadoc cleanup; minor refactor of Joiner iteration methods
authorJames Ahlborn <jtahlborn@yahoo.com>
Sun, 11 Aug 2013 03:25:16 +0000 (03:25 +0000)
committerJames Ahlborn <jtahlborn@yahoo.com>
Sun, 11 Aug 2013 03:25:16 +0000 (03:25 +0000)
git-svn-id: https://svn.code.sf.net/p/jackcess/code/jackcess/trunk@770 f203690c-595d-4dc9-a70b-905162fa7fd2

35 files changed:
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/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/PropertyMap.java
src/java/com/healthmarketscience/jackcess/Relationship.java
src/java/com/healthmarketscience/jackcess/Row.java
src/java/com/healthmarketscience/jackcess/RowId.java
src/java/com/healthmarketscience/jackcess/Table.java
src/java/com/healthmarketscience/jackcess/TableBuilder.java
src/java/com/healthmarketscience/jackcess/impl/FKEnforcer.java
src/java/com/healthmarketscience/jackcess/util/CaseInsensitiveColumnMatcher.java
src/java/com/healthmarketscience/jackcess/util/ColumnMatcher.java
src/java/com/healthmarketscience/jackcess/util/DebugErrorHandler.java
src/java/com/healthmarketscience/jackcess/util/EntryIterableBuilder.java
src/java/com/healthmarketscience/jackcess/util/ErrorHandler.java
src/java/com/healthmarketscience/jackcess/util/ExportFilter.java
src/java/com/healthmarketscience/jackcess/util/ExportUtil.java
src/java/com/healthmarketscience/jackcess/util/ImportFilter.java
src/java/com/healthmarketscience/jackcess/util/ImportUtil.java
src/java/com/healthmarketscience/jackcess/util/IterableBuilder.java
src/java/com/healthmarketscience/jackcess/util/Joiner.java
src/java/com/healthmarketscience/jackcess/util/LinkResolver.java
src/java/com/healthmarketscience/jackcess/util/ReplacementErrorHandler.java
src/java/com/healthmarketscience/jackcess/util/RowFilter.java
src/java/com/healthmarketscience/jackcess/util/SimpleColumnMatcher.java
src/java/com/healthmarketscience/jackcess/util/SimpleExportFilter.java
src/java/com/healthmarketscience/jackcess/util/SimpleImportFilter.java
test/src/java/com/healthmarketscience/jackcess/IndexTest.java
test/src/java/com/healthmarketscience/jackcess/util/JoinerTest.java

index 86e8ab0be0c2d53241852b3b8caffed97d29510f..ee4c770d5d614951e4c069ee9ff743195665fd0a 100644 (file)
@@ -34,6 +34,7 @@ import com.healthmarketscience.jackcess.complex.ComplexValue;
  * thread-safety details).
  *
  * @author James Ahlborn
+ * @usage _general_class_
  */
 public interface Column 
 {
index 0154ce187a0e0af946d23d07eb8ea96fa60dfd76..f6b3cdc9774be8a5f5ef20dc5e453927d8ac36e2 100644 (file)
@@ -40,6 +40,7 @@ import com.healthmarketscience.jackcess.impl.DatabaseImpl;
  * TableBuilder} for example usage.
  *
  * @author James Ahlborn
+ * @usage _general_class_
  */
 public class ColumnBuilder {
 
index f84f8dd4ac780f2e90dd82caa2e04ffb9c5d6bf0..b9c47f17e49ce3e8cd89b0bdca7a0a209964e677 100644 (file)
@@ -48,6 +48,7 @@ import com.healthmarketscience.jackcess.util.IterableBuilder;
  * thread-safety details).
  *
  * @author James Ahlborn
+ * @usage _general_class_
  */
 public interface Cursor extends Iterable<Row>
 {
index 26f3f92b6169b76f824077ec2b5e2e01603f1ec8..1c2b312dbc4075bf0623f1fce5b5ad6300bf1bbe 100644 (file)
@@ -60,6 +60,7 @@ import com.healthmarketscience.jackcess.util.ColumnMatcher;
  * </pre>
  *
  * @author James Ahlborn
+ * @usage _general_class_
  */
 public class CursorBuilder {
   /** the table which the cursor will traverse */
index 75a5a4ee66906099701ec501eae997d97f27b51a..a1ccbd2492c23f217259332ed392c114f047ceaa 100644 (file)
@@ -42,6 +42,7 @@ import com.healthmarketscience.jackcess.impl.JetFormat;
  * Supported access data types.
  * 
  * @author Tim McCune
+ * @usage _general_class_
  */
 public enum DataType {
 
index f0462051e5694dae10eab98d7cd807575913860d..7e40c10920c4464a3bc142ac37f9cbe21b5f1b11 100644 (file)
@@ -45,6 +45,7 @@ import com.healthmarketscience.jackcess.util.MemFileChannel;
  * </pre>
  *
  * @author James Ahlborn
+ * @usage _general_class_
  */
 public class DatabaseBuilder 
 {
index 9afc6eb98455c86ba496d6425a5b8b5cf62b25f0..9409cec4f40a52aa89430032458274b766ead1a9 100644 (file)
@@ -23,8 +23,13 @@ import java.io.IOException;
 import java.util.List;
 
 /**
+ * Access database index definition.  A {@link Table} has a list of Index
+ * instances.  Indexes can enable fast searches and ordered traversal on a
+ * Table (for the indexed columns).  These features can be utilized via an
+ * {@link IndexCursor}.
  *
  * @author James Ahlborn
+ * @usage _general_class_
  */
 public interface Index 
 {
index 3ea8443ae68cf00d2f5c90b6d8fd7f7f8e954bb6..26c2c85c9d0ce34ae1b38f56f0f841cb30a899ec 100644 (file)
@@ -32,6 +32,7 @@ import com.healthmarketscience.jackcess.impl.IndexImpl;
  * TableBuilder} for example usage.
  *
  * @author James Ahlborn
+ * @usage _general_class_
  */
 public class IndexBuilder 
 {
index 8adff026f71fd553997be0db476acff27d0705d4..108ecdfedb6dc6a60e53c788a7f6f489d9858127 100644 (file)
@@ -29,6 +29,7 @@ import com.healthmarketscience.jackcess.util.EntryIterableBuilder;
  * utilize the columns of the index will be fast.
  *
  * @author James Ahlborn
+ * @usage _general_class_
  */
 public interface IndexCursor extends Cursor
 {
index 5faa3d80490fa98ad6a1fe7968355c1970f28b00..6e2634c4b7c4fbc226e8ba4c331819ae2302a955 100644 (file)
@@ -23,6 +23,7 @@ package com.healthmarketscience.jackcess;
  * Map of properties for a database object.
  *
  * @author James Ahlborn
+ * @usage _general_class_
  */
 public interface PropertyMap extends Iterable<PropertyMap.Property>
 {
index d8d82afc6c5a790a765ecf19e80ba52094283311..8ce015ed09e2284613bcc51ec425d079a38c6c27 100644 (file)
@@ -26,6 +26,7 @@ import java.util.List;
  * Database}.
  *
  * @author James Ahlborn
+ * @usage _general_class_
  */
 public interface Relationship 
 {
index ede63e23c0fac5b6fbe66176353821dec9b280e8..2385e9085470b30e5c5b043f81ce9343dea4d7fe 100644 (file)
@@ -26,6 +26,7 @@ import java.util.Map;
  * column names are case sensitive.
  *
  * @author James Ahlborn
+ * @usage _general_class_
  */
 public interface Row extends Map<String,Object>
 {
index c8b5ab8df08973dc7a54047d8b19da48b5b08b82..8eb4807d0fc01242cca9508aa7dd90df8b721b45 100644 (file)
@@ -26,6 +26,7 @@ package com.healthmarketscience.jackcess;
  * {@code toString()} methods.
  *
  * @author James Ahlborn
+ * @usage _intermediate_class_
  */
 public interface RowId extends Comparable<RowId>
 {
index 516be6afb26b7832f642f5a3e515fb4ffe35f60e..c55469402415b30c9f87c29d04cd601ffa83b484 100644 (file)
@@ -33,7 +33,9 @@ import com.healthmarketscience.jackcess.util.ErrorHandler;
  * 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}.
+ * {@link TableBuilder}.  The {@link com.healthmarketscience.jackcess.util.Joiner} utility can be used to traverse
+ * table relationships (e.g. find rows in another table based on a foreign-key
+ * relationship).
  * <p/>
  * A Table instance is not thread-safe (see {@link Database} for more
  * thread-safety details).
index 98c256f698c1a5bda2bb1d3f8ae34b3f95257283..9f63796431cbcac80157d3720bcecec0fcb035cf 100644 (file)
@@ -52,6 +52,7 @@ import com.healthmarketscience.jackcess.impl.DatabaseImpl;
  * </pre>
  *
  * @author James Ahlborn
+ * @usage _general_class_
  */
 public class TableBuilder {
 
index e0efe15e2dd40a1c5ccb79c204734b86277dfd60..2cd599080b5627a0d4ca70a04ed99dfb770efe46 100644 (file)
@@ -249,8 +249,9 @@ final class FKEnforcer
     List<? extends Index.Column> toCols = joiner.getToIndex().getColumns();
     Object[] toRow = new Object[joiner.getToTable().getColumnCount()];
 
-    for(Iterator<Row> iter = joiner.findRows(
-            oldFromRow, Collections.<String>emptySet()); iter.hasNext(); ) {
+    for(Iterator<Row> iter = joiner.findRows(oldFromRow)
+          .setColumnNames(Collections.<String>emptySet())
+          .iterator(); iter.hasNext(); ) {
       iter.next();
 
       // create update row for "to" table
index 63e460894b1e07bc1bf06f29ceeb969eff45f727..ee3879afbba528dc595befb9f8e3e60883fcf1c7 100644 (file)
@@ -33,6 +33,7 @@ import com.healthmarketscience.jackcess.impl.ColumnImpl;
  * all other columns using simple equality.
  * 
  * @author James Ahlborn
+ * @usage _general_class_
  */
 public class CaseInsensitiveColumnMatcher implements ColumnMatcher {
 
index 664dbd1af99fcd3ce13cf53952ae9d089f9fb007..7af969748a185f1da941392338c31a15cb5fcc73 100644 (file)
@@ -26,6 +26,7 @@ import com.healthmarketscience.jackcess.Table;
  * Interface for handling comparisons between column values.
  *
  * @author James Ahlborn
+ * @usage _intermediate_class_
  */
 public interface ColumnMatcher 
 {
index 36b3941a1f16d946492cc0c8f174808bbf7ea38b..73b8c0fa327d4c943b5e06c1df2b34129fdbec01 100644 (file)
@@ -28,11 +28,9 @@ King of Prussia, PA 19406
 package com.healthmarketscience.jackcess.util;
 
 import java.io.IOException;
-import javax.xml.stream.Location;
 
 import com.healthmarketscience.jackcess.Column;
 import com.healthmarketscience.jackcess.impl.ByteUtil;
-import com.healthmarketscience.jackcess.util.ReplacementErrorHandler;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
@@ -43,6 +41,7 @@ import org.apache.commons.logging.LogFactory;
  * value, see {@link ReplacementErrorHandler}.
  * 
  * @author James Ahlborn
+ * @usage _general_class_
  */
 public class DebugErrorHandler extends ReplacementErrorHandler
 {
index 54b88a82c6d0fd0df79bc0a8fe0fce01dd8019ef..765b650e2488b161c91a473de2452a1c9f19c084 100644 (file)
@@ -29,10 +29,11 @@ import com.healthmarketscience.jackcess.Row;
 import com.healthmarketscience.jackcess.impl.IndexCursorImpl;
 
 /**
- * Builder style class for constructing an IndexCursor entry
+ * Builder style class for constructing an {@link IndexCursor} entry
  * Iterable/Iterator.
  *
  * @author James Ahlborn
+ * @usage _general_class_
  */
 public class EntryIterableBuilder implements Iterable<Row>
 {
index 368b2477033981e528c3935726d163c3307e9df7..1a82a3f5e58bd5172e557e4a58e4af015bcfd2f9 100644 (file)
@@ -40,6 +40,7 @@ import com.healthmarketscience.jackcess.Table;
  * encountered.
  * 
  * @author James Ahlborn
+ * @usage _intermediate_class_
  */
 public interface ErrorHandler 
 {
index b9b8607f07c19ac50bfceffa8802ae734b040ef2..5c0c57f66e830e75581adfec49442c5bbe35d595 100644 (file)
@@ -33,9 +33,10 @@ import com.healthmarketscience.jackcess.Column;
 
 /**
  * Interface which allows customization of the behavior of the
- * <code>Database</code> export methods.
+ * {@link ExportUtil} export methods.
  * 
  * @author James Ahlborn
+ * @usage _general_class_
  */
 public interface ExportFilter {
 
index 059347d3c241bb955b75febb41337536e6fe0092..125c8df7a9e8874acac14ceb9b3e241205d831ad 100644 (file)
@@ -48,8 +48,13 @@ import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
 /**
+ * Utility class for exporting tables from an Access database to other
+ * formats.  See the {@link Builder} for convenient configuration of the
+ * export functionality.  Note that most scenarios for customizing output data
+ * can be handled by implementing a custom {@link ExportFilter}.
  * 
  * @author Frank Gerbig
+ * @usage _general_class_
  */
 public class ExportUtil {
 
index a7131b7ac66ae62ccea10d7be25f32e793ec08ef..3f684d6c3df04ff78a8ac1fbb381fffee97ebabe 100644 (file)
@@ -35,9 +35,10 @@ import com.healthmarketscience.jackcess.ColumnBuilder;
 
 /**
  * Interface which allows customization of the behavior of the
- * <code>Database</code> import/copy methods.
+ * {@link ImportUtil} import methods.
  *
  * @author James Ahlborn
+ * @usage _general_class_
  */
 public interface ImportFilter {
 
index 65ee70088a5eb58b8f1ebffb1da63f66dcef49c2..c34e7ff055d636eb0b6ddd7d28c41bbfaf1b6d57 100644 (file)
@@ -50,8 +50,13 @@ import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
 /**
+ * Utility class for importing tables to an Access database from other
+ * sources.  See the {@link Builder} for convenient configuration of the
+ * import functionality.  Note that most scenarios for customizing input data
+ * can be handled by implementing a custom {@link ImportFilter}.
  *
  * @author James Ahlborn
+ * @usage _general_class_
  */
 public class ImportUtil 
 {
index 089d8daa4b27f6a97a2565073ee75d4db12c4fe6..d4a2074391dec312abb50401cf923fd89fa01179 100644 (file)
@@ -32,9 +32,10 @@ import com.healthmarketscience.jackcess.Row;
 import com.healthmarketscience.jackcess.impl.CursorImpl;
 
 /**
- * Builder style class for constructing a Cursor Iterable/Iterator.
+ * Builder style class for constructing a {@link Cursor} Iterable/Iterator.
  *
  * @author James Ahlborn
+ * @usage _general_class_
  */
 public class IterableBuilder implements Iterable<Row>
 {
index 8a4b8547df3eabd476f08df3066b01d5e6e3b4d5..65f644164aae18e3aab014ceb929d1caceef7aa9 100644 (file)
@@ -30,7 +30,6 @@ import com.healthmarketscience.jackcess.CursorBuilder;
 import com.healthmarketscience.jackcess.Index;
 import com.healthmarketscience.jackcess.IndexCursor;
 import com.healthmarketscience.jackcess.Row;
-import com.healthmarketscience.jackcess.RuntimeIOException;
 import com.healthmarketscience.jackcess.Table;
 import com.healthmarketscience.jackcess.impl.IndexImpl;
 
@@ -39,6 +38,7 @@ import com.healthmarketscience.jackcess.impl.IndexImpl;
  * relationships.
  *
  * @author James Ahlborn
+ * @usage _general_class_
  */
 public class Joiner 
 {
@@ -163,8 +163,7 @@ public class Joiner
    *                columns for this join relationship)
    * @param columnNames desired columns in the from table row
    */
-  public Row findFirstRow(Map<String,?> fromRow,
-                                         Collection<String> columnNames)
+  public Row findFirstRow(Map<String,?> fromRow, Collection<String> columnNames)
     throws IOException
   {
     return (hasRows(fromRow) ? _toCursor.getCurrentRow(columnNames) : null);
@@ -177,76 +176,23 @@ public class Joiner
    * @param fromRow row from the "from" table (which must include the relevant
    *                columns for this join relationship)
    */
-  public Iterator<Row> findRows(Map<String,?> fromRow)
-  {
-    return findRows(fromRow, null);
-  }
-  
-  /**
-   * Returns an Iterator with the selected columns over all the rows in the
-   * "to" table based on the given columns in the "from" table.
-   *
-   * @param fromRow row from the "from" table (which must include the relevant
-   *                columns for this join relationship)
-   * @param columnNames desired columns in the from table row
-   */
-  public Iterator<Row> findRows(Map<String,?> fromRow,
-                                Collection<String> columnNames)
+  public EntryIterableBuilder findRows(Map<String,?> fromRow)
   {
     toEntryValues(fromRow);
-    return _toCursor.newEntryIterable(_entryValues)
-      .setColumnNames(columnNames).iterator();
+    return _toCursor.newEntryIterable(_entryValues);
   }
-
+  
   /**
    * Returns an Iterator with the selected columns over all the rows in the
    * "to" table based on the given columns in the "from" table.
    *
    * @param fromRow row from the "from" table (which must include the relevant
    *                columns for this join relationship)
-   * @param columnNames desired columns in the from table row
-   * @usage _intermediate_method_
    */
-  public Iterator<Row> findRows(Object[] fromRow,
-                                Collection<String> columnNames)
+  public EntryIterableBuilder findRows(Object[] fromRow)
   {
     toEntryValues(fromRow);
-    return _toCursor.newEntryIterable(_entryValues)
-      .setColumnNames(columnNames).iterator();
-  }
-
-  /**
-   * Returns an Iterable whose iterator() method returns the result of a call
-   * to {@link #findRows(Map)}
-   * 
-   * @param fromRow row from the "from" table (which must include the relevant
-   *                columns for this join relationship)
-   * @throws RuntimeIOException if an IOException is thrown by one of the
-   *         operations, the actual exception will be contained within
-   */
-  public Iterable<Row> findRowsIterable(Map<String,?> fromRow)
-  {
-    return findRowsIterable(fromRow, null);
-  }
-  
-  /**
-   * Returns an Iterable whose iterator() method returns the result of a call
-   * to {@link #findRows(Map,Collection)}
-   * 
-   * @param fromRow row from the "from" table (which must include the relevant
-   *                columns for this join relationship)
-   * @param columnNames desired columns in the from table row
-   * @throws RuntimeIOException if an IOException is thrown by one of the
-   *         operations, the actual exception will be contained within
-   */
-  public Iterable<Row> findRowsIterable(
-      final Map<String,?> fromRow, final Collection<String> columnNames)
-  {
-    return new Iterable<Row>() {
-      public Iterator<Row> iterator() {
-        return findRows(fromRow, columnNames);
-      }
-    };
+    return _toCursor.newEntryIterable(_entryValues);
   }
 
   /**
@@ -259,7 +205,9 @@ public class Joiner
    *         otherwise
    */
   public boolean deleteRows(Map<String,?> fromRow) throws IOException {
-    return deleteRowsImpl(findRows(fromRow, Collections.<String>emptySet()));
+    return deleteRowsImpl(findRows(fromRow)
+                          .setColumnNames(Collections.<String>emptySet())
+                          .iterator());
   }
 
   /**
@@ -273,7 +221,9 @@ public class Joiner
    * @usage _intermediate_method_
    */
   public boolean deleteRows(Object[] fromRow) throws IOException {
-    return deleteRowsImpl(findRows(fromRow, Collections.<String>emptySet()));
+    return deleteRowsImpl(findRows(fromRow)
+                          .setColumnNames(Collections.<String>emptySet())
+                          .iterator());
   }
 
   /**
index 512069e5662933572d735689beac320d847cb592..ef0d0542c55336928e407d639bec87b8da603473 100644 (file)
@@ -29,6 +29,7 @@ import com.healthmarketscience.jackcess.DatabaseBuilder;
  * Resolver for linked databases.
  *
  * @author James Ahlborn
+ * @usage _intermediate_class_
  */
 public interface LinkResolver 
 {
index 065844736b639663325d9ac8fb13a897e0326506..266f6c91a470434df09bd5bf3e4292b5488b2689 100644 (file)
@@ -28,7 +28,6 @@ King of Prussia, PA 19406
 package com.healthmarketscience.jackcess.util;
 
 import java.io.IOException;
-import javax.xml.stream.Location;
 import com.healthmarketscience.jackcess.Column;
 
 /**
@@ -36,6 +35,7 @@ import com.healthmarketscience.jackcess.Column;
  * configured object.
  * 
  * @author James Ahlborn
+ * @usage _intermediate_class_
  */
 public class ReplacementErrorHandler implements ErrorHandler
 {
index fd13c132d41dece5d68fe4d5c1273002daa798ad..29b5f8dd6b0959d18e78d1baf2445f6a7e429ce0 100644 (file)
@@ -41,6 +41,7 @@ import com.healthmarketscience.jackcess.Row;
  * table which returns only rows matching some criteria.
  * 
  * @author Patricia Donaldson, Xerox Corporation
+ * @usage _general_class_
  */
 public abstract class RowFilter
 {
index 2f069e0d2c6ce47a51a5dd2f87b3f8dbe4bc0f36..68eb439c81e598f04686210c3f23b7112feec322 100644 (file)
@@ -28,6 +28,7 @@ import org.apache.commons.lang.ObjectUtils;
  * Simple concrete implementation of ColumnMatcher which test for equality.
  *
  * @author James Ahlborn
+ * @usage _general_class_
  */
 public class SimpleColumnMatcher implements ColumnMatcher {
 
index 5e61d6d23f34c665440c5a154579ed470d5d4e54..a6a6781d2dded18a2bbb4aea5e03febd91c65547 100644 (file)
@@ -36,6 +36,7 @@ import com.healthmarketscience.jackcess.Column;
  * values.
  * 
  * @author James Ahlborn
+ * @usage _general_class_
  */
 public class SimpleExportFilter implements ExportFilter {
 
index 40b27ef81dd61e061d73b8107086251fed902853..9a62140621b535695fd4747d36a3446e277319c7 100644 (file)
@@ -39,6 +39,7 @@ import com.healthmarketscience.jackcess.util.ImportFilter;
  * values.
  *
  * @author James Ahlborn
+ * @usage _general_class_
  */
 public class SimpleImportFilter implements ImportFilter {
 
index 5d1548c214846d581ae052c08fe1119eae84f518..777750ebac645857b556d965420efe62cff91499 100644 (file)
@@ -188,8 +188,6 @@ public class IndexTest extends TestCase {
       t = (TableImpl)db.getTable("Table1");
       index = t.getIndexes().get(0);
 
-      System.out.println("IndexTest: Index type: " + 
-                         index.getIndexData().getClass());
       t.addRow(99, "abc", "def");
     }
   }
index 975b4fb8c15eae292c9bcf08d7500d442bc09a58..f6de03b6c6a61e22440e8ace20c1cc125f2e666a 100644 (file)
@@ -97,7 +97,7 @@ public class JoinerTest extends TestCase {
 
       List<Row> joinedRows =
         new ArrayList<Row>();
-      for(Row t1Row : join.findRowsIterable(row)) {
+      for(Row t1Row : join.findRows(row)) {
         joinedRows.add(t1Row);
       }
 
@@ -122,7 +122,7 @@ public class JoinerTest extends TestCase {
       }
       
       joinedRows = new ArrayList<Row>();
-      for(Row t1Row : join.findRowsIterable(row, colNames)) {
+      for(Row t1Row : join.findRows(row).setColumnNames(colNames)) {
         joinedRows.add(t1Row);
       }