Skip to content

Commit 27db904

Browse files
refactor
1 parent 724f620 commit 27db904

File tree

5 files changed

+84
-73
lines changed

5 files changed

+84
-73
lines changed

src/main/java/de/rwth/idsg/steve/ocpp/task/RemoteStartTransactionTask.java

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,9 @@
88

99
import javax.xml.ws.AsyncHandler;
1010
import java.math.RoundingMode;
11-
import java.util.ArrayList;
12-
import java.util.List;
1311

1412
import static de.rwth.idsg.steve.utils.DateTimeUtils.toDateTime;
13+
import static de.rwth.idsg.steve.utils.CspUtils.setCsp;
1514

1615
/**
1716
* @author Sevket Goekay <goekay@dbis.rwth-aachen.de>
@@ -50,15 +49,6 @@ public ocpp.cp._2015._10.RemoteStartTransactionRequest getOcpp16Request() {
5049
.withIdTag(params.getIdTag())
5150
.withConnectorId(params.getConnectorId());
5251
} else {
53-
List<ChargingSchedulePeriod> cspList = new ArrayList<>();
54-
55-
for (int i = 0; i < params.getStartPeriod().length; i++) {
56-
cspList.add(new ChargingSchedulePeriod()
57-
.withStartPeriod(params.getStartPeriod()[i])
58-
.withLimit(params.getLimit()[i].setScale(1, RoundingMode.HALF_UP))
59-
.withNumberPhases(params.getNumberPhases().get(i)));
60-
}
61-
6252
return new ocpp.cp._2015._10.RemoteStartTransactionRequest()
6353
.withIdTag(params.getIdTag())
6454
.withConnectorId(params.getConnectorId())
@@ -74,7 +64,7 @@ public ocpp.cp._2015._10.RemoteStartTransactionRequest getOcpp16Request() {
7464
.withDuration(params.getDuration())
7565
.withStartSchedule(toDateTime(params.getStartSchedule()))
7666
.withChargingRateUnit(ChargingRateUnitType.fromValue(params.getChargingRateUnit().value()))
77-
.withChargingSchedulePeriod(cspList)
67+
.withChargingSchedulePeriod(setCsp(params.getStartPeriod(), params.getLimit(), params.getNumberPhases()))
7868
.withMinChargingRate(params.getMinChargingRate() != null ? params.getMinChargingRate().setScale(1, RoundingMode.HALF_UP) : null)));
7969
}
8070
}

src/main/java/de/rwth/idsg/steve/ocpp/task/SetChargingProfileTask.java

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66

77
import javax.xml.ws.AsyncHandler;
88
import java.math.RoundingMode;
9-
import java.util.*;
109

1110
import static de.rwth.idsg.steve.utils.DateTimeUtils.toDateTime;
11+
import static de.rwth.idsg.steve.utils.CspUtils.setCsp;
1212

1313
/**
1414
* @author Sevket Goekay <goekay@dbis.rwth-aachen.de>
@@ -41,15 +41,6 @@ public <T extends RequestType> T getOcpp15Request() {
4141
@Deprecated
4242
@Override
4343
public ocpp.cp._2015._10.SetChargingProfileRequest getOcpp16Request() {
44-
List<ChargingSchedulePeriod> cspList = new ArrayList<>();
45-
46-
for (int i = 0; i < params.getStartPeriod().length; i++) {
47-
cspList.add(new ChargingSchedulePeriod()
48-
.withStartPeriod(params.getStartPeriod()[i])
49-
.withLimit(params.getLimit()[i].setScale(1, RoundingMode.HALF_UP))
50-
.withNumberPhases(params.getNumberPhases().get(i)));
51-
}
52-
5344
return new ocpp.cp._2015._10.SetChargingProfileRequest()
5445
.withConnectorId(params.getConnectorId())
5546
.withCsChargingProfiles(new ChargingProfile()
@@ -65,9 +56,8 @@ public ocpp.cp._2015._10.SetChargingProfileRequest getOcpp16Request() {
6556
.withDuration(params.getDuration())
6657
.withStartSchedule(toDateTime(params.getStartSchedule()))
6758
.withChargingRateUnit(ChargingRateUnitType.fromValue(params.getChargingRateUnit().value()))
68-
.withChargingSchedulePeriod(cspList)
69-
.withMinChargingRate(params.getMinChargingRate() != null ? params.getMinChargingRate().setScale(1, RoundingMode.HALF_UP) : null)));
70-
59+
.withChargingSchedulePeriod(setCsp(params.getStartPeriod(), params.getLimit(), params.getNumberPhases()))
60+
.withMinChargingRate(params.getMinChargingRate() != null ? params.getMinChargingRate().setScale(1, RoundingMode.HALF_UP) : null)));
7161
}
7262

7363
@Deprecated
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
package de.rwth.idsg.steve.utils;
2+
3+
import ocpp.cp._2015._10.ChargingSchedulePeriod;
4+
5+
import java.math.BigDecimal;
6+
import java.math.RoundingMode;
7+
import java.util.ArrayList;
8+
import java.util.List;
9+
10+
/**
11+
* @author David Rerimassie <david@rerimassie.nl>
12+
* @since 19.04.2018
13+
*/
14+
15+
// Charging Schedule Period Utils
16+
public final class CspUtils {
17+
private CspUtils() { }
18+
19+
public static List<ChargingSchedulePeriod> setCsp(Integer[] startPeriod, BigDecimal[] limit, List<Integer> numberPhases) {
20+
List<ChargingSchedulePeriod> cspList = new ArrayList<>();
21+
22+
for (int i = 0; i < startPeriod.length; i++) {
23+
cspList.add(new ChargingSchedulePeriod()
24+
.withStartPeriod(startPeriod[i])
25+
.withLimit(limit[i].setScale(1, RoundingMode.HALF_UP))
26+
.withNumberPhases(numberPhases.get(i)));
27+
}
28+
return cspList;
29+
}
30+
31+
// startPeriods cannot be greater than the previous ones,
32+
// and can only have a maximum of 86399 (= 23:59:59)
33+
public static boolean checkStartPeriod(Integer[] startPeriod) {
34+
Integer last = -1;
35+
for (Integer current : startPeriod) {
36+
if (startPeriod != null) {
37+
if (last >= current) {
38+
startPeriod = null;
39+
}
40+
}
41+
if (current > 86399) {
42+
startPeriod = null;
43+
}
44+
last = current;
45+
}
46+
//true = good, false = not good
47+
return startPeriod != null;
48+
}
49+
50+
public static List<Integer> setNumberPhases(Integer[] startPeriod, BigDecimal[] limit, List<Integer> numberPhases) {
51+
if ((numberPhases == null || numberPhases.size() == 0) && (startPeriod.length == limit.length)) {
52+
for (int i = 0; i < startPeriod.length; i++) {
53+
numberPhases.add(3);
54+
}
55+
} else if ((numberPhases.size() == startPeriod.length) && (startPeriod.length == limit.length)) {
56+
numberPhases = numberPhases;
57+
} else if ((numberPhases.size() < startPeriod.length) && (startPeriod.length == limit.length)) {
58+
for (int i = numberPhases.size(); i < startPeriod.length; i++) {
59+
numberPhases.add(3);
60+
}
61+
} else {
62+
//Dirty work around to give an error message that csp values do not have an equivalent amount of values
63+
numberPhases.add(3);
64+
}
65+
return numberPhases;
66+
}
67+
}

