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

com.azure.cosmos.implementation.IndexUtilizationInfo Maven / Gradle / Ivy

Go to download

This Package contains Microsoft Azure Cosmos SDK (with Reactive Extension Reactor support) for Azure Cosmos DB SQL API

There is a newer version: 4.61.1
Show newest version
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

package com.azure.cosmos.implementation;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

public final class IndexUtilizationInfo {
    private final static Logger logger = LoggerFactory.getLogger(IndexUtilizationInfo.class.getSimpleName());

    static final IndexUtilizationInfo ZERO = new IndexUtilizationInfo(
        new ArrayList<>(), /* utilizedSingleIndexes */
        new ArrayList<>(), /* potentialSingleIndexes */
        new ArrayList<>(), /* utilizedCompositeIndexes */
        new ArrayList<>()); /* potentialCompositeIndexes */

    @JsonProperty(value = "UtilizedSingleIndexes", access = JsonProperty.Access.WRITE_ONLY)
    private List utilizedSingleIndexes;
    @JsonProperty(value = "PotentialSingleIndexes", access = JsonProperty.Access.WRITE_ONLY)
    private List potentialSingleIndexes;
    @JsonProperty(value = "UtilizedCompositeIndexes", access = JsonProperty.Access.WRITE_ONLY)
    private List utilizedCompositeIndexes;
    @JsonProperty(value = "PotentialCompositeIndexes", access = JsonProperty.Access.WRITE_ONLY)
    private List potentialCompositeIndexes;

    IndexUtilizationInfo() {}

    /**
     * @param utilizedSingleIndexes     -> The utilized single indexes list.
     * @param potentialSingleIndexes    -> The potential single indexes list.
     * @param utilizedCompositeIndexes  -> The potential composite indexes list.
     * @param potentialCompositeIndexes -> The utilized composite indexes list.
     */
    IndexUtilizationInfo(List utilizedSingleIndexes, List potentialSingleIndexes, List utilizedCompositeIndexes, List potentialCompositeIndexes) {
        this.utilizedSingleIndexes = utilizedSingleIndexes;
        this.potentialSingleIndexes = potentialSingleIndexes;
        this.utilizedCompositeIndexes = utilizedCompositeIndexes;
        this.potentialCompositeIndexes = potentialCompositeIndexes;
    }

    /**
     * @return utilizedSingleIndexes
     */
    public List getUtilizedSingleIndexes() {
        return utilizedSingleIndexes;
    }

    /**
     * @return potentialSingleIndexes
     */
    public List getPotentialSingleIndexes() {
        return potentialSingleIndexes;
    }

    /**
     * @return utilizedCompositeIndexes
     */
    public List getUtilizedCompositeIndexes() {
        return utilizedCompositeIndexes;
    }

    /**
     * @return potentialCompositeIndexes
     */
    public List getPotentialCompositeIndexes() {
        return potentialCompositeIndexes;
    }

    /**
     * @param utilizedSingleIndexes     -> The utilized single indexes list.
     */
    public void setUtilizedSingleIndexes(List utilizedSingleIndexes) {
        this.utilizedSingleIndexes = utilizedSingleIndexes;
    }

    /**
     * @param potentialSingleIndexes    -> The potential single indexes list.
     */
    public void setPotentialSingleIndexes(List potentialSingleIndexes) {
        this.potentialSingleIndexes = potentialSingleIndexes;
    }

    /**
     * @param utilizedCompositeIndexes  -> The potential composite indexes list.
     */
    public void setUtilizedCompositeIndexes(List utilizedCompositeIndexes) {
        this.utilizedCompositeIndexes = utilizedCompositeIndexes;
    }

    /**
     * @param potentialCompositeIndexes -> The utilized composite indexes list.
     */
    public void setPotentialCompositeIndexes(List potentialCompositeIndexes) {
        this.potentialCompositeIndexes = potentialCompositeIndexes;
    }


    static IndexUtilizationInfo createFromCollection(
        Collection indexUtilizationInfoCollection) {
        if (indexUtilizationInfoCollection == null) {
            return null;
        }

        List utilizedSingleIndexes = new ArrayList<>();
        List potentialSingleIndexes = new ArrayList<>();
        List utilizedCompositeIndexes = new ArrayList<>();
        List potentialCompositeIndexes = new ArrayList<>();


        for (IndexUtilizationInfo indexUtilizationInfo : indexUtilizationInfoCollection) {
            if (indexUtilizationInfo != null) {
                utilizedSingleIndexes.addAll(indexUtilizationInfo.utilizedSingleIndexes);
                potentialSingleIndexes.addAll(indexUtilizationInfo.potentialSingleIndexes);
                utilizedCompositeIndexes.addAll(indexUtilizationInfo.utilizedCompositeIndexes);
                potentialCompositeIndexes.addAll(indexUtilizationInfo.potentialCompositeIndexes);
            }
        }

        return new IndexUtilizationInfo(
            utilizedSingleIndexes,
            potentialSingleIndexes,
            utilizedCompositeIndexes,
            potentialCompositeIndexes);
    }

    static IndexUtilizationInfo createFromJSONString(String jsonString) {
        ObjectMapper indexUtilizationInfoObjectMapper = new ObjectMapper();
        IndexUtilizationInfo indexUtilizationInfo = null;
        try {
            indexUtilizationInfo = indexUtilizationInfoObjectMapper.readValue(jsonString, IndexUtilizationInfo.class);
        } catch (JsonProcessingException e) {
            logger.error("Json not correctly formed ", e);
        }
        return indexUtilizationInfo;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy