From ef4fd6342c1c717057172c33f65d39422d3f4e42 Mon Sep 17 00:00:00 2001 From: kristenhaerum Date: Wed, 10 Jan 2024 18:55:08 +0100 Subject: [PATCH] Lagt til flere opplysningstyper #deploy-tenor-search-service --- .../domain/TenorRequest.java | 47 +++++++- .../service/TenorSearchService.java | 113 ++++++++---------- 2 files changed, 92 insertions(+), 68 deletions(-) diff --git a/apps/tenor-search-service/src/main/java/no/nav/testnav/apps/tenorsearchservice/domain/TenorRequest.java b/apps/tenor-search-service/src/main/java/no/nav/testnav/apps/tenorsearchservice/domain/TenorRequest.java index 3784f035985..ea0a77dd9a1 100644 --- a/apps/tenor-search-service/src/main/java/no/nav/testnav/apps/tenorsearchservice/domain/TenorRequest.java +++ b/apps/tenor-search-service/src/main/java/no/nav/testnav/apps/tenorsearchservice/domain/TenorRequest.java @@ -16,8 +16,12 @@ public class TenorRequest { public enum IdentifikatorType {FNR, DNR, FNR_TIDLIGERE_DNR} public enum Kjoenn {Mann, Kvinne} public enum Roller {DAGLIG_LEDER} - public enum Personstatus {Bosatt, Doed, Forsvunnet, Foedselsregistrert, IkkeBosatt, Inaktiv, Midlertidig, Opphørt, Utflyttet} - public enum Sivilstand {EnkeEllerEnkemann, Gift, GjenlevendePartner, RegistrertPartner, Separert, SeparertPartner, Skilt, SkiltPartner, Ugift, Uoppgitt} + public enum Personstatus {Bosatt, Doed, Forsvunnet, Foedselsregistrert, IkkeBosatt, Inaktiv, Midlertidig, Opphoert, Utflyttet} + public enum Sivilstatus {EnkeEllerEnkemann, Gift, GjenlevendePartner, RegistrertPartner, Separert, SeparertPartner, Skilt, SkiltPartner, Ugift, Uoppgitt} + public enum UtenlandskPersonIdentifikasjon{UtenlandskIdentifikasjonsnummer, TaxIdentificationNumber, SocialSecurityNumber, UtlendingsmyndighetenesIdentifikasjonsnummer} + public enum IdentitetsgrunnlagStatus {IkkeKontrollert, IngenStatus, Kontrollert} + public enum Adressebeskyttelse {Fortrolig, StrengtFortrolig} + private List roller; @@ -25,8 +29,25 @@ public enum Sivilstand {EnkeEllerEnkemann, Gift, GjenlevendePartner, RegistrertP private DatoIntervall foedselsdato; private DatoIntervall doedsdato; private Kjoenn kjoenn; - public Personstatus personstatus; - public Sivilstand sivilstand; + private Personstatus personstatus; + private Sivilstatus sivilstatus; + private List utenlandskPersonIdentifikasjon; + private IdentitetsgrunnlagStatus identitetsgrunnlagStatus; + private Adressebeskyttelse adressebeskyttelse; + private Boolean legitimasjonsdokument; + private Boolean falskIdentitet; + private Boolean norskStatsborgerskap; + private Boolean flereStatsborgerskap; + private Navn navn; + + + public List getUtenlandskPersonIdentifikasjon() { + + if (isNull(utenlandskPersonIdentifikasjon)) { + utenlandskPersonIdentifikasjon = new ArrayList<>(); + } + return utenlandskPersonIdentifikasjon; + } public List getRoller() { @@ -45,4 +66,22 @@ public static class DatoIntervall { private LocalDate fra; private LocalDate til; } + + @Data + @NoArgsConstructor + public static class Navn { + + private NavnLengde navnLengde; + private Boolean flereFornavn; + private Boolean harMellomnavn; + private Boolean navnSpesialtegn; + } + + @Data + @NoArgsConstructor + public static class NavnLengde { + + private Integer fraOgMed; + private Integer tilOgMed; + } } diff --git a/apps/tenor-search-service/src/main/java/no/nav/testnav/apps/tenorsearchservice/service/TenorSearchService.java b/apps/tenor-search-service/src/main/java/no/nav/testnav/apps/tenorsearchservice/service/TenorSearchService.java index 616cc1c0f11..d984d190a10 100644 --- a/apps/tenor-search-service/src/main/java/no/nav/testnav/apps/tenorsearchservice/service/TenorSearchService.java +++ b/apps/tenor-search-service/src/main/java/no/nav/testnav/apps/tenorsearchservice/service/TenorSearchService.java @@ -8,8 +8,11 @@ import reactor.core.publisher.Mono; import java.util.List; +import java.util.stream.Collectors; import static java.util.Objects.isNull; +import static java.util.Objects.nonNull; +import static org.apache.commons.lang3.BooleanUtils.isNotTrue; import static org.apache.commons.lang3.StringUtils.isNotBlank; @Service @@ -25,91 +28,73 @@ public Mono getTestdata(String testDataQuery) { public Mono getTestdata(TenorRequest searchData) { - var builder = new StringBuilder(); - builder.append(getFoedselsdato(searchData.getFoedselsdato())); - builder.append(getDoedsdato(searchData.getDoedsdato())); - builder.append(getIdentifikatorType(searchData.getIdentifikatorType())); - builder.append(getKjoenn(searchData.getKjoenn())); - builder.append(getPersonstatus(searchData.getPersonstatus())); - builder.append(getSivilstand(searchData.getSivilstand())); - + var builder = new StringBuilder() + .append(convertDatoer("foedselsdato", searchData.getFoedselsdato())) + .append(convertDatoer("doedsdato", searchData.getDoedsdato())) + .append(getIdentifikatorType(searchData.getIdentifikatorType())) + .append(convertEnum("kjoenn", searchData.getKjoenn())) + .append(convertEnum("personstatus", searchData.getPersonstatus())) + .append(convertEnum("sivilstatus", searchData.getSivilstatus())) + .append(getUtenlandskPersonidentifikasjon(searchData.getUtenlandskPersonIdentifikasjon())) + .append(convertEnum("identitetsgrunnlagStatus", searchData.getIdentitetsgrunnlagStatus())) + .append(convertEnum("adressebeskyttelse", searchData.getAdressebeskyttelse())) + .append(convertBoolean("legitimasjonsdokument", searchData.getLegitimasjonsdokument())) + .append(convertBoolean("falskIdentitet", searchData.getFalskIdentitet())) + .append(convertBoolean("norskStatsborgerskap", searchData.getNorskStatsborgerskap())) + .append(convertBoolean("flereStatsborgerskap", searchData.getFlereStatsborgerskap())); + if (nonNull(searchData.getNavn())) { + builder.append(convertBoolean("flereFornavn", searchData.getNavn().getFlereFornavn())) + .append(getNavnLengde(searchData.getNavn().getNavnLengde())) + .append(getHarMellomnavn(searchData.getNavn().getHarMellomnavn())) + .append(convertBoolean("navnSpesialtegn", searchData.getNavn().getNavnSpesialtegn())); + } builder.append(getRoller(searchData.getRoller())); return tenorClient.getTestdata(!builder.isEmpty() ? builder.substring(5) : ""); } - private String getRoller(List roller) { + private String getHarMellomnavn(Boolean harMellomnavn) { - return (roller.isEmpty()) ? "" : "+and+tenorRelasjoner.brreg-er-fr:{dagligLeder:*}"; + return isNotTrue(harMellomnavn) ? "" : "+and+harMellomnavn:*"; } - private String getSivilstand(TenorRequest.Sivilstand sivilstand) { - - if (isNull(sivilstand)) { - return ""; - } - - return "+and+sivilstand:" + switch (sivilstand) { - case EnkeEllerEnkemann -> "enkeEllerEnkemann"; - case Gift -> "gift"; - case GjenlevendePartner -> "gjenlevendePartner"; - case RegistrertPartner -> "registrertPartner"; - case Separert -> "separert"; - case SeparertPartner -> "separertPartner"; - case Skilt -> "skilt"; - case SkiltPartner -> "skiltPartner"; - case Ugift -> "ugift"; - case Uoppgitt -> "uoppgitt"; - }; - } + private String getNavnLengde(TenorRequest.NavnLengde navnLengde) { - private String getPersonstatus(TenorRequest.Personstatus personstatus) { - - if (isNull(personstatus)) { - return ""; - } - - return "+and+personstatus:" + switch (personstatus) { - case Bosatt -> "bosatt"; - case Doed -> "doed"; - case Forsvunnet -> "forsvunnet"; - case Foedselsregistrert -> "foedselsregistrert"; - case IkkeBosatt -> "ikkeBosatt"; - case Inaktiv -> "inaktiv"; - case Midlertidig -> "midlertidig"; - case Opphørt -> "opphørt"; - case Utflyttet -> "utflyttet"; - }; + return isNull(navnLengde) ? "" : "+and+navnLengde:[%s+to+%s]" + .formatted(isNull(navnLengde.getFraOgMed()) ? "*" : navnLengde.getFraOgMed(), + isNull(navnLengde.getTilOgMed()) ? "*" : navnLengde.getTilOgMed()); } - private String getKjoenn(TenorRequest.Kjoenn kjoenn) { + private String convertBoolean(String booleanNavn, Boolean booleanVerdi) { + + return isNull(booleanVerdi) ? "" : "+and+%s:%s".formatted(booleanNavn, booleanVerdi); + } - if (isNull(kjoenn)) { - return ""; - } + private String getUtenlandskPersonidentifikasjon(List utenlandskPersonIdentifikasjon) { - return "+and+kjoenn:" + switch (kjoenn) { - case Mann -> "mann"; - case Kvinne -> "kvinne"; - }; + return (utenlandskPersonIdentifikasjon.isEmpty()) ? "" : "+data+utenlandskPersonidentifikasjon:(%s)" + .formatted(utenlandskPersonIdentifikasjon.stream() + .map(Enum::name) + .collect(Collectors.joining("+and+"))); } - private String getFoedselsdato(TenorRequest.DatoIntervall foedselsdato) { + private String getRoller(List roller) { - if (isNull(foedselsdato)) { - return ""; - } + return (roller.isEmpty()) ? "" : "+and+tenorRelasjoner.brreg-er-fr:{dagligLeder:*}"; + } - return "+and+foedselsdato:[" + foedselsdato.getFra() + "+to+" + foedselsdato.getTil() + "]"; + private String convertEnum(String enumNavn, Enum enumVerdi) { + + return isNull(enumVerdi) ? "" : "+and+%s:%s%s".formatted(enumNavn, + enumVerdi.name().substring(0, 1).toUpperCase(), + enumVerdi.name().substring(1)); } - private String getDoedsdato(TenorRequest.DatoIntervall doedsdato) { - if (isNull(doedsdato)) { - return ""; - } + private String convertDatoer(String datoNavn, TenorRequest.DatoIntervall datoIntervall) { - return "+and+doedsdato:[" + doedsdato.getFra() + "+to+" + doedsdato.getTil() + "]"; + return isNull(datoIntervall) ? "" : + "+and+%s:[%s+to+%s]".formatted(datoNavn, datoIntervall.getFra(), datoIntervall.getTil()); } private String getIdentifikatorType(TenorRequest.IdentifikatorType identifikatorType) {