src/main/java/de/rwth/idsg/steve/web/dto/ocpp/RemoteStartTransactionParams.java

Lines changed: 6 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package de.rwth.idsg.steve.web.dto.ocpp;
22

3+
import de.rwth.idsg.steve.utils.CspUtils;
34
import de.rwth.idsg.steve.web.validation.IdTag;
45
import lombok.Getter;
56
import lombok.Setter;
@@ -74,32 +75,11 @@ public void setUseChargingProfile(Boolean useChargingProfile) {
7475
this.useChargingProfile = null;
7576
} else {
7677
startPeriod[0] = 0;
77-
Integer last = -1;
78-
for (Integer current : startPeriod) {
79-
if (startPeriod != null) {
80-
if (last >= current) {
81-
this.useChargingProfile = null;
82-
}
83-
}
84-
if (current > 86399) {
85-
this.useChargingProfile = null;
86-
}
87-
last = current;
88-
}
89-
if (startPeriod != null) {
90-
if ((numberPhases == null || numberPhases.size() == 0) && (startPeriod.length == limit.length)) {
91-
for (int i = 0; i < startPeriod.length; i++) {
92-
numberPhases.add(3);
93-
}
94-
this.useChargingProfile = useChargingProfile;
95-
} else if ((numberPhases != null || numberPhases.size() != 0) && (startPeriod.length == limit.length) && (startPeriod.length == numberPhases.size())) {
96-
this.useChargingProfile = useChargingProfile;
97-
} else {
98-
this.useChargingProfile = null;
99-
}
100-
} else {
101-
this.useChargingProfile = null;
102-
}
78+
this.useChargingProfile = useChargingProfile = CspUtils.checkStartPeriod(startPeriod) ? useChargingProfile : null;
79+
80+
this.useChargingProfile = (numberPhases = CspUtils.setNumberPhases(startPeriod, limit, numberPhases)).size() ==
81+
startPeriod.length ? useChargingProfile : null;
82+
10383
}
10484
}
10585
}

src/main/java/de/rwth/idsg/steve/web/dto/ocpp/SetChargingProfileParams.java

Lines changed: 6 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package de.rwth.idsg.steve.web.dto.ocpp;
22

3+
import de.rwth.idsg.steve.utils.CspUtils;
34
import lombok.Getter;
45
import lombok.Setter;
56
import ocpp.cp._2015._10.ChargingProfile;
@@ -66,29 +67,12 @@ public void setConnectorId(Integer connectorId) {
6667

6768
public void setStartPeriod(Integer[] startPeriod) {
6869
startPeriod[0] = 0;
69-
Integer last = -1;
70-
for (Integer current : startPeriod) {
71-
if (startPeriod != null) {
72-
if (last >= current) {
73-
this.startPeriod = startPeriod = null;
74-
}
75-
}
76-
if (current > 86399) {
77-
this.startPeriod = startPeriod = null;
78-
}
79-
last = current;
80-
}
70+
71+
this.startPeriod = startPeriod = CspUtils.checkStartPeriod(startPeriod) ? startPeriod : null;
72+
8173
if (startPeriod != null) {
82-
if ((numberPhases == null || numberPhases.size() == 0) && (startPeriod.length == limit.length)) {
83-
for (int i = 0; i < startPeriod.length; i++) {
84-
numberPhases.add(3);
85-
}
86-
this.startPeriod = startPeriod;
87-
} else if ((numberPhases != null || numberPhases.size() != 0) && (startPeriod.length == limit.length) && (startPeriod.length == numberPhases.size())) {
88-
this.startPeriod = startPeriod;
89-
} else {
90-
this.startPeriod = null;
91-
}
74+
this.startPeriod = (numberPhases = CspUtils.setNumberPhases(startPeriod, limit, numberPhases)).size() ==
75+
startPeriod.length ? startPeriod : null;
9276
} else {
9377
this.startPeriod = null;
9478
}

0 commit comments

Comments
 (0)