package com.codepoetics.octarine.records;
import java.util.Objects;
abstract class BaseKey<T> implements Key<T> {
private final String name;
private final Record metadata;
BaseKey(String name, Record metadata) {
this.name = name;
this.metadata = metadata;
}
@Override
public String name() {
return name;
}
@Override
public Record metadata() {
return metadata;
}
@Override
public Value of(T value) {
return new Value(this, value);
}
@Override
public int hashCode() {
return Objects.hash(name, metadata);
}
@Override
public void describe(StringBuilder sb) {
if (sb.length() > 0) {
sb.append(".");
}
sb.append(name);
}
@Override
public String toString() {
return String.format("$%s %s", name, metadata);
}
}