package eu.cloudwave.wp5.feedback.eclipse.costs.ui.hovers;
import java.util.Map;
import com.google.common.collect.Maps;
public class ContextBuilder {
protected Map<String, Object> context;
/**
* Private Contructor, static init method should be used instead
*/
protected ContextBuilder() {
this.context = Maps.newHashMap();
}
/**
* Creates a new builder that can be used in a fluent way
*
* @return {@link ContextBuilder}
*/
public static ContextBuilder init() {
return new ContextBuilder();
}
/**
* Adds a key/value pair to the context and returns the builder in a fluent style
*
* @param key
* @param value
*
* @return {@link ContextBuilder}
*/
public ContextBuilder add(String key, Object value) {
this.context.put(key, value);
return this;
}
/**
* Add the alternative object to the context if the first object is null
*
* @param key
* @param value
* @param alternative
*
* @return {@link ContextBuilder}
*/
public ContextBuilder addIfNotNull(String key, Object value, Object alternative) {
if (value != null) {
this.context.put(key, value);
}
else if (alternative != null) {
this.context.put(key, alternative);
}
return this;
}
/**
* Add object to context if it is not null
*
* @param key
* @param value
*
* @return {@link ContextBuilder}
*/
public ContextBuilder addIfNotNull(String key, Object value) {
return addIfNotNull(key, value, null);
}
/**
* Builds context map for {@link TemplateHandler}
*
* @return context
*/
public Map<String, Object> build() {
return context;
}
}