error handling for existing meteringpoints
This commit is contained in:
parent
8b57f97d88
commit
7d485f4079
@ -1,3 +1,5 @@
|
||||
package at.mueller.eeg.backend.common.event;
|
||||
|
||||
public record InitiateMakoConsentEvent(String atNumber, String pointType) {}
|
||||
import java.util.UUID;
|
||||
|
||||
public record InitiateMakoConsentEvent(UUID userId, UUID meteringPointId, String atNumber, String pointType) {}
|
||||
@ -0,0 +1,7 @@
|
||||
package at.mueller.eeg.backend.common.exception;
|
||||
|
||||
public class AtNumberAlreadyExistsException extends RuntimeException{
|
||||
public AtNumberAlreadyExistsException(String message) {
|
||||
super(message);
|
||||
}
|
||||
}
|
||||
@ -30,4 +30,11 @@ public class GlobalExceptionHandler {
|
||||
.status(HttpStatus.INTERNAL_SERVER_ERROR)
|
||||
.body(new ErrorResponse("Ein unerwarteter Fehler ist aufgetreten: " + ex.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR.value()));
|
||||
}
|
||||
|
||||
@ExceptionHandler(AtNumberAlreadyExistsException.class)
|
||||
public ResponseEntity<ErrorResponse> handleAtNumberAlreadyExists(AtNumberAlreadyExistsException ex) {
|
||||
return ResponseEntity
|
||||
.status(HttpStatus.CONFLICT)
|
||||
.body(new ErrorResponse("Zählerpunkt existiert bereits", HttpStatus.CONFLICT.value()));
|
||||
}
|
||||
}
|
||||
@ -46,6 +46,8 @@ public class CommunityMakoListener {
|
||||
|
||||
log.info("Delegiere Consent-Request für {} an MaKo-Domain via Event.", mp.getAtNumber());
|
||||
eventPublisher.publishEvent(new InitiateMakoConsentEvent(
|
||||
mp.getUserId(),
|
||||
mp.getId(),
|
||||
mp.getAtNumber(),
|
||||
mp.getType().name()
|
||||
));
|
||||
|
||||
@ -1,9 +1,10 @@
|
||||
package at.mueller.eeg.backend.community.event.listener;
|
||||
|
||||
import at.mueller.eeg.backend.common.event.EdaTopologyCheckEvent;
|
||||
import at.mueller.eeg.backend.common.event.EdaTopologyCompletedEvent;
|
||||
import at.mueller.eeg.backend.common.event.EdaTopologyFailedEvent;
|
||||
import at.mueller.eeg.backend.common.event.InitiateMakoConsentEvent;
|
||||
import at.mueller.eeg.backend.common.event.UserRegisteredEvent;
|
||||
import at.mueller.eeg.backend.common.exception.AtNumberAlreadyExistsException;
|
||||
import at.mueller.eeg.backend.community.domain.MeteringPoint;
|
||||
import at.mueller.eeg.backend.community.domain.PointType;
|
||||
import at.mueller.eeg.backend.community.domain.state.MakoTrigger;
|
||||
@ -26,16 +27,20 @@ public class MeteringPointEventListener {
|
||||
private final MeteringPointRepository meteringPointRepository;
|
||||
private final ApplicationEventPublisher eventPublisher;
|
||||
|
||||
@TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT)
|
||||
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
||||
@TransactionalEventListener(phase = TransactionPhase.BEFORE_COMMIT)
|
||||
@Transactional(propagation = Propagation.REQUIRED)
|
||||
public void handleUserRegistered(UserRegisteredEvent event) {
|
||||
if (meteringPointRepository.existsByAtNumber(event.atNumber())) {
|
||||
throw new AtNumberAlreadyExistsException(event.atNumber());
|
||||
}
|
||||
MeteringPoint point = new MeteringPoint();
|
||||
point.setUserId(event.userId());
|
||||
point.setAtNumber(event.atNumber());
|
||||
//TODO: PointType muss auswählbar sein
|
||||
point.setType(PointType.CONSUMER);
|
||||
|
||||
meteringPointRepository.save(point);
|
||||
eventPublisher.publishEvent(new EdaTopologyCheckEvent(event.userId(), point.getId(), event.atNumber()));
|
||||
eventPublisher.publishEvent(new InitiateMakoConsentEvent(event.userId(), point.getId(), event.atNumber(), point.getType().name()));
|
||||
}
|
||||
|
||||
@EventListener
|
||||
|
||||
@ -9,4 +9,6 @@ import java.util.UUID;
|
||||
public interface MeteringPointRepository extends JpaRepository<MeteringPoint, UUID> {
|
||||
|
||||
List<MeteringPoint> findAllByUserId(UUID userId);
|
||||
|
||||
boolean existsByAtNumber(String atNumber);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user