/*
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License
 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied. See the License for the specific language governing permissions and limitations under
 * the License.
 */
/*
 * This code was generated by https://github.com/googleapis/google-api-java-client-services/
 * Modify at your own risk.
 */

package com.google.api.services.migrationcenter.v1.model;

/**
 * Aggregate statistics for a collection of assets.
 *
 * <p> This is the Java data model class that specifies how to parse/serialize into the JSON that is
 * transmitted over HTTP when working with the Migration Center API. For a detailed explanation see:
 * <a href="https://developers.google.com/api-client-library/java/google-http-java-client/json">https://developers.google.com/api-client-library/java/google-http-java-client/json</a>
 * </p>
 *
 * @author Google, Inc.
 */
@SuppressWarnings("javadoc")
public final class ReportSummaryAssetAggregateStats extends com.google.api.client.json.GenericJson {

  /**
   * Histogram showing a distribution of CPU core counts.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private ReportSummaryHistogramChartData coreCountHistogram;

  /**
   * Histogram showing a distribution of memory sizes.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private ReportSummaryHistogramChartData memoryBytesHistogram;

  /**
   * Total memory split into Used/Free buckets.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private ReportSummaryUtilizationChartData memoryUtilizationChart;

  /**
   * Count of assets grouped by Operating System families.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private ReportSummaryChartData operatingSystem;

  /**
   * Histogram showing a distribution of memory sizes.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private ReportSummaryHistogramChartData storageBytesHistogram;

  /**
   * Total memory split into Used/Free buckets.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private ReportSummaryUtilizationChartData storageUtilizationChart;

  /**
   * Count of the number of unique assets in this collection.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key @com.google.api.client.json.JsonString
  private java.lang.Long totalAssets;

  /**
   * Sum of the CPU core count of all the assets in this collection.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key @com.google.api.client.json.JsonString
  private java.lang.Long totalCores;

  /**
   * Sum of the memory in bytes of all the assets in this collection.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key @com.google.api.client.json.JsonString
  private java.lang.Long totalMemoryBytes;

  /**
   * Sum of persistent storage in bytes of all the assets in this collection.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key @com.google.api.client.json.JsonString
  private java.lang.Long totalStorageBytes;

  /**
   * Histogram showing a distribution of CPU core counts.
   * @return value or {@code null} for none
   */
  public ReportSummaryHistogramChartData getCoreCountHistogram() {
    return coreCountHistogram;
  }

  /**
   * Histogram showing a distribution of CPU core counts.
   * @param coreCountHistogram coreCountHistogram or {@code null} for none
   */
  public ReportSummaryAssetAggregateStats setCoreCountHistogram(ReportSummaryHistogramChartData coreCountHistogram) {
    this.coreCountHistogram = coreCountHistogram;
    return this;
  }

  /**
   * Histogram showing a distribution of memory sizes.
   * @return value or {@code null} for none
   */
  public ReportSummaryHistogramChartData getMemoryBytesHistogram() {
    return memoryBytesHistogram;
  }

  /**
   * Histogram showing a distribution of memory sizes.
   * @param memoryBytesHistogram memoryBytesHistogram or {@code null} for none
   */
  public ReportSummaryAssetAggregateStats setMemoryBytesHistogram(ReportSummaryHistogramChartData memoryBytesHistogram) {
    this.memoryBytesHistogram = memoryBytesHistogram;
    return this;
  }

  /**
   * Total memory split into Used/Free buckets.
   * @return value or {@code null} for none
   */
  public ReportSummaryUtilizationChartData getMemoryUtilizationChart() {
    return memoryUtilizationChart;
  }

  /**
   * Total memory split into Used/Free buckets.
   * @param memoryUtilizationChart memoryUtilizationChart or {@code null} for none
   */
  public ReportSummaryAssetAggregateStats setMemoryUtilizationChart(ReportSummaryUtilizationChartData memoryUtilizationChart) {
    this.memoryUtilizationChart = memoryUtilizationChart;
    return this;
  }

