Skip to content

Commit

Permalink
Merge pull request #41 from it-at-m/sprint
Browse files Browse the repository at this point in the history
Vorbereitung zur Demo am 31.01.24
  • Loading branch information
martind260 authored Jan 29, 2024
2 parents 34c0fc1 + 8005249 commit f11ee67
Show file tree
Hide file tree
Showing 18 changed files with 364 additions and 103 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@

import de.muenchen.dave.domain.dtos.bearbeiten.BackendIdDTO;
import de.muenchen.dave.domain.dtos.messstelle.EditMessstelleDTO;
import de.muenchen.dave.domain.dtos.messstelle.ReadMessstelleDTO;
import de.muenchen.dave.domain.dtos.messstelle.MessstelleOverviewDTO;
import de.muenchen.dave.domain.dtos.messstelle.ReadMessstelleInfoDTO;
import de.muenchen.dave.exceptions.ResourceNotFoundException;
import de.muenchen.dave.services.messstelle.MessstelleService;
import java.util.List;
import javax.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
Expand Down Expand Up @@ -32,12 +34,12 @@ public class MessstelleController {

@PreAuthorize("hasAnyRole(T(de.muenchen.dave.security.AuthoritiesEnum).ANWENDER.name(), " +
"T(de.muenchen.dave.security.AuthoritiesEnum).POWERUSER.name())")
@GetMapping(value = "/byId", produces = MediaType.APPLICATION_JSON_VALUE)
@GetMapping(value = "/info", produces = MediaType.APPLICATION_JSON_VALUE)
@Transactional(readOnly = true)
public ResponseEntity<ReadMessstelleDTO> readMessstelle(@RequestParam(value = REQUEST_PARAMETER_ID) final String messstelleId) {
log.debug("#readMessstelle with id {}", messstelleId);
public ResponseEntity<ReadMessstelleInfoDTO> readMessstelleInfo(@RequestParam(value = REQUEST_PARAMETER_ID) final String messstelleId) {
log.debug("#readMessstelleInfo with id {}", messstelleId);
try {
final ReadMessstelleDTO readMessstelleDTO = this.messstelleService.readMessstelleById(messstelleId);
final ReadMessstelleInfoDTO readMessstelleDTO = this.messstelleService.readMessstelleInfo(messstelleId);
return ResponseEntity.ok(readMessstelleDTO);
} catch (final ResourceNotFoundException e) {
log.error("Fehler im MessstelleController, Messstelle konnte nicht gefunden werden. ID: {}", messstelleId, e);
Expand Down Expand Up @@ -79,4 +81,17 @@ public ResponseEntity<EditMessstelleDTO> getBearbeiteMessstelle(@RequestParam(va
throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "Es ist ein unerwarteter Fehler beim Laden der Messstelle aufgetreten.");
}
}

@Transactional(readOnly = true)
@PreAuthorize("hasRole(T(de.muenchen.dave.security.AuthoritiesEnum).FACHADMIN.name())")
@GetMapping(value = "/loadAllMessstellenForOverview", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<List<MessstelleOverviewDTO>> getAllMessstellenForOverview() {
log.debug("#getAllMessstellenForOverview");
try {
return ResponseEntity.ok(this.messstelleService.getAllMessstellenForOverview());
} catch (final Exception e) {
log.error("Unerwarteter Fehler im MessstelleController beim Laden der Messstellen für die übersicht.", e);
throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "Es ist ein unerwarteter Fehler beim Laden der Messstellen aufgetreten.");
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ public class EditMessstelleDTO implements Serializable {
private String name;
private String status;
private String bemerkung;
private String stadtbezirk;
private Integer stadtbezirkNummer;

private String realisierungsdatum;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package de.muenchen.dave.domain.dtos.messstelle;

import java.io.Serializable;
import lombok.Data;

@Data
public class MessstelleOverviewDTO implements Serializable {
private String id;
private String mstId;
private String name;
private String status;
private Boolean sichtbarDatenportal;
private Boolean geprueft;
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package de.muenchen.dave.domain.dtos.messstelle;

import java.io.Serializable;
import java.time.LocalDate;
import java.util.List;
import lombok.Data;

@Data
public class ReadMessstelleInfoDTO implements Serializable {

private String id;
private String mstId;
private String standort;
private String stadtbezirk;
private Integer stadtbezirkNummer;
private Double longitude;
private Double latitude;
private LocalDate datumLetztePlausibleMessung;
private LocalDate realisierungsdatum;
private LocalDate abbaudatum;
private List<ReadMessquerschnittDTO> messquerschnitte;
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package de.muenchen.dave.domain.elasticsearch.detektor;

import de.muenchen.dave.domain.enums.MessstelleStatus;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
Expand All @@ -22,7 +23,7 @@ public class Messstelle {

String name;

String status;
MessstelleStatus status;

@Field(type = FieldType.Date, pattern = "dd.MM.uuuu")
LocalDate realisierungsdatum;
Expand Down
13 changes: 13 additions & 0 deletions src/main/java/de/muenchen/dave/domain/enums/MessstelleStatus.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package de.muenchen.dave.domain.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

@AllArgsConstructor
public enum MessstelleStatus {
IN_PLANUNG("in Planung / in Entwurf"), IN_BESTAND("in Bestand / in Betrieb"), AUSSER_BETRIEB(
"außer Betrieb"), ABGEBAUT("abgebaut"), UNBEKANNT("unbekannt");

@Getter
private final String beschreibung;
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,14 @@

import de.muenchen.dave.domain.dtos.messstelle.EditMessquerschnittDTO;
import de.muenchen.dave.domain.dtos.messstelle.EditMessstelleDTO;
import de.muenchen.dave.domain.dtos.messstelle.MessstelleOverviewDTO;
import de.muenchen.dave.domain.dtos.messstelle.ReadMessquerschnittDTO;
import de.muenchen.dave.domain.dtos.messstelle.ReadMessstelleDTO;
import de.muenchen.dave.domain.dtos.messstelle.ReadMessstelleInfoDTO;
import de.muenchen.dave.domain.dtos.suche.SucheMessstelleSuggestDTO;
import de.muenchen.dave.domain.elasticsearch.detektor.Messquerschnitt;
import de.muenchen.dave.domain.elasticsearch.detektor.Messstelle;
import de.muenchen.dave.domain.mapper.SucheMapper;
import de.muenchen.dave.domain.enums.MessstelleStatus;
import de.muenchen.dave.domain.enums.Stadtbezirk;
import de.muenchen.dave.util.SuchwortUtil;
import java.util.ArrayList;
import java.util.List;
Expand All @@ -22,13 +24,13 @@
@Mapper(componentModel = "spring")
public interface MessstelleMapper {

ReadMessstelleDTO bean2readDto(Messstelle bean);
ReadMessstelleInfoDTO bean2readDto(Messstelle bean);

@AfterMapping
default void bean2readDtoAfterMapping(@MappingTarget ReadMessstelleDTO dto, Messstelle bean) {
default void bean2readDtoAfterMapping(@MappingTarget ReadMessstelleInfoDTO dto, Messstelle bean) {
dto.setLatitude(bean.getPunkt().getLat());
dto.setLongitude(bean.getPunkt().getLon());
dto.setTooltip(SucheMapper.createMessstelleTooltip(bean));
dto.setStadtbezirk(Stadtbezirk.bezeichnungOf(bean.getStadtbezirkNummer()));
}

EditMessstelleDTO bean2editDto(Messstelle bean);
Expand All @@ -37,6 +39,7 @@ default void bean2readDtoAfterMapping(@MappingTarget ReadMessstelleDTO dto, Mess
default void bean2editDtoAfterMapping(@MappingTarget EditMessstelleDTO dto, Messstelle bean) {
dto.setLatitude(bean.getPunkt().getLat());
dto.setLongitude(bean.getPunkt().getLon());
dto.setStadtbezirk(Stadtbezirk.bezeichnungOf(bean.getStadtbezirkNummer()));
}

@Mapping(target = "id", ignore = true)
Expand All @@ -53,8 +56,15 @@ default void bean2editDtoAfterMapping(@MappingTarget EditMessstelleDTO dto, Mess
@Mapping(target = "messquerschnitte", ignore = true)
Messstelle updateMessstelle(@MappingTarget Messstelle actual, EditMessstelleDTO dto);

default void updateMessquerschnitt(Messquerschnitt actual, EditMessquerschnittDTO dto) {
actual.setStandort(dto.getStandort());
}

@AfterMapping
default void updateMessstelleAfterMapping(@MappingTarget Messstelle actual, EditMessstelleDTO dto) {
if (!MessstelleStatus.IN_PLANUNG.equals(actual.getStatus())) {
actual.setGeprueft(true);
}
// Suchworte setzen
final Set<String> generatedSuchwoerter = SuchwortUtil.generateSuchworteOfMessstelle(actual);

Expand All @@ -66,6 +76,12 @@ default void updateMessstelleAfterMapping(@MappingTarget Messstelle actual, Edit
if (CollectionUtils.isNotEmpty(dto.getCustomSuchwoerter())) {
actual.getSuchwoerter().addAll(dto.getCustomSuchwoerter());
}

actual.getMessquerschnitte().forEach(messquerschnitt -> dto.getMessquerschnitte().forEach(dto1 -> {
if (dto1.getId().equalsIgnoreCase(messquerschnitt.getId())) {
updateMessquerschnitt(messquerschnitt, dto1);
}
}));
}

ReadMessquerschnittDTO bean2readDto(Messquerschnitt bean);
Expand Down Expand Up @@ -95,4 +111,8 @@ default void toSucheMessstelleSuggestDto(@MappingTarget SucheMessstelleSuggestDT
dto.setText(bean.getMstId() + StringUtils.SPACE + bean.getName());
}

MessstelleOverviewDTO bean2overviewDto(Messstelle bean);

List<MessstelleOverviewDTO> bean2overviewDto(List<Messstelle> bean);

}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.UUID;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.mapstruct.AfterMapping;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
Expand All @@ -18,23 +20,18 @@
@Mapper(componentModel = "spring")
public interface MessstelleReceiverMapper {

Messstelle dtoToMessstelle(MessstelleDto dto);
Messstelle createMessstelle(MessstelleDto dto);

Messquerschnitt dtoToMessquerschnitt(MessquerschnittDto dto);
Messquerschnitt createMessquerschnitt(MessquerschnittDto dto);

List<Messquerschnitt> dtoToMessquerschnitt(List<MessquerschnittDto> dto);

@Mapping(target = "id", ignore = true)
@Mapping(target = "sichtbarDatenportal", ignore = true)
@Mapping(target = "kommentar", ignore = true)
@Mapping(target = "standort", ignore = true)
@Mapping(target = "customSuchwoerter", ignore = true)
@Mapping(target = "suchwoerter", ignore = true)
@Mapping(target = "geprueft", ignore = true)
Messstelle updateMessstelle(@MappingTarget Messstelle existing, MessstelleDto dto);
List<Messquerschnitt> createMessquerschnitte(List<MessquerschnittDto> dto);

@AfterMapping
default void dtoToMessstelleAfterMapping(@MappingTarget Messstelle bean, MessstelleDto dto) {
default void createMessstelleAfterMapping(@MappingTarget Messstelle bean, MessstelleDto dto) {
if (StringUtils.isEmpty(bean.getId())) {
bean.setId(UUID.randomUUID().toString());
}

if (dto.getXcoordinate() != null && dto.getYcoordinate() != null) {
bean.setPunkt(new GeoPoint(dto.getXcoordinate(), dto.getYcoordinate()));
}
Expand All @@ -57,9 +54,27 @@ default void dtoToMessstelleAfterMapping(@MappingTarget Messstelle bean, Messste
}

@AfterMapping
default void dtoToMessstelleAfterMapping(@MappingTarget Messquerschnitt bean, MessquerschnittDto dto) {
default void createMessquerschnittAfterMapping(@MappingTarget Messquerschnitt bean, MessquerschnittDto dto) {
if (StringUtils.isEmpty(bean.getId())) {
bean.setId(UUID.randomUUID().toString());
}
if (dto.getXcoordinate() != null && dto.getYcoordinate() != null) {
bean.setPunkt(new GeoPoint(dto.getXcoordinate(), dto.getYcoordinate()));
}
}

@Mapping(target = "id", ignore = true)
@Mapping(target = "sichtbarDatenportal", ignore = true)
@Mapping(target = "kommentar", ignore = true)
@Mapping(target = "standort", ignore = true)
@Mapping(target = "customSuchwoerter", ignore = true)
@Mapping(target = "suchwoerter", ignore = true)
@Mapping(target = "geprueft", ignore = true)
@Mapping(target = "messquerschnitte", ignore = true)
Messstelle updateMessstelle(@MappingTarget Messstelle existing, MessstelleDto dto);

@Mapping(target = "id", ignore = true)
@Mapping(target = "standort", ignore = true)
Messquerschnitt updateMessquerschnitt(@MappingTarget Messquerschnitt existing, MessquerschnittDto dto);

}
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,49 @@ public class MessstelleDto {
public static final String JSON_PROPERTY_NAME = "name";
private String name;

/**
* Gets or Sets status
*/
public enum StatusEnum {
IN_PLANUNG("IN_PLANUNG"),

IN_BESTAND("IN_BESTAND"),

AUSSER_BETRIEB("AUSSER_BETRIEB"),

ABGEBAUT("ABGEBAUT"),

UNBEKANNT("UNBEKANNT");

private String value;

StatusEnum(String value) {
this.value = value;
}

@JsonValue
public String getValue() {
return value;
}

@Override
public String toString() {
return String.valueOf(value);
}

@JsonCreator
public static StatusEnum fromValue(String value) {
for (StatusEnum b : StatusEnum.values()) {
if (b.value.equals(value)) {
return b;
}
}
throw new IllegalArgumentException("Unexpected value '" + value + "'");
}
}

public static final String JSON_PROPERTY_STATUS = "status";
private String status;
private StatusEnum status;

public static final String JSON_PROPERTY_REALISIERUNGSDATUM = "realisierungsdatum";
private LocalDate realisierungsdatum;
Expand Down Expand Up @@ -134,7 +175,7 @@ public void setName(String name) {
}


public MessstelleDto status(String status) {
public MessstelleDto status(StatusEnum status) {

this.status = status;
return this;
Expand All @@ -148,14 +189,14 @@ public MessstelleDto status(String status) {
@JsonProperty(JSON_PROPERTY_STATUS)
@JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

public String getStatus() {
public StatusEnum getStatus() {
return status;
}


@JsonProperty(JSON_PROPERTY_STATUS)
@JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
public void setStatus(String status) {
public void setStatus(StatusEnum status) {
this.status = status;
}

Expand Down
Loading

0 comments on commit f11ee67

Please sign in to comment.