com.azure.cosmos.implementation.IndexUtilizationInfo Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of azure-cosmos Show documentation
Show all versions of azure-cosmos Show documentation
This Package contains Microsoft Azure Cosmos SDK (with Reactive Extension Reactor support) for Azure Cosmos DB SQL API
// 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;
}
}