code: public JobInformationRecorder withBatchInformation() {
      if(sourceBatcher.isStarted()) throw new IllegalStateException("Configuration cannot be changed after startJob has been called");
      if(sourceBatcher instanceof QueryBatcher) {
        ( (QueryBatcher) sourceBatcher ).onUrisReady(new addQueryBatchSuccessInformationListener());
        ( (QueryBatcher) sourceBatcher ).onQueryFailure(new addQueryBatchFailureInformationListener());
      } else if(sourceBatcher instanceof WriteBatcher) {
        ( (WriteBatcher) sourceBatcher ).onBatchSuccess(new addWriteBatchSuccessInformationListener());
        ( (WriteBatcher) sourceBatcher ).onBatchFailure(new addWriteBatchFailureInformationListener());
      }
      return this;
    }
docs: Indicates the JobInformationRecorder to persist batch information. For each batch, the success/failure
  information along with a few metadata of the batch would be written to the database.
  
  @return this object for chaining