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

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 10 additions & 2 deletions Zero_Interface-Loader.alpx
Original file line number Diff line number Diff line change
Expand Up @@ -434,15 +434,23 @@
<ClassPathEntry>
<ResourceReference>
<PackageName>zerointerfaceloader</PackageName>
<ClassName>vallum-production-741-d257d2f-all.jar</ClassName>
<ClassName>uplux-3.jar</ClassName>
</ResourceReference>
<Imported>true</Imported>
<Folder>false</Folder>
</ClassPathEntry>
<ClassPathEntry>
<ResourceReference>
<PackageName>zerointerfaceloader</PackageName>
<ClassName>uplux-3.jar</ClassName>
<ClassName>vallum-main-835-49ed0dd-all.jar</ClassName>
</ResourceReference>
<Imported>true</Imported>
<Folder>false</Folder>
</ClassPathEntry>
<ClassPathEntry>
<ResourceReference>
<PackageName>zerointerfaceloader</PackageName>
<ClassName>jackson-datatype-jsr310-2.21.0.jar</ClassName>
</ResourceReference>
<Imported>true</Imported>
<Folder>false</Folder>
Expand Down
7 changes: 4 additions & 3 deletions _alp/Agents/UI_EnergyHub/AOC.UI_EnergyHub.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,13 @@
<Import><![CDATA[import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.annotation.JsonAutoDetect;

import java.io.IOException;

import energy.lux.uplux.*;
import java.util.UUID;
import java.util.function.Predicate;]]></Import>
import java.util.function.Predicate;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;]]></Import>
<StartupCode><![CDATA[zero_Interface.c_UIResultsInstances.add(uI_Results);]]></StartupCode>
<Generic>false</Generic>
<GenericParameter>
Expand Down
168 changes: 93 additions & 75 deletions _alp/Agents/UI_EnergyHub/Code/Functions.java
Original file line number Diff line number Diff line change
Expand Up @@ -239,6 +239,7 @@ else if (members.size() > 8) {
pauseSimulation();
try {
v_objectMapper = new ObjectMapper();
v_objectMapper.registerModule(new JavaTimeModule());
f_addMixins();

var repository = UserScenarioRepository.builder()
Expand All @@ -252,83 +253,97 @@ else if (members.size() > 8) {
var jsonStream = repository.fetchUserScenarioContent(scenarioList.get(index).getId());

J_ModelSave saveObject = v_objectMapper.readValue(jsonStream, J_ModelSave.class);
EnergyModel deserializedEnergyModel = saveObject.energyModel;

// Reconstruct all Agents
f_reconstructEnergyModel(deserializedEnergyModel);
f_reconstructGridConnections(deserializedEnergyModel);
f_reconstructActors(deserializedEnergyModel);
f_reconstructGridNodes(deserializedEnergyModel, saveObject.c_gridNodes);

f_reconstructGIS_Objects(deserializedEnergyModel, saveObject.c_GISObjects);

// Get profilePointer tableFunctions from 'original' energyModel
/* deserializedEnergyModel.c_profiles.forEach(x->{
J_ProfilePointer origProfile = zero_Interface.energyModel.f_findProfile(x.name);
x.setTableFunction(origProfile.getTableFunction());
}); */
// get heatingTypeHashmap from 'old' energyModel.
deserializedEnergyModel.c_defaultHeatingStrategies = zero_Interface.energyModel.c_defaultHeatingStrategies;

zero_Interface.zero_loader.energyModel = deserializedEnergyModel;
zero_Interface.energyModel = deserializedEnergyModel;
zero_Interface.uI_Results.energyModel = deserializedEnergyModel;
uI_Results.energyModel = deserializedEnergyModel;

deserializedEnergyModel.f_startAfterDeserialisation();

f_setEngineInputDataAfterDeserialisation(deserializedEnergyModel);


// Putting back the ordered collections in the interface
f_reconstructOrderedCollections(saveObject);


//Get the correct coop for the E-Hub Dashboard
v_energyHubCoop = findFirst(zero_Interface.energyModel.pop_energyCoops,x->x.p_actorID.equals("eHubConfiguratorCoop"));
if (v_energyHubCoop == null){
throw new RuntimeException("No energyCoop found with p_actorID = eHubConfiguratorCoop");
}
zero_Interface.v_customEnergyCoop = v_energyHubCoop;

//Get the slider gcs of the reloaded EnergyHub
c_sliderEAGCs = f_getEnergyHubsliderEAGCsLoadedScenario(v_energyHubCoop);

// Update the E-Hub Dashboard with the loaded E-Hub from savefile
f_initializeEnergyHubMemberNames();
uI_Tabs.f_initializeUI_Tabs(v_energyHubCoop.f_getMemberGridConnectionsCollectionPointer(), null, c_sliderEAGCs);
gr_uI_Tabs_presentation.setVisible(false);
gr_uI_Tabs_presentation.setVisible(true);
uI_Results.f_updateResultsUI(v_energyHubCoop);

// Update the main interface with the loaded E-Hub from savefile
zero_Interface.c_selectedGridConnections = new ArrayList<>(v_energyHubCoop.f_getMemberGridConnectionsCollectionPointer());

// Update the main interface tabs with the GCs from the new engine
zero_Interface.uI_Tabs.f_initializeUI_Tabs(zero_Interface.energyModel.f_getGridConnectionsCollectionPointer(), zero_Interface.energyModel.f_getPausedGridConnectionsCollectionPointer(), zero_Interface.f_getMainInterfaceSliderEAGCs());

// Reset all colors on the GIS map
zero_Interface.energyModel.pop_GIS_Buildings.forEach(x -> zero_Interface.f_styleAreas(x));
zero_Interface.energyModel.pop_GIS_Objects.forEach(x -> zero_Interface.f_styleAreas(x));
zero_Interface.energyModel.pop_GIS_Parcels.forEach(x -> zero_Interface.f_styleAreas(x));

// Color all selected GC
for (GridConnection gc : zero_Interface.c_selectedGridConnections) {
gc.c_connectedGISObjects.forEach(x -> x.gisRegion.setFillColor(zero_Interface.v_selectionColor));
}

// Zoom GIS Map to selected buildings
f_zoomMapToBuildings();
// Check last saved date, compare to current status of projectdata.
if (!saveObject.projectDataLastModifiedDate.equals(zero_Interface.zero_loader.v_projectDataLastChangedDate)) {
traceln("Current data last modified date: %s", zero_Interface.zero_loader.v_projectDataLastChangedDate);
traceln("Save-file data last modified date: %s", saveObject.projectDataLastModifiedDate);
getExperimentHost().showMessageDialog("Het opgeslagen scenario bevat data die niet overeenkomt met de huidige dataset in de data portal.");
System.err.println("Data-last-changed-dates DON'T match!");
} else {
traceln("Current data last modified date: %s", zero_Interface.zero_loader.v_projectDataLastChangedDate);
traceln("Save-file data last modified date: %s", saveObject.projectDataLastModifiedDate);
traceln("Data-last-changed-dates match!");


EnergyModel deserializedEnergyModel = saveObject.energyModel;

// Simulate a year
gr_simulateYearEnergyHub.setVisible(false);
gr_loadIconYearSimulationEnergyHub.setVisible(true);


zero_Interface.f_simulateYearFromMainInterface();

traceln("ModelSave loaded succesfully!");

// Reconstruct all Agents
f_reconstructEnergyModel(deserializedEnergyModel);
f_reconstructGridConnections(deserializedEnergyModel);
f_reconstructActors(deserializedEnergyModel);
f_reconstructGridNodes(deserializedEnergyModel, saveObject.c_gridNodes);

f_reconstructGIS_Objects(deserializedEnergyModel, saveObject.c_GISObjects);

// Get profilePointer tableFunctions from 'original' energyModel
/* deserializedEnergyModel.c_profiles.forEach(x->{
J_ProfilePointer origProfile = zero_Interface.energyModel.f_findProfile(x.name);
x.setTableFunction(origProfile.getTableFunction());
}); */
// get heatingTypeHashmap from 'old' energyModel.
deserializedEnergyModel.c_defaultHeatingStrategies = zero_Interface.energyModel.c_defaultHeatingStrategies;

zero_Interface.zero_loader.energyModel = deserializedEnergyModel;
zero_Interface.energyModel = deserializedEnergyModel;
zero_Interface.uI_Results.energyModel = deserializedEnergyModel;
uI_Results.energyModel = deserializedEnergyModel;

deserializedEnergyModel.f_startAfterDeserialisation();

f_setEngineInputDataAfterDeserialisation(deserializedEnergyModel);


// Putting back the ordered collections in the interface
f_reconstructOrderedCollections(saveObject);


//Get the correct coop for the E-Hub Dashboard
v_energyHubCoop = findFirst(zero_Interface.energyModel.pop_energyCoops,x->x.p_actorID.equals("eHubConfiguratorCoop"));
if (v_energyHubCoop == null){
throw new RuntimeException("No energyCoop found with p_actorID = eHubConfiguratorCoop");
}
zero_Interface.v_customEnergyCoop = v_energyHubCoop;

//Get the slider gcs of the reloaded EnergyHub
c_sliderEAGCs = f_getEnergyHubsliderEAGCsLoadedScenario(v_energyHubCoop);

// Update the E-Hub Dashboard with the loaded E-Hub from savefile
f_initializeEnergyHubMemberNames();
uI_Tabs.f_initializeUI_Tabs(v_energyHubCoop.f_getMemberGridConnectionsCollectionPointer(), null, c_sliderEAGCs);
gr_uI_Tabs_presentation.setVisible(false);
gr_uI_Tabs_presentation.setVisible(true);
uI_Results.f_updateResultsUI(v_energyHubCoop);

// Update the main interface with the loaded E-Hub from savefile
zero_Interface.c_selectedGridConnections = new ArrayList<>(v_energyHubCoop.f_getMemberGridConnectionsCollectionPointer());

// Update the main interface tabs with the GCs from the new engine
zero_Interface.uI_Tabs.f_initializeUI_Tabs(zero_Interface.energyModel.f_getGridConnectionsCollectionPointer(), zero_Interface.energyModel.f_getPausedGridConnectionsCollectionPointer(), zero_Interface.f_getMainInterfaceSliderEAGCs());

// Reset all colors on the GIS map
zero_Interface.energyModel.pop_GIS_Buildings.forEach(x -> zero_Interface.f_styleAreas(x));
zero_Interface.energyModel.pop_GIS_Objects.forEach(x -> zero_Interface.f_styleAreas(x));
zero_Interface.energyModel.pop_GIS_Parcels.forEach(x -> zero_Interface.f_styleAreas(x));

// Color all selected GC
for (GridConnection gc : zero_Interface.c_selectedGridConnections) {
gc.c_connectedGISObjects.forEach(x -> x.gisRegion.setFillColor(zero_Interface.v_selectionColor));
}

// Zoom GIS Map to selected buildings
f_zoomMapToBuildings();

// Simulate a year
gr_simulateYearEnergyHub.setVisible(false);
gr_loadIconYearSimulationEnergyHub.setVisible(true);


zero_Interface.f_simulateYearFromMainInterface();

traceln("ModelSave loaded succesfully!");
}

} catch (IOException e) {
e.printStackTrace();
}
Expand All @@ -345,6 +360,8 @@ else if (members.size() > 8) {

traceln("Starting model serialisation...");
J_ModelSave saveObject = new J_ModelSave();
saveObject.projectDataLastModifiedDate = zero_Interface.zero_loader.v_projectDataLastChangedDate;

saveObject.energyModel = zero_Interface.energyModel;

zero_Interface.energyModel.pop_gridNodes.forEach(x->saveObject.c_gridNodes.add(x));
Expand All @@ -371,6 +388,7 @@ else if (members.size() > 8) {
saveObject.c_additionalVehicleHashMaps = c_additionalVehicleHashMaps;

v_objectMapper = new ObjectMapper();
v_objectMapper.registerModule(new JavaTimeModule());
f_addMixins();
v_objectMapper.setVisibility(PropertyAccessor.GETTER, JsonAutoDetect.Visibility.NONE);
traceln("Model serialisation has been completed.");
Expand Down
4 changes: 3 additions & 1 deletion _alp/Agents/Zero_Interface/AOC.Zero_Interface.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import java.io.IOException;
import java.util.Date;
import java.time.LocalDate;
import java.time.DayOfWeek;
import java.time.Instant;
import java.text.SimpleDateFormat;
import com.fasterxml.jackson.databind.node.JsonNodeFactory;

Expand All @@ -33,7 +34,8 @@ import com.querydsl.core.types.dsl.TimeExpression;
//import zero_engine.J_EAStorageElectric;
//import zero_engine.J_EAConsumption;
import org.apache.commons.lang3.tuple.Triple;
import javax.media.jai.widget.ViewportListener;]]></Import>
import javax.media.jai.widget.ViewportListener;
]]></Import>
<Generic>false</Generic>
<GenericParameter>
<Id>1658477103138</Id>
Expand Down
4 changes: 3 additions & 1 deletion _alp/Agents/Zero_Loader/AOC.Zero_Loader.xml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import org.apache.commons.lang3.tuple.Triple;
import java.io.*;
import java.io.File;
import java.io.IOException;
import java.time.Instant;
import java.time.LocalDate;
import java.time.DayOfWeek;
import java.text.SimpleDateFormat;
Expand All @@ -51,7 +52,8 @@ import com.zenmo.zummon.companysurvey.HeatingType;
import com.querydsl.core.types.dsl.CaseBuilder;

