/******************************************************************************* * Copyright (c) 2013 Ericsson and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Francois Chouinard - Initial API and implementation *******************************************************************************/ package org.eclipse.mylyn.internal.gerrit.core.client.rest; import org.eclipse.mylyn.internal.gerrit.core.client.data.GerritPerson; import com.google.gson.annotations.SerializedName; /** * The optional labels part of the ChangeInfo structure (filled by GSON). * * @author Francois Chouinard */ public class GerritReviewLabel { /* * When specifying the "LABELS" option on the gerrit changes query, the result * has the following form: * * { * "project": "demo", * "branch": "master", * ... * "owner": { * "name": "John Doe" * }, * "labels": { * "Verified": { ... }, * "Code-Review": { ... } * } * } * * The "labels" section has the following semi-formal structure: * * LABELS = "labels" + ":" + "{" + VERIFIED + "," + CODE_REVIEW + "}". * VERIFIED = "Verified" + ":" + "{" + [ STATUS ] + "}". * CODE_REVIEW = "Code-Review" + ":" + "{" + [ STATUS ] + "}". * STATUS = APPROVED | RECOMMENDED | DISLIKED | REJECTED. * * APPROVED = "approved" + ":" + "{" + REVIEWER + "}". * RECOMMENDED = "recommended" + ":" + "{" + REVIEWER + "}". * DISLIKED = "dislikes" + ":" + "{" + REVIEWER + "}". * REJECTED = "rejected" + ":" + "{" + REVIEWER + "}". * * REVIEWER = "name" + ":" + STRING. */ @SerializedName("Verified") private GerritReviewStatus verified; @SerializedName("Code-Review") private GerritReviewStatus code_review; public GerritReviewStatus getVerifyStatus() { return verified; } public GerritReviewStatus getCodeReviewStatus() { return code_review; } public class GerritReviewStatus { private GerritPerson approved; // +2 private GerritPerson recommended; // +1 private GerritPerson disliked; // -1 private GerritPerson rejected; // -2 public GerritPerson getReviewer() { return approved; } public boolean isApproved() { return approved != null; } public boolean isRecommended() { return recommended != null; } public boolean isRejected() { return rejected != null; } public boolean isDisliked() { return disliked != null; } public String getStatus() { if (isApproved()) { return "2"; //$NON-NLS-1$ } if (isRecommended()) { return "1"; //$NON-NLS-1$ } if (isDisliked()) { return "-1"; //$NON-NLS-1$ } if (isRejected()) { return "-2"; //$NON-NLS-1$ } return "0"; //$NON-NLS-1$ } } }