From b7c17f1e04a3a4fc58b0e41cebe70343030b647e Mon Sep 17 00:00:00 2001 From: ahamshubham Date: Thu, 28 Jan 2021 16:32:25 +0100 Subject: [PATCH 1/5] #165 Added builder implementations to several thermal input models --- .../thermal/CylindricalStorageInput.java | 83 +++++++++++++++++-- .../models/input/thermal/ThermalBusInput.java | 30 +++++-- .../input/thermal/ThermalHouseInput.java | 55 ++++++++++-- 3 files changed, 153 insertions(+), 15 deletions(-) diff --git a/src/main/java/edu/ie3/datamodel/models/input/thermal/CylindricalStorageInput.java b/src/main/java/edu/ie3/datamodel/models/input/thermal/CylindricalStorageInput.java index 4daf604d7..e422d5fb9 100644 --- a/src/main/java/edu/ie3/datamodel/models/input/thermal/CylindricalStorageInput.java +++ b/src/main/java/edu/ie3/datamodel/models/input/thermal/CylindricalStorageInput.java @@ -7,13 +7,13 @@ import edu.ie3.datamodel.models.OperationTime; import edu.ie3.datamodel.models.StandardUnits; +import edu.ie3.datamodel.models.input.AssetInput; import edu.ie3.datamodel.models.input.OperatorInput; import edu.ie3.util.quantities.interfaces.SpecificHeatCapacity; import java.util.Objects; import java.util.UUID; import javax.measure.quantity.Temperature; import javax.measure.quantity.Volume; -import org.apache.commons.lang3.NotImplementedException; import tech.units.indriya.ComparableQuantity; /** Thermal storage with cylindrical shape */ @@ -107,10 +107,8 @@ public ComparableQuantity getC() { return c; } - @Override - public UniqueEntityBuilder copy() { - throw new NotImplementedException( - "Copying of " + this.getClass().getSimpleName() + " entities is not supported yet!"); + public CylindricalStorageInputCopyBuilder copy() { + return new CylindricalStorageInputCopyBuilder(this); } @Override @@ -157,4 +155,79 @@ public String toString() { + c + '}'; } + + /** + * A builder pattern based approach to create copies of {@link CylindricalStorageInput} entities + * with altered field values. For detailed field descriptions refer to java docs of {@link + * CylindricalStorageInput} + */ + public static class CylindricalStorageInputCopyBuilder + extends AssetInput.AssetInputCopyBuilder< + CylindricalStorageInput.CylindricalStorageInputCopyBuilder> { + + private ComparableQuantity storageVolumeLvl; + private ComparableQuantity storageVolumeLvlMin; + private ComparableQuantity inletTemp; + private ComparableQuantity returnTemp; + private ComparableQuantity c; + + private CylindricalStorageInputCopyBuilder(CylindricalStorageInput entity) { + super(entity); + this.storageVolumeLvl = entity.getStorageVolumeLvl(); + this.storageVolumeLvlMin = entity.getStorageVolumeLvlMin(); + this.inletTemp = entity.getInletTemp(); + this.returnTemp = entity.getReturnTemp(); + this.c = entity.getC(); + } + + @Override + public CylindricalStorageInput build() { + return new CylindricalStorageInput( + getUuid(), + getId(), + getOperator(), + getOperationTime(), + build().getThermalBus(), + storageVolumeLvl, + storageVolumeLvlMin, + inletTemp, + returnTemp, + c); + } + + public CylindricalStorageInput.CylindricalStorageInputCopyBuilder storageVolumeLvl( + ComparableQuantity storageVolumeLvl) { + this.storageVolumeLvl = storageVolumeLvl; + return this; + } + + public CylindricalStorageInput.CylindricalStorageInputCopyBuilder storageVolumeLvlMin( + ComparableQuantity storageVolumeLvlMin) { + this.storageVolumeLvlMin = storageVolumeLvlMin; + return this; + } + + public CylindricalStorageInput.CylindricalStorageInputCopyBuilder inletTemp( + ComparableQuantity inletTemp) { + this.inletTemp = inletTemp; + return this; + } + + public CylindricalStorageInput.CylindricalStorageInputCopyBuilder returnTemp( + ComparableQuantity returnTemp) { + this.returnTemp = returnTemp; + return this; + } + + public CylindricalStorageInput.CylindricalStorageInputCopyBuilder c( + ComparableQuantity c) { + this.c = c; + return this; + } + + @Override + protected CylindricalStorageInput.CylindricalStorageInputCopyBuilder childInstance() { + return this; + } + } } diff --git a/src/main/java/edu/ie3/datamodel/models/input/thermal/ThermalBusInput.java b/src/main/java/edu/ie3/datamodel/models/input/thermal/ThermalBusInput.java index 5d497f86d..b4e9d812c 100644 --- a/src/main/java/edu/ie3/datamodel/models/input/thermal/ThermalBusInput.java +++ b/src/main/java/edu/ie3/datamodel/models/input/thermal/ThermalBusInput.java @@ -9,7 +9,6 @@ import edu.ie3.datamodel.models.input.AssetInput; import edu.ie3.datamodel.models.input.OperatorInput; import java.util.UUID; -import org.apache.commons.lang3.NotImplementedException; /** A thermal bus, to which different {@link ThermalUnitInput} units may be connected */ public class ThermalBusInput extends AssetInput { @@ -36,9 +35,30 @@ public ThermalBusInput(UUID uuid, String id) { super(uuid, id); } - @Override - public UniqueEntityBuilder copy() { - throw new NotImplementedException( - "Copying of " + this.getClass().getSimpleName() + " entities is not supported yet!"); + public ThermalBusInput.ThermalBusInputCopyBuilder copy() { + return new ThermalBusInput.ThermalBusInputCopyBuilder(this); + } + + /** + * A builder pattern based approach to create copies of {@link ThermalBusInput} entities with + * altered field values. For detailed field descriptions refer to java docs of {@link + * ThermalBusInput} + */ + public static class ThermalBusInputCopyBuilder + extends AssetInput.AssetInputCopyBuilder { + + private ThermalBusInputCopyBuilder(ThermalBusInput entity) { + super(entity); + } + + @Override + public ThermalBusInput build() { + return new ThermalBusInput(getUuid(), getId(), getOperator(), getOperationTime()); + } + + @Override + protected ThermalBusInput.ThermalBusInputCopyBuilder childInstance() { + return this; + } } } diff --git a/src/main/java/edu/ie3/datamodel/models/input/thermal/ThermalHouseInput.java b/src/main/java/edu/ie3/datamodel/models/input/thermal/ThermalHouseInput.java index a60b6921c..f8669b8b2 100644 --- a/src/main/java/edu/ie3/datamodel/models/input/thermal/ThermalHouseInput.java +++ b/src/main/java/edu/ie3/datamodel/models/input/thermal/ThermalHouseInput.java @@ -7,12 +7,12 @@ import edu.ie3.datamodel.models.OperationTime; import edu.ie3.datamodel.models.StandardUnits; +import edu.ie3.datamodel.models.input.AssetInput; import edu.ie3.datamodel.models.input.OperatorInput; import edu.ie3.util.quantities.interfaces.HeatCapacity; import edu.ie3.util.quantities.interfaces.ThermalConductance; import java.util.Objects; import java.util.UUID; -import org.apache.commons.lang3.NotImplementedException; import tech.units.indriya.ComparableQuantity; /** Quite simple thermal model of a house to serve as a heat sink */ @@ -70,10 +70,8 @@ public ComparableQuantity getEthCapa() { return ethCapa; } - @Override - public UniqueEntityBuilder copy() { - throw new NotImplementedException( - "Copying of " + this.getClass().getSimpleName() + " entities is not supported yet!"); + public ThermalHouseInput.ThermalHouseInputCopyBuilder copy() { + return new ThermalHouseInput.ThermalHouseInputCopyBuilder(this); } @Override @@ -109,4 +107,51 @@ public String toString() { + ethCapa + '}'; } + + /** + * A builder pattern based approach to create copies of {@link ThermalHouseInput} entities with + * altered field values. For detailed field descriptions refer to java docs of {@link + * ThermalHouseInput} + */ + public static class ThermalHouseInputCopyBuilder + extends AssetInput.AssetInputCopyBuilder { + + private ComparableQuantity ethLosses; + private ComparableQuantity ethCapa; + + private ThermalHouseInputCopyBuilder(ThermalHouseInput entity) { + super(entity); + this.ethLosses = entity.getEthLosses(); + this.ethCapa = entity.getEthCapa(); + } + + @Override + public ThermalHouseInput build() { + return new ThermalHouseInput( + getUuid(), + getId(), + getOperator(), + getOperationTime(), + build().getThermalBus(), + ethLosses, + ethCapa); + } + + public ThermalHouseInput.ThermalHouseInputCopyBuilder ethLosses( + ComparableQuantity ethLosses) { + this.ethLosses = ethLosses; + return this; + } + + public ThermalHouseInput.ThermalHouseInputCopyBuilder ethCapa( + ComparableQuantity ethCapa) { + this.ethCapa = ethCapa; + return this; + } + + @Override + protected ThermalHouseInput.ThermalHouseInputCopyBuilder childInstance() { + return this; + } + } } From 0a0616ab85c2598270ba384e8b56d68f6a5a2618 Mon Sep 17 00:00:00 2001 From: ahamshubham Date: Thu, 28 Jan 2021 16:54:50 +0100 Subject: [PATCH 2/5] #270 Removed redundant code by removing outer class names --- .../input/thermal/CylindricalStorageInput.java | 17 +++++++---------- .../models/input/thermal/ThermalBusInput.java | 8 ++++---- .../models/input/thermal/ThermalHouseInput.java | 13 ++++++------- 3 files changed, 17 insertions(+), 21 deletions(-) diff --git a/src/main/java/edu/ie3/datamodel/models/input/thermal/CylindricalStorageInput.java b/src/main/java/edu/ie3/datamodel/models/input/thermal/CylindricalStorageInput.java index e422d5fb9..a5c460f38 100644 --- a/src/main/java/edu/ie3/datamodel/models/input/thermal/CylindricalStorageInput.java +++ b/src/main/java/edu/ie3/datamodel/models/input/thermal/CylindricalStorageInput.java @@ -162,8 +162,7 @@ public String toString() { * CylindricalStorageInput} */ public static class CylindricalStorageInputCopyBuilder - extends AssetInput.AssetInputCopyBuilder< - CylindricalStorageInput.CylindricalStorageInputCopyBuilder> { + extends AssetInput.AssetInputCopyBuilder { private ComparableQuantity storageVolumeLvl; private ComparableQuantity storageVolumeLvlMin; @@ -195,38 +194,36 @@ public CylindricalStorageInput build() { c); } - public CylindricalStorageInput.CylindricalStorageInputCopyBuilder storageVolumeLvl( + public CylindricalStorageInputCopyBuilder storageVolumeLvl( ComparableQuantity storageVolumeLvl) { this.storageVolumeLvl = storageVolumeLvl; return this; } - public CylindricalStorageInput.CylindricalStorageInputCopyBuilder storageVolumeLvlMin( + public CylindricalStorageInputCopyBuilder storageVolumeLvlMin( ComparableQuantity storageVolumeLvlMin) { this.storageVolumeLvlMin = storageVolumeLvlMin; return this; } - public CylindricalStorageInput.CylindricalStorageInputCopyBuilder inletTemp( - ComparableQuantity inletTemp) { + public CylindricalStorageInputCopyBuilder inletTemp(ComparableQuantity inletTemp) { this.inletTemp = inletTemp; return this; } - public CylindricalStorageInput.CylindricalStorageInputCopyBuilder returnTemp( + public CylindricalStorageInputCopyBuilder returnTemp( ComparableQuantity returnTemp) { this.returnTemp = returnTemp; return this; } - public CylindricalStorageInput.CylindricalStorageInputCopyBuilder c( - ComparableQuantity c) { + public CylindricalStorageInputCopyBuilder c(ComparableQuantity c) { this.c = c; return this; } @Override - protected CylindricalStorageInput.CylindricalStorageInputCopyBuilder childInstance() { + protected CylindricalStorageInputCopyBuilder childInstance() { return this; } } diff --git a/src/main/java/edu/ie3/datamodel/models/input/thermal/ThermalBusInput.java b/src/main/java/edu/ie3/datamodel/models/input/thermal/ThermalBusInput.java index b4e9d812c..06b1bf6ee 100644 --- a/src/main/java/edu/ie3/datamodel/models/input/thermal/ThermalBusInput.java +++ b/src/main/java/edu/ie3/datamodel/models/input/thermal/ThermalBusInput.java @@ -35,8 +35,8 @@ public ThermalBusInput(UUID uuid, String id) { super(uuid, id); } - public ThermalBusInput.ThermalBusInputCopyBuilder copy() { - return new ThermalBusInput.ThermalBusInputCopyBuilder(this); + public ThermalBusInputCopyBuilder copy() { + return new ThermalBusInputCopyBuilder(this); } /** @@ -45,7 +45,7 @@ public ThermalBusInput.ThermalBusInputCopyBuilder copy() { * ThermalBusInput} */ public static class ThermalBusInputCopyBuilder - extends AssetInput.AssetInputCopyBuilder { + extends AssetInput.AssetInputCopyBuilder { private ThermalBusInputCopyBuilder(ThermalBusInput entity) { super(entity); @@ -57,7 +57,7 @@ public ThermalBusInput build() { } @Override - protected ThermalBusInput.ThermalBusInputCopyBuilder childInstance() { + protected ThermalBusInputCopyBuilder childInstance() { return this; } } diff --git a/src/main/java/edu/ie3/datamodel/models/input/thermal/ThermalHouseInput.java b/src/main/java/edu/ie3/datamodel/models/input/thermal/ThermalHouseInput.java index f8669b8b2..d5c645a96 100644 --- a/src/main/java/edu/ie3/datamodel/models/input/thermal/ThermalHouseInput.java +++ b/src/main/java/edu/ie3/datamodel/models/input/thermal/ThermalHouseInput.java @@ -70,8 +70,8 @@ public ComparableQuantity getEthCapa() { return ethCapa; } - public ThermalHouseInput.ThermalHouseInputCopyBuilder copy() { - return new ThermalHouseInput.ThermalHouseInputCopyBuilder(this); + public ThermalHouseInputCopyBuilder copy() { + return new ThermalHouseInputCopyBuilder(this); } @Override @@ -114,7 +114,7 @@ public String toString() { * ThermalHouseInput} */ public static class ThermalHouseInputCopyBuilder - extends AssetInput.AssetInputCopyBuilder { + extends AssetInput.AssetInputCopyBuilder { private ComparableQuantity ethLosses; private ComparableQuantity ethCapa; @@ -137,20 +137,19 @@ public ThermalHouseInput build() { ethCapa); } - public ThermalHouseInput.ThermalHouseInputCopyBuilder ethLosses( + public ThermalHouseInputCopyBuilder ethLosses( ComparableQuantity ethLosses) { this.ethLosses = ethLosses; return this; } - public ThermalHouseInput.ThermalHouseInputCopyBuilder ethCapa( - ComparableQuantity ethCapa) { + public ThermalHouseInputCopyBuilder ethCapa(ComparableQuantity ethCapa) { this.ethCapa = ethCapa; return this; } @Override - protected ThermalHouseInput.ThermalHouseInputCopyBuilder childInstance() { + protected ThermalHouseInputCopyBuilder childInstance() { return this; } } From eeefc1e7353b329f291f7e9ac33cb4253698342a Mon Sep 17 00:00:00 2001 From: ahamshubham Date: Thu, 28 Jan 2021 18:12:48 +0100 Subject: [PATCH 3/5] #270 Removed static declarations in order to access getThermalBus function --- .../models/input/thermal/CylindricalStorageInput.java | 4 ++-- .../ie3/datamodel/models/input/thermal/ThermalBusInput.java | 2 +- .../ie3/datamodel/models/input/thermal/ThermalHouseInput.java | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/edu/ie3/datamodel/models/input/thermal/CylindricalStorageInput.java b/src/main/java/edu/ie3/datamodel/models/input/thermal/CylindricalStorageInput.java index a5c460f38..b5d652db0 100644 --- a/src/main/java/edu/ie3/datamodel/models/input/thermal/CylindricalStorageInput.java +++ b/src/main/java/edu/ie3/datamodel/models/input/thermal/CylindricalStorageInput.java @@ -161,7 +161,7 @@ public String toString() { * with altered field values. For detailed field descriptions refer to java docs of {@link * CylindricalStorageInput} */ - public static class CylindricalStorageInputCopyBuilder + public class CylindricalStorageInputCopyBuilder extends AssetInput.AssetInputCopyBuilder { private ComparableQuantity storageVolumeLvl; @@ -186,7 +186,7 @@ public CylindricalStorageInput build() { getId(), getOperator(), getOperationTime(), - build().getThermalBus(), + getThermalBus(), storageVolumeLvl, storageVolumeLvlMin, inletTemp, diff --git a/src/main/java/edu/ie3/datamodel/models/input/thermal/ThermalBusInput.java b/src/main/java/edu/ie3/datamodel/models/input/thermal/ThermalBusInput.java index 06b1bf6ee..720e6272f 100644 --- a/src/main/java/edu/ie3/datamodel/models/input/thermal/ThermalBusInput.java +++ b/src/main/java/edu/ie3/datamodel/models/input/thermal/ThermalBusInput.java @@ -44,7 +44,7 @@ public ThermalBusInputCopyBuilder copy() { * altered field values. For detailed field descriptions refer to java docs of {@link * ThermalBusInput} */ - public static class ThermalBusInputCopyBuilder + public class ThermalBusInputCopyBuilder extends AssetInput.AssetInputCopyBuilder { private ThermalBusInputCopyBuilder(ThermalBusInput entity) { diff --git a/src/main/java/edu/ie3/datamodel/models/input/thermal/ThermalHouseInput.java b/src/main/java/edu/ie3/datamodel/models/input/thermal/ThermalHouseInput.java index d5c645a96..a7bc58cdd 100644 --- a/src/main/java/edu/ie3/datamodel/models/input/thermal/ThermalHouseInput.java +++ b/src/main/java/edu/ie3/datamodel/models/input/thermal/ThermalHouseInput.java @@ -113,7 +113,7 @@ public String toString() { * altered field values. For detailed field descriptions refer to java docs of {@link * ThermalHouseInput} */ - public static class ThermalHouseInputCopyBuilder + public class ThermalHouseInputCopyBuilder extends AssetInput.AssetInputCopyBuilder { private ComparableQuantity ethLosses; @@ -132,7 +132,7 @@ public ThermalHouseInput build() { getId(), getOperator(), getOperationTime(), - build().getThermalBus(), + getThermalBus(), ethLosses, ethCapa); } From 69b266eab0411927d714e45a5ec77b42ea9f24e7 Mon Sep 17 00:00:00 2001 From: ahamshubham Date: Thu, 28 Jan 2021 18:14:44 +0100 Subject: [PATCH 4/5] #270 Added test cases to check the builder implementations added to thermal input models --- .../CylindricalStorageInputTest.groovy | 38 +++++++++++++++++++ .../input/thermal/ThermalBusInputTest.groovy | 30 +++++++++++++++ .../thermal/ThermalHouseInputTest.groovy | 34 +++++++++++++++++ 3 files changed, 102 insertions(+) create mode 100644 src/test/groovy/edu/ie3/datamodel/models/input/thermal/CylindricalStorageInputTest.groovy create mode 100644 src/test/groovy/edu/ie3/datamodel/models/input/thermal/ThermalBusInputTest.groovy create mode 100644 src/test/groovy/edu/ie3/datamodel/models/input/thermal/ThermalHouseInputTest.groovy diff --git a/src/test/groovy/edu/ie3/datamodel/models/input/thermal/CylindricalStorageInputTest.groovy b/src/test/groovy/edu/ie3/datamodel/models/input/thermal/CylindricalStorageInputTest.groovy new file mode 100644 index 000000000..bbfc8b35f --- /dev/null +++ b/src/test/groovy/edu/ie3/datamodel/models/input/thermal/CylindricalStorageInputTest.groovy @@ -0,0 +1,38 @@ +/* + * © 2021. TU Dortmund University, + * Institute of Energy Systems, Energy Efficiency and Energy Economics, + * Research group Distribution grid planning and operation + */ +package edu.ie3.datamodel.models.input.thermal + +import edu.ie3.test.common.ThermalUnitInputTestData +import spock.lang.Specification + + +class CylindricalStorageInputTest extends Specification { + + def "A CylindricalStorageInput copy method should work as expected"() { + given: + def cylindricalStorageInput = ThermalUnitInputTestData.cylindricStorageInput + + when: + def alteredUnit = cylindricalStorageInput.copy().storageVolumeLvl(ThermalUnitInputTestData.storageVolumeLvl) + .storageVolumeLvlMin(ThermalUnitInputTestData.storageVolumeLvlMin).inletTemp(ThermalUnitInputTestData.inletTemp) + .returnTemp(ThermalUnitInputTestData.returnTemp).c(ThermalUnitInputTestData.c).build() + + + then: + alteredUnit.with { + assert uuid == cylindricalStorageInput.uuid + assert id == cylindricalStorageInput.id + assert operator == cylindricalStorageInput.operator + assert operationTime == cylindricalStorageInput.operationTime + assert thermalBus == cylindricalStorageInput.thermalBus + assert storageVolumeLvl == ThermalUnitInputTestData.storageVolumeLvl + assert storageVolumeLvlMin == ThermalUnitInputTestData.storageVolumeLvlMin + assert inletTemp == ThermalUnitInputTestData.inletTemp + assert returnTemp == ThermalUnitInputTestData.returnTemp + assert c == ThermalUnitInputTestData.c + } + } +} diff --git a/src/test/groovy/edu/ie3/datamodel/models/input/thermal/ThermalBusInputTest.groovy b/src/test/groovy/edu/ie3/datamodel/models/input/thermal/ThermalBusInputTest.groovy new file mode 100644 index 000000000..36db74929 --- /dev/null +++ b/src/test/groovy/edu/ie3/datamodel/models/input/thermal/ThermalBusInputTest.groovy @@ -0,0 +1,30 @@ +/* + * © 2021. TU Dortmund University, + * Institute of Energy Systems, Energy Efficiency and Energy Economics, + * Research group Distribution grid planning and operation + */ +package edu.ie3.datamodel.models.input.thermal + +import edu.ie3.test.common.ThermalUnitInputTestData +import spock.lang.Specification + + +class ThermalBusInputTest extends Specification { + + def "A ThermalBusInput copy method should work as expected"() { + given: + def thermalBusInput = ThermalUnitInputTestData.thermalBus + + when: + def alteredUnit = thermalBusInput.copy().build() + + + then: + alteredUnit.with { + assert uuid == thermalBusInput.uuid + assert id == thermalBusInput.id + assert operator == thermalBusInput.operator + assert operationTime == thermalBusInput.operationTime + } + } +} diff --git a/src/test/groovy/edu/ie3/datamodel/models/input/thermal/ThermalHouseInputTest.groovy b/src/test/groovy/edu/ie3/datamodel/models/input/thermal/ThermalHouseInputTest.groovy new file mode 100644 index 000000000..6685b2b96 --- /dev/null +++ b/src/test/groovy/edu/ie3/datamodel/models/input/thermal/ThermalHouseInputTest.groovy @@ -0,0 +1,34 @@ +/* + * © 2021. TU Dortmund University, + * Institute of Energy Systems, Energy Efficiency and Energy Economics, + * Research group Distribution grid planning and operation + */ +package edu.ie3.datamodel.models.input.thermal + +import edu.ie3.test.common.ThermalUnitInputTestData +import spock.lang.Specification + + +class ThermalHouseInputTest extends Specification { + + def "A ThermalHouseInput copy method should work as expected"() { + given: + def thermalHouseInput = ThermalUnitInputTestData.thermalHouseInput + + when: + def alteredUnit = thermalHouseInput.copy().ethLosses(ThermalUnitInputTestData.thermalConductance) + .ethCapa(ThermalUnitInputTestData.ethCapa).build() + + + then: + alteredUnit.with { + assert uuid == thermalHouseInput.uuid + assert id == thermalHouseInput.id + assert operator == thermalHouseInput.operator + assert operationTime == thermalHouseInput.operationTime + assert thermalBus == thermalHouseInput.thermalBus + assert ethLosses == ThermalUnitInputTestData.thermalConductance + assert ethCapa == ThermalUnitInputTestData.ethCapa + } + } +} From 3f73a037909deb0e8d02cc599053406dd4052492 Mon Sep 17 00:00:00 2001 From: ahamshubham Date: Mon, 8 Feb 2021 07:08:30 +0100 Subject: [PATCH 5/5] #270 Added ThermalUnitInpuiutCopyBuilder class, modified several thermal input models copy builder implementations and associated test cases --- .../thermal/CylindricalStorageInput.java | 5 ++- .../models/input/thermal/ThermalBusInput.java | 2 +- .../input/thermal/ThermalHouseInput.java | 5 ++- .../input/thermal/ThermalUnitInput.java | 31 +++++++++++++++++++ .../CylindricalStorageInputTest.groovy | 3 +- .../thermal/ThermalHouseInputTest.groovy | 2 +- 6 files changed, 39 insertions(+), 9 deletions(-) diff --git a/src/main/java/edu/ie3/datamodel/models/input/thermal/CylindricalStorageInput.java b/src/main/java/edu/ie3/datamodel/models/input/thermal/CylindricalStorageInput.java index b5d652db0..dd845d57b 100644 --- a/src/main/java/edu/ie3/datamodel/models/input/thermal/CylindricalStorageInput.java +++ b/src/main/java/edu/ie3/datamodel/models/input/thermal/CylindricalStorageInput.java @@ -7,7 +7,6 @@ import edu.ie3.datamodel.models.OperationTime; import edu.ie3.datamodel.models.StandardUnits; -import edu.ie3.datamodel.models.input.AssetInput; import edu.ie3.datamodel.models.input.OperatorInput; import edu.ie3.util.quantities.interfaces.SpecificHeatCapacity; import java.util.Objects; @@ -161,8 +160,8 @@ public String toString() { * with altered field values. For detailed field descriptions refer to java docs of {@link * CylindricalStorageInput} */ - public class CylindricalStorageInputCopyBuilder - extends AssetInput.AssetInputCopyBuilder { + public static class CylindricalStorageInputCopyBuilder + extends ThermalUnitInput.ThermalUnitInputCopyBuilder { private ComparableQuantity storageVolumeLvl; private ComparableQuantity storageVolumeLvlMin; diff --git a/src/main/java/edu/ie3/datamodel/models/input/thermal/ThermalBusInput.java b/src/main/java/edu/ie3/datamodel/models/input/thermal/ThermalBusInput.java index 720e6272f..06b1bf6ee 100644 --- a/src/main/java/edu/ie3/datamodel/models/input/thermal/ThermalBusInput.java +++ b/src/main/java/edu/ie3/datamodel/models/input/thermal/ThermalBusInput.java @@ -44,7 +44,7 @@ public ThermalBusInputCopyBuilder copy() { * altered field values. For detailed field descriptions refer to java docs of {@link * ThermalBusInput} */ - public class ThermalBusInputCopyBuilder + public static class ThermalBusInputCopyBuilder extends AssetInput.AssetInputCopyBuilder { private ThermalBusInputCopyBuilder(ThermalBusInput entity) { diff --git a/src/main/java/edu/ie3/datamodel/models/input/thermal/ThermalHouseInput.java b/src/main/java/edu/ie3/datamodel/models/input/thermal/ThermalHouseInput.java index a7bc58cdd..5cf681e8b 100644 --- a/src/main/java/edu/ie3/datamodel/models/input/thermal/ThermalHouseInput.java +++ b/src/main/java/edu/ie3/datamodel/models/input/thermal/ThermalHouseInput.java @@ -7,7 +7,6 @@ import edu.ie3.datamodel.models.OperationTime; import edu.ie3.datamodel.models.StandardUnits; -import edu.ie3.datamodel.models.input.AssetInput; import edu.ie3.datamodel.models.input.OperatorInput; import edu.ie3.util.quantities.interfaces.HeatCapacity; import edu.ie3.util.quantities.interfaces.ThermalConductance; @@ -113,8 +112,8 @@ public String toString() { * altered field values. For detailed field descriptions refer to java docs of {@link * ThermalHouseInput} */ - public class ThermalHouseInputCopyBuilder - extends AssetInput.AssetInputCopyBuilder { + public static class ThermalHouseInputCopyBuilder + extends ThermalUnitInput.ThermalUnitInputCopyBuilder { private ComparableQuantity ethLosses; private ComparableQuantity ethCapa; diff --git a/src/main/java/edu/ie3/datamodel/models/input/thermal/ThermalUnitInput.java b/src/main/java/edu/ie3/datamodel/models/input/thermal/ThermalUnitInput.java index fd93265d3..9d4e44891 100644 --- a/src/main/java/edu/ie3/datamodel/models/input/thermal/ThermalUnitInput.java +++ b/src/main/java/edu/ie3/datamodel/models/input/thermal/ThermalUnitInput.java @@ -78,4 +78,35 @@ public String toString() { + thermalBus.getUuid() + '}'; } + + /** + * Abstract class for all builders that build child entities of abstract class {@link + * ThermalUnitInput} + */ + protected abstract static class ThermalUnitInputCopyBuilder< + T extends ThermalUnitInput.ThermalUnitInputCopyBuilder> + extends AssetInputCopyBuilder { + + private ThermalBusInput thermalBus; + + protected ThermalUnitInputCopyBuilder(ThermalUnitInput entity) { + super(entity); + this.thermalBus = entity.getThermalBus(); + } + + public T thermalBus(ThermalBusInput thermalBus) { + this.thermalBus = thermalBus; + return childInstance(); + } + + protected ThermalBusInput getThermalBus() { + return thermalBus; + } + + @Override + public abstract ThermalUnitInput build(); + + @Override + protected abstract T childInstance(); + } } diff --git a/src/test/groovy/edu/ie3/datamodel/models/input/thermal/CylindricalStorageInputTest.groovy b/src/test/groovy/edu/ie3/datamodel/models/input/thermal/CylindricalStorageInputTest.groovy index bbfc8b35f..2cfad9e0e 100644 --- a/src/test/groovy/edu/ie3/datamodel/models/input/thermal/CylindricalStorageInputTest.groovy +++ b/src/test/groovy/edu/ie3/datamodel/models/input/thermal/CylindricalStorageInputTest.groovy @@ -18,7 +18,8 @@ class CylindricalStorageInputTest extends Specification { when: def alteredUnit = cylindricalStorageInput.copy().storageVolumeLvl(ThermalUnitInputTestData.storageVolumeLvl) .storageVolumeLvlMin(ThermalUnitInputTestData.storageVolumeLvlMin).inletTemp(ThermalUnitInputTestData.inletTemp) - .returnTemp(ThermalUnitInputTestData.returnTemp).c(ThermalUnitInputTestData.c).build() + .returnTemp(ThermalUnitInputTestData.returnTemp).c(ThermalUnitInputTestData.c) + .thermalBus(ThermalUnitInputTestData.thermalBus).build() then: diff --git a/src/test/groovy/edu/ie3/datamodel/models/input/thermal/ThermalHouseInputTest.groovy b/src/test/groovy/edu/ie3/datamodel/models/input/thermal/ThermalHouseInputTest.groovy index 6685b2b96..2111ac8ee 100644 --- a/src/test/groovy/edu/ie3/datamodel/models/input/thermal/ThermalHouseInputTest.groovy +++ b/src/test/groovy/edu/ie3/datamodel/models/input/thermal/ThermalHouseInputTest.groovy @@ -17,7 +17,7 @@ class ThermalHouseInputTest extends Specification { when: def alteredUnit = thermalHouseInput.copy().ethLosses(ThermalUnitInputTestData.thermalConductance) - .ethCapa(ThermalUnitInputTestData.ethCapa).build() + .ethCapa(ThermalUnitInputTestData.ethCapa).thermalBus(ThermalUnitInputTestData.thermalBus).build() then: