Skip to content

Commit a079b8c

Browse files
committed
Merge branch 'dev' into jb/#762-sql-grid-datasources
2 parents d77e478 + 1623d7f commit a079b8c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+1513
-1711
lines changed

CHANGELOG.md

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
66

77
## [Unreleased/Snapshot]
88

9+
### Added
10+
11+
### Fixed
12+
13+
### Changed
14+
15+
## [5.1.0] - 2024-06-24
16+
917
### Added
1018
- Enhancing `VoltageLevel` with `equals` method [#1063](https://github.com/ie3-institute/PowerSystemDataModel/issues/1063)
1119
- `ConnectorValidationUtils` checks if parallel devices is > 0 [#1077](https://github.com/ie3-institute/PowerSystemDataModel/issues/1077)
@@ -14,17 +22,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1422

1523
### Fixed
1624
- Fixed `MappingEntryies` not getting processed by adding `Getter` methods for record fields [#1084](https://github.com/ie3-institute/PowerSystemDataModel/issues/1084)
25+
- Fixed "depth of discharge" in documentation [#872](https://github.com/ie3-institute/PowerSystemDataModel/issues/872)
26+
- Fixed project being build twice in CI [#994](https://github.com/ie3-institute/PowerSystemDataModel/issues/994)
1727

1828
### Changed
1929
- Improvements to the search for corner points in `IdCoordinateSource` [#1016](https://github.com/ie3-institute/PowerSystemDataModel/issues/1016)
2030
- Refactor `CsvFileConnector` and `CsvDataSource` [#1007](https://github.com/ie3-institute/PowerSystemDataModel/issues/1007)
21-
31+
- Make `EntitySource` completely static [#975](https://github.com/ie3-institute/PowerSystemDataModel/issues/975)
32+
- Abstract commonly used functionality from `EntitySource` [#981](https://github.com/ie3-institute/PowerSystemDataModel/issues/981)
2233

2334
## [5.0.1] - 2024-03-07
2435

2536
### Fixed
2637
- Fixed `equals` of `ResultEntity` and `TimeSeriesEntry` [#1037](https://github.com/ie3-institute/PowerSystemDataModel/issues/1037)
27-
- Fixed "depth of discharge" in documentation [#872](https://github.com/ie3-institute/PowerSystemDataModel/issues/872)
2838

2939
## [5.0.0] - 2024-03-06
3040

@@ -292,9 +302,10 @@ coordinates or multiple exactly equal coordinates possible
292302
- CsvDataSource now stops trying to get an operator for empty operator uuid field in entities
293303
- CsvDataSource now parsing multiple geoJson strings correctly
294304

295-
[Unreleased/Snapshot]: https://github.com/ie3-institute/powersystemdatamodel/compare/5.0.1...HEAD
296-
[5.0.0]: https://github.com/ie3-institute/powersystemdatamodel/compare/5.0.0...5.0.1
297-
[4.1.0]: https://github.com/ie3-institute/powersystemdatamodel/compare/4.1.0...5.0.0
305+
[Unreleased/Snapshot]: https://github.com/ie3-institute/powersystemdatamodel/compare/5.1.0...HEAD
306+
[5.1.0]: https://github.com/ie3-institute/powersystemdatamodel/compare/5.0.1...5.1.0
307+
[5.0.1]: https://github.com/ie3-institute/powersystemdatamodel/compare/5.0.0...5.0.1
308+
[5.0.0]: https://github.com/ie3-institute/powersystemdatamodel/compare/4.1.0...5.0.0
298309
[4.1.0]: https://github.com/ie3-institute/powersystemdatamodel/compare/4.0.0...4.1.0
299310
[4.0.0]: https://github.com/ie3-institute/powersystemdatamodel/compare/3.0.0...4.0.0
300311
[3.0.0]: https://github.com/ie3-institute/powersystemdatamodel/compare/2.1.0...3.0.0

Jenkinsfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ node {
113113
gradle('--refresh-dependencies clean spotlessCheck pmdMain pmdTest spotbugsMain ' +
114114
'spotbugsTest test jacocoTestReport jacocoTestCoverageVerification', projectName)
115115

116-
sh(script: """set +x && cd $projectName""" + ''' set +x; ./gradlew clean javadoc''', returnStdout: true)
116+
sh(script: """set +x && cd $projectName""" + ''' set +x; ./gradlew javadoc''', returnStdout: true)
117117
}
118118

119119
// sonarqube analysis
@@ -156,7 +156,7 @@ node {
156156
*/
157157
sh(
158158
script: """set +x && cd $projectName""" +
159-
''' set +x; ./gradlew clean javadoc''',
159+
''' set +x; ./gradlew javadoc''',
160160
returnStdout: true
161161
)
162162

build.gradle

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ plugins {
55
id 'signing'
66
id 'pmd' // code check, working on source code
77
id 'com.diffplug.spotless' version '6.25.0' //code format
8-
id 'com.github.spotbugs' version '6.0.16' // code check, working on byte code
8+
id 'com.github.spotbugs' version '6.0.18' // code check, working on byte code
99
id 'de.undercouch.download' version '5.6.0'
1010
id 'kr.motd.sphinx' version '2.10.1' // documentation generation
1111
id 'jacoco' // java code coverage plugin
@@ -17,7 +17,7 @@ ext {
1717
//version (changing these should be considered thoroughly!)
1818
javaVersion = JavaVersion.VERSION_17
1919
groovyVersion = "4.0"
20-
groovyBinaryVersion = "4.0.21"
20+
groovyBinaryVersion = "4.0.22"
2121
testcontainersVersion = '1.19.8'
2222

2323
scriptsLocation = 'gradle' + File.separator + 'scripts' + File.separator //location of script plugins
@@ -70,7 +70,7 @@ dependencies {
7070
// testing
7171
testImplementation "org.apache.groovy:groovy:$groovyBinaryVersion"
7272

73-
testImplementation 'org.junit.jupiter:junit-jupiter:5.10.2'
73+
testImplementation 'org.junit.jupiter:junit-jupiter:5.10.3'
7474
testImplementation "org.spockframework:spock-core:2.3-groovy-$groovyVersion"
7575
testImplementation 'org.objenesis:objenesis:3.4' // Mock creation with constructor parameters
7676
testImplementation 'net.bytebuddy:byte-buddy:1.14.17' // Mocks of classes
@@ -90,7 +90,7 @@ dependencies {
9090

9191
// Databases
9292
implementation 'org.influxdb:influxdb-java:2.24'
93-
implementation 'com.couchbase.client:java-client:3.6.2'
93+
implementation 'com.couchbase.client:java-client:3.7.0'
9494
runtimeOnly 'org.postgresql:postgresql:42.7.3' // postgresql jdbc driver required during runtime
9595

9696
implementation 'commons-io:commons-io:2.16.1' // I/O functionalities

docs/uml/main/EntitySourceClassDiagram.puml

Lines changed: 140 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,27 +3,38 @@
33
note "Assuming all classes to implement \nthe abstract methods of their interfaces\n\n" as generalNotes
44

55
abstract class EntitySource {
6-
# DataSource dataSource
7-
# {static} <E extends EntityData, T extends UniqueEntity, R extends E> Try<R, SourceException> enrichEntityData(E, String, Map<UUID, T>, BiFunction<E, T, R>)
8-
# {static} <E extends EntityData, T1 extends UniqueEntity, T2 extends UniqueEntity, R extends E> Try<R, SourceException> enrichEntityData(E, String, Map<UUID, T1>, String, Map<UUID, T2>, TriFunction<E, T1, T2, R>)
9-
# {static} <T extends UniqueEntity> Try<T, SourceException> getLinkedEntity(EntityData, String, Map<UUID, T>)
10-
# {static} <E extends EntityData, T extends UniqueEntity, R extends E> Try<R, SourceException> optionallyEnrichEntityData(E, String, Map<UUID, T>, T, BiFunction<E, T, R>)
11-
# Stream<Try<NodeAssetInputEntityData, SourceException>> buildNodeAssetEntities(Class<T>, Map<UUID, OperatorInput>, Map<UUID, NodeInput>)
12-
# {static} Stream<Try<NodeAssetInputEntityData, SourceException>> nodeAssetInputEntityDataStream(Stream<Try<AssetInputEntityData, SourceException>>, Map<UUID, NodeInput>)
13-
# Stream<Try<AssetInputEntityData, SourceException>> buildAssetInputEntities(Class<? extends AssetInput>, Map<UUID, OperatorInput>)
14-
# {static} Stream<Try<AssetInputEntityData, SourceException>> assetInputEntityDataStream(Stream<Try<EntityData, SourceException>>, Map<UUID, OperatorInput>)
15-
# Stream<Try<EntityData, SourceException>> buildEntityData(Class<? extends UniqueEntity>)
16-
# {static} <S extends UniqueEntity> Map<UUID, S> unpackMap(Stream<Try<S, FactoryException>>, Class<S>) throws SourceException
17-
# {static} <S extends UniqueEntity> Set<S> unpackSet(Stream<Try<S, FactoryException>>, Class<S>) throws SourceException
18-
# {static} <S, E extends Exception> Stream<S> unpackSet(Stream<Try<S, E>>, Class<S>) throws SourceException
6+
+ void validate() throws ValidationException
197
}
208

9+
EntitySource <|-- EnergyManagementSource
2110
EntitySource <|-- GraphicSource
11+
EntitySource <|-- IdCoordinateSource
12+
IdCoordinateSource <|-- CsvIdCoordinateSource
13+
IdCoordinateSource <|-- SqlIdCoordinateSource
2214
EntitySource <|-- RawGridSource
2315
EntitySource <|-- ResultEntitySource
2416
EntitySource <|-- SystemParticipantSource
2517
EntitySource <|-- ThermalSource
18+
EntitySource <|-- TimeSeriesMappingSource
19+
TimeSeriesMappingSource <|-- CsvTimeSeriesMappingSource
20+
TimeSeriesMappingSource <|-- SqlTimeSeriesMappingSource
21+
EntitySource <|-- TimeSeriesSource
22+
TimeSeriesSource <|-- CsvTimeSeriesSource
23+
TimeSeriesSource <|-- SqlTimeSeriesSource
2624
EntitySource <|-- TypeSource
25+
EntitySource <|-- WeatherSource
26+
WeatherSource <|-- CouchbaseWeatherSource
27+
WeatherSource <|-- CsvWeatherSource
28+
WeatherSource <|-- InfluxDbWeatherSource
29+
WeatherSource <|-- SqlWeatherSource
30+
31+
class EnergyManagementSource {
32+
- TypeSource typeSource
33+
- EmInputFactory emInputFactory
34+
+ EnergyManagementSource(TypeSource, DataSource)
35+
+ Map<UUID, EmInput> getEmUnits() throws SourceException
36+
+ Map<UUID, EmInput> getEmUnits(Map<UUID, OperatorInput>) throws SourceException
37+
}
2738

2839
class GraphicSource {
2940
- TypeSource typeSource
@@ -39,6 +50,34 @@ class GraphicSource {
3950
+ Set<LineGraphicInput> getLineGraphicInput(Map<UUID, LineInput>) throws SourceException
4051
}
4152

53+
abstract class IdCoordinateSource {
54+
+ Optional<Set<String>> getSourceFields() throws SourceException
55+
+ Optional<Point> getCoordinate(int)
56+
+ Collection<Point> getCoordinates(int[])
57+
+ Optional<Integer> getId(Point)
58+
+ Collection<Point> getAllCoordinates()
59+
+ List<CoordinateDistance> getNearestCoordinates(Point, int)
60+
+ List<CoordinateDistance> getClosestCoordinates(Point, int, ComparableQuantity<Length>)
61+
+ List<CoordinateDistance> calculateCoordinateDistances(Point, int, Collection<Point>)
62+
+ List<CoordinateDistance> findCornerPoints(Point, ComparableQuantity<Length>)
63+
+ List<CoordinateDistance> findCornerPoints(Point, Collection<CoordinateDistance>)
64+
}
65+
66+
class CsvIdCoordinateSource {
67+
- Map<Integer, Point> idToCoordinate;
68+
- Map<Point, Integer> coordinateToId;
69+
- CsvDataSource dataSource;
70+
- IdCoordinateFactory factory;
71+
+ CsvIdCoordinateSource(IdCoordinateFactory, CsvDataSource) throws SourceException
72+
+ int getCoordinateCount()
73+
}
74+
75+
class SqlIdCoordinateSource {
76+
- SqlDataSource dataSource
77+
- SqlIdCoordinateFactory factory
78+
+ SqlIdCoordinateSource(SqlIdCoordinateFactory, String, SqlDataSource)
79+
}
80+
4281
class RawGridSource {
4382
- TypeSource typeSource
4483
- NodeInputFactory nodeInputFactory
@@ -70,9 +109,10 @@ class ResultEntitySource {
70109
- SwitchResultFactory switchResultFactory
71110
- NodeResultFactory nodeResultFactory
72111
- ConnectorResultFactory connectorResultFactory
112+
- CongestionResultFactory congestionResultFactory
73113
- FlexOptionsResultFactory flexOptionsResultFactory
74114
+ ResultEntitySource(DataSource)
75-
+ ResultEntitySource(DataSource, String)
115+
+ ResultEntitySource(DataSource, DateTimeFormatter)
76116
+ Set<NodeResult> getNodeResults() throws SourceException
77117
+ Set<SwitchResult> getSwitchResults() throws SourceException
78118
+ Set<LineResult> getLineResults() throws SourceException
@@ -92,12 +132,14 @@ class ResultEntitySource {
92132
+ Set<CylindricalStorageResult> getCylindricalStorageResult() throws SourceException
93133
+ Set<ThermalHouseResult> getThermalHouseResults() throws SourceException
94134
+ Set<EmResult> getEmResults() throws SourceException
135+
+ Set<CongestionResult> getCongestionResults() throws SourceException
95136
}
96137

97138
class SystemParticipantSource{
98139
- TypeSource typeSource
99140
- RawGridSource rawGridSource
100141
- ThermalSource thermalSource
142+
- EnergyManagementSource energyManagementSource
101143
- BmInputFactory bmInputFactory
102144
- ChpInputFactory chpInputFactory
103145
- EvInputFactory evInputFactory
@@ -108,7 +150,7 @@ class SystemParticipantSource{
108150
- StorageInputFactory storageInputFactory
109151
- WecInputFactory wecInputFactory
110152
- EvcsInputFactory evcsInputFactory
111-
+ SystemParticipantSource(TypeSource, ThermalSource, RawGridSource, DataSource)
153+
+ SystemParticipantSource(TypeSource, ThermalSource, RawGridSource, EnergyManagementSource, DataSource)
112154
+ SystemParticipants getSystemParticipants() throws SourceException
113155
+ SystemParticipants getSystemParticipants(Map<UUID, OperatorInput>, Map<UUID, NodeInput>) throws SourceException
114156
+ Set<BmInput> getBmPlants() throws SourceException
@@ -141,20 +183,65 @@ class ThermalSource {
141183
+ ThermalSource(TypeSource, DataSource)
142184
+ Map<UUID, ThermalBusInput> getThermalBuses() throws SourceException
143185
+ Map<UUID, ThermalBusInput> getThermalBuses(Map<UUID, OperatorInput>) throws SourceException
144-
+ Set<ThermalStorageInput> getThermalStorages() throws SourceException
145-
+ Set<ThermalStorageInput> getThermalStorages(Map<UUID, OperatorInput>, Map<UUID, ThermalBusInput>) throws SourceException
146-
+ Set<ThermalHouseInput> getThermalHouses() throws SourceException
147-
+ Set<ThermalHouseInput> getThermalHouses(Map<UUID, OperatorInput>, Map<UUID, ThermalBusInput>) throws SourceException
186+
+ Map<UUID, ThermalStorageInput> getThermalStorages() throws SourceException
187+
+ Map<UUID, ThermalStorageInput> getThermalStorages(Map<UUID, OperatorInput>, Map<UUID, ThermalBusInput>) throws SourceException
188+
+ Map<UUID, ThermalHouseInput> getThermalHouses() throws SourceException
189+
+ Map<UUID, ThermalHouseInput> getThermalHouses(Map<UUID, OperatorInput>, Map<UUID, ThermalBusInput>) throws SourceException
148190
+ Set<CylindricalStorageInput> getCylindricStorages() throws SourceException
149191
+ Set<CylindricalStorageInput> getCylindricStorages(Map<UUID, OperatorInput>, Map<UUID, ThermalBusInput>) throws SourceException
150192
}
151193

194+
abstract class TimeSeriesMappingSource {
195+
- TimeSeriesMappingFactory mappingFactory
196+
+ Map<UUID, UUID> getMapping() throws SourceException
197+
+ Optional<UUID> getTimeSeriesUuid(UUID) throws SourceException
198+
+ Stream<Map<String, String>> getMappingSourceData() throws SourceException
199+
+ Optional<Set<String>> getSourceFields() throws SourceException
200+
}
201+
202+
class CsvTimeSeriesMappingSource {
203+
- CsvDataSource dataSource
204+
+ CsvTimeSeriesMappingSource(String, Path, FileNamingStrategy)
205+
}
206+
207+
class SqlTimeSeriesMappingSource {
208+
- EntityPersistenceNamingStrategy entityPersistenceNamingStrategy
209+
- SqlDataSource dataSource
210+
+ SqlTimeSeriesMappingSource(SqlConnector, String, EntityPersistenceNamingStrategy)
211+
}
212+
213+
abstract class TimeSeriesSource {
214+
- Class<V> valueClass
215+
- TimeBasedSimpleValueFactory<V> valueFactory
216+
+ TimeSeriesSource(Class<V>, TimeBasedSimpleValueFactory<V>)
217+
+ IndividualTimeSeries<V> getTimeSeries()
218+
+ IndividualTimeSeries<V> getTimeSeries(ClosedInterval<ZonedDateTime>) throws SourceException
219+
+ Optional<V> getValue(ZonedDateTime) throws SourceException
220+
}
221+
222+
class CsvTimeSeriesSource {
223+
- IndividualTimeSeries<V> timeSeries
224+
- CsvDataSource dataSource
225+
- Path filePath
226+
+ {static} CsvTimeSeriesSource<? extends Value> getSource(String, Path, FileNamingStrategy, CsvIndividualTimeSeriesMetaInformation)
227+
+ CsvTimeSeriesSource(String, Path, FileNamingStrategy, UUID, Path, Class<V>, TimeBasedSimpleValueFactory<V>)
228+
}
229+
230+
class SqlTimeSeriesSource {
231+
- SqlDataSource dataSource
232+
- UUID timeSeriesUuid
233+
+ SqlTimeSeriesSource(SqlDataSource, UUID, Class<V>, TimeBasedSimpleValueFactory<V>)
234+
+ SqlTimeSeriesSource(SqlConnector, String, DatabaseNamingStrategy, UUID, Class<V>, TimeBasedSimpleValueFactory<V>)
235+
+ SqlTimeSeriesSource<? extends Value> createSource(SqlConnector, String, DatabaseNamingStrategy, IndividualTimeSeriesMetaInformation, DateTimeFormatter) throws SourceException
236+
}
237+
152238
class TypeSource {
153239
- OperatorInputFactory operatorInputFactory
154240
- Transformer2WTypeInputFactory transformer2WTypeInputFactory
155241
- LineTypeInputFactory lineTypeInputFactory
156242
- Transformer3WTypeInputFactory transformer3WTypeInputFactory
157243
- SystemParticipantTypeInputFactory systemParticipantTypeInputFactory
244+
- DataSource dataSource
158245
+ TypeSource(DataSource)
159246
+ Map<UUID, Transformer2WTypeInput> getTransformer2WTypes() throws SourceException
160247
+ Map<UUID, Transformer3WTypeInput> getTransformer3WTypes() throws SourceException
@@ -167,4 +254,38 @@ class TypeSource {
167254
+ Map<UUID, WecTypeInput> getWecTypes() throws SourceException
168255
+ Map<UUID, EvTypeInput> getEvTypes() throws SourceException
169256
}
257+
258+
abstract class WeatherSource {
259+
- TimeBasedWeatherValueFactory weatherFactory
260+
- IdCoordinateSource idCoordinateSource
261+
+ WeatherSource(IdCoordinateSource, TimeBasedWeatherValueFactory)
262+
+ Optional<Set<String>> getSourceFields() throws SourceException
263+
+ Map<Point, IndividualTimeSeries<WeatherValue>> getWeather(ClosedInterval<ZonedDateTime>) throws SourceException
264+
+ Map<Point, IndividualTimeSeries<WeatherValue>> getWeather(ClosedInterval<ZonedDateTime>, Collection<Point>) throws SourceException
265+
+ Optional<TimeBasedValue<WeatherValue>> getWeather(ZonedDateTime, Point) throws SourceException
266+
}
267+
268+
class CouchbaseWeatherSource {
269+
- CouchbaseConnector connector
270+
+ CouchbaseWeatherSource(CouchbaseConnector, IdCoordinateSource, String, TimeBasedWeatherValueFactory, String)
271+
+ CouchbaseWeatherSource(CouchbaseConnector, IdCoordinateSource, String, String, TimeBasedWeatherValueFactory, String)
272+
}
273+
274+
class CsvWeatherSource {
275+
- CsvDataSource dataSource
276+
- Map<Point, IndividualTimeSeries<WeatherValue>> coordinateToTimeSeries
277+
+ CsvWeatherSource(String, Path, FileNamingStrategy, IdCoordinateSource, TimeBasedWeatherValueFactory) throws SourceException
278+
}
279+
280+
class InfluxDbWeatherSource {
281+
- InfluxDbConnector connector
282+
+ InfluxDbWeatherSource(InfluxDbConnector, IdCoordinateSource, TimeBasedWeatherValueFactory)
283+
+ IndividualTimeSeries<WeatherValue> getWeather(ClosedInterval<ZonedDateTime>, Point)
284+
}
285+
286+
class SqlWeatherSource {
287+
- SqlDataSource dataSource
288+
+ SqlWeatherSource(SqlConnector, IdCoordinateSource, String, String, TimeBasedWeatherValueFactory)
289+
}
290+
170291
@enduml

gradle/wrapper/gradle-wrapper.jar

-19.8 KB
Binary file not shown.

gradle/wrapper/gradle-wrapper.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
44
networkTimeout=10000
55
validateDistributionUrl=true
66
zipStoreBase=GRADLE_USER_HOME

gradlew.bat

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,11 @@ set JAVA_EXE=java.exe
4343
%JAVA_EXE% -version >NUL 2>&1
4444
if %ERRORLEVEL% equ 0 goto execute
4545

46-
echo.
47-
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
48-
echo.
49-
echo Please set the JAVA_HOME variable in your environment to match the
50-
echo location of your Java installation.
46+
echo. 1>&2
47+
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
48+
echo. 1>&2
49+
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
50+
echo location of your Java installation. 1>&2
5151

5252
goto fail
5353

@@ -57,11 +57,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe
5757

5858
if exist "%JAVA_EXE%" goto execute
5959

60-
echo.
61-
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
62-
echo.
63-
echo Please set the JAVA_HOME variable in your environment to match the
64-
echo location of your Java installation.
60+
echo. 1>&2
61+
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
62+
echo. 1>&2
63+
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
64+
echo location of your Java installation. 1>&2
6565

6666
goto fail
6767

src/main/java/edu/ie3/datamodel/io/factory/input/AssetInputEntityFactory.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ public abstract class AssetInputEntityFactory<T extends AssetInput, D extends As
2727
private static final String OPERATES_FROM = "operatesFrom";
2828
private static final String OPERATES_UNTIL = "operatesUntil";
2929

30+
@SafeVarargs
3031
protected AssetInputEntityFactory(Class<? extends T>... allowedClasses) {
3132
super(allowedClasses);
3233
}

0 commit comments

Comments
 (0)