package org.springframework.roo.model;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
/**
* Builder for {@link CustomData}.
* <p>
* Can be used to create new instances from scratch, or based on an existing
* {@link CustomData} instance.
*
* @author Ben Alex
* @since 1.1
*/
public class CustomDataBuilder implements Builder<CustomData> {
private final Map<Object, Object> customData = new LinkedHashMap<Object, Object>();
/**
* Constructor for an empty builder
*/
public CustomDataBuilder() {}
/**
* Constructor for a builder initialised with the given contents
*
* @param existing can be <code>null</code>
*/
public CustomDataBuilder(final CustomData existing) {
append(existing);
}
/**
* Appends the given custom data to this builder
*
* @param customData the custom data to append; can be <code>null</code> to
* make no changes
*/
public void append(final CustomData customData) {
if (customData != null) {
for (final Object key : customData.keySet()) {
this.customData.put(key, customData.get(key));
}
}
}
public CustomData build() {
return new CustomDataImpl(customData);
}
public void clear() {
customData.clear();
}
public Object get(final Object key) {
return customData.get(key);
}
public Set<Object> keySet() {
return customData.keySet();
}
public Object put(final Object key, final Object value) {
return customData.put(key, value);
}
public Object remove(final Object key) {
return customData.remove(key);
}
public int size() {
return customData.size();
}
public Collection<Object> values() {
return customData.values();
}
}