Skip to content

Commit 578de4a

Browse files
authored
Merge pull request #1843 from navikt/sorteringsverdiar
Opprydding/forbetring av logikk/validering/typing relatert til sorteringsfelt og -rekkefølge
2 parents f1201fd + 091c1af commit 578de4a

15 files changed

+516
-479
lines changed

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

Lines changed: 3 additions & 3 deletions
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

Lines changed: 3 additions & 3 deletions
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

Lines changed: 3 additions & 3 deletions
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
Lines changed: 30 additions & 0 deletions
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

Lines changed: 190 additions & 77 deletions
Large diffs are not rendered by default.

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

Lines changed: 3 additions & 3 deletions
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();

src/main/java/no/nav/pto/veilarbportefolje/util/ValideringsRegler.java

Lines changed: 14 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
import no.nav.pto.veilarbportefolje.arbeidsliste.ArbeidslisteDTO;
88
import no.nav.pto.veilarbportefolje.arbeidsliste.v1.ArbeidslisteRequest;
99
import no.nav.pto.veilarbportefolje.arbeidsliste.v2.ArbeidslisteV2Request;
10-
import no.nav.pto.veilarbportefolje.domene.Filtervalg;
10+
import no.nav.pto.veilarbportefolje.domene.Sorteringsfelt;
11+
import no.nav.pto.veilarbportefolje.domene.Sorteringsrekkefolge;
1112
import org.springframework.http.HttpStatus;
1213
import org.springframework.web.server.ResponseStatusException;
1314

@@ -16,97 +17,36 @@
1617
import java.time.LocalDate;
1718
import java.util.ArrayList;
1819
import java.util.List;
19-
import java.util.function.Supplier;
2020

2121
import static io.vavr.control.Validation.invalid;
2222
import static io.vavr.control.Validation.valid;
2323
import static java.lang.String.format;
24-
import static java.util.Arrays.asList;
2524
import static no.nav.common.utils.StringUtils.nullOrEmpty;
26-
import static no.nav.pto.veilarbportefolje.domene.Sorteringsfelt.*;
2725

