// *** WARNING: this file was generated by pulumi-java-gen. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

package com.pulumi.aws.quicksight.outputs;

import com.pulumi.aws.quicksight.outputs.GetDataSetColumnGroup;
import com.pulumi.aws.quicksight.outputs.GetDataSetColumnLevelPermissionRule;
import com.pulumi.aws.quicksight.outputs.GetDataSetDataSetUsageConfiguration;
import com.pulumi.aws.quicksight.outputs.GetDataSetFieldFolder;
import com.pulumi.aws.quicksight.outputs.GetDataSetLogicalTableMap;
import com.pulumi.aws.quicksight.outputs.GetDataSetPermission;
import com.pulumi.aws.quicksight.outputs.GetDataSetPhysicalTableMap;
import com.pulumi.aws.quicksight.outputs.GetDataSetRowLevelPermissionDataSet;
import com.pulumi.aws.quicksight.outputs.GetDataSetRowLevelPermissionTagConfiguration;
import com.pulumi.core.annotations.CustomType;
import java.lang.String;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import javax.annotation.Nullable;

@CustomType
public final class GetDataSetResult {
    private String arn;
    private String awsAccountId;
    private List<GetDataSetColumnGroup> columnGroups;
    private @Nullable List<GetDataSetColumnLevelPermissionRule> columnLevelPermissionRules;
    private String dataSetId;
    private List<GetDataSetDataSetUsageConfiguration> dataSetUsageConfigurations;
    private List<GetDataSetFieldFolder> fieldFolders;
    /**
     * @return The provider-assigned unique ID for this managed resource.
     * 
     */
    private String id;
    private String importMode;
    private List<GetDataSetLogicalTableMap> logicalTableMaps;
    private String name;
    private List<GetDataSetPermission> permissions;
    private List<GetDataSetPhysicalTableMap> physicalTableMaps;
    private List<GetDataSetRowLevelPermissionDataSet> rowLevelPermissionDataSets;
    private List<GetDataSetRowLevelPermissionTagConfiguration> rowLevelPermissionTagConfigurations;
    private Map<String,String> tags;
    private Map<String,String> tagsAll;

    private GetDataSetResult() {}
    public String arn() {
        return this.arn;
    }
    public String awsAccountId() {
        return this.awsAccountId;
    }
    public List<GetDataSetColumnGroup> columnGroups() {
        return this.columnGroups;
    }
    public List<GetDataSetColumnLevelPermissionRule> columnLevelPermissionRules() {
        return this.columnLevelPermissionRules == null ? List.of() : this.columnLevelPermissionRules;
    }
    public String dataSetId() {
        return this.dataSetId;
    }
    public List<GetDataSetDataSetUsageConfiguration> dataSetUsageConfigurations() {
        return this.dataSetUsageConfigurations;
    }
    public List<GetDataSetFieldFolder> fieldFolders() {
        return this.fieldFolders;
    }
    /**
     * @return The provider-assigned unique ID for this managed resource.
     * 
     */
    public String id() {
        return this.id;
    }
    public String importMode() {
        return this.importMode;
    }
    public List<GetDataSetLogicalTableMap> logicalTableMaps() {
        return this.logicalTableMaps;
    }
    public String name() {
        return this.name;
    }
    public List<GetDataSetPermission> permissions() {
        return this.permissions;
    }
    public List<GetDataSetPhysicalTableMap> physicalTableMaps() {
        return this.physicalTableMaps;
    }
    public List<GetDataSetRowLevelPermissionDataSet> rowLevelPermissionDataSets() {
        return this.rowLevelPermissionDataSets;
    }
    public List<GetDataSetRowLevelPermissionTagConfiguration> rowLevelPermissionTagConfigurations() {
        return this.rowLevelPermissionTagConfigurations;
    }
    public Map<String,String> tags() {
        return this.tags;
    }
    public Map<String,String> tagsAll() {
        return this.tagsAll;
    }

    public static Builder builder() {
        return new Builder();
    }

    public static Builder builder(GetDataSetResult defaults) {
        return new Builder(defaults);
    }
    @CustomType.Builder
    public static final class Builder {
        private String arn;
        private String awsAccountId;
        private List<GetDataSetColumnGroup> columnGroups;
        private @Nullable List<GetDataSetColumnLevelPermissionRule> columnLevelPermissionRules;
        private String dataSetId;
        private List<GetDataSetDataSetUsageConfiguration> dataSetUsageConfigurations;
        private List<GetDataSetFieldFolder> fieldFolders;
        private String id;
        private String importMode;
        private List<GetDataSetLogicalTableMap> logicalTableMaps;
        private String name;
        private List<GetDataSetPermission> permissions;
        private List<GetDataSetPhysicalTableMap> physicalTableMaps;
        private List<GetDataSetRowLevelPermissionDataSet> rowLevelPermissionDataSets;
        private List<GetDataSetRowLevelPermissionTagConfiguration> rowLevelPermissionTagConfigurations;
        private Map<String,String> tags;
        private Map<String,String> tagsAll;
        public Builder() {}
        public Builder(GetDataSetResult defaults) {
    	      Objects.requireNonNull(defaults);
    	      this.arn = defaults.arn;
    	      this.awsAccountId = defaults.awsAccountId;
    	      this.columnGroups = defaults.columnGroups;
    	      this.columnLevelPermissionRules = defaults.columnLevelPermissionRules;
    	      this.dataSetId = defaults.dataSetId;
    	      this.dataSetUsageConfigurations = defaults.dataSetUsageConfigurations;
    	      this.fieldFolders = defaults.fieldFolders;
    	      this.id = defaults.id;
    	      this.importMode = defaults.importMode;
    	      this.logicalTableMaps = defaults.logicalTableMaps;
    	      this.name = defaults.name;
    	      this.permissions = defaults.permissions;
    	      this.physicalTableMaps = defaults.physicalTableMaps;
    	      this.rowLevelPermissionDataSets = defaults.rowLevelPermissionDataSets;
    	      this.rowLevelPermissionTagConfigurations = defaults.rowLevelPermissionTagConfigurations;
    	      this.tags = defaults.tags;
    	      this.tagsAll = defaults.tagsAll;
        }

