Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions docs/uml/test/TestDataHierarchy.puml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
@startuml
Interface GridTestData
Interface ComplexTopology
Interface SystemParticipantTestData

GridTestData <|-- ComplexTopology
GridTestData <|-- SystemParticipantTestData
@enduml
Original file line number Diff line number Diff line change
Expand Up @@ -231,6 +231,7 @@ private String processMethodResult(Object methodReturnObject, Method method, Str
case "Transformer3WTypeInput":
case "Transformer2WTypeInput":
case "LineTypeInput":
case "LineInput":
case "OperatorInput":
case "WecTypeInput":
case "ThermalBusInput":
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,11 @@

import edu.ie3.datamodel.exceptions.ProcessorProviderException;
import edu.ie3.datamodel.io.processor.input.AssetInputProcessor;
import edu.ie3.datamodel.io.processor.input.GraphicInputProcessor;
import edu.ie3.datamodel.io.processor.result.ResultEntityProcessor;
import edu.ie3.datamodel.models.UniqueEntity;
import edu.ie3.datamodel.models.input.AssetInput;
import edu.ie3.datamodel.models.input.graphics.GraphicInput;
import edu.ie3.datamodel.models.result.ResultEntity;
import java.util.*;
import java.util.stream.Collectors;
Expand Down Expand Up @@ -135,10 +137,16 @@ private Collection<EntityProcessor<? extends UniqueEntity>> allProcessors() {
resultingProcessors.add(new AssetInputProcessor(cls));
}

// GraphicInput
for (Class<? extends GraphicInput> cls : GraphicInputProcessor.eligibleEntityClasses) {
resultingProcessors.add(new GraphicInputProcessor(cls));
}

// SystemParticipantResults
for (Class<? extends ResultEntity> cls : ResultEntityProcessor.eligibleEntityClasses) {
resultingProcessors.add(new ResultEntityProcessor(cls));
}

return resultingProcessors;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
/*
* © 2020. TU Dortmund University,
* Institute of Energy Systems, Energy Efficiency and Energy Economics,
* Research group Distribution grid planning and operation
*/
package edu.ie3.datamodel.io.processor.input;

import edu.ie3.datamodel.io.processor.EntityProcessor;
import edu.ie3.datamodel.models.input.graphics.GraphicInput;
import edu.ie3.datamodel.models.input.graphics.LineGraphicInput;
import edu.ie3.datamodel.models.input.graphics.NodeGraphicInput;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
import javax.measure.Quantity;

/**
* Processor to deserialize all children of {@link GraphicInput} to a mapping from field name to
* value (as string representation). All necessary processes are already apparent in the {@link
* EntityProcessor}, therefore, no additional implementations have to be made.
*/
public class GraphicInputProcessor extends EntityProcessor<GraphicInput> {
public static final List<Class<? extends GraphicInput>> eligibleEntityClasses =
Collections.unmodifiableList(Arrays.asList(NodeGraphicInput.class, LineGraphicInput.class));

public GraphicInputProcessor(Class<? extends GraphicInput> registeredClass) {
super(registeredClass);
}

@Override
protected Optional<String> handleProcessorSpecificQuantity(
Quantity<?> quantity, String fieldName) {
throw new UnsupportedOperationException(
"No specific quantity handling required for graphic input models.");
}

@Override
protected List<Class<? extends GraphicInput>> getAllEligibleClasses() {
return eligibleEntityClasses;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@
*/
package edu.ie3.datamodel.io.source;

import com.vividsolutions.jts.geom.Point;
import edu.ie3.datamodel.models.timeseries.IndividualTimeSeries;
import edu.ie3.datamodel.models.value.WeatherValue;
import edu.ie3.util.interval.ClosedInterval;
import java.time.ZonedDateTime;
import java.util.Collection;
import java.util.Map;
import org.locationtech.jts.geom.Point;

/** Describes a data source for weather data */
public interface WeatherSource extends DataSource {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@
*/
package edu.ie3.datamodel.models.input.graphics;

import com.vividsolutions.jts.geom.LineString;
import edu.ie3.datamodel.models.input.InputEntity;
import java.util.Objects;
import java.util.UUID;
import org.locationtech.jts.geom.LineString;

/** Describes the graphic data belonging to grid assets */
public class GraphicInput extends InputEntity {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@
*/
package edu.ie3.datamodel.models.input.graphics;

import com.vividsolutions.jts.geom.LineString;
import edu.ie3.datamodel.models.input.connector.LineInput;
import java.util.Objects;
import java.util.UUID;
import org.locationtech.jts.geom.LineString;

/**
* Describes the graphic data belonging to a {@link
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@
*/
package edu.ie3.datamodel.models.input.graphics;

import com.vividsolutions.jts.geom.LineString;
import com.vividsolutions.jts.geom.Point;
import edu.ie3.datamodel.models.input.NodeInput;
import java.util.Objects;
import java.util.UUID;
import org.locationtech.jts.geom.LineString;
import org.locationtech.jts.geom.Point;

/** Describes the graphic data belonging to a {@link NodeInput} */
public class NodeGraphicInput extends GraphicInput {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@
*/
package edu.ie3.datamodel.models.value;

import com.vividsolutions.jts.geom.Point;
import edu.ie3.util.quantities.interfaces.Irradiation;
import javax.measure.Quantity;
import javax.measure.quantity.Angle;
import javax.measure.quantity.Speed;
import javax.measure.quantity.Temperature;
import org.locationtech.jts.geom.Point;

/** Describes weather as a combination of irradiation, temperature and wind values */
public class WeatherValue implements Value {
Expand Down
8 changes: 4 additions & 4 deletions src/main/java/edu/ie3/datamodel/utils/CoordinateUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@
*/
package edu.ie3.datamodel.utils;

import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.GeometryFactory;
import com.vividsolutions.jts.geom.Point;
import com.vividsolutions.jts.geom.PrecisionModel;
import org.locationtech.jts.geom.Coordinate;
import org.locationtech.jts.geom.GeometryFactory;
import org.locationtech.jts.geom.Point;
import org.locationtech.jts.geom.PrecisionModel;

public class CoordinateUtils {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ import edu.ie3.datamodel.models.input.connector.LineInput
import edu.ie3.datamodel.models.input.connector.SwitchInput
import edu.ie3.datamodel.models.input.connector.Transformer2WInput
import edu.ie3.datamodel.models.input.connector.Transformer3WInput
import edu.ie3.datamodel.models.input.graphics.LineGraphicInput
import edu.ie3.datamodel.models.input.graphics.NodeGraphicInput
import edu.ie3.datamodel.models.input.system.BmInput
import edu.ie3.datamodel.models.input.system.ChpInput
import edu.ie3.datamodel.models.input.system.EvInput
Expand Down Expand Up @@ -72,6 +74,8 @@ class ProcessorProviderTest extends Specification {
NodeInput,
EvcsInput,
LoadResult,
NodeGraphicInput,
LineGraphicInput,
FixedFeedInResult,
BmResult,
PvResult,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ class AssetInputProcessorTest extends Specification {
"length" : "0.003",
"noOfParallelDevices": "2",
"nodeA" : "bd837a25-58f3-44ac-aa90-c6b6e3cd91b2",
"nodeB" : "bd865a25-58f3-44ac-aa90-c6b6e3cd91b2",
"nodeB" : "6e0980e0-10f2-4e18-862b-eb2b7c90509b",
"olmCharacteristic" : "olm",
"operatesUntil" : "2020-03-25 15:11:31",
"operatesFrom" : "2020-03-24 15:11:31",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
package edu.ie3.datamodel.io.processor.input

import edu.ie3.datamodel.models.input.graphics.LineGraphicInput
import edu.ie3.datamodel.models.input.graphics.NodeGraphicInput
import edu.ie3.test.common.GridTestData
import edu.ie3.util.TimeTools
import spock.lang.Specification

import java.time.ZoneId

class GraphicInputProcessorTest extends Specification {
static {
TimeTools.initialize(ZoneId.of("UTC"), Locale.GERMANY, "yyyy-MM-dd HH:mm:ss")
}

def "The GraphicInputProcessor should de-serialize a provided NodeGraphicInput with point correctly"(){
given:
GraphicInputProcessor processor = new GraphicInputProcessor(NodeGraphicInput.class)
NodeGraphicInput validNode = GridTestData.nodeGraphicC
Map expected = [
"uuid" : "09aec636-791b-45aa-b981-b14edf171c4c",
"graphicLayer" : "main",
"path" : "",
"point" : "{\"type\":\"Point\",\"coordinates\":[0.0,10],\"crs\":{\"type\":\"name\",\"properties\":{\"name\":\"EPSG:4326\"}}}",
"node" : "bd837a25-58f3-44ac-aa90-c6b6e3cd91b2"
]

when:
Optional<LinkedHashMap<String, String>> actual = processor.handleEntity(validNode)

then:
actual.isPresent()
actual.get() == expected
}

def "The GraphicInputProcessor should de-serialize a provided NodeGraphicInput with path correctly"(){
given:
GraphicInputProcessor processor = new GraphicInputProcessor(NodeGraphicInput.class)
NodeGraphicInput validNode = GridTestData.nodeGraphicD
Map expected = [
"uuid" : "9ecad435-bd16-4797-a732-762c09d4af25",
"graphicLayer" : "main",
"path" : "{\"type\":\"LineString\",\"coordinates\":[[-1,0.0],[1,0.0]],\"crs\":{\"type\":\"name\",\"properties\":{\"name\":\"EPSG:4326\"}}}",
"point" : "",
"node" : "6e0980e0-10f2-4e18-862b-eb2b7c90509b"
]

when:
Optional<LinkedHashMap<String, String>> actual = processor.handleEntity(validNode)

then:
actual.isPresent()
actual.get() == expected
}

def "The GraphicInputProcessor should de-serialize a provided LineGraphicInput correctly"(){
given:
GraphicInputProcessor processor = new GraphicInputProcessor(LineGraphicInput.class)
LineGraphicInput validNode = GridTestData.lineGraphicCtoD
Map expected = [
"uuid" : "ece86139-3238-4a35-9361-457ecb4258b0",
"graphicLayer" : "main",
"path" : "{\"type\":\"LineString\",\"coordinates\":[[0.0,0.0],[0.0,10]],\"crs\":{\"type\":\"name\",\"properties\":{\"name\":\"EPSG:4326\"}}}",
"line" : "91ec3bcf-1777-4d38-af67-0bf7c9fa73c7"
]

when:
Optional<LinkedHashMap<String, String>> actual = processor.handleEntity(validNode)

then:
actual.isPresent()
actual.get() == expected
}
}
33 changes: 26 additions & 7 deletions src/test/groovy/edu/ie3/test/common/GridTestData.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ import edu.ie3.datamodel.models.input.connector.Transformer3WInput
import edu.ie3.datamodel.models.input.connector.type.LineTypeInput
import edu.ie3.datamodel.models.input.connector.type.Transformer2WTypeInput
import edu.ie3.datamodel.models.input.connector.type.Transformer3WTypeInput
import edu.ie3.datamodel.models.input.graphics.LineGraphicInput
import edu.ie3.datamodel.models.input.graphics.NodeGraphicInput
import edu.ie3.datamodel.models.voltagelevels.GermanVoltageLevelUtils
import edu.ie3.util.TimeTools
import edu.ie3.util.quantities.PowerSystemUnits
Expand All @@ -20,8 +22,6 @@ import tec.uom.se.quantity.Quantities
import tec.uom.se.unit.MetricPrefix
import tec.uom.se.unit.Units

import java.time.ZonedDateTime

import static edu.ie3.util.quantities.PowerSystemUnits.DEGREE_GEOM
import static edu.ie3.util.quantities.PowerSystemUnits.KILOVOLT
import static edu.ie3.util.quantities.PowerSystemUnits.KILOVOLTAMPERE
Expand All @@ -37,7 +37,7 @@ import static tec.uom.se.unit.Units.SIEMENS
*/
class GridTestData {

private static final GeoJsonReader geoJsonReader = new GeoJsonReader();
private static final GeoJsonReader geoJsonReader = new GeoJsonReader()

private static final Transformer2WTypeInput transformerTypeBtoD = new Transformer2WTypeInput(
UUID.randomUUID(),
Expand Down Expand Up @@ -139,7 +139,7 @@ class GridTestData {
"node_a",
Quantities.getQuantity(1d, PU),
true,
(Point) geoJsonReader.read("{ \"type\": \"Point\", \"coordinates\": [7.411111, 51.492528] }"),
geoJsonReader.read("{ \"type\": \"Point\", \"coordinates\": [7.411111, 51.492528] }") as Point,
GermanVoltageLevelUtils.EHV_380KV,
1)
public static final NodeInput nodeB = new NodeInput(
Expand All @@ -162,8 +162,15 @@ class GridTestData {
null,
GermanVoltageLevelUtils.MV_20KV,
3)
public static final NodeGraphicInput nodeGraphicC = new NodeGraphicInput(
UUID.fromString("09aec636-791b-45aa-b981-b14edf171c4c"),
"main",
null,
nodeC,
geoJsonReader.read("{ \"type\": \"Point\", \"coordinates\": [0, 10] }") as Point
)
public static final NodeInput nodeD = new NodeInput(
UUID.fromString("bd865a25-58f3-44ac-aa90-c6b6e3cd91b2"),
UUID.fromString("6e0980e0-10f2-4e18-862b-eb2b7c90509b"),
OperationTime.notLimited(),
OperatorInput.NO_OPERATOR_ASSIGNED,
"node_d",
Expand All @@ -172,6 +179,13 @@ class GridTestData {
null,
GermanVoltageLevelUtils.MV_20KV,
4)
public static final NodeGraphicInput nodeGraphicD = new NodeGraphicInput(
UUID.fromString("9ecad435-bd16-4797-a732-762c09d4af25"),
"main",
geoJsonReader.read("{ \"type\": \"LineString\", \"coordinates\": [[-1, 0], [1, 0]]}") as LineString,
nodeD,
null
)
public static final NodeInput nodeE = new NodeInput(
UUID.randomUUID(),
OperationTime.notLimited(),
Expand Down Expand Up @@ -310,8 +324,13 @@ class GridTestData {
2,
lineTypeInputCtoD,
Quantities.getQuantity(3, Units.METRE),
(LineString) geoJsonReader.read("{ \"type\": \"LineString\", \"coordinates\": [[7.411111, 51.492528], [7.414116, 51.484136]]}"),
geoJsonReader.read("{ \"type\": \"LineString\", \"coordinates\": [[7.411111, 51.492528], [7.414116, 51.484136]]}") as LineString,
Optional.of("olm")
)

public static final LineGraphicInput lineGraphicCtoD = new LineGraphicInput(
UUID.fromString("ece86139-3238-4a35-9361-457ecb4258b0"),
"main",
geoJsonReader.read("{ \"type\": \"LineString\", \"coordinates\": [[0, 0], [0, 10]]}") as LineString,
lineCtoD
)
}