Skip to content

Refactoring structure. #266

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 4 commits into
base: dev
Choose a base branch
from
Draft
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
2 changes: 1 addition & 1 deletion src/main/java/edu/ie3/simona/api/ExtLinkInterface.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@

package edu.ie3.simona.api;

import edu.ie3.simona.api.data.ExtSimAdapterData;
import edu.ie3.simona.api.exceptions.NoExtSimulationException;
import edu.ie3.simona.api.simulation.ExtSimAdapterData;
import edu.ie3.simona.api.simulation.ExtSimulation;

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@
* Research group Distribution grid planning and operation
*/

package edu.ie3.simona.api.simulation;
package edu.ie3.simona.api.data;

import edu.ie3.simona.api.simulation.ontology.ControlMessageToExt;
import edu.ie3.simona.api.simulation.ontology.ControlResponseMessageFromExt;
import edu.ie3.simona.api.ontology.simulation.ControlMessageToExt;
import edu.ie3.simona.api.ontology.simulation.ControlResponseMessageFromExt;
import java.util.concurrent.LinkedBlockingQueue;
import org.apache.pekko.actor.typed.ActorRef;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
/*
* © 2024. TU Dortmund University,
* Institute of Energy Systems, Energy Efficiency and Energy Economics,
* Research group Distribution grid planning and operation
*/

package edu.ie3.simona.api.data.container;

import edu.ie3.datamodel.models.value.PValue;
import edu.ie3.datamodel.models.value.Value;
import edu.ie3.simona.api.data.model.em.FlexOptionRequestValue;
import edu.ie3.simona.api.data.model.em.FlexOptions;
import java.util.*;