        @CustomType.Setter
        public Builder arn(String arn) {
            this.arn = Objects.requireNonNull(arn);
            return this;
        }
        @CustomType.Setter
        public Builder awsAccountId(String awsAccountId) {
            this.awsAccountId = Objects.requireNonNull(awsAccountId);
            return this;
        }
        @CustomType.Setter
        public Builder columnGroups(List<GetDataSetColumnGroup> columnGroups) {
            this.columnGroups = Objects.requireNonNull(columnGroups);
            return this;
        }
        public Builder columnGroups(GetDataSetColumnGroup... columnGroups) {
            return columnGroups(List.of(columnGroups));
        }
        @CustomType.Setter
        public Builder columnLevelPermissionRules(@Nullable List<GetDataSetColumnLevelPermissionRule> columnLevelPermissionRules) {
            this.columnLevelPermissionRules = columnLevelPermissionRules;
            return this;
        }
        public Builder columnLevelPermissionRules(GetDataSetColumnLevelPermissionRule... columnLevelPermissionRules) {
            return columnLevelPermissionRules(List.of(columnLevelPermissionRules));
        }
        @CustomType.Setter
        public Builder dataSetId(String dataSetId) {
            this.dataSetId = Objects.requireNonNull(dataSetId);
            return this;
        }
        @CustomType.Setter
        public Builder dataSetUsageConfigurations(List<GetDataSetDataSetUsageConfiguration> dataSetUsageConfigurations) {
            this.dataSetUsageConfigurations = Objects.requireNonNull(dataSetUsageConfigurations);
            return this;
        }
        public Builder dataSetUsageConfigurations(GetDataSetDataSetUsageConfiguration... dataSetUsageConfigurations) {
            return dataSetUsageConfigurations(List.of(dataSetUsageConfigurations));
        }
        @CustomType.Setter
        public Builder fieldFolders(List<GetDataSetFieldFolder> fieldFolders) {
            this.fieldFolders = Objects.requireNonNull(fieldFolders);
            return this;
        }
        public Builder fieldFolders(GetDataSetFieldFolder... fieldFolders) {
            return fieldFolders(List.of(fieldFolders));
        }
        @CustomType.Setter
        public Builder id(String id) {
            this.id = Objects.requireNonNull(id);
            return this;
        }
        @CustomType.Setter
        public Builder importMode(String importMode) {
            this.importMode = Objects.requireNonNull(importMode);
            return this;
        }
        @CustomType.Setter
        public Builder logicalTableMaps(List<GetDataSetLogicalTableMap> logicalTableMaps) {
            this.logicalTableMaps = Objects.requireNonNull(logicalTableMaps);
            return this;
        }
        public Builder logicalTableMaps(GetDataSetLogicalTableMap... logicalTableMaps) {
            return logicalTableMaps(List.of(logicalTableMaps));
        }
        @CustomType.Setter
        public Builder name(String name) {
            this.name = Objects.requireNonNull(name);
            return this;
        }
        @CustomType.Setter
        public Builder permissions(List<GetDataSetPermission> permissions) {
            this.permissions = Objects.requireNonNull(permissions);
            return this;
        }
        public Builder permissions(GetDataSetPermission... permissions) {
            return permissions(List.of(permissions));
        }
        @CustomType.Setter
        public Builder physicalTableMaps(List<GetDataSetPhysicalTableMap> physicalTableMaps) {
            this.physicalTableMaps = Objects.requireNonNull(physicalTableMaps);
            return this;
        }
        public Builder physicalTableMaps(GetDataSetPhysicalTableMap... physicalTableMaps) {
            return physicalTableMaps(List.of(physicalTableMaps));
        }
        @CustomType.Setter
        public Builder rowLevelPermissionDataSets(List<GetDataSetRowLevelPermissionDataSet> rowLevelPermissionDataSets) {
            this.rowLevelPermissionDataSets = Objects.requireNonNull(rowLevelPermissionDataSets);
            return this;
        }
        public Builder rowLevelPermissionDataSets(GetDataSetRowLevelPermissionDataSet... rowLevelPermissionDataSets) {
            return rowLevelPermissionDataSets(List.of(rowLevelPermissionDataSets));
        }
        @CustomType.Setter
        public Builder rowLevelPermissionTagConfigurations(List<GetDataSetRowLevelPermissionTagConfiguration> rowLevelPermissionTagConfigurations) {
            this.rowLevelPermissionTagConfigurations = Objects.requireNonNull(rowLevelPermissionTagConfigurations);
            return this;
        }
        public Builder rowLevelPermissionTagConfigurations(GetDataSetRowLevelPermissionTagConfiguration... rowLevelPermissionTagConfigurations) {
            return rowLevelPermissionTagConfigurations(List.of(rowLevelPermissionTagConfigurations));
        }
        @CustomType.Setter
        public Builder tags(Map<String,String> tags) {
            this.tags = Objects.requireNonNull(tags);
            return this;
        }
        @CustomType.Setter
        public Builder tagsAll(Map<String,String> tagsAll) {
            this.tagsAll = Objects.requireNonNull(tagsAll);
            return this;
        }
        public GetDataSetResult build() {
            final var o = new GetDataSetResult();
            o.arn = arn;
            o.awsAccountId = awsAccountId;
            o.columnGroups = columnGroups;
            o.columnLevelPermissionRules = columnLevelPermissionRules;
            o.dataSetId = dataSetId;
            o.dataSetUsageConfigurations = dataSetUsageConfigurations;
            o.fieldFolders = fieldFolders;
            o.id = id;
            o.importMode = importMode;
            o.logicalTableMaps = logicalTableMaps;
            o.name = name;
            o.permissions = permissions;
            o.physicalTableMaps = physicalTableMaps;
            o.rowLevelPermissionDataSets = rowLevelPermissionDataSets;
            o.rowLevelPermissionTagConfigurations = rowLevelPermissionTagConfigurations;
            o.tags = tags;
            o.tagsAll = tagsAll;
            return o;
        }
    }
}
