Package org.openmetadata.service.jdbi3
Class EntityRepository.EntityUpdater
- java.lang.Object
-
- org.openmetadata.service.jdbi3.EntityRepository.EntityUpdater
-
- Direct Known Subclasses:
BotRepository.BotUpdater,ChartRepository.ChartUpdater,ClassificationRepository.ClassificationUpdater,ContainerRepository.ContainerUpdater,DashboardDataModelRepository.DataModelUpdater,DashboardRepository.DashboardUpdater,DatabaseRepository.DatabaseUpdater,DatabaseSchemaRepository.DatabaseSchemaUpdater,EventSubscriptionRepository.EventSubscriptionUpdater,GlossaryRepository.GlossaryUpdater,GlossaryTermRepository.GlossaryTermUpdater,IngestionPipelineRepository.IngestionPipelineUpdater,KpiRepository.KpiUpdater,MlModelRepository.MlModelUpdater,PipelineRepository.PipelineUpdater,PolicyRepository.PolicyUpdater,QueryRepository.QueryUpdater,RoleRepository.RoleUpdater,ServiceEntityRepository.ServiceUpdater,TableRepository.TableUpdater,TagRepository.TagUpdater,TeamRepository.TeamUpdater,TestCaseRepository.TestUpdater,TestConnectionDefinitionRepository.TestConnectionDefinitionUpdater,TestDefinitionRepository.TestDefinitionUpdater,TestSuiteRepository.TestSuiteUpdater,TopicRepository.TopicUpdater,TypeRepository.TypeUpdater,UserRepository.UserUpdater,WorkflowRepository.WorkflowUpdater
- Enclosing class:
- EntityRepository<T extends EntityInterface>
public class EntityRepository.EntityUpdater extends Object
Class that performs PUT and PATCH update operation. It takes an updated entity and original entity. Performs comparison between then and updates the stored entity and also updates all the relationships. This class also tracks the changes between original and updated to version the entity and produce change events.
Common entity attributes such as description, displayName, owner, tags are handled by this class. OverrideentitySpecificUpdate()to add additional entity specific fields to be updated.- See Also:
for example.
-
-
Field Summary
Fields Modifier and Type Field Description protected ChangeDescriptionchangeDescriptionprotected booleanmajorVersionChangeprotected EntityRepository.Operationoperationprotected Toriginalprotected Tupdatedprotected UserupdatingUser
-
Constructor Summary
Constructors Constructor Description EntityUpdater(T original, T updated, EntityRepository.Operation operation)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidentitySpecificUpdate()booleanfieldsChanged()booleanisEntityRestored()<K> booleanrecordChange(String field, K orig, K updated)<K> booleanrecordChange(String field, K orig, K updated, boolean jsonValue)<K> booleanrecordChange(String field, K orig, K updated, boolean jsonValue, BiPredicate<K,K> typeMatch)<K> booleanrecordChange(String field, K orig, K updated, boolean jsonValue, BiPredicate<K,K> typeMatch, boolean updateVersion)<K> booleanrecordListChange(String field, List<K> origList, List<K> updatedList, List<K> addedItems, List<K> deletedItems, BiPredicate<K,K> typeMatch)voidstoreUpdate()voidupdate()Compare original and updated entities and perform updates.booleanupdatedByBot()voidupdateFromRelationship(String field, String fromEntityType, EntityReference originFromRef, EntityReference updatedFromRef, Relationship relationshipType, String toEntityType, UUID toId)voidupdateFromRelationships(String field, String fromEntityType, List<EntityReference> originFromRefs, List<EntityReference> updatedFromRefs, Relationship relationshipType, String toEntityType, UUID toId)Remove `fromEntityType:origFromRefs` -- `relationType` ---> `toEntityType:toId` Add `fromEntityType:updatedFromRefs` -- `relationType` ---> `toEntityType:toId` and record it as change for entity field `field`.protected voidupdateTags(String fqn, String fieldName, List<TagLabel> origTags, List<TagLabel> updatedTags)voidupdateToRelationship(String field, String fromEntityType, UUID fromId, Relationship relationshipType, String toEntityType, EntityReference origToRef, EntityReference updatedToRef, boolean bidirectional)voidupdateToRelationships(String field, String fromEntityType, UUID fromId, Relationship relationshipType, String toEntityType, List<EntityReference> origToRefs, List<EntityReference> updatedToRefs, boolean bidirectional)Remove `fromEntityType:fromId` -- `relationType` ---> `toEntityType:origToRefs` Add `fromEntityType:fromId` -- `relationType` ---> `toEntityType:updatedToRefs` and record it as change for entity field `field`.booleanupdateVersion(Double oldVersion)
-
-
-
Field Detail
-
original
protected final T extends EntityInterface original
-
updated
protected final T extends EntityInterface updated
-
operation
protected final EntityRepository.Operation operation
-
changeDescription
protected final ChangeDescription changeDescription
-
majorVersionChange
protected boolean majorVersionChange
-
updatingUser
protected final User updatingUser
-
-
Constructor Detail
-
EntityUpdater
public EntityUpdater(T original, T updated, EntityRepository.Operation operation)
-
-
Method Detail
-
update
public final void update()
Compare original and updated entities and perform updates. Update the entity version and track changes.
-
entitySpecificUpdate
public void entitySpecificUpdate()
-
updateTags
protected void updateTags(String fqn, String fieldName, List<TagLabel> origTags, List<TagLabel> updatedTags)
-
updateVersion
public final boolean updateVersion(Double oldVersion)
-
fieldsChanged
public boolean fieldsChanged()
-
isEntityRestored
public boolean isEntityRestored()
-
recordChange
public final <K> boolean recordChange(String field, K orig, K updated)
-
recordChange
public final <K> boolean recordChange(String field, K orig, K updated, boolean jsonValue)
-
recordChange
public final <K> boolean recordChange(String field, K orig, K updated, boolean jsonValue, BiPredicate<K,K> typeMatch)
-
recordChange
public final <K> boolean recordChange(String field, K orig, K updated, boolean jsonValue, BiPredicate<K,K> typeMatch, boolean updateVersion)
-
recordListChange
public final <K> boolean recordListChange(String field, List<K> origList, List<K> updatedList, List<K> addedItems, List<K> deletedItems, BiPredicate<K,K> typeMatch)
-
updateToRelationships
public final void updateToRelationships(String field, String fromEntityType, UUID fromId, Relationship relationshipType, String toEntityType, List<EntityReference> origToRefs, List<EntityReference> updatedToRefs, boolean bidirectional)
Remove `fromEntityType:fromId` -- `relationType` ---> `toEntityType:origToRefs` Add `fromEntityType:fromId` -- `relationType` ---> `toEntityType:updatedToRefs` and record it as change for entity field `field`.When `bidirectional` is set to true, relationship from both side are replaced
-
updateToRelationship
public final void updateToRelationship(String field, String fromEntityType, UUID fromId, Relationship relationshipType, String toEntityType, EntityReference origToRef, EntityReference updatedToRef, boolean bidirectional)
-
updateFromRelationships
public final void updateFromRelationships(String field, String fromEntityType, List<EntityReference> originFromRefs, List<EntityReference> updatedFromRefs, Relationship relationshipType, String toEntityType, UUID toId)
Remove `fromEntityType:origFromRefs` -- `relationType` ---> `toEntityType:toId` Add `fromEntityType:updatedFromRefs` -- `relationType` ---> `toEntityType:toId` and record it as change for entity field `field`.
-
updateFromRelationship
public final void updateFromRelationship(String field, String fromEntityType, EntityReference originFromRef, EntityReference updatedFromRef, Relationship relationshipType, String toEntityType, UUID toId)
-
storeUpdate
public final void storeUpdate()
-
updatedByBot
public final boolean updatedByBot()
-
-