Skip to content
Merged
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
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added
- SQL time series sources (`SqlTimeSeriesSource` and `SqlTimeSeriesMappingSource`) [#467](https://github.com/ie3-institute/PowerSystemDataModel/issues/467)
- Graph with impedance weighted edges including facilities to create it [#440](https://github.com/ie3-institute/PowerSystemDataModel/issues/440)
- Introducing `SqlIndividualTimeSeriesMetaInformation` which provides sql table names [#513](https://github.com/ie3-institute/PowerSystemDataModel/issues/513)

### Fixed
- Reduced code smells [#492](https://github.com/ie3-institute/PowerSystemDataModel/issues/492)
Expand All @@ -26,6 +27,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed
- BREAKING: Transformer's no load susceptance needs to be zero or negative to pass model validation [#378](https://github.com/ie3-institute/PowerSystemDataModel/issues/378)
- All input data sets for version < 3.0.0 need to be altered!
- Deprecating (as part of [#513](https://github.com/ie3-institute/PowerSystemDataModel/issues/513)):
- `edu.ie3.datamodel.io.csv.timeseries.ColumnScheme`
- `edu.ie3.datamodel.io.csv.FileNameMetaInformation`
- `edu.ie3.datamodel.io.csv.timeseries.IndividualTimeSeriesMetaInformation`
- `edu.ie3.datamodel.io.csv.timeseries.LoadProfileTimeSeriesMetaInformation`
- `edu.ie3.datamodel.io.connectors.CsvFileConnector.CsvIndividualTimeSeriesMetaInformation`
- and related methods

## [2.1.0] - 2022-01-05

Expand Down
67 changes: 48 additions & 19 deletions src/main/java/edu/ie3/datamodel/io/connectors/CsvFileConnector.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,10 @@
import edu.ie3.datamodel.exceptions.ConnectorException;
import edu.ie3.datamodel.io.IoUtil;
import edu.ie3.datamodel.io.csv.*;
import edu.ie3.datamodel.io.csv.timeseries.ColumnScheme;
import edu.ie3.datamodel.io.csv.timeseries.IndividualTimeSeriesMetaInformation;
import edu.ie3.datamodel.io.naming.FileNamingStrategy;
import edu.ie3.datamodel.io.naming.TimeSeriesMetaInformation;
import edu.ie3.datamodel.io.naming.timeseries.ColumnScheme;
import edu.ie3.datamodel.io.naming.timeseries.IndividualTimeSeriesMetaInformation;
import edu.ie3.datamodel.models.UniqueEntity;
import edu.ie3.datamodel.models.timeseries.TimeSeries;
import edu.ie3.datamodel.models.timeseries.TimeSeriesEntry;
Expand Down Expand Up @@ -41,7 +42,8 @@ public class CsvFileConnector implements DataConnector {
new HashMap<>();
private final Map<UUID, BufferedCsvWriter> timeSeriesWriters = new HashMap<>();
// ATTENTION: Do not finalize. It's meant for lazy evaluation.
private Map<UUID, CsvIndividualTimeSeriesMetaInformation> individualTimeSeriesMetaInformation;
private Map<UUID, edu.ie3.datamodel.io.csv.CsvIndividualTimeSeriesMetaInformation>
individualTimeSeriesMetaInformation;
private final FileNamingStrategy fileNamingStrategy;
private final String baseDirectoryName;

Expand Down Expand Up @@ -219,8 +221,25 @@ public BufferedReader initReader(String filePath) throws FileNotFoundException {
*
* @param timeSeriesUuid The time series in question
* @return An option on the queried information
* @deprecated since 3.0. Use {@link #individualTimeSeriesMetaInformation(UUID)} instead
*/
public Optional<IndividualTimeSeriesMetaInformation> getIndividualTimeSeriesMetaInformation(
@Deprecated(since = "3.0", forRemoval = true)
public Optional<edu.ie3.datamodel.io.csv.timeseries.IndividualTimeSeriesMetaInformation>
getIndividualTimeSeriesMetaInformation(UUID timeSeriesUuid) {
return individualTimeSeriesMetaInformation(timeSeriesUuid)
.map(edu.ie3.datamodel.io.csv.timeseries.IndividualTimeSeriesMetaInformation::new);
}

/**
* Get time series meta information for a given uuid.
*
* <p>This method lazily evaluates the mapping from <i>all</i> time series files to their meta
* information.
*
* @param timeSeriesUuid The time series in question
* @return An option on the queried information
*/
public Optional<IndividualTimeSeriesMetaInformation> individualTimeSeriesMetaInformation(
UUID timeSeriesUuid) {
if (Objects.isNull(individualTimeSeriesMetaInformation))
individualTimeSeriesMetaInformation = buildIndividualTimeSeriesMetaInformation();
Expand All @@ -233,7 +252,7 @@ public Optional<IndividualTimeSeriesMetaInformation> getIndividualTimeSeriesMeta
*
* @return Mapping from time series uuid to it's meta information.
*/
private Map<UUID, CsvIndividualTimeSeriesMetaInformation>
private Map<UUID, edu.ie3.datamodel.io.csv.CsvIndividualTimeSeriesMetaInformation>
buildIndividualTimeSeriesMetaInformation() {
return getIndividualTimeSeriesFilePaths().parallelStream()
.map(
Expand All @@ -242,11 +261,11 @@ public Optional<IndividualTimeSeriesMetaInformation> getIndividualTimeSeriesMeta
String filePathWithoutEnding = removeFileEnding(filePath);
IndividualTimeSeriesMetaInformation metaInformation =
(IndividualTimeSeriesMetaInformation)
fileNamingStrategy.extractTimeSeriesMetaInformation(filePathWithoutEnding);
return new CsvIndividualTimeSeriesMetaInformation(
fileNamingStrategy.timeSeriesMetaInformation(filePathWithoutEnding);
return new edu.ie3.datamodel.io.csv.CsvIndividualTimeSeriesMetaInformation(
metaInformation, filePathWithoutEnding);
})
.collect(Collectors.toMap(FileNameMetaInformation::getUuid, v -> v));
.collect(Collectors.toMap(TimeSeriesMetaInformation::getUuid, v -> v));
}

/**
Expand All @@ -257,7 +276,7 @@ public Optional<IndividualTimeSeriesMetaInformation> getIndividualTimeSeriesMeta
* possible readers will be initialized.
* @return A mapping from column scheme to the individual time series meta information
*/
public Map<ColumnScheme, Set<CsvIndividualTimeSeriesMetaInformation>>
public Map<ColumnScheme, Set<edu.ie3.datamodel.io.csv.CsvIndividualTimeSeriesMetaInformation>>
getCsvIndividualTimeSeriesMetaInformation(ColumnScheme... columnSchemes) {
return getIndividualTimeSeriesFilePaths().parallelStream()
.map(
Expand All @@ -269,7 +288,8 @@ public Optional<IndividualTimeSeriesMetaInformation> getIndividualTimeSeriesMeta
.map(Optional::get)
.collect(
Collectors.groupingBy(
CsvIndividualTimeSeriesMetaInformation::getColumnScheme, Collectors.toSet()));
edu.ie3.datamodel.io.csv.CsvIndividualTimeSeriesMetaInformation::getColumnScheme,
Collectors.toSet()));
}

/**
Expand Down Expand Up @@ -322,11 +342,11 @@ private Set<String> getIndividualTimeSeriesFilePaths() {
* allowed.
* @return An {@link Optional} to {@link IndividualTimeSeriesMetaInformation}
*/
private Optional<CsvIndividualTimeSeriesMetaInformation> buildCsvTimeSeriesMetaInformation(
String filePathString, ColumnScheme... columnSchemes) {
private Optional<edu.ie3.datamodel.io.csv.CsvIndividualTimeSeriesMetaInformation>
buildCsvTimeSeriesMetaInformation(String filePathString, ColumnScheme... columnSchemes) {
try {
FileNameMetaInformation metaInformation =
fileNamingStrategy.extractTimeSeriesMetaInformation(filePathString);
TimeSeriesMetaInformation metaInformation =
fileNamingStrategy.timeSeriesMetaInformation(filePathString);
if (!IndividualTimeSeriesMetaInformation.class.isAssignableFrom(metaInformation.getClass())) {
log.error(
"The time series file '{}' does not represent an individual time series.",
Expand All @@ -350,7 +370,7 @@ private Optional<CsvIndividualTimeSeriesMetaInformation> buildCsvTimeSeriesMetaI
return Optional.empty();
}
return Optional.of(
new CsvIndividualTimeSeriesMetaInformation(
new edu.ie3.datamodel.io.csv.CsvIndividualTimeSeriesMetaInformation(
individualMetaInformation.getUuid(),
individualMetaInformation.getColumnScheme(),
filePathString));
Expand Down Expand Up @@ -433,19 +453,28 @@ public void shutdown() {
});
}

/** Enhancing the {@link IndividualTimeSeriesMetaInformation} with the full path to csv file */
/**
* Enhancing the {@link IndividualTimeSeriesMetaInformation} with the full path to csv file
*
* @deprecated since 3.0. Use {@link
* edu.ie3.datamodel.io.csv.CsvIndividualTimeSeriesMetaInformation} instead
*/
@Deprecated(since = "3.0", forRemoval = true)
public static class CsvIndividualTimeSeriesMetaInformation
extends IndividualTimeSeriesMetaInformation {
extends edu.ie3.datamodel.io.csv.timeseries.IndividualTimeSeriesMetaInformation {
private final String fullFilePath;

public CsvIndividualTimeSeriesMetaInformation(
UUID uuid, ColumnScheme columnScheme, String fullFilePath) {
UUID uuid,
edu.ie3.datamodel.io.csv.timeseries.ColumnScheme columnScheme,
String fullFilePath) {
super(uuid, columnScheme);
this.fullFilePath = fullFilePath;
}

public CsvIndividualTimeSeriesMetaInformation(
IndividualTimeSeriesMetaInformation metaInformation, String fullFilePath) {
edu.ie3.datamodel.io.csv.timeseries.IndividualTimeSeriesMetaInformation metaInformation,
String fullFilePath) {
this(metaInformation.getUuid(), metaInformation.getColumnScheme(), fullFilePath);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
/*
* © 2022. TU Dortmund University,
* Institute of Energy Systems, Energy Efficiency and Energy Economics,
* Research group Distribution grid planning and operation
*/
package edu.ie3.datamodel.io.csv;

import edu.ie3.datamodel.io.naming.timeseries.ColumnScheme;
import edu.ie3.datamodel.io.naming.timeseries.IndividualTimeSeriesMetaInformation;
import java.util.Objects;
import java.util.UUID;

/** Enhancing the {@link IndividualTimeSeriesMetaInformation} with the full path to csv file */
public class CsvIndividualTimeSeriesMetaInformation extends IndividualTimeSeriesMetaInformation {
private final String fullFilePath;

public CsvIndividualTimeSeriesMetaInformation(
UUID uuid, ColumnScheme columnScheme, String fullFilePath) {
super(uuid, columnScheme);
this.fullFilePath = fullFilePath;
}

public CsvIndividualTimeSeriesMetaInformation(
IndividualTimeSeriesMetaInformation metaInformation, String fullFilePath) {
this(metaInformation.getUuid(), metaInformation.getColumnScheme(), fullFilePath);
}

public String getFullFilePath() {
return fullFilePath;
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof CsvIndividualTimeSeriesMetaInformation that)) return false;
if (!super.equals(o)) return false;
return fullFilePath.equals(that.fullFilePath);
}

@Override
public int hashCode() {
return Objects.hash(super.hashCode(), fullFilePath);
}

@Override
public String toString() {
return "CsvIndividualTimeSeriesMetaInformation{"
+ "uuid="
+ getUuid()
+ ", columnScheme="
+ getColumnScheme()
+ ", fullFilePath='"
+ fullFilePath
+ '\''
+ '}';
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,12 @@
import java.util.Objects;
import java.util.UUID;

/** Meta information, that can be derived from a certain file name */
/**
* Meta information, that can be derived from a certain file name
*
* @deprecated since 3.0. Use {@link edu.ie3.datamodel.io.naming.TimeSeriesMetaInformation} instead
*/
@Deprecated(since = "3.0", forRemoval = true)
public abstract class FileNameMetaInformation {
private final UUID uuid;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,12 @@
import java.util.Objects;
import java.util.Optional;

/** Yet supported column schemes in individual time series */
/**
* Yet supported column schemes in individual time series
*
* @deprecated since 3.0. Use {@link edu.ie3.datamodel.io.naming.timeseries.ColumnScheme} instead
*/
@Deprecated(since = "3.0", forRemoval = true)
public enum ColumnScheme {
ENERGY_PRICE("c", EnergyPriceValue.class),
ACTIVE_POWER("p", PValue.class),
Expand All @@ -24,6 +29,7 @@ public enum ColumnScheme {
private final String scheme;
private final Class<? extends Value> valueClass;

@Deprecated
ColumnScheme(String scheme, Class<? extends Value> valueClass) {
this.scheme = scheme;
this.valueClass = valueClass;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,13 @@
import java.util.Objects;
import java.util.UUID;

/** Specific meta information, that can be derived from a individual time series file */
/**
* Specific meta information, that can be derived from a individual time series file
*
* @deprecated since 3.0. Use {@link
* edu.ie3.datamodel.io.naming.timeseries.IndividualTimeSeriesMetaInformation} instead
*/
@Deprecated(since = "3.0", forRemoval = true)
public class IndividualTimeSeriesMetaInformation extends FileNameMetaInformation {
private final ColumnScheme columnScheme;

Expand All @@ -18,6 +24,20 @@ public IndividualTimeSeriesMetaInformation(UUID uuid, ColumnScheme columnScheme)
this.columnScheme = columnScheme;
}

public IndividualTimeSeriesMetaInformation(
edu.ie3.datamodel.io.naming.timeseries.IndividualTimeSeriesMetaInformation
newMetaInformation) {
super(newMetaInformation.getUuid());
this.columnScheme =
ColumnScheme.parse(newMetaInformation.getColumnScheme().toString())
.orElseThrow(
() ->
new RuntimeException(
"Cannot convert new column scheme "
+ newMetaInformation.getColumnScheme().getScheme()
+ " to deprecated column scheme!"));
}

public ColumnScheme getColumnScheme() {
return columnScheme;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,13 @@
import java.util.Objects;
import java.util.UUID;

/** Specific meta information, that can be derived from a load profile time series file */
/**
* Specific meta information, that can be derived from a load profile time series file
*
* @deprecated since 3.0. Use {@link
* edu.ie3.datamodel.io.naming.timeseries.LoadProfileTimeSeriesMetaInformation} instead
*/
@Deprecated(since = "3.0", forRemoval = true)
public class LoadProfileTimeSeriesMetaInformation extends FileNameMetaInformation {
private final String profile;

Expand All @@ -18,6 +24,12 @@ public LoadProfileTimeSeriesMetaInformation(UUID uuid, String profile) {
this.profile = profile;
}

public LoadProfileTimeSeriesMetaInformation(
edu.ie3.datamodel.io.naming.timeseries.LoadProfileTimeSeriesMetaInformation metaInformation) {
super(metaInformation.getUuid());
this.profile = metaInformation.getProfile();
}

public String getProfile() {
return profile;
}
Expand Down
Loading