package hudson.plugins.tfs.model; import hudson.model.Job; import hudson.model.Result; import hudson.model.Run; import net.sf.json.JSONObject; import javax.annotation.Nonnull; import java.util.Collections; import java.util.HashMap; import java.util.Map; public class TeamGitStatus { private static final Map<Result, GitStatusState> RESULT_TO_STATE; static { final Map<Result, GitStatusState> resultToStatus = new HashMap<Result, GitStatusState>(); resultToStatus.put(Result.SUCCESS, GitStatusState.Succeeded); resultToStatus.put(Result.UNSTABLE, GitStatusState.Failed); resultToStatus.put(Result.FAILURE, GitStatusState.Failed); resultToStatus.put(Result.NOT_BUILT, GitStatusState.Error); resultToStatus.put(Result.ABORTED, GitStatusState.Error); RESULT_TO_STATE = Collections.unmodifiableMap(resultToStatus); } public GitStatusState state; public String description; public String targetUrl; public GitStatusContext context; public static TeamGitStatus fromRun(@Nonnull final Run<?, ?> run) { final TeamGitStatus status = new TeamGitStatus(); final Result result = run.getResult(); if (result == null) { status.state = GitStatusState.Pending; status.description = status.state.toString(); } else { status.state = RESULT_TO_STATE.get(result); status.description = result.toString(); } status.targetUrl = run.getAbsoluteUrl(); final Job<?, ?> project = run.getParent(); final String runDisplayName = run.getDisplayName(); final String projectDisplayName = project.getDisplayName(); status.context = new GitStatusContext(runDisplayName, projectDisplayName); return status; } public String toJson() { final JSONObject jsonObject = JSONObject.fromObject(this); final String result = jsonObject.toString(); return result; } }