Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
// Generated by delombok at Thu Oct 10 18:56:32 UTC 2024
/* SPDX-License-Identifier: Apache-2.0
Copyright 2022 Atlan Pte. Ltd. */
package com.atlan.model.assets;
import com.atlan.Atlan;
import com.atlan.AtlanClient;
import com.atlan.exception.ApiException;
import com.atlan.exception.AtlanException;
import com.atlan.exception.ErrorCode;
import com.atlan.exception.InvalidRequestException;
import com.atlan.exception.NotFoundException;
import com.atlan.model.core.AssetDeletionResponse;
import com.atlan.model.core.AssetMutationResponse;
import com.atlan.model.core.AssetResponse;
import com.atlan.model.core.AtlanTag;
import com.atlan.model.core.CustomMetadataAttributes;
import com.atlan.model.enums.AtlanAnnouncementType;
import com.atlan.model.enums.AtlanConnectorType;
import com.atlan.model.enums.AtlanDeleteType;
import com.atlan.model.enums.AtlanIcon;
import com.atlan.model.enums.AtlanStatus;
import com.atlan.model.enums.CertificateStatus;
import com.atlan.model.enums.SourceCostUnitType;
import com.atlan.model.lineage.FluentLineage;
import com.atlan.model.relations.Reference;
import com.atlan.model.structs.PopularityInsights;
import com.atlan.model.structs.StarredDetails;
import com.atlan.net.HttpClient;
import com.atlan.serde.AssetDeserializer;
import com.atlan.serde.AssetSerializer;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;
import java.util.UUID;
import javax.annotation.processing.Generated;
import lombok.*;
/**
* Base class for all assets.
*/
@Generated("com.atlan.generators.ModelGeneratorV2")
@JsonSerialize(using = AssetSerializer.class)
@JsonDeserialize(using = AssetDeserializer.class)
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXISTING_PROPERTY, property = "typeName", defaultImpl = IndistinctAsset.class)
@SuppressWarnings("cast")
public abstract class Asset extends Reference implements IAsset, IReferenceable {
@java.lang.SuppressWarnings("all")
@lombok.Generated
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(Asset.class);
private static final long serialVersionUID = 2L;
/**
* List of groups who administer this asset. (This is only used for certain asset types.)
*/
@Attribute
SortedSet adminGroups;
/**
* List of roles who administer this asset. (This is only used for Connection assets.)
*/
@Attribute
SortedSet adminRoles;
/**
* List of users who administer this asset. (This is only used for certain asset types.)
*/
@Attribute
SortedSet adminUsers;
/**
* Detailed message to include in the announcement on this asset.
*/
@Attribute
String announcementMessage;
/**
* Brief title for the announcement on this asset. Required when announcementType is specified.
*/
@Attribute
String announcementTitle;
/**
* Type of announcement on this asset.
*/
@Attribute
AtlanAnnouncementType announcementType;
/**
* Time (epoch) at which the announcement was last updated, in milliseconds.
*/
@Attribute
@Date
Long announcementUpdatedAt;
/**
* Name of the user who last updated the announcement.
*/
@Attribute
String announcementUpdatedBy;
/**
* Checks that run on this asset.
*/
@Attribute
SortedSet anomaloChecks;
/**
* All associated Anomalo check types.
*/
@Attribute
SortedSet assetAnomaloAppliedCheckTypes;
/**
* Total number of checks present in Anomalo for this asset.
*/
@Attribute
Long assetAnomaloCheckCount;
/**
* Stringified JSON object containing status of all Anomalo checks associated to this asset.
*/
@Attribute
String assetAnomaloCheckStatuses;
/**
* Status of data quality from Anomalo.
*/
@Attribute
String assetAnomaloDQStatus;
/**
* Total number of checks failed in Anomalo for this asset.
*/
@Attribute
Long assetAnomaloFailedCheckCount;
/**
* All associated Anomalo failed check types.
*/
@Attribute
SortedSet assetAnomaloFailedCheckTypes;
/**
* Time (epoch) at which the last check was run via Anomalo.
*/
@Attribute
@Date
Long assetAnomaloLastCheckRunAt;
/**
* URL of the source in Anomalo.
*/
@Attribute
String assetAnomaloSourceUrl;
/**
* TBC
*/
@Attribute
String assetCoverImage;
/**
* Name of the account in which this asset exists in dbt.
*/
@Attribute
String assetDbtAccountName;
/**
* Alias of this asset in dbt.
*/
@Attribute
String assetDbtAlias;
/**
* Version of the environment in which this asset is materialized in dbt.
*/
@Attribute
String assetDbtEnvironmentDbtVersion;
/**
* Name of the environment in which this asset is materialized in dbt.
*/
@Attribute
String assetDbtEnvironmentName;
/**
* Time (epoch) at which the job that materialized this asset in dbt last ran, in milliseconds.
*/
@Attribute
@Date
Long assetDbtJobLastRun;
/**
* Path in S3 to the artifacts saved from the last run of the job that materialized this asset in dbt.
*/
@Attribute
String assetDbtJobLastRunArtifactS3Path;
/**
* Whether artifacts were saved from the last run of the job that materialized this asset in dbt (true) or not (false).
*/
@Attribute
Boolean assetDbtJobLastRunArtifactsSaved;
/**
* Time (epoch) at which the job that materialized this asset in dbt was last created, in milliseconds.
*/
@Attribute
@Date
Long assetDbtJobLastRunCreatedAt;
/**
* Time (epoch) at which the job that materialized this asset in dbt was dequeued, in milliseconds.
*/
@Attribute
@Date
Long assetDbtJobLastRunDequedAt;
/**
* Thread ID of the user who executed the last run of the job that materialized this asset in dbt.
*/
@Attribute
String assetDbtJobLastRunExecutedByThreadId;
/**
* Branch in git from which the last run of the job that materialized this asset in dbt ran.
*/
@Attribute
String assetDbtJobLastRunGitBranch;
/**
* SHA hash in git for the last run of the job that materialized this asset in dbt.
*/
@Attribute
String assetDbtJobLastRunGitSha;
/**
* Whether docs were generated from the last run of the job that materialized this asset in dbt (true) or not (false).
*/
@Attribute
Boolean assetDbtJobLastRunHasDocsGenerated;
/**
* Whether sources were generated from the last run of the job that materialized this asset in dbt (true) or not (false).
*/
@Attribute
Boolean assetDbtJobLastRunHasSourcesGenerated;
/**
* Whether notifications were sent from the last run of the job that materialized this asset in dbt (true) or not (false).
*/
@Attribute
Boolean assetDbtJobLastRunNotificationsSent;
/**
* Thread ID of the owner of the last run of the job that materialized this asset in dbt.
*/
@Attribute
String assetDbtJobLastRunOwnerThreadId;
/**
* Total duration the job that materialized this asset in dbt spent being queued.
*/
@Attribute
String assetDbtJobLastRunQueuedDuration;
/**
* Human-readable total duration of the last run of the job that materialized this asset in dbt spend being queued.
*/
@Attribute
String assetDbtJobLastRunQueuedDurationHumanized;
/**
* Run duration of the last run of the job that materialized this asset in dbt.
*/
@Attribute
String assetDbtJobLastRunRunDuration;
/**
* Human-readable run duration of the last run of the job that materialized this asset in dbt.
*/
@Attribute
String assetDbtJobLastRunRunDurationHumanized;
/**
* Time (epoch) at which the job that materialized this asset in dbt was started running, in milliseconds.
*/
@Attribute
@Date
Long assetDbtJobLastRunStartedAt;
/**
* Status message of the last run of the job that materialized this asset in dbt.
*/
@Attribute
String assetDbtJobLastRunStatusMessage;
/**
* Total duration of the last run of the job that materialized this asset in dbt.
*/
@Attribute
String assetDbtJobLastRunTotalDuration;
/**
* Human-readable total duration of the last run of the job that materialized this asset in dbt.
*/
@Attribute
String assetDbtJobLastRunTotalDurationHumanized;
/**
* Time (epoch) at which the job that materialized this asset in dbt was last updated, in milliseconds.
*/
@Attribute
@Date
Long assetDbtJobLastRunUpdatedAt;
/**
* URL of the last run of the job that materialized this asset in dbt.
*/
@Attribute
String assetDbtJobLastRunUrl;
/**
* Name of the job that materialized this asset in dbt.
*/
@Attribute
String assetDbtJobName;
/**
* Time (epoch) when the next run of the job that materializes this asset in dbt is scheduled.
*/
@Attribute
@Date
Long assetDbtJobNextRun;
/**
* Human-readable time when the next run of the job that materializes this asset in dbt is scheduled.
*/
@Attribute
String assetDbtJobNextRunHumanized;
/**
* Schedule of the job that materialized this asset in dbt.
*/
@Attribute
String assetDbtJobSchedule;
/**
* Human-readable cron schedule of the job that materialized this asset in dbt.
*/
@Attribute
String assetDbtJobScheduleCronHumanized;
/**
* Status of the job that materialized this asset in dbt.
*/
@Attribute
String assetDbtJobStatus;
/**
* Metadata for this asset in dbt, specifically everything under the 'meta' key in the dbt object.
*/
@Attribute
String assetDbtMeta;
/**
* Name of the package in which this asset exists in dbt.
*/
@Attribute
String assetDbtPackageName;
/**
* Name of the project in which this asset exists in dbt.
*/
@Attribute
String assetDbtProjectName;
/**
* URL of the semantic layer proxy for this asset in dbt.
*/
@Attribute
String assetDbtSemanticLayerProxyUrl;
/**
* Freshness criteria for the source of this asset in dbt.
*/
@Attribute
String assetDbtSourceFreshnessCriteria;
/**
* List of tags attached to this asset in dbt.
*/
@Attribute
SortedSet assetDbtTags;
/**
* All associated dbt test statuses.
*/
@Attribute
String assetDbtTestStatus;
/**
* Unique identifier of this asset in dbt.
*/
@Attribute
String assetDbtUniqueId;
/**
* Name of the DBT workflow in Atlan that last updated the asset.
*/
@Attribute
String assetDbtWorkflowLastUpdated;
/**
* Name of the icon to use for this asset. (Only applies to glossaries, currently.)
*/
@Attribute
AtlanIcon assetIcon;
/**
* List of unique Monte Carlo alert names attached to this asset.
*/
@Attribute
SortedSet assetMcAlertQualifiedNames;
/**
* List of Monte Carlo incident names attached to this asset.
*/
@Attribute
SortedSet assetMcIncidentNames;
/**
* List of Monte Carlo incident priorities associated with this asset.
*/
@Attribute
SortedSet assetMcIncidentPriorities;
/**
* List of unique Monte Carlo incident names attached to this asset.
*/
@Attribute
SortedSet assetMcIncidentQualifiedNames;
/**
* List of Monte Carlo incident severities associated with this asset.
*/
@Attribute
SortedSet assetMcIncidentSeverities;
/**
* List of Monte Carlo incident states associated with this asset.
*/
@Attribute
SortedSet assetMcIncidentStates;
/**
* List of Monte Carlo incident sub-types associated with this asset.
*/
@Attribute
SortedSet assetMcIncidentSubTypes;
/**
* List of Monte Carlo incident types associated with this asset.
*/
@Attribute
SortedSet assetMcIncidentTypes;
/**
* Time (epoch) at which this asset was last synced from Monte Carlo.
*/
@Attribute
@Date
Long assetMcLastSyncRunAt;
/**
* List of Monte Carlo monitor names attached to this asset.
*/
@Attribute
SortedSet assetMcMonitorNames;
/**
* List of unique Monte Carlo monitor names attached to this asset.
*/
@Attribute
SortedSet assetMcMonitorQualifiedNames;
/**
* Schedules of all associated Monte Carlo monitors.
*/
@Attribute
SortedSet assetMcMonitorScheduleTypes;
/**
* Statuses of all associated Monte Carlo monitors.
*/
@Attribute
SortedSet assetMcMonitorStatuses;
/**
* Types of all associated Monte Carlo monitors.
*/
@Attribute
SortedSet assetMcMonitorTypes;
/**
* Count of policies inside the asset
*/
@Attribute
Long assetPoliciesCount;
/**
* Array of policy ids governing this asset
*/
@Attribute
SortedSet assetPolicyGUIDs;
/**
* Number of checks done via Soda.
*/
@Attribute
Long assetSodaCheckCount;
/**
* All associated Soda check statuses.
*/
@Attribute
String assetSodaCheckStatuses;
/**
* Status of data quality from Soda.
*/
@Attribute
String assetSodaDQStatus;
/**
* TBC
*/
@Attribute
@Date
Long assetSodaLastScanAt;
/**
* TBC
*/
@Attribute
@Date
Long assetSodaLastSyncRunAt;
/**
* TBC
*/
@Attribute
String assetSodaSourceURL;
/**
* List of tags attached to this asset.
*/
@Attribute
SortedSet assetTags;
/**
* Color (in hexadecimal RGB) to use to represent this asset.
*/
@Attribute
String assetThemeHex;
/**
* Glossary terms that are linked to this asset.
*/
@Attribute
@JsonProperty("meanings")
SortedSet assignedTerms;
/**
* Status of this asset's certification.
*/
@Attribute
CertificateStatus certificateStatus;
/**
* Human-readable descriptive message used to provide further detail to certificateStatus.
*/
@Attribute
String certificateStatusMessage;
/**
* Time (epoch) at which the certification was last updated, in milliseconds.
*/
@Attribute
@Date
Long certificateUpdatedAt;
/**
* Name of the user who last updated the certification of this asset.
*/
@Attribute
String certificateUpdatedBy;
/**
* Simple name of the connection through which this asset is accessible.
*/
@Attribute
String connectionName;
/**
* Unique name of the connection through which this asset is accessible.
*/
@Attribute
String connectionQualifiedName;
/**
* Type of the connector through which this asset is accessible.
*/
@Attribute
@JsonProperty("connectorName")
AtlanConnectorType connectorType;
/**
* Latest version of the data contract (in any status) for this asset.
*/
@Attribute
IDataContract dataContractLatest;
/**
* Latest certified version of the data contract for this asset.
*/
@Attribute
IDataContract dataContractLatestCertified;
/**
* Unique name of this asset in dbt.
*/
@Attribute
String dbtQualifiedName;
/**
* Description of this asset, for example as crawled from a source. Fallback for display purposes, if userDescription is empty.
*/
@Attribute
String description;
/**
* Human-readable name of this asset used for display purposes (in user interface).
*/
@Attribute
String displayName;
/**
* Array of domain guids linked to this asset
*/
@Attribute
SortedSet domainGUIDs;
/**
* TBC
*/
@Attribute
SortedSet files;
/**
* Whether this asset has contract (true) or not (false).
*/
@Attribute
Boolean hasContract;
/**
* Whether this asset has lineage (true) or not (false).
*/
@Attribute
@JsonProperty("__hasLineage")
Boolean hasLineage;
/**
* Data products for which this asset is an input port.
*/
@Attribute
SortedSet inputPortDataProducts;
/**
* TBC
*/
@Attribute
Boolean isAIGenerated;
/**
* Whether this asset is discoverable through the UI (true) or not (false).
*/
@Attribute
Boolean isDiscoverable;
/**
* Whether this asset can be edited in the UI (true) or not (false).
*/
@Attribute
Boolean isEditable;
/**
* TBC
*/
@Attribute
Boolean isPartial;
/**
* Time (epoch) of the last operation that inserted, updated, or deleted rows, in milliseconds.
*/
@Attribute
@Date
Long lastRowChangedAt;
/**
* Name of the last run of the crawler that last synchronized this asset.
*/
@Attribute
String lastSyncRun;
/**
* Time (epoch) at which this asset was last crawled, in milliseconds.
*/
@Attribute
@Date
Long lastSyncRunAt;
/**
* Name of the crawler that last synchronized this asset.
*/
@Attribute
String lastSyncWorkflowName;
/**
* Custom order for sorting purpose, managed by client
*/
@Attribute
String lexicographicalSortOrder;
/**
* Links that are attached to this asset.
*/
@Attribute
SortedSet links;
/**
* TBC
*/
@Attribute
SortedSet mcIncidents;
/**
* Monitors that observe this asset.
*/
@Attribute
SortedSet mcMonitors;
/**
* TBC
*/
@Attribute
SortedSet metrics;
/**
* Name of this asset. Fallback for display purposes, if displayName is empty.
*/
@Attribute
String name;
/**
* Array of policy ids non-compliant to this asset
*/
@Attribute
SortedSet nonCompliantAssetPolicyGUIDs;
/**
* Data products for which this asset is an output port.
*/
@Attribute
SortedSet outputPortDataProducts;
/**
* List of groups who own this asset.
*/
@Attribute
SortedSet ownerGroups;
/**
* List of users who own this asset.
*/
@Attribute
SortedSet ownerUsers;
/**
* Popularity score for this asset.
*/
@Attribute
Double popularityScore;
/**
* Unique name for this asset. This is typically a concatenation of the asset's name onto its parent's qualifiedName. This must be unique across all assets of the same type.
*/
@Attribute
String qualifiedName;
/**
* README that is linked to this asset.
*/
@Attribute
IReadme readme;
/**
* URL for sample data for this asset.
*/
@Attribute
String sampleDataUrl;
/**
* TBC
*/
@Attribute
SortedSet schemaRegistrySubjects;
/**
* TBC
*/
@Attribute
SortedSet sodaChecks;
/**
* The unit of measure for sourceTotalCost.
*/
@Attribute
SourceCostUnitType sourceCostUnit;
/**
* Time (epoch) at which this asset was created in the source system, in milliseconds.
*/
@Attribute
@Date
Long sourceCreatedAt;
/**
* Name of the user who created this asset, in the source system.
*/
@Attribute
String sourceCreatedBy;
/**
* URL to create an embed for a resource (for example, an image of a dashboard) within Atlan.
*/
@Attribute
String sourceEmbedURL;
/**
* Timestamp of most recent read operation.
*/
@Attribute
@Date
Long sourceLastReadAt;
/**
* List of owners of this asset, in the source system.
*/
@Attribute
String sourceOwners;
/**
* List of most expensive warehouses with extra insights.
*/
@Attribute
@JsonProperty("sourceQueryComputeCostRecordList")
List sourceQueryComputeCostRecords;
/**
* List of most expensive warehouse names.
*/
@Attribute
@JsonProperty("sourceQueryComputeCostList")
SortedSet sourceQueryComputeCosts;
/**
* Total count of all read operations at source.
*/
@Attribute
Long sourceReadCount;
/**
* List of the most expensive queries that accessed this asset.
*/
@Attribute
@JsonProperty("sourceReadExpensiveQueryRecordList")
List sourceReadExpensiveQueryRecords;
/**
* List of the most popular queries that accessed this asset.
*/
@Attribute
@JsonProperty("sourceReadPopularQueryRecordList")
List sourceReadPopularQueryRecords;
/**
* Total cost of read queries at source.
*/
@Attribute
Double sourceReadQueryCost;
/**
* List of usernames with extra insights for the most recent users who read this asset.
*/
@Attribute
@JsonProperty("sourceReadRecentUserRecordList")
List sourceReadRecentUserRecords;
/**
* List of usernames of the most recent users who read this asset.
*/
@Attribute
@JsonProperty("sourceReadRecentUserList")
SortedSet sourceReadRecentUsers;
/**
* List of the slowest queries that accessed this asset.
*/
@Attribute
@JsonProperty("sourceReadSlowQueryRecordList")
List sourceReadSlowQueryRecords;
/**
* List of usernames with extra insights for the users who read this asset the most.
*/
@Attribute
@JsonProperty("sourceReadTopUserRecordList")
List sourceReadTopUserRecords;
/**
* List of usernames of the users who read this asset the most.
*/
@Attribute
@JsonProperty("sourceReadTopUserList")
SortedSet sourceReadTopUsers;
/**
* Total number of unique users that read data from asset.
*/
@Attribute
Long sourceReadUserCount;
/**
* Total cost of all operations at source.
*/
@Attribute
Double sourceTotalCost;
/**
* URL to the resource within the source application, used to create a button to view this asset in the source application.
*/
@Attribute
String sourceURL;
/**
* Time (epoch) at which this asset was last updated in the source system, in milliseconds.
*/
@Attribute
@Date
Long sourceUpdatedAt;
/**
* Name of the user who last updated this asset, in the source system.
*/
@Attribute
String sourceUpdatedBy;
/**
* Users who have starred this asset.
*/
@Attribute
SortedSet starredBy;
/**
* Number of users who have starred this asset.
*/
@Attribute
Integer starredCount;
/**
* List of usernames with extra information of the users who have starred an asset.
*/
@Attribute
@JsonProperty("starredDetailsList")
List starredDetails;
/**
* Subtype of this asset.
*/
@Attribute
String subType;
/**
* Name of the Atlan workspace in which this asset exists.
*/
@Attribute
String tenantId;
/**
* TBC
*/
@Attribute
@JsonProperty("userDefRelationshipFrom")
SortedSet userDefRelationshipFroms;
/**
* TBC
*/
@Attribute
@JsonProperty("userDefRelationshipTo")
SortedSet userDefRelationshipTos;
/**
* Description of this asset, as provided by a user. If present, this will be used for the description in user interface.
*/
@Attribute
String userDescription;
/**
* View score for this asset.
*/
@Attribute
Double viewScore;
/**
* List of groups who can view assets contained in a collection. (This is only used for certain asset types.)
*/
@Attribute
SortedSet viewerGroups;
/**
* List of users who can view assets contained in a collection. (This is only used for certain asset types.)
*/
@Attribute
SortedSet viewerUsers;
/**
* Internal tracking of fields that should be serialized with null values.
*/
@JsonIgnore
transient Set nullFields;
/**
* Retrieve the list of fields to be serialized with null values.
*/
@JsonIgnore
public Set getNullFields() {
if (nullFields == null) {
return Collections.emptySet();
}
return Collections.unmodifiableSet(nullFields);
}
/**
* Atlan tags assigned to the asset.
*/
@JsonProperty("classifications")
SortedSet atlanTags;
/**
* Map of custom metadata attributes and values defined on the asset. The map is keyed by the human-readable
* name of the custom metadata set, and the values are a further mapping from human-readable attribute name
* to the value for that attribute on this asset.
*/
Map customMetadataSets;
/**
* Status of the asset.
*/
AtlanStatus status;
/**
* User or account that created the asset.
*/
final String createdBy;
/**
* User or account that last updated the asset.
*/
final String updatedBy;
/**
* Time (epoch) at which the asset was created, in milliseconds.
*/
@Date
final Long createTime;
/**
* Time (epoch) at which the asset was last updated, in milliseconds.
*/
@Date
final Long updateTime;
/**
* Details on the handler used for deletion of the asset.
*/
final String deleteHandler;
/**
* Depth of this asset within lineage.
* Note: this will only be available in assets retrieved via lineage, and will vary even for
* the same asset depending on the starting point of the lineage requested.
*/
final Long depth;
/**
* Reference details about the asset(s) that are immediately upstream of this asset within lineage.
* Note: this will only be available in assets retrieved via lineage when {@code immediateNeighbors} is true,
* and could vary even for the same asset depending on the starting point and depth of the lineage requested.
*/
final List immediateUpstream;
/**
* Reference details about the asset(s) that are immediately downstream of this asset within lineage.
* Note: this will only be available in assets retrieved via lineage when {@code immediateNeighbors} is true,
* and could vary even for the same asset depending on the starting point and depth of the lineage requested.
*/
final List immediateDownstream;
/**
* The names of the Atlan tags that exist on the asset. This is not always returned, even by
* full retrieval operations. It is better to depend on the detailed values in the Atlan tags
* property.
* @see #atlanTags
*/
@Deprecated
@JsonProperty("classificationNames")
SortedSet atlanTagNames;
/**
* Unused.
*/
Boolean isIncomplete;
/**
* Names of terms that have been linked to this asset.
*/
SortedSet meaningNames;
/**
* Details of terms that have been linked to this asset. This is not set by all API endpoints, so cannot
* be relied upon in general, even when there are terms assigned to an asset.
* @deprecated see {@link #assignedTerms} instead
*/
@Deprecated
SortedSet meanings;
/**
* Unique identifiers (GUIDs) for any background tasks that are yet to operate on this asset.
*/
final SortedSet pendingTasks;
/**
* {@inheritDoc}
*/
@Override
public String getQualifiedName() {
return qualifiedName != null ? qualifiedName : (getUniqueAttributes() != null ? getUniqueAttributes().getQualifiedName() : null);
}
/**
* Retrieve the value of the custom metadata attribute from this asset.
* Note: returns null in all cases where the custom metadata does not exist, is not available on this asset,
* or simply is not assigned any value on this asset.
*
* @param setName the name of the custom metadata set from which to retrieve the attribute's value
* @param attrName the name of the custom metadata attribute for which to retrieve the value
* @return the value of that custom metadata attribute on this asset, or null if there is no value
*/
@JsonIgnore
public Object getCustomMetadata(String setName, String attrName) {
if (customMetadataSets == null) {
return null;
} else if (!customMetadataSets.containsKey(setName)) {
return null;
} else {
Map attrs = customMetadataSets.get(setName).getAttributes();
if (!attrs.containsKey(attrName)) {
return null;
} else {
return attrs.get(attrName);
}
}
}
/**
* Reduce the asset to the minimum set of properties required to update it.
*
* @return a builder containing the minimal set of properties required to update this asset
* @throws InvalidRequestException if any of the minimal set of required properties are not found in the initial object
*/
public AssetBuilder, ?> trimToRequired() throws InvalidRequestException {
validateRequired(getTypeName(), Map.of("qualifiedName", this.getQualifiedName(), "name", this.getName()));
return IndistinctAsset.updater(this.getQualifiedName(), this.getName());
}
/**
* Reduce the asset to the minimum set of properties required to relate to it.
*
* @return an asset containing the minimal set of properties required to relate to this asset
* @throws InvalidRequestException if any of the minimal set of required properties are not found in the initial object
*/
public Asset trimToReference() throws InvalidRequestException {
if (this.getGuid() != null && !this.getGuid().isEmpty()) {
return IndistinctAsset.refByGuid(this.getGuid());
}
if (this.getQualifiedName() != null && !this.getQualifiedName().isEmpty()) {
return IndistinctAsset.refByQualifiedName(this.getQualifiedName());
}
if (this.getUniqueAttributes() != null && this.getUniqueAttributes().getQualifiedName() != null && !this.getUniqueAttributes().getQualifiedName().isEmpty()) {
return IndistinctAsset.refByQualifiedName(this.getUniqueAttributes().getQualifiedName());
}
throw new InvalidRequestException(ErrorCode.MISSING_REQUIRED_RELATIONSHIP_PARAM, "Asset", "guid, qualifiedName");
}
/**
* If an asset with the same qualifiedName exists, updates the existing asset. Otherwise, creates the asset.
* No Atlan tags or custom metadata will be changed if updating an existing asset, irrespective of what
* is included in the asset itself when the method is called.
*
* @return details of the created or updated asset
* @throws AtlanException on any error during the API invocation
*/
public AssetMutationResponse save() throws AtlanException {
return save(Atlan.getDefaultClient());
}
/**
* If an asset with the same qualifiedName exists, updates the existing asset. Otherwise, creates the asset.
* No Atlan tags or custom metadata will be changed if updating an existing asset, irrespective of what
* is included in the asset itself when the method is called.
*
* @param client connectivity to the Atlan tenant on which to save the asset
* @return details of the created or updated asset
* @throws AtlanException on any error during the API invocation
*/
public AssetMutationResponse save(AtlanClient client) throws AtlanException {
return client.assets.save(this, false);
}
/**
* If no asset exists, has the same behavior as the {@link #save()} method.
* If an asset does exist, optionally overwrites any Atlan tags. Custom metadata will always
* be entirely ignored using this method.
*
* @param replaceAtlanTags whether to replace Atlan tags during an update (true) or not (false)
* @return details of the created or updated asset
* @throws AtlanException on any error during the API invocation
*/
public AssetMutationResponse save(boolean replaceAtlanTags) throws AtlanException {
return save(Atlan.getDefaultClient(), replaceAtlanTags);
}
/**
* If no asset exists, has the same behavior as the {@link #save()} method.
* If an asset does exist, optionally overwrites any Atlan tags. Custom metadata will always
* be entirely ignored using this method.
*
* @param client connectivity to the Atlan tenant on which to save this asset
* @param replaceAtlanTags whether to replace Atlan tags during an update (true) or not (false)
* @return details of the created or updated asset
* @throws AtlanException on any error during the API invocation
*/
public AssetMutationResponse save(AtlanClient client, boolean replaceAtlanTags) throws AtlanException {
return client.assets.save(this, replaceAtlanTags);
}
/**
* If no asset exists, has the same behavior as the {@link #save()} method, while also setting
* any custom metadata provided.
* If an asset does exist, optionally overwrites any Atlan tags.
* Will merge any provided custom metadata with any custom metadata that already exists on the asset.
*
* @param replaceAtlanTags whether to replace AtlanTags during an update (true) or not (false)
* @return details of the created or updated asset
* @throws AtlanException on any error during the API invocation
*/
public AssetMutationResponse saveMergingCM(boolean replaceAtlanTags) throws AtlanException {
return saveMergingCM(Atlan.getDefaultClient(), replaceAtlanTags);
}
/**
* If no asset exists, has the same behavior as the {@link #save()} method, while also setting
* any custom metadata provided.
* If an asset does exist, optionally overwrites any Atlan tags.
* Will merge any provided custom metadata with any custom metadata that already exists on the asset.
*
* @param client connectivity to the Atlan tenant where this asset should be saved
* @param replaceAtlanTags whether to replace AtlanTags during an update (true) or not (false)
* @return details of the created or updated asset
* @throws AtlanException on any error during the API invocation
*/
public AssetMutationResponse saveMergingCM(AtlanClient client, boolean replaceAtlanTags) throws AtlanException {
return client.assets.saveMergingCM(List.of(this), replaceAtlanTags);
}
/**
* If no asset exists, has the same behavior as the {@link #save()} method, while also setting
* any custom metadata provided.
* If an asset does exist, optionally overwrites any Atlan tags.
* Will overwrite all custom metadata on any existing asset with only the custom metadata provided
* (wiping out any other custom metadata on an existing asset that is not provided in the request).
*
* @param replaceAtlanTags whether to replace Atlan tags during an update (true) or not (false)
* @return details of the created or updated asset
* @throws AtlanException on any error during the API invocation
*/
public AssetMutationResponse saveReplacingCM(boolean replaceAtlanTags) throws AtlanException {
return saveReplacingCM(Atlan.getDefaultClient(), replaceAtlanTags);
}
/**
* If no asset exists, has the same behavior as the {@link #save()} method, while also setting
* any custom metadata provided.
* If an asset does exist, optionally overwrites any Atlan tags.
* Will overwrite all custom metadata on any existing asset with only the custom metadata provided
* (wiping out any other custom metadata on an existing asset that is not provided in the request).
*
* @param client connectivity to the Atlan tenant where this asset should be saved
* @param replaceAtlanTags whether to replace Atlan tags during an update (true) or not (false)
* @return details of the created or updated asset
* @throws AtlanException on any error during the API invocation
*/
public AssetMutationResponse saveReplacingCM(AtlanClient client, boolean replaceAtlanTags) throws AtlanException {
return client.assets.saveReplacingCM(List.of(this), replaceAtlanTags);
}
/**
* If no asset exists, fails with a NotFoundException.
* Will merge any provided custom metadata with any custom metadata that already exists on the asset.
* If an asset does exist, optionally overwrites any Atlan tags.
*
* @param replaceAtlanTags whether to replace AtlanTags during an update (true) or not (false)
* @return details of the updated asset
* @throws AtlanException on any error during the API invocation
* @throws com.atlan.exception.NotFoundException if the asset does not exist (will not create it)
*/
public AssetMutationResponse updateMergingCM(boolean replaceAtlanTags) throws AtlanException {
return updateMergingCM(Atlan.getDefaultClient(), replaceAtlanTags);
}
/**
* If no asset exists, fails with a NotFoundException.
* Will merge any provided custom metadata with any custom metadata that already exists on the asset.
* If an asset does exist, optionally overwrites any Atlan tags.
*
* @param client connectivity to the Atlan tenant where this asset should be saved
* @param replaceAtlanTags whether to replace AtlanTags during an update (true) or not (false)
* @return details of the updated asset
* @throws AtlanException on any error during the API invocation
* @throws com.atlan.exception.NotFoundException if the asset does not exist (will not create it)
*/
public AssetMutationResponse updateMergingCM(AtlanClient client, boolean replaceAtlanTags) throws AtlanException {
// Attempt to retrieve the asset first, and allow this to throw a NotFoundException if it does not exist
get(client, this.getTypeName(), this.getQualifiedName(), false);
// Otherwise, attempt the update
return saveReplacingCM(client, replaceAtlanTags);
}
/**
* If no asset exists, fails with a NotFoundException.
* Will overwrite all custom metadata on any existing asset with only the custom metadata provided
* (wiping out any other custom metadata on an existing asset that is not provided in the request).
* If an asset does exist, optionally overwrites any Atlan tags.
*
* @param replaceAtlanTags whether to replace Atlan tags during an update (true) or not (false)
* @return details of the updated asset
* @throws AtlanException on any error during the API invocation
* @throws com.atlan.exception.NotFoundException if the asset does not exist (will not create it)
*/
public AssetMutationResponse updateReplacingCM(boolean replaceAtlanTags) throws AtlanException {
return updateReplacingCM(Atlan.getDefaultClient(), replaceAtlanTags);
}
/**
* If no asset exists, fails with a NotFoundException.
* Will overwrite all custom metadata on any existing asset with only the custom metadata provided
* (wiping out any other custom metadata on an existing asset that is not provided in the request).
* If an asset does exist, optionally overwrites any Atlan tags.
*
* @param client connectivity to the Atlan tenant where this asset should be saved
* @param replaceAtlanTags whether to replace Atlan tags during an update (true) or not (false)
* @return details of the updated asset
* @throws AtlanException on any error during the API invocation
* @throws com.atlan.exception.NotFoundException if the asset does not exist (will not create it)
*/
public AssetMutationResponse updateReplacingCM(AtlanClient client, boolean replaceAtlanTags) throws AtlanException {
// Attempt to retrieve the asset first, and allow this to throw a NotFoundException if it does not exist
get(client, this.getTypeName(), this.getQualifiedName(), false);
// Otherwise, attempt the update
return saveReplacingCM(client, replaceAtlanTags);
}
/**
* Start a fluent lineage request that will return all active downstream assets.
* Additional conditions can be chained onto the returned builder before any
* asset retrieval is attempted, ensuring all conditions are pushed-down for
* optimal retrieval. Only active (non-archived) assets will be included.
* (To change the default direction of downstream, chain a .direction() call.)
*
* @return a fluent lineage request that includes all active downstream assets
*/
public FluentLineage.FluentLineageBuilder requestLineage() {
return Asset.lineage(getGuid());
}
/**
* Start a fluent lineage request that will return all active downstream assets.
* Additional conditions can be chained onto the returned builder before any
* asset retrieval is attempted, ensuring all conditions are pushed-down for
* optimal retrieval. Only active (non-archived) assets will be included.
* (To change the default direction of downstream, chain a .direction() call.)
*
* @param client connectivity to Atlan tenant
* @return a fluent lineage request that includes all active downstream assets
*/
public FluentLineage.FluentLineageBuilder requestLineage(AtlanClient client) {
return Asset.lineage(client, getGuid());
}
/**
* Add the API token configured for the default client as an admin to this object.
*
* @param assetGuid unique identifier (GUID) of the asset to which we should add this API token as an admin
* @param impersonationToken a bearer token for an actual user who is already an admin for the object, NOT an API token
* @throws AtlanException on any error during API invocation
*/
protected static AssetMutationResponse addApiTokenAsAdmin(final String assetGuid, final String impersonationToken) throws AtlanException {
AtlanClient client = Atlan.getDefaultClient();
String token = client.users.getCurrentUser().getUsername();
String clientGuid = UUID.randomUUID().toString();
AtlanClient tmp = Atlan.getClient(client.getBaseUrl(), clientGuid);
tmp.setApiToken(impersonationToken);
// Look for the asset as the impersonated user, ensuring we include the admin users
// in the results (so we avoid clobbering any existing admin users)
Optional found = tmp.assets.select().where(GUID.eq(assetGuid)).includeOnResults(ADMIN_USERS).pageSize(1).stream().findFirst();
AssetMutationResponse response = null;
if (found.isPresent()) {
Asset asset = found.get();
Set existingAdmins = asset.getAdminUsers();
response = asset.trimToRequired().adminUsers(existingAdmins).adminUser(token).build().save(tmp);
} else {
Atlan.removeClient(client.getBaseUrl(), clientGuid);
throw new NotFoundException(ErrorCode.ASSET_NOT_FOUND_BY_GUID, assetGuid);
}
Atlan.removeClient(client.getBaseUrl(), clientGuid);
return response;
}
/**
* Retrieves an asset by its GUID, optionally complete with all of its relationships.
* The type of the asset will only be determined at runtime.
*
* @param client connectivity to the Atlan tenant from which to retrieve the asset
* @param guid of the asset to retrieve
* @param includeRelationships if true, all of the asset's relationships will also be retrieved; if false, no relationships will be retrieved
* @return the requested full asset, optionally complete with all of its relationships
* @throws AtlanException on any error during the API invocation, such as the {@link com.atlan.exception.NotFoundException} if the asset does not exist
*/
@JsonIgnore
public static Asset get(AtlanClient client, String guid, boolean includeRelationships) throws AtlanException {
AssetResponse response = client.assets.get(guid, !includeRelationships, !includeRelationships);
Asset asset = response.getAsset();
if (asset != null && includeRelationships) {
asset.setCompleteObject();
}
return asset;
}
/**
* Retrieves an asset by its qualifiedName, optionally complete with all of its relationships.
* The type of the asset will only be determined at runtime.
*
* @param client connectivity to the Atlan tenant from which to retrieve the asset
* @param typeName the type of the asset to retrieve
* @param qualifiedName the unique name of the asset to retrieve
* @param includeRelationships if true, all of the asset's relationships will also be retrieved; if false, no relationships will be retrieved
* @return the requested full asset, optionally complete with all of its relationships
* @throws AtlanException on any error during the API invocation, such as the {@link com.atlan.exception.NotFoundException} if the asset does not exist
*/
@JsonIgnore
public static Asset get(AtlanClient client, String typeName, String qualifiedName, boolean includeRelationships) throws AtlanException {
AssetResponse response = client.assets.get(typeName, qualifiedName, !includeRelationships, !includeRelationships);
Asset asset = response.getAsset();
if (asset != null && includeRelationships) {
asset.setCompleteObject();
}
return asset;
}
/**
* Soft-deletes an asset by its GUID. This operation can be reversed by updating the asset and changing
* its {@link #status} to {@code ACTIVE}.
*
* @param guid of the asset to soft-delete
* @return details of the soft-deleted asset
* @throws AtlanException on any error during the API invocation
*/
public static AssetDeletionResponse delete(String guid) throws AtlanException {
return delete(Atlan.getDefaultClient(), guid);
}
/**
* Soft-deletes an asset by its GUID. This operation can be reversed by updating the asset and changing
* its {@link #status} to {@code ACTIVE}.
*
* @param client connectivity to the Atlan tenant from which to delete the asset
* @param guid of the asset to soft-delete
* @return details of the soft-deleted asset
* @throws AtlanException on any error during the API invocation
*/
public static AssetDeletionResponse delete(AtlanClient client, String guid) throws AtlanException {
return client.assets.delete(guid, AtlanDeleteType.SOFT);
}
/**
* Hard-deletes (purges) an asset by its GUID. This operation is irreversible.
*
* @param guid of the asset to hard-delete
* @return details of the hard-deleted asset
* @throws AtlanException on any error during the API invocation
*/
public static AssetDeletionResponse purge(String guid) throws AtlanException {
return purge(Atlan.getDefaultClient(), guid);
}
/**
* Hard-deletes (purges) an asset by its GUID. This operation is irreversible.
*
* @param client connectivity to the Atlan tenant from which to delete the asset
* @param guid of the asset to hard-delete
* @return details of the hard-deleted asset
* @throws AtlanException on any error during the API invocation
*/
public static AssetDeletionResponse purge(AtlanClient client, String guid) throws AtlanException {
return client.assets.delete(guid, AtlanDeleteType.PURGE);
}
/**
* Start a fluent lineage request that will return all active downstream assets.
* Additional conditions can be chained onto the returned builder before any
* asset retrieval is attempted, ensuring all conditions are pushed-down for
* optimal retrieval. Only active (non-archived) assets will be included.
* (To change the default direction of downstream, chain a .direction() call.)
*
* @param guid unique identifier (GUID) for the starting point of lineage
* @return a fluent lineage request that includes all active downstream assets
*/
public static FluentLineage.FluentLineageBuilder lineage(String guid) {
return lineage(Atlan.getDefaultClient(), guid);
}
/**
* Start a fluent lineage request that will return all active downstream assets.
* Additional conditions can be chained onto the returned builder before any
* asset retrieval is attempted, ensuring all conditions are pushed-down for
* optimal retrieval. Only active (non-archived) assets will be included.
* (To change the default direction of downstream, chain a .direction() call.)
*
* @param client connectivity to the Atlan tenant from which to retrieve the assets
* @param guid unique identifier (GUID) for the starting point of lineage
* @return a fluent lineage request that includes all active downstream assets
*/
public static FluentLineage.FluentLineageBuilder lineage(AtlanClient client, String guid) {
return lineage(client, guid, false);
}
/**
* Start a fluent lineage request that will return all downstream assets.
* Additional conditions can be chained onto the returned builder before any
* asset retrieval is attempted, ensuring all conditions are pushed-down for
* optimal retrieval. (To change the default direction of downstream, chain a
* .direction() call.)
*
* @param guid unique identifier (GUID) for the starting point of lineage
* @param includeArchived when true, archived (soft-deleted) assets in lineage will be included
* @return a fluent lineage request that includes all downstream assets
*/
public static FluentLineage.FluentLineageBuilder lineage(String guid, boolean includeArchived) {
return lineage(Atlan.getDefaultClient(), guid, includeArchived);
}
/**
* Start a fluent lineage request that will return all downstream assets.
* Additional conditions can be chained onto the returned builder before any
* asset retrieval is attempted, ensuring all conditions are pushed-down for
* optimal retrieval. (To change the default direction of downstream, chain a
* .direction() call.)
*
* @param client connectivity to the Atlan tenant from which to retrieve the lineage
* @param guid unique identifier (GUID) for the starting point of lineage
* @param includeArchived when true, archived (soft-deleted) assets in lineage will be included
* @return a fluent search that includes all downstream assets
*/
public static FluentLineage.FluentLineageBuilder lineage(AtlanClient client, String guid, boolean includeArchived) {
FluentLineage.FluentLineageBuilder builder = FluentLineage.builder(client, guid);
if (!includeArchived) {
builder.whereAsset(FluentLineage.ACTIVE).whereRelationship(FluentLineage.ACTIVE).includeInResults(FluentLineage.ACTIVE);
}
return builder;
}
/**
* Update only the provided custom metadata attributes on the asset. This will leave all other custom metadata
* attributes, even within the same named custom metadata, unchanged.
*
* @param guid unique identifier of the asset
* @param cmName human-readable name of the custom metadata to update
* @param attributes the values of the custom metadata attributes to change
* @throws AtlanException on any API problems, or if the custom metadata is not defined in Atlan
*/
public static void updateCustomMetadataAttributes(String guid, String cmName, CustomMetadataAttributes attributes) throws AtlanException {
updateCustomMetadataAttributes(Atlan.getDefaultClient(), guid, cmName, attributes);
}
/**
* Update only the provided custom metadata attributes on the asset. This will leave all other custom metadata
* attributes, even within the same named custom metadata, unchanged.
*
* @param client connectivity to the Atlan tenant on which to update the asset's custom metadata attributes
* @param guid unique identifier of the asset
* @param cmName human-readable name of the custom metadata to update
* @param attributes the values of the custom metadata attributes to change
* @throws AtlanException on any API problems, or if the custom metadata is not defined in Atlan
*/
public static void updateCustomMetadataAttributes(AtlanClient client, String guid, String cmName, CustomMetadataAttributes attributes) throws AtlanException {
client.assets.updateCustomMetadataAttributes(guid, cmName, attributes);
}
/**
* Replace specific custom metadata on the asset. This will replace everything within the named custom metadata,
* but will not change any of the other named custom metadata on the asset.
*
* @param guid unique identifier of the asset
* @param cmName human-readable name of the custom metadata to replace
* @param attributes the values of the attributes to replace for the custom metadata
* @throws AtlanException on any API problems, or if the custom metadata is not defined in Atlan
*/
public static void replaceCustomMetadata(String guid, String cmName, CustomMetadataAttributes attributes) throws AtlanException {
replaceCustomMetadata(Atlan.getDefaultClient(), guid, cmName, attributes);
}
/**
* Replace specific custom metadata on the asset. This will replace everything within the named custom metadata,
* but will not change any of the other named custom metadata on the asset.
*
* @param client connectivity to the Atlan tenant on which to replace the asset's custom metadata
* @param guid unique identifier of the asset
* @param cmName human-readable name of the custom metadata to replace
* @param attributes the values of the attributes to replace for the custom metadata
* @throws AtlanException on any API problems, or if the custom metadata is not defined in Atlan
*/
public static void replaceCustomMetadata(AtlanClient client, String guid, String cmName, CustomMetadataAttributes attributes) throws AtlanException {
client.assets.replaceCustomMetadata(guid, cmName, attributes);
}
/**
* Remove specific custom metadata from an asset.
*
* @param guid unique identifier of the asset
* @param cmName human-readable name of the custom metadata to remove
* @throws AtlanException on any API problems, or if the custom metadata is not defined in Atlan
*/
public static void removeCustomMetadata(String guid, String cmName) throws AtlanException {
removeCustomMetadata(Atlan.getDefaultClient(), guid, cmName);
}
/**
* Remove specific custom metadata from an asset.
*
* @param client connectivity to the Atlan tenant from which to remove the asset's custom metadata
* @param guid unique identifier of the asset
* @param cmName human-readable name of the custom metadata to remove
* @throws AtlanException on any API problems, or if the custom metadata is not defined in Atlan
*/
public static void removeCustomMetadata(AtlanClient client, String guid, String cmName) throws AtlanException {
client.assets.removeCustomMetadata(guid, cmName);
}
/**
* Add Atlan tags to an asset, without replacing existing Atlan tags linked to the asset.
* Note: this operation must make two API calls — one to retrieve the asset's existing Atlan tags,
* and a second to append the new Atlan tags.
*
* @param client connectivity to the Atlan tenant on which to append Atlan tags to the asset
* @param typeName type of the asset
* @param qualifiedName of the asset
* @param atlanTagNames human-readable names of the Atlan tags to append
* @return the asset that was updated
* @throws AtlanException on any API problems
*/
protected static Asset appendAtlanTags(AtlanClient client, String typeName, String qualifiedName, List atlanTagNames) throws AtlanException {
return appendAtlanTags(client, typeName, qualifiedName, atlanTagNames, true, true, false);
}
/**
* Add Atlan tags to an asset, without replacing existing Atlan tags linked to the asset.
* Note: this operation must make two API calls — one to retrieve the asset's existing Atlan tags,
* and a second to append the new Atlan tags.
*
* @param client connectivity to the Atlan tenant on which to add the Atlan tags to the asset
* @param typeName type of the asset
* @param qualifiedName of the asset
* @param atlanTagNames human-readable names of the Atlan tags to add
* @param propagate whether to propagate the Atlan tag (true) or not (false)
* @param removePropagationsOnDelete whether to remove the propagated Atlan tags when the Atlan tag is removed from this asset (true) or not (false)
* @param restrictLineagePropagation whether to avoid propagating through lineage (true) or do propagate through lineage (false)
* @return the asset that was updated
* @throws AtlanException on any API problems
*/
protected static Asset appendAtlanTags(AtlanClient client, String typeName, String qualifiedName, List atlanTagNames, boolean propagate, boolean removePropagationsOnDelete, boolean restrictLineagePropagation) throws AtlanException {
Asset existing = get(client, typeName, qualifiedName, true);
if (atlanTagNames == null) {
return existing;
} else if (existing != null) {
Set replacementAtlanTags = new TreeSet<>();
Set existingAtlanTags = existing.getAtlanTags();
if (existingAtlanTags != null) {
for (AtlanTag atlanTag : existingAtlanTags) {
if (existing.getGuid().equals(atlanTag.getEntityGuid())) {
// Only re-include Atlan tags that are directly assigned, and whose
// propagation settings are not being overridden by this update
// (Propagation overrides will be handled by the loop further below)
if (!atlanTagNames.contains(atlanTag.getTypeName())) {
replacementAtlanTags.add(atlanTag);
}
}
}
}
// Append all the extra Atlan tags (including any propagation overrides)
for (String atlanTagName : atlanTagNames) {
replacementAtlanTags.add(AtlanTag.builder().typeName(atlanTagName).propagate(propagate).removePropagationsOnEntityDelete(removePropagationsOnDelete).restrictPropagationThroughLineage(restrictLineagePropagation).build());
}
AssetBuilder, ?> minimal = existing.trimToRequired();
return replaceAtlanTags(client, minimal.atlanTags(replacementAtlanTags).build());
}
return null;
}
/**
* Remove an Atlan tag from an asset.
*
* @param client connectivity to the Atlan tenant on which to remove the Atlan tag from the asset
* @param typeName type of the asset
* @param qualifiedName of the asset
* @param atlanTagName human-readable name of the Atlan tags to remove
* @throws AtlanException on any API problems, or if any of the Atlan tag does not exist on the asset
*/
protected static void removeAtlanTag(AtlanClient client, String typeName, String qualifiedName, String atlanTagName) throws AtlanException {
client.assets.removeAtlanTag(typeName, qualifiedName, atlanTagName, true);
}
/**
* Update the certificate on an asset.
*
* @param client connectivity to the Atlan tenant on which to update the asset's certificate
* @param builder the builder to use for updating the certificate
* @param certificate certificate to set
* @param message (optional) message to set (or null for no message)
* @return the result of the update, or null if the update failed
* @throws AtlanException on any API problems
*/
protected static Asset updateCertificate(AtlanClient client, AssetBuilder, ?> builder, CertificateStatus certificate, String message) throws AtlanException {
builder.certificateStatus(certificate);
if (message != null && message.length() > 1) {
builder.certificateStatusMessage(message);
}
return updateAttributes(client, builder.build());
}
/**
* Remove the certificate on an asset.
*
* @param client connectivity to the Atlan tenant on which to remove the asset's certificate
* @param builder the builder to use for removing the certificate
* @return the result of the removal, or null if the removal failed
* @throws AtlanException on any API problems
*/
protected static Asset removeCertificate(AtlanClient client, AssetBuilder, ?> builder) throws AtlanException {
Asset asset = builder.removeCertificate().build();
AssetMutationResponse response = asset.save(client);
if (response != null && !response.getUpdatedAssets().isEmpty()) {
return response.getUpdatedAssets().get(0);
} else {
return null;
}
}
/**
* Update the announcement on an asset.
*
* @param client connectivity to the Atlan tenant on which to update the asset's announcement
* @param builder the builder to use for updating the announcement
* @param type type of announcement to set
* @param title (optional) title of the announcement to set (or null for no title)
* @param message (optional) message of the announcement to set (or null for no message)
* @return the result of the update, or null if the update failed
* @throws AtlanException on any API problems
*/
protected static Asset updateAnnouncement(AtlanClient client, AssetBuilder, ?> builder, AtlanAnnouncementType type, String title, String message) throws AtlanException {
builder.announcementType(type);
if (title != null && title.length() > 1) {
builder.announcementTitle(title);
}
if (message != null && message.length() > 1) {
builder.announcementMessage(message);
}
return updateAttributes(client, builder.build());
}
/**
* Remove the announcement on an asset.
*
* @param client connectivity to the Atlan tenant from which to remove the asset's announcement
* @param builder the builder to use for removing the announcement
* @return the result of the removal, or null if the removal failed
* @throws AtlanException on any API problems
*/
protected static Asset removeAnnouncement(AtlanClient client, AssetBuilder, ?> builder) throws AtlanException {
Asset asset = builder.removeAnnouncement().build();
AssetMutationResponse response = asset.save(client);
if (response != null && !response.getUpdatedAssets().isEmpty()) {
return response.getUpdatedAssets().get(0);
} else {
return null;
}
}
/**
* Remove the system description from an asset.
*
* @param client connectivity to the Atlan tenant on which to remove the asset's description
* @param builder the builder to use for removing the description
* @return the result of the removal, or null if the removal failed
* @throws AtlanException on any API problems
*/
protected static Asset removeDescription(AtlanClient client, AssetBuilder, ?> builder) throws AtlanException {
Asset asset = builder.removeDescription().build();
AssetMutationResponse response = asset.save(client);
if (response != null && !response.getUpdatedAssets().isEmpty()) {
return response.getUpdatedAssets().get(0);
} else {
return null;
}
}
/**
* Remove the user-provided description from an asset.
*
* @param client connectivity to the Atlan tenant on which to remove the asset's description
* @param builder the builder to use for removing the description
* @return the result of the removal, or null if the removal failed
* @throws AtlanException on any API problems
*/
protected static Asset removeUserDescription(AtlanClient client, AssetBuilder, ?> builder) throws AtlanException {
Asset asset = builder.removeUserDescription().build();
AssetMutationResponse response = asset.save(client);
if (response != null && !response.getUpdatedAssets().isEmpty()) {
return response.getUpdatedAssets().get(0);
} else {
return null;
}
}
/**
* Remove the owners from an asset.
*
* @param client connectivity to the Atlan tenant on which to remove the asset's owners
* @param builder the builder to use for removing the owners
* @return the result of the removal, or null if the removal failed
* @throws AtlanException on any API problems
*/
protected static Asset removeOwners(AtlanClient client, AssetBuilder, ?> builder) throws AtlanException {
Asset asset = builder.removeOwners().build();
AssetMutationResponse response = asset.save(client);
if (response != null && !response.getUpdatedAssets().isEmpty()) {
return response.getUpdatedAssets().get(0);
} else {
return null;
}
}
private static Asset updateAttributes(AtlanClient client, Asset asset) throws AtlanException {
AssetMutationResponse response = client.assets.save(asset, false);
if (response != null && !response.getUpdatedAssets().isEmpty()) {
return response.getUpdatedAssets().get(0);
}
return null;
}
private static Asset replaceAtlanTags(AtlanClient client, Asset asset) throws AtlanException {
AssetMutationResponse response = client.assets.save(asset, true);
if (response != null && !response.getUpdatedAssets().isEmpty()) {
return response.getUpdatedAssets().get(0);
}
return null;
}
/**
* Update the certificate on an asset.
*
* @param client connectivity to the Atlan tenant on which to update the asset's certificate
* @param builder the builder to use for updating the certificate
* @param typeName type of the asset
* @param qualifiedName for the asset
* @param certificate certificate to set
* @param message (optional) message to set (or null for no message)
* @return the result of the update, or null if the update failed
* @throws AtlanException on any API problems
*/
protected static Asset updateCertificate(AtlanClient client, AssetBuilder, ?> builder, String typeName, String qualifiedName, CertificateStatus certificate, String message) throws AtlanException {
builder.qualifiedName(qualifiedName).certificateStatus(certificate);
if (message != null && message.length() > 1) {
builder.certificateStatusMessage(message);
}
return updateAttributes(client, typeName, qualifiedName, builder.build());
}
/**
* Update the announcement on an asset.
*
* @param client connectivity to the Atlan tenant on which to update the asset's announcement
* @param builder the builder to use for updating the announcement
* @param typeName type of the asset
* @param qualifiedName for the asset
* @param type type of announcement to set
* @param title (optional) title of the announcement to set (or null for no title)
* @param message (optional) message of the announcement to set (or null for no message)
* @return the result of the update, or null if the update failed
* @throws AtlanException on any API problems
*/
protected static Asset updateAnnouncement(AtlanClient client, AssetBuilder, ?> builder, String typeName, String qualifiedName, AtlanAnnouncementType type, String title, String message) throws AtlanException {
builder.qualifiedName(qualifiedName).announcementType(type);
if (title != null && title.length() > 1) {
builder.announcementTitle(title);
}
if (message != null && message.length() > 1) {
builder.announcementMessage(message);
}
return updateAttributes(client, typeName, qualifiedName, builder.build());
}
private static Asset updateAttributes(AtlanClient client, String typeName, String qualifiedName, Asset asset) throws AtlanException {
AssetMutationResponse response = client.assets.updateAttributes(typeName, qualifiedName, asset);
if (response != null && !response.getPartiallyUpdatedAssets().isEmpty()) {
return response.getPartiallyUpdatedAssets().get(0);
}
if (response != null && !response.getUpdatedAssets().isEmpty()) {
return response.getUpdatedAssets().get(0);
}
return null;
}
/**
* Restore an archived (soft-deleted) asset to active.
*
* @param client connectivity to the Atlan tenant on which to restore the asset
* @param typeName type of the asset to restore
* @param qualifiedName of the asset to restore
* @return true if the asset is now restored, or false if not
* @throws AtlanException on any API problems
*/
protected static boolean restore(AtlanClient client, String typeName, String qualifiedName) throws AtlanException {
try {
return restore(client, typeName, qualifiedName, 0);
} catch (InterruptedException e) {
throw new ApiException(ErrorCode.RETRIES_INTERRUPTED, e);
}
}
/**
* Restore an archived (soft-deleted) asset to active, retrying in case it is found to
* already be active (since the delete handlers run asynchronously).
*
* @param client connectivity to the Atlan tenant on which to restore the asset
* @param typeName type of the asset to restore
* @param qualifiedName of the asset to restore
* @param retryCount number of retries we have already attempted
* @return true if the asset is now restored, or false if not
* @throws AtlanException on any API problems
* @throws InterruptedException if the retry cycle sleeps are interrupted
*/
private static boolean restore(AtlanClient client, String typeName, String qualifiedName, int retryCount) throws AtlanException, InterruptedException {
Asset existing = get(client, typeName, qualifiedName, true);
if (existing == null) {
// Nothing to restore, so cannot be restored
return false;
} else if (existing.getStatus() == AtlanStatus.ACTIVE) {
// Already active, but this could be due to the async nature of the delete handlers
if (retryCount < Atlan.getMaxNetworkRetries()) {
// So continue to retry up to the maximum number of allowed retries
log.debug("Attempted to restore an active asset, retrying status check for async delete handling (attempt: {}).", retryCount + 1);
Thread.sleep(HttpClient.waitTime(retryCount).toMillis());
return restore(client, typeName, qualifiedName, retryCount + 1);
} else {
// If we have exhausted the retries, though, then we should just short-circuit
return true;
}
} else {
Optional guidRestored = restore(client, existing);
return guidRestored.isPresent() && guidRestored.get().equals(existing.getGuid());
}
}
/**
* Replace the terms linked to an asset.
*
* @param client connectivity to the Atlan tenant on which to replace the asset's terms
* @param builder the builder to use for updating the terms
* @param terms the list of terms to replace on the asset, or null to remove all terms from an asset
* @return the asset that was updated (note that it will NOT contain details of the replaced terms)
* @throws AtlanException on any API problems
*/
protected static Asset replaceTerms(AtlanClient client, AssetBuilder, ?> builder, List terms) throws AtlanException {
if (terms == null || terms.isEmpty()) {
Asset asset = builder.removeAssignedTerms().build();
return updateRelationships(client, asset);
} else {
return updateRelationships(client, builder.assignedTerms(getTermRefs(terms)).build());
}
}
/**
* Link additional terms to an asset, without replacing existing terms linked to the asset.
* Note: this operation must make two API calls — one to retrieve the asset's existing terms,
* and a second to append the new terms.
*
* @param client connectivity to the Atlan tenant on which to append terms to the asset
* @param typeName type of the asset
* @param qualifiedName for the asset
* @param terms the list of terms to append to the asset
* @return the asset that was updated (note that it will NOT contain details of the appended terms)
* @throws AtlanException on any API problems
*/
protected static Asset appendTerms(AtlanClient client, String typeName, String qualifiedName, List terms) throws AtlanException {
Asset existing = get(client, typeName, qualifiedName, true);
if (terms == null) {
return existing;
} else if (existing != null) {
Set replacementTerms = new TreeSet<>();
Set existingTerms = existing.getAssignedTerms();
if (existingTerms != null) {
for (IGlossaryTerm term : existingTerms) {
if (term.getRelationshipStatus() != AtlanStatus.DELETED) {
// Only re-include the terms that are not already deleted
replacementTerms.add(term);
}
}
}
replacementTerms.addAll(terms);
AssetBuilder, ?> minimal = existing.trimToRequired();
return updateRelationships(client, minimal.assignedTerms(getTermRefs(replacementTerms)).build());
}
return null;
}
/**
* Remove terms from an asset, without replacing all existing terms linked to the asset.
* Note: this operation must make two API calls — one to retrieve the asset's existing terms,
* and a second to remove the provided terms.
*
* @param client connectivity to the Atlan tenant on which to remove terms from the asset
* @param typeName type of the asset
* @param qualifiedName for the asset
* @param terms the list of terms to remove from the asset (note: these must be references by GUID
* in order to efficiently remove any existing terms)
* @return the asset that was updated (note that it will NOT contain details of the resulting terms)
* @throws AtlanException on any API problems
* @throws InvalidRequestException if any of the passed terms are not valid references by GUID to a term
*/
protected static Asset removeTerms(AtlanClient client, String typeName, String qualifiedName, List terms) throws AtlanException {
Asset existing = get(client, typeName, qualifiedName, true);
if (existing != null) {
Set replacementTerms = new TreeSet<>();
Set existingTerms = existing.getAssignedTerms();
Set removeGuids = new HashSet<>();
for (IGlossaryTerm term : terms) {
if (term.isValidReferenceByGuid()) {
removeGuids.add(term.getGuid());
} else {
throw new InvalidRequestException(ErrorCode.MISSING_TERM_GUID);
}
}
for (IGlossaryTerm term : existingTerms) {
String existingTermGuid = term.getGuid();
if (!removeGuids.contains(existingTermGuid) && term.getRelationshipStatus() != AtlanStatus.DELETED) {
// Only re-include the terms that we are not removing and that are not already deleted
replacementTerms.add(term);
}
}
AssetBuilder, ?> minimal = existing.trimToRequired();
Asset update;
if (replacementTerms.isEmpty()) {
// If there are no terms left after the removal, we need to do the same as removing all terms
update = minimal.removeAssignedTerms().build();
} else {
// Otherwise we should do the update with the difference
update = minimal.assignedTerms(getTermRefs(replacementTerms)).build();
}
return updateRelationships(client, update);
}
return null;
}
private static Collection getTermRefs(Collection terms) {
if (terms != null && !terms.isEmpty()) {
Set termRefs = new TreeSet<>();
for (IGlossaryTerm term : terms) {
if (term.getGuid() != null) {
termRefs.add(GlossaryTerm.refByGuid(term.getGuid()));
} else if (term.getQualifiedName() != null) {
termRefs.add(GlossaryTerm.refByQualifiedName(term.getQualifiedName()));
}
}
return termRefs;
} else {
return Collections.emptySet();
}
}
private static Asset updateRelationships(AtlanClient client, Asset asset) throws AtlanException {
String typeNameToUpdate = asset.getTypeName();
AssetMutationResponse response = client.assets.save(asset, false);
if (response != null && !response.getUpdatedAssets().isEmpty()) {
for (Asset result : response.getUpdatedAssets()) {
if (result.getTypeName().equals(typeNameToUpdate)) {
String foundQN = result.getQualifiedName();
if (foundQN != null && foundQN.equals(asset.getQualifiedName())) {
// Return the first result that matches both the type that we attempted to update
// and the qualifiedName of the asset we attempted to update. Irrespective of
// the kind of relationship, this should uniquely identify the asset that we
// attempted to update
return result;
}
}
}
}
return null;
}
private static Optional restore(AtlanClient client, Asset asset) throws AtlanException {
AssetMutationResponse response = client.assets.restore(asset);
if (response != null && !response.getGuidAssignments().isEmpty()) {
return response.getGuidAssignments().values().stream().findFirst();
}
return Optional.empty();
}
public static abstract class AssetBuilder> extends Reference.ReferenceBuilder {
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList adminGroups;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList adminRoles;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList adminUsers;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String announcementMessage;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String announcementTitle;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private AtlanAnnouncementType announcementType;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private Long announcementUpdatedAt;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String announcementUpdatedBy;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList anomaloChecks;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList assetAnomaloAppliedCheckTypes;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private Long assetAnomaloCheckCount;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String assetAnomaloCheckStatuses;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String assetAnomaloDQStatus;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private Long assetAnomaloFailedCheckCount;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList assetAnomaloFailedCheckTypes;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private Long assetAnomaloLastCheckRunAt;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String assetAnomaloSourceUrl;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String assetCoverImage;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String assetDbtAccountName;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String assetDbtAlias;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String assetDbtEnvironmentDbtVersion;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String assetDbtEnvironmentName;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private Long assetDbtJobLastRun;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String assetDbtJobLastRunArtifactS3Path;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private Boolean assetDbtJobLastRunArtifactsSaved;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private Long assetDbtJobLastRunCreatedAt;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private Long assetDbtJobLastRunDequedAt;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String assetDbtJobLastRunExecutedByThreadId;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String assetDbtJobLastRunGitBranch;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String assetDbtJobLastRunGitSha;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private Boolean assetDbtJobLastRunHasDocsGenerated;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private Boolean assetDbtJobLastRunHasSourcesGenerated;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private Boolean assetDbtJobLastRunNotificationsSent;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String assetDbtJobLastRunOwnerThreadId;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String assetDbtJobLastRunQueuedDuration;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String assetDbtJobLastRunQueuedDurationHumanized;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String assetDbtJobLastRunRunDuration;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String assetDbtJobLastRunRunDurationHumanized;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private Long assetDbtJobLastRunStartedAt;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String assetDbtJobLastRunStatusMessage;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String assetDbtJobLastRunTotalDuration;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String assetDbtJobLastRunTotalDurationHumanized;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private Long assetDbtJobLastRunUpdatedAt;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String assetDbtJobLastRunUrl;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String assetDbtJobName;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private Long assetDbtJobNextRun;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String assetDbtJobNextRunHumanized;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String assetDbtJobSchedule;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String assetDbtJobScheduleCronHumanized;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String assetDbtJobStatus;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String assetDbtMeta;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String assetDbtPackageName;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String assetDbtProjectName;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String assetDbtSemanticLayerProxyUrl;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String assetDbtSourceFreshnessCriteria;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList assetDbtTags;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String assetDbtTestStatus;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String assetDbtUniqueId;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String assetDbtWorkflowLastUpdated;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private AtlanIcon assetIcon;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList assetMcAlertQualifiedNames;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList assetMcIncidentNames;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList assetMcIncidentPriorities;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList assetMcIncidentQualifiedNames;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList assetMcIncidentSeverities;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList assetMcIncidentStates;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList assetMcIncidentSubTypes;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList assetMcIncidentTypes;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private Long assetMcLastSyncRunAt;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList assetMcMonitorNames;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList assetMcMonitorQualifiedNames;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList assetMcMonitorScheduleTypes;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList assetMcMonitorStatuses;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList assetMcMonitorTypes;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private Long assetPoliciesCount;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList assetPolicyGUIDs;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private Long assetSodaCheckCount;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String assetSodaCheckStatuses;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String assetSodaDQStatus;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private Long assetSodaLastScanAt;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private Long assetSodaLastSyncRunAt;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String assetSodaSourceURL;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList assetTags;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String assetThemeHex;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList assignedTerms;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private CertificateStatus certificateStatus;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String certificateStatusMessage;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private Long certificateUpdatedAt;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String certificateUpdatedBy;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String connectionName;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String connectionQualifiedName;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private AtlanConnectorType connectorType;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private IDataContract dataContractLatest;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private IDataContract dataContractLatestCertified;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String dbtQualifiedName;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String description;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String displayName;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList domainGUIDs;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList files;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private Boolean hasContract;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private Boolean hasLineage;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList inputPortDataProducts;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private Boolean isAIGenerated;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private Boolean isDiscoverable;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private Boolean isEditable;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private Boolean isPartial;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private Long lastRowChangedAt;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String lastSyncRun;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private Long lastSyncRunAt;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String lastSyncWorkflowName;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String lexicographicalSortOrder;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList links;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList mcIncidents;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList mcMonitors;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList metrics;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String name;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList nonCompliantAssetPolicyGUIDs;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList outputPortDataProducts;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList ownerGroups;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList ownerUsers;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private Double popularityScore;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String qualifiedName;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private IReadme readme;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String sampleDataUrl;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList schemaRegistrySubjects;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList sodaChecks;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private SourceCostUnitType sourceCostUnit;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private Long sourceCreatedAt;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String sourceCreatedBy;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String sourceEmbedURL;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private Long sourceLastReadAt;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String sourceOwners;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList sourceQueryComputeCostRecords;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList sourceQueryComputeCosts;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private Long sourceReadCount;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList sourceReadExpensiveQueryRecords;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList sourceReadPopularQueryRecords;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private Double sourceReadQueryCost;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList sourceReadRecentUserRecords;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList sourceReadRecentUsers;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList sourceReadSlowQueryRecords;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList sourceReadTopUserRecords;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList sourceReadTopUsers;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private Long sourceReadUserCount;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private Double sourceTotalCost;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String sourceURL;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private Long sourceUpdatedAt;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String sourceUpdatedBy;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList starredBy;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private Integer starredCount;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList starredDetails;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String subType;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String tenantId;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList userDefRelationshipFroms;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList userDefRelationshipTos;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String userDescription;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private Double viewScore;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList viewerGroups;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList viewerUsers;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList nullFields;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList atlanTags;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList customMetadataSets$key;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList customMetadataSets$value;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private AtlanStatus status;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String createdBy;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String updatedBy;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private Long createTime;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private Long updateTime;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private String deleteHandler;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private Long depth;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private List immediateUpstream;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private List immediateDownstream;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList atlanTagNames;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private Boolean isIncomplete;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList meaningNames;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList meanings;
@java.lang.SuppressWarnings("all")
@lombok.Generated
private java.util.ArrayList pendingTasks;
/** Remove the announcement from the asset, if any is set on the asset. */
public B removeAnnouncement() {
nullField("announcementType");
nullField("announcementTitle");
nullField("announcementMessage");
return self();
}
/** Remove all custom metadata from the asset, if any is set on the asset. */
public B removeCustomMetadata() {
// It is sufficient to simply exclude businessAttributes from a request in order
// for them to be removed, as long as the "replaceBusinessAttributes" flag is set
// to true (which it must be for any update to work to businessAttributes anyway)
clearCustomMetadataSets();
return self();
}
/** Remove the Atlan tags from the asset, if the asset is classified with any. */
public B removeAtlanTags() {
// It is sufficient to simply exclude Atlan tags from a request in order
// for them to be removed, as long as the "replaceAtlanTags" flag is set to
// true (which it must be for any update to work to Atlan tags anyway)
clearAtlanTags();
clearAtlanTagNames();
return self();
}
/** Remove the system description from the asset, if any is set on the asset. */
public B removeDescription() {
nullField("description");
return self();
}
/** Remove the user's description from the asset, if any is set on the asset. */
public B removeUserDescription() {
nullField("userDescription");
return self();
}
/** Remove the owners from the asset, if any are set on the asset. */
public B removeOwners() {
nullField("ownerUsers");
nullField("ownerGroups");
return self();
}
/** Remove the certificate from the asset, if any is set on the asset. */
public B removeCertificate() {
nullField("certificateStatus");
nullField("certificateStatusMessage");
return self();
}
/** Remove the linked terms from the asset, if any are set on the asset. */
public B removeAssignedTerms() {
nullField("assignedTerms");
return self();
}
@java.lang.Override
@java.lang.SuppressWarnings("all")
@lombok.Generated
protected B $fillValuesFrom(final C instance) {
super.$fillValuesFrom(instance);
Asset.AssetBuilder.$fillValuesFromInstanceIntoBuilder(instance, this);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
private static void $fillValuesFromInstanceIntoBuilder(final Asset instance, final Asset.AssetBuilder, ?> b) {
b.adminGroups(instance.adminGroups == null ? java.util.Collections.emptySortedSet() : instance.adminGroups);
b.adminRoles(instance.adminRoles == null ? java.util.Collections.emptySortedSet() : instance.adminRoles);
b.adminUsers(instance.adminUsers == null ? java.util.Collections.emptySortedSet() : instance.adminUsers);
b.announcementMessage(instance.announcementMessage);
b.announcementTitle(instance.announcementTitle);
b.announcementType(instance.announcementType);
b.announcementUpdatedAt(instance.announcementUpdatedAt);
b.announcementUpdatedBy(instance.announcementUpdatedBy);
b.anomaloChecks(instance.anomaloChecks == null ? java.util.Collections.emptySortedSet() : instance.anomaloChecks);
b.assetAnomaloAppliedCheckTypes(instance.assetAnomaloAppliedCheckTypes == null ? java.util.Collections.emptySortedSet() : instance.assetAnomaloAppliedCheckTypes);
b.assetAnomaloCheckCount(instance.assetAnomaloCheckCount);
b.assetAnomaloCheckStatuses(instance.assetAnomaloCheckStatuses);
b.assetAnomaloDQStatus(instance.assetAnomaloDQStatus);
b.assetAnomaloFailedCheckCount(instance.assetAnomaloFailedCheckCount);
b.assetAnomaloFailedCheckTypes(instance.assetAnomaloFailedCheckTypes == null ? java.util.Collections.emptySortedSet() : instance.assetAnomaloFailedCheckTypes);
b.assetAnomaloLastCheckRunAt(instance.assetAnomaloLastCheckRunAt);
b.assetAnomaloSourceUrl(instance.assetAnomaloSourceUrl);
b.assetCoverImage(instance.assetCoverImage);
b.assetDbtAccountName(instance.assetDbtAccountName);
b.assetDbtAlias(instance.assetDbtAlias);
b.assetDbtEnvironmentDbtVersion(instance.assetDbtEnvironmentDbtVersion);
b.assetDbtEnvironmentName(instance.assetDbtEnvironmentName);
b.assetDbtJobLastRun(instance.assetDbtJobLastRun);
b.assetDbtJobLastRunArtifactS3Path(instance.assetDbtJobLastRunArtifactS3Path);
b.assetDbtJobLastRunArtifactsSaved(instance.assetDbtJobLastRunArtifactsSaved);
b.assetDbtJobLastRunCreatedAt(instance.assetDbtJobLastRunCreatedAt);
b.assetDbtJobLastRunDequedAt(instance.assetDbtJobLastRunDequedAt);
b.assetDbtJobLastRunExecutedByThreadId(instance.assetDbtJobLastRunExecutedByThreadId);
b.assetDbtJobLastRunGitBranch(instance.assetDbtJobLastRunGitBranch);
b.assetDbtJobLastRunGitSha(instance.assetDbtJobLastRunGitSha);
b.assetDbtJobLastRunHasDocsGenerated(instance.assetDbtJobLastRunHasDocsGenerated);
b.assetDbtJobLastRunHasSourcesGenerated(instance.assetDbtJobLastRunHasSourcesGenerated);
b.assetDbtJobLastRunNotificationsSent(instance.assetDbtJobLastRunNotificationsSent);
b.assetDbtJobLastRunOwnerThreadId(instance.assetDbtJobLastRunOwnerThreadId);
b.assetDbtJobLastRunQueuedDuration(instance.assetDbtJobLastRunQueuedDuration);
b.assetDbtJobLastRunQueuedDurationHumanized(instance.assetDbtJobLastRunQueuedDurationHumanized);
b.assetDbtJobLastRunRunDuration(instance.assetDbtJobLastRunRunDuration);
b.assetDbtJobLastRunRunDurationHumanized(instance.assetDbtJobLastRunRunDurationHumanized);
b.assetDbtJobLastRunStartedAt(instance.assetDbtJobLastRunStartedAt);
b.assetDbtJobLastRunStatusMessage(instance.assetDbtJobLastRunStatusMessage);
b.assetDbtJobLastRunTotalDuration(instance.assetDbtJobLastRunTotalDuration);
b.assetDbtJobLastRunTotalDurationHumanized(instance.assetDbtJobLastRunTotalDurationHumanized);
b.assetDbtJobLastRunUpdatedAt(instance.assetDbtJobLastRunUpdatedAt);
b.assetDbtJobLastRunUrl(instance.assetDbtJobLastRunUrl);
b.assetDbtJobName(instance.assetDbtJobName);
b.assetDbtJobNextRun(instance.assetDbtJobNextRun);
b.assetDbtJobNextRunHumanized(instance.assetDbtJobNextRunHumanized);
b.assetDbtJobSchedule(instance.assetDbtJobSchedule);
b.assetDbtJobScheduleCronHumanized(instance.assetDbtJobScheduleCronHumanized);
b.assetDbtJobStatus(instance.assetDbtJobStatus);
b.assetDbtMeta(instance.assetDbtMeta);
b.assetDbtPackageName(instance.assetDbtPackageName);
b.assetDbtProjectName(instance.assetDbtProjectName);
b.assetDbtSemanticLayerProxyUrl(instance.assetDbtSemanticLayerProxyUrl);
b.assetDbtSourceFreshnessCriteria(instance.assetDbtSourceFreshnessCriteria);
b.assetDbtTags(instance.assetDbtTags == null ? java.util.Collections.emptySortedSet() : instance.assetDbtTags);
b.assetDbtTestStatus(instance.assetDbtTestStatus);
b.assetDbtUniqueId(instance.assetDbtUniqueId);
b.assetDbtWorkflowLastUpdated(instance.assetDbtWorkflowLastUpdated);
b.assetIcon(instance.assetIcon);
b.assetMcAlertQualifiedNames(instance.assetMcAlertQualifiedNames == null ? java.util.Collections.emptySortedSet() : instance.assetMcAlertQualifiedNames);
b.assetMcIncidentNames(instance.assetMcIncidentNames == null ? java.util.Collections.emptySortedSet() : instance.assetMcIncidentNames);
b.assetMcIncidentPriorities(instance.assetMcIncidentPriorities == null ? java.util.Collections.emptySortedSet() : instance.assetMcIncidentPriorities);
b.assetMcIncidentQualifiedNames(instance.assetMcIncidentQualifiedNames == null ? java.util.Collections.emptySortedSet() : instance.assetMcIncidentQualifiedNames);
b.assetMcIncidentSeverities(instance.assetMcIncidentSeverities == null ? java.util.Collections.emptySortedSet() : instance.assetMcIncidentSeverities);
b.assetMcIncidentStates(instance.assetMcIncidentStates == null ? java.util.Collections.emptySortedSet() : instance.assetMcIncidentStates);
b.assetMcIncidentSubTypes(instance.assetMcIncidentSubTypes == null ? java.util.Collections.emptySortedSet() : instance.assetMcIncidentSubTypes);
b.assetMcIncidentTypes(instance.assetMcIncidentTypes == null ? java.util.Collections.emptySortedSet() : instance.assetMcIncidentTypes);
b.assetMcLastSyncRunAt(instance.assetMcLastSyncRunAt);
b.assetMcMonitorNames(instance.assetMcMonitorNames == null ? java.util.Collections.emptySortedSet() : instance.assetMcMonitorNames);
b.assetMcMonitorQualifiedNames(instance.assetMcMonitorQualifiedNames == null ? java.util.Collections.emptySortedSet() : instance.assetMcMonitorQualifiedNames);
b.assetMcMonitorScheduleTypes(instance.assetMcMonitorScheduleTypes == null ? java.util.Collections.emptySortedSet() : instance.assetMcMonitorScheduleTypes);
b.assetMcMonitorStatuses(instance.assetMcMonitorStatuses == null ? java.util.Collections.emptySortedSet() : instance.assetMcMonitorStatuses);
b.assetMcMonitorTypes(instance.assetMcMonitorTypes == null ? java.util.Collections.emptySortedSet() : instance.assetMcMonitorTypes);
b.assetPoliciesCount(instance.assetPoliciesCount);
b.assetPolicyGUIDs(instance.assetPolicyGUIDs == null ? java.util.Collections.emptySortedSet() : instance.assetPolicyGUIDs);
b.assetSodaCheckCount(instance.assetSodaCheckCount);
b.assetSodaCheckStatuses(instance.assetSodaCheckStatuses);
b.assetSodaDQStatus(instance.assetSodaDQStatus);
b.assetSodaLastScanAt(instance.assetSodaLastScanAt);
b.assetSodaLastSyncRunAt(instance.assetSodaLastSyncRunAt);
b.assetSodaSourceURL(instance.assetSodaSourceURL);
b.assetTags(instance.assetTags == null ? java.util.Collections.emptySortedSet() : instance.assetTags);
b.assetThemeHex(instance.assetThemeHex);
b.assignedTerms(instance.assignedTerms == null ? java.util.Collections.emptySortedSet() : instance.assignedTerms);
b.certificateStatus(instance.certificateStatus);
b.certificateStatusMessage(instance.certificateStatusMessage);
b.certificateUpdatedAt(instance.certificateUpdatedAt);
b.certificateUpdatedBy(instance.certificateUpdatedBy);
b.connectionName(instance.connectionName);
b.connectionQualifiedName(instance.connectionQualifiedName);
b.connectorType(instance.connectorType);
b.dataContractLatest(instance.dataContractLatest);
b.dataContractLatestCertified(instance.dataContractLatestCertified);
b.dbtQualifiedName(instance.dbtQualifiedName);
b.description(instance.description);
b.displayName(instance.displayName);
b.domainGUIDs(instance.domainGUIDs == null ? java.util.Collections.emptySortedSet() : instance.domainGUIDs);
b.files(instance.files == null ? java.util.Collections.emptySortedSet() : instance.files);
b.hasContract(instance.hasContract);
b.hasLineage(instance.hasLineage);
b.inputPortDataProducts(instance.inputPortDataProducts == null ? java.util.Collections.emptySortedSet() : instance.inputPortDataProducts);
b.isAIGenerated(instance.isAIGenerated);
b.isDiscoverable(instance.isDiscoverable);
b.isEditable(instance.isEditable);
b.isPartial(instance.isPartial);
b.lastRowChangedAt(instance.lastRowChangedAt);
b.lastSyncRun(instance.lastSyncRun);
b.lastSyncRunAt(instance.lastSyncRunAt);
b.lastSyncWorkflowName(instance.lastSyncWorkflowName);
b.lexicographicalSortOrder(instance.lexicographicalSortOrder);
b.links(instance.links == null ? java.util.Collections.emptySortedSet() : instance.links);
b.mcIncidents(instance.mcIncidents == null ? java.util.Collections.emptySortedSet() : instance.mcIncidents);
b.mcMonitors(instance.mcMonitors == null ? java.util.Collections.emptySortedSet() : instance.mcMonitors);
b.metrics(instance.metrics == null ? java.util.Collections.emptySortedSet() : instance.metrics);
b.name(instance.name);
b.nonCompliantAssetPolicyGUIDs(instance.nonCompliantAssetPolicyGUIDs == null ? java.util.Collections.emptySortedSet() : instance.nonCompliantAssetPolicyGUIDs);
b.outputPortDataProducts(instance.outputPortDataProducts == null ? java.util.Collections.emptySortedSet() : instance.outputPortDataProducts);
b.ownerGroups(instance.ownerGroups == null ? java.util.Collections.emptySortedSet() : instance.ownerGroups);
b.ownerUsers(instance.ownerUsers == null ? java.util.Collections.emptySortedSet() : instance.ownerUsers);
b.popularityScore(instance.popularityScore);
b.qualifiedName(instance.qualifiedName);
b.readme(instance.readme);
b.sampleDataUrl(instance.sampleDataUrl);
b.schemaRegistrySubjects(instance.schemaRegistrySubjects == null ? java.util.Collections.emptySortedSet() : instance.schemaRegistrySubjects);
b.sodaChecks(instance.sodaChecks == null ? java.util.Collections.emptySortedSet() : instance.sodaChecks);
b.sourceCostUnit(instance.sourceCostUnit);
b.sourceCreatedAt(instance.sourceCreatedAt);
b.sourceCreatedBy(instance.sourceCreatedBy);
b.sourceEmbedURL(instance.sourceEmbedURL);
b.sourceLastReadAt(instance.sourceLastReadAt);
b.sourceOwners(instance.sourceOwners);
b.sourceQueryComputeCostRecords(instance.sourceQueryComputeCostRecords == null ? java.util.Collections.emptyList() : instance.sourceQueryComputeCostRecords);
b.sourceQueryComputeCosts(instance.sourceQueryComputeCosts == null ? java.util.Collections.emptySortedSet() : instance.sourceQueryComputeCosts);
b.sourceReadCount(instance.sourceReadCount);
b.sourceReadExpensiveQueryRecords(instance.sourceReadExpensiveQueryRecords == null ? java.util.Collections.emptyList() : instance.sourceReadExpensiveQueryRecords);
b.sourceReadPopularQueryRecords(instance.sourceReadPopularQueryRecords == null ? java.util.Collections.emptyList() : instance.sourceReadPopularQueryRecords);
b.sourceReadQueryCost(instance.sourceReadQueryCost);
b.sourceReadRecentUserRecords(instance.sourceReadRecentUserRecords == null ? java.util.Collections.emptyList() : instance.sourceReadRecentUserRecords);
b.sourceReadRecentUsers(instance.sourceReadRecentUsers == null ? java.util.Collections.emptySortedSet() : instance.sourceReadRecentUsers);
b.sourceReadSlowQueryRecords(instance.sourceReadSlowQueryRecords == null ? java.util.Collections.emptyList() : instance.sourceReadSlowQueryRecords);
b.sourceReadTopUserRecords(instance.sourceReadTopUserRecords == null ? java.util.Collections.emptyList() : instance.sourceReadTopUserRecords);
b.sourceReadTopUsers(instance.sourceReadTopUsers == null ? java.util.Collections.emptySortedSet() : instance.sourceReadTopUsers);
b.sourceReadUserCount(instance.sourceReadUserCount);
b.sourceTotalCost(instance.sourceTotalCost);
b.sourceURL(instance.sourceURL);
b.sourceUpdatedAt(instance.sourceUpdatedAt);
b.sourceUpdatedBy(instance.sourceUpdatedBy);
b.starredBy(instance.starredBy == null ? java.util.Collections.emptySortedSet() : instance.starredBy);
b.starredCount(instance.starredCount);
b.starredDetails(instance.starredDetails == null ? java.util.Collections.emptyList() : instance.starredDetails);
b.subType(instance.subType);
b.tenantId(instance.tenantId);
b.userDefRelationshipFroms(instance.userDefRelationshipFroms == null ? java.util.Collections.emptySortedSet() : instance.userDefRelationshipFroms);
b.userDefRelationshipTos(instance.userDefRelationshipTos == null ? java.util.Collections.emptySortedSet() : instance.userDefRelationshipTos);
b.userDescription(instance.userDescription);
b.viewScore(instance.viewScore);
b.viewerGroups(instance.viewerGroups == null ? java.util.Collections.emptySortedSet() : instance.viewerGroups);
b.viewerUsers(instance.viewerUsers == null ? java.util.Collections.emptySortedSet() : instance.viewerUsers);
b.nullFields(instance.nullFields == null ? java.util.Collections.emptySet() : instance.nullFields);
b.atlanTags(instance.atlanTags == null ? java.util.Collections.emptySortedSet() : instance.atlanTags);
b.customMetadataSets(instance.customMetadataSets == null ? java.util.Collections.emptyMap() : instance.customMetadataSets);
b.status(instance.status);
b.createdBy(instance.createdBy);
b.updatedBy(instance.updatedBy);
b.createTime(instance.createTime);
b.updateTime(instance.updateTime);
b.deleteHandler(instance.deleteHandler);
b.depth(instance.depth);
b.immediateUpstream(instance.immediateUpstream);
b.immediateDownstream(instance.immediateDownstream);
b.atlanTagNames(instance.atlanTagNames == null ? java.util.Collections.emptySortedSet() : instance.atlanTagNames);
b.isIncomplete(instance.isIncomplete);
b.meaningNames(instance.meaningNames == null ? java.util.Collections.emptySortedSet() : instance.meaningNames);
b.meanings(instance.meanings == null ? java.util.Collections.emptySortedSet() : instance.meanings);
b.pendingTasks(instance.pendingTasks == null ? java.util.Collections.emptySortedSet() : instance.pendingTasks);
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B adminGroup(final String adminGroup) {
if (this.adminGroups == null) this.adminGroups = new java.util.ArrayList();
this.adminGroups.add(adminGroup);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B adminGroups(final java.util.Collection extends String> adminGroups) {
if (adminGroups == null) {
throw new java.lang.NullPointerException("adminGroups cannot be null");
}
if (this.adminGroups == null) this.adminGroups = new java.util.ArrayList();
this.adminGroups.addAll(adminGroups);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B clearAdminGroups() {
if (this.adminGroups != null) this.adminGroups.clear();
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B adminRole(final String adminRole) {
if (this.adminRoles == null) this.adminRoles = new java.util.ArrayList();
this.adminRoles.add(adminRole);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B adminRoles(final java.util.Collection extends String> adminRoles) {
if (adminRoles == null) {
throw new java.lang.NullPointerException("adminRoles cannot be null");
}
if (this.adminRoles == null) this.adminRoles = new java.util.ArrayList();
this.adminRoles.addAll(adminRoles);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B clearAdminRoles() {
if (this.adminRoles != null) this.adminRoles.clear();
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B adminUser(final String adminUser) {
if (this.adminUsers == null) this.adminUsers = new java.util.ArrayList();
this.adminUsers.add(adminUser);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B adminUsers(final java.util.Collection extends String> adminUsers) {
if (adminUsers == null) {
throw new java.lang.NullPointerException("adminUsers cannot be null");
}
if (this.adminUsers == null) this.adminUsers = new java.util.ArrayList();
this.adminUsers.addAll(adminUsers);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B clearAdminUsers() {
if (this.adminUsers != null) this.adminUsers.clear();
return self();
}
/**
* Detailed message to include in the announcement on this asset.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B announcementMessage(final String announcementMessage) {
this.announcementMessage = announcementMessage;
return self();
}
/**
* Brief title for the announcement on this asset. Required when announcementType is specified.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B announcementTitle(final String announcementTitle) {
this.announcementTitle = announcementTitle;
return self();
}
/**
* Type of announcement on this asset.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B announcementType(final AtlanAnnouncementType announcementType) {
this.announcementType = announcementType;
return self();
}
/**
* Time (epoch) at which the announcement was last updated, in milliseconds.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B announcementUpdatedAt(final Long announcementUpdatedAt) {
this.announcementUpdatedAt = announcementUpdatedAt;
return self();
}
/**
* Name of the user who last updated the announcement.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B announcementUpdatedBy(final String announcementUpdatedBy) {
this.announcementUpdatedBy = announcementUpdatedBy;
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B anomaloCheck(final IAnomaloCheck anomaloCheck) {
if (this.anomaloChecks == null) this.anomaloChecks = new java.util.ArrayList();
this.anomaloChecks.add(anomaloCheck);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B anomaloChecks(final java.util.Collection extends IAnomaloCheck> anomaloChecks) {
if (anomaloChecks == null) {
throw new java.lang.NullPointerException("anomaloChecks cannot be null");
}
if (this.anomaloChecks == null) this.anomaloChecks = new java.util.ArrayList();
this.anomaloChecks.addAll(anomaloChecks);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B clearAnomaloChecks() {
if (this.anomaloChecks != null) this.anomaloChecks.clear();
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetAnomaloAppliedCheckType(final String assetAnomaloAppliedCheckType) {
if (this.assetAnomaloAppliedCheckTypes == null) this.assetAnomaloAppliedCheckTypes = new java.util.ArrayList();
this.assetAnomaloAppliedCheckTypes.add(assetAnomaloAppliedCheckType);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetAnomaloAppliedCheckTypes(final java.util.Collection extends String> assetAnomaloAppliedCheckTypes) {
if (assetAnomaloAppliedCheckTypes == null) {
throw new java.lang.NullPointerException("assetAnomaloAppliedCheckTypes cannot be null");
}
if (this.assetAnomaloAppliedCheckTypes == null) this.assetAnomaloAppliedCheckTypes = new java.util.ArrayList();
this.assetAnomaloAppliedCheckTypes.addAll(assetAnomaloAppliedCheckTypes);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B clearAssetAnomaloAppliedCheckTypes() {
if (this.assetAnomaloAppliedCheckTypes != null) this.assetAnomaloAppliedCheckTypes.clear();
return self();
}
/**
* Total number of checks present in Anomalo for this asset.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetAnomaloCheckCount(final Long assetAnomaloCheckCount) {
this.assetAnomaloCheckCount = assetAnomaloCheckCount;
return self();
}
/**
* Stringified JSON object containing status of all Anomalo checks associated to this asset.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetAnomaloCheckStatuses(final String assetAnomaloCheckStatuses) {
this.assetAnomaloCheckStatuses = assetAnomaloCheckStatuses;
return self();
}
/**
* Status of data quality from Anomalo.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetAnomaloDQStatus(final String assetAnomaloDQStatus) {
this.assetAnomaloDQStatus = assetAnomaloDQStatus;
return self();
}
/**
* Total number of checks failed in Anomalo for this asset.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetAnomaloFailedCheckCount(final Long assetAnomaloFailedCheckCount) {
this.assetAnomaloFailedCheckCount = assetAnomaloFailedCheckCount;
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetAnomaloFailedCheckType(final String assetAnomaloFailedCheckType) {
if (this.assetAnomaloFailedCheckTypes == null) this.assetAnomaloFailedCheckTypes = new java.util.ArrayList();
this.assetAnomaloFailedCheckTypes.add(assetAnomaloFailedCheckType);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetAnomaloFailedCheckTypes(final java.util.Collection extends String> assetAnomaloFailedCheckTypes) {
if (assetAnomaloFailedCheckTypes == null) {
throw new java.lang.NullPointerException("assetAnomaloFailedCheckTypes cannot be null");
}
if (this.assetAnomaloFailedCheckTypes == null) this.assetAnomaloFailedCheckTypes = new java.util.ArrayList();
this.assetAnomaloFailedCheckTypes.addAll(assetAnomaloFailedCheckTypes);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B clearAssetAnomaloFailedCheckTypes() {
if (this.assetAnomaloFailedCheckTypes != null) this.assetAnomaloFailedCheckTypes.clear();
return self();
}
/**
* Time (epoch) at which the last check was run via Anomalo.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetAnomaloLastCheckRunAt(final Long assetAnomaloLastCheckRunAt) {
this.assetAnomaloLastCheckRunAt = assetAnomaloLastCheckRunAt;
return self();
}
/**
* URL of the source in Anomalo.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetAnomaloSourceUrl(final String assetAnomaloSourceUrl) {
this.assetAnomaloSourceUrl = assetAnomaloSourceUrl;
return self();
}
/**
* TBC
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetCoverImage(final String assetCoverImage) {
this.assetCoverImage = assetCoverImage;
return self();
}
/**
* Name of the account in which this asset exists in dbt.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetDbtAccountName(final String assetDbtAccountName) {
this.assetDbtAccountName = assetDbtAccountName;
return self();
}
/**
* Alias of this asset in dbt.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetDbtAlias(final String assetDbtAlias) {
this.assetDbtAlias = assetDbtAlias;
return self();
}
/**
* Version of the environment in which this asset is materialized in dbt.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetDbtEnvironmentDbtVersion(final String assetDbtEnvironmentDbtVersion) {
this.assetDbtEnvironmentDbtVersion = assetDbtEnvironmentDbtVersion;
return self();
}
/**
* Name of the environment in which this asset is materialized in dbt.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetDbtEnvironmentName(final String assetDbtEnvironmentName) {
this.assetDbtEnvironmentName = assetDbtEnvironmentName;
return self();
}
/**
* Time (epoch) at which the job that materialized this asset in dbt last ran, in milliseconds.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetDbtJobLastRun(final Long assetDbtJobLastRun) {
this.assetDbtJobLastRun = assetDbtJobLastRun;
return self();
}
/**
* Path in S3 to the artifacts saved from the last run of the job that materialized this asset in dbt.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetDbtJobLastRunArtifactS3Path(final String assetDbtJobLastRunArtifactS3Path) {
this.assetDbtJobLastRunArtifactS3Path = assetDbtJobLastRunArtifactS3Path;
return self();
}
/**
* Whether artifacts were saved from the last run of the job that materialized this asset in dbt (true) or not (false).
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetDbtJobLastRunArtifactsSaved(final Boolean assetDbtJobLastRunArtifactsSaved) {
this.assetDbtJobLastRunArtifactsSaved = assetDbtJobLastRunArtifactsSaved;
return self();
}
/**
* Time (epoch) at which the job that materialized this asset in dbt was last created, in milliseconds.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetDbtJobLastRunCreatedAt(final Long assetDbtJobLastRunCreatedAt) {
this.assetDbtJobLastRunCreatedAt = assetDbtJobLastRunCreatedAt;
return self();
}
/**
* Time (epoch) at which the job that materialized this asset in dbt was dequeued, in milliseconds.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetDbtJobLastRunDequedAt(final Long assetDbtJobLastRunDequedAt) {
this.assetDbtJobLastRunDequedAt = assetDbtJobLastRunDequedAt;
return self();
}
/**
* Thread ID of the user who executed the last run of the job that materialized this asset in dbt.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetDbtJobLastRunExecutedByThreadId(final String assetDbtJobLastRunExecutedByThreadId) {
this.assetDbtJobLastRunExecutedByThreadId = assetDbtJobLastRunExecutedByThreadId;
return self();
}
/**
* Branch in git from which the last run of the job that materialized this asset in dbt ran.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetDbtJobLastRunGitBranch(final String assetDbtJobLastRunGitBranch) {
this.assetDbtJobLastRunGitBranch = assetDbtJobLastRunGitBranch;
return self();
}
/**
* SHA hash in git for the last run of the job that materialized this asset in dbt.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetDbtJobLastRunGitSha(final String assetDbtJobLastRunGitSha) {
this.assetDbtJobLastRunGitSha = assetDbtJobLastRunGitSha;
return self();
}
/**
* Whether docs were generated from the last run of the job that materialized this asset in dbt (true) or not (false).
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetDbtJobLastRunHasDocsGenerated(final Boolean assetDbtJobLastRunHasDocsGenerated) {
this.assetDbtJobLastRunHasDocsGenerated = assetDbtJobLastRunHasDocsGenerated;
return self();
}
/**
* Whether sources were generated from the last run of the job that materialized this asset in dbt (true) or not (false).
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetDbtJobLastRunHasSourcesGenerated(final Boolean assetDbtJobLastRunHasSourcesGenerated) {
this.assetDbtJobLastRunHasSourcesGenerated = assetDbtJobLastRunHasSourcesGenerated;
return self();
}
/**
* Whether notifications were sent from the last run of the job that materialized this asset in dbt (true) or not (false).
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetDbtJobLastRunNotificationsSent(final Boolean assetDbtJobLastRunNotificationsSent) {
this.assetDbtJobLastRunNotificationsSent = assetDbtJobLastRunNotificationsSent;
return self();
}
/**
* Thread ID of the owner of the last run of the job that materialized this asset in dbt.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetDbtJobLastRunOwnerThreadId(final String assetDbtJobLastRunOwnerThreadId) {
this.assetDbtJobLastRunOwnerThreadId = assetDbtJobLastRunOwnerThreadId;
return self();
}
/**
* Total duration the job that materialized this asset in dbt spent being queued.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetDbtJobLastRunQueuedDuration(final String assetDbtJobLastRunQueuedDuration) {
this.assetDbtJobLastRunQueuedDuration = assetDbtJobLastRunQueuedDuration;
return self();
}
/**
* Human-readable total duration of the last run of the job that materialized this asset in dbt spend being queued.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetDbtJobLastRunQueuedDurationHumanized(final String assetDbtJobLastRunQueuedDurationHumanized) {
this.assetDbtJobLastRunQueuedDurationHumanized = assetDbtJobLastRunQueuedDurationHumanized;
return self();
}
/**
* Run duration of the last run of the job that materialized this asset in dbt.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetDbtJobLastRunRunDuration(final String assetDbtJobLastRunRunDuration) {
this.assetDbtJobLastRunRunDuration = assetDbtJobLastRunRunDuration;
return self();
}
/**
* Human-readable run duration of the last run of the job that materialized this asset in dbt.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetDbtJobLastRunRunDurationHumanized(final String assetDbtJobLastRunRunDurationHumanized) {
this.assetDbtJobLastRunRunDurationHumanized = assetDbtJobLastRunRunDurationHumanized;
return self();
}
/**
* Time (epoch) at which the job that materialized this asset in dbt was started running, in milliseconds.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetDbtJobLastRunStartedAt(final Long assetDbtJobLastRunStartedAt) {
this.assetDbtJobLastRunStartedAt = assetDbtJobLastRunStartedAt;
return self();
}
/**
* Status message of the last run of the job that materialized this asset in dbt.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetDbtJobLastRunStatusMessage(final String assetDbtJobLastRunStatusMessage) {
this.assetDbtJobLastRunStatusMessage = assetDbtJobLastRunStatusMessage;
return self();
}
/**
* Total duration of the last run of the job that materialized this asset in dbt.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetDbtJobLastRunTotalDuration(final String assetDbtJobLastRunTotalDuration) {
this.assetDbtJobLastRunTotalDuration = assetDbtJobLastRunTotalDuration;
return self();
}
/**
* Human-readable total duration of the last run of the job that materialized this asset in dbt.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetDbtJobLastRunTotalDurationHumanized(final String assetDbtJobLastRunTotalDurationHumanized) {
this.assetDbtJobLastRunTotalDurationHumanized = assetDbtJobLastRunTotalDurationHumanized;
return self();
}
/**
* Time (epoch) at which the job that materialized this asset in dbt was last updated, in milliseconds.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetDbtJobLastRunUpdatedAt(final Long assetDbtJobLastRunUpdatedAt) {
this.assetDbtJobLastRunUpdatedAt = assetDbtJobLastRunUpdatedAt;
return self();
}
/**
* URL of the last run of the job that materialized this asset in dbt.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetDbtJobLastRunUrl(final String assetDbtJobLastRunUrl) {
this.assetDbtJobLastRunUrl = assetDbtJobLastRunUrl;
return self();
}
/**
* Name of the job that materialized this asset in dbt.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetDbtJobName(final String assetDbtJobName) {
this.assetDbtJobName = assetDbtJobName;
return self();
}
/**
* Time (epoch) when the next run of the job that materializes this asset in dbt is scheduled.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetDbtJobNextRun(final Long assetDbtJobNextRun) {
this.assetDbtJobNextRun = assetDbtJobNextRun;
return self();
}
/**
* Human-readable time when the next run of the job that materializes this asset in dbt is scheduled.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetDbtJobNextRunHumanized(final String assetDbtJobNextRunHumanized) {
this.assetDbtJobNextRunHumanized = assetDbtJobNextRunHumanized;
return self();
}
/**
* Schedule of the job that materialized this asset in dbt.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetDbtJobSchedule(final String assetDbtJobSchedule) {
this.assetDbtJobSchedule = assetDbtJobSchedule;
return self();
}
/**
* Human-readable cron schedule of the job that materialized this asset in dbt.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetDbtJobScheduleCronHumanized(final String assetDbtJobScheduleCronHumanized) {
this.assetDbtJobScheduleCronHumanized = assetDbtJobScheduleCronHumanized;
return self();
}
/**
* Status of the job that materialized this asset in dbt.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetDbtJobStatus(final String assetDbtJobStatus) {
this.assetDbtJobStatus = assetDbtJobStatus;
return self();
}
/**
* Metadata for this asset in dbt, specifically everything under the 'meta' key in the dbt object.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetDbtMeta(final String assetDbtMeta) {
this.assetDbtMeta = assetDbtMeta;
return self();
}
/**
* Name of the package in which this asset exists in dbt.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetDbtPackageName(final String assetDbtPackageName) {
this.assetDbtPackageName = assetDbtPackageName;
return self();
}
/**
* Name of the project in which this asset exists in dbt.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetDbtProjectName(final String assetDbtProjectName) {
this.assetDbtProjectName = assetDbtProjectName;
return self();
}
/**
* URL of the semantic layer proxy for this asset in dbt.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetDbtSemanticLayerProxyUrl(final String assetDbtSemanticLayerProxyUrl) {
this.assetDbtSemanticLayerProxyUrl = assetDbtSemanticLayerProxyUrl;
return self();
}
/**
* Freshness criteria for the source of this asset in dbt.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetDbtSourceFreshnessCriteria(final String assetDbtSourceFreshnessCriteria) {
this.assetDbtSourceFreshnessCriteria = assetDbtSourceFreshnessCriteria;
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetDbtTag(final String assetDbtTag) {
if (this.assetDbtTags == null) this.assetDbtTags = new java.util.ArrayList();
this.assetDbtTags.add(assetDbtTag);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetDbtTags(final java.util.Collection extends String> assetDbtTags) {
if (assetDbtTags == null) {
throw new java.lang.NullPointerException("assetDbtTags cannot be null");
}
if (this.assetDbtTags == null) this.assetDbtTags = new java.util.ArrayList();
this.assetDbtTags.addAll(assetDbtTags);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B clearAssetDbtTags() {
if (this.assetDbtTags != null) this.assetDbtTags.clear();
return self();
}
/**
* All associated dbt test statuses.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetDbtTestStatus(final String assetDbtTestStatus) {
this.assetDbtTestStatus = assetDbtTestStatus;
return self();
}
/**
* Unique identifier of this asset in dbt.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetDbtUniqueId(final String assetDbtUniqueId) {
this.assetDbtUniqueId = assetDbtUniqueId;
return self();
}
/**
* Name of the DBT workflow in Atlan that last updated the asset.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetDbtWorkflowLastUpdated(final String assetDbtWorkflowLastUpdated) {
this.assetDbtWorkflowLastUpdated = assetDbtWorkflowLastUpdated;
return self();
}
/**
* Name of the icon to use for this asset. (Only applies to glossaries, currently.)
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetIcon(final AtlanIcon assetIcon) {
this.assetIcon = assetIcon;
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetMcAlertQualifiedName(final String assetMcAlertQualifiedName) {
if (this.assetMcAlertQualifiedNames == null) this.assetMcAlertQualifiedNames = new java.util.ArrayList();
this.assetMcAlertQualifiedNames.add(assetMcAlertQualifiedName);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetMcAlertQualifiedNames(final java.util.Collection extends String> assetMcAlertQualifiedNames) {
if (assetMcAlertQualifiedNames == null) {
throw new java.lang.NullPointerException("assetMcAlertQualifiedNames cannot be null");
}
if (this.assetMcAlertQualifiedNames == null) this.assetMcAlertQualifiedNames = new java.util.ArrayList();
this.assetMcAlertQualifiedNames.addAll(assetMcAlertQualifiedNames);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B clearAssetMcAlertQualifiedNames() {
if (this.assetMcAlertQualifiedNames != null) this.assetMcAlertQualifiedNames.clear();
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetMcIncidentName(final String assetMcIncidentName) {
if (this.assetMcIncidentNames == null) this.assetMcIncidentNames = new java.util.ArrayList();
this.assetMcIncidentNames.add(assetMcIncidentName);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetMcIncidentNames(final java.util.Collection extends String> assetMcIncidentNames) {
if (assetMcIncidentNames == null) {
throw new java.lang.NullPointerException("assetMcIncidentNames cannot be null");
}
if (this.assetMcIncidentNames == null) this.assetMcIncidentNames = new java.util.ArrayList();
this.assetMcIncidentNames.addAll(assetMcIncidentNames);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B clearAssetMcIncidentNames() {
if (this.assetMcIncidentNames != null) this.assetMcIncidentNames.clear();
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetMcIncidentPriority(final String assetMcIncidentPriority) {
if (this.assetMcIncidentPriorities == null) this.assetMcIncidentPriorities = new java.util.ArrayList();
this.assetMcIncidentPriorities.add(assetMcIncidentPriority);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetMcIncidentPriorities(final java.util.Collection extends String> assetMcIncidentPriorities) {
if (assetMcIncidentPriorities == null) {
throw new java.lang.NullPointerException("assetMcIncidentPriorities cannot be null");
}
if (this.assetMcIncidentPriorities == null) this.assetMcIncidentPriorities = new java.util.ArrayList();
this.assetMcIncidentPriorities.addAll(assetMcIncidentPriorities);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B clearAssetMcIncidentPriorities() {
if (this.assetMcIncidentPriorities != null) this.assetMcIncidentPriorities.clear();
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetMcIncidentQualifiedName(final String assetMcIncidentQualifiedName) {
if (this.assetMcIncidentQualifiedNames == null) this.assetMcIncidentQualifiedNames = new java.util.ArrayList();
this.assetMcIncidentQualifiedNames.add(assetMcIncidentQualifiedName);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetMcIncidentQualifiedNames(final java.util.Collection extends String> assetMcIncidentQualifiedNames) {
if (assetMcIncidentQualifiedNames == null) {
throw new java.lang.NullPointerException("assetMcIncidentQualifiedNames cannot be null");
}
if (this.assetMcIncidentQualifiedNames == null) this.assetMcIncidentQualifiedNames = new java.util.ArrayList();
this.assetMcIncidentQualifiedNames.addAll(assetMcIncidentQualifiedNames);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B clearAssetMcIncidentQualifiedNames() {
if (this.assetMcIncidentQualifiedNames != null) this.assetMcIncidentQualifiedNames.clear();
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetMcIncidentSeverity(final String assetMcIncidentSeverity) {
if (this.assetMcIncidentSeverities == null) this.assetMcIncidentSeverities = new java.util.ArrayList();
this.assetMcIncidentSeverities.add(assetMcIncidentSeverity);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetMcIncidentSeverities(final java.util.Collection extends String> assetMcIncidentSeverities) {
if (assetMcIncidentSeverities == null) {
throw new java.lang.NullPointerException("assetMcIncidentSeverities cannot be null");
}
if (this.assetMcIncidentSeverities == null) this.assetMcIncidentSeverities = new java.util.ArrayList();
this.assetMcIncidentSeverities.addAll(assetMcIncidentSeverities);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B clearAssetMcIncidentSeverities() {
if (this.assetMcIncidentSeverities != null) this.assetMcIncidentSeverities.clear();
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetMcIncidentState(final String assetMcIncidentState) {
if (this.assetMcIncidentStates == null) this.assetMcIncidentStates = new java.util.ArrayList();
this.assetMcIncidentStates.add(assetMcIncidentState);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetMcIncidentStates(final java.util.Collection extends String> assetMcIncidentStates) {
if (assetMcIncidentStates == null) {
throw new java.lang.NullPointerException("assetMcIncidentStates cannot be null");
}
if (this.assetMcIncidentStates == null) this.assetMcIncidentStates = new java.util.ArrayList();
this.assetMcIncidentStates.addAll(assetMcIncidentStates);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B clearAssetMcIncidentStates() {
if (this.assetMcIncidentStates != null) this.assetMcIncidentStates.clear();
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetMcIncidentSubType(final String assetMcIncidentSubType) {
if (this.assetMcIncidentSubTypes == null) this.assetMcIncidentSubTypes = new java.util.ArrayList();
this.assetMcIncidentSubTypes.add(assetMcIncidentSubType);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetMcIncidentSubTypes(final java.util.Collection extends String> assetMcIncidentSubTypes) {
if (assetMcIncidentSubTypes == null) {
throw new java.lang.NullPointerException("assetMcIncidentSubTypes cannot be null");
}
if (this.assetMcIncidentSubTypes == null) this.assetMcIncidentSubTypes = new java.util.ArrayList();
this.assetMcIncidentSubTypes.addAll(assetMcIncidentSubTypes);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B clearAssetMcIncidentSubTypes() {
if (this.assetMcIncidentSubTypes != null) this.assetMcIncidentSubTypes.clear();
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetMcIncidentType(final String assetMcIncidentType) {
if (this.assetMcIncidentTypes == null) this.assetMcIncidentTypes = new java.util.ArrayList();
this.assetMcIncidentTypes.add(assetMcIncidentType);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetMcIncidentTypes(final java.util.Collection extends String> assetMcIncidentTypes) {
if (assetMcIncidentTypes == null) {
throw new java.lang.NullPointerException("assetMcIncidentTypes cannot be null");
}
if (this.assetMcIncidentTypes == null) this.assetMcIncidentTypes = new java.util.ArrayList();
this.assetMcIncidentTypes.addAll(assetMcIncidentTypes);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B clearAssetMcIncidentTypes() {
if (this.assetMcIncidentTypes != null) this.assetMcIncidentTypes.clear();
return self();
}
/**
* Time (epoch) at which this asset was last synced from Monte Carlo.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetMcLastSyncRunAt(final Long assetMcLastSyncRunAt) {
this.assetMcLastSyncRunAt = assetMcLastSyncRunAt;
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetMcMonitorName(final String assetMcMonitorName) {
if (this.assetMcMonitorNames == null) this.assetMcMonitorNames = new java.util.ArrayList();
this.assetMcMonitorNames.add(assetMcMonitorName);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetMcMonitorNames(final java.util.Collection extends String> assetMcMonitorNames) {
if (assetMcMonitorNames == null) {
throw new java.lang.NullPointerException("assetMcMonitorNames cannot be null");
}
if (this.assetMcMonitorNames == null) this.assetMcMonitorNames = new java.util.ArrayList();
this.assetMcMonitorNames.addAll(assetMcMonitorNames);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B clearAssetMcMonitorNames() {
if (this.assetMcMonitorNames != null) this.assetMcMonitorNames.clear();
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetMcMonitorQualifiedName(final String assetMcMonitorQualifiedName) {
if (this.assetMcMonitorQualifiedNames == null) this.assetMcMonitorQualifiedNames = new java.util.ArrayList();
this.assetMcMonitorQualifiedNames.add(assetMcMonitorQualifiedName);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetMcMonitorQualifiedNames(final java.util.Collection extends String> assetMcMonitorQualifiedNames) {
if (assetMcMonitorQualifiedNames == null) {
throw new java.lang.NullPointerException("assetMcMonitorQualifiedNames cannot be null");
}
if (this.assetMcMonitorQualifiedNames == null) this.assetMcMonitorQualifiedNames = new java.util.ArrayList();
this.assetMcMonitorQualifiedNames.addAll(assetMcMonitorQualifiedNames);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B clearAssetMcMonitorQualifiedNames() {
if (this.assetMcMonitorQualifiedNames != null) this.assetMcMonitorQualifiedNames.clear();
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetMcMonitorScheduleType(final String assetMcMonitorScheduleType) {
if (this.assetMcMonitorScheduleTypes == null) this.assetMcMonitorScheduleTypes = new java.util.ArrayList();
this.assetMcMonitorScheduleTypes.add(assetMcMonitorScheduleType);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetMcMonitorScheduleTypes(final java.util.Collection extends String> assetMcMonitorScheduleTypes) {
if (assetMcMonitorScheduleTypes == null) {
throw new java.lang.NullPointerException("assetMcMonitorScheduleTypes cannot be null");
}
if (this.assetMcMonitorScheduleTypes == null) this.assetMcMonitorScheduleTypes = new java.util.ArrayList();
this.assetMcMonitorScheduleTypes.addAll(assetMcMonitorScheduleTypes);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B clearAssetMcMonitorScheduleTypes() {
if (this.assetMcMonitorScheduleTypes != null) this.assetMcMonitorScheduleTypes.clear();
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetMcMonitorStatus(final String assetMcMonitorStatus) {
if (this.assetMcMonitorStatuses == null) this.assetMcMonitorStatuses = new java.util.ArrayList();
this.assetMcMonitorStatuses.add(assetMcMonitorStatus);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetMcMonitorStatuses(final java.util.Collection extends String> assetMcMonitorStatuses) {
if (assetMcMonitorStatuses == null) {
throw new java.lang.NullPointerException("assetMcMonitorStatuses cannot be null");
}
if (this.assetMcMonitorStatuses == null) this.assetMcMonitorStatuses = new java.util.ArrayList();
this.assetMcMonitorStatuses.addAll(assetMcMonitorStatuses);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B clearAssetMcMonitorStatuses() {
if (this.assetMcMonitorStatuses != null) this.assetMcMonitorStatuses.clear();
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetMcMonitorType(final String assetMcMonitorType) {
if (this.assetMcMonitorTypes == null) this.assetMcMonitorTypes = new java.util.ArrayList();
this.assetMcMonitorTypes.add(assetMcMonitorType);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetMcMonitorTypes(final java.util.Collection extends String> assetMcMonitorTypes) {
if (assetMcMonitorTypes == null) {
throw new java.lang.NullPointerException("assetMcMonitorTypes cannot be null");
}
if (this.assetMcMonitorTypes == null) this.assetMcMonitorTypes = new java.util.ArrayList();
this.assetMcMonitorTypes.addAll(assetMcMonitorTypes);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B clearAssetMcMonitorTypes() {
if (this.assetMcMonitorTypes != null) this.assetMcMonitorTypes.clear();
return self();
}
/**
* Count of policies inside the asset
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetPoliciesCount(final Long assetPoliciesCount) {
this.assetPoliciesCount = assetPoliciesCount;
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetPolicyGUID(final String assetPolicyGUID) {
if (this.assetPolicyGUIDs == null) this.assetPolicyGUIDs = new java.util.ArrayList();
this.assetPolicyGUIDs.add(assetPolicyGUID);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetPolicyGUIDs(final java.util.Collection extends String> assetPolicyGUIDs) {
if (assetPolicyGUIDs == null) {
throw new java.lang.NullPointerException("assetPolicyGUIDs cannot be null");
}
if (this.assetPolicyGUIDs == null) this.assetPolicyGUIDs = new java.util.ArrayList();
this.assetPolicyGUIDs.addAll(assetPolicyGUIDs);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B clearAssetPolicyGUIDs() {
if (this.assetPolicyGUIDs != null) this.assetPolicyGUIDs.clear();
return self();
}
/**
* Number of checks done via Soda.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetSodaCheckCount(final Long assetSodaCheckCount) {
this.assetSodaCheckCount = assetSodaCheckCount;
return self();
}
/**
* All associated Soda check statuses.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetSodaCheckStatuses(final String assetSodaCheckStatuses) {
this.assetSodaCheckStatuses = assetSodaCheckStatuses;
return self();
}
/**
* Status of data quality from Soda.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetSodaDQStatus(final String assetSodaDQStatus) {
this.assetSodaDQStatus = assetSodaDQStatus;
return self();
}
/**
* TBC
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetSodaLastScanAt(final Long assetSodaLastScanAt) {
this.assetSodaLastScanAt = assetSodaLastScanAt;
return self();
}
/**
* TBC
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetSodaLastSyncRunAt(final Long assetSodaLastSyncRunAt) {
this.assetSodaLastSyncRunAt = assetSodaLastSyncRunAt;
return self();
}
/**
* TBC
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetSodaSourceURL(final String assetSodaSourceURL) {
this.assetSodaSourceURL = assetSodaSourceURL;
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetTag(final String assetTag) {
if (this.assetTags == null) this.assetTags = new java.util.ArrayList();
this.assetTags.add(assetTag);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetTags(final java.util.Collection extends String> assetTags) {
if (assetTags == null) {
throw new java.lang.NullPointerException("assetTags cannot be null");
}
if (this.assetTags == null) this.assetTags = new java.util.ArrayList();
this.assetTags.addAll(assetTags);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B clearAssetTags() {
if (this.assetTags != null) this.assetTags.clear();
return self();
}
/**
* Color (in hexadecimal RGB) to use to represent this asset.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assetThemeHex(final String assetThemeHex) {
this.assetThemeHex = assetThemeHex;
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assignedTerm(final IGlossaryTerm assignedTerm) {
if (this.assignedTerms == null) this.assignedTerms = new java.util.ArrayList();
this.assignedTerms.add(assignedTerm);
return self();
}
@JsonProperty("meanings")
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B assignedTerms(final java.util.Collection extends IGlossaryTerm> assignedTerms) {
if (assignedTerms == null) {
throw new java.lang.NullPointerException("assignedTerms cannot be null");
}
if (this.assignedTerms == null) this.assignedTerms = new java.util.ArrayList();
this.assignedTerms.addAll(assignedTerms);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B clearAssignedTerms() {
if (this.assignedTerms != null) this.assignedTerms.clear();
return self();
}
/**
* Status of this asset's certification.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B certificateStatus(final CertificateStatus certificateStatus) {
this.certificateStatus = certificateStatus;
return self();
}
/**
* Human-readable descriptive message used to provide further detail to certificateStatus.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B certificateStatusMessage(final String certificateStatusMessage) {
this.certificateStatusMessage = certificateStatusMessage;
return self();
}
/**
* Time (epoch) at which the certification was last updated, in milliseconds.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B certificateUpdatedAt(final Long certificateUpdatedAt) {
this.certificateUpdatedAt = certificateUpdatedAt;
return self();
}
/**
* Name of the user who last updated the certification of this asset.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B certificateUpdatedBy(final String certificateUpdatedBy) {
this.certificateUpdatedBy = certificateUpdatedBy;
return self();
}
/**
* Simple name of the connection through which this asset is accessible.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B connectionName(final String connectionName) {
this.connectionName = connectionName;
return self();
}
/**
* Unique name of the connection through which this asset is accessible.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B connectionQualifiedName(final String connectionQualifiedName) {
this.connectionQualifiedName = connectionQualifiedName;
return self();
}
/**
* Type of the connector through which this asset is accessible.
* @return {@code this}.
*/
@JsonProperty("connectorName")
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B connectorType(final AtlanConnectorType connectorType) {
this.connectorType = connectorType;
return self();
}
/**
* Latest version of the data contract (in any status) for this asset.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B dataContractLatest(final IDataContract dataContractLatest) {
this.dataContractLatest = dataContractLatest;
return self();
}
/**
* Latest certified version of the data contract for this asset.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B dataContractLatestCertified(final IDataContract dataContractLatestCertified) {
this.dataContractLatestCertified = dataContractLatestCertified;
return self();
}
/**
* Unique name of this asset in dbt.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B dbtQualifiedName(final String dbtQualifiedName) {
this.dbtQualifiedName = dbtQualifiedName;
return self();
}
/**
* Description of this asset, for example as crawled from a source. Fallback for display purposes, if userDescription is empty.
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B description(final String description) {
this.description = description;
return self();
}
/**
* Human-readable name of this asset used for display purposes (in user interface).
* @return {@code this}.
*/
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B displayName(final String displayName) {
this.displayName = displayName;
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B domainGUID(final String domainGUID) {
if (this.domainGUIDs == null) this.domainGUIDs = new java.util.ArrayList();
this.domainGUIDs.add(domainGUID);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B domainGUIDs(final java.util.Collection extends String> domainGUIDs) {
if (domainGUIDs == null) {
throw new java.lang.NullPointerException("domainGUIDs cannot be null");
}
if (this.domainGUIDs == null) this.domainGUIDs = new java.util.ArrayList();
this.domainGUIDs.addAll(domainGUIDs);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B clearDomainGUIDs() {
if (this.domainGUIDs != null) this.domainGUIDs.clear();
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B file(final IFile file) {
if (this.files == null) this.files = new java.util.ArrayList();
this.files.add(file);
return self();
}
@java.lang.SuppressWarnings("all")
@lombok.Generated
public B files(final java.util.Collection extends IFile> files) {
if (files == null) {
throw new java.lang.NullPointerException("files cannot be null");
}
if (this.files == null) this.files = new java.util.ArrayList