Skip to content

Commit e55daeb

Browse files
committed
TSFF-1157: Egen kontrakt for oppgave
1 parent b85a7d5 commit e55daeb

File tree

5 files changed

+312
-0
lines changed

5 files changed

+312
-0
lines changed

oppgave/pom.xml

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<parent>
6+
<artifactId>k9-format</artifactId>
7+
<groupId>no.nav.k9</groupId>
8+
<version>${revision}${sha1}${changelist}</version>
9+
</parent>
10+
<modelVersion>4.0.0</modelVersion>
11+
<artifactId>oppgave</artifactId>
12+
13+
14+
<dependencies>
15+
<dependency>
16+
<groupId>no.nav.k9</groupId>
17+
<artifactId>soknad</artifactId>
18+
</dependency>
19+
</dependencies>
20+
21+
</project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,216 @@
1+
package no.nav.k9.oppgave;
2+
3+
import com.fasterxml.jackson.annotation.*;
4+
import com.fasterxml.jackson.databind.node.ObjectNode;
5+
import jakarta.validation.Valid;
6+
import jakarta.validation.constraints.NotNull;
7+
import no.nav.k9.oppgave.bekreftelse.Bekreftelse;
8+
import no.nav.k9.søknad.Innsending;
9+
import no.nav.k9.søknad.JsonUtils;
10+
import no.nav.k9.søknad.felles.DtoKonstanter;
11+
import no.nav.k9.søknad.felles.Kildesystem;
12+
import no.nav.k9.søknad.felles.Versjon;
13+
import no.nav.k9.søknad.felles.personopplysninger.Søker;
14+
import no.nav.k9.søknad.felles.type.Språk;
15+
import no.nav.k9.søknad.felles.type.SøknadId;
16+
17+
import java.io.IOException;
18+
import java.time.ZonedDateTime;
19+
import java.util.Objects;
20+
import java.util.Optional;
21+
22+
@JsonIgnoreProperties(ignoreUnknown = true)
23+
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE, getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE, isGetterVisibility = JsonAutoDetect.Visibility.NONE, creatorVisibility = JsonAutoDetect.Visibility.NONE)
24+
public class Oppgave implements Innsending {
25+
26+
@Valid
27+
@NotNull
28+
@JsonProperty(value = "søknadId", required = true)
29+
private SøknadId søknadId;
30+
31+
@Valid
32+
@NotNull
33+
@JsonProperty(value = "versjon", required = true)
34+
private Versjon versjon;
35+
36+
@Valid
37+
@NotNull
38+
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DtoKonstanter.DATO_TID_FORMAT, timezone = DtoKonstanter.TIDSSONE)
39+
@JsonProperty(value = "mottattDato", required = true)
40+
private ZonedDateTime mottattDato;
41+
42+
@Valid
43+
@NotNull
44+
@JsonProperty(value = "søker", required = true)
45+
private Søker søker;
46+
47+
@Valid
48+
@JsonProperty(value = "språk", required = false)
49+
private Språk språk = Språk.NORSK_BOKMÅL;
50+
51+
@JsonManagedReference
52+
@Valid
53+
@NotNull
54+
@JsonProperty(value = "bekreftelse", required = true)
55+
private Bekreftelse bekreftelse;
56+
57+
58+
@Valid
59+
@JsonProperty(value = "kildesystem", required = false)
60+
private Kildesystem kildesystem;
61+
62+
public Oppgave() {
63+
//
64+
}
65+
66+
@JsonCreator
67+
public Oppgave(@JsonProperty(value = "søknadId", required = true) @Valid @NotNull SøknadId søknadId,
68+
@JsonProperty(value = "versjon", required = true) @Valid @NotNull Versjon versjon,
69+
@JsonProperty(value = "mottattDato", required = true) @Valid @NotNull ZonedDateTime mottattDato,
70+
@JsonProperty(value = "søker", required = true) @Valid @NotNull Søker søker,
71+
@JsonProperty(value = "språk", required = false) @Valid Språk språk,
72+
@JsonProperty(value = "ytelse", required = true) @Valid @NotNull Bekreftelse bekreftelse) {
73+
this.søknadId = Objects.requireNonNull(søknadId, "søknadId");
74+
this.versjon = Objects.requireNonNull(versjon, "versjon");
75+
this.mottattDato = Objects.requireNonNull(mottattDato, "mottattDato");
76+
this.søker = Objects.requireNonNull(søker, "søker");
77+
this.bekreftelse = Objects.requireNonNull(bekreftelse, "bekreftelse");
78+
this.språk = språk;
79+
}
80+
81+
public Oppgave(@JsonProperty(value = "søknadId", required = true) @Valid @NotNull SøknadId søknadId,
82+
@JsonProperty(value = "versjon", required = true) @Valid @NotNull Versjon versjon,
83+
@JsonProperty(value = "mottattDato", required = true) @Valid @NotNull ZonedDateTime mottattDato,
84+
@JsonProperty(value = "søker", required = true) @Valid @NotNull Søker søker,
85+
@JsonProperty(value = "bekreftelse", required = true) @Valid @NotNull Bekreftelse bekreftelse) {
86+
this(søknadId, versjon, mottattDato, søker, Språk.NORSK_BOKMÅL, bekreftelse);
87+
}
88+
89+
@Override
90+
public SøknadId getSøknadId() {
91+
return søknadId;
92+
}
93+
94+
@Override
95+
public Versjon getVersjon() {
96+
return versjon;
97+
}
98+
99+
@Override
100+
public ZonedDateTime getMottattDato() {
101+
return mottattDato;
102+
}
103+
104+
public Språk getSpråk() {
105+
return språk;
106+
}
107+
108+
109+
110+
@Override
111+
public Søker getSøker() {
112+
return søker;
113+
}
114+
115+
@SuppressWarnings("unchecked")
116+
public <B extends Bekreftelse> B getBekreftelse() {
117+
return (B) bekreftelse;
118+
}
119+
120+
121+
public Optional<Kildesystem> getKildesystem() {
122+
return Optional.ofNullable(kildesystem);
123+
}
124+
125+
public void setSøknadId(SøknadId søknadId) {
126+
this.søknadId = Objects.requireNonNull(søknadId, "søknadId");
127+
}
128+
129+
public void setVersjon(Versjon versjon) {
130+
this.versjon = Objects.requireNonNull(versjon);;
131+
}
132+
133+
public void setMottattDato(ZonedDateTime mottattDato) {
134+
this.mottattDato = Objects.requireNonNull(mottattDato, "mottattDato");
135+
}
136+
137+
public void setSøker(Søker søker) {
138+
this.søker = Objects.requireNonNull(søker, "søker");
139+
}
140+
141+
public void setBekreftelse(Bekreftelse bekreftelse) {
142+
this.bekreftelse = Objects.requireNonNull(bekreftelse, "bekreftelse");
143+
}
144+
145+
public void setKildesystem(Kildesystem kildesystem) {
146+
this.kildesystem = kildesystem;
147+
}
148+
149+
public Oppgave medMottattDato(ZonedDateTime mottattDato) {
150+
this.mottattDato = Objects.requireNonNull(mottattDato, "mottattDato");
151+
return this;
152+
}
153+
154+
public Oppgave medSpråk(Språk språk) {
155+
this.språk = språk;
156+
return this;
157+
}
158+
159+
public Oppgave medSøknadId(String søknadId) {
160+
this.søknadId = new SøknadId(Objects.requireNonNull(søknadId, "søknadId"));
161+
return this;
162+
}
163+
164+
public Oppgave medSøknadId(SøknadId søknadId) {
165+
this.søknadId = Objects.requireNonNull(søknadId, "søknadId");
166+
return this;
167+
}
168+
169+
public Oppgave medVersjon(String versjon) {
170+
this.versjon = new Versjon(Objects.requireNonNull(versjon, "versjon"));
171+
return this;
172+
}
173+
174+
public Oppgave medVersjon(Versjon versjon) {
175+
this.versjon = Objects.requireNonNull(versjon, "versjon");
176+
return this;
177+
}
178+
179+
public Oppgave medSøker(Søker søker) {
180+
this.søker = Objects.requireNonNull(søker, "søker");
181+
return this;
182+
}
183+
184+
public Oppgave medBekreftelse(Bekreftelse bekreftelse) {
185+
this.bekreftelse = Objects.requireNonNull(bekreftelse, "ytelse");
186+
return this;
187+
}
188+
189+
190+
public Oppgave medKildesystem(Kildesystem kildesystem) {
191+
this.kildesystem = kildesystem;
192+
return this;
193+
}
194+
195+
public static final class SerDes {
196+
private SerDes() {
197+
}
198+
199+
public static String serialize(Oppgave oppgave) {
200+
return JsonUtils.toString(oppgave);
201+
}
202+
203+
public static Oppgave deserialize(String oppgave) {
204+
return JsonUtils.fromString(oppgave, Oppgave.class);
205+
}
206+
207+
public static Oppgave deserialize(ObjectNode node) {
208+
try {
209+
return JsonUtils.getObjectMapper().treeToValue(node, Oppgave.class);
210+
} catch (IOException e) {
211+
throw new IllegalArgumentException("Kunne ikke konvertere til Oppgave.class", e);
212+
}
213+
}
214+
215+
}
216+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package no.nav.k9.oppgave.bekreftelse;
2+
3+
import com.fasterxml.jackson.annotation.JsonAutoDetect;
4+
import com.fasterxml.jackson.annotation.JsonSubTypes;
5+
import com.fasterxml.jackson.annotation.JsonTypeInfo;
6+
import com.fasterxml.jackson.annotation.JsonValue;
7+
import jakarta.validation.Valid;
8+
import no.nav.k9.oppgave.bekreftelse.ung.periodeendring.Periodeendring;
9+
import no.nav.k9.søknad.ytelse.DataBruktTilUtledning;
10+
11+
@Valid
12+
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
13+
@JsonSubTypes(value = {
14+
@JsonSubTypes.Type(name = Bekreftelse.UNG_PERIODEENDRING, value = Periodeendring.class),
15+
})
16+
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE, getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE, isGetterVisibility = JsonAutoDetect.Visibility.NONE, creatorVisibility = JsonAutoDetect.Visibility.NONE)
17+
public interface Bekreftelse {
18+
19+
20+
String UNG_PERIODEENDRING = "UNG_PERIODEENDRING";
21+
22+
Bekreftelse.Type getType();
23+
24+
/**
25+
* Data brukt til utledning av bekreftelse.
26+
*/
27+
DataBruktTilUtledning getDataBruktTilUtledning();
28+
29+
Bekreftelse medDataBruktTilUtledning(DataBruktTilUtledning dataBruktTilUtledning);
30+
31+
enum Type {
32+
UNG_PERIODEENDRING(Bekreftelse.UNG_PERIODEENDRING);
33+
34+
@JsonValue
35+
private final String kode;
36+
37+
Type(String kode) {
38+
this.kode = kode;
39+
}
40+
41+
public String kode() {
42+
return kode;
43+
}
44+
}
45+
46+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package no.nav.k9.oppgave.bekreftelse.ung.periodeendring;
2+
3+
import no.nav.k9.oppgave.bekreftelse.Bekreftelse;
4+
import no.nav.k9.søknad.ytelse.DataBruktTilUtledning;
5+
6+
public class Periodeendring implements Bekreftelse {
7+
8+
@Override
9+
public Type getType() {
10+
return Type.UNG_PERIODEENDRING;
11+
}
12+
13+
@Override
14+
public DataBruktTilUtledning getDataBruktTilUtledning() {
15+
return new DataBruktTilUtledning();
16+
}
17+
18+
@Override
19+
public Bekreftelse medDataBruktTilUtledning(DataBruktTilUtledning dataBruktTilUtledning) {
20+
return this;
21+
}
22+
23+
}

pom.xml

+6
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
<module>soknad-frisinn</module>
1818
<module>ettersendelse</module>
1919
<module>konstant</module>
20+
<module>oppgave</module>
2021
</modules>
2122

2223
<properties>
@@ -89,6 +90,11 @@
8990
<artifactId>ettersendelse</artifactId>
9091
<version>${project.version}</version>
9192
</dependency>
93+
<dependency>
94+
<groupId>no.nav.k9</groupId>
95+
<artifactId>oppgave</artifactId>
96+
<version>${project.version}</version>
97+
</dependency>
9298
<dependency>
9399
<groupId>org.assertj</groupId>
94100
<artifactId>assertj-core</artifactId>

0 commit comments

Comments
 (0)