mirror of
https://github.com/open-metadata/OpenMetadata.git
synced 2025-11-08 06:53:11 +00:00
Remove space before : in before update activity feed message (#10992)
* Misc WIP * Remove space before : in before update activity feed message --------- Co-authored-by: Pere Miquel Brull <peremiquelbrull@gmail.com>
This commit is contained in:
parent
4c3f142a2c
commit
32e9ae337f
@ -44,6 +44,7 @@ import org.openmetadata.service.jdbi3.FeedRepository;
|
|||||||
import org.openmetadata.service.resources.feeds.MessageParser.EntityLink;
|
import org.openmetadata.service.resources.feeds.MessageParser.EntityLink;
|
||||||
import org.openmetadata.service.socket.WebSocketManager;
|
import org.openmetadata.service.socket.WebSocketManager;
|
||||||
import org.openmetadata.service.util.ChangeEventParser;
|
import org.openmetadata.service.util.ChangeEventParser;
|
||||||
|
import org.openmetadata.service.util.ChangeEventParser.PublishTo;
|
||||||
import org.openmetadata.service.util.JsonUtils;
|
import org.openmetadata.service.util.JsonUtils;
|
||||||
import org.openmetadata.service.util.NotificationHandler;
|
import org.openmetadata.service.util.NotificationHandler;
|
||||||
import org.openmetadata.service.util.RestUtil;
|
import org.openmetadata.service.util.RestUtil;
|
||||||
@ -269,7 +270,7 @@ public class ChangeEventHandler implements EventHandler {
|
|||||||
EntityInterface entity, ChangeDescription changeDescription, String loggedInUserName) {
|
EntityInterface entity, ChangeDescription changeDescription, String loggedInUserName) {
|
||||||
List<Thread> threads = new ArrayList<>();
|
List<Thread> threads = new ArrayList<>();
|
||||||
Map<EntityLink, String> messages =
|
Map<EntityLink, String> messages =
|
||||||
ChangeEventParser.getFormattedMessages(ChangeEventParser.PUBLISH_TO.FEED, changeDescription, entity);
|
ChangeEventParser.getFormattedMessages(PublishTo.FEED, changeDescription, entity);
|
||||||
|
|
||||||
// Create an automated thread
|
// Create an automated thread
|
||||||
for (EntityLink link : messages.keySet()) {
|
for (EntityLink link : messages.keySet()) {
|
||||||
|
|||||||
@ -90,6 +90,7 @@ import org.openmetadata.service.resources.feeds.FeedUtil;
|
|||||||
import org.openmetadata.service.resources.feeds.MessageParser;
|
import org.openmetadata.service.resources.feeds.MessageParser;
|
||||||
import org.openmetadata.service.resources.feeds.MessageParser.EntityLink;
|
import org.openmetadata.service.resources.feeds.MessageParser.EntityLink;
|
||||||
import org.openmetadata.service.util.*;
|
import org.openmetadata.service.util.*;
|
||||||
|
import org.openmetadata.service.util.ChangeEventParser.PublishTo;
|
||||||
import org.openmetadata.service.util.RestUtil.DeleteResponse;
|
import org.openmetadata.service.util.RestUtil.DeleteResponse;
|
||||||
import org.openmetadata.service.util.RestUtil.PatchResponse;
|
import org.openmetadata.service.util.RestUtil.PatchResponse;
|
||||||
|
|
||||||
@ -458,7 +459,7 @@ public class FeedRepository {
|
|||||||
message =
|
message =
|
||||||
String.format(
|
String.format(
|
||||||
"Resolved the Task with Description - %s",
|
"Resolved the Task with Description - %s",
|
||||||
getPlaintextDiff(ChangeEventParser.PUBLISH_TO.FEED, oldValue, task.getNewValue()));
|
getPlaintextDiff(PublishTo.FEED, oldValue, task.getNewValue()));
|
||||||
} else if (List.of(TaskType.RequestTag, TaskType.UpdateTag).contains(type)) {
|
} else if (List.of(TaskType.RequestTag, TaskType.UpdateTag).contains(type)) {
|
||||||
List<TagLabel> tags;
|
List<TagLabel> tags;
|
||||||
if (task.getOldValue() != null) {
|
if (task.getOldValue() != null) {
|
||||||
@ -468,9 +469,7 @@ public class FeedRepository {
|
|||||||
tags = JsonUtils.readObjects(task.getNewValue(), TagLabel.class);
|
tags = JsonUtils.readObjects(task.getNewValue(), TagLabel.class);
|
||||||
String newValue = getTagFQNs(tags);
|
String newValue = getTagFQNs(tags);
|
||||||
message =
|
message =
|
||||||
String.format(
|
String.format("Resolved the Task with Tag(s) - %s", getPlaintextDiff(PublishTo.FEED, oldValue, newValue));
|
||||||
"Resolved the Task with Tag(s) - %s",
|
|
||||||
getPlaintextDiff(ChangeEventParser.PUBLISH_TO.FEED, oldValue, newValue));
|
|
||||||
} else {
|
} else {
|
||||||
message = "Resolved the Task.";
|
message = "Resolved the Task.";
|
||||||
}
|
}
|
||||||
|
|||||||
@ -82,7 +82,7 @@ import org.openmetadata.service.util.ResultList;
|
|||||||
|
|
||||||
// TODO merge with workflows
|
// TODO merge with workflows
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Path("/v1/services/ingestionPipelines/")
|
@Path("/v1/services/ingestionPipelines")
|
||||||
@Tag(
|
@Tag(
|
||||||
name = "Ingestion Pipelines",
|
name = "Ingestion Pipelines",
|
||||||
description = "APIs related pipelines/workflows created by the system to ingest metadata.")
|
description = "APIs related pipelines/workflows created by the system to ingest metadata.")
|
||||||
|
|||||||
@ -17,6 +17,7 @@ import static org.openmetadata.common.utils.CommonUtil.nullOrEmpty;
|
|||||||
import static org.openmetadata.service.Entity.FIELD_DISPLAY_NAME;
|
import static org.openmetadata.service.Entity.FIELD_DISPLAY_NAME;
|
||||||
import static org.openmetadata.service.Entity.FIELD_NAME;
|
import static org.openmetadata.service.Entity.FIELD_NAME;
|
||||||
import static org.openmetadata.service.Entity.FIELD_OWNER;
|
import static org.openmetadata.service.Entity.FIELD_OWNER;
|
||||||
|
import static org.openmetadata.service.Entity.FIELD_TAGS;
|
||||||
import static org.openmetadata.service.Entity.INGESTION_PIPELINE;
|
import static org.openmetadata.service.Entity.INGESTION_PIPELINE;
|
||||||
import static org.openmetadata.service.Entity.KPI;
|
import static org.openmetadata.service.Entity.KPI;
|
||||||
import static org.openmetadata.service.Entity.TEST_CASE;
|
import static org.openmetadata.service.Entity.TEST_CASE;
|
||||||
@ -43,7 +44,6 @@ import org.apache.commons.lang.StringUtils;
|
|||||||
import org.bitbucket.cowwoc.diffmatchpatch.DiffMatchPatch;
|
import org.bitbucket.cowwoc.diffmatchpatch.DiffMatchPatch;
|
||||||
import org.openmetadata.common.utils.CommonUtil;
|
import org.openmetadata.common.utils.CommonUtil;
|
||||||
import org.openmetadata.schema.EntityInterface;
|
import org.openmetadata.schema.EntityInterface;
|
||||||
import org.openmetadata.schema.dataInsight.kpi.Kpi;
|
|
||||||
import org.openmetadata.schema.dataInsight.type.KpiResult;
|
import org.openmetadata.schema.dataInsight.type.KpiResult;
|
||||||
import org.openmetadata.schema.dataInsight.type.KpiTarget;
|
import org.openmetadata.schema.dataInsight.type.KpiTarget;
|
||||||
import org.openmetadata.schema.entity.data.Query;
|
import org.openmetadata.schema.entity.data.Query;
|
||||||
@ -74,17 +74,15 @@ public final class ChangeEventParser {
|
|||||||
public static final String FEED_LINE_BREAK = " <br/> ";
|
public static final String FEED_LINE_BREAK = " <br/> ";
|
||||||
public static final String SLACK_LINE_BREAK = "\n";
|
public static final String SLACK_LINE_BREAK = "\n";
|
||||||
|
|
||||||
private static volatile boolean INITIALIZED = false;
|
|
||||||
|
|
||||||
private ChangeEventParser() {}
|
private ChangeEventParser() {}
|
||||||
|
|
||||||
public enum CHANGE_TYPE {
|
public enum ChangeType {
|
||||||
UPDATE,
|
UPDATE,
|
||||||
ADD,
|
ADD,
|
||||||
DELETE
|
DELETE
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum PUBLISH_TO {
|
public enum PublishTo {
|
||||||
FEED,
|
FEED,
|
||||||
SLACK,
|
SLACK,
|
||||||
TEAMS,
|
TEAMS,
|
||||||
@ -92,7 +90,7 @@ public final class ChangeEventParser {
|
|||||||
EMAIL
|
EMAIL
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getBold(PUBLISH_TO publishTo) {
|
public static String getBold(PublishTo publishTo) {
|
||||||
switch (publishTo) {
|
switch (publishTo) {
|
||||||
case FEED:
|
case FEED:
|
||||||
case TEAMS:
|
case TEAMS:
|
||||||
@ -108,7 +106,7 @@ public final class ChangeEventParser {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getLineBreak(PUBLISH_TO publishTo) {
|
public static String getLineBreak(PublishTo publishTo) {
|
||||||
switch (publishTo) {
|
switch (publishTo) {
|
||||||
case FEED:
|
case FEED:
|
||||||
case TEAMS:
|
case TEAMS:
|
||||||
@ -123,7 +121,7 @@ public final class ChangeEventParser {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getAddMarker(PUBLISH_TO publishTo) {
|
public static String getAddMarker(PublishTo publishTo) {
|
||||||
switch (publishTo) {
|
switch (publishTo) {
|
||||||
case FEED:
|
case FEED:
|
||||||
return FEED_SPAN_ADD;
|
return FEED_SPAN_ADD;
|
||||||
@ -139,7 +137,7 @@ public final class ChangeEventParser {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getAddMarkerClose(PUBLISH_TO publishTo) {
|
public static String getAddMarkerClose(PublishTo publishTo) {
|
||||||
switch (publishTo) {
|
switch (publishTo) {
|
||||||
case FEED:
|
case FEED:
|
||||||
return FEED_SPAN_CLOSE;
|
return FEED_SPAN_CLOSE;
|
||||||
@ -155,7 +153,7 @@ public final class ChangeEventParser {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getRemoveMarker(PUBLISH_TO publishTo) {
|
public static String getRemoveMarker(PublishTo publishTo) {
|
||||||
switch (publishTo) {
|
switch (publishTo) {
|
||||||
case FEED:
|
case FEED:
|
||||||
return FEED_SPAN_REMOVE;
|
return FEED_SPAN_REMOVE;
|
||||||
@ -171,7 +169,7 @@ public final class ChangeEventParser {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getRemoveMarkerClose(PUBLISH_TO publishTo) {
|
public static String getRemoveMarkerClose(PublishTo publishTo) {
|
||||||
switch (publishTo) {
|
switch (publishTo) {
|
||||||
case FEED:
|
case FEED:
|
||||||
return FEED_SPAN_CLOSE;
|
return FEED_SPAN_CLOSE;
|
||||||
@ -187,7 +185,7 @@ public final class ChangeEventParser {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getEntityUrl(PUBLISH_TO publishTo, ChangeEvent event) {
|
public static String getEntityUrl(PublishTo publishTo, ChangeEvent event) {
|
||||||
String fqn;
|
String fqn;
|
||||||
String entityType;
|
String entityType;
|
||||||
EntityInterface entity = (EntityInterface) event.getEntity();
|
EntityInterface entity = (EntityInterface) event.getEntity();
|
||||||
@ -198,14 +196,13 @@ public final class ChangeEventParser {
|
|||||||
fqn = event.getEntityFullyQualifiedName();
|
fqn = event.getEntityFullyQualifiedName();
|
||||||
entityType = event.getEntityType();
|
entityType = event.getEntityType();
|
||||||
}
|
}
|
||||||
if (publishTo == PUBLISH_TO.SLACK || publishTo == PUBLISH_TO.GCHAT) {
|
if (publishTo == PublishTo.SLACK || publishTo == PublishTo.GCHAT) {
|
||||||
return String.format(
|
return String.format(
|
||||||
"<%s/%s/%s|%s>",
|
"<%s/%s/%s|%s>",
|
||||||
ChangeEventConfig.getInstance().getOmUri(), entityType, fqn.trim().replaceAll(" ", "%20"), fqn.trim());
|
ChangeEventConfig.getInstance().getOmUri(), entityType, fqn.trim().replaceAll(" ", "%20"), fqn.trim());
|
||||||
} else if (publishTo == PUBLISH_TO.TEAMS) {
|
} else if (publishTo == PublishTo.TEAMS) {
|
||||||
return String.format(
|
return String.format("[%s](/%s/%s)", fqn.trim(), ChangeEventConfig.getInstance().getOmUri(), entityType);
|
||||||
"[%s](/%s/%s)", fqn.trim(), ChangeEventConfig.getInstance().getOmUri(), entityType, fqn.trim());
|
} else if (publishTo == PublishTo.EMAIL) {
|
||||||
} else if (publishTo == PUBLISH_TO.EMAIL) {
|
|
||||||
return String.format(
|
return String.format(
|
||||||
"<a href = '%s/%s/%s'>%s</a>",
|
"<a href = '%s/%s/%s'>%s</a>",
|
||||||
ChangeEventConfig.getInstance().getOmUri(), entityType, fqn.trim(), fqn.trim());
|
ChangeEventConfig.getInstance().getOmUri(), entityType, fqn.trim(), fqn.trim());
|
||||||
@ -231,12 +228,12 @@ public final class ChangeEventParser {
|
|||||||
headerText = String.format(headerTxt, event.getUserName());
|
headerText = String.format(headerTxt, event.getUserName());
|
||||||
} else {
|
} else {
|
||||||
headerTxt = "%s posted on " + eventType + " %s";
|
headerTxt = "%s posted on " + eventType + " %s";
|
||||||
headerText = String.format(headerTxt, event.getUserName(), getEntityUrl(PUBLISH_TO.SLACK, event));
|
headerText = String.format(headerTxt, event.getUserName(), getEntityUrl(PublishTo.SLACK, event));
|
||||||
}
|
}
|
||||||
slackMessage.setText(headerText);
|
slackMessage.setText(headerText);
|
||||||
}
|
}
|
||||||
Map<EntityLink, String> messages =
|
Map<EntityLink, String> messages =
|
||||||
getFormattedMessages(PUBLISH_TO.SLACK, event.getChangeDescription(), (EntityInterface) event.getEntity());
|
getFormattedMessages(PublishTo.SLACK, event.getChangeDescription(), (EntityInterface) event.getEntity());
|
||||||
List<SlackAttachment> attachmentList = new ArrayList<>();
|
List<SlackAttachment> attachmentList = new ArrayList<>();
|
||||||
for (Entry<EntityLink, String> entry : messages.entrySet()) {
|
for (Entry<EntityLink, String> entry : messages.entrySet()) {
|
||||||
SlackAttachment attachment = new SlackAttachment();
|
SlackAttachment attachment = new SlackAttachment();
|
||||||
@ -258,11 +255,11 @@ public final class ChangeEventParser {
|
|||||||
if (event.getEntityType().equals(Entity.QUERY)) {
|
if (event.getEntityType().equals(Entity.QUERY)) {
|
||||||
emailMessage.setEntityUrl(Entity.QUERY);
|
emailMessage.setEntityUrl(Entity.QUERY);
|
||||||
} else {
|
} else {
|
||||||
emailMessage.setEntityUrl(getEntityUrl(PUBLISH_TO.EMAIL, event));
|
emailMessage.setEntityUrl(getEntityUrl(PublishTo.EMAIL, event));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Map<EntityLink, String> messages =
|
Map<EntityLink, String> messages =
|
||||||
getFormattedMessages(PUBLISH_TO.EMAIL, event.getChangeDescription(), (EntityInterface) event.getEntity());
|
getFormattedMessages(PublishTo.EMAIL, event.getChangeDescription(), (EntityInterface) event.getEntity());
|
||||||
List<String> changeMessage = new ArrayList<>();
|
List<String> changeMessage = new ArrayList<>();
|
||||||
for (Entry<EntityLink, String> entry : messages.entrySet()) {
|
for (Entry<EntityLink, String> entry : messages.entrySet()) {
|
||||||
changeMessage.add(entry.getValue());
|
changeMessage.add(entry.getValue());
|
||||||
@ -277,11 +274,11 @@ public final class ChangeEventParser {
|
|||||||
TeamsMessage.Section teamsSections = new TeamsMessage.Section();
|
TeamsMessage.Section teamsSections = new TeamsMessage.Section();
|
||||||
if (event.getEntity() != null) {
|
if (event.getEntity() != null) {
|
||||||
String headerTxt = "%s posted on " + event.getEntityType() + " %s";
|
String headerTxt = "%s posted on " + event.getEntityType() + " %s";
|
||||||
String headerText = String.format(headerTxt, event.getUserName(), getEntityUrl(PUBLISH_TO.TEAMS, event));
|
String headerText = String.format(headerTxt, event.getUserName(), getEntityUrl(PublishTo.TEAMS, event));
|
||||||
teamsSections.setActivityTitle(headerText);
|
teamsSections.setActivityTitle(headerText);
|
||||||
}
|
}
|
||||||
Map<EntityLink, String> messages =
|
Map<EntityLink, String> messages =
|
||||||
getFormattedMessages(PUBLISH_TO.TEAMS, event.getChangeDescription(), (EntityInterface) event.getEntity());
|
getFormattedMessages(PublishTo.TEAMS, event.getChangeDescription(), (EntityInterface) event.getEntity());
|
||||||
List<TeamsMessage.Section> attachmentList = new ArrayList<>();
|
List<TeamsMessage.Section> attachmentList = new ArrayList<>();
|
||||||
for (Entry<EntityLink, String> entry : messages.entrySet()) {
|
for (Entry<EntityLink, String> entry : messages.entrySet()) {
|
||||||
TeamsMessage.Section section = new TeamsMessage.Section();
|
TeamsMessage.Section section = new TeamsMessage.Section();
|
||||||
@ -302,7 +299,7 @@ public final class ChangeEventParser {
|
|||||||
String headerTemplate = "%s posted on %s %s";
|
String headerTemplate = "%s posted on %s %s";
|
||||||
String headerText =
|
String headerText =
|
||||||
String.format(
|
String.format(
|
||||||
headerTemplate, event.getUserName(), event.getEntityType(), getEntityUrl(PUBLISH_TO.GCHAT, event));
|
headerTemplate, event.getUserName(), event.getEntityType(), getEntityUrl(PublishTo.GCHAT, event));
|
||||||
gChatMessage.setText(headerText);
|
gChatMessage.setText(headerText);
|
||||||
GChatMessage.CardHeader cardHeader = new GChatMessage.CardHeader();
|
GChatMessage.CardHeader cardHeader = new GChatMessage.CardHeader();
|
||||||
String cardHeaderText =
|
String cardHeaderText =
|
||||||
@ -315,7 +312,7 @@ public final class ChangeEventParser {
|
|||||||
card.setHeader(cardHeader);
|
card.setHeader(cardHeader);
|
||||||
}
|
}
|
||||||
Map<EntityLink, String> messages =
|
Map<EntityLink, String> messages =
|
||||||
getFormattedMessages(PUBLISH_TO.GCHAT, event.getChangeDescription(), (EntityInterface) event.getEntity());
|
getFormattedMessages(PublishTo.GCHAT, event.getChangeDescription(), (EntityInterface) event.getEntity());
|
||||||
List<GChatMessage.Widget> widgets = new ArrayList<>();
|
List<GChatMessage.Widget> widgets = new ArrayList<>();
|
||||||
for (Entry<EntityLink, String> entry : messages.entrySet()) {
|
for (Entry<EntityLink, String> entry : messages.entrySet()) {
|
||||||
GChatMessage.Widget widget = new GChatMessage.Widget();
|
GChatMessage.Widget widget = new GChatMessage.Widget();
|
||||||
@ -330,24 +327,24 @@ public final class ChangeEventParser {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static Map<EntityLink, String> getFormattedMessages(
|
public static Map<EntityLink, String> getFormattedMessages(
|
||||||
PUBLISH_TO publishTo, ChangeDescription changeDescription, EntityInterface entity) {
|
PublishTo publishTo, ChangeDescription changeDescription, EntityInterface entity) {
|
||||||
// Store a map of entityLink -> message
|
// Store a map of entityLink -> message
|
||||||
Map<EntityLink, String> messages;
|
Map<EntityLink, String> messages;
|
||||||
|
|
||||||
List<FieldChange> fieldsUpdated = changeDescription.getFieldsUpdated();
|
List<FieldChange> fieldsUpdated = changeDescription.getFieldsUpdated();
|
||||||
messages = getFormattedMessagesForAllFieldChange(publishTo, entity, fieldsUpdated, CHANGE_TYPE.UPDATE);
|
messages = getFormattedMessagesForAllFieldChange(publishTo, entity, fieldsUpdated, ChangeType.UPDATE);
|
||||||
|
|
||||||
// fieldsAdded and fieldsDeleted need special handling since
|
// fieldsAdded and fieldsDeleted need special handling since
|
||||||
// there is a possibility to merge them as one update message.
|
// there is a possibility to merge them as one update message.
|
||||||
List<FieldChange> fieldsAdded = changeDescription.getFieldsAdded();
|
List<FieldChange> fieldsAdded = changeDescription.getFieldsAdded();
|
||||||
List<FieldChange> fieldsDeleted = changeDescription.getFieldsDeleted();
|
List<FieldChange> fieldsDeleted = changeDescription.getFieldsDeleted();
|
||||||
messages.putAll(mergeAddtionsDeletion(publishTo, entity, fieldsAdded, fieldsDeleted));
|
messages.putAll(mergeAdditionsDeletion(publishTo, entity, fieldsAdded, fieldsDeleted));
|
||||||
|
|
||||||
return messages;
|
return messages;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Map<EntityLink, String> getFormattedMessagesForAllFieldChange(
|
private static Map<EntityLink, String> getFormattedMessagesForAllFieldChange(
|
||||||
PUBLISH_TO publishTo, EntityInterface entity, List<FieldChange> fields, CHANGE_TYPE changeType) {
|
PublishTo publishTo, EntityInterface entity, List<FieldChange> fields, ChangeType changeType) {
|
||||||
Map<EntityLink, String> messages = new HashMap<>();
|
Map<EntityLink, String> messages = new HashMap<>();
|
||||||
|
|
||||||
for (FieldChange field : fields) {
|
for (FieldChange field : fields) {
|
||||||
@ -366,14 +363,13 @@ public final class ChangeEventParser {
|
|||||||
oldFieldValue = getFieldValue(field.getOldValue());
|
oldFieldValue = getFieldValue(field.getOldValue());
|
||||||
}
|
}
|
||||||
if (link.getEntityType().equals(TEST_CASE) && link.getFieldName().equals("testCaseResult")) {
|
if (link.getEntityType().equals(TEST_CASE) && link.getFieldName().equals("testCaseResult")) {
|
||||||
String message = handleTestCaseResult(publishTo, entity, link, field.getOldValue(), field.getNewValue());
|
String message = handleTestCaseResult(publishTo, entity, field.getNewValue());
|
||||||
messages.put(link, message);
|
messages.put(link, message);
|
||||||
} else if (link.getEntityType().equals(KPI) && link.getFieldName().equals("kpiResult")) {
|
} else if (link.getEntityType().equals(KPI) && link.getFieldName().equals("kpiResult")) {
|
||||||
String message = handleKpiResult(publishTo, entity, link, field.getOldValue(), field.getNewValue());
|
String message = handleKpiResult(publishTo, entity, field.getNewValue());
|
||||||
messages.put(link, message);
|
messages.put(link, message);
|
||||||
} else if (link.getEntityType().equals(INGESTION_PIPELINE) && link.getFieldName().equals("pipelineStatus")) {
|
} else if (link.getEntityType().equals(INGESTION_PIPELINE) && link.getFieldName().equals("pipelineStatus")) {
|
||||||
String message =
|
String message = handleIngestionPipelineResult(publishTo, entity, field.getNewValue());
|
||||||
handleIngestionPipelineResult(publishTo, entity, link, field.getOldValue(), field.getNewValue());
|
|
||||||
messages.put(link, message);
|
messages.put(link, message);
|
||||||
} else if (!fieldName.equals("failureDetails")) {
|
} else if (!fieldName.equals("failureDetails")) {
|
||||||
String message = createMessageForField(publishTo, link, changeType, fieldName, oldFieldValue, newFieldValue);
|
String message = createMessageForField(publishTo, link, changeType, fieldName, oldFieldValue, newFieldValue);
|
||||||
@ -434,8 +430,8 @@ public final class ChangeEventParser {
|
|||||||
Object newValue,
|
Object newValue,
|
||||||
Object oldValue,
|
Object oldValue,
|
||||||
EntityInterface entity,
|
EntityInterface entity,
|
||||||
PUBLISH_TO publishTo,
|
PublishTo publishTo,
|
||||||
CHANGE_TYPE changeType,
|
ChangeType changeType,
|
||||||
EntityLink link) {
|
EntityLink link) {
|
||||||
String fieldName = "queryUsage";
|
String fieldName = "queryUsage";
|
||||||
String newVal = getFieldValueForQuery(newValue, entity, publishTo);
|
String newVal = getFieldValueForQuery(newValue, entity, publishTo);
|
||||||
@ -443,11 +439,12 @@ public final class ChangeEventParser {
|
|||||||
return createMessageForField(publishTo, link, changeType, fieldName, oldVal, newVal);
|
return createMessageForField(publishTo, link, changeType, fieldName, oldVal, newVal);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String getFieldValueForQuery(Object fieldValue, EntityInterface entity, PUBLISH_TO publishTo) {
|
private static String getFieldValueForQuery(Object fieldValue, EntityInterface entity, PublishTo publishTo) {
|
||||||
Query query = (Query) entity;
|
Query query = (Query) entity;
|
||||||
StringBuilder field = new StringBuilder();
|
StringBuilder field = new StringBuilder();
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
List<EntityReference> queryUsedIn = (List<EntityReference>) fieldValue;
|
List<EntityReference> queryUsedIn = (List<EntityReference>) fieldValue;
|
||||||
field.append("for ").append("'" + query.getQuery() + "'").append(", ").append(getLineBreak(publishTo));
|
field.append("for ").append("'").append(query.getQuery()).append("'").append(", ").append(getLineBreak(publishTo));
|
||||||
field.append("Query Used in :- ");
|
field.append("Query Used in :- ");
|
||||||
int i = 1;
|
int i = 1;
|
||||||
for (EntityReference queryUsage : queryUsedIn) {
|
for (EntityReference queryUsage : queryUsedIn) {
|
||||||
@ -460,14 +457,14 @@ public final class ChangeEventParser {
|
|||||||
return field.toString();
|
return field.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String getQueryUsageUrl(PUBLISH_TO publishTo, String fqn, String entityType) {
|
private static String getQueryUsageUrl(PublishTo publishTo, String fqn, String entityType) {
|
||||||
if (publishTo == PUBLISH_TO.SLACK || publishTo == PUBLISH_TO.GCHAT) {
|
if (publishTo == PublishTo.SLACK || publishTo == PublishTo.GCHAT) {
|
||||||
return String.format(
|
return String.format(
|
||||||
"<%s/%s/%s|%s>",
|
"<%s/%s/%s|%s>",
|
||||||
ChangeEventConfig.getInstance().getOmUri(), entityType, fqn.trim().replaceAll(" ", "%20"), fqn.trim());
|
ChangeEventConfig.getInstance().getOmUri(), entityType, fqn.trim().replaceAll(" ", "%20"), fqn.trim());
|
||||||
} else if (publishTo == PUBLISH_TO.TEAMS) {
|
} else if (publishTo == PublishTo.TEAMS) {
|
||||||
return String.format("[%s](/%s/%s)", fqn, ChangeEventConfig.getInstance().getOmUri(), entityType, fqn.trim());
|
return String.format("[%s](/%s/%s)", fqn, ChangeEventConfig.getInstance().getOmUri(), entityType);
|
||||||
} else if (publishTo == PUBLISH_TO.EMAIL) {
|
} else if (publishTo == PublishTo.EMAIL) {
|
||||||
return String.format(
|
return String.format(
|
||||||
"<a href = '%s/%s/%s'>%s</a>",
|
"<a href = '%s/%s/%s'>%s</a>",
|
||||||
ChangeEventConfig.getInstance().getOmUri(), entityType, fqn.trim(), fqn.trim());
|
ChangeEventConfig.getInstance().getOmUri(), entityType, fqn.trim(), fqn.trim());
|
||||||
@ -476,8 +473,8 @@ public final class ChangeEventParser {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** Tries to merge additions and deletions into updates and returns a map of formatted messages. */
|
/** Tries to merge additions and deletions into updates and returns a map of formatted messages. */
|
||||||
private static Map<EntityLink, String> mergeAddtionsDeletion(
|
private static Map<EntityLink, String> mergeAdditionsDeletion(
|
||||||
PUBLISH_TO publishTo, EntityInterface entity, List<FieldChange> addedFields, List<FieldChange> deletedFields) {
|
PublishTo publishTo, EntityInterface entity, List<FieldChange> addedFields, List<FieldChange> deletedFields) {
|
||||||
// Major schema version changes such as renaming a column from colA to colB
|
// Major schema version changes such as renaming a column from colA to colB
|
||||||
// will be recorded as "Removed column colA" and "Added column colB"
|
// will be recorded as "Removed column colA" and "Added column colB"
|
||||||
// This method will try to detect such changes and combine those events into one update.
|
// This method will try to detect such changes and combine those events into one update.
|
||||||
@ -487,9 +484,9 @@ public final class ChangeEventParser {
|
|||||||
// if there is only added fields or only deleted fields, we cannot merge
|
// if there is only added fields or only deleted fields, we cannot merge
|
||||||
if (addedFields.isEmpty() || deletedFields.isEmpty()) {
|
if (addedFields.isEmpty() || deletedFields.isEmpty()) {
|
||||||
if (!addedFields.isEmpty()) {
|
if (!addedFields.isEmpty()) {
|
||||||
messages = getFormattedMessagesForAllFieldChange(publishTo, entity, addedFields, CHANGE_TYPE.ADD);
|
messages = getFormattedMessagesForAllFieldChange(publishTo, entity, addedFields, ChangeType.ADD);
|
||||||
} else if (!deletedFields.isEmpty()) {
|
} else if (!deletedFields.isEmpty()) {
|
||||||
messages = getFormattedMessagesForAllFieldChange(publishTo, entity, deletedFields, CHANGE_TYPE.DELETE);
|
messages = getFormattedMessagesForAllFieldChange(publishTo, entity, deletedFields, ChangeType.DELETE);
|
||||||
}
|
}
|
||||||
return messages;
|
return messages;
|
||||||
}
|
}
|
||||||
@ -502,7 +499,7 @@ public final class ChangeEventParser {
|
|||||||
// convert the added field and deleted field into one update message
|
// convert the added field and deleted field into one update message
|
||||||
String message =
|
String message =
|
||||||
createMessageForField(
|
createMessageForField(
|
||||||
publishTo, link, CHANGE_TYPE.UPDATE, fieldName, field.getOldValue(), addedField.get().getNewValue());
|
publishTo, link, ChangeType.UPDATE, fieldName, field.getOldValue(), addedField.get().getNewValue());
|
||||||
messages.put(link, message);
|
messages.put(link, message);
|
||||||
// Remove the field from addedFields list to avoid double processing
|
// Remove the field from addedFields list to avoid double processing
|
||||||
addedFields = addedFields.stream().filter(f -> !f.equals(addedField.get())).collect(Collectors.toList());
|
addedFields = addedFields.stream().filter(f -> !f.equals(addedField.get())).collect(Collectors.toList());
|
||||||
@ -510,12 +507,12 @@ public final class ChangeEventParser {
|
|||||||
// process the deleted field
|
// process the deleted field
|
||||||
messages.putAll(
|
messages.putAll(
|
||||||
getFormattedMessagesForAllFieldChange(
|
getFormattedMessagesForAllFieldChange(
|
||||||
publishTo, entity, Collections.singletonList(field), CHANGE_TYPE.DELETE));
|
publishTo, entity, Collections.singletonList(field), ChangeType.DELETE));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// process the remaining added fields
|
// process the remaining added fields
|
||||||
if (!addedFields.isEmpty()) {
|
if (!addedFields.isEmpty()) {
|
||||||
messages.putAll(getFormattedMessagesForAllFieldChange(publishTo, entity, addedFields, CHANGE_TYPE.ADD));
|
messages.putAll(getFormattedMessagesForAllFieldChange(publishTo, entity, addedFields, ChangeType.ADD));
|
||||||
}
|
}
|
||||||
return messages;
|
return messages;
|
||||||
}
|
}
|
||||||
@ -543,9 +540,9 @@ public final class ChangeEventParser {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static String createMessageForField(
|
private static String createMessageForField(
|
||||||
PUBLISH_TO publishTo,
|
PublishTo publishTo,
|
||||||
EntityLink link,
|
EntityLink link,
|
||||||
CHANGE_TYPE changeType,
|
ChangeType changeType,
|
||||||
String fieldName,
|
String fieldName,
|
||||||
Object oldFieldValue,
|
Object oldFieldValue,
|
||||||
Object newFieldValue) {
|
Object newFieldValue) {
|
||||||
@ -591,19 +588,19 @@ public final class ChangeEventParser {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static String getPlainTextUpdateMessage(
|
private static String getPlainTextUpdateMessage(
|
||||||
PUBLISH_TO publishTo, String updatedField, String oldValue, String newValue) {
|
PublishTo publishTo, String updatedField, String oldValue, String newValue) {
|
||||||
// Get diff of old value and new value
|
// Get diff of old value and new value
|
||||||
String diff = getPlaintextDiff(publishTo, oldValue, newValue);
|
String diff = getPlaintextDiff(publishTo, oldValue, newValue);
|
||||||
if (nullOrEmpty(diff)) {
|
if (nullOrEmpty(diff)) {
|
||||||
return StringUtils.EMPTY;
|
return StringUtils.EMPTY;
|
||||||
} else {
|
} else {
|
||||||
String field = String.format("Updated %s : %s", getBold(publishTo), diff);
|
String field = String.format("Updated %s: %s", getBold(publishTo), diff);
|
||||||
return String.format(field, updatedField);
|
return String.format(field, updatedField);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String getObjectUpdateMessage(
|
private static String getObjectUpdateMessage(
|
||||||
PUBLISH_TO publishTo, String updatedField, JsonObject oldJson, JsonObject newJson) {
|
PublishTo publishTo, String updatedField, JsonObject oldJson, JsonObject newJson) {
|
||||||
List<String> labels = new ArrayList<>();
|
List<String> labels = new ArrayList<>();
|
||||||
Set<String> keys = newJson.keySet();
|
Set<String> keys = newJson.keySet();
|
||||||
// check if each key's value is the same
|
// check if each key's value is the same
|
||||||
@ -623,7 +620,7 @@ public final class ChangeEventParser {
|
|||||||
return String.format(format, updatedField);
|
return String.format(format, updatedField);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String getUpdateMessage(PUBLISH_TO publishTo, String updatedField, Object oldValue, Object newValue) {
|
private static String getUpdateMessage(PublishTo publishTo, String updatedField, Object oldValue, Object newValue) {
|
||||||
// New value should not be null in any case for an update
|
// New value should not be null in any case for an update
|
||||||
if (newValue == null) {
|
if (newValue == null) {
|
||||||
return StringUtils.EMPTY;
|
return StringUtils.EMPTY;
|
||||||
@ -632,7 +629,7 @@ public final class ChangeEventParser {
|
|||||||
if (nullOrEmpty(oldValue)) {
|
if (nullOrEmpty(oldValue)) {
|
||||||
String format = String.format("Updated %s to %s", getBold(publishTo), getFieldValue(newValue));
|
String format = String.format("Updated %s to %s", getBold(publishTo), getFieldValue(newValue));
|
||||||
return String.format(format, updatedField);
|
return String.format(format, updatedField);
|
||||||
} else if (updatedField.contains("tags") || updatedField.contains(FIELD_OWNER)) {
|
} else if (updatedField.contains(FIELD_TAGS) || updatedField.contains(FIELD_OWNER)) {
|
||||||
return getPlainTextUpdateMessage(publishTo, updatedField, getFieldValue(oldValue), getFieldValue(newValue));
|
return getPlainTextUpdateMessage(publishTo, updatedField, getFieldValue(oldValue), getFieldValue(newValue));
|
||||||
}
|
}
|
||||||
// if old value is not empty, and is of type array or object, the updates can be across multiple keys
|
// if old value is not empty, and is of type array or object, the updates can be across multiple keys
|
||||||
@ -673,8 +670,7 @@ public final class ChangeEventParser {
|
|||||||
return getPlainTextUpdateMessage(publishTo, updatedField, oldValue.toString(), newValue.toString());
|
return getPlainTextUpdateMessage(publishTo, updatedField, oldValue.toString(), newValue.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String handleTestCaseResult(
|
public static String handleTestCaseResult(PublishTo publishTo, EntityInterface entity, Object newValue) {
|
||||||
PUBLISH_TO publishTo, EntityInterface entity, EntityLink link, Object oldValue, Object newValue) {
|
|
||||||
String testCaseName = entity.getName();
|
String testCaseName = entity.getName();
|
||||||
TestCaseResult result = (TestCaseResult) newValue;
|
TestCaseResult result = (TestCaseResult) newValue;
|
||||||
TestCase testCaseEntity = (TestCase) entity;
|
TestCase testCaseEntity = (TestCase) entity;
|
||||||
@ -698,8 +694,7 @@ public final class ChangeEventParser {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String handleIngestionPipelineResult(
|
public static String handleIngestionPipelineResult(PublishTo publishTo, EntityInterface entity, Object newValue) {
|
||||||
PUBLISH_TO publishTo, EntityInterface entity, EntityLink link, Object oldValue, Object newValue) {
|
|
||||||
String ingestionPipelineName = entity.getName();
|
String ingestionPipelineName = entity.getName();
|
||||||
PipelineStatus status = (PipelineStatus) newValue;
|
PipelineStatus status = (PipelineStatus) newValue;
|
||||||
if (status != null) {
|
if (status != null) {
|
||||||
@ -712,11 +707,9 @@ public final class ChangeEventParser {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String handleKpiResult(
|
public static String handleKpiResult(PublishTo publishTo, EntityInterface entity, Object newValue) {
|
||||||
PUBLISH_TO publishTo, EntityInterface entity, EntityLink link, Object oldValue, Object newValue) {
|
|
||||||
String kpiName = entity.getName();
|
String kpiName = entity.getName();
|
||||||
KpiResult result = (KpiResult) newValue;
|
KpiResult result = (KpiResult) newValue;
|
||||||
Kpi kpiEntity = (Kpi) entity;
|
|
||||||
if (result != null) {
|
if (result != null) {
|
||||||
String format =
|
String format =
|
||||||
String.format(
|
String.format(
|
||||||
@ -730,7 +723,7 @@ public final class ChangeEventParser {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getPlaintextDiff(PUBLISH_TO publishTo, String oldValue, String newValue) {
|
public static String getPlaintextDiff(PublishTo publishTo, String oldValue, String newValue) {
|
||||||
// create a configured DiffRowGenerator
|
// create a configured DiffRowGenerator
|
||||||
String addMarker = FEED_ADD_MARKER;
|
String addMarker = FEED_ADD_MARKER;
|
||||||
String removeMarker = FEED_REMOVE_MARKER;
|
String removeMarker = FEED_REMOVE_MARKER;
|
||||||
|
|||||||
@ -44,6 +44,7 @@ import org.openmetadata.service.OpenMetadataApplicationTest;
|
|||||||
import org.openmetadata.service.resources.databases.TableResourceTest;
|
import org.openmetadata.service.resources.databases.TableResourceTest;
|
||||||
import org.openmetadata.service.resources.feeds.MessageParser.EntityLink;
|
import org.openmetadata.service.resources.feeds.MessageParser.EntityLink;
|
||||||
import org.openmetadata.service.util.ChangeEventParser;
|
import org.openmetadata.service.util.ChangeEventParser;
|
||||||
|
import org.openmetadata.service.util.ChangeEventParser.PublishTo;
|
||||||
import org.openmetadata.service.util.JsonUtils;
|
import org.openmetadata.service.util.JsonUtils;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@ -69,8 +70,7 @@ class ChangeEventParserResourceTest extends OpenMetadataApplicationTest {
|
|||||||
deleteTag.withName("tags").withOldValue("tag1");
|
deleteTag.withName("tags").withOldValue("tag1");
|
||||||
changeDescription.withFieldsAdded(List.of(addTag)).withFieldsDeleted(List.of(deleteTag)).withPreviousVersion(1.0);
|
changeDescription.withFieldsAdded(List.of(addTag)).withFieldsDeleted(List.of(deleteTag)).withPreviousVersion(1.0);
|
||||||
|
|
||||||
Map<EntityLink, String> messages =
|
Map<EntityLink, String> messages = ChangeEventParser.getFormattedMessages(PublishTo.FEED, changeDescription, TABLE);
|
||||||
ChangeEventParser.getFormattedMessages(ChangeEventParser.PUBLISH_TO.FEED, changeDescription, TABLE);
|
|
||||||
assertEquals(1, messages.size());
|
assertEquals(1, messages.size());
|
||||||
|
|
||||||
TagLabel tag1 = new TagLabel();
|
TagLabel tag1 = new TagLabel();
|
||||||
@ -83,7 +83,7 @@ class ChangeEventParserResourceTest extends OpenMetadataApplicationTest {
|
|||||||
deleteTag.withOldValue(JsonUtils.pojoToJson(List.of(tag1)));
|
deleteTag.withOldValue(JsonUtils.pojoToJson(List.of(tag1)));
|
||||||
|
|
||||||
Map<EntityLink, String> jsonMessages =
|
Map<EntityLink, String> jsonMessages =
|
||||||
ChangeEventParser.getFormattedMessages(ChangeEventParser.PUBLISH_TO.FEED, changeDescription, TABLE);
|
ChangeEventParser.getFormattedMessages(PublishTo.FEED, changeDescription, TABLE);
|
||||||
assertEquals(1, jsonMessages.size());
|
assertEquals(1, jsonMessages.size());
|
||||||
|
|
||||||
// The entity links and values of both the messages should be the same
|
// The entity links and values of both the messages should be the same
|
||||||
@ -98,8 +98,7 @@ class ChangeEventParserResourceTest extends OpenMetadataApplicationTest {
|
|||||||
entityReference.withId(UUID.randomUUID()).withName("user1").withDisplayName("User One");
|
entityReference.withId(UUID.randomUUID()).withName("user1").withDisplayName("User One");
|
||||||
fieldAdded(changeDescription, FIELD_OWNER, JsonUtils.pojoToJson(entityReference));
|
fieldAdded(changeDescription, FIELD_OWNER, JsonUtils.pojoToJson(entityReference));
|
||||||
|
|
||||||
Map<EntityLink, String> messages =
|
Map<EntityLink, String> messages = ChangeEventParser.getFormattedMessages(PublishTo.FEED, changeDescription, TABLE);
|
||||||
ChangeEventParser.getFormattedMessages(ChangeEventParser.PUBLISH_TO.FEED, changeDescription, TABLE);
|
|
||||||
assertEquals(1, messages.size());
|
assertEquals(1, messages.size());
|
||||||
|
|
||||||
assertEquals("Added **owner**: **User One**", messages.values().iterator().next());
|
assertEquals("Added **owner**: **User One**", messages.values().iterator().next());
|
||||||
@ -111,12 +110,11 @@ class ChangeEventParserResourceTest extends OpenMetadataApplicationTest {
|
|||||||
ChangeDescription changeDescription = new ChangeDescription();
|
ChangeDescription changeDescription = new ChangeDescription();
|
||||||
fieldUpdated(changeDescription, "description", "old description", "new description");
|
fieldUpdated(changeDescription, "description", "old description", "new description");
|
||||||
|
|
||||||
Map<EntityLink, String> messages =
|
Map<EntityLink, String> messages = ChangeEventParser.getFormattedMessages(PublishTo.FEED, changeDescription, TABLE);
|
||||||
ChangeEventParser.getFormattedMessages(ChangeEventParser.PUBLISH_TO.FEED, changeDescription, TABLE);
|
|
||||||
assertEquals(1, messages.size());
|
assertEquals(1, messages.size());
|
||||||
|
|
||||||
assertEquals(
|
assertEquals(
|
||||||
"Updated **description** : <span class=\"diff-removed\">old</span> "
|
"Updated **description**: <span class=\"diff-removed\">old</span> "
|
||||||
+ "<span class=\"diff-added\">new</span> description",
|
+ "<span class=\"diff-added\">new</span> description",
|
||||||
messages.values().iterator().next());
|
messages.values().iterator().next());
|
||||||
|
|
||||||
@ -127,7 +125,7 @@ class ChangeEventParserResourceTest extends OpenMetadataApplicationTest {
|
|||||||
|
|
||||||
// now test if both the type of updates give the same message
|
// now test if both the type of updates give the same message
|
||||||
Map<EntityLink, String> updatedMessages =
|
Map<EntityLink, String> updatedMessages =
|
||||||
ChangeEventParser.getFormattedMessages(ChangeEventParser.PUBLISH_TO.FEED, changeDescription, TABLE);
|
ChangeEventParser.getFormattedMessages(PublishTo.FEED, changeDescription, TABLE);
|
||||||
assertEquals(1, updatedMessages.size());
|
assertEquals(1, updatedMessages.size());
|
||||||
|
|
||||||
assertEquals(messages.keySet().iterator().next(), updatedMessages.keySet().iterator().next());
|
assertEquals(messages.keySet().iterator().next(), updatedMessages.keySet().iterator().next());
|
||||||
@ -141,10 +139,10 @@ class ChangeEventParserResourceTest extends OpenMetadataApplicationTest {
|
|||||||
fieldUpdated(changeDescription, "description", "old description", "new description");
|
fieldUpdated(changeDescription, "description", "old description", "new description");
|
||||||
|
|
||||||
Map<EntityLink, String> messages =
|
Map<EntityLink, String> messages =
|
||||||
ChangeEventParser.getFormattedMessages(ChangeEventParser.PUBLISH_TO.SLACK, changeDescription, TABLE);
|
ChangeEventParser.getFormattedMessages(PublishTo.SLACK, changeDescription, TABLE);
|
||||||
assertEquals(1, messages.size());
|
assertEquals(1, messages.size());
|
||||||
|
|
||||||
assertEquals("Updated *description* : ~old~ *new* description", messages.values().iterator().next());
|
assertEquals("Updated *description*: ~old~ *new* description", messages.values().iterator().next());
|
||||||
|
|
||||||
// test if it updates correctly with one add and one delete change
|
// test if it updates correctly with one add and one delete change
|
||||||
changeDescription = new ChangeDescription().withPreviousVersion(1.0);
|
changeDescription = new ChangeDescription().withPreviousVersion(1.0);
|
||||||
@ -153,7 +151,7 @@ class ChangeEventParserResourceTest extends OpenMetadataApplicationTest {
|
|||||||
|
|
||||||
// now test if both the type of updates give the same message
|
// now test if both the type of updates give the same message
|
||||||
Map<EntityLink, String> updatedMessages =
|
Map<EntityLink, String> updatedMessages =
|
||||||
ChangeEventParser.getFormattedMessages(ChangeEventParser.PUBLISH_TO.SLACK, changeDescription, TABLE);
|
ChangeEventParser.getFormattedMessages(PublishTo.SLACK, changeDescription, TABLE);
|
||||||
assertEquals(1, updatedMessages.size());
|
assertEquals(1, updatedMessages.size());
|
||||||
|
|
||||||
assertEquals(messages.keySet().iterator().next(), updatedMessages.keySet().iterator().next());
|
assertEquals(messages.keySet().iterator().next(), updatedMessages.keySet().iterator().next());
|
||||||
@ -174,8 +172,7 @@ class ChangeEventParserResourceTest extends OpenMetadataApplicationTest {
|
|||||||
"columns",
|
"columns",
|
||||||
"[{\"name\":\"lo_order\",\"displayName\":\"lo_order\",\"dataType\":\"INT\",\"dataLength\":1,\"dataTypeDisplay\":\"int\",\"fullyQualifiedName\":\"local_mysql.sample_db.lineorder.lo_order\",\"constraint\":\"NOT_NULL\"}]");
|
"[{\"name\":\"lo_order\",\"displayName\":\"lo_order\",\"dataType\":\"INT\",\"dataLength\":1,\"dataTypeDisplay\":\"int\",\"fullyQualifiedName\":\"local_mysql.sample_db.lineorder.lo_order\",\"constraint\":\"NOT_NULL\"}]");
|
||||||
|
|
||||||
Map<EntityLink, String> messages =
|
Map<EntityLink, String> messages = ChangeEventParser.getFormattedMessages(PublishTo.FEED, changeDescription, TABLE);
|
||||||
ChangeEventParser.getFormattedMessages(ChangeEventParser.PUBLISH_TO.FEED, changeDescription, TABLE);
|
|
||||||
assertEquals(1, messages.size());
|
assertEquals(1, messages.size());
|
||||||
|
|
||||||
assertEquals(
|
assertEquals(
|
||||||
@ -193,7 +190,7 @@ class ChangeEventParserResourceTest extends OpenMetadataApplicationTest {
|
|||||||
"columns",
|
"columns",
|
||||||
"[{\"name\":\"lo_orderpriority\",\"displayName\":\"lo_orderpriority\",\"dataType\":\"BLOB\",\"dataLength\":1,\"dataTypeDisplay\":\"blob\",\"fullyQualifiedName\":\"local_mysql.sample_db.lineorder.lo_orderpriority\",\"tags\":[],\"constraint\":\"NOT_NULL\"}]");
|
"[{\"name\":\"lo_orderpriority\",\"displayName\":\"lo_orderpriority\",\"dataType\":\"BLOB\",\"dataLength\":1,\"dataTypeDisplay\":\"blob\",\"fullyQualifiedName\":\"local_mysql.sample_db.lineorder.lo_orderpriority\",\"tags\":[],\"constraint\":\"NOT_NULL\"}]");
|
||||||
|
|
||||||
messages = ChangeEventParser.getFormattedMessages(ChangeEventParser.PUBLISH_TO.FEED, changeDescription, TABLE);
|
messages = ChangeEventParser.getFormattedMessages(PublishTo.FEED, changeDescription, TABLE);
|
||||||
assertEquals(1, messages.size());
|
assertEquals(1, messages.size());
|
||||||
|
|
||||||
assertEquals(
|
assertEquals(
|
||||||
@ -211,11 +208,11 @@ class ChangeEventParserResourceTest extends OpenMetadataApplicationTest {
|
|||||||
"columns",
|
"columns",
|
||||||
"[{\"name\":\"lo_orderpriority\",\"displayName\":\"lo_orderpriority\",\"dataType\":\"BLOB\",\"dataLength\":1,\"dataTypeDisplay\":\"blob\",\"fullyQualifiedName\":\"local_mysql.sample_db.lineorder.lo_orderpriority\"}]");
|
"[{\"name\":\"lo_orderpriority\",\"displayName\":\"lo_orderpriority\",\"dataType\":\"BLOB\",\"dataLength\":1,\"dataTypeDisplay\":\"blob\",\"fullyQualifiedName\":\"local_mysql.sample_db.lineorder.lo_orderpriority\"}]");
|
||||||
|
|
||||||
messages = ChangeEventParser.getFormattedMessages(ChangeEventParser.PUBLISH_TO.FEED, changeDescription, TABLE);
|
messages = ChangeEventParser.getFormattedMessages(PublishTo.FEED, changeDescription, TABLE);
|
||||||
assertEquals(1, messages.size());
|
assertEquals(1, messages.size());
|
||||||
|
|
||||||
assertEquals(
|
assertEquals(
|
||||||
"Updated **columns** : lo_orderpriority <span class=\"diff-added\">, newColumn</span>",
|
"Updated **columns**: lo_orderpriority <span class=\"diff-added\">, newColumn</span>",
|
||||||
messages.values().iterator().next());
|
messages.values().iterator().next());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -234,7 +231,7 @@ class ChangeEventParserResourceTest extends OpenMetadataApplicationTest {
|
|||||||
"[{\"name\":\"lo_order\",\"displayName\":\"lo_order\",\"dataType\":\"INT\",\"dataLength\":1,\"dataTypeDisplay\":\"int\",\"fullyQualifiedName\":\"local_mysql.sample_db.lineorder.lo_order\",\"constraint\":\"NOT_NULL\"}]");
|
"[{\"name\":\"lo_order\",\"displayName\":\"lo_order\",\"dataType\":\"INT\",\"dataLength\":1,\"dataTypeDisplay\":\"int\",\"fullyQualifiedName\":\"local_mysql.sample_db.lineorder.lo_order\",\"constraint\":\"NOT_NULL\"}]");
|
||||||
|
|
||||||
Map<EntityLink, String> messages =
|
Map<EntityLink, String> messages =
|
||||||
ChangeEventParser.getFormattedMessages(ChangeEventParser.PUBLISH_TO.SLACK, changeDescription, TABLE);
|
ChangeEventParser.getFormattedMessages(PublishTo.SLACK, changeDescription, TABLE);
|
||||||
assertEquals(1, messages.size());
|
assertEquals(1, messages.size());
|
||||||
|
|
||||||
assertEquals(
|
assertEquals(
|
||||||
@ -255,7 +252,7 @@ class ChangeEventParserResourceTest extends OpenMetadataApplicationTest {
|
|||||||
"columns",
|
"columns",
|
||||||
"[{\"name\":\"lo_orderpriority\",\"displayName\":\"lo_orderpriority\",\"dataType\":\"BLOB\",\"dataLength\":1,\"dataTypeDisplay\":\"blob\",\"fullyQualifiedName\":\"local_mysql.sample_db.lineorder.lo_orderpriority\",\"tags\":[],\"constraint\":\"NOT_NULL\"}]");
|
"[{\"name\":\"lo_orderpriority\",\"displayName\":\"lo_orderpriority\",\"dataType\":\"BLOB\",\"dataLength\":1,\"dataTypeDisplay\":\"blob\",\"fullyQualifiedName\":\"local_mysql.sample_db.lineorder.lo_orderpriority\",\"tags\":[],\"constraint\":\"NOT_NULL\"}]");
|
||||||
|
|
||||||
messages = ChangeEventParser.getFormattedMessages(ChangeEventParser.PUBLISH_TO.SLACK, changeDescription, TABLE);
|
messages = ChangeEventParser.getFormattedMessages(PublishTo.SLACK, changeDescription, TABLE);
|
||||||
assertEquals(1, messages.size());
|
assertEquals(1, messages.size());
|
||||||
|
|
||||||
assertEquals(
|
assertEquals(
|
||||||
@ -275,9 +272,9 @@ class ChangeEventParserResourceTest extends OpenMetadataApplicationTest {
|
|||||||
"columns",
|
"columns",
|
||||||
"[{\"name\":\"lo_orderpriority\",\"displayName\":\"lo_orderpriority\",\"dataType\":\"BLOB\",\"dataLength\":1,\"dataTypeDisplay\":\"blob\",\"fullyQualifiedName\":\"local_mysql.sample_db.lineorder.lo_orderpriority\"}]");
|
"[{\"name\":\"lo_orderpriority\",\"displayName\":\"lo_orderpriority\",\"dataType\":\"BLOB\",\"dataLength\":1,\"dataTypeDisplay\":\"blob\",\"fullyQualifiedName\":\"local_mysql.sample_db.lineorder.lo_orderpriority\"}]");
|
||||||
|
|
||||||
messages = ChangeEventParser.getFormattedMessages(ChangeEventParser.PUBLISH_TO.SLACK, changeDescription, TABLE);
|
messages = ChangeEventParser.getFormattedMessages(PublishTo.SLACK, changeDescription, TABLE);
|
||||||
assertEquals(1, messages.size());
|
assertEquals(1, messages.size());
|
||||||
|
|
||||||
assertEquals("Updated *columns* : lo_orderpriority *, newColumn*", messages.values().iterator().next());
|
assertEquals("Updated *columns*: lo_orderpriority *, newColumn*", messages.values().iterator().next());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -107,7 +107,7 @@ import org.openmetadata.service.resources.feeds.FeedResource.PostList;
|
|||||||
import org.openmetadata.service.resources.feeds.FeedResource.ThreadList;
|
import org.openmetadata.service.resources.feeds.FeedResource.ThreadList;
|
||||||
import org.openmetadata.service.resources.teams.TeamResourceTest;
|
import org.openmetadata.service.resources.teams.TeamResourceTest;
|
||||||
import org.openmetadata.service.resources.teams.UserResourceTest;
|
import org.openmetadata.service.resources.teams.UserResourceTest;
|
||||||
import org.openmetadata.service.util.ChangeEventParser;
|
import org.openmetadata.service.util.ChangeEventParser.PublishTo;
|
||||||
import org.openmetadata.service.util.EntityUtil;
|
import org.openmetadata.service.util.EntityUtil;
|
||||||
import org.openmetadata.service.util.JsonUtils;
|
import org.openmetadata.service.util.JsonUtils;
|
||||||
import org.openmetadata.service.util.TestUtils;
|
import org.openmetadata.service.util.TestUtils;
|
||||||
@ -599,7 +599,7 @@ public class FeedResourceTest extends OpenMetadataApplicationTest {
|
|||||||
assertEquals(TaskStatus.Closed, task.getStatus());
|
assertEquals(TaskStatus.Closed, task.getStatus());
|
||||||
assertEquals(1, taskThread.getPostsCount());
|
assertEquals(1, taskThread.getPostsCount());
|
||||||
assertEquals(1, taskThread.getPosts().size());
|
assertEquals(1, taskThread.getPosts().size());
|
||||||
String diff = getPlaintextDiff(ChangeEventParser.PUBLISH_TO.FEED, "old description", "accepted description");
|
String diff = getPlaintextDiff(PublishTo.FEED, "old description", "accepted description");
|
||||||
String expectedMessage = String.format("Resolved the Task with Description - %s", diff);
|
String expectedMessage = String.format("Resolved the Task with Description - %s", diff);
|
||||||
assertEquals(expectedMessage, taskThread.getPosts().get(0).getMessage());
|
assertEquals(expectedMessage, taskThread.getPosts().get(0).getMessage());
|
||||||
}
|
}
|
||||||
@ -687,7 +687,7 @@ public class FeedResourceTest extends OpenMetadataApplicationTest {
|
|||||||
assertEquals(TaskStatus.Closed, task.getStatus());
|
assertEquals(TaskStatus.Closed, task.getStatus());
|
||||||
assertEquals(1, taskThread.getPostsCount());
|
assertEquals(1, taskThread.getPostsCount());
|
||||||
assertEquals(1, taskThread.getPosts().size());
|
assertEquals(1, taskThread.getPosts().size());
|
||||||
String diff = getPlaintextDiff(ChangeEventParser.PUBLISH_TO.FEED, "", USER_ADDRESS_TAG_LABEL.getTagFQN());
|
String diff = getPlaintextDiff(PublishTo.FEED, "", USER_ADDRESS_TAG_LABEL.getTagFQN());
|
||||||
String expectedMessage = String.format("Resolved the Task with Tag(s) - %s", diff);
|
String expectedMessage = String.format("Resolved the Task with Tag(s) - %s", diff);
|
||||||
assertEquals(expectedMessage, taskThread.getPosts().get(0).getMessage());
|
assertEquals(expectedMessage, taskThread.getPosts().get(0).getMessage());
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user