From 515611e9d363e0b509d14fd15cd75ffa973219e7 Mon Sep 17 00:00:00 2001 From: ahamshubham Date: Thu, 21 Jan 2021 23:41:05 +0100 Subject: [PATCH 01/17] #236 Added SystemParticipantWithHeatResult class and modified ChpResult accordingly --- .../SystemParticipantResultFactory.java | 5 +- .../models/result/system/ChpResult.java | 16 ++- .../SystemParticipantWithHeatResult.java | 101 ++++++++++++++++++ 3 files changed, 115 insertions(+), 7 deletions(-) create mode 100644 src/main/java/edu/ie3/datamodel/models/result/system/SystemParticipantWithHeatResult.java diff --git a/src/main/java/edu/ie3/datamodel/io/factory/result/SystemParticipantResultFactory.java b/src/main/java/edu/ie3/datamodel/io/factory/result/SystemParticipantResultFactory.java index b6d170be9..ef8fce5f8 100644 --- a/src/main/java/edu/ie3/datamodel/io/factory/result/SystemParticipantResultFactory.java +++ b/src/main/java/edu/ie3/datamodel/io/factory/result/SystemParticipantResultFactory.java @@ -96,9 +96,10 @@ protected SystemParticipantResult buildModel(SimpleEntityData data) { .map(uuid -> new EvcsResult(uuid, zdtTime, inputModelUuid, p, q)) .orElseGet(() -> new EvcsResult(zdtTime, inputModelUuid, p, q)); } else if (entityClass.equals(ChpResult.class)) { + ComparableQuantity qDot = data.getQuantity(Q_DOT, StandardUnits.Q_DOT_RESULT); return uuidOpt - .map(uuid -> new ChpResult(uuid, zdtTime, inputModelUuid, p, q)) - .orElseGet(() -> new ChpResult(zdtTime, inputModelUuid, p, q)); + .map(uuid -> new ChpResult(uuid, zdtTime, inputModelUuid, p, q, qDot)) + .orElseGet(() -> new ChpResult(zdtTime, inputModelUuid, p, q, qDot)); } else if (entityClass.equals(WecResult.class)) { return uuidOpt .map(uuid -> new WecResult(uuid, zdtTime, inputModelUuid, p, q)) diff --git a/src/main/java/edu/ie3/datamodel/models/result/system/ChpResult.java b/src/main/java/edu/ie3/datamodel/models/result/system/ChpResult.java index 655b7a245..3ebef851d 100644 --- a/src/main/java/edu/ie3/datamodel/models/result/system/ChpResult.java +++ b/src/main/java/edu/ie3/datamodel/models/result/system/ChpResult.java @@ -11,7 +11,7 @@ import tech.units.indriya.ComparableQuantity; /** Represents calculation results of a {@link edu.ie3.datamodel.models.input.system.ChpInput} */ -public class ChpResult extends SystemParticipantResult { +public class ChpResult extends SystemParticipantWithHeatResult { /** * Standard constructor with automatic uuid generation. @@ -20,13 +20,15 @@ public class ChpResult extends SystemParticipantResult { * @param inputModel uuid of the input model that produces the result * @param p active power output normally provided in MW * @param q reactive power output normally provided in MVAr + * @param qDot thermal power output normally provided in MW */ public ChpResult( ZonedDateTime time, UUID inputModel, ComparableQuantity p, - ComparableQuantity q) { - super(time, inputModel, p, q); + ComparableQuantity q, + ComparableQuantity qDot) { + super(time, inputModel, p, q, qDot); } /** @@ -38,14 +40,16 @@ public ChpResult( * @param inputModel uuid of the input model that produces the result * @param p active power output normally provided in MW * @param q reactive power output normally provided in MVAr + * @param qDot thermal power output normally provided in MW */ public ChpResult( UUID uuid, ZonedDateTime time, UUID inputModel, ComparableQuantity p, - ComparableQuantity q) { - super(uuid, time, inputModel, p, q); + ComparableQuantity q, + ComparableQuantity qDot) { + super(uuid, time, inputModel, p, q, qDot); } @Override @@ -61,6 +65,8 @@ public String toString() { + getP() + ", q=" + getQ() + + ", qDot=" + + getQDot() + '}'; } } diff --git a/src/main/java/edu/ie3/datamodel/models/result/system/SystemParticipantWithHeatResult.java b/src/main/java/edu/ie3/datamodel/models/result/system/SystemParticipantWithHeatResult.java new file mode 100644 index 000000000..8cc9c0d5d --- /dev/null +++ b/src/main/java/edu/ie3/datamodel/models/result/system/SystemParticipantWithHeatResult.java @@ -0,0 +1,101 @@ +/* + * © 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.result.system; + +import java.time.ZonedDateTime; +import java.util.Objects; +import java.util.UUID; +import javax.measure.quantity.Power; +import tech.units.indriya.ComparableQuantity; + +/** Abstract class that holds values common to result entities having heat result */ +public class SystemParticipantWithHeatResult extends SystemParticipantResult { + /** @param qDot thermal power output normally provided in MW */ + private ComparableQuantity qDot; + + /** + * @param time date and time when the result is produced + * @param inputModel uuid of the input model that produces the result + * @param p active power output normally provided in MW + * @param q reactive power output normally provided in MVAr + * @param qDot thermal power output normally provided in MW + */ + public SystemParticipantWithHeatResult( + ZonedDateTime time, + UUID inputModel, + ComparableQuantity p, + ComparableQuantity q, + ComparableQuantity qDot) { + super(time, inputModel, p, q); + this.qDot = qDot; + } + + /** + * @param uuid uuid of this result entity, for automatic uuid generation use primary constructor + * above + * @param time date and time when the result is produced + * @param inputModel uuid of the input model that produces the result + * @param p active power output normally provided in MW + * @param q reactive power output normally provided in MVAr + * @param qDot thermal power output normally provided in MW + */ + public SystemParticipantWithHeatResult( + UUID uuid, + ZonedDateTime time, + UUID inputModel, + ComparableQuantity p, + ComparableQuantity q, + ComparableQuantity qDot) { + super(uuid, time, inputModel, p, q); + this.qDot = qDot; + } + + /** + * Thermal power output of the decentralised energy resource asset. Convention: Generated powers + * are given in negative values. + * + * @return Thermal power output in MW. + */ + public ComparableQuantity getQDot() { + return qDot; + } + + public void setQ(ComparableQuantity qDot) { + this.qDot = qDot; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + if (!super.equals(o)) return false; + SystemParticipantWithHeatResult that = (SystemParticipantWithHeatResult) o; + return qDot.equals(that.qDot); + } + + @Override + public int hashCode() { + return Objects.hash(super.hashCode(), qDot); + } + + @Override + public String toString() { + return "SystemParticipantWithHeatResult{" + + "uuid=" + + getUuid() + + ", time=" + + getTime() + + ", inputModel=" + + getInputModel() + + ", p=" + + getP() + + ", q=" + + getQ() + + ", qDot=" + + getQDot() + + '}'; + } +} From b039c9ce03d9c69a19e7cbbcf451bd563daea491 Mon Sep 17 00:00:00 2001 From: ahamshubham Date: Sun, 24 Jan 2021 19:47:43 +0100 Subject: [PATCH 02/17] #269 Modified test cases due to the addition of thermal power variable in the ChpResult class --- .../io/factory/result/SystemParticipantResultFactory.java | 3 ++- .../java/edu/ie3/datamodel/io/processor/Processor.java | 8 ++++++++ .../result/SystemParticipantResultFactoryTest.groovy | 5 ++++- .../io/processor/result/ResultEntityProcessorTest.groovy | 6 +++--- 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/main/java/edu/ie3/datamodel/io/factory/result/SystemParticipantResultFactory.java b/src/main/java/edu/ie3/datamodel/io/factory/result/SystemParticipantResultFactory.java index ef8fce5f8..25c1baf72 100644 --- a/src/main/java/edu/ie3/datamodel/io/factory/result/SystemParticipantResultFactory.java +++ b/src/main/java/edu/ie3/datamodel/io/factory/result/SystemParticipantResultFactory.java @@ -55,7 +55,8 @@ protected List> getFields(SimpleEntityData data) { optionalFields = expandSet(minConstructorParams, ENTITY_UUID); } - if (data.getTargetClass().equals(HpResult.class)) { + if (data.getTargetClass().equals(HpResult.class) + || data.getTargetClass().equals(ChpResult.class)) { minConstructorParams = newSet(TIME, INPUT_MODEL, POWER, REACTIVE_POWER, Q_DOT); optionalFields = expandSet(minConstructorParams, ENTITY_UUID); } 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 b219de30f..d56b85998 100644 --- a/src/main/java/edu/ie3/datamodel/io/processor/Processor.java +++ b/src/main/java/edu/ie3/datamodel/io/processor/Processor.java @@ -57,6 +57,8 @@ public abstract class Processor { private static final String VOLT_LVL = NodeInputFactory.VOLT_LVL; private static final String V_RATED = NodeInputFactory.V_RATED; + private static final String Q_DOT = "qDot"; + private static final String PARALLEL_DEVICES = "parallelDevices"; /** @@ -137,6 +139,12 @@ protected SortedMap mapFieldNameToGetter( fieldName = V_RATED; resFieldNameToMethod.put(VOLT_LVL, pd.getReadMethod()); } + + // Rename the fieldName for thermal power + if (fieldName.equalsIgnoreCase(Q_DOT)) { + fieldName = Q_DOT; + } + resFieldNameToMethod.put(fieldName, pd.getReadMethod()); }); diff --git a/src/test/groovy/edu/ie3/datamodel/io/factory/result/SystemParticipantResultFactoryTest.groovy b/src/test/groovy/edu/ie3/datamodel/io/factory/result/SystemParticipantResultFactoryTest.groovy index db60c1855..e01e40235 100644 --- a/src/test/groovy/edu/ie3/datamodel/io/factory/result/SystemParticipantResultFactoryTest.groovy +++ b/src/test/groovy/edu/ie3/datamodel/io/factory/result/SystemParticipantResultFactoryTest.groovy @@ -49,7 +49,7 @@ class SystemParticipantResultFactoryTest extends Specification implements Factor parameter["soc"] = "10" } - if(modelClass == HpResult){ + if(modelClass == HpResult || modelClass == ChpResult){ parameter["qDot"] = "1" } @@ -75,6 +75,9 @@ class SystemParticipantResultFactoryTest extends Specification implements Factor if(modelClass == HpResult){ assert(((HpResult)result.get()).qDot == getQuant(parameter["qDot"], StandardUnits.Q_DOT_RESULT)) } + if(modelClass == ChpResult){ + assert(((ChpResult)result.get()).getQDot() == getQuant(parameter["qDot"], StandardUnits.Q_DOT_RESULT)) + } where: modelClass || resultingModelClass diff --git a/src/test/groovy/edu/ie3/datamodel/io/processor/result/ResultEntityProcessorTest.groovy b/src/test/groovy/edu/ie3/datamodel/io/processor/result/ResultEntityProcessorTest.groovy index 68194525f..04cb4b5d5 100644 --- a/src/test/groovy/edu/ie3/datamodel/io/processor/result/ResultEntityProcessorTest.groovy +++ b/src/test/groovy/edu/ie3/datamodel/io/processor/result/ResultEntityProcessorTest.groovy @@ -56,7 +56,7 @@ class ResultEntityProcessorTest extends Specification { time : '2020-01-30T17:26:44Z[UTC]'] @Shared - def expectedHpResults = [uuid : '22bea5fc-2cb2-4c61-beb9-b476e0107f52', + def expectedQDotResults = [uuid : '22bea5fc-2cb2-4c61-beb9-b476e0107f52', inputModel: '22bea5fc-2cb2-4c61-beb9-b476e0107f52', p : '0.01', q : '0.01', @@ -84,10 +84,10 @@ class ResultEntityProcessorTest extends Specification { EvResult | new EvResult(uuid, ZonedDateTime.parse("2020-01-30T17:26:44Z[UTC]"), inputModel, p, q, soc) || expectedSocResults PvResult | new PvResult(uuid, ZonedDateTime.parse("2020-01-30T17:26:44Z[UTC]"), inputModel, p, q) || expectedStandardResults EvcsResult | new EvcsResult(uuid, ZonedDateTime.parse("2020-01-30T17:26:44Z[UTC]"), inputModel, p, q) || expectedStandardResults - ChpResult | new ChpResult(uuid, ZonedDateTime.parse("2020-01-30T17:26:44Z[UTC]"), inputModel, p, q) || expectedStandardResults + ChpResult | new ChpResult(uuid, ZonedDateTime.parse("2020-01-30T17:26:44Z[UTC]"), inputModel, p, q, qDot) || expectedQDotResults WecResult | new WecResult(uuid, ZonedDateTime.parse("2020-01-30T17:26:44Z[UTC]"), inputModel, p, q) || expectedStandardResults StorageResult | new StorageResult(uuid, ZonedDateTime.parse("2020-01-30T17:26:44Z[UTC]"), inputModel, p, q, soc) || expectedSocResults - HpResult | new HpResult(uuid, ZonedDateTime.parse("2020-01-30T17:26:44Z[UTC]"), inputModel, p, q, qDot) || expectedHpResults + HpResult | new HpResult(uuid, ZonedDateTime.parse("2020-01-30T17:26:44Z[UTC]"), inputModel, p, q, qDot) || expectedQDotResults } From 819cc418bf7e33fad55918c63fd54b75f76513c0 Mon Sep 17 00:00:00 2001 From: ahamshubham Date: Sun, 24 Jan 2021 19:59:18 +0100 Subject: [PATCH 03/17] #269 Fixed codacy static code analysis issues --- .../result/SystemParticipantResultFactoryTest.groovy | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/test/groovy/edu/ie3/datamodel/io/factory/result/SystemParticipantResultFactoryTest.groovy b/src/test/groovy/edu/ie3/datamodel/io/factory/result/SystemParticipantResultFactoryTest.groovy index e01e40235..bf2bd6fb1 100644 --- a/src/test/groovy/edu/ie3/datamodel/io/factory/result/SystemParticipantResultFactoryTest.groovy +++ b/src/test/groovy/edu/ie3/datamodel/io/factory/result/SystemParticipantResultFactoryTest.groovy @@ -49,7 +49,7 @@ class SystemParticipantResultFactoryTest extends Specification implements Factor parameter["soc"] = "10" } - if(modelClass == HpResult || modelClass == ChpResult){ + if(modelClass == HpResult || modelClass == ChpResult) { parameter["qDot"] = "1" } @@ -69,13 +69,16 @@ class SystemParticipantResultFactoryTest extends Specification implements Factor if (modelClass == EvResult) { assert (((EvResult) result.get()).soc == getQuant(parameter["soc"], Units.PERCENT)) } - if(modelClass ==StorageResult){ + + if(modelClass ==StorageResult) { assert (((StorageResult) result.get()).soc == getQuant(parameter["soc"], Units.PERCENT)) } - if(modelClass == HpResult){ + + if(modelClass == HpResult) { assert(((HpResult)result.get()).qDot == getQuant(parameter["qDot"], StandardUnits.Q_DOT_RESULT)) } - if(modelClass == ChpResult){ + + if(modelClass == ChpResult) { assert(((ChpResult)result.get()).getQDot() == getQuant(parameter["qDot"], StandardUnits.Q_DOT_RESULT)) } From 8ba0441b2330d4d55cdae742fd27f64e1a35b680 Mon Sep 17 00:00:00 2001 From: ahamshubham Date: Wed, 27 Jan 2021 09:06:05 +0100 Subject: [PATCH 04/17] #269 Fixed codacy static code analysis issues --- .../io/factory/result/SystemParticipantResultFactoryTest.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/groovy/edu/ie3/datamodel/io/factory/result/SystemParticipantResultFactoryTest.groovy b/src/test/groovy/edu/ie3/datamodel/io/factory/result/SystemParticipantResultFactoryTest.groovy index bf2bd6fb1..9e2776b7f 100644 --- a/src/test/groovy/edu/ie3/datamodel/io/factory/result/SystemParticipantResultFactoryTest.groovy +++ b/src/test/groovy/edu/ie3/datamodel/io/factory/result/SystemParticipantResultFactoryTest.groovy @@ -70,7 +70,7 @@ class SystemParticipantResultFactoryTest extends Specification implements Factor assert (((EvResult) result.get()).soc == getQuant(parameter["soc"], Units.PERCENT)) } - if(modelClass ==StorageResult) { + if(modelClass == StorageResult) { assert (((StorageResult) result.get()).soc == getQuant(parameter["soc"], Units.PERCENT)) } From 8fc8448eeb4ccc850008ec4348720fee4e2207dd Mon Sep 17 00:00:00 2001 From: ahamshubham Date: Wed, 27 Jan 2021 09:21:03 +0100 Subject: [PATCH 05/17] #269 Fixed codacy static code analysis issues --- .../result/SystemParticipantResultFactoryTest.groovy | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/test/groovy/edu/ie3/datamodel/io/factory/result/SystemParticipantResultFactoryTest.groovy b/src/test/groovy/edu/ie3/datamodel/io/factory/result/SystemParticipantResultFactoryTest.groovy index 9e2776b7f..d76befd79 100644 --- a/src/test/groovy/edu/ie3/datamodel/io/factory/result/SystemParticipantResultFactoryTest.groovy +++ b/src/test/groovy/edu/ie3/datamodel/io/factory/result/SystemParticipantResultFactoryTest.groovy @@ -49,7 +49,7 @@ class SystemParticipantResultFactoryTest extends Specification implements Factor parameter["soc"] = "10" } - if(modelClass == HpResult || modelClass == ChpResult) { + if (modelClass == HpResult || modelClass == ChpResult) { parameter["qDot"] = "1" } @@ -70,15 +70,15 @@ class SystemParticipantResultFactoryTest extends Specification implements Factor assert (((EvResult) result.get()).soc == getQuant(parameter["soc"], Units.PERCENT)) } - if(modelClass == StorageResult) { + if (modelClass == StorageResult) { assert (((StorageResult) result.get()).soc == getQuant(parameter["soc"], Units.PERCENT)) } - if(modelClass == HpResult) { + if (modelClass == HpResult) { assert(((HpResult)result.get()).qDot == getQuant(parameter["qDot"], StandardUnits.Q_DOT_RESULT)) } - if(modelClass == ChpResult) { + if (modelClass == ChpResult) { assert(((ChpResult)result.get()).getQDot() == getQuant(parameter["qDot"], StandardUnits.Q_DOT_RESULT)) } From 86daf49b153c0d1a7eb8f3feb772eff2c86334de Mon Sep 17 00:00:00 2001 From: ahamshubham Date: Wed, 27 Jan 2021 09:32:20 +0100 Subject: [PATCH 06/17] #269 Fixed codacy static code analysis issues --- .../edu/ie3/datamodel/models/result/system/ChpResult.java | 4 ++++ .../factory/result/SystemParticipantResultFactoryTest.groovy | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/edu/ie3/datamodel/models/result/system/ChpResult.java b/src/main/java/edu/ie3/datamodel/models/result/system/ChpResult.java index 3ebef851d..1fedc98f2 100644 --- a/src/main/java/edu/ie3/datamodel/models/result/system/ChpResult.java +++ b/src/main/java/edu/ie3/datamodel/models/result/system/ChpResult.java @@ -13,6 +13,8 @@ /** Represents calculation results of a {@link edu.ie3.datamodel.models.input.system.ChpInput} */ public class ChpResult extends SystemParticipantWithHeatResult { + private final ComparableQuantity qDot; + /** * Standard constructor with automatic uuid generation. * @@ -29,6 +31,7 @@ public ChpResult( ComparableQuantity q, ComparableQuantity qDot) { super(time, inputModel, p, q, qDot); + this.qDot = qDot; } /** @@ -50,6 +53,7 @@ public ChpResult( ComparableQuantity q, ComparableQuantity qDot) { super(uuid, time, inputModel, p, q, qDot); + this.qDot = qDot; } @Override diff --git a/src/test/groovy/edu/ie3/datamodel/io/factory/result/SystemParticipantResultFactoryTest.groovy b/src/test/groovy/edu/ie3/datamodel/io/factory/result/SystemParticipantResultFactoryTest.groovy index d76befd79..81c34839d 100644 --- a/src/test/groovy/edu/ie3/datamodel/io/factory/result/SystemParticipantResultFactoryTest.groovy +++ b/src/test/groovy/edu/ie3/datamodel/io/factory/result/SystemParticipantResultFactoryTest.groovy @@ -79,7 +79,7 @@ class SystemParticipantResultFactoryTest extends Specification implements Factor } if (modelClass == ChpResult) { - assert(((ChpResult)result.get()).getQDot() == getQuant(parameter["qDot"], StandardUnits.Q_DOT_RESULT)) + assert(((ChpResult)result.get()).qDot == getQuant(parameter["qDot"], StandardUnits.Q_DOT_RESULT)) } where: From 25031dda9244a57856b503aa6e015d9526a8b3d0 Mon Sep 17 00:00:00 2001 From: ahamshubham Date: Wed, 27 Jan 2021 12:43:12 +0100 Subject: [PATCH 07/17] #269 Fixed codacy static code analysis issues --- .../java/edu/ie3/datamodel/models/result/system/ChpResult.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/edu/ie3/datamodel/models/result/system/ChpResult.java b/src/main/java/edu/ie3/datamodel/models/result/system/ChpResult.java index 1fedc98f2..7a22c4a22 100644 --- a/src/main/java/edu/ie3/datamodel/models/result/system/ChpResult.java +++ b/src/main/java/edu/ie3/datamodel/models/result/system/ChpResult.java @@ -70,7 +70,7 @@ public String toString() { + ", q=" + getQ() + ", qDot=" - + getQDot() + + qDot + '}'; } } From 589a394282565a29ef89760ffaf0417de235ed35 Mon Sep 17 00:00:00 2001 From: ahamshubham Date: Fri, 29 Jan 2021 16:22:41 +0100 Subject: [PATCH 08/17] #270 Modified test cases to check the builder implementations --- .../edu/ie3/datamodel/io/sink/InfluxDbSinkIT.groovy | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/test/groovy/edu/ie3/datamodel/io/sink/InfluxDbSinkIT.groovy b/src/test/groovy/edu/ie3/datamodel/io/sink/InfluxDbSinkIT.groovy index 590df85e3..968b5e817 100644 --- a/src/test/groovy/edu/ie3/datamodel/io/sink/InfluxDbSinkIT.groovy +++ b/src/test/groovy/edu/ie3/datamodel/io/sink/InfluxDbSinkIT.groovy @@ -27,6 +27,7 @@ import spock.lang.Shared import spock.lang.Specification import tech.units.indriya.quantity.Quantities +import java.nio.file.StandardCopyOption import java.time.ZoneId import java.time.ZonedDateTime @@ -108,11 +109,14 @@ class InfluxDbSinkIT extends Specification { def chpResult1 = new ChpResult(ZonedDateTime.of(2020, 5, 3, 14, 18, 0, 0, ZoneId.of("UTC")), UUID.randomUUID(), Quantities.getQuantity(42.24, StandardUnits.ACTIVE_POWER_RESULT), - Quantities.getQuantity(-42.24, StandardUnits.REACTIVE_POWER_RESULT)) + Quantities.getQuantity(-42.24, StandardUnits.REACTIVE_POWER_RESULT), + Quantities.getQuantity(1.01, StandardUnits.Q_DOT_RESULT) + ) def chpResult2 = new ChpResult(ZonedDateTime.of(2020, 5, 3, 14, 19, 0, 0, ZoneId.of("UTC")), UUID.randomUUID(), Quantities.getQuantity(24.42, StandardUnits.ACTIVE_POWER_RESULT), - Quantities.getQuantity(-24.42, StandardUnits.REACTIVE_POWER_RESULT)) + Quantities.getQuantity(-24.42, StandardUnits.REACTIVE_POWER_RESULT), + Quantities.getQuantity(1.01, StandardUnits.Q_DOT_RESULT)) def entities = [ lineResult1, lineResult2, From 976853f29da59a527db36b02d9d934dfeff3d2c8 Mon Sep 17 00:00:00 2001 From: ahamshubham Date: Fri, 29 Jan 2021 16:58:39 +0100 Subject: [PATCH 09/17] #269 Added and modified functions as a part of code refinement --- .../ie3/datamodel/models/result/system/ChpResult.java | 9 +++++++++ .../result/system/SystemParticipantWithHeatResult.java | 4 ---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/main/java/edu/ie3/datamodel/models/result/system/ChpResult.java b/src/main/java/edu/ie3/datamodel/models/result/system/ChpResult.java index 7a22c4a22..5908a02e6 100644 --- a/src/main/java/edu/ie3/datamodel/models/result/system/ChpResult.java +++ b/src/main/java/edu/ie3/datamodel/models/result/system/ChpResult.java @@ -56,6 +56,15 @@ public ChpResult( this.qDot = qDot; } + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof ChpResult)) return false; + if (!super.equals(o)) return false; + ChpResult that = (ChpResult) o; + return qDot.equals(that.qDot); + } + @Override public String toString() { return "ChpResult{" diff --git a/src/main/java/edu/ie3/datamodel/models/result/system/SystemParticipantWithHeatResult.java b/src/main/java/edu/ie3/datamodel/models/result/system/SystemParticipantWithHeatResult.java index 8cc9c0d5d..8db228011 100644 --- a/src/main/java/edu/ie3/datamodel/models/result/system/SystemParticipantWithHeatResult.java +++ b/src/main/java/edu/ie3/datamodel/models/result/system/SystemParticipantWithHeatResult.java @@ -63,10 +63,6 @@ public ComparableQuantity getQDot() { return qDot; } - public void setQ(ComparableQuantity qDot) { - this.qDot = qDot; - } - @Override public boolean equals(Object o) { if (this == o) return true; From c05ed90224a3fabfee580c49c801f7adbc72a071 Mon Sep 17 00:00:00 2001 From: ahamshubham Date: Wed, 3 Feb 2021 07:57:14 +0100 Subject: [PATCH 10/17] #269 Added other test cases for testing functionalities of ChpResult and SystemParticipantWithHeatResult classes --- .../models/result/system/ChpResultTest.groovy | 58 +++++++++++++++++++ ...SystemParticipantWithHeatResultTest.groovy | 58 +++++++++++++++++++ .../common/SystemParticipantTestData.groovy | 11 ++++ 3 files changed, 127 insertions(+) create mode 100644 src/test/groovy/edu/ie3/datamodel/models/result/system/ChpResultTest.groovy create mode 100644 src/test/groovy/edu/ie3/datamodel/models/result/system/SystemParticipantWithHeatResultTest.groovy diff --git a/src/test/groovy/edu/ie3/datamodel/models/result/system/ChpResultTest.groovy b/src/test/groovy/edu/ie3/datamodel/models/result/system/ChpResultTest.groovy new file mode 100644 index 000000000..05f96d045 --- /dev/null +++ b/src/test/groovy/edu/ie3/datamodel/models/result/system/ChpResultTest.groovy @@ -0,0 +1,58 @@ +/* + * © 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.result.system + +import edu.ie3.datamodel.models.StandardUnits +import edu.ie3.test.common.SystemParticipantTestData +import spock.lang.Shared +import spock.lang.Specification +import tech.units.indriya.quantity.Quantities + +import javax.measure.Quantity +import javax.measure.quantity.Power +import java.time.ZonedDateTime + +class ChpResultTest extends Specification { + // static fields + @Shared + UUID uuid = SystemParticipantTestData.uuid + @Shared + ZonedDateTime time = SystemParticipantTestData.time + @Shared + UUID inputModel = SystemParticipantTestData.inputModel + @Shared + Quantity p = SystemParticipantTestData.p + @Shared + Quantity q = SystemParticipantTestData.q + @Shared + Quantity qDot = SystemParticipantTestData.qDot + + def "A ChpResult object should convert to a string correctly"() { + given: + def chpResultObj = new ChpResult(uuid, time, inputModel, p, q, qDot) + + when: + def outputString = chpResultObj.toString() + + then: + def expectedString = "ChpResult{uuid=" + uuid + ", time=" + time.toString() + ", inputModel=" + + inputModel.toString() + ", p=" + p.toString() + ", q=" + q.toString() + ", qDot=" + qDot.toString() + "}" + outputString.equals(expectedString) + } + + def "A ChpResult object can be compared to another object correctly"() { + given: + def chpResultObj = new ChpResult(uuid, time, inputModel, p, q, qDot) + + when: + def equivalentChpResultObj = new ChpResult(uuid, time, inputModel, p, q, qDot) + def differentChpResultObj = new ChpResult(uuid, time, inputModel, p, q, qDot.subtract(qDot)) + + then: + chpResultObj.equals(equivalentChpResultObj) + !chpResultObj.equals(differentChpResultObj) + } +} \ No newline at end of file diff --git a/src/test/groovy/edu/ie3/datamodel/models/result/system/SystemParticipantWithHeatResultTest.groovy b/src/test/groovy/edu/ie3/datamodel/models/result/system/SystemParticipantWithHeatResultTest.groovy new file mode 100644 index 000000000..b9b8b0cf3 --- /dev/null +++ b/src/test/groovy/edu/ie3/datamodel/models/result/system/SystemParticipantWithHeatResultTest.groovy @@ -0,0 +1,58 @@ +/* + * © 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.result.system + +import edu.ie3.datamodel.models.StandardUnits +import edu.ie3.test.common.SystemParticipantTestData +import spock.lang.Shared +import spock.lang.Specification +import tech.units.indriya.quantity.Quantities + +import javax.measure.Quantity +import javax.measure.quantity.Power +import java.time.ZonedDateTime + +class SystemParticipantWithHeatResultTest extends Specification { + // static fields + @Shared + UUID uuid = SystemParticipantTestData.uuid + @Shared + ZonedDateTime time = SystemParticipantTestData.time + @Shared + UUID inputModel = SystemParticipantTestData.inputModel + @Shared + Quantity p = SystemParticipantTestData.p + @Shared + Quantity q = SystemParticipantTestData.q + @Shared + Quantity qDot = SystemParticipantTestData.qDot + + def "A SystemParticipantWithHeatResult object should convert to a string correctly"() { + given: + def systemParticipantWithHeatResultObj = new SystemParticipantWithHeatResult(uuid, time, inputModel, p, q, qDot) + + when: + def outputString = systemParticipantWithHeatResultObj.toString() + + then: + def expectedString = "SystemParticipantWithHeatResult{uuid=" + uuid + ", time=" + time.toString() + ", inputModel=" + + inputModel.toString() + ", p=" + p.toString() + ", q=" + q.toString() + ", qDot=" + qDot.toString() + "}" + outputString.equals(expectedString) + } + + def "A SystemParticipantWithHeatResult object can be compared to another object correctly"() { + given: + def systemParticipantWithHeatResultObj = new SystemParticipantWithHeatResult(uuid, time, inputModel, p, q, qDot) + + when: + def equivalentSystemParticipantWithHeatResultObj = new SystemParticipantWithHeatResult(uuid, time, inputModel, p, q, qDot) + def differentSystemParticipantWithHeatResultObj = new SystemParticipantWithHeatResult(uuid, time, inputModel, p, q, qDot.subtract(qDot)) + + then: + systemParticipantWithHeatResultObj.equals(equivalentSystemParticipantWithHeatResultObj) + !systemParticipantWithHeatResultObj.equals(differentSystemParticipantWithHeatResultObj) + } +} \ No newline at end of file diff --git a/src/test/groovy/edu/ie3/test/common/SystemParticipantTestData.groovy b/src/test/groovy/edu/ie3/test/common/SystemParticipantTestData.groovy index 43fe1b5fb..386e79a81 100644 --- a/src/test/groovy/edu/ie3/test/common/SystemParticipantTestData.groovy +++ b/src/test/groovy/edu/ie3/test/common/SystemParticipantTestData.groovy @@ -23,10 +23,13 @@ import edu.ie3.datamodel.models.input.thermal.ThermalBusInput import edu.ie3.datamodel.models.input.thermal.ThermalStorageInput import edu.ie3.util.TimeUtil import edu.ie3.util.quantities.interfaces.* +import spock.lang.Shared import tech.units.indriya.ComparableQuantity import tech.units.indriya.quantity.Quantities +import javax.measure.Quantity import javax.measure.quantity.* +import java.time.ZonedDateTime import static edu.ie3.datamodel.models.StandardUnits.* import static edu.ie3.util.quantities.PowerSystemUnits.* @@ -324,4 +327,12 @@ class SystemParticipantTestData { hpInput ] + //ChpResult & SystemParticipantWithHeatResult + private static final UUID uuid = UUID.fromString("22bea5fc-2cb2-4c61-beb9-b476e0107f52") + private static final ZonedDateTime time = java.time.ZonedDateTime.parse("2020-01-30T17:26:44Z[UTC]") + private static final UUID inputModel = UUID.fromString("22bea5fc-2cb2-4c61-beb9-b476e0107f52") + private static final Quantity p = Quantities.getQuantity(10, StandardUnits.ACTIVE_POWER_IN) + private static final Quantity q = Quantities.getQuantity(10, StandardUnits.REACTIVE_POWER_IN) + private static final Quantity qDot = Quantities.getQuantity(1, StandardUnits.Q_DOT_RESULT) + } From e840c825ee03844dacaaaf57d82ace4e3fb17382 Mon Sep 17 00:00:00 2001 From: ahamshubham Date: Wed, 3 Feb 2021 08:06:20 +0100 Subject: [PATCH 11/17] #269 Added other test cases for testing functionalities of ChpResult and SystemParticipantWithHeatResult classes --- .../ie3/datamodel/models/result/system/ChpResultTest.groovy | 4 +--- .../result/system/SystemParticipantWithHeatResultTest.groovy | 4 +--- .../edu/ie3/test/common/SystemParticipantTestData.groovy | 3 --- 3 files changed, 2 insertions(+), 9 deletions(-) diff --git a/src/test/groovy/edu/ie3/datamodel/models/result/system/ChpResultTest.groovy b/src/test/groovy/edu/ie3/datamodel/models/result/system/ChpResultTest.groovy index 05f96d045..d87a40d05 100644 --- a/src/test/groovy/edu/ie3/datamodel/models/result/system/ChpResultTest.groovy +++ b/src/test/groovy/edu/ie3/datamodel/models/result/system/ChpResultTest.groovy @@ -5,11 +5,9 @@ */ package edu.ie3.datamodel.models.result.system -import edu.ie3.datamodel.models.StandardUnits import edu.ie3.test.common.SystemParticipantTestData import spock.lang.Shared import spock.lang.Specification -import tech.units.indriya.quantity.Quantities import javax.measure.Quantity import javax.measure.quantity.Power @@ -40,7 +38,7 @@ class ChpResultTest extends Specification { then: def expectedString = "ChpResult{uuid=" + uuid + ", time=" + time.toString() + ", inputModel=" + inputModel.toString() + ", p=" + p.toString() + ", q=" + q.toString() + ", qDot=" + qDot.toString() + "}" - outputString.equals(expectedString) + outputString == expectedString } def "A ChpResult object can be compared to another object correctly"() { diff --git a/src/test/groovy/edu/ie3/datamodel/models/result/system/SystemParticipantWithHeatResultTest.groovy b/src/test/groovy/edu/ie3/datamodel/models/result/system/SystemParticipantWithHeatResultTest.groovy index b9b8b0cf3..a56e4782e 100644 --- a/src/test/groovy/edu/ie3/datamodel/models/result/system/SystemParticipantWithHeatResultTest.groovy +++ b/src/test/groovy/edu/ie3/datamodel/models/result/system/SystemParticipantWithHeatResultTest.groovy @@ -5,11 +5,9 @@ */ package edu.ie3.datamodel.models.result.system -import edu.ie3.datamodel.models.StandardUnits import edu.ie3.test.common.SystemParticipantTestData import spock.lang.Shared import spock.lang.Specification -import tech.units.indriya.quantity.Quantities import javax.measure.Quantity import javax.measure.quantity.Power @@ -40,7 +38,7 @@ class SystemParticipantWithHeatResultTest extends Specification { then: def expectedString = "SystemParticipantWithHeatResult{uuid=" + uuid + ", time=" + time.toString() + ", inputModel=" + inputModel.toString() + ", p=" + p.toString() + ", q=" + q.toString() + ", qDot=" + qDot.toString() + "}" - outputString.equals(expectedString) + outputString == expectedString } def "A SystemParticipantWithHeatResult object can be compared to another object correctly"() { diff --git a/src/test/groovy/edu/ie3/test/common/SystemParticipantTestData.groovy b/src/test/groovy/edu/ie3/test/common/SystemParticipantTestData.groovy index 386e79a81..cf155d5df 100644 --- a/src/test/groovy/edu/ie3/test/common/SystemParticipantTestData.groovy +++ b/src/test/groovy/edu/ie3/test/common/SystemParticipantTestData.groovy @@ -23,7 +23,6 @@ import edu.ie3.datamodel.models.input.thermal.ThermalBusInput import edu.ie3.datamodel.models.input.thermal.ThermalStorageInput import edu.ie3.util.TimeUtil import edu.ie3.util.quantities.interfaces.* -import spock.lang.Shared import tech.units.indriya.ComparableQuantity import tech.units.indriya.quantity.Quantities @@ -32,8 +31,6 @@ import javax.measure.quantity.* import java.time.ZonedDateTime import static edu.ie3.datamodel.models.StandardUnits.* -import static edu.ie3.util.quantities.PowerSystemUnits.* -import static tech.units.indriya.unit.Units.* class SystemParticipantTestData { From 492ae15c611206457b2e85cca911e0907f03cadb Mon Sep 17 00:00:00 2001 From: ahamshubham Date: Wed, 3 Feb 2021 08:33:28 +0100 Subject: [PATCH 12/17] #269 Modified functionalities and test cases for ChpResult and SystemParticipantWithHeatResult classes --- .../datamodel/models/result/system/ChpResult.java | 9 --------- .../system/SystemParticipantWithHeatResult.java | 15 --------------- .../models/result/system/ChpResultTest.groovy | 13 ------------- .../SystemParticipantWithHeatResultTest.groovy | 13 ------------- 4 files changed, 50 deletions(-) diff --git a/src/main/java/edu/ie3/datamodel/models/result/system/ChpResult.java b/src/main/java/edu/ie3/datamodel/models/result/system/ChpResult.java index 5908a02e6..7a22c4a22 100644 --- a/src/main/java/edu/ie3/datamodel/models/result/system/ChpResult.java +++ b/src/main/java/edu/ie3/datamodel/models/result/system/ChpResult.java @@ -56,15 +56,6 @@ public ChpResult( this.qDot = qDot; } - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (!(o instanceof ChpResult)) return false; - if (!super.equals(o)) return false; - ChpResult that = (ChpResult) o; - return qDot.equals(that.qDot); - } - @Override public String toString() { return "ChpResult{" diff --git a/src/main/java/edu/ie3/datamodel/models/result/system/SystemParticipantWithHeatResult.java b/src/main/java/edu/ie3/datamodel/models/result/system/SystemParticipantWithHeatResult.java index 8db228011..741da7604 100644 --- a/src/main/java/edu/ie3/datamodel/models/result/system/SystemParticipantWithHeatResult.java +++ b/src/main/java/edu/ie3/datamodel/models/result/system/SystemParticipantWithHeatResult.java @@ -6,7 +6,6 @@ package edu.ie3.datamodel.models.result.system; import java.time.ZonedDateTime; -import java.util.Objects; import java.util.UUID; import javax.measure.quantity.Power; import tech.units.indriya.ComparableQuantity; @@ -63,20 +62,6 @@ public ComparableQuantity getQDot() { return qDot; } - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - if (!super.equals(o)) return false; - SystemParticipantWithHeatResult that = (SystemParticipantWithHeatResult) o; - return qDot.equals(that.qDot); - } - - @Override - public int hashCode() { - return Objects.hash(super.hashCode(), qDot); - } - @Override public String toString() { return "SystemParticipantWithHeatResult{" diff --git a/src/test/groovy/edu/ie3/datamodel/models/result/system/ChpResultTest.groovy b/src/test/groovy/edu/ie3/datamodel/models/result/system/ChpResultTest.groovy index d87a40d05..c873c60b5 100644 --- a/src/test/groovy/edu/ie3/datamodel/models/result/system/ChpResultTest.groovy +++ b/src/test/groovy/edu/ie3/datamodel/models/result/system/ChpResultTest.groovy @@ -40,17 +40,4 @@ class ChpResultTest extends Specification { inputModel.toString() + ", p=" + p.toString() + ", q=" + q.toString() + ", qDot=" + qDot.toString() + "}" outputString == expectedString } - - def "A ChpResult object can be compared to another object correctly"() { - given: - def chpResultObj = new ChpResult(uuid, time, inputModel, p, q, qDot) - - when: - def equivalentChpResultObj = new ChpResult(uuid, time, inputModel, p, q, qDot) - def differentChpResultObj = new ChpResult(uuid, time, inputModel, p, q, qDot.subtract(qDot)) - - then: - chpResultObj.equals(equivalentChpResultObj) - !chpResultObj.equals(differentChpResultObj) - } } \ No newline at end of file diff --git a/src/test/groovy/edu/ie3/datamodel/models/result/system/SystemParticipantWithHeatResultTest.groovy b/src/test/groovy/edu/ie3/datamodel/models/result/system/SystemParticipantWithHeatResultTest.groovy index a56e4782e..4606ab9ca 100644 --- a/src/test/groovy/edu/ie3/datamodel/models/result/system/SystemParticipantWithHeatResultTest.groovy +++ b/src/test/groovy/edu/ie3/datamodel/models/result/system/SystemParticipantWithHeatResultTest.groovy @@ -40,17 +40,4 @@ class SystemParticipantWithHeatResultTest extends Specification { inputModel.toString() + ", p=" + p.toString() + ", q=" + q.toString() + ", qDot=" + qDot.toString() + "}" outputString == expectedString } - - def "A SystemParticipantWithHeatResult object can be compared to another object correctly"() { - given: - def systemParticipantWithHeatResultObj = new SystemParticipantWithHeatResult(uuid, time, inputModel, p, q, qDot) - - when: - def equivalentSystemParticipantWithHeatResultObj = new SystemParticipantWithHeatResult(uuid, time, inputModel, p, q, qDot) - def differentSystemParticipantWithHeatResultObj = new SystemParticipantWithHeatResult(uuid, time, inputModel, p, q, qDot.subtract(qDot)) - - then: - systemParticipantWithHeatResultObj.equals(equivalentSystemParticipantWithHeatResultObj) - !systemParticipantWithHeatResultObj.equals(differentSystemParticipantWithHeatResultObj) - } } \ No newline at end of file From 77aef5dc9299e17ee6240c748b0f7133a423f5db Mon Sep 17 00:00:00 2001 From: ahamshubham Date: Fri, 5 Feb 2021 14:50:54 +0100 Subject: [PATCH 13/17] #269 Made changes as per the review --- .../SystemParticipantResultFactory.java | 25 ++++++----- .../ie3/datamodel/io/processor/Processor.java | 7 --- .../models/result/system/ChpResult.java | 6 +-- .../models/result/system/HpResult.java | 36 +++------------- .../SystemParticipantWithHeatResult.java | 25 ++++++++--- .../SystemParticipantResultFactoryTest.groovy | 4 +- .../datamodel/io/sink/InfluxDbSinkIT.groovy | 1 - .../models/result/system/ChpResultTest.groovy | 43 ------------------- ...SystemParticipantWithHeatResultTest.groovy | 43 ------------------- .../common/SystemParticipantTestData.groovy | 8 ---- 10 files changed, 44 insertions(+), 154 deletions(-) delete mode 100644 src/test/groovy/edu/ie3/datamodel/models/result/system/ChpResultTest.groovy delete mode 100644 src/test/groovy/edu/ie3/datamodel/models/result/system/SystemParticipantWithHeatResultTest.groovy diff --git a/src/main/java/edu/ie3/datamodel/io/factory/result/SystemParticipantResultFactory.java b/src/main/java/edu/ie3/datamodel/io/factory/result/SystemParticipantResultFactory.java index 25c1baf72..090407b99 100644 --- a/src/main/java/edu/ie3/datamodel/io/factory/result/SystemParticipantResultFactory.java +++ b/src/main/java/edu/ie3/datamodel/io/factory/result/SystemParticipantResultFactory.java @@ -57,7 +57,7 @@ protected List> getFields(SimpleEntityData data) { if (data.getTargetClass().equals(HpResult.class) || data.getTargetClass().equals(ChpResult.class)) { - minConstructorParams = newSet(TIME, INPUT_MODEL, POWER, REACTIVE_POWER, Q_DOT); + minConstructorParams = expandSet(minConstructorParams, Q_DOT); optionalFields = expandSet(minConstructorParams, ENTITY_UUID); } @@ -96,20 +96,25 @@ protected SystemParticipantResult buildModel(SimpleEntityData data) { return uuidOpt .map(uuid -> new EvcsResult(uuid, zdtTime, inputModelUuid, p, q)) .orElseGet(() -> new EvcsResult(zdtTime, inputModelUuid, p, q)); - } else if (entityClass.equals(ChpResult.class)) { + } else if (SystemParticipantWithHeatResult.class.isAssignableFrom(entityClass)) { + /* The following classes all have a heat component as well */ ComparableQuantity qDot = data.getQuantity(Q_DOT, StandardUnits.Q_DOT_RESULT); - return uuidOpt - .map(uuid -> new ChpResult(uuid, zdtTime, inputModelUuid, p, q, qDot)) - .orElseGet(() -> new ChpResult(zdtTime, inputModelUuid, p, q, qDot)); + + if (entityClass.equals(ChpResult.class)) { + return uuidOpt + .map(uuid -> new ChpResult(uuid, zdtTime, inputModelUuid, p, q, qDot)) + .orElseGet(() -> new ChpResult(zdtTime, inputModelUuid, p, q, qDot)); + } else if (entityClass.equals(HpResult.class)) { + return uuidOpt + .map(uuid -> new HpResult(uuid, zdtTime, inputModelUuid, p, q, qDot)) + .orElseGet(() -> new HpResult(zdtTime, inputModelUuid, p, q, qDot)); + } else { + throw new FactoryException("Cannot process " + entityClass.getSimpleName() + ".class."); + } } else if (entityClass.equals(WecResult.class)) { return uuidOpt .map(uuid -> new WecResult(uuid, zdtTime, inputModelUuid, p, q)) .orElseGet(() -> new WecResult(zdtTime, inputModelUuid, p, q)); - } else if (entityClass.equals(HpResult.class)) { - ComparableQuantity qDotQuantity = data.getQuantity(Q_DOT, StandardUnits.Q_DOT_RESULT); - return uuidOpt - .map(uuid -> new HpResult(uuid, zdtTime, inputModelUuid, p, q, qDotQuantity)) - .orElseGet(() -> new HpResult(zdtTime, inputModelUuid, p, q, qDotQuantity)); } else if (entityClass.equals(EvResult.class)) { ComparableQuantity socQuantity = data.getQuantity(SOC, PERCENT); 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 d56b85998..746b17d6a 100644 --- a/src/main/java/edu/ie3/datamodel/io/processor/Processor.java +++ b/src/main/java/edu/ie3/datamodel/io/processor/Processor.java @@ -57,8 +57,6 @@ public abstract class Processor { private static final String VOLT_LVL = NodeInputFactory.VOLT_LVL; private static final String V_RATED = NodeInputFactory.V_RATED; - private static final String Q_DOT = "qDot"; - private static final String PARALLEL_DEVICES = "parallelDevices"; /** @@ -140,11 +138,6 @@ protected SortedMap mapFieldNameToGetter( resFieldNameToMethod.put(VOLT_LVL, pd.getReadMethod()); } - // Rename the fieldName for thermal power - if (fieldName.equalsIgnoreCase(Q_DOT)) { - fieldName = Q_DOT; - } - resFieldNameToMethod.put(fieldName, pd.getReadMethod()); }); diff --git a/src/main/java/edu/ie3/datamodel/models/result/system/ChpResult.java b/src/main/java/edu/ie3/datamodel/models/result/system/ChpResult.java index 7a22c4a22..33cf516e4 100644 --- a/src/main/java/edu/ie3/datamodel/models/result/system/ChpResult.java +++ b/src/main/java/edu/ie3/datamodel/models/result/system/ChpResult.java @@ -13,8 +13,6 @@ /** Represents calculation results of a {@link edu.ie3.datamodel.models.input.system.ChpInput} */ public class ChpResult extends SystemParticipantWithHeatResult { - private final ComparableQuantity qDot; - /** * Standard constructor with automatic uuid generation. * @@ -31,7 +29,6 @@ public ChpResult( ComparableQuantity q, ComparableQuantity qDot) { super(time, inputModel, p, q, qDot); - this.qDot = qDot; } /** @@ -53,7 +50,6 @@ public ChpResult( ComparableQuantity q, ComparableQuantity qDot) { super(uuid, time, inputModel, p, q, qDot); - this.qDot = qDot; } @Override @@ -70,7 +66,7 @@ public String toString() { + ", q=" + getQ() + ", qDot=" - + qDot + + getqDot() + '}'; } } diff --git a/src/main/java/edu/ie3/datamodel/models/result/system/HpResult.java b/src/main/java/edu/ie3/datamodel/models/result/system/HpResult.java index 2ba220a1e..b384781df 100644 --- a/src/main/java/edu/ie3/datamodel/models/result/system/HpResult.java +++ b/src/main/java/edu/ie3/datamodel/models/result/system/HpResult.java @@ -6,16 +6,12 @@ package edu.ie3.datamodel.models.result.system; import java.time.ZonedDateTime; -import java.util.Objects; import java.util.UUID; -import javax.measure.Quantity; import javax.measure.quantity.Power; import tech.units.indriya.ComparableQuantity; /** Represents calculation results of a {@link edu.ie3.datamodel.models.input.system.HpInput} */ -public class HpResult extends SystemParticipantResult { - - private final Quantity qDot; +public class HpResult extends SystemParticipantWithHeatResult { /** * Standard constructor with automatic uuid generation. @@ -31,9 +27,8 @@ public HpResult( UUID inputModel, ComparableQuantity p, ComparableQuantity q, - Quantity qDot) { - super(time, inputModel, p, q); - this.qDot = qDot; + ComparableQuantity qDot) { + super(time, inputModel, p, q, qDot); } /** @@ -53,27 +48,8 @@ public HpResult( UUID inputModel, ComparableQuantity p, ComparableQuantity q, - Quantity qDot) { - super(uuid, time, inputModel, p, q); - this.qDot = qDot; - } - - public Quantity getqDot() { - return qDot; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - if (!super.equals(o)) return false; - HpResult hpResult = (HpResult) o; - return qDot.equals(hpResult.qDot); - } - - @Override - public int hashCode() { - return Objects.hash(super.hashCode(), qDot); + ComparableQuantity qDot) { + super(uuid, time, inputModel, p, q, qDot); } @Override @@ -90,7 +66,7 @@ public String toString() { + ", q=" + getQ() + ", qDot=" - + qDot + + getqDot() + '}'; } } diff --git a/src/main/java/edu/ie3/datamodel/models/result/system/SystemParticipantWithHeatResult.java b/src/main/java/edu/ie3/datamodel/models/result/system/SystemParticipantWithHeatResult.java index 741da7604..e4aca9dc7 100644 --- a/src/main/java/edu/ie3/datamodel/models/result/system/SystemParticipantWithHeatResult.java +++ b/src/main/java/edu/ie3/datamodel/models/result/system/SystemParticipantWithHeatResult.java @@ -6,14 +6,15 @@ package edu.ie3.datamodel.models.result.system; import java.time.ZonedDateTime; +import java.util.Objects; import java.util.UUID; import javax.measure.quantity.Power; import tech.units.indriya.ComparableQuantity; /** Abstract class that holds values common to result entities having heat result */ -public class SystemParticipantWithHeatResult extends SystemParticipantResult { - /** @param qDot thermal power output normally provided in MW */ - private ComparableQuantity qDot; +public abstract class SystemParticipantWithHeatResult extends SystemParticipantResult { + /** The thermal power output normally provided in MW */ + private final ComparableQuantity qDot; /** * @param time date and time when the result is produced @@ -58,10 +59,24 @@ public SystemParticipantWithHeatResult( * * @return Thermal power output in MW. */ - public ComparableQuantity getQDot() { + public ComparableQuantity getqDot() { return qDot; } + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + if (!super.equals(o)) return false; + SystemParticipantWithHeatResult that = (SystemParticipantWithHeatResult) o; + return qDot.equals(that.qDot); + } + + @Override + public int hashCode() { + return Objects.hash(super.hashCode(), qDot); + } + @Override public String toString() { return "SystemParticipantWithHeatResult{" @@ -76,7 +91,7 @@ public String toString() { + ", q=" + getQ() + ", qDot=" - + getQDot() + + getqDot() + '}'; } } diff --git a/src/test/groovy/edu/ie3/datamodel/io/factory/result/SystemParticipantResultFactoryTest.groovy b/src/test/groovy/edu/ie3/datamodel/io/factory/result/SystemParticipantResultFactoryTest.groovy index 81c34839d..2e7fe7740 100644 --- a/src/test/groovy/edu/ie3/datamodel/io/factory/result/SystemParticipantResultFactoryTest.groovy +++ b/src/test/groovy/edu/ie3/datamodel/io/factory/result/SystemParticipantResultFactoryTest.groovy @@ -75,11 +75,11 @@ class SystemParticipantResultFactoryTest extends Specification implements Factor } if (modelClass == HpResult) { - assert(((HpResult)result.get()).qDot == getQuant(parameter["qDot"], StandardUnits.Q_DOT_RESULT)) + assert(((HpResult)result.get()).getqDot() == getQuant(parameter["qDot"], StandardUnits.Q_DOT_RESULT)) } if (modelClass == ChpResult) { - assert(((ChpResult)result.get()).qDot == getQuant(parameter["qDot"], StandardUnits.Q_DOT_RESULT)) + assert(((ChpResult)result.get()).getqDot() == getQuant(parameter["qDot"], StandardUnits.Q_DOT_RESULT)) } where: diff --git a/src/test/groovy/edu/ie3/datamodel/io/sink/InfluxDbSinkIT.groovy b/src/test/groovy/edu/ie3/datamodel/io/sink/InfluxDbSinkIT.groovy index 968b5e817..5c32dbcdb 100644 --- a/src/test/groovy/edu/ie3/datamodel/io/sink/InfluxDbSinkIT.groovy +++ b/src/test/groovy/edu/ie3/datamodel/io/sink/InfluxDbSinkIT.groovy @@ -27,7 +27,6 @@ import spock.lang.Shared import spock.lang.Specification import tech.units.indriya.quantity.Quantities -import java.nio.file.StandardCopyOption import java.time.ZoneId import java.time.ZonedDateTime diff --git a/src/test/groovy/edu/ie3/datamodel/models/result/system/ChpResultTest.groovy b/src/test/groovy/edu/ie3/datamodel/models/result/system/ChpResultTest.groovy deleted file mode 100644 index c873c60b5..000000000 --- a/src/test/groovy/edu/ie3/datamodel/models/result/system/ChpResultTest.groovy +++ /dev/null @@ -1,43 +0,0 @@ -/* - * © 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.result.system - -import edu.ie3.test.common.SystemParticipantTestData -import spock.lang.Shared -import spock.lang.Specification - -import javax.measure.Quantity -import javax.measure.quantity.Power -import java.time.ZonedDateTime - -class ChpResultTest extends Specification { - // static fields - @Shared - UUID uuid = SystemParticipantTestData.uuid - @Shared - ZonedDateTime time = SystemParticipantTestData.time - @Shared - UUID inputModel = SystemParticipantTestData.inputModel - @Shared - Quantity p = SystemParticipantTestData.p - @Shared - Quantity q = SystemParticipantTestData.q - @Shared - Quantity qDot = SystemParticipantTestData.qDot - - def "A ChpResult object should convert to a string correctly"() { - given: - def chpResultObj = new ChpResult(uuid, time, inputModel, p, q, qDot) - - when: - def outputString = chpResultObj.toString() - - then: - def expectedString = "ChpResult{uuid=" + uuid + ", time=" + time.toString() + ", inputModel=" + - inputModel.toString() + ", p=" + p.toString() + ", q=" + q.toString() + ", qDot=" + qDot.toString() + "}" - outputString == expectedString - } -} \ No newline at end of file diff --git a/src/test/groovy/edu/ie3/datamodel/models/result/system/SystemParticipantWithHeatResultTest.groovy b/src/test/groovy/edu/ie3/datamodel/models/result/system/SystemParticipantWithHeatResultTest.groovy deleted file mode 100644 index 4606ab9ca..000000000 --- a/src/test/groovy/edu/ie3/datamodel/models/result/system/SystemParticipantWithHeatResultTest.groovy +++ /dev/null @@ -1,43 +0,0 @@ -/* - * © 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.result.system - -import edu.ie3.test.common.SystemParticipantTestData -import spock.lang.Shared -import spock.lang.Specification - -import javax.measure.Quantity -import javax.measure.quantity.Power -import java.time.ZonedDateTime - -class SystemParticipantWithHeatResultTest extends Specification { - // static fields - @Shared - UUID uuid = SystemParticipantTestData.uuid - @Shared - ZonedDateTime time = SystemParticipantTestData.time - @Shared - UUID inputModel = SystemParticipantTestData.inputModel - @Shared - Quantity p = SystemParticipantTestData.p - @Shared - Quantity q = SystemParticipantTestData.q - @Shared - Quantity qDot = SystemParticipantTestData.qDot - - def "A SystemParticipantWithHeatResult object should convert to a string correctly"() { - given: - def systemParticipantWithHeatResultObj = new SystemParticipantWithHeatResult(uuid, time, inputModel, p, q, qDot) - - when: - def outputString = systemParticipantWithHeatResultObj.toString() - - then: - def expectedString = "SystemParticipantWithHeatResult{uuid=" + uuid + ", time=" + time.toString() + ", inputModel=" + - inputModel.toString() + ", p=" + p.toString() + ", q=" + q.toString() + ", qDot=" + qDot.toString() + "}" - outputString == expectedString - } -} \ No newline at end of file diff --git a/src/test/groovy/edu/ie3/test/common/SystemParticipantTestData.groovy b/src/test/groovy/edu/ie3/test/common/SystemParticipantTestData.groovy index cf155d5df..ce26f9422 100644 --- a/src/test/groovy/edu/ie3/test/common/SystemParticipantTestData.groovy +++ b/src/test/groovy/edu/ie3/test/common/SystemParticipantTestData.groovy @@ -324,12 +324,4 @@ class SystemParticipantTestData { hpInput ] - //ChpResult & SystemParticipantWithHeatResult - private static final UUID uuid = UUID.fromString("22bea5fc-2cb2-4c61-beb9-b476e0107f52") - private static final ZonedDateTime time = java.time.ZonedDateTime.parse("2020-01-30T17:26:44Z[UTC]") - private static final UUID inputModel = UUID.fromString("22bea5fc-2cb2-4c61-beb9-b476e0107f52") - private static final Quantity p = Quantities.getQuantity(10, StandardUnits.ACTIVE_POWER_IN) - private static final Quantity q = Quantities.getQuantity(10, StandardUnits.REACTIVE_POWER_IN) - private static final Quantity qDot = Quantities.getQuantity(1, StandardUnits.Q_DOT_RESULT) - } From 4abbd2c9d9a4d1edaf3418551755890b21d6f988 Mon Sep 17 00:00:00 2001 From: ahamshubham Date: Fri, 5 Feb 2021 15:28:48 +0100 Subject: [PATCH 14/17] #269 Removed unused imports --- .../edu/ie3/test/common/SystemParticipantTestData.groovy | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/test/groovy/edu/ie3/test/common/SystemParticipantTestData.groovy b/src/test/groovy/edu/ie3/test/common/SystemParticipantTestData.groovy index ce26f9422..2c31b69dc 100644 --- a/src/test/groovy/edu/ie3/test/common/SystemParticipantTestData.groovy +++ b/src/test/groovy/edu/ie3/test/common/SystemParticipantTestData.groovy @@ -8,7 +8,6 @@ package edu.ie3.test.common import edu.ie3.datamodel.models.BdewLoadProfile import edu.ie3.datamodel.models.OperationTime import edu.ie3.datamodel.models.StandardLoadProfile -import edu.ie3.datamodel.models.StandardUnits import edu.ie3.datamodel.models.input.NodeInput import edu.ie3.datamodel.models.input.OperatorInput import edu.ie3.datamodel.models.input.system.* @@ -26,9 +25,7 @@ import edu.ie3.util.quantities.interfaces.* import tech.units.indriya.ComparableQuantity import tech.units.indriya.quantity.Quantities -import javax.measure.Quantity import javax.measure.quantity.* -import java.time.ZonedDateTime import static edu.ie3.datamodel.models.StandardUnits.* From c101d777206e8b9e6ca98bb8d13e7f5b526228ee Mon Sep 17 00:00:00 2001 From: ahamshubham Date: Mon, 8 Feb 2021 07:24:00 +0100 Subject: [PATCH 15/17] #269 Modified documentation due to changes in ChpResult and HpResult classes --- docs/readthedocs/models/result/participant/chp.rst | 3 ++- docs/uml/main/OutputDatamodelConcept.puml | 8 ++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/docs/readthedocs/models/result/participant/chp.rst b/docs/readthedocs/models/result/participant/chp.rst index 1fa443272..2c4f76898 100644 --- a/docs/readthedocs/models/result/participant/chp.rst +++ b/docs/readthedocs/models/result/participant/chp.rst @@ -20,7 +20,8 @@ Attributes, Units and Remarks +---------------+---------+--------------------------------------------------------------+ | q | MVAr | | +---------------+---------+--------------------------------------------------------------+ - +| qDot | MW | Thermal power | ++---------------+---------+--------------------------------------------------------------+ Caveats ^^^^^^^ diff --git a/docs/uml/main/OutputDatamodelConcept.puml b/docs/uml/main/OutputDatamodelConcept.puml index d0e24d36b..47d967775 100644 --- a/docs/uml/main/OutputDatamodelConcept.puml +++ b/docs/uml/main/OutputDatamodelConcept.puml @@ -82,10 +82,14 @@ package models { class PvResult SystemParticipantResult <|-- PvResult - class ChpResult + class ChpResult{ + + qDot: ComparableQuantity + } SystemParticipantResult <|-- ChpResult - class HpResult + class HpResult{ + + qDot: ComparableQuantity + } SystemParticipantResult <|-- HpResult class WecResult From c9a2390235cc8ac280400d1065c12b6e2859b32e Mon Sep 17 00:00:00 2001 From: ahamshubham Date: Mon, 15 Feb 2021 13:41:56 +0100 Subject: [PATCH 16/17] #269 Modified uml documentation to add SystemParticipantWithHeatResult class details, modified changelog and authors file and simplified some code in SystemParticipantResultFactory --- AUTHORS | 1 + CHANGELOG.md | 3 +++ docs/uml/main/OutputDatamodelConcept.puml | 15 ++++++++------- .../result/SystemParticipantResultFactory.java | 3 +-- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/AUTHORS b/AUTHORS index 96df83751..0394ef318 100644 --- a/AUTHORS +++ b/AUTHORS @@ -15,6 +15,7 @@ Main Contributers: - Sebastian Peter - https://github.com/sebastian-peter - Christian Mahr - https://github.com/cmahr93 - Vasilios Zachopoulos - https://github.com/baszach + - Shubham Bajpai - https://github.com/ahamshubham Coordination: - Chris Kittl diff --git a/CHANGELOG.md b/CHANGELOG.md index 92a0149f7..e04563cda 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - reading time series from csv files (including a container object to hold the different types of time series) - reading mapping from participant uuid to time series uuid including a mapping object for easy access to time series - Couchbase, SQL and CSV connectors and sources for weather data +- added `SystemParticipantWithHeatResult` with thermal power variable to be used by heat plant result models ### Changed - BREAKING: replaced [Unit API 1.0](https://github.com/unitsofmeasurement/uom-se) (JSR 363, tec.uom.se) with [Unit API 2.0](https://github.com/unitsofmeasurement/indriya) (JSR 385, tech.units.indriya) @@ -23,6 +24,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - added coordinate distance sort method to GridAndGeoUtils - BREAKING: Harmonized field naming for time information - BREAKING: Properly applying snake case to result file names +- deprecated `TarballUtils` ### Fixed - InfluxDbConnector now keeps session instead of creating a new one each call @@ -30,6 +32,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 and [#248](https://github.com/ie3-institute/PowerSystemDataModel/issues/248)) - BREAKING: fix invalid application of solar irradiance / irradiation ([#266](https://github.com/ie3-institute/PowerSystemDataModel/issues/266)) - BREAKING: deleted `IrradiationValue` as it is invalid and no longer required +- added copy builder implementations for thermal input models `CylindricalStorageInput`, `ThermalBusInput` and `ThermalHouseInput` ## [1.1.0] - 2020-09-15 diff --git a/docs/uml/main/OutputDatamodelConcept.puml b/docs/uml/main/OutputDatamodelConcept.puml index 47d967775..de0b7c745 100644 --- a/docs/uml/main/OutputDatamodelConcept.puml +++ b/docs/uml/main/OutputDatamodelConcept.puml @@ -82,15 +82,16 @@ package models { class PvResult SystemParticipantResult <|-- PvResult - class ChpResult{ - + qDot: ComparableQuantity + abstract class SystemParticipantWithHeatResult{ + - qDot: ComparableQuantity } - SystemParticipantResult <|-- ChpResult + SystemParticipantResult <|-- SystemParticipantWithHeatResult - class HpResult{ - + qDot: ComparableQuantity - } - SystemParticipantResult <|-- HpResult + class ChpResult + SystemParticipantWithHeatResult <|-- ChpResult + + class HpResult + SystemParticipantWithHeatResult <|-- HpResult class WecResult SystemParticipantResult <|-- WecResult diff --git a/src/main/java/edu/ie3/datamodel/io/factory/result/SystemParticipantResultFactory.java b/src/main/java/edu/ie3/datamodel/io/factory/result/SystemParticipantResultFactory.java index 090407b99..842476ea6 100644 --- a/src/main/java/edu/ie3/datamodel/io/factory/result/SystemParticipantResultFactory.java +++ b/src/main/java/edu/ie3/datamodel/io/factory/result/SystemParticipantResultFactory.java @@ -55,8 +55,7 @@ protected List> getFields(SimpleEntityData data) { optionalFields = expandSet(minConstructorParams, ENTITY_UUID); } - if (data.getTargetClass().equals(HpResult.class) - || data.getTargetClass().equals(ChpResult.class)) { + if (SystemParticipantWithHeatResult.class.isAssignableFrom(data.getTargetClass())) { minConstructorParams = expandSet(minConstructorParams, Q_DOT); optionalFields = expandSet(minConstructorParams, ENTITY_UUID); } From 3b16fb85891d3e382e4fcac957d1749f6ab133a8 Mon Sep 17 00:00:00 2001 From: "Kittl, Chris" Date: Wed, 17 Feb 2021 12:03:41 +0100 Subject: [PATCH 17/17] Adapt Jenkinsfile to meet correct path to Java 11 --- Jenkinsfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 6c4ac8be2..078ea4ec4 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -108,7 +108,7 @@ node { 'spotbugsTest test jacocoTestReport jacocoTestCoverageVerification', projectName) // due to an issue with openjdk-8 we use openjdk-11 for javadocs generation - sh(script: """set +x && cd $projectName""" + ''' set +x; ./gradlew clean javadoc -Dorg.gradle.java.home=/usr/local/openjdk-11''', returnStdout: true) + sh(script: """set +x && cd $projectName""" + ''' set +x; ./gradlew clean javadoc -Dorg.gradle.java.home=/opt/java/openjdk''', returnStdout: true) } // sonarqube analysis @@ -150,7 +150,7 @@ node { */ sh( script: """set +x && cd $projectName""" + - ''' set +x; ./gradlew clean javadoc -Dorg.gradle.java.home=/usr/local/openjdk-11''', + ''' set +x; ./gradlew clean javadoc -Dorg.gradle.java.home=/opt/java/openjdk''', returnStdout: true ) @@ -364,7 +364,7 @@ def deployJavaDocs(String projectName, String sshCredentialsId, String gitChecko "git config user.name 'Johannes Hiry' && " + "git fetch --depth=1 origin api-docs && " + "git checkout api-docs && " + - "cd .. && ./gradlew clean javadoc -Dorg.gradle.java.home=/usr/local/openjdk-11 && " + + "cd .. && ./gradlew clean javadoc -Dorg.gradle.java.home=/opt/java/openjdk && " + "cp -R build/docs/javadoc/* tmp-api-docs && " + "cd tmp-api-docs &&" + "git add --all && git commit -m 'updated api-docs' && git push origin api-docs:api-docs" +