package org.flymine.sql.precompute;

/**
 * This object is an abstract superclass for a Best Query tracker. Queries can be added to these
 * objects, and they will keep track of them.
 *
 * @author Matthew Wakeling
 */
public abstract class BestQuery
{
    /**
     * Allows a Query to be added to this tracker.
     *
     * @param obj a Query to be added to the tracker
     */
    public abstract void add(Query obj);
}

@@ -30,16 +30,83 @@
 mpute;%0A%0A
+import org.flymine.sql.query.Query;%0Aimport java.sql.SQLException;%0A%0A
 /**%0A * T
@@ -275,16 +275,41 @@
 akeling%0A
+ * @author Andrew Varley%0A
  */%0Apubl
@@ -418,19 +418,17 @@
  @param 
-obj
+q
  a Query
@@ -465,49 +465,216 @@
    *
-/%0A    public abstract void add(Query obj)
+ @throws BestQueryException when adding should stop%0A     * @throws SQLException if error occurs in the underlying database%0A     */%0A    public abstract void add(Query q) throws BestQueryException, SQLException
 ;%0A%7D%0A

Throw SQLException from add() if error occurs in underlying database