Skip to content

Commit 83bccdb

Browse files
committed
Merge branch 'master' into feature/dolly-proxy-4-pdl
2 parents 958666f + 9b88910 commit 83bccdb

17 files changed

Lines changed: 675 additions & 183 deletions

File tree

apps/dolly-search-service/src/main/java/no/nav/testnav/dollysearchservice/DollySearchServiceApplicationStarter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,4 @@ public static void main(String[] args) {
1414
.initializers(new NaisEnvironmentApplicationContextInitializer())
1515
.run(args);
1616
}
17-
}
17+
}

apps/dolly-search-service/src/main/java/no/nav/testnav/dollysearchservice/utils/OpenSearchPersonQueryUtils.java

Lines changed: 57 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
import static no.nav.testnav.dollysearchservice.utils.OpenSearchQueryUtils.METADATA_HISTORISK;
1919
import static no.nav.testnav.dollysearchservice.utils.OpenSearchQueryUtils.nestedExistQuery;
2020
import static no.nav.testnav.dollysearchservice.utils.OpenSearchQueryUtils.nestedMatchQuery;
21+
import static no.nav.testnav.dollysearchservice.utils.OpenSearchQueryUtils.nestedRangeGtQuery;
22+
import static no.nav.testnav.dollysearchservice.utils.OpenSearchQueryUtils.nestedRangeGteQuery;
2123
import static no.nav.testnav.dollysearchservice.utils.OpenSearchQueryUtils.nestedRangeQuery;
2224
import static org.apache.commons.lang3.BooleanUtils.isTrue;
2325
import static org.apache.commons.lang3.StringUtils.isNotBlank;
@@ -30,6 +32,7 @@ public class OpenSearchPersonQueryUtils {
3032
private static final String BOSTEDSADRESSE = "hentPerson.bostedsadresse";
3133
private static final String OPPHOLDSADRESSE = "hentPerson.oppholdsadresse";
3234
private static final String KONTAKTADRESSE = "hentPerson.kontaktadresse";
35+
private static final String STATSBORGERSKAP = "hentPerson.statsborgerskap";
3336
private static final String VEGADRESSE = "vegadresse";
3437
private static final String MATRIKKELADRESSE = "matrikkeladresse";
3538
private static final String UTENLANDSKADRESSE = "utenlandskAdresse";
@@ -328,6 +331,39 @@ public static void addHarDeltBostedQuery(BoolQuery.Builder queryBuilder, SearchR
328331
);
329332
}
330333

