From 9e2cc2f65753397581f1a36487a1d37c2e664a0e Mon Sep 17 00:00:00 2001 From: Terekhin Alexandr Date: Sat, 23 Dec 2023 16:37:53 +0300 Subject: [PATCH] feat: Allow not changed password --- .../com/yablochkov/ocppstub/EventHandler.java | 8 +++++++- .../com/yablochkov/ocppstub/SessionService.java | 3 ++- .../yablochkov/ocppstub/TransactionService.java | 15 +++++++++++---- .../ocppstub/rest/ResetController.java | 16 +++++++--------- 4 files changed, 27 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/yablochkov/ocppstub/EventHandler.java b/src/main/java/com/yablochkov/ocppstub/EventHandler.java index 0212eea..40d0b3b 100644 --- a/src/main/java/com/yablochkov/ocppstub/EventHandler.java +++ b/src/main/java/com/yablochkov/ocppstub/EventHandler.java @@ -7,6 +7,7 @@ import eu.chargetime.ocpp.feature.profile.ServerCoreEventHandler; import eu.chargetime.ocpp.model.SessionInformation; import eu.chargetime.ocpp.model.core.*; import java.time.ZonedDateTime; +import java.util.Optional; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -76,7 +77,12 @@ public class EventHandler implements ServerCoreEventHandler, ServerEvents { public StopTransactionConfirmation handleStopTransactionRequest(UUID sessionIndex, StopTransactionRequest request) { log.info("Stop transaction request {}", request); transactionService.stopByRequest(sessionIndex, request.getTransactionId()); - return new StopTransactionConfirmation(); + + var confirmation = new StopTransactionConfirmation(); + Optional.ofNullable(request.getIdTag()) + .ifPresent((idTag) -> confirmation.setIdTagInfo(new IdTagInfo(AuthorizationStatus.Expired))); + log.info("Stop transaction {}, with idTag {} for session {}", request.getTransactionId(), request.getIdTag(), sessionIndex); + return confirmation; } @Override diff --git a/src/main/java/com/yablochkov/ocppstub/SessionService.java b/src/main/java/com/yablochkov/ocppstub/SessionService.java index 63c16ec..a0c9ee9 100644 --- a/src/main/java/com/yablochkov/ocppstub/SessionService.java +++ b/src/main/java/com/yablochkov/ocppstub/SessionService.java @@ -54,7 +54,8 @@ public class SessionService { .filter((entry) -> { var entryValue = entry.getValue(); if (Objects.nonNull(entryValue)) { - return Objects.equals(entryValue.getIdentifier(), identity); + return Objects.equals(entryValue.getIdentifier(), identity) || + Objects.equals(entryValue.getIdentifier(),"/" + identity); } return false; }) diff --git a/src/main/java/com/yablochkov/ocppstub/TransactionService.java b/src/main/java/com/yablochkov/ocppstub/TransactionService.java index 62d84ee..07904e0 100644 --- a/src/main/java/com/yablochkov/ocppstub/TransactionService.java +++ b/src/main/java/com/yablochkov/ocppstub/TransactionService.java @@ -60,19 +60,26 @@ public class TransactionService { } } - public RemoteStartTransactionConfirmation remoteStart(String id) { + public RemoteStartTransactionConfirmation remoteStart(String id, Integer connectorId) { log.info("Try to start transaction for {}", id); var session = sessionService.getSessionByIdentity(id); log.info("Found session {}", session); if (Objects.nonNull(session)) { try { - var future = ocppStub.send(session, - new RemoteStartTransactionRequest(UUID.randomUUID().toString())); + //20 char limit + String idTag = String.format("%f.0", Math.random() * 1_000_000); + + var request = new RemoteStartTransactionRequest(idTag); + if (Objects.nonNull(connectorId)) { + request.setConnectorId(connectorId); + } + + var future = ocppStub.send(session, request); Confirmation confirmation = future.toCompletableFuture().get(); if (confirmation instanceof RemoteStartTransactionConfirmation startConfirmation) { - RemoteStartStopStatus status = startConfirmation.getStatus(); + var status = startConfirmation.getStatus(); log.info("Start transaction status {}", status); if (RemoteStartStopStatus.Accepted.equals(status)) { transactionMap.remove(id); diff --git a/src/main/java/com/yablochkov/ocppstub/rest/ResetController.java b/src/main/java/com/yablochkov/ocppstub/rest/ResetController.java index aeabb35..408cbb3 100644 --- a/src/main/java/com/yablochkov/ocppstub/rest/ResetController.java +++ b/src/main/java/com/yablochkov/ocppstub/rest/ResetController.java @@ -15,8 +15,6 @@ import eu.chargetime.ocpp.model.core.RemoteStopTransactionConfirmation; import eu.chargetime.ocpp.model.core.ResetConfirmation; import eu.chargetime.ocpp.model.core.ResetRequest; import java.util.Map; -import java.util.Map.Entry; -import java.util.Objects; import java.util.UUID; import java.util.concurrent.ExecutionException; import lombok.extern.slf4j.Slf4j; @@ -51,12 +49,7 @@ public class ResetController { @PathVariable("identity") final String identity, @RequestBody final ResetRequest request) { // TODO REFACTOR THIS log.info("Send reset to {}, parameters {}", identity, request); - var session = sessionService.getCache() - .entrySet().stream() - .filter((entry) -> Objects.equals(entry.getValue().getIdentifier(), identity)) - .map(Entry::getKey) - .findFirst() - .orElseThrow(); + var session = sessionService.getSessionByIdentity(identity); try { var stage = ocppStub.send(session, request); @@ -76,7 +69,12 @@ public class ResetController { @PostMapping("/start/{identity}") public RemoteStartTransactionConfirmation startTransaction(@PathVariable("identity") final String identity) { - return transactionService.remoteStart(identity); + return transactionService.remoteStart(identity, null); + } + + @PostMapping("/start/{identity}/{connectorId}") + public RemoteStartTransactionConfirmation startTransactionOnConnector(@PathVariable("identity") final String identity, @PathVariable("connectorId") final Integer connectorId) { + return transactionService.remoteStart(identity, connectorId); } @DeleteMapping("/stop/{identity}")