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}