commonMain.aws.sdk.kotlin.services.glue.model.HudiTarget.kt Maven / Gradle / Ivy
// Code generated by smithy-kotlin-codegen. DO NOT EDIT!
package aws.sdk.kotlin.services.glue.model
import aws.smithy.kotlin.runtime.SdkDsl
/**
* Specifies an Apache Hudi data source.
*/
public class HudiTarget private constructor(builder: Builder) {
/**
* The name of the connection to use to connect to the Hudi target. If your Hudi files are stored in buckets that require VPC authorization, you can set their connection properties here.
*/
public val connectionName: kotlin.String? = builder.connectionName
/**
* A list of glob patterns used to exclude from the crawl. For more information, see [Catalog Tables with a Crawler](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html).
*/
public val exclusions: List? = builder.exclusions
/**
* The maximum depth of Amazon S3 paths that the crawler can traverse to discover the Hudi metadata folder in your Amazon S3 path. Used to limit the crawler run time.
*/
public val maximumTraversalDepth: kotlin.Int? = builder.maximumTraversalDepth
/**
* An array of Amazon S3 location strings for Hudi, each indicating the root folder with which the metadata files for a Hudi table resides. The Hudi folder may be located in a child folder of the root folder.
*
* The crawler will scan all folders underneath a path for a Hudi folder.
*/
public val paths: List? = builder.paths
public companion object {
public operator fun invoke(block: Builder.() -> kotlin.Unit): aws.sdk.kotlin.services.glue.model.HudiTarget = Builder().apply(block).build()
}
override fun toString(): kotlin.String = buildString {
append("HudiTarget(")
append("connectionName=$connectionName,")
append("exclusions=$exclusions,")
append("maximumTraversalDepth=$maximumTraversalDepth,")
append("paths=$paths")
append(")")
}
override fun hashCode(): kotlin.Int {
var result = connectionName?.hashCode() ?: 0
result = 31 * result + (exclusions?.hashCode() ?: 0)
result = 31 * result + (maximumTraversalDepth ?: 0)
result = 31 * result + (paths?.hashCode() ?: 0)
return result
}
override fun equals(other: kotlin.Any?): kotlin.Boolean {
if (this === other) return true
if (other == null || this::class != other::class) return false
other as HudiTarget
if (connectionName != other.connectionName) return false
if (exclusions != other.exclusions) return false
if (maximumTraversalDepth != other.maximumTraversalDepth) return false
if (paths != other.paths) return false
return true
}
public inline fun copy(block: Builder.() -> kotlin.Unit = {}): aws.sdk.kotlin.services.glue.model.HudiTarget = Builder(this).apply(block).build()
@SdkDsl
public class Builder {
/**
* The name of the connection to use to connect to the Hudi target. If your Hudi files are stored in buckets that require VPC authorization, you can set their connection properties here.
*/
public var connectionName: kotlin.String? = null
/**
* A list of glob patterns used to exclude from the crawl. For more information, see [Catalog Tables with a Crawler](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html).
*/
public var exclusions: List? = null
/**
* The maximum depth of Amazon S3 paths that the crawler can traverse to discover the Hudi metadata folder in your Amazon S3 path. Used to limit the crawler run time.
*/
public var maximumTraversalDepth: kotlin.Int? = null
/**
* An array of Amazon S3 location strings for Hudi, each indicating the root folder with which the metadata files for a Hudi table resides. The Hudi folder may be located in a child folder of the root folder.
*
* The crawler will scan all folders underneath a path for a Hudi folder.
*/
public var paths: List? = null
@PublishedApi
internal constructor()
@PublishedApi
internal constructor(x: aws.sdk.kotlin.services.glue.model.HudiTarget) : this() {
this.connectionName = x.connectionName
this.exclusions = x.exclusions
this.maximumTraversalDepth = x.maximumTraversalDepth
this.paths = x.paths
}
@PublishedApi
internal fun build(): aws.sdk.kotlin.services.glue.model.HudiTarget = HudiTarget(this)
internal fun correctErrors(): Builder {
return this
}
}
}