334+
public static void addAntallBostedsadresserQuery(BoolQuery.Builder queryBuilder, SearchRequest request) {
335+
336+
Optional.ofNullable(request.getPersonRequest().getAdresse())
337+
.filter(adresse -> nonNull(adresse.getAdressehistorikk()) &&
338+
nonNull(adresse.getAdressehistorikk().getAntallBostedsadresser()))
339+
.ifPresent(adresse ->
340+
queryBuilder
341+
.must(q -> q.nested(nestedRangeGtQuery(BOSTEDSADRESSE, "size",
342+
adresse.getAdressehistorikk().getAntallBostedsadresser()))));
343+
}
344+
345+
public static void addAntallKontaktadresserQuery(BoolQuery.Builder queryBuilder, SearchRequest request) {
346+
347+
Optional.ofNullable(request.getPersonRequest().getAdresse())
348+
.filter(adresse -> nonNull(adresse.getAdressehistorikk()) &&
349+
nonNull(adresse.getAdressehistorikk().getAntallKontaktadresser()))
350+
.ifPresent(adresse ->
351+
queryBuilder
352+
.must(q -> q.nested(nestedRangeGtQuery(KONTAKTADRESSE, "size",
353+
adresse.getAdressehistorikk().getAntallKontaktadresser()))));
354+
}
355+
356+
public static void addAntallOppholdsadresserQuery(BoolQuery.Builder queryBuilder, SearchRequest request) {
357+
358+
Optional.ofNullable(request.getPersonRequest().getAdresse())
359+
.filter(adresse -> nonNull(adresse.getAdressehistorikk()) &&
360+
nonNull(adresse.getAdressehistorikk().getAntallOppholdsadresser()))
361+
.ifPresent(adresse ->
362+
queryBuilder
363+
.must(q -> q.nested(nestedRangeGtQuery(OPPHOLDSADRESSE, "size",
364+
adresse.getAdressehistorikk().getAntallOppholdsadresser()))));
365+
}
366+
331367
public static void addHarKontaktinformasjonForDoedsboQuery(BoolQuery.Builder queryBuilder, SearchRequest request) {
332368

333369
if (isTrue(request.getPersonRequest().getHarKontaktinformasjonForDoedsbo())) {
@@ -367,10 +403,27 @@ public static void addStatsborgerskapQuery(BoolQuery.Builder queryBuilder, Searc
367403

368404
if (isNotBlank(request.getPersonRequest().getStatsborgerskap())) {
369405
queryBuilder
370-
.must(q -> q.nested(nestedMatchQuery("hentPerson.statsborgerskap", METADATA_HISTORISK, false)))
371-
.must(q -> q.nested(nestedMatchQuery("hentPerson.statsborgerskap", "land",
372-
request.getPersonRequest().getStatsborgerskap()))
373-
);
406+
.must(q -> q.nested(nestedMatchQuery(STATSBORGERSKAP, METADATA_HISTORISK, false)))
407+
.must(q -> q.nested(nestedMatchQuery(STATSBORGERSKAP, "land",
408+
request.getPersonRequest().getStatsborgerskap())));
409+
}
410+
}
411+
412+
public static void addAntallStatsborgerskapQuery(BoolQuery.Builder queryBuilder, SearchRequest request) {
413+
414+
if (nonNull(request.getPersonRequest().getAntallStatsborgerskap())) {
415+
queryBuilder
416+
.must(q -> q.nested(nestedRangeGteQuery(STATSBORGERSKAP, "size",
417+
request.getPersonRequest().getAntallStatsborgerskap())));
418+
}
419+
}
420+
421+
public static void addAntallRelasjonerQuery(BoolQuery.Builder queryBuilder, SearchRequest request) {
422+
423+
if (nonNull(request.getPersonRequest().getAntallRelasjoner())) {
424+
queryBuilder
425+
.must(q -> q.nested(nestedRangeGteQuery(FAMILIE_RELASJON_PATH, "size",
426+
request.getPersonRequest().getAntallRelasjoner())));
374427
}
375428
}
376429

apps/dolly-search-service/src/main/java/no/nav/testnav/dollysearchservice/utils/OpenSearchQueryBuilder.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,14 @@
1919
import static no.nav.testnav.dollysearchservice.utils.OpenSearchPersonQueryUtils.addAdresseUtlandQuery;
2020
import static no.nav.testnav.dollysearchservice.utils.OpenSearchPersonQueryUtils.addAdressebeskyttelseQuery;
2121
import static no.nav.testnav.dollysearchservice.utils.OpenSearchPersonQueryUtils.addAlderQuery;
22+
import static no.nav.testnav.dollysearchservice.utils.OpenSearchPersonQueryUtils.addAntallKontaktadresserQuery;
23+
import static no.nav.testnav.dollysearchservice.utils.OpenSearchPersonQueryUtils.addAntallOppholdsadresserQuery;
24+
import static no.nav.testnav.dollysearchservice.utils.OpenSearchPersonQueryUtils.addAntallRelasjonerQuery;
25+
import static no.nav.testnav.dollysearchservice.utils.OpenSearchPersonQueryUtils.addAntallStatsborgerskapQuery;
2226
import static no.nav.testnav.dollysearchservice.utils.OpenSearchPersonQueryUtils.addDoedsfallQuery;
2327
import static no.nav.testnav.dollysearchservice.utils.OpenSearchPersonQueryUtils.addFoedselsdatoQuery;
2428
import static no.nav.testnav.dollysearchservice.utils.OpenSearchPersonQueryUtils.addHarAdresseBydelsnummerQuery;
29+
import static no.nav.testnav.dollysearchservice.utils.OpenSearchPersonQueryUtils.addAntallBostedsadresserQuery;
2530
import static no.nav.testnav.dollysearchservice.utils.OpenSearchPersonQueryUtils.addHarBarnQuery;
2631
import static no.nav.testnav.dollysearchservice.utils.OpenSearchPersonQueryUtils.addHarBostedUkjentQuery;
2732
import static no.nav.testnav.dollysearchservice.utils.OpenSearchPersonQueryUtils.addHarBostedsadresseQuery;
@@ -92,12 +97,17 @@ private static void setPersonQuery(BoolQuery.Builder queryBuilder, SearchRequest
9297
addAdresseMatrikkelQuery(queryBuilder, request);
9398
addHarBostedUkjentQuery(queryBuilder, request);
9499
addHarDeltBostedQuery(queryBuilder, request);
100+
addAntallBostedsadresserQuery(queryBuilder, request);
101+
addAntallKontaktadresserQuery(queryBuilder, request);
102+
addAntallOppholdsadresserQuery(queryBuilder, request);
95103
addHarKontaktinformasjonForDoedsboQuery(queryBuilder, request);
96104
addHarUtenlandskIdentifikasjonsnummerQuery(queryBuilder, request);
97105
addHarFalskIdentitetQuery(queryBuilder, request);
98106
addHarTilrettelagtKommunikasjonQuery(queryBuilder, request);
99107
addHarSikkerhetstiltakQuery(queryBuilder, request);
100108
addStatsborgerskapQuery(queryBuilder, request);
109+
addAntallStatsborgerskapQuery(queryBuilder, request);
110+
addAntallRelasjonerQuery(queryBuilder, request);
101111
addHarOppholdQuery(queryBuilder, request);
102112
addHarNyIdentitetQuery(queryBuilder, request);
103113
addKjoennQuery(queryBuilder, request);

apps/dolly-search-service/src/main/java/no/nav/testnav/dollysearchservice/utils/OpenSearchQueryUtils.java

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ public class OpenSearchQueryUtils {
2525
public static final String HISTORISK = "historisk";
2626
public static final String METADATA_HISTORISK = "metadata.historisk";
2727
public static final String FOLKEREGISTERIDENTIFIKATOR = "hentPerson.folkeregisteridentifikator";
28-
public static final String NAVSPERSONIDENTIFIKATOR = "hentPerson.navspersonidentifikator";
2928
public static final String CONCAT = "%s.%s";
3029

3130
public static RangeQuery rangeQuery(String field, Object value1, Object value2) {
@@ -37,6 +36,22 @@ public static RangeQuery rangeQuery(String field, Object value1, Object value2)
3736
.build();
3837
}
3938

39+
public static RangeQuery rangeGteQuery(String field, Object gteData) {
40+
41+
return QueryBuilders.range()
42+
.field(field)
43+
.gte(JsonData.of(gteData))
44+
.build();
45+
}
46+
47+
public static RangeQuery rangeGtQuery(String field, Object gtData) {
48+
49+
return QueryBuilders.range()
50+
.field(field)
51+
.gt(JsonData.of(gtData))
52+
.build();
53+
}
54+
4055
public static MatchQuery matchQuery(String field, Object value) {
4156

4257
return QueryBuilders.match()
@@ -79,6 +94,24 @@ public static NestedQuery nestedRangeQuery(String path, String field, Object val
7994
.build();
8095
}
8196

97+
public static NestedQuery nestedRangeGteQuery(String path, String field, Object gteValue) {
98+
99+
return QueryBuilders.nested()
100+
.path(path)
101+
.query(q -> q.range(rangeGteQuery(CONCAT.formatted(path, field), gteValue)))
102+
.scoreMode(ChildScoreMode.Avg)
103+
.build();
104+
}
105+
106+
public static NestedQuery nestedRangeGtQuery(String path, String field, Object gtValue) {
107+
108+
return QueryBuilders.nested()
109+
.path(path)
110+
.query(q -> q.range(rangeGtQuery(CONCAT.formatted(path, field), gtValue)))
111+
.scoreMode(ChildScoreMode.Avg)
112+
.build();
113+
}
114+
82115
public static NestedQuery nestedRegexpQuery(String path, String field, String value) {
83116

84117
return QueryBuilders.nested()

apps/pdl-forvalter/src/main/java/no/nav/pdl/forvalter/service/FolkeregisterPersonstatusService.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -204,9 +204,9 @@ protected static void setGyldigTilOgMed(PersonDTO person) {
204204
}
205205
}
206206

207-
Optional
208-
.ofNullable(folkeregisterPersonstatus.getFirst())
209-
.ifPresent(first -> first.setGyldigTilOgMed(null));
207+
if (!folkeregisterPersonstatus.isEmpty()) {
208+
folkeregisterPersonstatus.getFirst().setGyldigTilOgMed(null);
209+
}
210210

211211
}
212212

apps/pdl-lagre-service/src/main/java/no/nav/testnav/pdllagreservice/PdlLagreServiceApplicationStarter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,4 @@ public static void main(String[] args) {
1313
.initializers(new NaisEnvironmentApplicationContextInitializer())
1414
.run(args);
1515
}
16-
}
16+
}

apps/pdl-lagre-service/src/main/java/no/nav/testnav/pdllagreservice/exception/UnrecoverableException.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
package no.nav.testnav.pdllagreservice.exception;
22

33
public class UnrecoverableException extends RuntimeException {
4-
public UnrecoverableException(String message) {
5-
super(message);
6-
}
74

85
public UnrecoverableException(String message, Exception e) {
96
super(message, e);

apps/pdl-lagre-service/src/main/java/no/nav/testnav/pdllagreservice/kafka/KafkaBeanUtilities.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package no.nav.testnav.pdllagreservice.kafka;
22

3-
import io.confluent.kafka.serializers.KafkaAvroDeserializer;
43
import lombok.experimental.UtilityClass;
54
import lombok.val;
65
import org.apache.kafka.clients.consumer.ConsumerConfig;
@@ -22,10 +21,6 @@ public DefaultKafkaConsumerFactory<Object, Object> longStringConsumerFactory(Map
2221
return customConsumerFactory(configurationProperties, LongDeserializer.class, StringDeserializer.class);
2322
}
2423

25-
public DefaultKafkaConsumerFactory<Object, Object> avroAvroConsumerFactory(Map<String, Object> configurationProperties) {
26-
return customConsumerFactory(configurationProperties, KafkaAvroDeserializer.class, KafkaAvroDeserializer.class);
27-
}
28-
2924
public DefaultKafkaConsumerFactory<Object, Object> customConsumerFactory(Map<String, Object> oldConfigurationProperties,
3025
Class keyDeserializerClass,
3126
Class valueDeserializerClass) {

apps/pdl-lagre-service/src/main/java/no/nav/testnav/pdllagreservice/listener/PdlPersonDokumentListener.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import java.util.HashMap;
2323

2424
import static java.util.Objects.isNull;
25+
import static no.nav.testnav.pdllagreservice.listener.PdlPersonMappingAddendum.appendSizeAttribute;
2526
import static no.nav.testnav.pdllagreservice.utility.MetricUtils.KAFKA_CONSUMER_TIMED;
2627
import static no.nav.testnav.pdllagreservice.utility.MetricUtils.KEY;
2728

@@ -40,9 +41,9 @@ public class PdlPersonDokumentListener {
4041

4142
@KafkaListener(
4243
id = "pdl-lagre-person",
43-
clientIdPrefix = "testnav-lagre-person-v3",
44+
clientIdPrefix = "testnav-lagre-person-v4",
4445
topics = "pdl.pdl-persondokument-tagged-v1",
45-
groupId = "testnav-pdl-lagre-person-v3",
46+
groupId = "testnav-pdl-lagre-person-v4",
4647
containerFactory = "pdlDokumentKafkaFactory"
4748
)
4849
@Timed(value = KAFKA_CONSUMER_TIMED, extraTags = {KEY, "pdldokument"}, percentiles = {.99, .75, .50, .25})
@@ -66,7 +67,8 @@ private OpensearchDocumentData convert(ConsumerRecord<String, String> post) {
6667
} else {
6768
val dokument = mapper.readValue(post.value(), new TypeReference<HashMap<String, Object>>() {
6869
});
69-
return new OpensearchDocumentData(personIndex, post.key(), dokument);
70+
val dokumentMedSizeAttributter = appendSizeAttribute(dokument);
71+
return new OpensearchDocumentData(personIndex, post.key(), dokumentMedSizeAttributter);
7072
}
7173
} catch (RuntimeException | IOException exception) {
7274

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package no.nav.testnav.pdllagreservice.listener;
2+
3+
import lombok.experimental.UtilityClass;
4+
import lombok.extern.slf4j.Slf4j;
5+
import lombok.val;
6+
7+
import java.util.List;
8+
import java.util.Map;
9+
10+
import static java.util.Objects.isNull;
11+
12+
@Slf4j
13+
@UtilityClass
14+
public class PdlPersonMappingAddendum {
15+
16+
/**
17+
* Appends a "size" attribute to each list-type attribute within the "hentPerson" map of the provided dokument.
18+
*
19+
* @param dokument The dokument map containing person data.
20+
* @return The modified dokument map with "size" attributes added.
21+
*/
22+
public static Map<String, Object> appendSizeAttribute(Map<String, Object> dokument) {
23+
24+
if (isNull(dokument.get("hentPerson"))) {
25+
return dokument;
26+
}
27+
28+
((Map<String, Object>) dokument.get("hentPerson"))
29+
.forEach((key, value) -> {
30+
31+
if (value instanceof List<?> list) {
32+
33+
list.forEach(item -> {
34+
if (item instanceof Map<?, ?> ) {
35+
val egenskap = (Map<String, Object>) item;
36+
egenskap.put("size", list.size());
37+
}
38+
});
39+
}
40+
});
41+
42+
return dokument;
43+
}
44+
}

0 commit comments

Comments
 (0)