View Javadoc
1   package org.kuali.common.devops.table;
2   
3   import static com.google.common.base.Preconditions.checkNotNull;
4   
5   import java.lang.reflect.Field;
6   
7   import com.google.common.base.Optional;
8   
9   public final class TableCellDescriptor<T> {
10  
11  	private final Field field;
12  	private final Optional<T> fieldValue;
13  
14  	private TableCellDescriptor(Builder<T> builder) {
15  		this.field = builder.field;
16  		this.fieldValue = builder.fieldValue;
17  	}
18  
19  	public static <T> TableCellDescriptor<T> create(Field field, Optional<T> fieldValue) {
20  		Builder<T> builder = builder();
21  		return builder.field(field).fieldValue(fieldValue).build();
22  	}
23  
24  	public static <T> Builder<T> builder() {
25  		return new Builder<T>();
26  	}
27  
28  	public static class Builder<T> implements org.apache.commons.lang3.builder.Builder<TableCellDescriptor<T>> {
29  
30  		private Field field;
31  		private Optional<T> fieldValue;
32  
33  		public Builder<T> field(Field field) {
34  			this.field = field;
35  			return this;
36  		}
37  
38  		public Builder<T> fieldValue(Optional<T> fieldValue) {
39  			this.fieldValue = fieldValue;
40  			return this;
41  		}
42  
43  		public Builder<T> fieldValue(Object object) {
44  			return fieldValue(Optional.of(object));
45  		}
46  
47  		@Override
48  		public TableCellDescriptor<T> build() {
49  			TableCellDescriptor<T> instance = new TableCellDescriptor<T>(this);
50  			validate(instance);
51  			return instance;
52  		}
53  
54  		private static <T> void validate(TableCellDescriptor<T> instance) {
55  			checkNotNull(instance.field, "'field' cannot be null");
56  			checkNotNull(instance.fieldValue, "'fieldValue' cannot be null");
57  		}
58  
59  		public Field getField() {
60  			return field;
61  		}
62  
63  		public void setField(Field field) {
64  			this.field = field;
65  		}
66  
67  		public Optional<T> getFieldValue() {
68  			return fieldValue;
69  		}
70  
71  		public void setFieldValue(Optional<T> fieldValue) {
72  			this.fieldValue = fieldValue;
73  		}
74  	}
75  
76  	public Field getField() {
77  		return field;
78  	}
79  
80  	public Optional<T> getFieldValue() {
81  		return fieldValue;
82  	}
83  
84  }