From 332b538538f081e35766a8795923c6f9bf843ae4 Mon Sep 17 00:00:00 2001 From: GillisHommen Date: Tue, 27 Jan 2026 16:05:10 +0100 Subject: [PATCH 1/3] Added annotations to new classes to fix serialisation. --- _alp/Agents/EnergyModel/Code/Functions.java | 7 ++++++- _alp/Classes/Class.I_ChargePointRegistration.java | 13 +++++++++++++ _alp/Classes/Class.I_ChargingRequest.java | 13 +++++++++++++ _alp/Classes/Class.J_ChargePoint.java | 15 +++++++++++++++ .../Class.J_ChargingManagementGridBalancing.java | 3 +++ .../Class.J_ChargingManagementLocalBalancing.java | 3 +++ ...ass.J_ChargingManagementMaxAvailablePower.java | 4 ++++ .../Class.J_ChargingManagementOffPeak.java | 3 +++ _alp/Classes/Class.J_ChargingManagementPrice.java | 3 +++ .../Classes/Class.J_ChargingManagementSimple.java | 4 ++++ _alp/Classes/Class.J_TimeParameters.java | 2 ++ _alp/Classes/Class.J_TimeVariables.java | 2 ++ 12 files changed, 71 insertions(+), 1 deletion(-) diff --git a/_alp/Agents/EnergyModel/Code/Functions.java b/_alp/Agents/EnergyModel/Code/Functions.java index 3c814ea..b751a32 100644 --- a/_alp/Agents/EnergyModel/Code/Functions.java +++ b/_alp/Agents/EnergyModel/Code/Functions.java @@ -1041,6 +1041,8 @@ EnergyCoop f_addProductionEnergyCarrier(OL_EnergyCarriers EC) fm_currentConsumptionFlows_kW = new J_FlowsMap(); fm_currentBalanceFlows_kW = new J_FlowsMap(); fm_currentAssetFlows_kW = new J_ValueMap(OL_AssetFlowCategories.class); +fm_heatFromEnergyCarrier_kW = new J_FlowsMap(); +fm_consumptionForHeating_kW = new J_FlowsMap(); // Reconstruct the LiveData class in the EnergyCoops for (EnergyCoop ec : pop_energyCoops) { @@ -1058,6 +1060,8 @@ EnergyCoop f_addProductionEnergyCarrier(OL_EnergyCarriers EC) ec.fm_currentConsumptionFlows_kW = new J_FlowsMap(); ec.fm_currentBalanceFlows_kW = new J_FlowsMap(); ec.fm_currentAssetFlows_kW = new J_ValueMap(OL_AssetFlowCategories.class); + ec.fm_heatFromEnergyCarrier_kW = new J_FlowsMap(); + ec.fm_consumptionForHeating_kW = new J_FlowsMap(); } // Reconstruct the LiveData class in the GridConnections and add EnergyCarriers @@ -1078,7 +1082,8 @@ EnergyCoop f_addProductionEnergyCarrier(OL_EnergyCarriers EC) gc.fm_currentConsumptionFlows_kW = new J_FlowsMap(); gc.fm_currentBalanceFlows_kW = new J_FlowsMap(); gc.fm_currentAssetFlows_kW = new J_ValueMap(OL_AssetFlowCategories.class); - + gc.fm_heatFromEnergyCarrier_kW = new J_FlowsMap(); + gc.fm_consumptionForHeating_kW = new J_FlowsMap(); /*for (J_EA j_ea : gc.c_energyAssets) { gc.f_addEnergyCarriersAndAssetCategoriesFromEA(j_ea); }*/ diff --git a/_alp/Classes/Class.I_ChargePointRegistration.java b/_alp/Classes/Class.I_ChargePointRegistration.java index 89fa6be..d6e3bba 100644 --- a/_alp/Classes/Class.I_ChargePointRegistration.java +++ b/_alp/Classes/Class.I_ChargePointRegistration.java @@ -1,3 +1,16 @@ +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonIdentityInfo; +import com.fasterxml.jackson.annotation.ObjectIdGenerators; +@JsonIdentityInfo(generator = ObjectIdGenerators.UUIDGenerator.class, property = "@id") + +@JsonTypeInfo( + use = JsonTypeInfo.Id.CLASS, + include = JsonTypeInfo.As.PROPERTY, + property = "type" // 👈 this will be the field name in your JSON + ) + + public interface I_ChargePointRegistration { public void registerChargingRequest(I_ChargingRequest chargingRequest); diff --git a/_alp/Classes/Class.I_ChargingRequest.java b/_alp/Classes/Class.I_ChargingRequest.java index 6e4243e..45d2503 100644 --- a/_alp/Classes/Class.I_ChargingRequest.java +++ b/_alp/Classes/Class.I_ChargingRequest.java @@ -1,6 +1,19 @@ /** * I_ChargingRequest */ +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonIdentityInfo; +import com.fasterxml.jackson.annotation.ObjectIdGenerators; +@JsonIdentityInfo(generator = ObjectIdGenerators.UUIDGenerator.class, property = "@id") + +@JsonTypeInfo( + use = JsonTypeInfo.Id.CLASS, + include = JsonTypeInfo.As.PROPERTY, + property = "type" // 👈 this will be the field name in your JSON + ) + + public interface I_ChargingRequest { // The maximal capacity for the vehicle diff --git a/_alp/Classes/Class.J_ChargePoint.java b/_alp/Classes/Class.J_ChargePoint.java index 9a94027..ba9573a 100644 --- a/_alp/Classes/Class.J_ChargePoint.java +++ b/_alp/Classes/Class.J_ChargePoint.java @@ -1,6 +1,16 @@ /** * J_ChargePoint */ +import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility; +import com.fasterxml.jackson.annotation.JsonAutoDetect; +@JsonAutoDetect( + fieldVisibility = Visibility.ANY, // + getterVisibility = Visibility.NONE, + isGetterVisibility = Visibility.NONE, + setterVisibility = Visibility.NONE, + creatorVisibility = Visibility.NONE +) + public class J_ChargePoint implements I_ChargePointRegistration{ private boolean hasSocketRestrictions; @@ -15,6 +25,11 @@ public class J_ChargePoint implements I_ChargePointRegistration{ private List storedActiveChargingRequests = null; + //Constructor for (de-)serialisation + public J_ChargePoint() { + + }; + /** * Default constructor * No restrictions on sockets diff --git a/_alp/Classes/Class.J_ChargingManagementGridBalancing.java b/_alp/Classes/Class.J_ChargingManagementGridBalancing.java index 6fec128..599c8cd 100644 --- a/_alp/Classes/Class.J_ChargingManagementGridBalancing.java +++ b/_alp/Classes/Class.J_ChargingManagementGridBalancing.java @@ -23,6 +23,9 @@ public class J_ChargingManagementGridBalancing implements I_ChargingManagement { /** * Default constructor */ + public J_ChargingManagementGridBalancing( ) { + } + public J_ChargingManagementGridBalancing( GridConnection gc) { this.gc = gc; this.timeStep_h = gc.energyModel.p_timeParameters.getTimeStep_h(); diff --git a/_alp/Classes/Class.J_ChargingManagementLocalBalancing.java b/_alp/Classes/Class.J_ChargingManagementLocalBalancing.java index 1b32268..db4dffb 100644 --- a/_alp/Classes/Class.J_ChargingManagementLocalBalancing.java +++ b/_alp/Classes/Class.J_ChargingManagementLocalBalancing.java @@ -28,6 +28,9 @@ public class J_ChargingManagementLocalBalancing implements I_ChargingManagement /** * Default constructor */ + public J_ChargingManagementLocalBalancing( ) { + } + public J_ChargingManagementLocalBalancing( GridConnection gc) { this.gc = gc; this.filterDiffGain_r = 1/(filterTimeScale_h/gc.energyModel.p_timeStep_h); diff --git a/_alp/Classes/Class.J_ChargingManagementMaxAvailablePower.java b/_alp/Classes/Class.J_ChargingManagementMaxAvailablePower.java index fe1db1d..a8d5fb1 100644 --- a/_alp/Classes/Class.J_ChargingManagementMaxAvailablePower.java +++ b/_alp/Classes/Class.J_ChargingManagementMaxAvailablePower.java @@ -22,6 +22,10 @@ public class J_ChargingManagementMaxAvailablePower implements I_ChargingManageme /** * Default constructor */ + public J_ChargingManagementMaxAvailablePower( ) { + + } + public J_ChargingManagementMaxAvailablePower( GridConnection gc) { this.gc = gc; } diff --git a/_alp/Classes/Class.J_ChargingManagementOffPeak.java b/_alp/Classes/Class.J_ChargingManagementOffPeak.java index a5c2141..fc9e81e 100644 --- a/_alp/Classes/Class.J_ChargingManagementOffPeak.java +++ b/_alp/Classes/Class.J_ChargingManagementOffPeak.java @@ -32,6 +32,9 @@ public class J_ChargingManagementOffPeak implements I_ChargingManagement { /** * Default constructor */ + public J_ChargingManagementOffPeak( ) { + } + public J_ChargingManagementOffPeak( GridConnection gc) { this.gc = gc; this.filterDiffGain_r = 1/(filterTimeScale_h/gc.energyModel.p_timeStep_h); diff --git a/_alp/Classes/Class.J_ChargingManagementPrice.java b/_alp/Classes/Class.J_ChargingManagementPrice.java index a0fa817..e3ddefc 100644 --- a/_alp/Classes/Class.J_ChargingManagementPrice.java +++ b/_alp/Classes/Class.J_ChargingManagementPrice.java @@ -28,6 +28,9 @@ public class J_ChargingManagementPrice implements I_ChargingManagement { /** * Default constructor */ + public J_ChargingManagementPrice( ) { + } + public J_ChargingManagementPrice( GridConnection gc) { this.gc = gc; this.priceFilterDiffGain_r = 1/(priceFilterTimeScale_h/gc.energyModel.p_timeStep_h); diff --git a/_alp/Classes/Class.J_ChargingManagementSimple.java b/_alp/Classes/Class.J_ChargingManagementSimple.java index 899d77e..89f07a8 100644 --- a/_alp/Classes/Class.J_ChargingManagementSimple.java +++ b/_alp/Classes/Class.J_ChargingManagementSimple.java @@ -23,6 +23,10 @@ public class J_ChargingManagementSimple implements I_ChargingManagement { /** * Default constructor */ + public J_ChargingManagementSimple( ) { + + } + public J_ChargingManagementSimple( GridConnection gc) { this.gc = gc; } diff --git a/_alp/Classes/Class.J_TimeParameters.java b/_alp/Classes/Class.J_TimeParameters.java index 1d48b4f..6989a55 100644 --- a/_alp/Classes/Class.J_TimeParameters.java +++ b/_alp/Classes/Class.J_TimeParameters.java @@ -1,6 +1,8 @@ /** * J_TimeParameters */ +import com.fasterxml.jackson.annotation.JsonIgnoreType; +@JsonIgnoreType public class J_TimeParameters { ////Time parameters: private static double timeStep_h = 0.25; diff --git a/_alp/Classes/Class.J_TimeVariables.java b/_alp/Classes/Class.J_TimeVariables.java index 615c1c5..61577e6 100644 --- a/_alp/Classes/Class.J_TimeVariables.java +++ b/_alp/Classes/Class.J_TimeVariables.java @@ -1,6 +1,8 @@ /** * J_TimeVariables */ +import com.fasterxml.jackson.annotation.JsonIgnoreType; +@JsonIgnoreType public class J_TimeVariables { ////Time Variables -> Updated every timestep private static double t_h = 0; //Current energymodel runtime: t_h = 0, corresponds to 'jan 1 0:00' of the start year From ac2041cd6e051b6c4e6754eb1956f95afda2009f Mon Sep 17 00:00:00 2001 From: GillisHommen Date: Tue, 3 Feb 2026 15:05:04 +0100 Subject: [PATCH 2/3] Serialisation fixes after update from main. --- _alp/Agents/EnergyCoop/AOC.EnergyCoop.xml | 3 +- _alp/Agents/EnergyCoop/Code/Functions.java | 13 +- _alp/Agents/EnergyCoop/Code/Functions.xml | 5 +- .../EnergyDataViewer/Code/Functions.java | 2 +- _alp/Agents/EnergyModel/AOC.EnergyModel.xml | 24 --- _alp/Agents/EnergyModel/Code/Functions.java | 1 + _alp/Classes/Class.I_AssetOwner.java | 12 ++ _alp/Classes/Class.I_HeatingAsset.java | 13 ++ _alp/Classes/Class.I_Vehicle.java | 13 ++ ...ass.J_ChargingManagementGridBalancing.java | 109 ++++++++++++++ ...ss.J_ChargingManagementLocalBalancing.java | 105 +++++++++++++ ...J_ChargingManagementMaxAvailablePower.java | 104 +++++++++++++ .../Class.J_ChargingManagementOffPeak.java | 138 ++++++++++++++++++ .../Class.J_ChargingManagementPrice.java | 111 ++++++++++++++ .../Class.J_ChargingManagementSimple.java | 80 ++++++++++ _alp/Classes/Class.J_TimeParameters.java | 130 +++++++++++++++++ _alp/Classes/Class.J_TimeVariables.java | 125 ++++++++++++++++ 17 files changed, 959 insertions(+), 29 deletions(-) create mode 100644 _alp/Classes/Class.J_ChargingManagementGridBalancing.java create mode 100644 _alp/Classes/Class.J_ChargingManagementLocalBalancing.java create mode 100644 _alp/Classes/Class.J_ChargingManagementMaxAvailablePower.java create mode 100644 _alp/Classes/Class.J_ChargingManagementOffPeak.java create mode 100644 _alp/Classes/Class.J_ChargingManagementPrice.java create mode 100644 _alp/Classes/Class.J_ChargingManagementSimple.java create mode 100644 _alp/Classes/Class.J_TimeParameters.java create mode 100644 _alp/Classes/Class.J_TimeVariables.java diff --git a/_alp/Agents/EnergyCoop/AOC.EnergyCoop.xml b/_alp/Agents/EnergyCoop/AOC.EnergyCoop.xml index e7981c8..63bdbb9 100644 --- a/_alp/Agents/EnergyCoop/AOC.EnergyCoop.xml +++ b/_alp/Agents/EnergyCoop/AOC.EnergyCoop.xml @@ -54,7 +54,8 @@ fm_currentConsumptionFlows_kW = new J_FlowsMap(); fm_currentBalanceFlows_kW = new J_FlowsMap(); fm_heatFromEnergyCarrier_kW = new J_FlowsMap(); fm_consumptionForHeating_kW = new J_FlowsMap(); -fm_currentAssetFlows_kW = new J_ValueMap(OL_AssetFlowCategories.class);]]> +fm_currentAssetFlows_kW = new J_ValueMap(OL_AssetFlowCategories.class); +]]> false 1660731375014 diff --git a/_alp/Agents/EnergyCoop/Code/Functions.java b/_alp/Agents/EnergyCoop/Code/Functions.java index f4f8ee3..93b86ab 100644 --- a/_alp/Agents/EnergyCoop/Code/Functions.java +++ b/_alp/Agents/EnergyCoop/Code/Functions.java @@ -595,6 +595,7 @@ } } + acc_totalOwnElectricityProduction_kW = new ZeroAccumulator(true, timeParameters.getTimeStep_h(), 8760); acc_totalCustomerDelivery_kW = new ZeroAccumulator(true, timeParameters.getTimeStep_h(), 8760); acc_totalCustomerFeedIn_kW = new ZeroAccumulator(true, timeParameters.getTimeStep_h(), 8760); @@ -1425,8 +1426,14 @@ HashSet f_getAllChildCustomerGridConnections_recursion(HashSet f_getAllChildCustomerGridConnections_recursion(HashSet f_getAllChildCustomerGridConnections_recursion(HashSetdouble 1753348770752 - true 980 70