package org.jfrog.hudson.util;
import hudson.model.Run;
import hudson.tasks.LogRotator;
import jenkins.model.BuildDiscarder;
import org.jfrog.build.api.BuildRetention;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
/**
* @author Tomer Cohen
*/
public class BuildRetentionFactory {
/**
* Create a Build retention object out of the build
*
* @param build The build to create the build retention out of
* @param discardOldArtifacts Flag whether to discard artifacts of those builds that are to be discarded.
* @return a new Build retention
*/
public static BuildRetention createBuildRetention(Run build, boolean discardOldArtifacts) {
BuildRetention buildRetention = new BuildRetention(discardOldArtifacts);
LogRotator rotator = null;
BuildDiscarder buildDiscarder = build.getParent().getBuildDiscarder();
if (buildDiscarder != null && buildDiscarder instanceof LogRotator) {
rotator = (LogRotator) buildDiscarder;
}
if (rotator == null) {
return buildRetention;
}
if (rotator.getNumToKeep() > -1) {
buildRetention.setCount(rotator.getNumToKeep());
}
if (rotator.getDaysToKeep() > -1) {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_YEAR, -rotator.getDaysToKeep());
buildRetention.setMinimumBuildDate(new Date(calendar.getTimeInMillis()));
}
List<String> notToBeDeleted = ExtractorUtils.getBuildNumbersNotToBeDeleted(build);
buildRetention.setBuildNumbersNotToBeDiscarded(notToBeDeleted);
return buildRetention;
}
}