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

io.split.storages.pluggable.adapters.UserCustomSegmentAdapterConsumer Maven / Gradle / Ivy

package io.split.storages.pluggable.adapters;

import io.split.storages.SegmentCacheConsumer;
import io.split.storages.pluggable.domain.PrefixAdapter;
import io.split.storages.pluggable.domain.UserStorageWrapper;
import io.split.storages.pluggable.utils.Helper;
import pluggable.CustomStorageWrapper;

import java.util.Set;

import static com.google.common.base.Preconditions.checkNotNull;

public class UserCustomSegmentAdapterConsumer implements SegmentCacheConsumer {

    private final UserStorageWrapper _userStorageWrapper;

    public UserCustomSegmentAdapterConsumer(CustomStorageWrapper customStorageWrapper) {
        _userStorageWrapper = new UserStorageWrapper(checkNotNull(customStorageWrapper));
    }

    @Override
    public long getChangeNumber(String segmentName) {
        String wrapperResponse = _userStorageWrapper.get(PrefixAdapter.buildSegment(segmentName));
        return Helper.responseToLong(wrapperResponse, -1L);
    }

    @Override
    public boolean isInSegment(String segmentName, String key) {
        return _userStorageWrapper.itemContains(PrefixAdapter.buildSegment(segmentName), key);
    }

    @Override
    public long getSegmentCount() {
        Set keys = _userStorageWrapper.getKeysByPrefix(PrefixAdapter.buildSegmentAll());
        return keys == null ? 0L : keys.size();
    }

    @Override
    public long getKeyCount() {
        Set keys = _userStorageWrapper.getKeysByPrefix(PrefixAdapter.buildSegmentAll());
        if(keys == null) {
            return 0L;
        }
        return keys.stream().mapToLong(key -> _userStorageWrapper.getItemsCount(key)).sum();
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy