Skip to content

Commit

Permalink
Merge pull request #410 from it-at-m/review-pr-397-kopfdaten-lesen-39…
Browse files Browse the repository at this point in the history
…9-wahlbezirke-laden

Review pr 397 kopfdaten lesen 399 wahlbezirke laden
  • Loading branch information
MrSebastian authored Sep 10, 2024
2 parents 4a769a4 + 0efc6a1 commit f61f68c
Show file tree
Hide file tree
Showing 31 changed files with 215 additions and 469 deletions.
4 changes: 2 additions & 2 deletions wls-basisdaten-service/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -433,8 +433,8 @@
<generatorName>java</generatorName>
<library>resttemplate</library>

<apiPackage>${project.groupId}.basisdatenservice.infomanagement.client</apiPackage>
<modelPackage>${project.groupId}.basisdatenservice.infomanagement.model</modelPackage>
<apiPackage>${project.groupId}.basisdatenservice.eai.infomanagement.client</apiPackage>
<modelPackage>${project.groupId}.basisdatenservice.eai.infomanagement.model</modelPackage>

<generateApiTests>false</generateApiTests>
<generateModelTests>false</generateModelTests>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,28 +88,28 @@ public KonfigurierterWahltagModel getKonfigurierterWahltag() throws WlsException
}

@Override
public BasisdatenModel loadBasisdaten(LocalDate forDate, String wahlterminNummer) throws WlsException {
public BasisdatenModel loadBasisdaten(WahltagWithNummer wahltagWithNummer) throws WlsException {

return new BasisdatenModel(
Set.of(new BasisstrukturdatenModel("wahlID1", "szgID", "wahlbezirkID1_1", forDate),
new BasisstrukturdatenModel("wahlID1", "szgID", "wahlbezirkID1_2", forDate),
new BasisstrukturdatenModel("wahlID1", "szgID", "wahlbezirkID2_1", forDate),
new BasisstrukturdatenModel("wahlID2", "szgID", "wahlbezirkID2_2", forDate),
new BasisstrukturdatenModel("wahlID2", "szgIDOther", "wahlbezirkID2_2", forDate)),
Set.of(new BasisstrukturdatenModel("wahlID1", "szgID", "wahlbezirkID1_1", wahltagWithNummer.wahltag()),
new BasisstrukturdatenModel("wahlID1", "szgID", "wahlbezirkID1_2", wahltagWithNummer.wahltag()),
new BasisstrukturdatenModel("wahlID1", "szgID", "wahlbezirkID2_1", wahltagWithNummer.wahltag()),
new BasisstrukturdatenModel("wahlID2", "szgID", "wahlbezirkID2_2", wahltagWithNummer.wahltag()),
new BasisstrukturdatenModel("wahlID2", "szgIDOther", "wahlbezirkID2_2", wahltagWithNummer.wahltag())),
Set.of(
new WahlModel("wahlID1", "Bundestagswahl", 1L, 1L, forDate, Wahlart.BTW, new Farbe(0, 1, 2), "0"),
new WahlModel("wahlID2", "Europawahl", 2L, 1L, forDate, Wahlart.EUW, new Farbe(3, 4, 5), "1")),
new WahlModel("wahlID1", "Bundestagswahl", 1L, 1L, wahltagWithNummer.wahltag(), Wahlart.BTW, new Farbe(0, 1, 2), "0"),
new WahlModel("wahlID2", "Europawahl", 2L, 1L, wahltagWithNummer.wahltag(), Wahlart.EUW, new Farbe(3, 4, 5), "1")),
Set.of(
new WahlbezirkModel("wahlbezirkID1_1", WahlbezirkArtModel.UWB, "1201", forDate, "0", "wahlID1"),
new WahlbezirkModel("wahlbezirkID1_2", WahlbezirkArtModel.BWB, "1251", forDate, "0", "wahlID1"),
new WahlbezirkModel("wahlbezirkID2_1", WahlbezirkArtModel.UWB, "1202", forDate, "0", "wahlID1"),
new WahlbezirkModel("wahlbezirkID2_2", WahlbezirkArtModel.BWB, "1252", forDate, "0", "wahlID1"),
new WahlbezirkModel("wahlbezirkID2_2", WahlbezirkArtModel.BWB, "1252", forDate, "1", "wahlID2")
new WahlbezirkModel("wahlbezirkID1_1", WahlbezirkArtModel.UWB, "1201", wahltagWithNummer.wahltag(), "0", "wahlID1"),
new WahlbezirkModel("wahlbezirkID1_2", WahlbezirkArtModel.BWB, "1251", wahltagWithNummer.wahltag(), "0", "wahlID1"),
new WahlbezirkModel("wahlbezirkID2_1", WahlbezirkArtModel.UWB, "1202", wahltagWithNummer.wahltag(), "0", "wahlID1"),
new WahlbezirkModel("wahlbezirkID2_2", WahlbezirkArtModel.BWB, "1252", wahltagWithNummer.wahltag(), "0", "wahlID1"),
new WahlbezirkModel("wahlbezirkID2_2", WahlbezirkArtModel.BWB, "1252", wahltagWithNummer.wahltag(), "1", "wahlID2")

),
Set.of(
new StimmzettelgebietModel("szgID", "120", "Munich", forDate, StimmzettelgebietsartModel.SG),
new StimmzettelgebietModel("szgIDOther", "920", "Munich Center", forDate, StimmzettelgebietsartModel.SB)));
new StimmzettelgebietModel("szgID", "120", "Munich", wahltagWithNummer.wahltag(), StimmzettelgebietsartModel.SG),
new StimmzettelgebietModel("szgIDOther", "920", "Munich Center", wahltagWithNummer.wahltag(), StimmzettelgebietsartModel.SB)));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package de.muenchen.oss.wahllokalsystem.basisdatenservice.clients;

import de.muenchen.oss.wahllokalsystem.basisdatenservice.configuration.Profiles;
import de.muenchen.oss.wahllokalsystem.basisdatenservice.eai.infomanagement.client.KonfigurierterWahltagControllerApi;
import de.muenchen.oss.wahllokalsystem.basisdatenservice.eai.infomanagement.model.KonfigurierterWahltagDTO;
import de.muenchen.oss.wahllokalsystem.basisdatenservice.exception.ExceptionConstants;
import de.muenchen.oss.wahllokalsystem.basisdatenservice.infomanagement.client.KonfigurierterWahltagControllerApi;
import de.muenchen.oss.wahllokalsystem.basisdatenservice.infomanagement.model.KonfigurierterWahltagDTO;
import de.muenchen.oss.wahllokalsystem.basisdatenservice.services.kopfdaten.KonfigurierterWahltagClient;
import de.muenchen.oss.wahllokalsystem.basisdatenservice.services.kopfdaten.KonfigurierterWahltagModel;
import de.muenchen.oss.wahllokalsystem.wls.common.exception.WlsException;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,24 +1,20 @@
package de.muenchen.oss.wahllokalsystem.basisdatenservice.clients;

import de.muenchen.oss.wahllokalsystem.basisdatenservice.infomanagement.model.KonfigurierterWahltagDTO;
import de.muenchen.oss.wahllokalsystem.basisdatenservice.eai.infomanagement.model.KonfigurierterWahltagDTO;
import de.muenchen.oss.wahllokalsystem.basisdatenservice.services.kopfdaten.KonfigurierterWahltagModel;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Named;

@Mapper
public interface KonfigurierterWahltagClientMapper {

@Mapping(target = "active", source = "wahltagStatus", qualifiedByName = "mapWahltagStatusEnumStringToModelBoolean")
@Mapping(target = "active", source = "wahltagStatus")
KonfigurierterWahltagModel fromRemoteClientDTOToModel(KonfigurierterWahltagDTO konfigurierterWahltagDTO);

@Named("mapWahltagStatusEnumStringToModelBoolean")
default boolean mapWahltagStatusEnumStringToModelBoolean(KonfigurierterWahltagDTO.WahltagStatusEnum wahltagStatus) {
if (wahltagStatus.equals(KonfigurierterWahltagDTO.WahltagStatusEnum.AKTIV)) {
return true;
} else if (wahltagStatus.equals(KonfigurierterWahltagDTO.WahltagStatusEnum.INAKTIV)) {
return false;
}
return false;
return switch (wahltagStatus) {
case AKTIV -> true;
case INAKTIV -> false;
};
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@
import de.muenchen.oss.wahllokalsystem.basisdatenservice.exception.ExceptionConstants;
import de.muenchen.oss.wahllokalsystem.basisdatenservice.services.kopfdaten.BasisdatenModel;
import de.muenchen.oss.wahllokalsystem.basisdatenservice.services.kopfdaten.WahldatenClient;
import de.muenchen.oss.wahllokalsystem.basisdatenservice.services.wahlen.WahltagWithNummer;
import de.muenchen.oss.wahllokalsystem.wls.common.exception.WlsException;
import de.muenchen.oss.wahllokalsystem.wls.common.exception.util.ExceptionFactory;
import java.time.LocalDate;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Profile;
Expand All @@ -25,11 +25,11 @@ public class WahldatenClientImpl implements WahldatenClient {
private final WahldatenClientMapper wahldatenClientMapper;

@Override
public BasisdatenModel loadBasisdaten(LocalDate forDate, String wahlterminNummer) throws WlsException {
public BasisdatenModel loadBasisdaten(WahltagWithNummer wahltagWithNummer) throws WlsException {

final BasisdatenDTO basisdatenDTO;
try {
basisdatenDTO = wahldatenControllerApi.loadBasisdaten(forDate, wahlterminNummer);
basisdatenDTO = wahldatenControllerApi.loadBasisdaten(wahltagWithNummer.wahltag(), wahltagWithNummer.wahltagNummer());
} catch (final Exception exception) {
log.info("exception on getBasisdaten from external", exception);
throw exceptionFactory.createTechnischeWlsException(ExceptionConstants.FAILED_COMMUNICATION_WITH_EAI);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,24 +1,11 @@
package de.muenchen.oss.wahllokalsystem.basisdatenservice.clients;

import de.muenchen.oss.wahllokalsystem.basisdatenservice.eai.aou.model.BasisdatenDTO;
import de.muenchen.oss.wahllokalsystem.basisdatenservice.eai.aou.model.WahlDTO;
import de.muenchen.oss.wahllokalsystem.basisdatenservice.eai.aou.model.WahlbezirkDTO;
import de.muenchen.oss.wahllokalsystem.basisdatenservice.services.kopfdaten.BasisdatenModel;
import de.muenchen.oss.wahllokalsystem.basisdatenservice.services.wahlbezirke.WahlbezirkModel;
import de.muenchen.oss.wahllokalsystem.basisdatenservice.services.wahlen.WahlModel;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

@Mapper
@Mapper(uses = { WahlbezirkeClientMapper.class, WahlenClientMapper.class })
public interface WahldatenClientMapper {

BasisdatenModel fromRemoteClientDTOToModel(BasisdatenDTO basisdatenDTO);

default WahlModel wahlDTOToWahlModel(WahlDTO wahlDTO) {
return Mappers.getMapper(WahlenClientMapper.class).toModel(wahlDTO);
}

default WahlbezirkModel walbezirkDTOToWahlbezirkModel(WahlbezirkDTO wahlbezirkDTO) {
return Mappers.getMapper(WahlbezirkeClientMapper.class).fromClientDTOToModel(wahlbezirkDTO);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public class BasePathConfiguration {
String infomanagementBasePath;

private final de.muenchen.oss.wahllokalsystem.basisdatenservice.eai.aou.ApiClient eaiApiClient;
private final de.muenchen.oss.wahllokalsystem.basisdatenservice.infomanagement.ApiClient infomanagementApiClient;
private final de.muenchen.oss.wahllokalsystem.basisdatenservice.eai.infomanagement.ApiClient infomanagementApiClient;

@PostConstruct
public void updateBasePaths() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public interface WahlbezirkRepository extends CrudRepository<Wahlbezirk, String>
@PreAuthorize("hasAuthority('Basisdaten_DELETE_Wahlbezirk')")
void deleteByWahltag(LocalDate wahltag);

int countByWahltag(LocalDate wahltag);
boolean existsByWahltag(LocalDate wahltag);

List<Wahlbezirk> findByWahltag(LocalDate wahltag);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,10 @@
import de.muenchen.oss.wahllokalsystem.wls.common.security.domain.BezirkUndWahlID;
import lombok.RequiredArgsConstructor;
import lombok.val;
import org.springframework.stereotype.Component;

@RequiredArgsConstructor
@Component
public class InitializeKopfdaten {

private final ExceptionFactory exceptionFactory;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package de.muenchen.oss.wahllokalsystem.basisdatenservice.services.kopfdaten;

import de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.kopfdaten.KopfdatenRepository;
import de.muenchen.oss.wahllokalsystem.wls.common.exception.util.ExceptionFactory;
import de.muenchen.oss.wahllokalsystem.basisdatenservice.services.wahlen.WahltagWithNummer;
import de.muenchen.oss.wahllokalsystem.wls.common.security.domain.BezirkUndWahlID;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
Expand All @@ -20,7 +20,7 @@ public class KopfdatenService {
private final WahldatenClient wahldatenClient;
private final KopfdatenRepository kopfdatenRepository;
private final KopfdatenModelMapper kopfdatenModelMapper;
private final ExceptionFactory exceptionFactory;
private final InitializeKopfdaten kopfDataInitializer;

@PreAuthorize("hasAuthority('Basisdaten_BUSINESSACTION_GetKopfdaten')")
@Transactional
Expand All @@ -36,9 +36,9 @@ public KopfdatenModel getKopfdaten(BezirkUndWahlID bezirkUndWahlID) {
} else {
log.error("#getKopfdaten: Für Wahlbezirk {} mit WahlID {} waren keine Kopfdaten in der Datenbank", bezirkUndWahlID.getWahlbezirkID(),
bezirkUndWahlID.getWahlID());
final InitializeKopfdaten kopfDataInitializer = new InitializeKopfdaten(exceptionFactory);
KonfigurierterWahltagModel konfigurierterWahltagModel = konfigurierterWahltagClient.getKonfigurierterWahltag();
BasisdatenModel basisdatenModel = wahldatenClient.loadBasisdaten(konfigurierterWahltagModel.wahltag(), konfigurierterWahltagModel.nummer());
BasisdatenModel basisdatenModel = wahldatenClient.loadBasisdaten(
new WahltagWithNummer(konfigurierterWahltagModel.wahltag(), konfigurierterWahltagModel.nummer()));
kopfdatenModel = kopfDataInitializer.initKopfdata(bezirkUndWahlID.getWahlID(), bezirkUndWahlID.getWahlbezirkID(), basisdatenModel);
kopfdatenRepository.save(kopfdatenModelMapper.toEntity(kopfdatenModel));
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,18 @@
package de.muenchen.oss.wahllokalsystem.basisdatenservice.services.kopfdaten;

import de.muenchen.oss.wahllokalsystem.basisdatenservice.services.wahlen.WahltagWithNummer;
import de.muenchen.oss.wahllokalsystem.wls.common.exception.WlsException;
import java.time.LocalDate;

public interface WahldatenClient {

/**
* @param forDate the date of the election
* @param withNummer the number of the "Wahltermin" same with number of the "Wahltag"
* @param wahltagWithNummer filter for requested Basisdaten
* @return BasisdatenDTO
* @throws WlsException
* {@link de.muenchen.oss.wahllokalsystem.wls.common.exception.FachlicheWlsException} if
* return would be null
* {@link de.muenchen.oss.wahllokalsystem.wls.common.exception.TechnischeWlsException}
* if there were trouble during communication
*/
BasisdatenModel loadBasisdaten(LocalDate forDate, String withNummer) throws WlsException;
BasisdatenModel loadBasisdaten(WahltagWithNummer wahltagWithNummer) throws WlsException;
}
Original file line number Diff line number Diff line change
@@ -1,45 +1,16 @@
package de.muenchen.oss.wahllokalsystem.basisdatenservice.services.wahlbezirke;

import de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.Wahlbezirk;
import de.muenchen.oss.wahllokalsystem.basisdatenservice.eai.aou.model.WahlbezirkDTO;
import de.muenchen.oss.wahllokalsystem.basisdatenservice.exception.ExceptionConstants;
import de.muenchen.oss.wahllokalsystem.basisdatenservice.services.wahlen.WahlModel;
import de.muenchen.oss.wahllokalsystem.wls.common.exception.util.ExceptionFactory;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Set;
import org.mapstruct.CollectionMappingStrategy;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;

@Mapper(collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED)
public interface WahlbezirkModelMapper {

@Mapping(source = "identifikator", target = "wahlbezirkID")
@Mapping(source = "wahlbezirkArt", target = "wahlbezirkart")
Wahlbezirk fromDTOtoEntity(WahlbezirkDTO dto);

List<Wahlbezirk> fromListOfWahlbezirkModeltoListOfWahlbezirkEntities(List<WahlbezirkModel> wahlbezirkModelList);
Collection<Wahlbezirk> fromListOfWahlbezirkModeltoListOfWahlbezirkEntities(Collection<WahlbezirkModel> wahlbezirkModelList);

List<WahlbezirkModel> fromListOfWahlbezirkEntityToListOfWahlbezirkModel(List<Wahlbezirk> wahlbezirkEntityList);

default List<WahlbezirkModel> toWahlbezirkModelListMergedWithWahlenInfo(Set<WahlbezirkModel> remoteWahlbezirke, List<WahlModel> wahlen,
ExceptionFactory exceptionFactory) {
if (remoteWahlbezirke == null) {
throw exceptionFactory.createFachlicheWlsException(ExceptionConstants.GETWAHLBEZIRKE_NO_DATA);
}
List<Wahlbezirk> list = new ArrayList<>();
List<Wahlbezirk> remoteList = this.fromListOfWahlbezirkModeltoListOfWahlbezirkEntities(remoteWahlbezirke.stream().toList());
remoteList.forEach(wahlbezirk -> {
if (null != wahlen) {
WahlModel searchedWahl = wahlen.stream().filter(wahl -> wahlbezirk.getWahlnummer().equals(wahl.nummer())).findFirst().orElse(null);
if (null != searchedWahl) {
wahlbezirk.setWahlID(searchedWahl.wahlID());
}
}
list.add(wahlbezirk);
});
return this.fromListOfWahlbezirkEntityToListOfWahlbezirkModel(list);
}

}
Loading

0 comments on commit f61f68c

Please sign in to comment.