Skip to content

Commit b749345

Browse files
fix
1 parent 919d442 commit b749345

File tree

2 files changed

+37
-25
lines changed

2 files changed

+37
-25
lines changed

src/main/java/edu/ie3/datamodel/utils/validation/SystemParticipantValidationUtils.java

Lines changed: 31 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,13 @@
1313
import edu.ie3.datamodel.models.input.UniqueInputEntity;
1414
import edu.ie3.datamodel.models.input.system.*;
1515
import edu.ie3.datamodel.models.input.system.type.*;
16+
import edu.ie3.datamodel.models.profile.BdewStandardLoadProfile;
1617
import edu.ie3.datamodel.models.profile.LoadProfile;
18+
import edu.ie3.datamodel.models.profile.NbwTemperatureDependantLoadProfile;
1719
import edu.ie3.datamodel.utils.Try;
1820
import edu.ie3.datamodel.utils.Try.Failure;
1921
import java.util.ArrayList;
22+
import java.util.Arrays;
2023
import java.util.List;
2124
import javax.measure.Quantity;
2225
import javax.measure.quantity.Dimensionless;
@@ -378,28 +381,36 @@ private static List<Try<Void, InvalidEntityException>> checkLoad(LoadInput loadI
378381
new InvalidEntityException(
379382
"No standard load profile defined for load", loadInput)));
380383

381-
String regexPattern = "^(h0|g[0-6]|l[0-2]|ep1|ez2)$";
382-
LoadProfile profile = loadInput.getLoadProfile();
384+
if (loadInput.getLoadProfile() != null) {
385+
LoadProfile profile = loadInput.getLoadProfile();
383386

384-
exceptions.add(
385-
Try.ofVoid(
386-
profile.equals(LoadProfile.DefaultLoadProfiles.NO_LOAD_PROFILE)
387-
|| profile.equals(LoadProfile.RandomLoadProfile.RANDOM_LOAD_PROFILE)
388-
|| !profile.toString().matches(regexPattern),
389-
() ->
390-
new InvalidEntityException(
391-
"Load profile must contain at least one valid entry: h0, g[0-6], l[0-3], ep1, ez2 or NO_LOAD_PROFILE",
392-
loadInput)));
393-
394-
exceptions.addAll(
395-
Try.ofVoid(
396-
InvalidEntityException.class,
397-
() ->
398-
detectNegativeQuantities(
399-
new Quantity<?>[] {loadInput.getsRated(), loadInput.geteConsAnnual()},
400-
loadInput),
401-
() -> checkRatedPowerFactor(loadInput, loadInput.getCosPhiRated())));
387+
// Validate if the profile is one of the allowed profiles
388+
exceptions.add(
389+
Try.ofVoid(
390+
!(profile.equals(LoadProfile.DefaultLoadProfiles.NO_LOAD_PROFILE)
391+
|| profile.equals(LoadProfile.RandomLoadProfile.RANDOM_LOAD_PROFILE)
392+
|| Arrays.asList(
393+
BdewStandardLoadProfile.H0,
394+
BdewStandardLoadProfile.G0,
395+
BdewStandardLoadProfile.G1,
396+
BdewStandardLoadProfile.G2,
397+
BdewStandardLoadProfile.G3,
398+
BdewStandardLoadProfile.G4,
399+
BdewStandardLoadProfile.G5,
400+
BdewStandardLoadProfile.G6,
401+
BdewStandardLoadProfile.L0,
402+
BdewStandardLoadProfile.L1,
403+
BdewStandardLoadProfile.L2,
404+
NbwTemperatureDependantLoadProfile.EP1,
405+
NbwTemperatureDependantLoadProfile.EZ2)
406+
.contains(profile)),
407+
() ->
408+
new InvalidEntityException(
409+
"Load profile must contain at least one valid entry: h0, g[0-6], l[0-2], ep1, ez2, random, or LoadProfile#NO_LOAD_PROFILE.",
410+
loadInput)));
411+
}
402412

