1 package org.kuali.common.util.system; 2 3 import org.kuali.common.util.build.AwesomeBuilder; 4 import org.kuali.common.util.validate.IdiotProofImmutable; 5 6 @IdiotProofImmutable 7 public final class Specification { 8 9 private final String vendor; 10 private final String version; 11 private final String name; 12 13 private Specification(Builder builder) { 14 this.vendor = builder.vendor; 15 this.version = builder.version; 16 this.name = builder.name; 17 } 18 19 public static Builder builder() { 20 return new Builder(); 21 } 22 23 public static class Builder extends AwesomeBuilder<Specification> { 24 25 private String vendor; 26 private String version; 27 private String name; 28 29 public Builder vendor(String vendor) { 30 this.vendor = vendor; 31 return this; 32 } 33 34 public Builder version(String version) { 35 this.version = version; 36 return this; 37 } 38 39 public Builder name(String name) { 40 this.name = name; 41 return this; 42 } 43 44 @Override 45 public Specification getInstance() { 46 return new Specification(this); 47 } 48 49 public String getVersion() { 50 return version; 51 } 52 53 public void setVersion(String version) { 54 this.version = version; 55 } 56 57 public String getVendor() { 58 return vendor; 59 } 60 61 public void setVendor(String vendor) { 62 this.vendor = vendor; 63 } 64 65 public String getName() { 66 return name; 67 } 68 69 public void setName(String name) { 70 this.name = name; 71 } 72 73 } 74 75 public String getVersion() { 76 return version; 77 } 78 79 public String getVendor() { 80 return vendor; 81 } 82 83 public String getName() { 84 return name; 85 } 86 87 }