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

package com.azure.resourcemanager.advisor.models;

import com.azure.core.annotation.Fluent;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.Map;

/** Recommendation resource metadata. */
@Fluent
public final class ResourceMetadata {
    /*
     * Azure resource Id of the assessed resource
     */
    @JsonProperty(value = "resourceId")
    private String resourceId;

    /*
     * Source from which recommendation is generated
     */
    @JsonProperty(value = "source")
    private String source;

    /*
     * The action to view resource.
     */
    @JsonProperty(value = "action")
    @JsonInclude(value = JsonInclude.Include.NON_NULL, content = JsonInclude.Include.ALWAYS)
    private Map<String, Object> action;

    /*
     * The singular user friendly name of resource type. eg: virtual machine
     */
    @JsonProperty(value = "singular")
    private String singular;

    /*
     * The plural user friendly name of resource type. eg: virtual machines
     */
    @JsonProperty(value = "plural")
    private String plural;

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

    /**
     * Get the resourceId property: Azure resource Id of the assessed resource.
     *
     * @return the resourceId value.
     */
    public String resourceId() {
        return this.resourceId;
    }

    /**
     * Set the resourceId property: Azure resource Id of the assessed resource.
     *
     * @param resourceId the resourceId value to set.
     * @return the ResourceMetadata object itself.
     */
    public ResourceMetadata withResourceId(String resourceId) {
        this.resourceId = resourceId;
        return this;
    }

    /**
     * Get the source property: Source from which recommendation is generated.
     *
     * @return the source value.
     */
    public String source() {
        return this.source;
    }

    /**
     * Set the source property: Source from which recommendation is generated.
     *
     * @param source the source value to set.
     * @return the ResourceMetadata object itself.
     */
    public ResourceMetadata withSource(String source) {
        this.source = source;
        return this;
    }

    /**
     * Get the action property: The action to view resource.
     *
     * @return the action value.
     */
    public Map<String, Object> action() {
        return this.action;
    }

    /**
     * Set the action property: The action to view resource.
     *
     * @param action the action value to set.
     * @return the ResourceMetadata object itself.
     */
    public ResourceMetadata withAction(Map<String, Object> action) {
        this.action = action;
        return this;
    }

    /**
     * Get the singular property: The singular user friendly name of resource type. eg: virtual machine.
     *
     * @return the singular value.
     */
    public String singular() {
        return this.singular;
    }

    /**
     * Set the singular property: The singular user friendly name of resource type. eg: virtual machine.
     *
     * @param singular the singular value to set.
     * @return the ResourceMetadata object itself.
     */
    public ResourceMetadata withSingular(String singular) {
        this.singular = singular;
        return this;
    }

    /**
     * Get the plural property: The plural user friendly name of resource type. eg: virtual machines.
     *
     * @return the plural value.
     */
    public String plural() {
        return this.plural;
    }

    /**
     * Set the plural property: The plural user friendly name of resource type. eg: virtual machines.
     *
     * @param plural the plural value to set.
     * @return the ResourceMetadata object itself.
     */
    public ResourceMetadata withPlural(String plural) {
        this.plural = plural;
        return this;
    }

    /**
     * Validates the instance.
     *
     * @throws IllegalArgumentException thrown if the instance is not valid.
     */
    public void validate() {
    }
}