import energy.lux.uplux.*;
import java.util.UUID;]]></Import>
//import java.util.UUID;
import kotlin.uuid.Uuid;]]></Import>
<Generic>false</Generic>
<GenericParameter>
<Id>1726584205730</Id>
Expand Down
16 changes: 14 additions & 2 deletions _alp/Agents/Zero_Loader/Code/Functions.java
Original file line number Diff line number Diff line change
Expand Up @@ -1243,20 +1243,32 @@ List<com.zenmo.zummon.companysurvey.Survey> f_getSurveys()
//Connect with API to database
Vallum vallum = new Vallum(user.PROJECT_CLIENT_ID(), user.PROJECT_CLIENT_SECRET());


List<com.zenmo.zummon.companysurvey.Survey> surveys = new ArrayList();


String[] zorm_project_names;

if(project_data.zorm_project_names() != null){
zorm_project_names = project_data.zorm_project_names();
}
else{
zorm_project_names = new String[]{project_data.project_name()};
}

v_projectDataLastChangedDate = vallum.getProjectLastModifiedAt(zorm_project_names[0]);
//traceln("Data last changed date: %s", v_projectDataLastChangedDate);
if(zorm_project_names.length>1) {
for (int i = 1; i<zorm_project_names.length; i++) {
if (vallum.getProjectLastModifiedAt(zorm_project_names[i]).isAfter(v_projectDataLastChangedDate)) {
v_projectDataLastChangedDate = vallum.getProjectLastModifiedAt(zorm_project_names[i]);
}
//traceln("Data last changed date: %s", v_projectDataLastChangedDate);
}
}

