001package org.kuali.common.devops.jenkins.archive; 002 003import static com.google.common.collect.Lists.newArrayList; 004 005import java.io.File; 006import java.util.List; 007 008import org.kuali.common.core.build.ValidatingBuilder; 009import org.kuali.common.core.validate.annotation.IdiotProofImmutable; 010 011import com.google.common.collect.ImmutableList; 012 013@IdiotProofImmutable 014public final class JenkinsBuild { 015 016 private final int number; 017 private final long timestamp; 018 private final File dir; 019 private final ImmutableList<File> files; 020 021 private JenkinsBuild(Builder builder) { 022 this.files = ImmutableList.copyOf(builder.files); 023 this.number = builder.number; 024 this.dir = builder.dir; 025 this.timestamp = builder.timestamp; 026 } 027 028 public static Builder builder() { 029 return new Builder(); 030 } 031 032 public static class Builder extends ValidatingBuilder<JenkinsBuild> { 033 034 private int number; 035 private long timestamp; 036 private File dir; 037 private List<File> files = newArrayList(); 038 039 public Builder withDir(File dir) { 040 this.dir = dir; 041 return this; 042 } 043 044 public Builder withFiles(List<File> files) { 045 this.files = files; 046 return this; 047 } 048 049 public Builder withTimestamp(long timestamp) { 050 this.timestamp = timestamp; 051 return this; 052 } 053 054 public Builder withNumber(int number) { 055 this.number = number; 056 return this; 057 } 058 059 @Override 060 public JenkinsBuild build() { 061 return validate(new JenkinsBuild(this)); 062 } 063 } 064 065 public List<File> getFiles() { 066 return files; 067 } 068 069 public int getNumber() { 070 return number; 071 } 072 073 public long getTimestamp() { 074 return timestamp; 075 } 076 077 public File getDir() { 078 return dir; 079 } 080 081}