2826
public class ValideringsRegler {
29-
private static List<String> sortDirs = asList("ikke_satt", "ascending", "descending");
30-
public static List<String> sortFields = asList(
31-
IKKE_SATT.sorteringsverdi,
32-
VALGTE_AKTIVITETER.sorteringsverdi,
33-
ETTERNAVN.sorteringsverdi,
34-
FODSELSNUMMER.sorteringsverdi,
35-
UTLOPSDATO.sorteringsverdi,
36-
DAGPENGER_UTLOP_UKE.sorteringsverdi,
37-
DAGPENGER_PERM_UTLOP_UKE.sorteringsverdi,
38-
AAP_TYPE.sorteringsverdi,
39-
AAP_VURDERINGSFRIST.sorteringsverdi,
40-
AAP_MAXTID_UKE.sorteringsverdi,
41-
AAP_UNNTAK_UKER_IGJEN.sorteringsverdi,
42-
ARBEIDSLISTE_FRIST.sorteringsverdi,
43-
VENTER_PA_SVAR_FRA_NAV.sorteringsverdi,
44-
VENTER_PA_SVAR_FRA_BRUKER.sorteringsverdi,
45-
UTLOPTE_AKTIVITETER.sorteringsverdi,
46-
STARTDATO_FOR_AVTALT_AKTIVITET.sorteringsverdi,
47-
NESTE_STARTDATO_FOR_AVTALT_AKTIVITET.sorteringsverdi,
48-
FORRIGE_DATO_FOR_AVTALT_AKTIVITET.sorteringsverdi,
49-
I_AVTALT_AKTIVITET.sorteringsverdi,
50-
AAP_RETTIGHETSPERIODE.sorteringsverdi,
51-
MOTER_MED_NAV_IDAG.sorteringsverdi,
52-
MOTESTATUS.sorteringsverdi,
53-
OPPFOLGING_STARTET.sorteringsverdi,
54-
VEILEDER_IDENT.sorteringsverdi,
55-
GJELDENDE_VEDTAK_14A_INNSATSGRUPPE.sorteringsverdi,
56-
GJELDENDE_VEDTAK_14A_HOVEDMAL.sorteringsverdi,
57-
GJELDENDE_VEDTAK_14A_VEDTAKSDATO.sorteringsverdi,
58-
UTKAST_14A_STATUS.sorteringsverdi,
59-
UTKAST_14A_ANSVARLIG_VEILEDER.sorteringsverdi,
60-
UTKAST_14A_STATUS_ENDRET.sorteringsverdi,
61-
ARBEIDSLISTE_KATEGORI.sorteringsverdi,
62-
ARBEIDSLISTE_OVERSKRIFT.sorteringsverdi,
63-
SISTE_ENDRING_DATO.sorteringsverdi,
64-
FODELAND.sorteringsverdi,
65-
STATSBORGERSKAP.sorteringsverdi,
66-
STATSBORGERSKAP_GYLDIG_FRA.sorteringsverdi,
67-
TOLKESPRAK.sorteringsverdi,
68-
TOLKEBEHOV_SIST_OPPDATERT.sorteringsverdi,
69-
BOSTED_KOMMUNE.sorteringsverdi,
70-
BOSTED_BYDEL.sorteringsverdi,
71-
BOSTED_SIST_OPPDATERT.sorteringsverdi,
72-
CV_SVARFRIST.sorteringsverdi,
73-
ENSLIGE_FORSORGERE_UTLOP_YTELSE.sorteringsverdi,
74-
ENSLIGE_FORSORGERE_VEDTAKSPERIODETYPE.sorteringsverdi,
75-
ENSLIGE_FORSORGERE_AKTIVITETSPLIKT.sorteringsverdi,
76-
ENSLIGE_FORSORGERE_OM_BARNET.sorteringsverdi,
77-
BARN_UNDER_18_AR.sorteringsverdi,
78-
BRUKERS_SITUASJON_SIST_ENDRET.sorteringsverdi,
79-
HUSKELAPP_FRIST.sorteringsverdi,
80-
HUSKELAPP_KOMMENTAR.sorteringsverdi,
81-
HUSKELAPP.sorteringsverdi,
82-
FARGEKATEGORI.sorteringsverdi,
83-
UTDANNING_OG_SITUASJON_SIST_ENDRET.sorteringsverdi,
84-
TILTAKSHENDELSE_DATO_OPPRETTET.sorteringsverdi,
85-
TILTAKSHENDELSE_TEKST.sorteringsverdi,
86-
UTGATT_VARSEL_DATO.sorteringsverdi
87-
);
88-
8927
public static void sjekkEnhet(String enhet) {
9028
test("enhet", enhet, enhet.matches("\\d{4}"));
9129
}
9230

93-
9431
public static void sjekkVeilederIdent(String veilederIdent, boolean optional) {
9532

9633
test("veilederident", veilederIdent, optional || veilederIdent.matches("[A-Z]\\d{6}"));
9734
}
9835

99-
public static void sjekkFiltervalg(Filtervalg filtervalg) {
100-
test("filtervalg", filtervalg, filtervalg::valider);
101-
}
102-
103-
public static void sjekkSortering(String sortDirection, String sortField) {
104-
test("sortDirection", sortDirection, sortDirs.contains(sortDirection));
105-
test("sortField", sortField, sortFields.contains(sortField));
36+
public static Sorteringsfelt sjekkSorteringsfelt(String sorteringsFelt) {
37+
try {
38+
return Sorteringsfelt.toSorteringsfelt(sorteringsFelt);
39+
} catch (Exception e) {
40+
throw new ResponseStatusException(HttpStatus.BAD_REQUEST, format("%s er ikke et gyldig sorteringsfelt", sorteringsFelt));
41+
}
10642
}
10743

108-
private static void test(String navn, Object data, Supplier<Boolean> matches) {
109-
test(navn, data, matches.get());
44+
public static Sorteringsrekkefolge sjekkSorteringsrekkefolge(String sorteringsRekkefolge) {
45+
try {
46+
return Sorteringsrekkefolge.toSorteringsrekkefolge(sorteringsRekkefolge);
47+
} catch (Exception e) {
48+
throw new ResponseStatusException(HttpStatus.BAD_REQUEST, format("%s er ikke en gyldig sorteringsrekkefølge", sorteringsRekkefolge));
49+
}
11050
}
11151

11252
private static void test(String navn, Object data, boolean matches) {

src/test/java/no/nav/pto/veilarbportefolje/aktiviteter/AktiviteterOpensearchIntegrasjonTest.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,8 @@ public void lasteroppeikkelagreteaktiviteteter() {
8080
BrukereMedAntall responseBrukere = opensearchService.hentBrukere(
8181
navKontor.getValue(),
8282
empty(),
83-
"asc",
84-
Sorteringsfelt.IKKE_SATT.sorteringsverdi,
83+
Sorteringsrekkefolge.STIGENDE,
84+
Sorteringsfelt.IKKE_SATT,
8585
new Filtervalg().setFerdigfilterListe(List.of(I_AKTIVITET)),
8686
null,
8787
null);
@@ -114,8 +114,8 @@ public void lasteroppaktivitetStillingFraNAV() {
114114
BrukereMedAntall responseBrukere = opensearchService.hentBrukere(
115115
navKontor.getValue(),
116116
empty(),
117-
"asc",
118-
Sorteringsfelt.IKKE_SATT.sorteringsverdi,
117+
Sorteringsrekkefolge.STIGENDE,
118+
Sorteringsfelt.IKKE_SATT,
119119
new Filtervalg().setNavnEllerFnrQuery(fodselsnummer.toString()).setFerdigfilterListe(new ArrayList<>()),
120120
null,
121121
null);
@@ -165,8 +165,8 @@ public void filtrerBrukerePaStillingFraNAV() {
165165
BrukereMedAntall responseBrukere = opensearchService.hentBrukere(
166166
navKontor.getValue(),
167167
empty(),
168-
"asc",
169-
Sorteringsfelt.IKKE_SATT.sorteringsverdi,
168+
Sorteringsrekkefolge.STIGENDE,
169+
Sorteringsfelt.IKKE_SATT,
170170
new Filtervalg().setFerdigfilterListe(List.of(I_AKTIVITET)),
171171
null,
172172
null);
@@ -179,8 +179,8 @@ public void filtrerBrukerePaStillingFraNAV() {
179179
BrukereMedAntall responseBrukere = opensearchService.hentBrukere(
180180
navKontor.getValue(),
181181
empty(),
182-
"asc",
183-
Sorteringsfelt.IKKE_SATT.sorteringsverdi,
182+
Sorteringsrekkefolge.STIGENDE,
183+
Sorteringsfelt.IKKE_SATT,
184184
new Filtervalg().setStillingFraNavFilter(List.of(StillingFraNAVFilter.CV_KAN_DELES_STATUS_JA)).setFerdigfilterListe(new ArrayList<>()),
185185
null,
186186
null);

src/test/java/no/nav/pto/veilarbportefolje/aktiviteter/LonnstilskuddUtAvArenaTest.java

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -184,8 +184,8 @@ public void skal_ikke_indeksere_bruker_med_tiltaksaktivitet_data_naar_status_er_
184184
BrukereMedAntall response1 = opensearchService.hentBrukere(
185185
navKontor.getValue(),
186186
empty(),
187-
"asc",
188-
Sorteringsfelt.IKKE_SATT.sorteringsverdi,
187+
Sorteringsrekkefolge.STIGENDE,
188+
Sorteringsfelt.IKKE_SATT,
189189
new Filtervalg().setFerdigfilterListe(List.of()).setTiltakstyper(List.of("MIDLONTIL")),
190190
null,
191191
null);
@@ -195,8 +195,8 @@ public void skal_ikke_indeksere_bruker_med_tiltaksaktivitet_data_naar_status_er_
195195
BrukereMedAntall response2 = opensearchService.hentBrukere(
196196
navKontor.getValue(),
197197
empty(),
198-
"asc",
199-
Sorteringsfelt.IKKE_SATT.sorteringsverdi,
198+
Sorteringsrekkefolge.STIGENDE,
199+
Sorteringsfelt.IKKE_SATT,
200200
new Filtervalg().setFerdigfilterListe(List.of()).setTiltakstyper(List.of("VARLONTIL")),
201201
null,
202202
null);
@@ -291,8 +291,8 @@ public void skal_indeksere_bruker_naar_vi_faar_lonnstilskudd_fra_DAB() {
291291
BrukereMedAntall response1 = opensearchService.hentBrukere(
292292
navKontor.getValue(),
293293
empty(),
294-
"asc",
295-
Sorteringsfelt.IKKE_SATT.sorteringsverdi,
294+
Sorteringsrekkefolge.STIGENDE,
295+
Sorteringsfelt.IKKE_SATT,
296296
new Filtervalg().setFerdigfilterListe(List.of()).setTiltakstyper(List.of("MIDLONTIL")),
297297
null,
298298
null);
@@ -302,8 +302,8 @@ public void skal_indeksere_bruker_naar_vi_faar_lonnstilskudd_fra_DAB() {
302302
BrukereMedAntall response2 = opensearchService.hentBrukere(
303303
navKontor.getValue(),
304304
empty(),
305-
"asc",
306-
Sorteringsfelt.IKKE_SATT.sorteringsverdi,
305+
Sorteringsrekkefolge.STIGENDE,
306+
Sorteringsfelt.IKKE_SATT,
307307
new Filtervalg().setFerdigfilterListe(List.of()).setTiltakstyper(List.of("VARLONTIL")),
308308
null,
309309
null);
@@ -343,8 +343,8 @@ public void skal_lese_melding_og_indeksere_bruker_naar_fraDato_og_tilDato_er_nul
343343
BrukereMedAntall response1 = opensearchService.hentBrukere(
344344
navKontor.getValue(),
345345
empty(),
346-
"asc",
347-
Sorteringsfelt.IKKE_SATT.sorteringsverdi,
346+
Sorteringsrekkefolge.STIGENDE,
347+
Sorteringsfelt.IKKE_SATT,
348348
new Filtervalg().setFerdigfilterListe(List.of()).setTiltakstyper(List.of("MIDLONTIL")),
349349
null,
350350
null);
@@ -642,17 +642,17 @@ public void verifiserAtKafkameldingMedSammeAktivitetIdMenNyVersjonOverskriverGam
642642
BrukereMedAntall responseBrukereMIDLONTIL = opensearchService.hentBrukere(
643643
navKontor.getValue(),
644644
empty(),
645-
"asc",
646-
Sorteringsfelt.IKKE_SATT.sorteringsverdi,
645+
Sorteringsrekkefolge.STIGENDE,
646+
Sorteringsfelt.IKKE_SATT,
647647
new Filtervalg().setFerdigfilterListe(List.of()).setTiltakstyper(List.of("MIDLONTIL")),
648648
null,
649649
null);
650650

651651
BrukereMedAntall responseBrukereLONNTILS = opensearchService.hentBrukere(
652652
navKontor.getValue(),
653653
empty(),
654-
"asc",
655-
Sorteringsfelt.IKKE_SATT.sorteringsverdi,
654+
Sorteringsrekkefolge.STIGENDE,
655+
Sorteringsfelt.IKKE_SATT,
656656
new Filtervalg().setFerdigfilterListe(List.of()).setTiltakstyper(List.of("VARLONTIL")),
657657
null,
658658
null);

src/test/java/no/nav/pto/veilarbportefolje/arbeidsliste/ArbeidslistaSorteringOpensearchTest.java

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,7 @@
22

33
import no.nav.common.types.identer.AktorId;
44
import no.nav.common.types.identer.Fnr;
5-
import no.nav.pto.veilarbportefolje.domene.BrukereMedAntall;
6-
import no.nav.pto.veilarbportefolje.domene.Brukerstatus;
7-
import no.nav.pto.veilarbportefolje.domene.Filtervalg;
8-
import no.nav.pto.veilarbportefolje.domene.Sorteringsfelt;
5+
import no.nav.pto.veilarbportefolje.domene.*;
96
import no.nav.pto.veilarbportefolje.domene.value.NavKontor;
107
import no.nav.pto.veilarbportefolje.domene.value.VeilederId;
118
import no.nav.pto.veilarbportefolje.opensearch.OpensearchService;
@@ -76,8 +73,8 @@ public void sisteendring_sortering() {
7673
final BrukereMedAntall brukereMedAntall = opensearchService.hentBrukere(
7774
enhetId.getValue(),
7875
empty(),
79-
"ascending",
80-
Sorteringsfelt.IKKE_SATT.sorteringsverdi,
76+
Sorteringsrekkefolge.STIGENDE,
77+
Sorteringsfelt.IKKE_SATT,
8178
getArbeidslisteFilter(),
8279
null,
8380
null);
@@ -88,17 +85,17 @@ public void sisteendring_sortering() {
8885
var sortertResponsAscending = opensearchService.hentBrukere(
8986
enhetId.getValue(),
9087
empty(),
91-
"ascending",
92-
Sorteringsfelt.ARBEIDSLISTE_OVERSKRIFT.sorteringsverdi,
88+
Sorteringsrekkefolge.STIGENDE,
89+
Sorteringsfelt.ARBEIDSLISTE_OVERSKRIFT,
9390
getArbeidslisteFilter(),
9491
null,
9592
null);
9693

9794
var sortertResponsDescending = opensearchService.hentBrukere(
9895
enhetId.getValue(),
9996
empty(),
100-
"desc",
101-
Sorteringsfelt.ARBEIDSLISTE_OVERSKRIFT.sorteringsverdi,
97+
Sorteringsrekkefolge.SYNKENDE,
98+
Sorteringsfelt.ARBEIDSLISTE_OVERSKRIFT,
10299
getArbeidslisteFilter(),
103100
null,
104101
null);

0 commit comments

Comments
 (0)