surveys = vallum.getEnabledSurveysByProjectNames(zorm_project_names);


//Clear vallum user data
user.clearVallumUser();

Expand Down Expand Up @@ -4888,7 +4900,7 @@ java.util.UUID f_getUserUUID(String p_userIdToken)

/*ALCODEEND*/}

boolean f_getAccessOfSurveyGC(boolean dataSharingAgreed,UUID companyUUID)
boolean f_getAccessOfSurveyGC(boolean dataSharingAgreed,Uuid companyUUID)
{/*ALCODESTART::1763646792610*/
// If public model: only dataSharingAgreed matters
if (settings.isPublicModel()) {
Expand Down
2 changes: 1 addition & 1 deletion _alp/Agents/Zero_Loader/Code/Functions.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2528,7 +2528,7 @@ verbruik = levering + productie - teruglevering]]></Description>
</Parameter>
<Parameter>
<Name><![CDATA[companyUUID]]></Name>
<Type><![CDATA[UUID]]></Type>
<Type><![CDATA[Uuid]]></Type>
</Parameter>
<Body xmlns:al="http://anylogic.com"/>
</Function>
Expand Down
19 changes: 19 additions & 0 deletions _alp/Agents/Zero_Loader/Variables.xml
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,25 @@
<Type><![CDATA[double]]></Type>
</Properties>
</Variable>
<Variable Class="PlainVariable">
<Id>1769510412647</Id>
<Name><![CDATA[v_projectDataLastChangedDate]]></Name>
<X>1800</X>
<Y>290</Y>
<Label>
<X>10</X>
<Y>0</Y>
</Label>
<PublicFlag>false</PublicFlag>
<PresentationFlag>true</PresentationFlag>
<ShowLabel>true</ShowLabel>
<Properties SaveInSnapshot="true"
Constant="false"
AccessType="public"
StaticVariable="false">
<Type><![CDATA[Instant]]></Type>
</Properties>
</Variable>
<Variable Class="Parameter">
<Id>1726584206064</Id>
<Name><![CDATA[zero_Interface]]></Name>
Expand Down
5 changes: 5 additions & 0 deletions _alp/Classes/Class.J_ModelSave.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
import java.time.Instant;

