public static String getFieldValue()

in rest-api/src/jetbrains/buildServer/server/rest/model/build/Build.java [2230:2352]


  public static String getFieldValue(@NotNull final BuildPromotion buildPromotion, @Nullable final String field, @NotNull final BeanContext beanContext) {
    final Build build = new Build(buildPromotion, Fields.ALL, beanContext);

    if ("number".equals(field)) { //supporting number here in addition to BuildRequest as this method is used from other requests classes as well
      return build.getNumber();
    }
    if ("status".equals(field)) {
      return build.getStatus();
    }
    if ("statusText".equals(field)) {
      return build.getStatusText();
    }
    if ("id".equals(field)) {
      return String.valueOf(build.getId());
    }
    if ("state".equals(field)) {
      return build.getState().toString();
    }
    if ("failedToStart".equals(field)) {
      return String.valueOf(build.isFailedToStart());
    }
    if ("startEstimateDate".equals(field)) {
      return build.getStartEstimate();
    }
    if (FINISH_ESTIMATE.equals(field)) {
      return build.getFinishEstimate();
    }
    if ("percentageComplete".equals(field)) {
      return String.valueOf(build.getPercentageComplete());
    }
    if ("personal".equals(field)) {
      return String.valueOf(build.isPersonal());
    }
    if ("usedByOtherBuilds".equals(field)) {
      return String.valueOf(build.isUsedByOtherBuilds());
    }
    if ("queuedDate".equals(field)) {
      return build.getQueuedDate();
    }
    if ("startDate".equals(field)) {
      return build.getStartDate();
    }
    if ("finishDate".equals(field)) {
      return build.getFinishDate();
    }
    if ("buildTypeId".equals(field)) {
      return build.getBuildTypeId();
    }
    if ("buildTypeInternalId".equals(field)) {
      return buildPromotion.getBuildTypeId();
    }
    if ("branchName".equals(field)) {
      return build.getBranchName();
    }
    if ("branch".equals(field)) {
      Branch branch = buildPromotion.getBranch();
      return branch == null ? "" : branch.getName();
    }
    if ("defaultBranch".equals(field)) {
      return String.valueOf(build.getDefaultBranch());
    }
    if ("unspecifiedBranch".equals(field)) {
      return String.valueOf(build.getUnspecifiedBranch());
    }
    if (PROMOTION_ID.equals(field) || "promotionId".equals(field)) { //Experimental support only
      return (String.valueOf(build.getPromotionId()));
    }
    if ("modificationId".equals(field)) { //Experimental support only
      return String.valueOf(buildPromotion.getLastModificationId());
    }
    if ("chainModificationId".equals(field)) { //Experimental support only
      return String.valueOf(((BuildPromotionEx)buildPromotion).getChainModificationId());
    }
    if ("commentText".equals(field)) { //Experimental support only
      final Comment comment = build.getComment();
      return comment == null ? null : comment.text;
    }
    if ("collectChangesError".equals(field)) { //Experimental support only
      return ((BuildPromotionEx)buildPromotion).getCollectChangesError();
    }
    if ("changesCollectingInProgress".equals(field)) { //Experimental support only
      return String.valueOf(((BuildPromotionEx)buildPromotion).isChangesCollectingInProgress());
    }
    if ("changeCollectingNeeded".equals(field)) { //Experimental support only
      return String.valueOf(((BuildPromotionEx)buildPromotion).isChangeCollectingNeeded());
    }
    if ("revision".equals(field)) { //Experimental support only
      final List<BuildRevision> revisions = buildPromotion.getRevisions();
      return revisions.size() != 1 ? String.valueOf(revisions.get(0).getRevision()) : null;
    }
    if ("settingsHash".equals(field)) { //Experimental support only to get settings digest
      return new String(Hex.encodeHex(((BuildPromotionEx)buildPromotion).getSettingsDigest(false)));
    }
    if ("currentSettingsHash".equals(field)) { //Experimental support only to get settings digest
      return new String(Hex.encodeHex(((BuildPromotionEx)buildPromotion).getBuildSettings().getDigest()));
    }

    final SBuild associatedBuild = buildPromotion.getAssociatedBuild();
    final SQueuedBuild queuedBuild = buildPromotion.getQueuedBuild();

    if ("triggeredBy.username".equals(field)) { //Experimental support only
      if (associatedBuild != null) {
        final SUser user = associatedBuild.getTriggeredBy().getUser();
        return user == null ? null : user.getUsername();
      }
      if (queuedBuild != null) {
        final SUser user = queuedBuild.getTriggeredBy().getUser();
        return user == null ? null : user.getUsername();
      }
      return null;
    }
    if ("triggeredBy.raw".equals(field)) { //Experimental support only
      if (associatedBuild != null) {
        return associatedBuild.getTriggeredBy().getRawTriggeredBy();
      }
      if (queuedBuild != null) {
        return queuedBuild.getTriggeredBy().getRawTriggeredBy();
      }
      return null;
    }

    throw new NotFoundException("Field '" + field + "' is not supported. Supported are: number, status, statusText, id, startDate, finishDate, buildTypeId, branchName.");
  }