diff --git a/src/main/java/edu/ie3/datamodel/io/factory/input/OperatorInputFactory.java b/src/main/java/edu/ie3/datamodel/io/factory/input/OperatorInputFactory.java new file mode 100644 index 000000000..b1bee811f --- /dev/null +++ b/src/main/java/edu/ie3/datamodel/io/factory/input/OperatorInputFactory.java @@ -0,0 +1,34 @@ +/* + * © 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.factory.input; + +import edu.ie3.datamodel.io.factory.EntityFactory; +import edu.ie3.datamodel.io.factory.SimpleEntityData; +import edu.ie3.datamodel.models.input.OperatorInput; +import java.util.Collections; +import java.util.List; +import java.util.Set; + +public class OperatorInputFactory extends EntityFactory { + + private static final String ENTITY_UUID = "uuid"; + private static final String ENTITY_ID = "id"; + + public OperatorInputFactory() { + super(OperatorInput.class); + } + + @Override + protected List> getFields(SimpleEntityData data) { + Set constructorParams = newSet(ENTITY_UUID, ENTITY_ID); + return Collections.singletonList(constructorParams); + } + + @Override + protected OperatorInput buildModel(SimpleEntityData data) { + return new OperatorInput(data.getUUID(ENTITY_UUID), data.getField(ENTITY_ID)); + } +} diff --git a/src/test/groovy/edu/ie3/datamodel/io/factory/input/OperatorInputFactoryTest.groovy b/src/test/groovy/edu/ie3/datamodel/io/factory/input/OperatorInputFactoryTest.groovy new file mode 100644 index 000000000..691da4f46 --- /dev/null +++ b/src/test/groovy/edu/ie3/datamodel/io/factory/input/OperatorInputFactoryTest.groovy @@ -0,0 +1,44 @@ +/* + * © 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.factory.input + +import edu.ie3.datamodel.io.factory.SimpleEntityData +import edu.ie3.datamodel.models.input.OperatorInput +import spock.lang.Specification + +class OperatorInputFactoryTest extends Specification { + + def "An OperatorInputFactory should contain exactly the expected class for parsing"() { + given: + def inputFactory = new OperatorInputFactory() + def expectedClasses = [OperatorInput] + + expect: + inputFactory.classes() == Arrays.asList(expectedClasses.toArray()) + } + + def "An OperatorInputFactory should parse a valid OperatorInput correctly"() { + given: "a operator input factory and model data" + def inputFactory = new OperatorInputFactory() + Map parameter = [ + "uuid": "91ec3bcf-1777-4d38-af67-0bf7c9fa73c7", + "id" : "TestOperatorId", + ] + + def inputClass = OperatorInput + + when: + Optional input = inputFactory.getEntity(new SimpleEntityData(parameter, inputClass)) + + then: + input.present + input.get().getClass() == inputClass + ((OperatorInput) input.get()).with { + assert uuid == UUID.fromString(parameter["uuid"]) + assert id == parameter["id"] + } + } +}