View Javadoc
1   package org.kuali.common.util.function;
2   
3   import static com.google.common.base.Preconditions.checkArgument;
4   import static com.google.common.base.Preconditions.checkNotNull;
5   
6   import org.apache.commons.lang3.StringUtils;
7   
8   import com.google.common.base.Function;
9   import com.google.common.base.Optional;
10  
11  public final class PrefixFunction implements Function<String, String> {
12  
13  	private final String prefix;
14  	private final Optional<String> separator;
15  
16  	@Override
17  	public String apply(String input) {
18  		checkNotNull(input, "'input' cannot be null");
19  		StringBuilder sb = new StringBuilder();
20  		sb.append(prefix);
21  		if (separator.isPresent()) {
22  			sb.append(separator.get());
23  		}
24  		sb.append(input);
25  		return sb.toString();
26  	}
27  
28  	private PrefixFunction(Builder builder) {
29  		this.prefix = builder.prefix;
30  		this.separator = builder.separator;
31  	}
32  
33  	public static PrefixFunction of(String prefix) {
34  		return builder(prefix).build();
35  	}
36  
37  	public static PrefixFunction of(String prefix, String separator) {
38  		return builder(prefix).separator(separator).build();
39  	}
40  
41  	public static Builder builder(String prefix) {
42  		return new Builder(prefix);
43  	}
44  
45  	public static class Builder implements org.apache.commons.lang3.builder.Builder<PrefixFunction> {
46  
47  		// Required
48  		private final String prefix;
49  
50  		// Optional
51  		private Optional<String> separator = Optional.absent();
52  
53  		public Builder(String prefix) {
54  			this.prefix = prefix;
55  		}
56  
57  		public Builder separator(String separator) {
58  			this.separator = Optional.of(separator);
59  			return this;
60  		}
61  
62  		@Override
63  		public PrefixFunction build() {
64  			PrefixFunction instance = new PrefixFunction(this);
65  			validate(instance);
66  			return instance;
67  		}
68  
69  		private static void validate(PrefixFunction instance) {
70  			checkArgument(!StringUtils.isBlank(instance.prefix), "'prefix' cannot be blank");
71  			checkNotNull(instance.separator, "'separator' cannot be null");
72  			if (instance.separator.isPresent()) {
73  				checkArgument(!StringUtils.isBlank(instance.separator.get()), "'separator' cannot be blank");
74  			}
75  		}
76  
77  		public Optional<String> getSeparator() {
78  			return separator;
79  		}
80  
81  		public void setSeparator(Optional<String> separator) {
82  			this.separator = separator;
83  		}
84  
85  		public String getPrefix() {
86  			return prefix;
87  		}
88  	}
89  
90  }