// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// Code generated by Microsoft (R) AutoRest Code Generator.

package com.azure.ai.metricsadvisor.implementation.models;

import com.azure.core.annotation.Fluent;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeName;
import java.time.OffsetDateTime;
import java.util.List;

/** The InfluxDBDataFeed model. */
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "dataSourceType")
@JsonTypeName("InfluxDB")
@Fluent
public final class InfluxDBDataFeed extends DataFeedDetail {
    /*
     * The dataSourceParameter property.
     */
    @JsonProperty(value = "dataSourceParameter", required = true)
    private InfluxDBParameter dataSourceParameter;

    /** Creates an instance of InfluxDBDataFeed class. */
    public InfluxDBDataFeed() {}

    /**
     * Get the dataSourceParameter property: The dataSourceParameter property.
     *
     * @return the dataSourceParameter value.
     */
    public InfluxDBParameter getDataSourceParameter() {
        return this.dataSourceParameter;
    }

    /**
     * Set the dataSourceParameter property: The dataSourceParameter property.
     *
     * @param dataSourceParameter the dataSourceParameter value to set.
     * @return the InfluxDBDataFeed object itself.
     */
    public InfluxDBDataFeed setDataSourceParameter(InfluxDBParameter dataSourceParameter) {
        this.dataSourceParameter = dataSourceParameter;
        return this;
    }

    /** {@inheritDoc} */
    @Override
    public InfluxDBDataFeed setDataFeedName(String dataFeedName) {
        super.setDataFeedName(dataFeedName);
        return this;
    }

    /** {@inheritDoc} */
    @Override
    public InfluxDBDataFeed setDataFeedDescription(String dataFeedDescription) {
        super.setDataFeedDescription(dataFeedDescription);
        return this;
    }

    /** {@inheritDoc} */
    @Override
    public InfluxDBDataFeed setGranularityName(Granularity granularityName) {
        super.setGranularityName(granularityName);
        return this;
    }

    /** {@inheritDoc} */
    @Override
    public InfluxDBDataFeed setGranularityAmount(Integer granularityAmount) {
        super.setGranularityAmount(granularityAmount);
        return this;
    }

    /** {@inheritDoc} */
    @Override
    public InfluxDBDataFeed setMetrics(List<DataFeedMetric> metrics) {
        super.setMetrics(metrics);
        return this;
    }

    /** {@inheritDoc} */
    @Override
    public InfluxDBDataFeed setDimension(List<DataFeedDimension> dimension) {
        super.setDimension(dimension);
        return this;
    }

    /** {@inheritDoc} */
    @Override
    public InfluxDBDataFeed setTimestampColumn(String timestampColumn) {
        super.setTimestampColumn(timestampColumn);
        return this;
    }

    /** {@inheritDoc} */
    @Override
    public InfluxDBDataFeed setDataStartFrom(OffsetDateTime dataStartFrom) {
        super.setDataStartFrom(dataStartFrom);
        return this;
    }

    /** {@inheritDoc} */
    @Override
    public InfluxDBDataFeed setStartOffsetInSeconds(Long startOffsetInSeconds) {
        super.setStartOffsetInSeconds(startOffsetInSeconds);
        return this;
    }

    /** {@inheritDoc} */
    @Override
    public InfluxDBDataFeed setMaxConcurrency(Integer maxConcurrency) {
        super.setMaxConcurrency(maxConcurrency);
        return this;
    }

    /** {@inheritDoc} */
    @Override
    public InfluxDBDataFeed setMinRetryIntervalInSeconds(Long minRetryIntervalInSeconds) {
        super.setMinRetryIntervalInSeconds(minRetryIntervalInSeconds);
        return this;
    }

    /** {@inheritDoc} */
    @Override
    public InfluxDBDataFeed setStopRetryAfterInSeconds(Long stopRetryAfterInSeconds) {
        super.setStopRetryAfterInSeconds(stopRetryAfterInSeconds);
        return this;
    }

    /** {@inheritDoc} */
    @Override
    public InfluxDBDataFeed setNeedRollup(NeedRollupEnum needRollup) {
        super.setNeedRollup(needRollup);
        return this;
    }

    /** {@inheritDoc} */
    @Override
    public InfluxDBDataFeed setRollUpMethod(RollUpMethod rollUpMethod) {
        super.setRollUpMethod(rollUpMethod);
        return this;
    }

    /** {@inheritDoc} */
    @Override
    public InfluxDBDataFeed setRollUpColumns(List<String> rollUpColumns) {
        super.setRollUpColumns(rollUpColumns);
        return this;
    }

    /** {@inheritDoc} */
    @Override
    public InfluxDBDataFeed setAllUpIdentification(String allUpIdentification) {
        super.setAllUpIdentification(allUpIdentification);
        return this;
    }

    /** {@inheritDoc} */
    @Override
    public InfluxDBDataFeed setFillMissingPointType(FillMissingPointType fillMissingPointType) {
        super.setFillMissingPointType(fillMissingPointType);
        return this;
    }

    /** {@inheritDoc} */
    @Override
    public InfluxDBDataFeed setFillMissingPointValue(Double fillMissingPointValue) {
        super.setFillMissingPointValue(fillMissingPointValue);
        return this;
    }

    /** {@inheritDoc} */
    @Override
    public InfluxDBDataFeed setViewMode(ViewMode viewMode) {
        super.setViewMode(viewMode);
        return this;
    }

    /** {@inheritDoc} */
    @Override
    public InfluxDBDataFeed setAdmins(List<String> admins) {
        super.setAdmins(admins);
        return this;
    }

    /** {@inheritDoc} */
    @Override
    public InfluxDBDataFeed setViewers(List<String> viewers) {
        super.setViewers(viewers);
        return this;
    }

    /** {@inheritDoc} */
    @Override
    public InfluxDBDataFeed setActionLinkTemplate(String actionLinkTemplate) {
        super.setActionLinkTemplate(actionLinkTemplate);
        return this;
    }

    /** {@inheritDoc} */
    @Override
    public InfluxDBDataFeed setAuthenticationType(AuthenticationTypeEnum authenticationType) {
        super.setAuthenticationType(authenticationType);
        return this;
    }

    /** {@inheritDoc} */
    @Override
    public InfluxDBDataFeed setCredentialId(String credentialId) {
        super.setCredentialId(credentialId);
        return this;
    }
}
