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

tech.ytsaurus.client.discovery.MemberInfo Maven / Gradle / Ivy

package tech.ytsaurus.client.discovery;

import java.util.Map;
import java.util.stream.Collectors;

import javax.annotation.Nullable;

import com.google.protobuf.ByteString;
import tech.ytsaurus.TMemberInfo;
import tech.ytsaurus.ysontree.YTreeBinarySerializer;
import tech.ytsaurus.ysontree.YTreeNode;
import tech.ytsaurus.ytree.TAttribute;
import tech.ytsaurus.ytree.TAttributeDictionary;

public class MemberInfo {
    private final String id;
    private final long priority;
    private final long revision;
    @Nullable
    private final Map attributes;

    public MemberInfo(String id, long priority, long revision, Map attributes) {
        this.id = id;
        this.priority = priority;
        this.revision = revision;
        this.attributes = attributes;
    }

    public MemberInfo(String id, long priority, long revision) {
        this(id, priority, revision, null);
    }

    public static MemberInfo fromProto(TMemberInfo protoValue) {
        Map attributes = null;
        if (protoValue.hasAttributes()) {
            attributes = protoValue.getAttributes().getAttributesList().stream()
                    .collect(Collectors.toMap(
                            TAttribute::getKey,
                            attr -> YTreeBinarySerializer.deserialize(attr.getValue().newInput())));
        }
        return new MemberInfo(protoValue.getId(), protoValue.getPriority(), protoValue.getRevision(), attributes);
    }

    public TMemberInfo toProto() {
        TMemberInfo.Builder builder = TMemberInfo.newBuilder();
        builder.setId(id);
        builder.setPriority(priority);
        builder.setRevision(revision);
        if (attributes != null) {
            final TAttributeDictionary.Builder aBuilder = builder.getAttributesBuilder();
            for (Map.Entry me : attributes.entrySet()) {
                aBuilder.addAttributesBuilder()
                        .setKey(me.getKey())
                        .setValue(ByteString.copyFrom(me.getValue().toBinary()));
            }
        }
        return builder.build();
    }

    public String getId() {
        return id;
    }

    public long getPriority() {
        return priority;
    }

    public long getRevision() {
        return revision;
    }

    @Nullable
    public Map getAttributes() {
        return attributes;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy