1 package org.kuali.common.devops.archive.sweep.jenkins.s3; 2 3 import static com.google.common.collect.Lists.newArrayList; 4 5 import java.util.List; 6 7 import org.kuali.common.core.build.ValidatingBuilder; 8 import org.kuali.common.core.validate.annotation.IdiotProofImmutable; 9 10 import com.google.common.collect.ImmutableList; 11 12 @IdiotProofImmutable 13 public final class JenkinsS3Build { 14 15 private final long start; 16 private final S3ObjectPair pair; 17 private final ImmutableList<S3ObjectPair> files; 18 19 private JenkinsS3Build(Builder builder) { 20 this.start = builder.start; 21 this.pair = builder.pair; 22 this.files = ImmutableList.copyOf(builder.files); 23 } 24 25 public static Builder builder() { 26 return new Builder(); 27 } 28 29 public static class Builder extends ValidatingBuilder<JenkinsS3Build> { 30 31 private long start; 32 private S3ObjectPair pair; 33 private List<S3ObjectPair> files = newArrayList(); 34 35 public Builder withStart(long start) { 36 this.start = start; 37 return this; 38 } 39 40 public Builder withPair(S3ObjectPair pair) { 41 this.pair = pair; 42 return this; 43 } 44 45 public Builder withFiles(List<S3ObjectPair> files) { 46 this.files = files; 47 return this; 48 } 49 50 @Override 51 public JenkinsS3Build build() { 52 return validate(new JenkinsS3Build(this)); 53 } 54 } 55 56 public long getStart() { 57 return start; 58 } 59 60 public S3ObjectPair getPair() { 61 return pair; 62 } 63 64 public ImmutableList<S3ObjectPair> getFiles() { 65 return files; 66 } 67 68 }