All Downloads are FREE. Search and download functionalities are using the official Maven repository.

tech.ydb.table.result.impl.ProtoDictValueReader Maven / Gradle / Ivy

package tech.ydb.table.result.impl;

import tech.ydb.proto.ValueProtos;
import tech.ydb.table.result.ValueReader;


/**
 * @author Sergey Polovko
 */
final class ProtoDictValueReader extends AbstractValueReader {

    private final ValueProtos.Type type;
    private final AbstractValueReader keyReader;
    private final AbstractValueReader valueReader;
    private ValueProtos.Value value;

    ProtoDictValueReader(ValueProtos.Type type, AbstractValueReader keyReader, AbstractValueReader valueReader) {
        this.type = type;
        this.keyReader = keyReader;
        this.valueReader = valueReader;
    }

    @Override
    protected ValueProtos.Type getProtoType() {
        return type;
    }

    @Override
    protected ValueProtos.Value getProtoValue() {
        return value;
    }

    @Override
    protected void setProtoValue(ValueProtos.Value value) {
        this.value = value;
    }

    @Override
    public int getDictItemsCount() {
        return value.getPairsCount();
    }

    @Override
    public ValueReader getDictKey(int index) {
        ValueProtos.ValuePair pair = value.getPairs(index);
        keyReader.setProtoValue(pair.getKey());
        return keyReader;
    }

    @Override
    public ValueReader getDictValue(int index) {
        ValueProtos.ValuePair pair = value.getPairs(index);
        valueReader.setProtoValue(pair.getPayload());
        return valueReader;
    }

    @Override
    public void toString(StringBuilder sb) {
        sb.append("Dict[");
        for (int i = 0; i < getDictItemsCount(); i++) {
            getDictKey(i).toString(sb);
            sb.append(": ");
            getDictValue(i).toString(sb);
            sb.append(", ");
        }
        if (getDictItemsCount() > 0) {
            sb.setLength(sb.length() - 2);
        }
        sb.append(']');
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy