diff --git a/CHANGELOG.md b/CHANGELOG.md index 50ca0a440..6a5be4c4f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Change spotless to use googleJavaFormat('1.28.0') [#1409](https://github.com/ie3-institute/PowerSystemDataModel/issues/1409) - Change `TimeSeries` to no longer extend `UniqueEntity` [#1441](https://github.com/ie3-institute/PowerSystemDataModel/issues/1441) - Refactor CSV handling into shared file-based infrastructure. [#1450](https://github.com/ie3-institute/PowerSystemDataModel/issues/1445) +- Change Evcs.locationType from single element to list [#1460](https://github.com/ie3-institute/PowerSystemDataModel/issues/1460) ## [8.1.0] - 2025-07-25 diff --git a/src/main/java/edu/ie3/datamodel/io/factory/input/participant/EvcsInputFactory.java b/src/main/java/edu/ie3/datamodel/io/factory/input/participant/EvcsInputFactory.java index 46b75a9f9..e42378966 100644 --- a/src/main/java/edu/ie3/datamodel/io/factory/input/participant/EvcsInputFactory.java +++ b/src/main/java/edu/ie3/datamodel/io/factory/input/participant/EvcsInputFactory.java @@ -18,6 +18,7 @@ import edu.ie3.datamodel.models.input.system.type.chargingpoint.ChargingPointTypeUtils; import edu.ie3.datamodel.models.input.system.type.evcslocation.EvcsLocationType; import edu.ie3.datamodel.models.input.system.type.evcslocation.EvcsLocationTypeUtils; +import java.util.List; import java.util.UUID; /** @@ -33,7 +34,7 @@ public class EvcsInputFactory private static final String TYPE = "type"; private static final String CHARGING_POINTS = "chargingPoints"; private static final String COS_PHI_RATED = "cosPhiRated"; - private static final String LOCATION_TYPE = "locationType"; + private static final String LOCATION_TYPES = "locationTypes"; private static final String V2G_SUPPORT = "v2gSupport"; public EvcsInputFactory() { @@ -42,7 +43,7 @@ public EvcsInputFactory() { @Override protected String[] getAdditionalFields() { - return new String[] {TYPE, CHARGING_POINTS, COS_PHI_RATED, LOCATION_TYPE, V2G_SUPPORT}; + return new String[] {TYPE, CHARGING_POINTS, COS_PHI_RATED, LOCATION_TYPES, V2G_SUPPORT}; } @Override @@ -68,15 +69,24 @@ protected EvcsInput buildModel( final int chargingPoints = data.getInt(CHARGING_POINTS); final double cosPhi = data.getDouble(COS_PHI_RATED); - final EvcsLocationType locationType; + final List locationTypes; try { - locationType = EvcsLocationTypeUtils.parse(data.getField(LOCATION_TYPE)); - } catch (ParsingException e) { + String locationTypesField = data.getField(LOCATION_TYPES); + if (locationTypesField.contains(",")) { + locationTypes = EvcsLocationTypeUtils.parse(locationTypesField); + } else { + locationTypes = List.of(EvcsLocationTypeUtils.parseSingle(locationTypesField)); + } + } catch (ParsingException | RuntimeException e) { + Throwable cause = + e instanceof RuntimeException && e.getCause() instanceof ParsingException + ? e.getCause() + : e; throw new FactoryException( String.format( - "Exception while trying to parse field \"%s\" with supposed int value \"%s\"", - LOCATION_TYPE, data.getField(LOCATION_TYPE)), - e); + "Exception while trying to parse field \"%s\" with supposed value \"%s\"", + LOCATION_TYPES, data.getField(LOCATION_TYPES)), + cause); } final boolean v2gSupport = data.getBoolean(V2G_SUPPORT); @@ -92,7 +102,7 @@ protected EvcsInput buildModel( type, chargingPoints, cosPhi, - locationType, + locationTypes, v2gSupport); } } diff --git a/src/main/java/edu/ie3/datamodel/io/processor/Processor.java b/src/main/java/edu/ie3/datamodel/io/processor/Processor.java index d232dbf27..0042f8a14 100644 --- a/src/main/java/edu/ie3/datamodel/io/processor/Processor.java +++ b/src/main/java/edu/ie3/datamodel/io/processor/Processor.java @@ -230,8 +230,16 @@ protected String processMethodResult( "DayOfWeek", "Season", "ChargingPointType", - "EvcsLocationType" -> + "EvcsLocationTypes" -> resultStringBuilder.append(methodReturnObject.toString()); + case "List", "ArrayList" -> { + if (methodReturnObject instanceof Collection collection) { + resultStringBuilder.append( + collection.stream().map(Object::toString).collect(Collectors.joining(",", "[", "]"))); + } else { + resultStringBuilder.append(methodReturnObject.toString()); + } + } case "Quantity", "ComparableQuantity" -> resultStringBuilder.append(handleQuantity((Quantity) methodReturnObject, fieldName)); case "Optional" -> diff --git a/src/main/java/edu/ie3/datamodel/io/sink/CsvFileSink.java b/src/main/java/edu/ie3/datamodel/io/sink/CsvFileSink.java index 4b08d00f6..ba3ebb068 100644 --- a/src/main/java/edu/ie3/datamodel/io/sink/CsvFileSink.java +++ b/src/main/java/edu/ie3/datamodel/io/sink/CsvFileSink.java @@ -330,8 +330,8 @@ private String[] csvHeaderElements(String[] strings) { } /** - * Transforms a provided map of string to string to valid csv formatted strings (according to csv - * specification RFC 4180) + * Transforms a provided map of string to string into valid csv formatted strings (according to + * csv specification RFC 4180) * * @param entityFieldData a string to string map that should be processed * @return a new map with valid csv formatted keys and values strings diff --git a/src/main/java/edu/ie3/datamodel/models/input/system/EvcsInput.java b/src/main/java/edu/ie3/datamodel/models/input/system/EvcsInput.java index 50f2a38ae..3f9be027b 100644 --- a/src/main/java/edu/ie3/datamodel/models/input/system/EvcsInput.java +++ b/src/main/java/edu/ie3/datamodel/models/input/system/EvcsInput.java @@ -12,6 +12,7 @@ import edu.ie3.datamodel.models.input.system.characteristic.ReactivePowerCharacteristic; import edu.ie3.datamodel.models.input.system.type.chargingpoint.ChargingPointType; import edu.ie3.datamodel.models.input.system.type.evcslocation.EvcsLocationType; +import java.util.List; import java.util.Objects; import java.util.UUID; import javax.measure.quantity.Power; @@ -28,8 +29,8 @@ public class EvcsInput extends SystemParticipantInput { /** Rated power factor */ private final double cosPhiRated; - /** Evcs location type */ - private final EvcsLocationType locationType; + /** Evcs location types (minimum one required) */ + private final List locationTypes; /** Whether charging station supports vehicle to grid */ private final boolean v2gSupport; @@ -45,7 +46,7 @@ public class EvcsInput extends SystemParticipantInput { * @param type type of the charging points available to this charging station * @param chargingPoints number of charging points available at this charging station * @param cosPhiRated rated cos phi - * @param locationType the location type + * @param locationTypes the location types (minimum one required) * @param v2gSupport whether charging station supports vehicle to grid */ public EvcsInput( @@ -59,13 +60,16 @@ public EvcsInput( ChargingPointType type, int chargingPoints, double cosPhiRated, - EvcsLocationType locationType, + List locationTypes, boolean v2gSupport) { super(uuid, id, operator, operationTime, node, qCharacteristics, em); + if (locationTypes == null || locationTypes.isEmpty()) { + throw new IllegalArgumentException("At least one location type must be provided"); + } this.type = type; this.chargingPoints = chargingPoints; this.cosPhiRated = cosPhiRated; - this.locationType = locationType; + this.locationTypes = List.copyOf(locationTypes); this.v2gSupport = v2gSupport; } @@ -79,7 +83,7 @@ public EvcsInput( * @param em The {@link EmInput} controlling this system participant. Null, if not applicable. * @param type type of the charging points available to this charging station * @param cosPhiRated rated cos phi - * @param locationType the location type + * @param locationTypes the location types (minimum one required) * @param v2gSupport whether charging station supports vehicle to grid */ public EvcsInput( @@ -92,7 +96,7 @@ public EvcsInput( EmInput em, ChargingPointType type, double cosPhiRated, - EvcsLocationType locationType, + List locationTypes, boolean v2gSupport) { this( uuid, @@ -105,7 +109,7 @@ public EvcsInput( type, 1, cosPhiRated, - locationType, + locationTypes, v2gSupport); } @@ -118,7 +122,7 @@ public EvcsInput( * @param type type of the charging points available to this charging station * @param chargingPoints number of charging points available at this charging station * @param cosPhiRated rated cos phi - * @param locationType the location type + * @param locationTypes the location types (minimum one required) * @param v2gSupport whether charging station supports vehicle to grid */ public EvcsInput( @@ -130,13 +134,16 @@ public EvcsInput( ChargingPointType type, int chargingPoints, double cosPhiRated, - EvcsLocationType locationType, + List locationTypes, boolean v2gSupport) { super(uuid, id, node, qCharacteristics, em); + if (locationTypes == null || locationTypes.isEmpty()) { + throw new IllegalArgumentException("At least one location type must be provided"); + } this.type = type; this.chargingPoints = chargingPoints; this.cosPhiRated = cosPhiRated; - this.locationType = locationType; + this.locationTypes = List.copyOf(locationTypes); this.v2gSupport = v2gSupport; } @@ -148,7 +155,7 @@ public EvcsInput( * @param em The {@link EmInput} controlling this system participant. Null, if not applicable. * @param type type of the charging points available to this charging station * @param cosPhiRated rated cos phi - * @param locationType the location type + * @param locationTypes the location types (minimum one required) * @param v2gSupport whether charging station supports vehicle to grid */ public EvcsInput( @@ -159,9 +166,9 @@ public EvcsInput( EmInput em, ChargingPointType type, double cosPhiRated, - EvcsLocationType locationType, + List locationTypes, boolean v2gSupport) { - this(uuid, id, node, qCharacteristics, em, type, 1, cosPhiRated, locationType, v2gSupport); + this(uuid, id, node, qCharacteristics, em, type, 1, cosPhiRated, locationTypes, v2gSupport); } public ChargingPointType getType() { @@ -176,8 +183,8 @@ public double getCosPhiRated() { return cosPhiRated; } - public EvcsLocationType getLocationType() { - return locationType; + public List getLocationTypes() { + return locationTypes; } public boolean getV2gSupport() { @@ -202,13 +209,13 @@ public boolean equals(Object o) { return chargingPoints == evcsInput.chargingPoints && Double.compare(evcsInput.cosPhiRated, cosPhiRated) == 0 && type.equals(evcsInput.type) - && locationType.equals(evcsInput.locationType) + && locationTypes.equals(evcsInput.locationTypes) && v2gSupport == evcsInput.v2gSupport; } @Override public int hashCode() { - return Objects.hash(super.hashCode(), type, chargingPoints, cosPhiRated, locationType); + return Objects.hash(super.hashCode(), type, chargingPoints, cosPhiRated, locationTypes); } @Override @@ -234,8 +241,8 @@ public String toString() { + chargingPoints + ", cosPhiRated=" + cosPhiRated - + ", locationType=" - + locationType + + ", locationTypes=" + + locationTypes + ", v2gSupport=" + getV2gSupport() + '}'; @@ -254,7 +261,7 @@ public static class EvcsInputCopyBuilder private ChargingPointType type; private int chargingPoints; private double cosPhiRated; - private EvcsLocationType locationType; + private List locationTypes; private boolean v2gSupport; public EvcsInputCopyBuilder(EvcsInput entity) { @@ -262,7 +269,7 @@ public EvcsInputCopyBuilder(EvcsInput entity) { this.type = entity.type; this.chargingPoints = entity.chargingPoints; this.cosPhiRated = entity.cosPhiRated; - this.locationType = entity.locationType; + this.locationTypes = entity.locationTypes; this.v2gSupport = entity.v2gSupport; } @@ -281,8 +288,8 @@ public EvcsInputCopyBuilder cosPhiRated(double cosPhiRated) { return thisInstance(); } - public EvcsInputCopyBuilder locationType(EvcsLocationType locationType) { - this.locationType = locationType; + public EvcsInputCopyBuilder locationTypes(List locationTypes) { + this.locationTypes = locationTypes; return thisInstance(); } @@ -310,7 +317,7 @@ public EvcsInput build() { type, chargingPoints, cosPhiRated, - locationType, + locationTypes, v2gSupport); } diff --git a/src/main/java/edu/ie3/datamodel/models/input/system/type/evcslocation/EvcsLocationTypeUtils.java b/src/main/java/edu/ie3/datamodel/models/input/system/type/evcslocation/EvcsLocationTypeUtils.java index ffb31c076..60f6a9707 100644 --- a/src/main/java/edu/ie3/datamodel/models/input/system/type/evcslocation/EvcsLocationTypeUtils.java +++ b/src/main/java/edu/ie3/datamodel/models/input/system/type/evcslocation/EvcsLocationTypeUtils.java @@ -6,7 +6,10 @@ package edu.ie3.datamodel.models.input.system.type.evcslocation; import edu.ie3.datamodel.exceptions.ParsingException; +import java.util.Arrays; import java.util.HashMap; +import java.util.List; +import java.util.stream.Collectors; /** * Utility class providing tools to retrieve {@link EvcsLocationType}s from string representation @@ -28,15 +31,51 @@ private EvcsLocationTypeUtils() { } /** - * Parsing a location type string into one {@link EvcsLocationType}. Matching the string is - * case-insensitive and all - and _ are removed. Throws exception, if type does not exist. + * Parsing a location type string into one {@link EvcsLocationType} or a list of + * EvcsLocationTypes. Matching the string is case-insensitive and all - and _ are removed. + * + * @param parsableString string to parse + * @return List + * @throws ParsingException if string does not represent a location type + */ + public static List parse(String parsableString) throws ParsingException { + if (parsableString == null || parsableString.trim().isEmpty()) { + throw new ParsingException("Location types string cannot be null or empty"); + } + + // Remove brackets if present + parsableString = parsableString.replace("[", "").replace("]", ""); + + // Check if it contains comma for multiple values + if (parsableString.contains(",")) { + return Arrays.stream(parsableString.split(",")) + .map(String::trim) + .filter(s -> !s.isEmpty()) + .map( + s -> { + try { + return parseSingle(s); + } catch (ParsingException e) { + throw new RuntimeException(e); + } + }) + .collect(Collectors.toList()); + } else { + // Single value - wrap in List + return List.of(parseSingle(parsableString.trim())); + } + } + + /** + * Parsing a single location type string into one {@link EvcsLocationType}. Matching the string is + * case-insensitive and all - and _ are removed. * * @param parsableString string to parse * @return corresponding EvcsLocationType * @throws ParsingException if string does not represent a location type */ - public static EvcsLocationType parse(String parsableString) throws ParsingException { - final String key = toKey(parsableString); + public static EvcsLocationType parseSingle(String parsableString) throws ParsingException { + final String key = toKey(parsableString.replace("[", "").replace("]", "")); if (nameToType.containsKey(key)) return nameToType.get(key); else throw new ParsingException("EvcsLocationType '" + key + "' does not exist."); } diff --git a/src/test/groovy/edu/ie3/datamodel/io/factory/input/participant/EvcsInputFactoryTest.groovy b/src/test/groovy/edu/ie3/datamodel/io/factory/input/participant/EvcsInputFactoryTest.groovy index 9d3ccd7ed..b68e0ea0d 100644 --- a/src/test/groovy/edu/ie3/datamodel/io/factory/input/participant/EvcsInputFactoryTest.groovy +++ b/src/test/groovy/edu/ie3/datamodel/io/factory/input/participant/EvcsInputFactoryTest.groovy @@ -49,7 +49,7 @@ class EvcsInputFactoryTest extends Specification implements FactoryTestHelper { "type" : "Household", "chargingpoints" : "4", "cosphirated" : "0.95", - "locationtype" : "CHARGING_HUB_TOWN", + "locationtypes" : "CHARGING_HUB_TOWN, STREET", "v2gsupport" : "false" ] def inputClass = EvcsInput @@ -83,7 +83,10 @@ class EvcsInputFactoryTest extends Specification implements FactoryTestHelper { assert type == ChargingPointTypeUtils.HouseholdSocket assert chargingPoints == Integer.parseInt(parameter["chargingpoints"]) assert cosPhiRated == Double.parseDouble(parameter["cosphirated"]) - assert locationType == EvcsLocationType.CHARGING_HUB_TOWN + assert locationTypes == [ + EvcsLocationType.CHARGING_HUB_TOWN, + EvcsLocationType.STREET + ] assert !v2gSupport } } @@ -100,7 +103,7 @@ class EvcsInputFactoryTest extends Specification implements FactoryTestHelper { "type" : "-- invalid --", "chargingpoints" : "4", "cosphirated" : "0.95", - "locationtype" : "CHARGING_HUB_TOWN", + "locationtypes" : "[CHARGING_HUB_TOWN]", "v2gsupport" : "false" ] def inputClass = EvcsInput @@ -129,7 +132,7 @@ class EvcsInputFactoryTest extends Specification implements FactoryTestHelper { "type" : "Household", "chargingpoints" : "4", "cosphirated" : "0.95", - "locationType" : "-- invalid --", + "locationTypes" : "-- invalid --", "v2gsupport" : "false" ] def inputClass = EvcsInput @@ -143,6 +146,6 @@ class EvcsInputFactoryTest extends Specification implements FactoryTestHelper { then: input.failure - input.exception.get().cause.message == "Exception while trying to parse field \"locationType\" with supposed int value \"-- invalid --\"" + input.exception.get().cause.message == "Exception while trying to parse field \"locationTypes\" with supposed value \"-- invalid --\"" } } diff --git a/src/test/groovy/edu/ie3/datamodel/io/processor/input/InputEntityProcessorTest.groovy b/src/test/groovy/edu/ie3/datamodel/io/processor/input/InputEntityProcessorTest.groovy index e22ff1a99..d389d46fa 100644 --- a/src/test/groovy/edu/ie3/datamodel/io/processor/input/InputEntityProcessorTest.groovy +++ b/src/test/groovy/edu/ie3/datamodel/io/processor/input/InputEntityProcessorTest.groovy @@ -234,7 +234,6 @@ class InputEntityProcessorTest extends Specification { "type" : SystemParticipantTestData.evInput.type.getUuid().toString(), "controllingEm" : SystemParticipantTestData.evInput.controllingEm.map((UniqueEntity::getUuid).andThen(UUID::toString)).orElse("") ] - LoadInput | SystemParticipantTestData.loadInput || [ "uuid" : SystemParticipantTestData.loadInput.uuid.toString(), "cosPhiRated" : SystemParticipantTestData.loadInput.cosPhiRated.toString(), @@ -283,7 +282,7 @@ class InputEntityProcessorTest extends Specification { "type" : SystemParticipantTestData.evcsInput.type.toString(), "cosPhiRated" : SystemParticipantTestData.evcsInput.cosPhiRated.toString(), "chargingPoints" : SystemParticipantTestData.evcsInput.chargingPoints.toString(), - "locationType" : SystemParticipantTestData.evcsInput.locationType.name(), + "locationTypes" : SystemParticipantTestData.evcsInput.locationTypes.toString(), "v2gSupport" : SystemParticipantTestData.evcsInput.v2gSupport.toString(), "controllingEm" : SystemParticipantTestData.evcsInput.controllingEm.map((UniqueEntity::getUuid).andThen(UUID::toString)).orElse("") ] diff --git a/src/test/groovy/edu/ie3/datamodel/models/input/system/EvcsInputTest.groovy b/src/test/groovy/edu/ie3/datamodel/models/input/system/EvcsInputTest.groovy index 064d98f29..80be9e416 100644 --- a/src/test/groovy/edu/ie3/datamodel/models/input/system/EvcsInputTest.groovy +++ b/src/test/groovy/edu/ie3/datamodel/models/input/system/EvcsInputTest.groovy @@ -20,7 +20,9 @@ class EvcsInputTest extends Specification { def alteredEntity = evcsInput.copy() .type(ChargingPointTypeUtils.TeslaSuperChargerV3) .cosPhiRated(0.7d).chargingPoints(1) - .locationType(EvcsLocationType.CHARGING_HUB_HIGHWAY) + .locationTypes([ + EvcsLocationType.CHARGING_HUB_HIGHWAY + ]) .v2gSupport(true) .build() @@ -34,7 +36,9 @@ class EvcsInputTest extends Specification { assert type == ChargingPointTypeUtils.TeslaSuperChargerV3 assert cosPhiRated == 0.7d assert chargingPoints == 1 - assert locationType == EvcsLocationType.CHARGING_HUB_HIGHWAY + assert locationTypes == [ + EvcsLocationType.CHARGING_HUB_HIGHWAY + ] assert v2gSupport assert controllingEm == Optional.of(SystemParticipantTestData.emInput) } @@ -58,7 +62,7 @@ class EvcsInputTest extends Specification { assert sRated() == evcsInput.type.sRated * 2d assert cosPhiRated == evcsInput.cosPhiRated assert chargingPoints == evcsInput.chargingPoints - assert locationType == evcsInput.locationType + assert locationTypes == evcsInput.locationTypes assert v2gSupport == evcsInput.v2gSupport assert controllingEm == Optional.of(SystemParticipantTestData.emInput) } diff --git a/src/test/groovy/edu/ie3/datamodel/models/input/system/type/evcslocation/EvcsLocationTypeUtilsTest.groovy b/src/test/groovy/edu/ie3/datamodel/models/input/system/type/evcslocation/EvcsLocationTypeUtilsTest.groovy index b69bb3279..280a4c76f 100644 --- a/src/test/groovy/edu/ie3/datamodel/models/input/system/type/evcslocation/EvcsLocationTypeUtilsTest.groovy +++ b/src/test/groovy/edu/ie3/datamodel/models/input/system/type/evcslocation/EvcsLocationTypeUtilsTest.groovy @@ -24,11 +24,12 @@ class EvcsLocationTypeUtilsTest extends Specification { def "The EvcsLocationTypeUtils should parse valid evcs location type strings as expected"() { given: - EvcsLocationType parsed = parse(parsableString) + List parsed = parse(parsableString) expect: - parsed == expectedObj - parsed.name().toLowerCase().replaceAll("[-_]*", "") == parsableString.toLowerCase().replaceAll("[-_]*", "") + parsed.size() == 1 + parsed[0] == expectedObj + parsed[0].name().toLowerCase().replaceAll("[-_]*", "") == parsableString.toLowerCase().replaceAll("[-_]*", "") where: parsableString || expectedObj @@ -42,6 +43,19 @@ class EvcsLocationTypeUtilsTest extends Specification { "charginghubhighway" || CHARGING_HUB_HIGHWAY // lower case without underscores } + def "The EvcsLocationTypeUtils should parse multiple evcs location type strings as expected"() { + given: + List parsed = parse(parsableString) + + expect: + parsed == expectedObj + + where: + parsableString || expectedObj + "WORK, CUSTOMER_PARKING" || [WORK, CUSTOMER_PARKING] + "HOME,WORK,STREET" || [HOME, WORK, STREET] + } + def "The EvcsLocationTypeUtils should throw exceptions as expected when invalid evcs location type string is provided"() { when: parse("--invalid--") diff --git a/src/test/groovy/edu/ie3/test/common/SystemParticipantTestData.groovy b/src/test/groovy/edu/ie3/test/common/SystemParticipantTestData.groovy index 7611b78bc..7e6690635 100644 --- a/src/test/groovy/edu/ie3/test/common/SystemParticipantTestData.groovy +++ b/src/test/groovy/edu/ie3/test/common/SystemParticipantTestData.groovy @@ -336,7 +336,7 @@ class SystemParticipantTestData { ChargingPointTypeUtils.HouseholdSocket, 4, cosPhiRated, - EvcsLocationType.HOME, + [EvcsLocationType.HOME], v2gSupport ) diff --git a/src/test/resources/edu/ie3/datamodel/io/sink/_sql/input_entities.sql b/src/test/resources/edu/ie3/datamodel/io/sink/_sql/input_entities.sql index 31464bae3..f12754c10 100644 --- a/src/test/resources/edu/ie3/datamodel/io/sink/_sql/input_entities.sql +++ b/src/test/resources/edu/ie3/datamodel/io/sink/_sql/input_entities.sql @@ -41,7 +41,7 @@ CREATE TABLE public.evcs_input controlling_em UUID, cos_phi_rated TEXT NOT NULL, id TEXT NOT NULL, - location_type TEXT NOT NULL, + location_types TEXT NOT NULL, node UUID NOT NULL, operates_from TIMESTAMP WITH TIME ZONE, operates_until TIMESTAMP WITH TIME ZONE, diff --git a/src/test/resources/edu/ie3/datamodel/io/source/csv/_joint_grid/evcs_input.csv b/src/test/resources/edu/ie3/datamodel/io/source/csv/_joint_grid/evcs_input.csv index 011aeb72a..613d63b42 100644 --- a/src/test/resources/edu/ie3/datamodel/io/source/csv/_joint_grid/evcs_input.csv +++ b/src/test/resources/edu/ie3/datamodel/io/source/csv/_joint_grid/evcs_input.csv @@ -1,3 +1,3 @@ -uuid,charging_points,cos_phi_rated,id,location_type,node,operates_from,operates_until,operator,q_characteristics,type,v_2g_support,controlling_em +uuid,charging_points,cos_phi_rated,id,location_types,node,operates_from,operates_until,operator,q_characteristics,type,v_2g_support,controlling_em 06a14909-366e-4e94-a593-1016e1455b30,4,0.9,test_evcs_1,HOME,5f1c776c-6935-40f7-ba9e-60646e08992b,,,,"cosPhiFixed:{(0.0,1.0)}",ChargingStationType1,true, 104acdaa-5dc5-4197-aed2-2fddb3c4f237,4,0.9,test_evcs_2,HOME,ed4697fd-016c-40c2-a66b-e793878dadea,,,,"cosPhiFixed:{(0.0,1.0)}",ChargingStationType1,true, diff --git a/src/test/resources/edu/ie3/datamodel/io/source/csv/_participants/evcs_input.csv b/src/test/resources/edu/ie3/datamodel/io/source/csv/_participants/evcs_input.csv index 0fd01d91f..ef408c5d2 100644 --- a/src/test/resources/edu/ie3/datamodel/io/source/csv/_participants/evcs_input.csv +++ b/src/test/resources/edu/ie3/datamodel/io/source/csv/_participants/evcs_input.csv @@ -1,2 +1,2 @@ -uuid,id,operator,operates_from,operates_until,node,q_characteristics,cos_phi_rated,type,charging_points,location_type,v2g_support,controlling_em +uuid,id,operator,operates_from,operates_until,node,q_characteristics,cos_phi_rated,type,charging_points,location_types,v2g_support,controlling_em 798028b5-caff-4da7-bcd9-1750fdd8742c,test_csInput,8f9682df-0744-4b58-a122-f0dc730f6510,2020-03-24T15:11:31Z,2020-03-25T15:11:31Z,4ca90220-74c2-4369-9afa-a18bf068840d,"cosPhiFixed:{(0.00,0.95)}",0.95,hhs,4,HOME,false,977157f4-25e5-4c72-bf34-440edc778792 \ No newline at end of file