From 1cd21bcba02fcc6ed3a41aa60718db0a1e6a7071 Mon Sep 17 00:00:00 2001 From: Rex Lai Date: Wed, 6 Nov 2024 16:00:28 +0000 Subject: [PATCH] Add more monitoring data to solr. EMC-342 --- .../catalogue/config/CatalogueServiceConfig.java | 2 ++ .../ceh/gateway/catalogue/indexing/solr/SolrIndex.java | 2 ++ .../solr/SolrIndexMonitoringActivityGenerator.java | 2 ++ .../solr/SolrIndexMonitoringFacilityGenerator.java | 5 ++++- .../solr/SolrIndexMonitoringNetworkGenerator.java | 2 ++ .../solr/SolrIndexMonitoringProgrammeGenerator.java | 2 ++ .../ceh/gateway/catalogue/model/ResponsibleParty.java | 4 ++++ .../catalogue/search/HardcodedFacetFactory.java | 10 ++++++++++ .../solr/SolrIndexMonitoringActivityGeneratorTest.java | 3 +++ .../solr/SolrIndexMonitoringFacilityGeneratorTest.java | 3 +++ .../solr/SolrIndexMonitoringGeneratorData.java | 10 ++++++++-- .../solr/SolrIndexMonitoringNetworkGeneratorTest.java | 3 +++ .../SolrIndexMonitoringProgrammeGeneratorTest.java | 3 +++ solr/documents/conf/managed-schema | 2 ++ 14 files changed, 50 insertions(+), 3 deletions(-) diff --git a/java/src/main/java/uk/ac/ceh/gateway/catalogue/config/CatalogueServiceConfig.java b/java/src/main/java/uk/ac/ceh/gateway/catalogue/config/CatalogueServiceConfig.java index 2bee100ee..686859c2f 100644 --- a/java/src/main/java/uk/ac/ceh/gateway/catalogue/config/CatalogueServiceConfig.java +++ b/java/src/main/java/uk/ac/ceh/gateway/catalogue/config/CatalogueServiceConfig.java @@ -289,6 +289,8 @@ public CatalogueService eidcCatalogue(List vocabularies) { .facetKey("resourceType") .facetKey("environmentalDomains") .facetKey("facilityType") + .facetKey("pointOfContact") + .facetKey("operationalStatus") .documentType(MONITORING_ACTIVITY_TYPE) .documentType(MONITORING_FACILITY_TYPE) .documentType(MONITORING_NETWORK_TYPE) diff --git a/java/src/main/java/uk/ac/ceh/gateway/catalogue/indexing/solr/SolrIndex.java b/java/src/main/java/uk/ac/ceh/gateway/catalogue/indexing/solr/SolrIndex.java index 2f7407fc4..92d4d91af 100644 --- a/java/src/main/java/uk/ac/ceh/gateway/catalogue/indexing/solr/SolrIndex.java +++ b/java/src/main/java/uk/ac/ceh/gateway/catalogue/indexing/solr/SolrIndex.java @@ -68,6 +68,8 @@ public class SolrIndex { private @Field List keywordsParameters; private @Field List operatingPeriod; private @Field String objectives; + private @Field List pointOfContact; + private @Field String operationalStatus; private @Field List responsibleParties; private @Field List rightsHolder; private @Field List ror; diff --git a/java/src/main/java/uk/ac/ceh/gateway/catalogue/indexing/solr/SolrIndexMonitoringActivityGenerator.java b/java/src/main/java/uk/ac/ceh/gateway/catalogue/indexing/solr/SolrIndexMonitoringActivityGenerator.java index a71b55ff3..814e92a13 100644 --- a/java/src/main/java/uk/ac/ceh/gateway/catalogue/indexing/solr/SolrIndexMonitoringActivityGenerator.java +++ b/java/src/main/java/uk/ac/ceh/gateway/catalogue/indexing/solr/SolrIndexMonitoringActivityGenerator.java @@ -33,6 +33,8 @@ public SolrIndex generateIndex(MonitoringActivity document) { .setKeywordsParameters(grab(document.getKeywordsParameters(), Keyword::getValue)) .setResponsibleParties(grab(document.getResponsibleParties(), ResponsibleParty::getOrganisationName)) .setOperatingPeriod(grab(document.getOperatingPeriod(), MonitoringDocumentUtil::getTimeRange)) + .setPointOfContact(grab(document.getResponsibleParties(), ResponsibleParty::getPointOfContact)) + .setOperationalStatus(document.getOperationalStatus() == null? "Unknown" : document.getOperationalStatus()) ; } } diff --git a/java/src/main/java/uk/ac/ceh/gateway/catalogue/indexing/solr/SolrIndexMonitoringFacilityGenerator.java b/java/src/main/java/uk/ac/ceh/gateway/catalogue/indexing/solr/SolrIndexMonitoringFacilityGenerator.java index c696ac26a..b1396deb4 100644 --- a/java/src/main/java/uk/ac/ceh/gateway/catalogue/indexing/solr/SolrIndexMonitoringFacilityGenerator.java +++ b/java/src/main/java/uk/ac/ceh/gateway/catalogue/indexing/solr/SolrIndexMonitoringFacilityGenerator.java @@ -36,7 +36,10 @@ public SolrIndex generateIndex(MonitoringFacility document) { .setEnvironmentalDomains(grab(document.getEnvironmentalDomain(), Keyword::getValue)) .setKeywordsParameters(grab(document.getKeywordsParameters(), Keyword::getValue)) .setResponsibleParties(grab(document.getResponsibleParties(), ResponsibleParty::getOrganisationName)) - .setOperatingPeriod(grab(document.getOperatingPeriod(), MonitoringDocumentUtil::getTimeRange)); + .setOperatingPeriod(grab(document.getOperatingPeriod(), MonitoringDocumentUtil::getTimeRange)) + .setPointOfContact(grab(document.getResponsibleParties(), ResponsibleParty::getPointOfContact)) + .setOperationalStatus(document.getOperationalStatus() == null? "Unknown" : document.getOperationalStatus()) + ; } } diff --git a/java/src/main/java/uk/ac/ceh/gateway/catalogue/indexing/solr/SolrIndexMonitoringNetworkGenerator.java b/java/src/main/java/uk/ac/ceh/gateway/catalogue/indexing/solr/SolrIndexMonitoringNetworkGenerator.java index 6859310df..a55cdf74f 100644 --- a/java/src/main/java/uk/ac/ceh/gateway/catalogue/indexing/solr/SolrIndexMonitoringNetworkGenerator.java +++ b/java/src/main/java/uk/ac/ceh/gateway/catalogue/indexing/solr/SolrIndexMonitoringNetworkGenerator.java @@ -32,6 +32,8 @@ public SolrIndex generateIndex(MonitoringNetwork document) { .setEnvironmentalDomains(grab(document.getEnvironmentalDomain(), Keyword::getValue)) .setKeywordsParameters(grab(document.getKeywordsParameters(), Keyword::getValue)) .setResponsibleParties(grab(document.getResponsibleParties(), ResponsibleParty::getOrganisationName)) + .setPointOfContact(grab(document.getResponsibleParties(), ResponsibleParty::getPointOfContact)) + .setOperationalStatus(document.getOperationalStatus() == null? "Unknown" : document.getOperationalStatus()) ; } } diff --git a/java/src/main/java/uk/ac/ceh/gateway/catalogue/indexing/solr/SolrIndexMonitoringProgrammeGenerator.java b/java/src/main/java/uk/ac/ceh/gateway/catalogue/indexing/solr/SolrIndexMonitoringProgrammeGenerator.java index 2b3b16d1b..e6a152d9d 100644 --- a/java/src/main/java/uk/ac/ceh/gateway/catalogue/indexing/solr/SolrIndexMonitoringProgrammeGenerator.java +++ b/java/src/main/java/uk/ac/ceh/gateway/catalogue/indexing/solr/SolrIndexMonitoringProgrammeGenerator.java @@ -33,6 +33,8 @@ public SolrIndex generateIndex(MonitoringProgramme document) { .setKeywordsParameters(grab(document.getKeywordsParameters(), Keyword::getValue)) .setResponsibleParties(grab(document.getResponsibleParties(), ResponsibleParty::getOrganisationName)) .setOperatingPeriod(grab(document.getOperatingPeriod(), MonitoringDocumentUtil::getTimeRange)) + .setPointOfContact(grab(document.getResponsibleParties(), ResponsibleParty::getPointOfContact)) + .setOperationalStatus(document.getOperationalStatus() == null? "Unknown" : document.getOperationalStatus()) ; } } diff --git a/java/src/main/java/uk/ac/ceh/gateway/catalogue/model/ResponsibleParty.java b/java/src/main/java/uk/ac/ceh/gateway/catalogue/model/ResponsibleParty.java index 1c38d46a2..904106e39 100644 --- a/java/src/main/java/uk/ac/ceh/gateway/catalogue/model/ResponsibleParty.java +++ b/java/src/main/java/uk/ac/ceh/gateway/catalogue/model/ResponsibleParty.java @@ -57,6 +57,10 @@ public String getRoleDisplayName() { return toTitlecase(role); } + public String getPointOfContact() { + return role.equals("pointOfContact")? organisationName : ""; + } + private String toTitlecase(String camelCase) { StringBuilder result = new StringBuilder(); diff --git a/java/src/main/java/uk/ac/ceh/gateway/catalogue/search/HardcodedFacetFactory.java b/java/src/main/java/uk/ac/ceh/gateway/catalogue/search/HardcodedFacetFactory.java index f9722d604..ab9bfd60b 100644 --- a/java/src/main/java/uk/ac/ceh/gateway/catalogue/search/HardcodedFacetFactory.java +++ b/java/src/main/java/uk/ac/ceh/gateway/catalogue/search/HardcodedFacetFactory.java @@ -148,6 +148,16 @@ public Facet newInstance(@NonNull String key) { .displayName("Facility type") .hierarchical(false) .build(); + case "pointOfContact" -> Facet.builder() + .fieldName("pointOfContact") + .displayName("Point of contact") + .hierarchical(false) + .build(); + case "operationalStatus" -> Facet.builder() + .fieldName("operationalStatus") + .displayName("Operational status") + .hierarchical(false) + .build(); case "rightsHolder" -> Facet.builder() .fieldName("rightsHolder") .displayName("Rights holder") diff --git a/java/src/test/java/uk/ac/ceh/gateway/catalogue/indexing/solr/SolrIndexMonitoringActivityGeneratorTest.java b/java/src/test/java/uk/ac/ceh/gateway/catalogue/indexing/solr/SolrIndexMonitoringActivityGeneratorTest.java index f42cc07df..62c75a332 100644 --- a/java/src/test/java/uk/ac/ceh/gateway/catalogue/indexing/solr/SolrIndexMonitoringActivityGeneratorTest.java +++ b/java/src/test/java/uk/ac/ceh/gateway/catalogue/indexing/solr/SolrIndexMonitoringActivityGeneratorTest.java @@ -37,6 +37,7 @@ public void checkThatMonitoringActivityDataTransferedToIndex() { document.setKeywordsParameters(SolrIndexMonitoringGeneratorData.paramList); document.setResponsibleParties(SolrIndexMonitoringGeneratorData.orgList); document.setOperatingPeriod(SolrIndexMonitoringGeneratorData.periodList); + document.setOperationalStatus(SolrIndexMonitoringGeneratorData.operationalStatus); //When SolrIndex index = generator.generateIndex(document); @@ -47,6 +48,8 @@ public void checkThatMonitoringActivityDataTransferedToIndex() { assertThat(SolrIndexMonitoringGeneratorData.expectedParamList, equalTo(index.getKeywordsParameters())); assertThat(SolrIndexMonitoringGeneratorData.expectedOrgList, equalTo(index.getResponsibleParties())); assertThat(SolrIndexMonitoringGeneratorData.expectedPeriodList, equalTo(index.getOperatingPeriod())); + assertThat(SolrIndexMonitoringGeneratorData.expectedPointOfContactList, equalTo(index.getPointOfContact())); + assertThat(SolrIndexMonitoringGeneratorData.expectedOperationalStatus, equalTo(index.getOperationalStatus())); } } diff --git a/java/src/test/java/uk/ac/ceh/gateway/catalogue/indexing/solr/SolrIndexMonitoringFacilityGeneratorTest.java b/java/src/test/java/uk/ac/ceh/gateway/catalogue/indexing/solr/SolrIndexMonitoringFacilityGeneratorTest.java index 1fda086b5..2196142b9 100644 --- a/java/src/test/java/uk/ac/ceh/gateway/catalogue/indexing/solr/SolrIndexMonitoringFacilityGeneratorTest.java +++ b/java/src/test/java/uk/ac/ceh/gateway/catalogue/indexing/solr/SolrIndexMonitoringFacilityGeneratorTest.java @@ -37,6 +37,7 @@ public void checkThatMonitoringFacilityDataTransferedToIndex() { document.setKeywordsParameters(SolrIndexMonitoringGeneratorData.paramList); document.setResponsibleParties(SolrIndexMonitoringGeneratorData.orgList); document.setOperatingPeriod(SolrIndexMonitoringGeneratorData.periodList); + document.setOperationalStatus(SolrIndexMonitoringGeneratorData.operationalStatus); //When SolrIndex index = generator.generateIndex(document); @@ -47,6 +48,8 @@ public void checkThatMonitoringFacilityDataTransferedToIndex() { assertThat(SolrIndexMonitoringGeneratorData.expectedParamList, equalTo(index.getKeywordsParameters())); assertThat(SolrIndexMonitoringGeneratorData.expectedOrgList, equalTo(index.getResponsibleParties())); assertThat(SolrIndexMonitoringGeneratorData.expectedPeriodList, equalTo(index.getOperatingPeriod())); + assertThat(SolrIndexMonitoringGeneratorData.expectedPointOfContactList, equalTo(index.getPointOfContact())); + assertThat(SolrIndexMonitoringGeneratorData.expectedOperationalStatus, equalTo(index.getOperationalStatus())); } } diff --git a/java/src/test/java/uk/ac/ceh/gateway/catalogue/indexing/solr/SolrIndexMonitoringGeneratorData.java b/java/src/test/java/uk/ac/ceh/gateway/catalogue/indexing/solr/SolrIndexMonitoringGeneratorData.java index 9a4c49f55..2a21ed79a 100644 --- a/java/src/test/java/uk/ac/ceh/gateway/catalogue/indexing/solr/SolrIndexMonitoringGeneratorData.java +++ b/java/src/test/java/uk/ac/ceh/gateway/catalogue/indexing/solr/SolrIndexMonitoringGeneratorData.java @@ -11,6 +11,9 @@ public class SolrIndexMonitoringGeneratorData { static String objectives = "objective"; static String expectedObjectives = "objective"; + static String operationalStatus = "Active"; + static String expectedOperationalStatus = "Active"; + static Keyword facilityType = Keyword.builder().value("facility_type").build(); static String expectedFacilityType = "facility_type"; @@ -33,13 +36,16 @@ public class SolrIndexMonitoringGeneratorData { ); static List orgList = Arrays.asList( - ResponsibleParty.builder().organisationName("org_1").build(), - ResponsibleParty.builder().organisationName("org_2").build() + ResponsibleParty.builder().organisationName("org_1").role("pointOfContact").build(), + ResponsibleParty.builder().organisationName("org_2").role("funder").build() ); static List expectedOrgList = Arrays.asList( "org_1", "org_2" ); + static List expectedPointOfContactList = Arrays.asList( + "org_1" + ); static List periodList = Arrays.asList( TimePeriod.builder().begin("2024-01-01").end("2024-02-01").build(), diff --git a/java/src/test/java/uk/ac/ceh/gateway/catalogue/indexing/solr/SolrIndexMonitoringNetworkGeneratorTest.java b/java/src/test/java/uk/ac/ceh/gateway/catalogue/indexing/solr/SolrIndexMonitoringNetworkGeneratorTest.java index 3284800f2..fb38b5585 100644 --- a/java/src/test/java/uk/ac/ceh/gateway/catalogue/indexing/solr/SolrIndexMonitoringNetworkGeneratorTest.java +++ b/java/src/test/java/uk/ac/ceh/gateway/catalogue/indexing/solr/SolrIndexMonitoringNetworkGeneratorTest.java @@ -36,6 +36,7 @@ public void checkThatMonitoringNetworkDataTransferedToIndex() { document.setEnvironmentalDomain(SolrIndexMonitoringGeneratorData.domainList); document.setKeywordsParameters(SolrIndexMonitoringGeneratorData.paramList); document.setResponsibleParties(SolrIndexMonitoringGeneratorData.orgList); + document.setOperationalStatus(SolrIndexMonitoringGeneratorData.operationalStatus); //When SolrIndex index = generator.generateIndex(document); @@ -45,6 +46,8 @@ public void checkThatMonitoringNetworkDataTransferedToIndex() { assertThat(SolrIndexMonitoringGeneratorData.expectedDomainList, equalTo(index.getEnvironmentalDomains())); assertThat(SolrIndexMonitoringGeneratorData.expectedParamList, equalTo(index.getKeywordsParameters())); assertThat(SolrIndexMonitoringGeneratorData.expectedOrgList, equalTo(index.getResponsibleParties())); + assertThat(SolrIndexMonitoringGeneratorData.expectedPointOfContactList, equalTo(index.getPointOfContact())); + assertThat(SolrIndexMonitoringGeneratorData.expectedOperationalStatus, equalTo(index.getOperationalStatus())); } } diff --git a/java/src/test/java/uk/ac/ceh/gateway/catalogue/indexing/solr/SolrIndexMonitoringProgrammeGeneratorTest.java b/java/src/test/java/uk/ac/ceh/gateway/catalogue/indexing/solr/SolrIndexMonitoringProgrammeGeneratorTest.java index 4ba535cf0..b856e02b1 100644 --- a/java/src/test/java/uk/ac/ceh/gateway/catalogue/indexing/solr/SolrIndexMonitoringProgrammeGeneratorTest.java +++ b/java/src/test/java/uk/ac/ceh/gateway/catalogue/indexing/solr/SolrIndexMonitoringProgrammeGeneratorTest.java @@ -37,6 +37,7 @@ public void checkThatMonitoringProgrammeDataTransferedToIndex() { document.setKeywordsParameters(SolrIndexMonitoringGeneratorData.paramList); document.setResponsibleParties(SolrIndexMonitoringGeneratorData.orgList); document.setOperatingPeriod(SolrIndexMonitoringGeneratorData.periodList); + document.setOperationalStatus(SolrIndexMonitoringGeneratorData.operationalStatus); //When SolrIndex index = generator.generateIndex(document); @@ -47,6 +48,8 @@ public void checkThatMonitoringProgrammeDataTransferedToIndex() { assertThat(SolrIndexMonitoringGeneratorData.expectedParamList, equalTo(index.getKeywordsParameters())); assertThat(SolrIndexMonitoringGeneratorData.expectedOrgList, equalTo(index.getResponsibleParties())); assertThat(SolrIndexMonitoringGeneratorData.expectedPeriodList, equalTo(index.getOperatingPeriod())); + assertThat(SolrIndexMonitoringGeneratorData.expectedPointOfContactList, equalTo(index.getPointOfContact())); + assertThat(SolrIndexMonitoringGeneratorData.expectedOperationalStatus, equalTo(index.getOperationalStatus())); } } diff --git a/solr/documents/conf/managed-schema b/solr/documents/conf/managed-schema index f9b92fefe..124860598 100644 --- a/solr/documents/conf/managed-schema +++ b/solr/documents/conf/managed-schema @@ -129,6 +129,8 @@ + +