code: public boolean isDone() {
      checkNotDryRun("isDone");
      Job job = bigquery.getJob(getJobId(), JobOption.fields(BigQuery.JobField.STATUS));
      return job == null || JobStatus.State.DONE.equals(job.getStatus().getState());
    }
docs: Checks if this job has completed its execution, either failing or succeeding. If the job does
  not exist this method returns {@code true}.
  
  <p>Example of waiting for a job until it reports that it is done.
  
  <pre>{@code
  while (!job.isDone()) {
  Thread.sleep(1000L);
  }
  }</pre>
  
  @return {@code true} if this job is in {@link JobStatus.State#DONE} state or if it does not
  exist, {@code false} if the state is not {@link JobStatus.State#DONE}
  @throws BigQueryException upon failure