diff --git a/src/main/java/de/rwth/idsg/steve/ocpp/task/SetChargingProfileTask.java b/src/main/java/de/rwth/idsg/steve/ocpp/task/SetChargingProfileTask.java index 65a737dd4..2320b10fe 100644 --- a/src/main/java/de/rwth/idsg/steve/ocpp/task/SetChargingProfileTask.java +++ b/src/main/java/de/rwth/idsg/steve/ocpp/task/SetChargingProfileTask.java @@ -18,8 +18,11 @@ */ package de.rwth.idsg.steve.ocpp.task; +import de.rwth.idsg.steve.SteveException; import de.rwth.idsg.steve.ocpp.Ocpp16AndAboveTask; import de.rwth.idsg.steve.web.dto.ocpp.SetChargingProfileParams; +import ocpp.cp._2015._10.ChargingProfilePurposeType; +import ocpp.cp._2015._10.SetChargingProfileRequest; /** * @author Sevket Goekay @@ -30,4 +33,21 @@ public abstract class SetChargingProfileTask extends Ocpp16AndAboveTask 0"); + } + } } diff --git a/src/main/java/de/rwth/idsg/steve/ocpp/task/SetChargingProfileTaskAdhoc.java b/src/main/java/de/rwth/idsg/steve/ocpp/task/SetChargingProfileTaskAdhoc.java index 2321e57b7..b93a723a4 100644 --- a/src/main/java/de/rwth/idsg/steve/ocpp/task/SetChargingProfileTaskAdhoc.java +++ b/src/main/java/de/rwth/idsg/steve/ocpp/task/SetChargingProfileTaskAdhoc.java @@ -36,6 +36,7 @@ public SetChargingProfileTaskAdhoc(SetChargingProfileParams params, SetChargingProfileRequest request) { super(params); this.request = request; + checkAdditionalConstraints(request); } @Override diff --git a/src/main/java/de/rwth/idsg/steve/ocpp/task/SetChargingProfileTaskFromDB.java b/src/main/java/de/rwth/idsg/steve/ocpp/task/SetChargingProfileTaskFromDB.java index e35024a71..b5d1a8182 100644 --- a/src/main/java/de/rwth/idsg/steve/ocpp/task/SetChargingProfileTaskFromDB.java +++ b/src/main/java/de/rwth/idsg/steve/ocpp/task/SetChargingProfileTaskFromDB.java @@ -102,9 +102,13 @@ public SetChargingProfileRequest getOcpp16Request() { .withValidTo(profile.getValidTo()) .withChargingSchedule(schedule); - return new SetChargingProfileRequest() + var request = new SetChargingProfileRequest() .withConnectorId(params.getConnectorId()) .withCsChargingProfiles(ocppProfile); + + checkAdditionalConstraints(request); + + return request; } @Override diff --git a/src/main/java/de/rwth/idsg/steve/service/ChargePointServiceClient.java b/src/main/java/de/rwth/idsg/steve/service/ChargePointServiceClient.java index 24575c2da..561f1c8df 100644 --- a/src/main/java/de/rwth/idsg/steve/service/ChargePointServiceClient.java +++ b/src/main/java/de/rwth/idsg/steve/service/ChargePointServiceClient.java @@ -18,7 +18,6 @@ */ package de.rwth.idsg.steve.service; -import de.rwth.idsg.steve.SteveException; import de.rwth.idsg.steve.config.DelegatingTaskExecutor; import de.rwth.idsg.steve.ocpp.ChargePointServiceInvokerImpl; import de.rwth.idsg.steve.ocpp.OcppCallback; @@ -402,8 +401,6 @@ public final int setChargingProfile(SetChargingProfileParams params, OcppCallback... callbacks) { ChargingProfile.Details details = chargingProfileRepository.getDetails(params.getChargingProfilePk()); - checkAdditionalConstraints(params, details); - SetChargingProfileTaskFromDB task = new SetChargingProfileTaskFromDB(params, details, chargingProfileRepository); return setChargingProfile(task, callbacks); @@ -441,22 +438,4 @@ public final int getCompositeSchedule(GetCompositeScheduleParams params, return taskStore.add(task); } - /** - * Do some additional checks defined by OCPP spec, which cannot be captured with javax.validation - */ - private static void checkAdditionalConstraints(SetChargingProfileParams params, ChargingProfile.Details details) { - ChargingProfilePurposeType purpose = ChargingProfilePurposeType.fromValue(details.getProfile().getChargingProfilePurpose()); - - if (ChargingProfilePurposeType.CHARGE_POINT_MAX_PROFILE == purpose - && params.getConnectorId() != null - && params.getConnectorId() != 0) { - throw new SteveException("ChargePointMaxProfile can only be set at Charge Point ConnectorId 0"); - } - - if (ChargingProfilePurposeType.TX_PROFILE == purpose - && params.getConnectorId() != null - && params.getConnectorId() < 1) { - throw new SteveException("TxProfile should only be set at Charge Point ConnectorId > 0"); - } - } }