// Code generated by mdatagen. DO NOT EDIT.

package metadata

import (
	"go.opentelemetry.io/collector/pdata/pcommon"
)

// ResourceBuilder is a helper struct to build resources predefined in metadata.yaml.
// The ResourceBuilder is not thread-safe and must not to be used in multiple goroutines.
type ResourceBuilder struct {
	config ResourceAttributesConfig
	res    pcommon.Resource
}

// NewResourceBuilder creates a new ResourceBuilder. This method should be called on the start of the application.
func NewResourceBuilder(rac ResourceAttributesConfig) *ResourceBuilder {
	return &ResourceBuilder{
		config: rac,
		res:    pcommon.NewResource(),
	}
}

// SetClusterID sets provided value as "cluster_id" attribute.
func (rb *ResourceBuilder) SetClusterID(val string) {
	if rb.config.ClusterID.Enabled {
		rb.res.Attributes().PutStr("cluster_id", val)
	}
}

// SetClusterName sets provided value as "cluster_name" attribute.
func (rb *ResourceBuilder) SetClusterName(val string) {
	if rb.config.ClusterName.Enabled {
		rb.res.Attributes().PutStr("cluster_name", val)
	}
}

// SetProjectID sets provided value as "project_id" attribute.
func (rb *ResourceBuilder) SetProjectID(val string) {
	if rb.config.ProjectID.Enabled {
		rb.res.Attributes().PutStr("project_id", val)
	}
}

// SetProjectName sets provided value as "project_name" attribute.
func (rb *ResourceBuilder) SetProjectName(val string) {
	if rb.config.ProjectName.Enabled {
		rb.res.Attributes().PutStr("project_name", val)
	}
}

// SetServicePlan sets provided value as "service_plan" attribute.
func (rb *ResourceBuilder) SetServicePlan(val string) {
	if rb.config.ServicePlan.Enabled {
		rb.res.Attributes().PutStr("service_plan", val)
	}
}

// Emit returns the built resource and resets the internal builder state.
func (rb *ResourceBuilder) Emit() pcommon.Resource {
	r := rb.res
	rb.res = pcommon.NewResource()
	return r
}
