package org.netmelody.cieye.spies.jenkins;
import static com.google.common.cache.CacheLoader.from;
import org.netmelody.cieye.spies.jenkins.jsondomain.JobDetail;
import com.google.common.base.Function;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.LoadingCache;
public final class BuildDurationFetcher {
private final LoadingCache<String, Long> durations;
public BuildDurationFetcher(final BuildDetailFetcher detailFetcher) {
durations = CacheBuilder.newBuilder()
.maximumSize(10)
.build(from(new Function<String, Long>() {
public Long apply(String buildUrl) {
return detailFetcher.detailsOf(buildUrl).duration;
}
}));
}
public long lastGoodDurationOf(final JobDetail job) {
if (!(job.lastStableBuild == null)) {
return durations.getUnchecked(job.lastStableBuild.url);
}
if (!(job.lastSuccessfulBuild == null)) {
return durations.getUnchecked(job.lastSuccessfulBuild.url);
}
return 300000L;
}
}