From 2cb51f71cdf22dabbdba628c02f9f8df6eb7c3f0 Mon Sep 17 00:00:00 2001 From: IceS2 Date: Sun, 16 Feb 2025 20:58:55 +0100 Subject: [PATCH] Small refactor to be able to print correct message when reviewer is invalid (#19810) --- .../java/org/openmetadata/csv/EntityCsv.java | 24 +++++++++++++++++-- .../service/jdbi3/GlossaryRepository.java | 2 +- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/openmetadata-service/src/main/java/org/openmetadata/csv/EntityCsv.java b/openmetadata-service/src/main/java/org/openmetadata/csv/EntityCsv.java index 0121dbdc6d0..f13ae7b53a5 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/csv/EntityCsv.java +++ b/openmetadata-service/src/main/java/org/openmetadata/csv/EntityCsv.java @@ -50,6 +50,7 @@ import java.util.Map; import java.util.Optional; import java.util.Set; import java.util.UUID; +import java.util.function.Function; import javax.ws.rs.core.Response; import lombok.extern.slf4j.Slf4j; import org.apache.commons.csv.CSVFormat; @@ -193,7 +194,11 @@ public abstract class EntityCsv { } /** Owner field is in entityType:entityName format */ - public List getOwners(CSVPrinter printer, CSVRecord csvRecord, int fieldNumber) + public List getOwners( + CSVPrinter printer, + CSVRecord csvRecord, + int fieldNumber, + Function invalidMessageCreator) throws IOException { if (!processRecord) { return null; @@ -207,7 +212,7 @@ public abstract class EntityCsv { for (String owner : owners) { List ownerTypes = listOrEmpty(CsvUtil.fieldToEntities(owner)); if (ownerTypes.size() != 2) { - importFailure(printer, invalidOwner(fieldNumber), csvRecord); + importFailure(printer, invalidMessageCreator.apply(fieldNumber), csvRecord); return Collections.emptyList(); } EntityReference ownerRef = @@ -219,6 +224,16 @@ public abstract class EntityCsv { return refs.isEmpty() ? null : refs; } + public List getOwners(CSVPrinter printer, CSVRecord csvRecord, int fieldNumber) + throws IOException { + return getOwners(printer, csvRecord, fieldNumber, EntityCsv::invalidOwner); + } + + public List getReviewers( + CSVPrinter printer, CSVRecord csvRecord, int fieldNumber) throws IOException { + return getOwners(printer, csvRecord, fieldNumber, EntityCsv::invalidReviewer); + } + /** Owner field is in entityName format */ public EntityReference getOwnerAsUser(CSVPrinter printer, CSVRecord csvRecord, int fieldNumber) throws IOException { @@ -868,6 +883,11 @@ public abstract class EntityCsv { return String.format(FIELD_ERROR_MSG, CsvErrorType.INVALID_FIELD, field + 1, error); } + public static String invalidReviewer(int field) { + String error = "Reviewer should be of format user:userName or team:teamName"; + return String.format(FIELD_ERROR_MSG, CsvErrorType.INVALID_FIELD, field + 1, error); + } + public static String invalidExtension(int field, String key, String value) { String error = "Invalid key-value pair in extension string: Key = " diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/GlossaryRepository.java b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/GlossaryRepository.java index 5192f1afe27..d6519748d33 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/GlossaryRepository.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/GlossaryRepository.java @@ -200,7 +200,7 @@ public class GlossaryRepository extends EntityRepository { .withTags( getTagLabels( printer, csvRecord, List.of(Pair.of(7, TagLabel.TagSource.CLASSIFICATION)))) - .withReviewers(getOwners(printer, csvRecord, 8)) + .withReviewers(getReviewers(printer, csvRecord, 8)) .withOwners(getOwners(printer, csvRecord, 9)) .withStatus(getTermStatus(printer, csvRecord)) .withExtension(getExtension(printer, csvRecord, 11));