View Javadoc
1   package org.kuali.common.util.system;
2   
3   import javax.validation.Valid;
4   
5   import org.kuali.common.util.bind.api.Bind;
6   import org.kuali.common.util.bind.api.BindingAlias;
7   import org.kuali.common.util.bind.api.BindingPrefix;
8   import org.kuali.common.util.bind.api.NoBindingPrefix;
9   import org.kuali.common.util.build.AwesomeBuilder;
10  import org.kuali.common.util.validate.IdiotProofImmutable;
11  
12  @IdiotProofImmutable
13  @NoBindingPrefix
14  public final class SystemProperties {
15  
16  	@Valid
17  	@Bind
18  	private final User user;
19  
20  	@Valid
21  	@Bind
22  	@BindingPrefix("os")
23  	private final OperatingSystem operatingSystem;
24  
25  	@Valid
26  	@Bind
27  	private final Java java;
28  
29  	@BindingAlias("line.separator")
30  	private final String lineSeparator;
31  
32  	@BindingAlias("path.separator")
33  	private final String pathSeparator;
34  
35  	@BindingAlias("file.separator")
36  	private final String fileSeparator;
37  
38  	private SystemProperties(Builder builder) {
39  		this.user = builder.user;
40  		this.operatingSystem = builder.operatingSystem;
41  		this.java = builder.java;
42  		this.lineSeparator = builder.lineSeparator;
43  		this.pathSeparator = builder.pathSeparator;
44  		this.fileSeparator = builder.fileSeparator;
45  	}
46  
47  	public static Builder builder() {
48  		return new Builder();
49  	}
50  
51  	public static class Builder extends AwesomeBuilder<SystemProperties> {
52  
53  		private User user;
54  		private OperatingSystem operatingSystem;
55  		private Java java;
56  		private String pathSeparator;
57  		private String lineSeparator;
58  		private String fileSeparator;
59  
60  		@Override
61  		public SystemProperties getInstance() {
62  			return new SystemProperties(this);
63  		}
64  
65  		public Builder user(User user) {
66  			this.user = user;
67  			return this;
68  		}
69  
70  		public Builder operatingSystem(OperatingSystem operatingSystem) {
71  			this.operatingSystem = operatingSystem;
72  			return this;
73  		}
74  
75  		public Builder java(Java java) {
76  			this.java = java;
77  			return this;
78  		}
79  
80  		public Builder lineSeparator(String lineSeparator) {
81  			this.lineSeparator = lineSeparator;
82  			return this;
83  		}
84  
85  		public Builder pathSeparator(String pathSeparator) {
86  			this.pathSeparator = pathSeparator;
87  			return this;
88  		}
89  
90  		public Builder fileSeparator(String fileSeparator) {
91  			this.fileSeparator = fileSeparator;
92  			return this;
93  		}
94  
95  		public User getUser() {
96  			return user;
97  		}
98  
99  		public void setUser(User user) {
100 			this.user = user;
101 		}
102 
103 		public OperatingSystem getOperatingSystem() {
104 			return operatingSystem;
105 		}
106 
107 		public void setOperatingSystem(OperatingSystem operatingSystem) {
108 			this.operatingSystem = operatingSystem;
109 		}
110 
111 		public Java getJava() {
112 			return java;
113 		}
114 
115 		public void setJava(Java java) {
116 			this.java = java;
117 		}
118 
119 		public String getLineSeparator() {
120 			return lineSeparator;
121 		}
122 
123 		public void setLineSeparator(String lineSeparator) {
124 			this.lineSeparator = lineSeparator;
125 		}
126 
127 		public String getPathSeparator() {
128 			return pathSeparator;
129 		}
130 
131 		public void setPathSeparator(String pathSeparator) {
132 			this.pathSeparator = pathSeparator;
133 		}
134 
135 		public String getFileSeparator() {
136 			return fileSeparator;
137 		}
138 
139 		public void setFileSeparator(String fileSeparator) {
140 			this.fileSeparator = fileSeparator;
141 		}
142 
143 	}
144 
145 	public User getUser() {
146 		return user;
147 	}
148 
149 	public OperatingSystem getOperatingSystem() {
150 		return operatingSystem;
151 	}
152 
153 	public Java getJava() {
154 		return java;
155 	}
156 
157 	public String getLineSeparator() {
158 		return lineSeparator;
159 	}
160 
161 	public String getPathSeparator() {
162 		return pathSeparator;
163 	}
164 
165 	public String getFileSeparator() {
166 		return fileSeparator;
167 	}
168 
169 }