package org.hibernate.examples.utils;
import java.util.LinkedHashMap;
import java.util.Map;
import static java.lang.String.valueOf;
/**
* org.hibernate.examples.utils.ToStringHelper
*
* @author 배성혁 sunghyouk.bae@gmail.com
* @since 2013. 11. 27. 오후 4:35
*/
public class ToStringHelper {
public static ToStringHelper create(Object self) {
return new ToStringHelper(self.getClass().getSimpleName());
}
private Map<String, Object> map = new LinkedHashMap<String, Object>();
private final String className;
public ToStringHelper(final String className) {
this.className = className;
}
public ToStringHelper add(String name, Object value) {
return addMap(name, value);
}
public ToStringHelper add(String name, boolean value) {
return addMap(name, valueOf(value));
}
public ToStringHelper add(String name, char value) {
return addMap(name, valueOf(value));
}
public ToStringHelper add(String name, double value) {
return addMap(name, valueOf(value));
}
public ToStringHelper add(String name, float value) {
return addMap(name, valueOf(value));
}
public ToStringHelper add(String name, int value) {
return addMap(name, valueOf(value));
}
public ToStringHelper add(String name, long value) {
return addMap(name, valueOf(value));
}
@Override
public String toString() {
boolean isFirst = true;
final String separator = ",";
StringBuilder builder = new StringBuilder(32).append(className).append("{");
for (Map.Entry<String, Object> entry : map.entrySet()) {
if (!isFirst) {
builder.append(separator);
}
builder.append(entry.getKey()).append("=").append(entry.getValue());
isFirst = false;
}
builder.append("}");
return builder.toString();
}
private ToStringHelper addMap(final String name, Object value) {
map.put(name, value);
return this;
}
}