package io.airlift.airship.cli; import com.google.common.collect.ImmutableMap; import org.fusesource.jansi.Ansi.Color; import java.util.Map; import static com.google.common.collect.Maps.newLinkedHashMap; import static io.airlift.airship.cli.Ansi.colorize; public class SimpleRecord implements Record { public static Builder builder() { return new Builder(); } private final Map<Column, String> values; private final Map<Column, String> colorizedValues; SimpleRecord(Map<Column, String> values, Map<Column, String> colorizedValues) { this.values = ImmutableMap.copyOf(values); this.colorizedValues = ImmutableMap.copyOf(colorizedValues); } @Override public String getValue(Column column) { return values.get(column); } @Override public String getColorizedValue(Column column) { return colorizedValues.get(column); } public static class Builder { private final Map<Column, String> values = newLinkedHashMap(); private final Map<Column, String> colorizedValues = newLinkedHashMap(); public Builder addValue(Column name, Object value) { String stringValue = value == null ? "" : value.toString(); values.put(name, stringValue); colorizedValues.put(name, stringValue); return this; } public Builder addValue(Column name, Object value, Color color) { String stringValue = value == null ? "" : value.toString(); values.put(name, stringValue); colorizedValues.put(name, colorize(stringValue, color)); return this; } public SimpleRecord build() { return new SimpleRecord(values, colorizedValues); } } }