/**
* J_ModelSave
*/
public class J_ModelSave implements Serializable {

public Instant projectDataLastModifiedDate;
public String[] zorm_project_names;

public EnergyModel energyModel;
public ArrayList<GridNode> c_gridNodes = new ArrayList<GridNode>();
public ArrayList<GIS_Object> c_GISObjects = new ArrayList<GIS_Object>();
Expand Down
18 changes: 12 additions & 6 deletions _alp/ModelResources.xml
Original file line number Diff line number Diff line change
Expand Up @@ -78,12 +78,6 @@
<ReferencedFromUserCode>false</ReferencedFromUserCode>
<Location>FILE_SYSTEM</Location>
</Resource>
<Resource>
<Id>1756975183289</Id>
<Path>vallum-production-741-d257d2f-all.jar</Path>
<ReferencedFromUserCode>false</ReferencedFromUserCode>
<Location>FILE_SYSTEM</Location>
</Resource>
<Resource>
<Id>1756980508229</Id>
<Path>data_Generic/inputECookerPatterns.csv</Path>
Expand Down Expand Up @@ -114,4 +108,16 @@
<ReferencedFromUserCode>false</ReferencedFromUserCode>
<Location>FILE_SYSTEM</Location>
</Resource>
<Resource>
<Id>1769509027659</Id>
<Path>vallum-main-835-49ed0dd-all.jar</Path>
<ReferencedFromUserCode>false</ReferencedFromUserCode>
<Location>FILE_SYSTEM</Location>
</Resource>
<Resource>
<Id>1769520073518</Id>
<Path>jackson-datatype-jsr310-2.21.0.jar</Path>
<ReferencedFromUserCode>false</ReferencedFromUserCode>
<Location>FILE_SYSTEM</Location>
</Resource>
</ModelResources>
Binary file added jackson-datatype-jsr310-2.21.0.jar
Binary file not shown.
Binary file added vallum-main-835-49ed0dd-all.jar
Binary file not shown.