  /**
   * Count of assets grouped by Operating System families.
   * @return value or {@code null} for none
   */
  public ReportSummaryChartData getOperatingSystem() {
    return operatingSystem;
  }

  /**
   * Count of assets grouped by Operating System families.
   * @param operatingSystem operatingSystem or {@code null} for none
   */
  public ReportSummaryAssetAggregateStats setOperatingSystem(ReportSummaryChartData operatingSystem) {
    this.operatingSystem = operatingSystem;
    return this;
  }

  /**
   * Histogram showing a distribution of memory sizes.
   * @return value or {@code null} for none
   */
  public ReportSummaryHistogramChartData getStorageBytesHistogram() {
    return storageBytesHistogram;
  }

  /**
   * Histogram showing a distribution of memory sizes.
   * @param storageBytesHistogram storageBytesHistogram or {@code null} for none
   */
  public ReportSummaryAssetAggregateStats setStorageBytesHistogram(ReportSummaryHistogramChartData storageBytesHistogram) {
    this.storageBytesHistogram = storageBytesHistogram;
    return this;
  }

  /**
   * Total memory split into Used/Free buckets.
   * @return value or {@code null} for none
   */
  public ReportSummaryUtilizationChartData getStorageUtilizationChart() {
    return storageUtilizationChart;
  }

  /**
   * Total memory split into Used/Free buckets.
   * @param storageUtilizationChart storageUtilizationChart or {@code null} for none
   */
  public ReportSummaryAssetAggregateStats setStorageUtilizationChart(ReportSummaryUtilizationChartData storageUtilizationChart) {
    this.storageUtilizationChart = storageUtilizationChart;
    return this;
  }

  /**
   * Count of the number of unique assets in this collection.
   * @return value or {@code null} for none
   */
  public java.lang.Long getTotalAssets() {
    return totalAssets;
  }

  /**
   * Count of the number of unique assets in this collection.
   * @param totalAssets totalAssets or {@code null} for none
   */
  public ReportSummaryAssetAggregateStats setTotalAssets(java.lang.Long totalAssets) {
    this.totalAssets = totalAssets;
    return this;
  }

  /**
   * Sum of the CPU core count of all the assets in this collection.
   * @return value or {@code null} for none
   */
  public java.lang.Long getTotalCores() {
    return totalCores;
  }

  /**
   * Sum of the CPU core count of all the assets in this collection.
   * @param totalCores totalCores or {@code null} for none
   */
  public ReportSummaryAssetAggregateStats setTotalCores(java.lang.Long totalCores) {
    this.totalCores = totalCores;
    return this;
  }

  /**
   * Sum of the memory in bytes of all the assets in this collection.
   * @return value or {@code null} for none
   */
  public java.lang.Long getTotalMemoryBytes() {
    return totalMemoryBytes;
  }

  /**
   * Sum of the memory in bytes of all the assets in this collection.
   * @param totalMemoryBytes totalMemoryBytes or {@code null} for none
   */
  public ReportSummaryAssetAggregateStats setTotalMemoryBytes(java.lang.Long totalMemoryBytes) {
    this.totalMemoryBytes = totalMemoryBytes;
    return this;
  }

  /**
   * Sum of persistent storage in bytes of all the assets in this collection.
   * @return value or {@code null} for none
   */
  public java.lang.Long getTotalStorageBytes() {
    return totalStorageBytes;
  }

  /**
   * Sum of persistent storage in bytes of all the assets in this collection.
   * @param totalStorageBytes totalStorageBytes or {@code null} for none
   */
  public ReportSummaryAssetAggregateStats setTotalStorageBytes(java.lang.Long totalStorageBytes) {
    this.totalStorageBytes = totalStorageBytes;
    return this;
  }

  @Override
  public ReportSummaryAssetAggregateStats set(String fieldName, Object value) {
    return (ReportSummaryAssetAggregateStats) super.set(fieldName, value);
  }

  @Override
  public ReportSummaryAssetAggregateStats clone() {
    return (ReportSummaryAssetAggregateStats) super.clone();
  }

}
