1 package org.kuali.common.devops.jenkins.file; 2 3 import java.io.File; 4 5 import javax.validation.constraints.Min; 6 7 import org.kuali.common.core.build.ValidatingBuilder; 8 import org.kuali.common.core.validate.annotation.IdiotProofImmutable; 9 10 @IdiotProofImmutable 11 public final class JenkinsJob { 12 13 private final String name; 14 private final File dir; 15 16 @Min(1) 17 private final int nextBuildNumber; 18 19 @Min(0) 20 private final int retainedBuilds; 21 22 private JenkinsJob(Builder builder) { 23 this.dir = builder.dir; 24 this.nextBuildNumber = builder.nextBuildNumber; 25 this.name = builder.name; 26 this.retainedBuilds = builder.retainedBuilds; 27 } 28 29 public static Builder builder() { 30 return new Builder(); 31 } 32 33 public static class Builder extends ValidatingBuilder<JenkinsJob> { 34 35 private String name; 36 private File dir; 37 private int nextBuildNumber; 38 private int retainedBuilds; 39 40 public Builder withRetainedBuilds(int retainedBuilds) { 41 this.retainedBuilds = retainedBuilds; 42 return this; 43 } 44 45 public Builder withName(String name) { 46 this.name = name; 47 return this; 48 } 49 50 public Builder withDir(File dir) { 51 this.dir = dir; 52 return this; 53 } 54 55 public Builder withNextBuildNumber(int nextBuildNumber) { 56 this.nextBuildNumber = nextBuildNumber; 57 return this; 58 } 59 60 @Override 61 public JenkinsJob build() { 62 return validate(new JenkinsJob(this)); 63 } 64 } 65 66 public File getDir() { 67 return dir; 68 } 69 70 public int getNextBuildNumber() { 71 return nextBuildNumber; 72 } 73 74 public String getName() { 75 return name; 76 } 77 78 public int getRetainedBuilds() { 79 return retainedBuilds; 80 } 81 82 }