package com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.features;
import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.BuildViewModel;
import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.JobView;
import com.smartcodeltd.jenkinsci.plugins.buildmonitor.viewmodel.duration.Duration;
import org.codehaus.jackson.annotate.JsonProperty;
/**
* @author Jan Molak
*/
public class KnowsLastCompletedBuildDetails implements Feature<KnowsLastCompletedBuildDetails.LastCompletedBuild> {
private JobView job;
public KnowsLastCompletedBuildDetails(/* config */) {
}
@Override
public KnowsLastCompletedBuildDetails of(JobView jobView) {
this.job = jobView;
return this;
}
@Override
public LastCompletedBuild asJson() {
return new LastCompletedBuild(job.lastCompletedBuild());
}
private static String formatted(Duration duration) {
return null != duration
? duration.value()
: "";
}
public static class LastCompletedBuild {
private final BuildViewModel lastCompletedBuild;
public LastCompletedBuild(BuildViewModel lastCompletedBuild) {
this.lastCompletedBuild = lastCompletedBuild;
}
@JsonProperty
public final String name() {
return lastCompletedBuild.name();
}
@JsonProperty
public final String url() {
return lastCompletedBuild.url();
}
@JsonProperty
public final String duration() {
return formatted(lastCompletedBuild.duration());
}
@JsonProperty
public final String description() {
return lastCompletedBuild.description();
}
@JsonProperty
public final String timeElapsedSince() {
return formatted(lastCompletedBuild.timeElapsedSince());
}
}
}