Skip to content

Commit

Permalink
oppiaine-kooditettu-nimi-fix
Browse files Browse the repository at this point in the history
  • Loading branch information
oplekal committed Dec 31, 2024
1 parent c2377be commit c56032c
Show file tree
Hide file tree
Showing 10 changed files with 75 additions and 52 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.fasterxml.jackson.annotation.JsonInclude;
import fi.vm.sade.eperusteet.dto.Reference;
import fi.vm.sade.eperusteet.dto.ReferenceableDto;
import fi.vm.sade.eperusteet.dto.tutkinnonrakenne.KoodiDto;
import fi.vm.sade.eperusteet.dto.util.LokalisoituTekstiDto;
import lombok.AllArgsConstructor;
import lombok.Data;
Expand All @@ -26,18 +27,10 @@ public abstract class OppiaineBaseDto implements ReferenceableDto {
private Optional<Boolean> koosteinen;
private Optional<Boolean> abstrakti;
protected Optional<LokalisoituTekstiDto> nimi;
private KoodiDto koodi;
private Optional<Long> jnro;
private Date muokattu;

@JsonIgnore
public LokalisoituTekstiDto getNimiOrDefault(LokalisoituTekstiDto defaultNimi) {
if (nimi != null) {
return nimi.orElse(defaultNimi);
} else {
return defaultNimi;
}
}

@JsonIgnore
public Long getJnroOrDefault(Long defaultJnro) {
if (jnro != null) {
Expand All @@ -46,4 +39,10 @@ public Long getJnroOrDefault(Long defaultJnro) {
return defaultJnro;
}
}

public LokalisoituTekstiDto getNimi() {
return Optional.ofNullable(koodi)
.map(KoodiDto::getNimi)
.orElse(nimi != null ? nimi.orElse(null) : null);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,5 @@ public class OppiaineDto extends OppiaineBaseUpdateDto {
private Set<OppiaineSuppeaDto> oppimaarat;
private Set<OpetuksenKohdealueDto> kohdealueet;
private Set<OppiaineenVuosiluokkaKokonaisuusDto> vuosiluokkakokonaisuudet;
private KoodiDto koodi;
private List<KevytTekstiKappaleDto> vapaatTekstit;

public Optional<LokalisoituTekstiDto> getNimi() {
if (super.getNimi() != null && super.getNimi().isPresent()) {
return super.getNimi();
}

return Optional.ofNullable(koodi).map(KoodiDto::getNimi);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.fasterxml.jackson.annotation.JsonInclude;
import fi.vm.sade.eperusteet.dto.KevytTekstiKappaleDto;
import fi.vm.sade.eperusteet.dto.peruste.PerusteRakenneOsa;
import fi.vm.sade.eperusteet.dto.tutkinnonrakenne.KoodiDto;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
Expand All @@ -29,6 +30,6 @@ public class OppiaineLaajaDto extends OppiaineBaseDto {
private String koodiArvo;

public PerusteRakenneOsa getPerusteenOsa() {
return new PerusteRakenneOsa("perusopetus_oppiaine", nimi.get());
return new PerusteRakenneOsa("perusopetus_oppiaine", getNimi());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -91,10 +91,10 @@ private NavigationNodeDto vuosiluokkakokonaisuudet(Long perusteId, String kieli)
private NavigationNodeDto oppiaineet(Long perusteId, String kieli) {
return NavigationNodeDto.of(NavigationType.perusopetusoppiaineet)
.addAll(sisallot.getOppiaineet(perusteId, OppiaineSuppeaDto.class).stream()
.sorted(Comparator.comparing(oppiaine -> LokalisoituTekstiDto.getOrDefault(oppiaine.getNimiOrDefault(LokalisoituTekstiDto.of("")), Kieli.of(kieli), "")))
.sorted(Comparator.comparing(oppiaine -> oppiaine.getNimi().get(Kieli.of(kieli))))
.sorted(Comparator.comparing(oppiaine -> oppiaine.getJnroOrDefault(99L)))
.map(oppiaine ->
NavigationNodeDto.of(NavigationType.perusopetusoppiaine, oppiaine.getNimiOrDefault(null), oppiaine.getId())
NavigationNodeDto.of(NavigationType.perusopetusoppiaine, oppiaine.getNimi(), oppiaine.getId())
.addAll(!ObjectUtils.isEmpty(oppiaine.getOppimaarat()) ? oppimaarat(oppiaine.getOppimaarat(), kieli) : null)
).collect(Collectors.toList()));
}
Expand All @@ -103,9 +103,9 @@ private Stream<NavigationNodeDto> oppimaarat(Set<OppiaineSuppeaDto> oppimaarat,
return Stream.concat(
Stream.of(NavigationNodeDto.of(NavigationType.oppimaarat).meta("navigation-subtype", true)),
oppimaarat.stream()
.sorted(Comparator.comparing(oppiaine -> LokalisoituTekstiDto.getOrDefault(oppiaine.getNimiOrDefault(LokalisoituTekstiDto.of("")), Kieli.of(kieli), "")))
.sorted(Comparator.comparing(oppiaine -> oppiaine.getNimi().get(Kieli.of(kieli))))
.sorted(Comparator.comparing(oppiaine -> oppiaine.getJnroOrDefault(99l)))
.map(oppimaara -> NavigationNodeDto.of(NavigationType.perusopetusoppiaine, oppimaara.getNimiOrDefault(null), oppimaara.getId()).meta("oppimaara", true)));
.map(oppimaara -> NavigationNodeDto.of(NavigationType.perusopetusoppiaine, oppimaara.getNimi(), oppimaara.getId()).meta("oppimaara", true)));
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -61,10 +61,10 @@ private List<NavigationNodeDto> vuosiluokat(PerusteKaikkiDto peruste, String kie
private List<NavigationNodeDto> vuosiluokanOppiaineet(PerusteKaikkiDto peruste, Long vlkId, String kieli) {
return peruste.getPerusopetuksenPerusteenSisalto().getOppiaineet().stream()
.filter(oppiaine -> oppiaineJaOppimaaraVuosiluokkakokonaisuusIdt(oppiaine).contains(vlkId))
.sorted(Comparator.comparing(oppiaine -> LokalisoituTekstiDto.getOrDefault(oppiaine.getNimiOrDefault(LokalisoituTekstiDto.of("")), Kieli.of(kieli), "")))
.sorted(Comparator.comparing(oppiaine -> oppiaine.getNimi().get(Kieli.of(kieli))))
.sorted(Comparator.comparing(oppiaine -> oppiaine.getJnroOrDefault(99l)))
.map(oppiaine ->
NavigationNodeDto.of(NavigationType.perusopetusoppiaine, oppiaine.getNimiOrDefault(null), oppiaine.getId()).meta("vlkId", vlkId)
NavigationNodeDto.of(NavigationType.perusopetusoppiaine, oppiaine.getNimi(), oppiaine.getId()).meta("vlkId", vlkId)
.add(!ObjectUtils.isEmpty(oppiaine.getOppimaarat()) ? oppimaarat(oppiaine.getOppimaarat(), vlkId, kieli) : null)
).collect(Collectors.toList());
}
Expand All @@ -82,10 +82,10 @@ private List<Long> oppiaineJaOppimaaraVuosiluokkakokonaisuusIdt(OppiaineLaajaDto
private NavigationNodeDto oppiaineet(PerusteKaikkiDto peruste, String kieli) {
return NavigationNodeDto.of(NavigationType.perusopetusoppiaineet)
.addAll(peruste.getPerusopetuksenPerusteenSisalto().getOppiaineet().stream()
.sorted(Comparator.comparing(oppiaine -> LokalisoituTekstiDto.getOrDefault(oppiaine.getNimiOrDefault(LokalisoituTekstiDto.of("")), Kieli.of(kieli), "")))
.sorted(Comparator.comparing(oppiaine -> oppiaine.getNimi().get(Kieli.of(kieli))))
.sorted(Comparator.comparing(oppiaine -> oppiaine.getJnroOrDefault(99l)))
.map(oppiaine ->
NavigationNodeDto.of(NavigationType.perusopetusoppiaine, oppiaine.getNimiOrDefault(null), oppiaine.getId())
NavigationNodeDto.of(NavigationType.perusopetusoppiaine, oppiaine.getNimi(), oppiaine.getId())
.add(!ObjectUtils.isEmpty(oppiaine.getOppimaarat()) ? oppimaarat(oppiaine.getOppimaarat(), null, kieli) : null)
).collect(Collectors.toList()));
}
Expand All @@ -94,11 +94,11 @@ private NavigationNodeDto oppimaarat(Set<OppiaineDto> oppimaarat, Long vlkId, St
return NavigationNodeDto.of(NavigationType.oppimaarat).meta("navigation-subtype", true)
.addAll(
oppimaarat.stream()
.sorted(Comparator.comparing(oppiaine -> LokalisoituTekstiDto.getOrDefault(oppiaine.getNimiOrDefault(LokalisoituTekstiDto.of("")), Kieli.of(kieli), "")))
.sorted(Comparator.comparing(oppiaine -> oppiaine.getNimi().get(Kieli.of(kieli))))
.sorted(Comparator.comparing(oppiaine -> oppiaine.getJnroOrDefault(99l)))
.map(oppimaara -> {
NavigationNodeDto node = NavigationNodeDto
.of(NavigationType.perusopetusoppiaine, oppimaara.getNimiOrDefault(null), oppimaara.getId());
.of(NavigationType.perusopetusoppiaine, oppimaara.getNimi(), oppimaara.getId());
if (vlkId != null) {
node = node.meta("vlkId", vlkId);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -209,7 +209,7 @@ private void tarkistaPerusopetuksenOppiaine(
OppiaineSuppeaDto oaDto = mapper.map(oa, OppiaineSuppeaDto.class);

if (oa.getKoodiArvo() == null && oa.getKoodiUri() == null) {
validointi.virhe("peruste-validointi-oppiaine-koodi", NavigationNodeDto.of(NavigationType.perusopetusoppiaine, oaDto.getNimiOrDefault(null), oa.getId()));
validointi.virhe("peruste-validointi-oppiaine-koodi", NavigationNodeDto.of(NavigationType.perusopetusoppiaine, oaDto.getNimi(), oa.getId()));
}

if (oa.getTehtava() != null) {
Expand Down Expand Up @@ -279,11 +279,11 @@ private void tarkistaPerusopetuksenOppiaine(
.flatMap(Collection::stream)
.collect(Collectors.toSet());
if (!sisaltoalueetIdt.containsAll(tavoitteidenSisaltoalueetIdt)) {
validointi.virhe("peruste-validointi-oppiaine-vlk-tavoite-sisaltoalueet", NavigationNodeDto.of(NavigationType.perusopetusoppiaine, oaDto.getNimiOrDefault(null), oa.getId()));
validointi.virhe("peruste-validointi-oppiaine-vlk-tavoite-sisaltoalueet", NavigationNodeDto.of(NavigationType.perusopetusoppiaine, oaDto.getNimi(), oa.getId()));
}
}

virheellisetKielet.entrySet().forEach(entry -> validointi.virhe(entry.getKey(), NavigationNodeDto.of(NavigationType.perusopetusoppiaine, oaDto.getNimiOrDefault(null), oa.getId())));
virheellisetKielet.entrySet().forEach(entry -> validointi.virhe(entry.getKey(), NavigationNodeDto.of(NavigationType.perusopetusoppiaine, oaDto.getNimi(), oa.getId())));

if (oa.getOppimaarat() != null) {
for (Oppiaine oppimaara : oa.getOppimaarat()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -321,7 +321,7 @@ public <T extends OppiaineBaseUpdateDto> OppiaineDto updateOppiaine(Long peruste
}
}
} else {
mapper.map(dto, aine);
Oppiaine aine2 = mapper.map(dto, aine);
aine = oppiaineRepository.save(aine);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,8 @@
import fi.vm.sade.eperusteet.dto.vst.OpintokokonaisuusDto;
import fi.vm.sade.eperusteet.dto.vst.TavoitesisaltoalueDto;
import fi.vm.sade.eperusteet.dto.yl.LukioOppiaineUpdateDto;
import fi.vm.sade.eperusteet.dto.yl.OppiaineBaseDto;
import fi.vm.sade.eperusteet.dto.yl.OppiaineBaseUpdateDto;
import fi.vm.sade.eperusteet.dto.yl.OppiaineDto;
import fi.vm.sade.eperusteet.dto.yl.OppiaineKevytDto;
import fi.vm.sade.eperusteet.dto.yl.OppiaineLaajaDto;
Expand Down Expand Up @@ -673,32 +675,30 @@ public void mapAtoB(Koodi a, OsaamisalaDto b, MappingContext context) {
.byDefault()
.register();

factory.classMap(OppiaineBaseDto.class, Oppiaine.class)
.mapNulls(true)
.customize(OppiaineCustomMapper.create(koodistoClient))
.byDefault()
.register();

factory.classMap(OppiaineDto.class, Oppiaine.class)
.mapNulls(true)
.fieldBToA("vuosiluokkakokonaisuudet", "vuosiluokkakokonaisuudet")
.customize(new CustomMapper<OppiaineDto, Oppiaine>() {
@Override
public void mapBtoA(Oppiaine oppiaine, OppiaineDto oppiaineDto, MappingContext context) {
super.mapBtoA(oppiaine, oppiaineDto, context);
if (oppiaine.getKoodiUri() != null) {
oppiaineDto.setKoodi(koodistoClient.getKoodi(oppiaine.getKoodiUri().split("_")[0], oppiaine.getKoodiUri()));
}
}
.customize(OppiaineCustomMapper.create(koodistoClient))
.byDefault()
.register();

@Override
public void mapAtoB(OppiaineDto oppiaineDto, Oppiaine oppiaine, MappingContext context) {
super.mapAtoB(oppiaineDto, oppiaine, context);
if (oppiaineDto.getKoodi() != null) {
oppiaine.setKoodiUri(oppiaineDto.getKoodi().getUri());
oppiaine.setKoodiArvo(oppiaineDto.getKoodi().getArvo());
}
}
})
factory.classMap(OppiaineLaajaDto.class, Oppiaine.class)
.mapNulls(true)
.fieldBToA("vuosiluokkakokonaisuudet", "vuosiluokkakokonaisuudet")
.customize(OppiaineCustomMapper.create(koodistoClient))
.byDefault()
.register();

factory.classMap(OppiaineSuppeaDto.class, Oppiaine.class)
.fieldBToA("muokattu", "muokattu")
.mapNulls(true)
.fieldBToA("vuosiluokkakokonaisuudet", "vuosiluokkakokonaisuudet")
.customize(OppiaineCustomMapper.create(koodistoClient))
.byDefault()
.register();

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package fi.vm.sade.eperusteet.service.mapping;

import fi.vm.sade.eperusteet.domain.yl.Oppiaine;
import fi.vm.sade.eperusteet.dto.yl.OppiaineBaseDto;
import fi.vm.sade.eperusteet.service.KoodistoClient;
import ma.glasnost.orika.CustomMapper;
import ma.glasnost.orika.MappingContext;

public class OppiaineCustomMapper {

public static <T extends OppiaineBaseDto> CustomMapper<T, Oppiaine> create(KoodistoClient koodistoClient) {
return new CustomMapper<T, Oppiaine>() {

@Override
public void mapBtoA(Oppiaine oppiaine, T oppiaineDto, MappingContext context) {
super.mapBtoA(oppiaine, oppiaineDto, context);
if (oppiaine.getKoodiUri() != null) {
oppiaineDto.setKoodi(koodistoClient.getKoodi(oppiaine.getKoodiUri().split("_")[0], oppiaine.getKoodiUri()));
}
}

@Override
public void mapAtoB(T oppiaineDto, Oppiaine oppiaine, MappingContext context) {
super.mapAtoB(oppiaineDto, oppiaine, context);
if (oppiaineDto.getKoodi() != null) {
oppiaine.setKoodiUri(oppiaineDto.getKoodi().getUri());
oppiaine.setKoodiArvo(oppiaineDto.getKoodi().getArvo());
}
}
};
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ public void testAddAndListOppiaineet() {

List<OppiaineDto> aineet = lukiokoulutuksenPerusteenSisaltoService.getOppiaineet(perusteId, OppiaineDto.class);
assertEquals(1, aineet.size());
assertEquals("Finska", aineet.get(0).getNimi().get().get(SV));
assertEquals("Finska", aineet.get(0).getNimi().get(SV));
assertEquals(2, aineet.get(0).getOppimaarat().size());
}
}

0 comments on commit c56032c

Please sign in to comment.