![JAR search and dependency download from the Maven repository](/logo.png)
com.progress.hudson.BuildItem Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of schedule-failed-builds Show documentation
Show all versions of schedule-failed-builds Show documentation
This plugin allows you to trigger a build N minutes after a build failed.
The newest version!
package com.progress.hudson;
import java.util.Calendar;
import java.util.Date;
import hudson.model.Item;
/**
* Keeps the status of one job/project
* @author Stefan Fritz
*
*/
public class BuildItem{
private Item item=null;
private Integer retriesLeft =-1; //forever by default
private Long nextInterval =0L;
private Long interval=0L;
BuildItem(Item item, Integer interval, Integer maxRetries ){
setItem(item);
setInterval(interval * 1000L * 60L); //in minutes
setNextInterval( System.currentTimeMillis() + getInterval());
if(maxRetries>0){
setRetriesLeft(maxRetries);
}
}
public boolean readyForBuild(){
boolean result =false;
// only build if next build time/interval passed and retries are left
Integer left = getRetriesLeft();
if(left!=0){
Long now=System.currentTimeMillis();
Long next=getNextInterval();
String sNow=new Date(now).toString();
String sNext=new Date(next).toString();
if(now >= next){
// rebuild is ok
result=true;
if(left>0){
//decrement retries
setRetriesLeft(--left);
}
setNextInterval(now + getInterval());
}
}
return result;
}
public String getUniqueID(){
return item.getFullName();
}
private Item getItem() {
return item;
}
private void setItem(Item item) {
this.item = item;
}
private Integer getRetriesLeft() {
return retriesLeft;
}
private void setRetriesLeft(Integer retriesLeft) {
if(retriesLeft!=-1){
//only set if not infinite (-1)
this.retriesLeft = retriesLeft;
}
}
private Long getNextInterval() {
return nextInterval;
}
private void setNextInterval(Long nextInterval) {
this.nextInterval = nextInterval;
}
private Long getInterval() {
return interval;
}
private void setInterval(Long interval) {
this.interval = interval;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy