weka.experiment

## Interface ResultListener

- All Superinterfaces:
    java.io.Serializable
  All Known Implementing Classes:
    AveragingResultProducer, CSVResultListener, DatabaseResultListener, DatabaseResultProducer, InstancesResultListener, LearningRateResultProducer

      public interface ResultListener
      extends java.io.Serializable

  Interface for objects able to listen for results obtained by a ResultProducer
  Version:
    $Revision: 8034 $
  Author:
    Len Trigg (trigg@cs.waikato.ac.nz)

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `acceptResult(ResultProducer rp, java.lang.Object[] key, java.lang.Object[] result)` Accepts results from a ResultProducer.
    `java.lang.String[]` | `determineColumnConstraints(ResultProducer rp)` Determines if there are any constraints (imposed by the destination) on additional result columns to be produced by resultProducers.
    `boolean` | `isResultRequired(ResultProducer rp, java.lang.Object[] key)` Determines whether the results for a specified key must be generated.
    `void` | `postProcess(ResultProducer rp)` Perform any postprocessing.
    `void` | `preProcess(ResultProducer rp)` Prepare for the results to be received.

- - ### Method Detail

    - #### determineColumnConstraints

          java.lang.String[] determineColumnConstraints(ResultProducer rp)
                                                 throws java.lang.Exception

      Determines if there are any constraints (imposed by the destination) on additional result columns to be produced by resultProducers. Null should be returned if there are NO constraints, otherwise a list of column names should be returned as an array of Strings.
      Parameters:
        `rp` - the ResultProducer to which the constraints will apply
      Returns:
        an array of column names to which resutltProducer's additional results will be restricted.
      Throws:
        `java.lang.Exception` - if an error occurs

    - #### preProcess

          void preProcess(ResultProducer rp)
                   throws java.lang.Exception

      Prepare for the results to be received.
      Parameters:
        `rp` - the ResultProducer that will generate the results
      Throws:
        `java.lang.Exception` - if an error occurs during preprocessing.

    - #### postProcess

          void postProcess(ResultProducer rp)
                    throws java.lang.Exception

      Perform any postprocessing. When this method is called, it indicates that no more results will be sent that need to be grouped together in any way.
      Parameters:
        `rp` - the ResultProducer that generated the results
      Throws:
        `java.lang.Exception` - if an error occurs

    - #### acceptResult

          void acceptResult(ResultProducer rp,
                            java.lang.Object[] key,
                            java.lang.Object[] result)
                     throws java.lang.Exception

      Accepts results from a ResultProducer.
      Parameters:
        `rp` - the ResultProducer that generated the results
        `key` - an array of Objects (Strings or Doubles) that uniquely identify a result for a given ResultProducer with given compatibilityState
        `result` - the results stored in an array. The objects stored in the array may be Strings, Doubles, or null (for the missing value).
      Throws:
        `java.lang.Exception` - if the result could not be accepted.

    - #### isResultRequired

          boolean isResultRequired(ResultProducer rp,
                                   java.lang.Object[] key)
                            throws java.lang.Exception

      Determines whether the results for a specified key must be generated.
      Parameters:
        `rp` - the ResultProducer wanting to generate the results
        `key` - an array of Objects (Strings or Doubles) that uniquely identify a result for a given ResultProducer with given compatibilityState
      Returns:
        true if the result should be generated
      Throws:
        `java.lang.Exception` - if it could not be determined if the result is needed.