/** * Determines whether the results for a specified key must be generated. * * @param rp the ResultProducer wanting to generate the results * @param key an array of Objects (Strings or Doubles) that uniquely identify * a result for a given ResultProducer with given compatibilityState * @return true if the result should be generated * @throws Exception if it could not be determined if the result is needed. */ @Override public boolean isResultRequired(ResultProducer rp, Object[] key) throws Exception { if (m_ResultProducer != rp) { throw new Error("Unrecognized ResultProducer sending results!!"); } // System.err.println("DBRP::isResultRequired"); // Is the result needed by the listener? boolean isRequiredByListener = m_ResultListener.isResultRequired(this, key); // Is the result already in the database? boolean isRequiredByDatabase = super.isResultRequired(rp, key); if (!isRequiredByDatabase && isRequiredByListener) { // Pass the result through to the listener Object[] result = getResultFromTable(m_ResultsTableName, rp, key); System.err.println("Got result from database: " + DatabaseUtils.arrayToString(result)); m_ResultListener.acceptResult(this, key, result); return false; } return (isRequiredByListener || isRequiredByDatabase); }
/** * Determines whether the results for a specified key must be generated. * * @param rp the ResultProducer wanting to generate the results * @param key an array of Objects (Strings or Doubles) that uniquely identify * a result for a given ResultProducer with given compatibilityState * @return true if the result should be generated * @throws Exception if it could not be determined if the result is needed. */ @Override public boolean isResultRequired(ResultProducer rp, Object[] key) throws Exception { if (m_ResultProducer != rp) { throw new Error("Unrecognized ResultProducer sending results!!"); } // System.err.println("DBRP::isResultRequired"); // Is the result needed by the listener? boolean isRequiredByListener = m_ResultListener.isResultRequired(this, key); // Is the result already in the database? boolean isRequiredByDatabase = super.isResultRequired(rp, key); if (!isRequiredByDatabase && isRequiredByListener) { // Pass the result through to the listener Object[] result = getResultFromTable(m_ResultsTableName, rp, key); System.err.println("Got result from database: " + DatabaseUtils.arrayToString(result)); m_ResultListener.acceptResult(this, key, result); return false; } return (isRequiredByListener || isRequiredByDatabase); }