Skip to content

Commit 091c1af

Browse files
author
Sondre Larsen Ovrid
committed
Konverter til validert type så tidleg som mogleg og rydd i/forenkle koden
1 parent a32e253 commit 091c1af

15 files changed

+371
-445
lines changed

src/main/java/no/nav/pto/veilarbportefolje/controller/EnhetController.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -61,12 +61,12 @@ public Portefolje hentPortefoljeForEnhet(
6161
@RequestBody Filtervalg filtervalg) {
6262

6363
ValideringsRegler.sjekkEnhet(enhet);
64-
ValideringsRegler.sjekkSortering(sortDirection, sortField);
65-
ValideringsRegler.sjekkFiltervalg(filtervalg);
64+
Sorteringsrekkefolge validertSorteringsrekkefolge = ValideringsRegler.sjekkSorteringsrekkefolge(sortDirection);
65+
Sorteringsfelt validertSorteringsfelt = ValideringsRegler.sjekkSorteringsfelt(sortField);
6666
authService.innloggetVeilederHarTilgangTilOppfolging();
6767
authService.innloggetVeilederHarTilgangTilEnhet(enhet);
6868

69-
BrukereMedAntall brukereMedAntall = opensearchService.hentBrukere(enhet, Optional.empty(), sortDirection, sortField, filtervalg, fra, antall);
69+
BrukereMedAntall brukereMedAntall = opensearchService.hentBrukere(enhet, Optional.empty(), validertSorteringsrekkefolge, validertSorteringsfelt, filtervalg, fra, antall);
7070
List<Bruker> sensurerteBrukereSublist = authService.sensurerBrukere(brukereMedAntall.getBrukere());
7171

7272
return PortefoljeUtils.buildPortefolje(brukereMedAntall.getAntall(),

src/main/java/no/nav/pto/veilarbportefolje/controller/VeilederController.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,12 @@ public Portefolje hentPortefoljeForVeileder(
4444

4545
ValideringsRegler.sjekkVeilederIdent(veilederIdent, false);
4646
ValideringsRegler.sjekkEnhet(enhet);
47-
ValideringsRegler.sjekkSortering(sortDirection, sortField);
48-
ValideringsRegler.sjekkFiltervalg(filtervalg);
47+
Sorteringsrekkefolge validertSorteringsrekkefolge = ValideringsRegler.sjekkSorteringsrekkefolge(sortDirection);
48+
Sorteringsfelt validertSorteringsfelt = ValideringsRegler.sjekkSorteringsfelt(sortField);
4949
authService.innloggetVeilederHarTilgangTilOppfolging();
5050
authService.innloggetVeilederHarTilgangTilEnhet(enhet);
5151

52-
BrukereMedAntall brukereMedAntall = opensearchService.hentBrukere(enhet, Optional.of(veilederIdent), sortDirection, sortField, filtervalg, fra, antall);
52+
BrukereMedAntall brukereMedAntall = opensearchService.hentBrukere(enhet, Optional.of(veilederIdent), validertSorteringsrekkefolge, validertSorteringsfelt, filtervalg, fra, antall);
5353
List<Bruker> sensurerteBrukereSublist = authService.sensurerBrukere(brukereMedAntall.getBrukere());
5454

5555
return PortefoljeUtils.buildPortefolje(brukereMedAntall.getAntall(),

src/main/java/no/nav/pto/veilarbportefolje/domene/Sorteringsfelt.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -101,13 +101,13 @@ public enum Sorteringsfelt {
101101
this.sorteringsverdi = sorteringsverdi;
102102
}
103103

104-
public static Sorteringsfelt nameFromValue(String value) {
104+
public static Sorteringsfelt toSorteringsfelt(String sorteringsverdi) {
105105
for (Sorteringsfelt sorteringsfelt : values()) {
106-
if (sorteringsfelt.sorteringsverdi.equals(value)) {
106+
if (sorteringsfelt.sorteringsverdi.equals(sorteringsverdi)) {
107107
return sorteringsfelt;
108108
}
109109
}
110-
throw new IllegalArgumentException("Ugyldig verdi for enum: " + value );
110+
throw new IllegalArgumentException("Ugyldig verdi for enum: " + sorteringsverdi);
111111
}
112112

113113
@Override
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package no.nav.pto.veilarbportefolje.domene;
2+
3+
public enum Sorteringsrekkefolge {
4+
IKKE_SATT("ikke_satt"),
5+
STIGENDE("ascending"),
6+
SYNKENDE("descending");
7+
8+
/**
9+
* Verdien som blir sendt mellom frontend og backend
10+
*/
11+
public final String sorteringsverdi;
12+
13+
Sorteringsrekkefolge(String sorteringsverdi) {
14+
this.sorteringsverdi = sorteringsverdi;
15+
}
16+
17+
public static Sorteringsrekkefolge toSorteringsrekkefolge(String sorteringsverdi) {
18+
for (Sorteringsrekkefolge sorteringsrekkefolge : values()) {
19+
if (sorteringsrekkefolge.sorteringsverdi.equals(sorteringsverdi)) {
20+
return sorteringsrekkefolge;
21+
}
22+
}
23+
throw new IllegalArgumentException("Ugyldig verdi for enum: " + sorteringsverdi);
24+
}
25+
26+
@Override
27+
public String toString() {
28+
return this.name() + " (" + this.sorteringsverdi + ")";
29+
}
30+
}

src/main/java/no/nav/pto/veilarbportefolje/opensearch/OpensearchQueryBuilder.java

+45-43
Original file line numberDiff line numberDiff line change
@@ -452,12 +452,14 @@ static List<BoolQueryBuilder> byggAktivitetFilterQuery(Filtervalg filtervalg, Bo
452452
* som er lov å sortere på i OpenSearch er det viktig at vi ikke legger til nye sorteringsfelter i {@link Sorteringsfelt}
453453
* uten å sørge for at disse også er tilgjengelige i {@link OppfolgingsBruker}.
454454
*/
455-
static SearchSourceBuilder sorterQueryParametere(String sortOrder, String
456-
sortField, SearchSourceBuilder searchSourceBuilder, Filtervalg filtervalg, BrukerinnsynTilganger brukerinnsynTilganger) {
457-
SortOrder order = "ascending".equals(sortOrder) ? SortOrder.ASC : SortOrder.DESC;
458-
459-
/* På sikt (tm) skal vi typesikre sortField slik at vi får Sorteringsfelt her, gjerne allereie på Controller-nivå. I denne omgangen lagar eg berre enumen for sorteringsfelta. 2024-11-28, Ingrid. */
460-
Sorteringsfelt sorteringsfelt = Sorteringsfelt.nameFromValue(sortField);
455+
static SearchSourceBuilder sorterQueryParametere(
456+
Sorteringsrekkefolge sorteringsrekkefolge,
457+
Sorteringsfelt sorteringsfelt,
458+
SearchSourceBuilder searchSourceBuilder,
459+
Filtervalg filtervalg,
460+
BrukerinnsynTilganger brukerinnsynTilganger
461+
) {
462+
SortOrder sorteringsrekkefolgeOpenSearch = Sorteringsrekkefolge.STIGENDE.equals(sorteringsrekkefolge) ? SortOrder.ASC : SortOrder.DESC;
461463

462464
// Vi må assigne til en ny variabel for at kompilatoren sin exhaustiveness-check skal slå inn.
463465
// Dette er strengt tatt ikke nødvendig da vi bare kunne returnert searchSourceBuilder direkte, men da ville vi
@@ -468,150 +470,150 @@ static SearchSourceBuilder sorterQueryParametere(String sortOrder, String
468470
yield searchSourceBuilder;
469471
}
470472
case VALGTE_AKTIVITETER -> {
471-
sorterValgteAktiviteter(filtervalg, searchSourceBuilder, order);
473+
sorterValgteAktiviteter(filtervalg, searchSourceBuilder, sorteringsrekkefolgeOpenSearch);
472474
yield searchSourceBuilder;
473475
}
474476
case MOTER_MED_NAV_IDAG -> {
475-
searchSourceBuilder.sort("alle_aktiviteter_mote_startdato", order);
477+
searchSourceBuilder.sort("alle_aktiviteter_mote_startdato", sorteringsrekkefolgeOpenSearch);
476478
yield searchSourceBuilder;
477479
}
478480
case MOTESTATUS -> {
479-
searchSourceBuilder.sort("aktivitet_mote_startdato", order);
481+
searchSourceBuilder.sort("aktivitet_mote_startdato", sorteringsrekkefolgeOpenSearch);
480482
yield searchSourceBuilder;
481483
}
482484
case I_AVTALT_AKTIVITET -> {
483485
FieldSortBuilder builder = new FieldSortBuilder("aktivitet_utlopsdatoer")
484-
.order(order)
486+
.order(sorteringsrekkefolgeOpenSearch)
485487
.sortMode(MIN);
486488
searchSourceBuilder.sort(builder);
487489
yield searchSourceBuilder;
488490
}
489491
case FODSELSNUMMER -> {
490-
searchSourceBuilder.sort("fnr.raw", order);
492+
searchSourceBuilder.sort("fnr.raw", sorteringsrekkefolgeOpenSearch);
491493
yield searchSourceBuilder;
492494
}
493495
case UTLOPTE_AKTIVITETER -> {
494-
searchSourceBuilder.sort("nyesteutlopteaktivitet", order);
496+
searchSourceBuilder.sort("nyesteutlopteaktivitet", sorteringsrekkefolgeOpenSearch);
495497
yield searchSourceBuilder;
496498
}
497499
case ARBEIDSLISTE_FRIST -> {
498-
searchSourceBuilder.sort("arbeidsliste_frist", order);
500+
searchSourceBuilder.sort("arbeidsliste_frist", sorteringsrekkefolgeOpenSearch);
499501
yield searchSourceBuilder;
500502
}
501503
case AAP_TYPE -> {
502-
searchSourceBuilder.sort("ytelse", order);
504+
searchSourceBuilder.sort("ytelse", sorteringsrekkefolgeOpenSearch);
503505
yield searchSourceBuilder;
504506
}
505507
case AAP_VURDERINGSFRIST -> {
506-
sorterAapVurderingsfrist(searchSourceBuilder, order, filtervalg);
508+
sorterAapVurderingsfrist(searchSourceBuilder, sorteringsrekkefolgeOpenSearch, filtervalg);
507509
yield searchSourceBuilder;
508510
}
509511
case AAP_RETTIGHETSPERIODE -> {
510-
sorterAapRettighetsPeriode(searchSourceBuilder, order);
512+
sorterAapRettighetsPeriode(searchSourceBuilder, sorteringsrekkefolgeOpenSearch);
511513
yield searchSourceBuilder;
512514
}
513515
case GJELDENDE_VEDTAK_14A_INNSATSGRUPPE -> {
514-
searchSourceBuilder.sort("gjeldendeVedtak14a.innsatsgruppe", order);
516+
searchSourceBuilder.sort("gjeldendeVedtak14a.innsatsgruppe", sorteringsrekkefolgeOpenSearch);
515517
yield searchSourceBuilder;
516518
}
517519
case GJELDENDE_VEDTAK_14A_HOVEDMAL -> {
518-
searchSourceBuilder.sort("gjeldendeVedtak14a.hovedmal", order);
520+
searchSourceBuilder.sort("gjeldendeVedtak14a.hovedmal", sorteringsrekkefolgeOpenSearch);
519521
yield searchSourceBuilder;
520522
}
521523
case GJELDENDE_VEDTAK_14A_VEDTAKSDATO -> {
522-
sorterGjeldendeVedtak14aVedtaksdato(searchSourceBuilder, order);
524+
sorterGjeldendeVedtak14aVedtaksdato(searchSourceBuilder, sorteringsrekkefolgeOpenSearch);
523525
yield searchSourceBuilder;
524526
}
525527
case UTKAST_14A_STATUS -> {
526-
searchSourceBuilder.sort("utkast_14a_status", order);
528+
searchSourceBuilder.sort("utkast_14a_status", sorteringsrekkefolgeOpenSearch);
527529
yield searchSourceBuilder;
528530
}
529531
case ARBEIDSLISTE_KATEGORI -> {
530-
searchSourceBuilder.sort("arbeidsliste_kategori", order);
532+
searchSourceBuilder.sort("arbeidsliste_kategori", sorteringsrekkefolgeOpenSearch);
531533
yield searchSourceBuilder;
532534
}
533535
case SISTE_ENDRING_DATO -> {
534-
sorterSisteEndringTidspunkt(searchSourceBuilder, order, filtervalg);
536+
sorterSisteEndringTidspunkt(searchSourceBuilder, sorteringsrekkefolgeOpenSearch, filtervalg);
535537
yield searchSourceBuilder;
536538
}
537539
case ARBEIDSLISTE_OVERSKRIFT -> {
538-
sorterArbeidslisteOverskrift(searchSourceBuilder, order);
540+
sorterArbeidslisteOverskrift(searchSourceBuilder, sorteringsrekkefolgeOpenSearch);
539541
yield searchSourceBuilder;
540542
}
541543
case FODELAND -> {
542-
sorterFodeland(searchSourceBuilder, order);
544+
sorterFodeland(searchSourceBuilder, sorteringsrekkefolgeOpenSearch);
543545
yield searchSourceBuilder;
544546
}
545547
case STATSBORGERSKAP -> {
546-
sorterStatsborgerskap(searchSourceBuilder, order);
548+
sorterStatsborgerskap(searchSourceBuilder, sorteringsrekkefolgeOpenSearch);
547549
yield searchSourceBuilder;
548550
}
549551
case STATSBORGERSKAP_GYLDIG_FRA -> {
550-
sorterStatsborgerskapGyldigFra(searchSourceBuilder, order);
552+
sorterStatsborgerskapGyldigFra(searchSourceBuilder, sorteringsrekkefolgeOpenSearch);
551553
yield searchSourceBuilder;
552554
}
553555
case TOLKESPRAK -> {
554-
sorterTolkeSpraak(filtervalg, searchSourceBuilder, order);
556+
sorterTolkeSpraak(filtervalg, searchSourceBuilder, sorteringsrekkefolgeOpenSearch);
555557
yield searchSourceBuilder;
556558
}
557559
case TOLKEBEHOV_SIST_OPPDATERT -> {
558-
searchSourceBuilder.sort("tolkBehovSistOppdatert", order);
560+
searchSourceBuilder.sort("tolkBehovSistOppdatert", sorteringsrekkefolgeOpenSearch);
559561
yield searchSourceBuilder;
560562
}
561563
case ENSLIGE_FORSORGERE_UTLOP_YTELSE -> {
562-
sorterEnsligeForsorgereUtlopsDato(searchSourceBuilder, order);
564+
sorterEnsligeForsorgereUtlopsDato(searchSourceBuilder, sorteringsrekkefolgeOpenSearch);
563565
yield searchSourceBuilder;
564566
}
565567
case ENSLIGE_FORSORGERE_VEDTAKSPERIODETYPE -> {
566-
sorterEnsligeForsorgereVedtaksPeriode(searchSourceBuilder, order);
568+
sorterEnsligeForsorgereVedtaksPeriode(searchSourceBuilder, sorteringsrekkefolgeOpenSearch);
567569
yield searchSourceBuilder;
568570
}
569571
case ENSLIGE_FORSORGERE_AKTIVITETSPLIKT -> {
570-
sorterEnsligeForsorgereAktivitetsPlikt(searchSourceBuilder, order);
572+
sorterEnsligeForsorgereAktivitetsPlikt(searchSourceBuilder, sorteringsrekkefolgeOpenSearch);
571573
yield searchSourceBuilder;
572574
}
573575
case ENSLIGE_FORSORGERE_OM_BARNET -> {
574-
sorterEnsligeForsorgereOmBarnet(searchSourceBuilder, order);
576+
sorterEnsligeForsorgereOmBarnet(searchSourceBuilder, sorteringsrekkefolgeOpenSearch);
575577
yield searchSourceBuilder;
576578
}
577579
case BARN_UNDER_18_AR -> {
578-
sorterBarnUnder18(searchSourceBuilder, order, brukerinnsynTilganger, filtervalg);
580+
sorterBarnUnder18(searchSourceBuilder, sorteringsrekkefolgeOpenSearch, brukerinnsynTilganger, filtervalg);
579581
yield searchSourceBuilder;
580582
}
581583
case BRUKERS_SITUASJON_SIST_ENDRET -> {
582-
searchSourceBuilder.sort("brukers_situasjon_sist_endret", order);
584+
searchSourceBuilder.sort("brukers_situasjon_sist_endret", sorteringsrekkefolgeOpenSearch);
583585
yield searchSourceBuilder;
584586
}
585587
case UTDANNING_OG_SITUASJON_SIST_ENDRET -> {
586-
searchSourceBuilder.sort("utdanning_og_situasjon_sist_endret", order);
588+
searchSourceBuilder.sort("utdanning_og_situasjon_sist_endret", sorteringsrekkefolgeOpenSearch);
587589
yield searchSourceBuilder;
588590
}
589591
case HUSKELAPP_FRIST -> {
590-
sorterHuskelappFrist(searchSourceBuilder, order);
592+
sorterHuskelappFrist(searchSourceBuilder, sorteringsrekkefolgeOpenSearch);
591593
yield searchSourceBuilder;
592594
}
593595
case HUSKELAPP -> {
594-
sorterHuskelappEksistere(searchSourceBuilder, order);
596+
sorterHuskelappEksistere(searchSourceBuilder, sorteringsrekkefolgeOpenSearch);
595597
yield searchSourceBuilder;
596598
}
597599
case HUSKELAPP_KOMMENTAR -> {
598-
searchSourceBuilder.sort("huskelapp.kommentar", order);
600+
searchSourceBuilder.sort("huskelapp.kommentar", sorteringsrekkefolgeOpenSearch);
599601
yield searchSourceBuilder;
600602
}
601603
case FARGEKATEGORI -> {
602-
searchSourceBuilder.sort("fargekategori", order);
604+
searchSourceBuilder.sort("fargekategori", sorteringsrekkefolgeOpenSearch);
603605
yield searchSourceBuilder;
604606
}
605607
case TILTAKSHENDELSE_DATO_OPPRETTET -> {
606-
sorterTiltakshendelseOpprettetDato(searchSourceBuilder, order);
608+
sorterTiltakshendelseOpprettetDato(searchSourceBuilder, sorteringsrekkefolgeOpenSearch);
607609
yield searchSourceBuilder;
608610
}
609611
case TILTAKSHENDELSE_TEKST -> {
610-
searchSourceBuilder.sort("tiltakshendelse.tekst", order);
612+
searchSourceBuilder.sort("tiltakshendelse.tekst", sorteringsrekkefolgeOpenSearch);
611613
yield searchSourceBuilder;
612614
}
613615
case UTGATT_VARSEL_DATO -> {
614-
sorterUtgattVarselHendelseDato(searchSourceBuilder, order);
616+
sorterUtgattVarselHendelseDato(searchSourceBuilder, sorteringsrekkefolgeOpenSearch);
615617
yield searchSourceBuilder;
616618
}
617619
// Vi har eksplisitt latt være å definere en "default" case i switch-en for å tvinge oss selv til å håndtere
@@ -621,7 +623,7 @@ static SearchSourceBuilder sorterQueryParametere(String sortOrder, String
621623
FORRIGE_DATO_FOR_AVTALT_AKTIVITET, UTKAST_14A_STATUS_ENDRET, UTKAST_14A_ANSVARLIG_VEILEDER,
622624
BOSTED_KOMMUNE, BOSTED_BYDEL, BOSTED_SIST_OPPDATERT, OPPFOLGING_STARTET, UTLOPSDATO, VEILEDER_IDENT,
623625
DAGPENGER_UTLOP_UKE, DAGPENGER_PERM_UTLOP_UKE -> {
624-
searchSourceBuilder.sort(sorteringsfelt.sorteringsverdi, order);
626+
searchSourceBuilder.sort(sorteringsfelt.sorteringsverdi, sorteringsrekkefolgeOpenSearch);
625627
yield searchSourceBuilder;
626628
}
627629
};

src/main/java/no/nav/pto/veilarbportefolje/opensearch/OpensearchService.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@ public class OpensearchService {
5050
public BrukereMedAntall hentBrukere(
5151
String enhetId,
5252
Optional<String> veilederIdent,
53-
String sortOrder,
54-
String sortField,
53+
Sorteringsrekkefolge sorteringsrekkefolge,
54+
Sorteringsfelt sorteringsfelt,
5555
Filtervalg filtervalg,
5656
Integer fra,
5757
Integer antall
@@ -102,7 +102,7 @@ public BrukereMedAntall hentBrukere(
102102
leggTilBrukerinnsynTilgangFilter(boolQuery, authService.hentVeilederBrukerInnsynTilganger(), BRUKERE_SOM_VEILEDER_HAR_INNSYNSRETT_PÅ);
103103
}
104104

105-
sorterQueryParametere(sortOrder, sortField, searchSourceBuilder, filtervalg, authService.hentVeilederBrukerInnsynTilganger());
105+
sorterQueryParametere(sorteringsrekkefolge, sorteringsfelt, searchSourceBuilder, filtervalg, authService.hentVeilederBrukerInnsynTilganger());
106106

107107
OpensearchResponse response = search(searchSourceBuilder, indexName.getValue(), OpensearchResponse.class);
108108
int totalHits = response.hits().getTotal().getValue();

0 commit comments

Comments
 (0)