From b88f92e34fb000a57106345434e527a031d51d41 Mon Sep 17 00:00:00 2001 From: Kartheek Palla Date: Tue, 27 Feb 2024 16:23:37 +0530 Subject: [PATCH] Issue KN-972 feat : Added code for generic implementation for setting searchLevel field name --- .../publish/helpers/FrameworkDataEnrichment.scala | 15 ++++++++++++--- .../spec/FrameworkDataEnrichmentTestSpec.scala | 1 + 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/publish-pipeline/publish-core/src/main/scala/org/sunbird/job/publish/helpers/FrameworkDataEnrichment.scala b/publish-pipeline/publish-core/src/main/scala/org/sunbird/job/publish/helpers/FrameworkDataEnrichment.scala index 0caf3bd6e..8080efc9b 100644 --- a/publish-pipeline/publish-core/src/main/scala/org/sunbird/job/publish/helpers/FrameworkDataEnrichment.scala +++ b/publish-pipeline/publish-core/src/main/scala/org/sunbird/job/publish/helpers/FrameworkDataEnrichment.scala @@ -21,7 +21,7 @@ trait FrameworkDataEnrichment { //private val fwMetaFields = List("boardIds", "subjectIds", "mediumIds", "topicsIds", "gradeLevelIds", "targetBoardIds", "targetSubjectIds", "targetMediumIds", "targetTopicIds", "targetGradeLevelIds") //private val fwMetaMap = Map(("se_boardIds", "se_boards") -> List("boardIds", "targetBoardIds"), ("se_subjectIds", "se_subjects") -> List("subjectIds", "targetSubjectIds"), ("se_mediumIds", "se_mediums") -> List("mediumIds", "targetMediumIds"), ("se_topicIds", "se_topics") -> List("topicsIds", "targetTopicIds"), ("se_gradeLevelIds", "se_gradeLevels") -> List("gradeLevelIds", "targetGradeLevelIds")) - private val frameworkCategorySearchMetadataMapping: HashMap[String, String] = HashMap[String, String]("se_boards" -> "board", "se_subjects"-> "subject", "se_mediums" -> "medium", "se_topics"-> "topic", "se_gradeLevels"-> "gradeLevel") + // private val frameworkCategorySearchMetadataMapping: HashMap[String, String] = HashMap[String, String]("se_boards" -> "board", "se_subjects"-> "subject", "se_mediums" -> "medium", "se_topics"-> "topic", "se_gradeLevels"-> "gradeLevel") def enrichFrameworkData(obj: ObjectData)(implicit neo4JUtil: Neo4JUtil, config: PublishConfig): ObjectData = { val (fwMetaFields, fwMetaMap) : (List[String], Map[(String, String), List[String]]) = @@ -45,10 +45,19 @@ trait FrameworkDataEnrichment { } } - private def revalidateFrameworkCategoryMetadata(obj: ObjectData, enMetadata: Map[String, AnyRef]) : Map[String, AnyRef] = { + private def revalidateFrameworkCategoryMetadata(obj: ObjectData, enMetadata: Map[String, AnyRef])(implicit neo4JUtil: Neo4JUtil) : Map[String, AnyRef] = { + + val masterCategories: List[Map[String, AnyRef]] = getMasterCategory("domain", "Category") + val frameworkCategorySearchMetadataMapping: Map[String, String] = masterCategories.flatMap(category => + Map(category.getOrElse("searchLabelFieldName", "").asInstanceOf[String] -> + category.getOrElse("code", "").asInstanceOf[String])).toMap + + logger.info("frameworkCategorySearchMetadataMapping:: " + frameworkCategorySearchMetadataMapping) + val updatedFwData: immutable.Iterable[(String, AnyRef)] = frameworkCategorySearchMetadataMapping.map(category => { val data: AnyRef = obj.metadata.getOrElse(category._2, null) - if(data != null) Map(category._1 -> getList(data)) else Map.empty + val se_data: AnyRef = enMetadata.getOrElse(category._1, null) + if(se_data == null && data != null) Map(category._1 -> getList(data)) else Map.empty }).filter(rec => rec.nonEmpty).flatten enMetadata ++ updatedFwData diff --git a/publish-pipeline/publish-core/src/test/scala/org/sunbird/job/publish/spec/FrameworkDataEnrichmentTestSpec.scala b/publish-pipeline/publish-core/src/test/scala/org/sunbird/job/publish/spec/FrameworkDataEnrichmentTestSpec.scala index f5476e8dc..e994977ce 100644 --- a/publish-pipeline/publish-core/src/test/scala/org/sunbird/job/publish/spec/FrameworkDataEnrichmentTestSpec.scala +++ b/publish-pipeline/publish-core/src/test/scala/org/sunbird/job/publish/spec/FrameworkDataEnrichmentTestSpec.scala @@ -64,6 +64,7 @@ class FrameworkDataEnrichmentTestSpec extends FlatSpec with BeforeAndAfterAll wi } "enrichFrameworkData with board, medium, gradeLevel and subject " should "enrich se_boards, se_mediums, se_gradeLevels and se_subjects" in { + enrichFrameworkMasterCategoryMap() val data = new ObjectData("do_123", Map[String, AnyRef]("name" -> "Content Name", "identifier" -> "do_123", "IL_UNIQUE_ID" -> "do_123", "pkgVersion" -> 0.0.asInstanceOf[AnyRef], "framework" -> "NCF", "board" -> "some board", "medium" -> List("some medium 1", "some_medium_2").asJava)) when(mockNeo4JUtil.getNodesName(ArgumentMatchers.anyObject())).thenReturn(Map[String, String]("ncf_medium_telugu" -> "Telugu", "ncf_medium_english" -> "English", "ncf_board_cbse" -> "CBSE", "ncfcopy_board_ncert" -> "NCERT")) val obj = new TestFrameworkDataEnrichment()