/** Contains all inputs for SIMONA for a certain tick */
public final class ExtInputDataContainer implements ExtDataContainer {

/** The tick, the input data is meant for */
private final long tick;

/** The next tick, when data will be provided, if available */
private final Optional<Long> maybeNextTick;

// primary map
/** Map external id to primary input value for SIMONA */
private final Map<UUID, Value> primaryData = new HashMap<>();

// em maps
private final Map<UUID, FlexOptionRequestValue> flexRequests = new HashMap<>();
private final Map<UUID, List<FlexOptions>> flexOptions = new HashMap<>();
private final Map<UUID, PValue> setPoints = new HashMap<>();

/**
* Container class for input data for SIMONA which can be read by SimonaAPI
*
* @param tick The tick, the input data is meant for
* @param nextTick tick, when the next data will be provided
*/
public ExtInputDataContainer(long tick, long nextTick) {
this.tick = tick;
this.maybeNextTick = Optional.of(nextTick);
}

public ExtInputDataContainer(long tick) {
this.tick = tick;
this.maybeNextTick = Optional.empty();
}

@Override
public boolean isEmpty() {
return primaryData.isEmpty()
&& flexRequests.isEmpty()
&& flexOptions.isEmpty()
&& setPoints.isEmpty();
}

public long getTick() {
return tick;
}

public Optional<Long> getMaybeNextTick() {
return maybeNextTick;
}

// add data
public void addPrimaryValue(UUID id, Value value) {
primaryData.put(id, value);
}

public void addRequest(UUID requester, List<UUID> emEntities) {
flexRequests.put(requester, new FlexOptionRequestValue(requester, emEntities));
}

public void addFlexOptions(UUID id, List<FlexOptions> flexOption) {
if (!flexOptions.containsKey(id)) {
List<FlexOptions> flexOptionValues = new ArrayList<>(flexOption);
flexOptions.put(id, flexOptionValues);
} else {
flexOptions.get(id).addAll(flexOption);
}
}

public void addSetPoint(UUID id, PValue setPoint) {
setPoints.put(id, setPoint);
}

public Map<UUID, Value> extractPrimaryData() {
return copyAndClear(primaryData);
}

// extract and delete data
public Map<UUID, FlexOptionRequestValue> extractFlexRequests() {
return copyAndClear(flexRequests);
}

public Map<UUID, List<FlexOptions>> extractFlexOptions() {
return copyAndClear(flexOptions);
}

public Map<UUID, PValue> extractSetPoints() {
return copyAndClear(setPoints);
}

// data to string
public String primaryDataString() {
return primaryData.toString();
}

public String flexRequestsString() {
return flexRequests.toString();
}

public String flexOptionsString() {
return flexOptions.toString();
}

public String setPointsString() {
return setPoints.toString();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
/*
* © 2025. TU Dortmund University,
* Institute of Energy Systems, Energy Efficiency and Energy Economics,
* Research group Distribution grid planning and operation
*/

package edu.ie3.simona.api.data.model.em;

import edu.ie3.datamodel.models.result.ResultEntity;
import edu.ie3.datamodel.models.value.PValue;
import java.time.ZonedDateTime;
import java.util.Optional;
import java.util.UUID;

/** Em set point result. */
public class EmSetPointResult extends ResultEntity {

private final PValue setPoint;

public EmSetPointResult(ZonedDateTime time, UUID inputModel, PValue setPoint) {
super(time, inputModel);
this.setPoint = setPoint;
}

public Optional<PValue> getSetPoint() {
return Optional.ofNullable(setPoint);
}

@Override
public String toString() {
return "EmSetPointResult{"
+ "time="
+ getTime()
+ ", inputModel="
+ getInputModel()
+ ", setPoint="
+ getSetPoint()
+ '}';
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
/*
* © 2025. TU Dortmund University,
* Institute of Energy Systems, Energy Efficiency and Energy Economics,
* Research group Distribution grid planning and operation
*/

package edu.ie3.simona.api.data.model.em;

import edu.ie3.datamodel.models.value.Value;
import java.util.List;
import java.util.UUID;

public record FlexOptionRequestValue(UUID requester, List<UUID> emEntities) implements Value {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
/*
* © 2025. TU Dortmund University,
* Institute of Energy Systems, Energy Efficiency and Energy Economics,
* Research group Distribution grid planning and operation
*/

package edu.ie3.simona.api.data.model.em;

import edu.ie3.datamodel.models.value.Value;
import java.util.Map;
import java.util.UUID;

public record FlexOptionValue(Map<UUID, FlexOptions> flexOptions) implements Value {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/*
* © 2025. TU Dortmund University,
* Institute of Energy Systems, Energy Efficiency and Energy Economics,
* Research group Distribution grid planning and operation
*/

package edu.ie3.simona.api.data.model.em;

import edu.ie3.datamodel.models.result.ResultEntity;
import java.time.ZonedDateTime;
import java.util.UUID;

public class FlexRequestResult extends ResultEntity {

/**
* Standard constructor which includes auto generation of the resulting output models uuid.
*
* @param time date and time when the result is produced
* @param inputModel uuid of the input model that produces the result
*/
public FlexRequestResult(ZonedDateTime time, UUID inputModel) {
super(time, inputModel);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
/*
* © 2025. TU Dortmund University,
* Institute of Energy Systems, Energy Efficiency and Energy Economics,
* Research group Distribution grid planning and operation
*/

package edu.ie3.simona.api.data.model.em;

import edu.ie3.datamodel.models.value.PValue;
import javax.measure.quantity.Power;
import tech.units.indriya.ComparableQuantity;

public class NoSetPointValue extends PValue {
public NoSetPointValue(ComparableQuantity<Power> p) {
super(p);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* Research group Distribution grid planning and operation
*/

package edu.ie3.simona.api.data.ev.model;
package edu.ie3.simona.api.data.model.ev;

import java.util.UUID;
import javax.measure.quantity.Energy;
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/edu/ie3/simona/api/mapping/DataType.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
public enum DataType {
EXT_PRIMARY_INPUT("primary_input"),
EXT_EM_INPUT("em_input"),
EXT_EM_COMMUNICATION("em_communication"),
EXT_EM_OPTIMIZER("em_optimizer"),
EXT_GRID_RESULT("grid_result"),
EXT_PARTICIPANT_RESULT("participant_result"),
EXT_FLEX_OPTIONS_RESULT("flex_options_result");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* Research group Distribution grid planning and operation
*/

package edu.ie3.simona.api.simulation.mapping;
package edu.ie3.simona.api.mapping;

import edu.ie3.datamodel.exceptions.FactoryException;
import edu.ie3.datamodel.exceptions.ParsingException;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* Research group Distribution grid planning and operation
*/

package edu.ie3.simona.api.simulation.mapping;
package edu.ie3.simona.api.mapping;

import edu.ie3.simona.api.mapping.DataType;
import java.util.Collections;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* Research group Distribution grid planning and operation
*/

package edu.ie3.simona.api.simulation.mapping;
package edu.ie3.simona.api.mapping;

import edu.ie3.datamodel.exceptions.SourceException;
import edu.ie3.datamodel.io.factory.EntityData;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* Research group Distribution grid planning and operation
*/

package edu.ie3.simona.api.data.ontology;
package edu.ie3.simona.api.ontology;

/** Data related messages that are sent from the external simulation to SIMONA */
public interface DataMessageFromExt {}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* Research group Distribution grid planning and operation
*/

package edu.ie3.simona.api.data.ontology;
package edu.ie3.simona.api.ontology;

/** Data related messages that are sent from SIMONA to the external simulation */
public interface DataResponseMessageToExt {}
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
* Research group Distribution grid planning and operation
*/

package edu.ie3.simona.api.data.ontology;
package edu.ie3.simona.api.ontology;

import edu.ie3.simona.api.simulation.ontology.ControlResponseMessageFromExt;
import edu.ie3.simona.api.ontology.simulation.ControlResponseMessageFromExt;
import org.apache.pekko.actor.typed.ActorRef;

public record ScheduleDataServiceMessage(ActorRef<DataMessageFromExt> dataService)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
/*
* © 2025. TU Dortmund University,
* Institute of Energy Systems, Energy Efficiency and Energy Economics,
* Research group Distribution grid planning and operation
*/

package edu.ie3.simona.api.ontology.em;

public record EmCompletion() implements EmDataResponseMessageToExt {}
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
* Research group Distribution grid planning and operation
*/

package edu.ie3.simona.api.data.em.ontology;
package edu.ie3.simona.api.ontology.em;

import edu.ie3.simona.api.data.ontology.DataMessageFromExt;
import edu.ie3.simona.api.ontology.DataMessageFromExt;

/** Messages that are sent from an external data simulation which provides em data to SIMONA. */
public interface EmDataMessageFromExt extends DataMessageFromExt {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
/*
* © 2024. TU Dortmund University,
* Institute of Energy Systems, Energy Efficiency and Energy Economics,
* Research group Distribution grid planning and operation
*/

package edu.ie3.simona.api.ontology.em;

import edu.ie3.simona.api.data.model.em.EmSetPointResult;
import java.util.Map;
import java.util.UUID;

/** Message that provides em data (set points) to an external simulation. */
public record EmSetPointDataResponse(Map<UUID, EmSetPointResult> emData)
implements EmDataResponseMessageToExt {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
/*
* © 2025. TU Dortmund University,
* Institute of Energy Systems, Energy Efficiency and Energy Economics,
* Research group Distribution grid planning and operation
*/

package edu.ie3.simona.api.ontology.em;

import edu.ie3.datamodel.models.result.system.FlexOptionsResult;
import java.util.Map;
import java.util.UUID;

/** Message that provides em data (flexibility options) to an external simulation. */
public record FlexOptionsResponse(Map<UUID, FlexOptionsResult> flexOptions)
implements EmDataResponseMessageToExt {}
Loading
Loading