private static BuildRun createBuildRun(BuildProject buildProject, BuildInfo info) {
    // Generate the BuildRun instance to be saved to the recipient
    BuildRun run =
        buildProject.createBuildRun(getBuildName(info), new DB.DateTime(info.getStartTime()));

    run.setElapsed((double) info.getElapsedTime());
    run.setReference(Long.toString(info.getBuildId()));
    run.getSource().setCurrentValue(getSourceName(info.isForced()));
    run.getStatus().setCurrentValue(getStatusName(info.isSuccessful()));

    if (info.hasChanges()) {
      run.setDescription(getModificationDescription(info.getChanges()));
    }
    run.save();

    run.createLink("Build Report", info.getUrl(), true);
    return run;
  }
 /** Adds to the VersionOne BuildRun and ChangesSet. */
 public Result submitBuildRun(final BuildInfo info) {
   // cancel notification if connection is not valid
   if (!config.isConnectionValid()) {
     return Result.FAIL_CONNECTION;
   }
   final BuildProject buildProject = getBuildProject(info);
   if (buildProject == null) {
     return Result.FAIL_NO_BUILDPROJECT;
   }
   if (isBuildExist(buildProject, info)) {
     return Result.FAIL_DUPLICATE;
   }
   final BuildRun buildRun = createBuildRun(buildProject, info);
   if (info.hasChanges()) {
     setChangeSets(buildRun, info);
   }
   return Result.SUCCESS;
 }