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

com.alachisoft.ncache.client.internal.command.DictionaryContainsCommand Maven / Gradle / Ivy

package com.alachisoft.ncache.client.internal.command;

import Alachisoft.NCache.Common.Caching.UserBinaryObject;
import Alachisoft.NCache.Common.DataTypes.Dictionary.DictionaryAddOperation;
import Alachisoft.NCache.Common.DataTypes.Dictionary.DictionaryContainsOperation;
import Alachisoft.NCache.Common.JSON.ExtendedJsonValueBase;
import com.alachisoft.ncache.common.protobuf.CollectionItemProtocol;
import com.alachisoft.ncache.common.protobuf.DictionaryAddProtocol;
import com.alachisoft.ncache.common.protobuf.DictionaryCommandProtocol;
import com.alachisoft.ncache.common.protobuf.DictionaryContainsProtocol;
import com.alachisoft.ncache.runtime.exceptions.CommandException;
import com.google.protobuf.ByteString;

import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;

public class DictionaryContainsCommand extends DictionaryCommandBase {
    private String _key;
    private ExtendedJsonValueBase _value;
    DictionaryContainsOperation.OpType _operationType;
    private DictionaryContainsProtocol.DictionaryContains.Builder _dictionaryContainsCommand;

    public DictionaryContainsCommand(DictionaryContainsOperation operation) {
        super.name = "DictionaryContains";
        super.key = operation.getName();
        _writeThruOption = operation.getWriteThruOptions();
        _lockId = (String)operation.getLockId();
        _lockTimeout = operation.getLockTimeout();
        _key = operation.getKey();
        _value = operation.getValue();
        _operationType = operation.getOperationType();
    }

    @Override
    public CommandType getCommandType() {
        return CommandType.DATA_TYPE;
    }

    @Override
    public RequestType getCommandRequestType() {
        return RequestType.AtomicRead;
    }

    @Override
    protected void createCommand() throws CommandException {
        _dictionaryContainsCommand = DictionaryContainsProtocol.DictionaryContains.newBuilder();
        _dictionaryContainsCommand.setKey(_key);

        if (_value != null)
        {
            UserBinaryObject valueObject = UserBinaryObject.createUserBinaryObject(_value.toJson().getBytes(StandardCharsets.UTF_8));
            CollectionItemProtocol.CollectionItem.Builder valueItemBuilder = CollectionItemProtocol.CollectionItem.newBuilder();
            for(byte[] bytes : valueObject.getDataList())
                valueItemBuilder.addData(ByteString.copyFrom(bytes));
            _dictionaryContainsCommand.setValue(valueItemBuilder);
        }



        switch (_operationType)
        {
            case Contains:
                _dictionaryContainsCommand.setOperationType(DictionaryContainsProtocol.DictionaryContains.OperationType.Contains);
                break;

            case ContainsKey:
                _dictionaryContainsCommand.setOperationType(DictionaryContainsProtocol.DictionaryContains.OperationType.ContainsKey);
                break;
        }

        super.createCommand();

        _dictionaryCommandBuilder.setType(DictionaryCommandProtocol.DictionaryCommand.Type.DICTIONARY_CONTAINS);
        _dictionaryCommandBuilder.setDictionaryContains(_dictionaryContainsCommand);
    }
}





© 2015 - 2025 Weber Informatics LLC | Privacy Policy