Skip to content

Commit cb280a7

Browse files
Feature/psb validering soknad endring (#134)
* Ny valdiering av PSB med støtte for søknad og endring * endringe etter møte med Stian * endringer etter møte med Stian del 1 * Endringer etter møte med Stian del 2 * Fiks etter møte med Stian del 3 * lagt til gammel versjon tester * fikset verdier i minimumsøknad og null sjekker
1 parent 360f362 commit cb280a7

File tree

19 files changed

+609
-221
lines changed

19 files changed

+609
-221
lines changed

soknad-frisinn/src/main/java/no/nav/k9/søknad/frisinn/FrisinnSøknad.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ public class FrisinnSøknad implements Innsending {
8686
}
8787

8888
private void validerSøknadInntektPeriode(String tekst, Periode inntektPeriode) {
89-
if(inntektPeriode==null) {
89+
if (inntektPeriode==null) {
9090
throw new IllegalArgumentException("Mangler inntektperiode for " + tekst);
9191
}
9292
validerInnenforSøknadsperiode(tekst, inntektPeriode);

soknad/src/main/java/no/nav/k9/søknad/TidsserieValidator.java

Lines changed: 47 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,28 +2,39 @@
22

33
import no.nav.fpsak.tidsserie.LocalDateSegment;
44
import no.nav.fpsak.tidsserie.LocalDateTimeline;
5+
import no.nav.fpsak.tidsserie.StandardCombinators;
56
import no.nav.k9.søknad.felles.Feil;
67
import no.nav.k9.søknad.felles.type.Periode;
78

89
import java.time.DayOfWeek;
910
import java.time.LocalDate;
1011
import java.util.ArrayList;
12+
import java.util.Collections;
1113
import java.util.List;
1214
import java.util.Map;
1315
import java.util.stream.Collectors;
1416

1517
public class TidsserieValidator {
1618

17-
public static TidsseriePeriodeWrapper finnIkkeKomplettePerioderOgPerioderUtenfor(LocalDateTimeline<Boolean> testTidsserie, LocalDateTimeline<Boolean> hovedTidsserie) {
18-
return new TidsseriePeriodeWrapper(
19-
TidsserieUtils.toPeriodeList(hovedTidsserie.disjoint(testTidsserie)),
20-
TidsserieUtils.toPeriodeList(testTidsserie.disjoint(hovedTidsserie)));
19+
public static PerioderMedFeil finnIkkeKomplettePerioderOgPerioderUtenfor(LocalDateTimeline<Boolean> test, Perioder perioder) {
20+
return new PerioderMedFeil(
21+
getPerioderSomIkkeOverlapperMedHovedperiode(test, perioder),
22+
getPerioderUtenforGyldigperiode(test, perioder));
2123
}
2224

23-
public static TidsseriePeriodeWrapper finnPerioderUtenfor(LocalDateTimeline<Boolean> testTidsserie, LocalDateTimeline<Boolean> hovedTidsserie) {
24-
return new TidsseriePeriodeWrapper(
25-
new ArrayList<>(),
26-
TidsserieUtils.toPeriodeList(testTidsserie.disjoint(hovedTidsserie)));
25+
private static List<Periode> getPerioderUtenforGyldigperiode(LocalDateTimeline<Boolean> test, Perioder perioder) {
26+
return TidsserieUtils.toPeriodeList(test.disjoint(perioder.gyldigInterval));
27+
}
28+
29+
private static List<Periode> getPerioderSomIkkeOverlapperMedHovedperiode(LocalDateTimeline<Boolean> test, Perioder perioder) {
30+
31+
return TidsserieUtils.toPeriodeList(perioder.søknadsperiode.disjoint(test));
32+
}
33+
34+
public static PerioderMedFeil finnPerioderUtenfor(LocalDateTimeline<Boolean> testTidsserie, Perioder hovedTidsserie) {
35+
return new PerioderMedFeil(
36+
Collections.emptyList(),
37+
getPerioderUtenforGyldigperiode(testTidsserie, hovedTidsserie));
2738
}
2839

2940
public static boolean periodeInneholderDagerSomIkkeErHelg(Periode periode) {
@@ -51,32 +62,51 @@ public static LocalDateTimeline<Boolean> toLocalDateTimeline(Map<Periode, ?> per
5162
}
5263
}
5364

54-
public static class TidsseriePeriodeWrapper {
65+
public static class Perioder {
66+
private final LocalDateTimeline<Boolean> søknadsperiode;
67+
private final LocalDateTimeline<Boolean> gyldigInterval;
68+
69+
public Perioder(List<Periode> søknadsperiode, List<Periode> endringsperiode) {
70+
this.søknadsperiode = TidsserieUtils.toLocalDateTimeline(søknadsperiode);
71+
this.gyldigInterval = this.søknadsperiode.union(TidsserieUtils.toLocalDateTimeline(endringsperiode), StandardCombinators::coalesceLeftHandSide);
72+
}
73+
74+
public LocalDateTimeline<Boolean> getSøknadsperiode() {
75+
return søknadsperiode;
76+
}
77+
78+
public LocalDateTimeline<Boolean> getPerioderDerEndringerErTillatt() {
79+
return gyldigInterval;
80+
}
81+
}
82+
83+
public static class PerioderMedFeil {
5584
private final List<Periode> perioderSomIkkeOverlapperMedHovedperiode;
56-
private final List<Periode> perioderUtenforHovedperiode;
85+
private final List<Periode> perioderUtenforGyldigperiode;
5786

58-
public TidsseriePeriodeWrapper(List<Periode> perioderSomIkkeOverlapperMedHovedperiode, List<Periode> perioderUtenforHovedperiode) {
87+
public PerioderMedFeil(List<Periode> perioderSomIkkeOverlapperMedHovedperiode, List<Periode> perioderUtenforGyldigperiode) {
5988
this.perioderSomIkkeOverlapperMedHovedperiode = perioderSomIkkeOverlapperMedHovedperiode;
60-
this.perioderUtenforHovedperiode = perioderUtenforHovedperiode;
89+
this.perioderUtenforGyldigperiode = perioderUtenforGyldigperiode;
6190
}
6291

6392
public List<Periode> getPerioderSomIkkeOverlapperMedHovedperiode() {
6493
return perioderSomIkkeOverlapperMedHovedperiode;
6594
}
6695

67-
public List<Periode> getPerioderUtenforHovedperiode() {
68-
return perioderUtenforHovedperiode;
96+
public List<Periode> getPerioderUtenforGyldigperiode() {
97+
return perioderUtenforGyldigperiode;
6998
}
7099

71100
public void valider(String felt , List<Feil> feil) {
72-
if(!this.perioderSomIkkeOverlapperMedHovedperiode.isEmpty()) {
101+
if (!this.perioderSomIkkeOverlapperMedHovedperiode.isEmpty()) {
73102
feil.addAll(this.perioderSomIkkeOverlapperMedHovedperiode.stream()
74103
.filter(TidsserieValidator::periodeInneholderDagerSomIkkeErHelg)
75104
.map(p -> toFeil(p, felt, "ikkeKomplettPeriode", "Periodene er ikke komplett, periode som mangler er: "))
76105
.collect(Collectors.toList()));
77106
}
78-
if(!this.perioderUtenforHovedperiode.isEmpty()) {
79-
feil.addAll(this.perioderUtenforHovedperiode.stream()
107+
108+
if (!this.perioderUtenforGyldigperiode.isEmpty()) {
109+
feil.addAll(this.perioderUtenforGyldigperiode.stream()
80110
.map(p -> toFeil(p, felt, "ugyldigPeriode", "Perioden er utenfor søknadsperioden : "))
81111
.collect(Collectors.toList()));
82112
}

soknad/src/main/java/no/nav/k9/søknad/felles/opptjening/Arbeidstaker.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ protected boolean manglerIkkeID() {
4545
}
4646

4747
public void valider(String felt, List<Feil> feilList) {
48-
if(erEntydigPåID()) {
48+
if (erEntydigPåID()) {
4949
feilList.add(new Feil(felt, "illegalArgument", "Ikke entydig ID på Arbeidsgiver, må oppgi enten norskIdentitetsnummer eller organisasjonsnummer."));
5050
}
5151
if (manglerIkkeID()) {

soknad/src/main/java/no/nav/k9/søknad/ytelse/psb/v1/Beredskap.java

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -18,20 +18,14 @@
1818
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE, getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE, isGetterVisibility = JsonAutoDetect.Visibility.NONE, creatorVisibility = JsonAutoDetect.Visibility.NONE)
1919
public class Beredskap {
2020

21-
@JsonProperty(value="perioder")
21+
@JsonProperty(value="perioder", required = true)
2222
@Valid
23-
@NotEmpty
24-
private Map<Periode, BeredskapPeriodeInfo> perioder;
23+
@NotNull
24+
private Map<Periode, BeredskapPeriodeInfo> perioder = new TreeMap<>();
2525

2626
@JsonProperty(value="perioderSomSkalSlettes")
2727
@Valid
28-
private Map<Periode, BeredskapPeriodeInfo> perioderSomSkalSlettes;
29-
30-
@JsonCreator
31-
public Beredskap(
32-
@JsonProperty(value = "perioder") @NotEmpty @Valid Map<Periode, BeredskapPeriodeInfo> perioder) {
33-
this.perioder = (perioder == null) ? new TreeMap<>() : new TreeMap<>(perioder);
34-
}
28+
private Map<Periode, BeredskapPeriodeInfo> perioderSomSkalSlettes = new TreeMap<>();
3529

3630
public Beredskap() {
3731
}
@@ -54,19 +48,19 @@ public Beredskap medPerioderSomSkalSlettes(Map<Periode, BeredskapPeriodeInfo> pe
5448
return this;
5549
}
5650

51+
public Beredskap leggeTilPeriode(Periode periode, BeredskapPeriodeInfo beredskapPeriodeInfo) {
52+
this.perioder.put(periode, beredskapPeriodeInfo);
53+
return this;
54+
}
55+
5756
@JsonIgnoreProperties(ignoreUnknown = true)
5857
public static final class BeredskapPeriodeInfo {
5958

59+
@JsonProperty(value = "tilleggsinformasjon", required = true)
6060
@Valid
61-
@JsonProperty(value = "tilleggsinformasjon")
61+
@NotNull
6262
private String tilleggsinformasjon;
6363

64-
@JsonCreator
65-
public BeredskapPeriodeInfo(@JsonProperty(value = "tilleggsinformasjon")
66-
@NotNull @Valid String tilleggsinformasjon) {
67-
this.tilleggsinformasjon = tilleggsinformasjon;
68-
}
69-
7064
public BeredskapPeriodeInfo() {
7165
}
7266

soknad/src/main/java/no/nav/k9/søknad/ytelse/psb/v1/LovbestemtFerie.java

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
import javax.validation.Valid;
1212

13+
import java.util.Collections;
1314
import java.util.Map;
1415
import java.util.TreeMap;
1516

@@ -20,17 +21,11 @@ public class LovbestemtFerie {
2021

2122
@JsonProperty(value="perioder", required = true)
2223
@Valid
23-
private Map<Periode, LovbestemtFeriePeriodeInfo> perioder;
24+
private Map<Periode, LovbestemtFeriePeriodeInfo> perioder = new TreeMap<>();
2425

2526
@JsonProperty(value="perioderSomSkalSlettes", required = true)
2627
@Valid
27-
private Map<Periode, LovbestemtFeriePeriodeInfo> perioderSomSkalSlettes;
28-
29-
@JsonCreator
30-
public LovbestemtFerie(
31-
@JsonProperty(value = "perioder", required = true) @Valid Map<Periode, LovbestemtFeriePeriodeInfo> perioder) {
32-
this.perioder = (perioder == null) ? new TreeMap<>() : new TreeMap<>(perioder);
33-
}
28+
private Map<Periode, LovbestemtFeriePeriodeInfo> perioderSomSkalSlettes = new TreeMap<>();
3429

3530
public LovbestemtFerie() {
3631
}
@@ -39,7 +34,7 @@ public Map<Periode, LovbestemtFeriePeriodeInfo> getPerioder() {
3934
return unmodifiableMap(perioder);
4035
}
4136

42-
public LovbestemtFerie setPerioder(Map<Periode, LovbestemtFeriePeriodeInfo> perioder) {
37+
public LovbestemtFerie medPerioder(Map<Periode, LovbestemtFeriePeriodeInfo> perioder) {
4338
this.perioder = (perioder == null) ? new TreeMap<>() : new TreeMap<>(perioder);
4439
return this;
4540
}

soknad/src/main/java/no/nav/k9/søknad/ytelse/psb/v1/Nattevåk.java

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,14 @@
1717
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE, getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE, isGetterVisibility = JsonAutoDetect.Visibility.NONE, creatorVisibility = JsonAutoDetect.Visibility.NONE)
1818
public class Nattevåk {
1919

20-
@JsonProperty(value="perioder")
20+
@JsonProperty(value="perioder", required = true)
2121
@Valid
22-
@NotEmpty
23-
private Map<Periode, NattevåkPeriodeInfo> perioder;
22+
@NotNull
23+
private Map<Periode, NattevåkPeriodeInfo> perioder = new TreeMap<>();
2424

25-
@JsonProperty(value="perioderSomSkalSlettes")
25+
@JsonProperty(value="perioderSomSkalSlettes", required = true)
2626
@Valid
27-
private Map<Periode, NattevåkPeriodeInfo> perioderSomSkalSlettes;
28-
29-
@JsonCreator
30-
public Nattevåk(@JsonProperty("perioder") @Valid @NotEmpty Map<Periode, NattevåkPeriodeInfo> perioder) {
31-
this.perioder = (perioder == null) ? new TreeMap<>() : new TreeMap<>(perioder);
32-
}
27+
private Map<Periode, NattevåkPeriodeInfo> perioderSomSkalSlettes = new TreeMap<>();
3328

3429
public Nattevåk() {
3530
}
@@ -43,6 +38,11 @@ public class Nattevåk {
4338
return this;
4439
}
4540

41+
public Nattevåk leggeTilPeriode(Periode periode, NattevåkPeriodeInfo nattevåkPeriodeInfo) {
42+
this.perioder.put(periode, nattevåkPeriodeInfo);
43+
return this;
44+
}
45+
4646
public Map<Periode, NattevåkPeriodeInfo> getPerioderSomSkalSlettes() {
4747
return Collections.unmodifiableMap(perioderSomSkalSlettes);
4848
}
@@ -55,18 +55,11 @@ public class Nattevåk {
5555
@JsonIgnoreProperties(ignoreUnknown = true)
5656
public static final class NattevåkPeriodeInfo {
5757

58-
@JsonProperty(value="tilleggsinformasjon")
58+
@JsonProperty(value="tilleggsinformasjon", required = true)
5959
@Valid
6060
@NotNull
6161
private String tilleggsinformasjon;
6262

63-
@JsonCreator
64-
public NattevåkPeriodeInfo(
65-
@JsonProperty(value="tilleggsinformasjon")
66-
String tilleggsinformasjon) {
67-
this.tilleggsinformasjon = tilleggsinformasjon;
68-
}
69-
7063
public NattevåkPeriodeInfo() {
7164
}
7265

0 commit comments

Comments
 (0)