413+
// Check negative quantities and power factor
403414
exceptions.addAll(
404415
Try.ofVoid(
405416
InvalidEntityException.class,

src/test/groovy/edu/ie3/datamodel/utils/validation/SystemParticipantValidationUtilsTest.groovy

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import edu.ie3.datamodel.exceptions.InvalidEntityException
1414
import edu.ie3.datamodel.models.input.system.characteristic.WecCharacteristicInput
1515
import edu.ie3.datamodel.models.input.system.type.*
1616
import edu.ie3.datamodel.models.input.system.type.chargingpoint.ChargingPointType
17+
import edu.ie3.datamodel.models.profile.BdewStandardLoadProfile
1718
import edu.ie3.datamodel.models.profile.StandardLoadProfile
1819
import edu.ie3.datamodel.utils.Try
1920
import edu.ie3.test.common.SystemParticipantTestData
@@ -337,10 +338,10 @@ class SystemParticipantValidationUtilsTest extends Specification {
337338
SystemParticipantTestData.loadInput.copy().loadprofile(null).build() || 1 || new InvalidEntityException("No standard load profile defined for load", invalidLoad)
338339
SystemParticipantTestData.loadInput.copy().sRated(Quantities.getQuantity(-25d, ACTIVE_POWER_IN)).eConsAnnual(Quantities.getQuantity(-4000, ENERGY_IN)).build() || 1 || new InvalidEntityException("The following quantities have to be zero or positive: -25 kVA, -4000 kWh", invalidLoad)
339340
SystemParticipantTestData.loadInput.copy().cosPhiRated(2).build() || 1 || new InvalidEntityException("Rated power factor of LoadInput must be between 0 and 1", invalidLoad)
340-
SystemParticipantTestData.loadInput.copy().loadprofile(createInvalidStandardLoadProfile("h1")).build() || 1 || new InvalidEntityException("Load profile must contain at least one valid entry: h0, g[0-6], l[0-3], ep1, ez2 or NO_LOAD_PROFILE", invalidLoad)
341-
SystemParticipantTestData.loadInput.copy().loadprofile(createInvalidStandardLoadProfile("g7")).build() || 1 || new InvalidEntityException("Load profile must contain at least one valid entry: h0, g[0-6], l[0-3], ep1, ez2 or NO_LOAD_PROFILE", invalidLoad)
342-
SystemParticipantTestData.loadInput.copy().loadprofile(createInvalidStandardLoadProfile("l3")).build() || 1 || new InvalidEntityException("Load profile must contain at least one valid entry: h0, g[0-6], l[0-3], ep1, ez2 or NO_LOAD_PROFILE", invalidLoad)
343-
SystemParticipantTestData.loadInput.copy().loadprofile(createInvalidStandardLoadProfile("invalid")).build() || 1 || new InvalidEntityException("Load profile must contain at least one valid entry: h0, g[0-6], l[0-3], ep1, ez2 or NO_LOAD_PROFILE", invalidLoad)
341+
SystemParticipantTestData.loadInput.copy().loadprofile(createInvalidStandardLoadProfile("h1")).build() || 1 || new InvalidEntityException("Load profile must contain at least one valid entry: h0, g[0-6], l[0-2], ep1, ez2, random, or LoadProfile#NO_LOAD_PROFILE.", invalidLoad)
342+
SystemParticipantTestData.loadInput.copy().loadprofile(createInvalidStandardLoadProfile("g7")).build() || 1 || new InvalidEntityException("Load profile must contain at least one valid entry: h0, g[0-6], l[0-2], ep1, ez2, random, or LoadProfile#NO_LOAD_PROFILE.", invalidLoad)
343+
SystemParticipantTestData.loadInput.copy().loadprofile(createInvalidStandardLoadProfile("l3")).build() || 1 || new InvalidEntityException("Load profile must contain at least one valid entry: h0, g[0-6], l[0-2], ep1, ez2, random, or LoadProfile#NO_LOAD_PROFILE.", invalidLoad)
344+
SystemParticipantTestData.loadInput.copy().loadprofile(createInvalidStandardLoadProfile("invalid")).build() || 1 || new InvalidEntityException("Load profile must contain at least one valid entry: h0, g[0-6], l[0-2], ep1, ez2, random, or LoadProfile#NO_LOAD_PROFILE.", invalidLoad)
344345
}
345346

346347
// Helper method to create invalid standard load profiles for testing
@@ -358,7 +359,7 @@ class SystemParticipantValidationUtilsTest extends Specification {
358359

359360
@Override
360361
boolean equals(Object obj) {
361-
return false // Ensure it doesn't match any default profiles
362+
return false
362363
}
363364

364365
@Override

0 commit comments

Comments
 (0)