diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8cbd602ec..517fd7da5 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased/Snapshot]
+### Fixed
+- Reduced code smells [#492](https://github.com/ie3-institute/PowerSystemDataModel/issues/492)
+ - Protected constructors for abstract classes
+ - Use pattern matching
+ - Remove unused imports
+ - Use enhanced switch statements
+ - Replace lambdas with method references
+ - Use `Stream#toList`
+ - Adapt visibility for JUnit 5
+- Fix JavaDoc creation
+ - Create JavaDoc with java 17 instead of java 8
+ - Let JavDoc pass, if there are warnings **ATTENTION:** Should be removed, when JavaDoc is fixed! (cf. Issue [#494](https://github.com/ie3-institute/PowerSystemDataModel/issues/494))
+
## [2.1.0] - 2022-01-05
### Added
diff --git a/Jenkinsfile b/Jenkinsfile
index 69e19dd39..33e1753f1 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -119,8 +119,7 @@ node {
gradle('--refresh-dependencies clean spotlessCheck pmdMain pmdTest spotbugsMain ' +
'spotbugsTest test jacocoTestReport jacocoTestCoverageVerification', projectName)
- // due to an issue with openjdk-8 we use openjdk-11 for javadocs generation
- sh(script: """set +x && cd $projectName""" + ''' set +x; ./gradlew clean javadoc -Dorg.gradle.java.home=/opt/java/openjdk''', returnStdout: true)
+ sh(script: """set +x && cd $projectName""" + ''' set +x; ./gradlew clean javadoc''', returnStdout: true)
}
// sonarqube analysis
@@ -159,13 +158,11 @@ node {
]) {
/*
- * There is a known bug in JavaDoc generation in JDK 8. Therefore generate the JavaDoc with JDK
- * 11 first and do the rest of the tasks with JDK 8. IMPORTANT: Do not issue 'clean' in the
- * following task
+ * IMPORTANT: Do not issue 'clean' in the following task
*/
sh(
script: """set +x && cd $projectName""" +
- ''' set +x; ./gradlew clean javadoc -Dorg.gradle.java.home=/opt/java/openjdk''',
+ ''' set +x; ./gradlew clean javadoc''',
returnStdout: true
)
@@ -395,7 +392,7 @@ def deployJavaDocs(String projectName, String sshCredentialsId, String gitChecko
"git config user.name 'Johannes Hiry' && " +
"git fetch --depth=1 origin api-docs && " +
"git checkout api-docs && " +
- "cd .. && ./gradlew clean javadoc -Dorg.gradle.java.home=/opt/java/openjdk && " +
+ "cd .. && ./gradlew clean javadoc && " +
"cp -R build/docs/javadoc/* tmp-api-docs && " +
"cd tmp-api-docs &&" +
"git add --all && git commit -m 'updated api-docs' && git push origin api-docs:api-docs" +
diff --git a/build.gradle b/build.gradle
index 8b6a321d0..528cdc81b 100644
--- a/build.gradle
+++ b/build.gradle
@@ -106,6 +106,7 @@ tasks.withType(JavaCompile) {
tasks.withType(Javadoc){
options.encoding = 'UTF-8'
+ failOnError = false // TODO: Temp until JavaDoc issues are resolved
}
task printVersion {
diff --git a/gradle/scripts/spotless.gradle b/gradle/scripts/spotless.gradle
index 91a3bc3a2..7205fba1a 100644
--- a/gradle/scripts/spotless.gradle
+++ b/gradle/scripts/spotless.gradle
@@ -33,7 +33,7 @@ spotless {
// removes unnecessary whitespace, indents with tabs and ends on new line for gradle, md and gitignore files and config-XMLs
format 'misc', {
- target '**/*.md', '**/.gitignore', 'configs/**'
+ target '**/.gitignore', 'configs/**'
trimTrailingWhitespace()
indentWithTabs()
endWithNewline()
diff --git a/src/main/java/edu/ie3/datamodel/exceptions/ValidationException.java b/src/main/java/edu/ie3/datamodel/exceptions/ValidationException.java
index 409c0424e..080602f9c 100644
--- a/src/main/java/edu/ie3/datamodel/exceptions/ValidationException.java
+++ b/src/main/java/edu/ie3/datamodel/exceptions/ValidationException.java
@@ -6,11 +6,11 @@
package edu.ie3.datamodel.exceptions;
public abstract class ValidationException extends RuntimeException {
- public ValidationException(String s) {
+ protected ValidationException(String s) {
super(s);
}
- public ValidationException(String s, Throwable throwable) {
+ protected ValidationException(String s, Throwable throwable) {
super(s, throwable);
}
}
diff --git a/src/main/java/edu/ie3/datamodel/io/connectors/CouchbaseConnector.java b/src/main/java/edu/ie3/datamodel/io/connectors/CouchbaseConnector.java
index c856185c5..196a3beef 100644
--- a/src/main/java/edu/ie3/datamodel/io/connectors/CouchbaseConnector.java
+++ b/src/main/java/edu/ie3/datamodel/io/connectors/CouchbaseConnector.java
@@ -14,7 +14,6 @@
import com.couchbase.client.java.query.QueryResult;
import java.util.List;
import java.util.concurrent.CompletableFuture;
-import java.util.stream.Collectors;
/**
* Implements a DataConnector for Couchbase. Couchbase is a JSON document based database.
@@ -115,7 +114,7 @@ public CompletableFuture query(String query) {
*/
public List> bulkGet(List keys) {
final Collection session = getSession();
- return keys.stream().map(key -> session.async().get(key)).collect(Collectors.toList());
+ return keys.stream().map(key -> session.async().get(key)).toList();
}
/**
diff --git a/src/main/java/edu/ie3/datamodel/io/csv/FileNameMetaInformation.java b/src/main/java/edu/ie3/datamodel/io/csv/FileNameMetaInformation.java
index f31b1a352..f9ab35d46 100644
--- a/src/main/java/edu/ie3/datamodel/io/csv/FileNameMetaInformation.java
+++ b/src/main/java/edu/ie3/datamodel/io/csv/FileNameMetaInformation.java
@@ -12,7 +12,7 @@
public abstract class FileNameMetaInformation {
private final UUID uuid;
- public FileNameMetaInformation(UUID uuid) {
+ protected FileNameMetaInformation(UUID uuid) {
this.uuid = uuid;
}
@@ -23,8 +23,7 @@ public UUID getUuid() {
@Override
public boolean equals(Object o) {
if (this == o) return true;
- if (!(o instanceof FileNameMetaInformation)) return false;
- FileNameMetaInformation that = (FileNameMetaInformation) o;
+ if (!(o instanceof FileNameMetaInformation that)) return false;
return uuid.equals(that.uuid);
}
diff --git a/src/main/java/edu/ie3/datamodel/io/extractor/Extractor.java b/src/main/java/edu/ie3/datamodel/io/extractor/Extractor.java
index 6c1420d7c..d9fbc89da 100644
--- a/src/main/java/edu/ie3/datamodel/io/extractor/Extractor.java
+++ b/src/main/java/edu/ie3/datamodel/io/extractor/Extractor.java
@@ -33,23 +33,23 @@ private Extractor() {
public static Set extractElements(NestedEntity nestedEntity)
throws ExtractorException {
CopyOnWriteArrayList resultingList = new CopyOnWriteArrayList<>();
- if (nestedEntity instanceof HasNodes) {
- resultingList.addAll(((HasNodes) nestedEntity).allNodes());
+ if (nestedEntity instanceof HasNodes nestedHasNode) {
+ resultingList.addAll((nestedHasNode).allNodes());
}
- if (nestedEntity instanceof Operable) {
- extractOperator((Operable) nestedEntity).ifPresent(resultingList::add);
+ if (nestedEntity instanceof Operable nestedOperable) {
+ extractOperator(nestedOperable).ifPresent(resultingList::add);
}
- if (nestedEntity instanceof HasType) {
- resultingList.add(extractType((HasType) nestedEntity));
+ if (nestedEntity instanceof HasType nestedHasType) {
+ resultingList.add(extractType(nestedHasType));
}
- if (nestedEntity instanceof HasThermalBus) {
- resultingList.add(((HasThermalBus) nestedEntity).getThermalBus());
+ if (nestedEntity instanceof HasThermalBus nestedHasThermalBus) {
+ resultingList.add((nestedHasThermalBus).getThermalBus());
}
- if (nestedEntity instanceof HasThermalStorage) {
- resultingList.add(((HasThermalStorage) nestedEntity).getThermalStorage());
+ if (nestedEntity instanceof HasThermalStorage nestedHasThermalStorage) {
+ resultingList.add((nestedHasThermalStorage).getThermalStorage());
}
- if (nestedEntity instanceof HasLine) {
- resultingList.add(((HasLine) nestedEntity).getLine());
+ if (nestedEntity instanceof HasLine nestedHasLine) {
+ resultingList.add((nestedHasLine).getLine());
}
if (resultingList.contains(null)) {
@@ -72,9 +72,9 @@ public static Set extractElements(NestedEntity nestedEntity)
.parallel()
.forEach(
element -> {
- if (element instanceof NestedEntity) {
+ if (element instanceof NestedEntity nestedElement) {
try {
- resultingList.addAll(extractElements((NestedEntity) element));
+ resultingList.addAll(extractElements(nestedElement));
} catch (ExtractorException e) {
log.error(
"An error occurred during extraction of nested entity '{}':{}",
@@ -84,7 +84,7 @@ public static Set extractElements(NestedEntity nestedEntity)
}
});
- return Collections.unmodifiableSet(new HashSet<>(resultingList));
+ return Set.copyOf(resultingList);
}
public static AssetTypeInput extractType(HasType entityWithType) {
diff --git a/src/main/java/edu/ie3/datamodel/io/factory/EntityData.java b/src/main/java/edu/ie3/datamodel/io/factory/EntityData.java
index 2ce76ef23..c958a2d9b 100644
--- a/src/main/java/edu/ie3/datamodel/io/factory/EntityData.java
+++ b/src/main/java/edu/ie3/datamodel/io/factory/EntityData.java
@@ -97,7 +97,7 @@ private Optional getGeometry(String field) {
public Optional getLineString(String field) {
Optional geom = getGeometry(field);
if (geom.isPresent()) {
- if (geom.get() instanceof LineString) return Optional.of((LineString) geom.get());
+ if (geom.get() instanceof LineString lineString) return Optional.of(lineString);
else
throw new FactoryException(
"Geometry is of type "
@@ -116,7 +116,7 @@ public Optional getLineString(String field) {
public Optional getPoint(String field) {
Optional geom = getGeometry(field);
if (geom.isPresent()) {
- if (geom.get() instanceof Point) return Optional.of((Point) geom.get());
+ if (geom.get() instanceof Point point) return Optional.of(point);
else
throw new FactoryException(
"Geometry is of type "
diff --git a/src/main/java/edu/ie3/datamodel/io/factory/EntityFactory.java b/src/main/java/edu/ie3/datamodel/io/factory/EntityFactory.java
index 53b32cf0d..e36740192 100644
--- a/src/main/java/edu/ie3/datamodel/io/factory/EntityFactory.java
+++ b/src/main/java/edu/ie3/datamodel/io/factory/EntityFactory.java
@@ -6,7 +6,6 @@
package edu.ie3.datamodel.io.factory;
import edu.ie3.datamodel.models.UniqueEntity;
-import java.util.*;
/**
* Universal factory class for creating entities with {@link EntityData} data objects.
@@ -24,7 +23,7 @@ public abstract class EntityFactory... allowedClasses) {
+ protected EntityFactory(Class extends T>... allowedClasses) {
super(allowedClasses);
}
}
diff --git a/src/main/java/edu/ie3/datamodel/io/factory/Factory.java b/src/main/java/edu/ie3/datamodel/io/factory/Factory.java
index d62e8bee7..8a64f0ea7 100644
--- a/src/main/java/edu/ie3/datamodel/io/factory/Factory.java
+++ b/src/main/java/edu/ie3/datamodel/io/factory/Factory.java
@@ -26,7 +26,7 @@ public abstract class Factory {
private final List> supportedClasses;
- public Factory(Class extends C>... supportedClasses) {
+ protected Factory(Class extends C>... supportedClasses) {
this.supportedClasses = Arrays.asList(supportedClasses);
}
@@ -47,7 +47,7 @@ public Optional get(D data) {
// magic: case-insensitive get/set calls on set strings
final List> allFields = getFields(data);
- validateParameters(data, allFields.stream().toArray((IntFunction[]>) Set[]::new));
+ validateParameters(data, allFields.toArray((IntFunction[]>) Set[]::new));
try {
// build the model
@@ -116,9 +116,7 @@ protected int validateParameters(D data, Set... fieldSets) {
// get all sets that match the fields to attributes
List> validFieldSets =
- Arrays.stream(fieldSets)
- .filter(x -> x.equals(fieldsToValues.keySet()))
- .collect(Collectors.toList());
+ Arrays.stream(fieldSets).filter(x -> x.equals(fieldsToValues.keySet())).toList();
if (validFieldSets.size() == 1) {
// if we can identify a unique parameter set for a constructor, we take it and return the
diff --git a/src/main/java/edu/ie3/datamodel/io/factory/SimpleEntityFactory.java b/src/main/java/edu/ie3/datamodel/io/factory/SimpleEntityFactory.java
index 68a4d6b3d..a420212c2 100644
--- a/src/main/java/edu/ie3/datamodel/io/factory/SimpleEntityFactory.java
+++ b/src/main/java/edu/ie3/datamodel/io/factory/SimpleEntityFactory.java
@@ -17,7 +17,7 @@
public abstract class SimpleEntityFactory
extends EntityFactory {
- public SimpleEntityFactory(Class extends T>... allowedClasses) {
+ protected SimpleEntityFactory(Class extends T>... allowedClasses) {
super(allowedClasses);
}
}
diff --git a/src/main/java/edu/ie3/datamodel/io/factory/input/AssetInputEntityFactory.java b/src/main/java/edu/ie3/datamodel/io/factory/input/AssetInputEntityFactory.java
index 8f7423410..0da292f37 100644
--- a/src/main/java/edu/ie3/datamodel/io/factory/input/AssetInputEntityFactory.java
+++ b/src/main/java/edu/ie3/datamodel/io/factory/input/AssetInputEntityFactory.java
@@ -29,7 +29,7 @@ public abstract class AssetInputEntityFactory... allowedClasses) {
+ protected AssetInputEntityFactory(Class extends T>... allowedClasses) {
super(allowedClasses);
}
diff --git a/src/main/java/edu/ie3/datamodel/io/factory/input/ConnectorInputEntityFactory.java b/src/main/java/edu/ie3/datamodel/io/factory/input/ConnectorInputEntityFactory.java
index 2f7040014..4ef83352e 100644
--- a/src/main/java/edu/ie3/datamodel/io/factory/input/ConnectorInputEntityFactory.java
+++ b/src/main/java/edu/ie3/datamodel/io/factory/input/ConnectorInputEntityFactory.java
@@ -31,7 +31,7 @@ abstract class ConnectorInputEntityFactory<
*/
protected static final String PARALLEL_DEVICES = "paralleldevices";
- public ConnectorInputEntityFactory(Class extends T>... allowedClasses) {
+ protected ConnectorInputEntityFactory(Class extends T>... allowedClasses) {
super(allowedClasses);
}
diff --git a/src/main/java/edu/ie3/datamodel/io/factory/input/graphics/GraphicInputFactory.java b/src/main/java/edu/ie3/datamodel/io/factory/input/graphics/GraphicInputFactory.java
index bfc699b8f..4dfb98676 100644
--- a/src/main/java/edu/ie3/datamodel/io/factory/input/graphics/GraphicInputFactory.java
+++ b/src/main/java/edu/ie3/datamodel/io/factory/input/graphics/GraphicInputFactory.java
@@ -26,7 +26,7 @@ public abstract class GraphicInputFactory... allowedClasses) {
+ protected GraphicInputFactory(Class extends T>... allowedClasses) {
super(allowedClasses);
}
diff --git a/src/main/java/edu/ie3/datamodel/io/factory/input/participant/HpInputEntityData.java b/src/main/java/edu/ie3/datamodel/io/factory/input/participant/HpInputEntityData.java
index 3b8e2cc50..38eacea63 100644
--- a/src/main/java/edu/ie3/datamodel/io/factory/input/participant/HpInputEntityData.java
+++ b/src/main/java/edu/ie3/datamodel/io/factory/input/participant/HpInputEntityData.java
@@ -11,6 +11,7 @@
import edu.ie3.datamodel.models.input.system.type.HpTypeInput;
import edu.ie3.datamodel.models.input.thermal.ThermalBusInput;
import java.util.Map;
+import java.util.Objects;
public class HpInputEntityData extends SystemParticipantTypedEntityData {
private final ThermalBusInput thermalBusInput;
@@ -38,6 +39,19 @@ public ThermalBusInput getThermalBusInput() {
return thermalBusInput;
}
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (!(o instanceof HpInputEntityData that)) return false;
+ if (!super.equals(o)) return false;
+ return thermalBusInput.equals(that.thermalBusInput);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), thermalBusInput);
+ }
+
@Override
public String toString() {
return "HpInputEntityData{"
diff --git a/src/main/java/edu/ie3/datamodel/io/factory/input/participant/SystemParticipantInputEntityFactory.java b/src/main/java/edu/ie3/datamodel/io/factory/input/participant/SystemParticipantInputEntityFactory.java
index 736f03a57..212f9db96 100644
--- a/src/main/java/edu/ie3/datamodel/io/factory/input/participant/SystemParticipantInputEntityFactory.java
+++ b/src/main/java/edu/ie3/datamodel/io/factory/input/participant/SystemParticipantInputEntityFactory.java
@@ -32,7 +32,7 @@ abstract class SystemParticipantInputEntityFactory<
private static final String Q_CHARACTERISTICS = "qcharacteristics";
- public SystemParticipantInputEntityFactory(Class extends T>... allowedClasses) {
+ protected SystemParticipantInputEntityFactory(Class extends T>... allowedClasses) {
super(allowedClasses);
}
diff --git a/src/main/java/edu/ie3/datamodel/io/factory/result/ResultEntityFactory.java b/src/main/java/edu/ie3/datamodel/io/factory/result/ResultEntityFactory.java
index 9af9e2501..15a815511 100644
--- a/src/main/java/edu/ie3/datamodel/io/factory/result/ResultEntityFactory.java
+++ b/src/main/java/edu/ie3/datamodel/io/factory/result/ResultEntityFactory.java
@@ -26,12 +26,12 @@ abstract class ResultEntityFactory extends SimpleEntityF
protected final TimeUtil timeUtil;
- public ResultEntityFactory(Class extends T>... allowedClasses) {
+ protected ResultEntityFactory(Class extends T>... allowedClasses) {
super(allowedClasses);
timeUtil = TimeUtil.withDefaults;
}
- public ResultEntityFactory(String dtfPattern, Class extends T>... allowedClasses) {
+ protected ResultEntityFactory(String dtfPattern, Class extends T>... allowedClasses) {
super(allowedClasses);
timeUtil = new TimeUtil(ZoneId.of("UTC"), Locale.GERMANY, dtfPattern);
}
diff --git a/src/main/java/edu/ie3/datamodel/io/factory/timeseries/PsdmTimeBasedWeatherValueFactory.java b/src/main/java/edu/ie3/datamodel/io/factory/timeseries/PsdmTimeBasedWeatherValueFactory.java
index 34b571550..f9ddd6af1 100644
--- a/src/main/java/edu/ie3/datamodel/io/factory/timeseries/PsdmTimeBasedWeatherValueFactory.java
+++ b/src/main/java/edu/ie3/datamodel/io/factory/timeseries/PsdmTimeBasedWeatherValueFactory.java
@@ -5,8 +5,6 @@
*/
package edu.ie3.datamodel.io.factory.timeseries;
-import static edu.ie3.datamodel.io.factory.timeseries.TimeBasedSimpleValueFactory.*;
-
import edu.ie3.datamodel.models.StandardUnits;
import edu.ie3.datamodel.models.timeseries.individual.TimeBasedValue;
import edu.ie3.datamodel.models.value.WeatherValue;
diff --git a/src/main/java/edu/ie3/datamodel/io/factory/timeseries/TimeBasedValueData.java b/src/main/java/edu/ie3/datamodel/io/factory/timeseries/TimeBasedValueData.java
index 747b24641..872794aea 100644
--- a/src/main/java/edu/ie3/datamodel/io/factory/timeseries/TimeBasedValueData.java
+++ b/src/main/java/edu/ie3/datamodel/io/factory/timeseries/TimeBasedValueData.java
@@ -23,7 +23,7 @@ public abstract class TimeBasedValueData extends FactoryData {
* @param fieldsToAttributes attribute map: field name to value
* @param valueClass Class of the underlying value
*/
- public TimeBasedValueData(Map fieldsToAttributes, Class valueClass) {
+ protected TimeBasedValueData(Map fieldsToAttributes, Class valueClass) {
super(fieldsToAttributes, valueClass);
}
diff --git a/src/main/java/edu/ie3/datamodel/io/factory/timeseries/TimeBasedValueFactory.java b/src/main/java/edu/ie3/datamodel/io/factory/timeseries/TimeBasedValueFactory.java
index 46f963445..8acebdf05 100644
--- a/src/main/java/edu/ie3/datamodel/io/factory/timeseries/TimeBasedValueFactory.java
+++ b/src/main/java/edu/ie3/datamodel/io/factory/timeseries/TimeBasedValueFactory.java
@@ -17,7 +17,7 @@
*/
public abstract class TimeBasedValueFactory, V extends Value>
extends Factory> {
- public TimeBasedValueFactory(Class extends V>... valueClasses) {
+ protected TimeBasedValueFactory(Class extends V>... valueClasses) {
super(valueClasses);
}
}
diff --git a/src/main/java/edu/ie3/datamodel/io/factory/typeinput/AssetTypeInputEntityFactory.java b/src/main/java/edu/ie3/datamodel/io/factory/typeinput/AssetTypeInputEntityFactory.java
index e8d761f80..13de960ee 100644
--- a/src/main/java/edu/ie3/datamodel/io/factory/typeinput/AssetTypeInputEntityFactory.java
+++ b/src/main/java/edu/ie3/datamodel/io/factory/typeinput/AssetTypeInputEntityFactory.java
@@ -22,7 +22,7 @@ abstract class AssetTypeInputEntityFactory
protected static final String ENTITY_UUID = "uuid";
protected static final String ENTITY_ID = "id";
- public AssetTypeInputEntityFactory(Class extends T>... allowedClasses) {
+ protected AssetTypeInputEntityFactory(Class extends T>... allowedClasses) {
super(allowedClasses);
}
}
diff --git a/src/main/java/edu/ie3/datamodel/io/naming/DefaultDirectoryHierarchy.java b/src/main/java/edu/ie3/datamodel/io/naming/DefaultDirectoryHierarchy.java
index 76e0ed844..f2eab42ad 100644
--- a/src/main/java/edu/ie3/datamodel/io/naming/DefaultDirectoryHierarchy.java
+++ b/src/main/java/edu/ie3/datamodel/io/naming/DefaultDirectoryHierarchy.java
@@ -147,7 +147,7 @@ private void checkExpectedDirectories() throws FileException {
*/
private void checkFurtherDirectoryElements() throws FileException {
try (Stream apparentElementsStream = Files.list(projectDirectory)) {
- for (Path apparentPath : apparentElementsStream.collect(Collectors.toList())) {
+ for (Path apparentPath : apparentElementsStream.toList()) {
if (Files.isDirectory(apparentPath)
&& !subDirectories.containsKey(apparentPath)
&& apparentPath.compareTo(inputTree) != 0
@@ -219,7 +219,7 @@ public Optional getSubDirectory(Class extends UniqueEntity> cls, Strin
.anyMatch(definedClass -> definedClass.isAssignableFrom(cls)))
.findFirst();
- if (!maybeSubDirectory.isPresent()) {
+ if (maybeSubDirectory.isEmpty()) {
logger.debug("Don't know a fitting sub directory for class '{}'.", cls.getSimpleName());
return Optional.empty();
} else {
diff --git a/src/main/java/edu/ie3/datamodel/io/naming/EntityPersistenceNamingStrategy.java b/src/main/java/edu/ie3/datamodel/io/naming/EntityPersistenceNamingStrategy.java
index 785164352..a80459aae 100644
--- a/src/main/java/edu/ie3/datamodel/io/naming/EntityPersistenceNamingStrategy.java
+++ b/src/main/java/edu/ie3/datamodel/io/naming/EntityPersistenceNamingStrategy.java
@@ -336,8 +336,7 @@ Optional getEntityName(T timeSeries) {
logger.error("Unable to determine content of time series {}", timeSeries);
return Optional.empty();
}
- } else if (timeSeries instanceof LoadProfileInput) {
- LoadProfileInput loadProfileInput = (LoadProfileInput) timeSeries;
+ } else if (timeSeries instanceof LoadProfileInput loadProfileInput) {
return Optional.of(
prefix
.concat("lpts")
diff --git a/src/main/java/edu/ie3/datamodel/io/processor/EntityProcessor.java b/src/main/java/edu/ie3/datamodel/io/processor/EntityProcessor.java
index e0958dc57..f8ef4bc56 100644
--- a/src/main/java/edu/ie3/datamodel/io/processor/EntityProcessor.java
+++ b/src/main/java/edu/ie3/datamodel/io/processor/EntityProcessor.java
@@ -37,7 +37,7 @@ public abstract class EntityProcessor extends Processor<
*
* @param registeredClass the class the entity processor should be able to handle
*/
- public EntityProcessor(Class extends T> registeredClass) {
+ protected EntityProcessor(Class extends T> registeredClass) {
super(registeredClass);
this.fieldNameToMethod =
mapFieldNameToGetter(registeredClass, Collections.singleton(NODE_INTERNAL));
@@ -75,31 +75,18 @@ protected Optional handleProcessorSpecificQuantity(
Quantity> quantity, String fieldName) {
Optional normalizedQuantityValue = Optional.empty();
switch (fieldName) {
- case "energy":
- case "eConsAnnual":
- case "eStorage":
- normalizedQuantityValue =
- quantityValToOptionalString(quantity.asType(Energy.class).to(StandardUnits.ENERGY_IN));
- break;
- case "q":
- normalizedQuantityValue =
- quantityValToOptionalString(
- quantity.asType(Power.class).to(StandardUnits.REACTIVE_POWER_IN));
- break;
- case "p":
- case "pMax":
- case "pOwn":
- case "pThermal":
- normalizedQuantityValue =
- quantityValToOptionalString(
- quantity.asType(Power.class).to(StandardUnits.ACTIVE_POWER_IN));
- break;
- default:
- log.error(
- "Cannot process quantity with value '{}' for field with name {} in input entity processing!",
- quantity,
- fieldName);
- break;
+ case "energy", "eConsAnnual", "eStorage" -> normalizedQuantityValue =
+ quantityValToOptionalString(quantity.asType(Energy.class).to(StandardUnits.ENERGY_IN));
+ case "q" -> normalizedQuantityValue =
+ quantityValToOptionalString(
+ quantity.asType(Power.class).to(StandardUnits.REACTIVE_POWER_IN));
+ case "p", "pMax", "pOwn", "pThermal" -> normalizedQuantityValue =
+ quantityValToOptionalString(
+ quantity.asType(Power.class).to(StandardUnits.ACTIVE_POWER_IN));
+ default -> log.error(
+ "Cannot process quantity with value '{}' for field with name {} in input entity processing!",
+ quantity,
+ fieldName);
}
return normalizedQuantityValue;
}
diff --git a/src/main/java/edu/ie3/datamodel/io/processor/Processor.java b/src/main/java/edu/ie3/datamodel/io/processor/Processor.java
index 018bb9410..6fa966af9 100644
--- a/src/main/java/edu/ie3/datamodel/io/processor/Processor.java
+++ b/src/main/java/edu/ie3/datamodel/io/processor/Processor.java
@@ -205,102 +205,84 @@ protected String processMethodResult(Object methodReturnObject, Method method, S
switch (method.getReturnType().getSimpleName()) {
// primitives (Boolean, Character, Byte, Short, Integer, Long, Float, Double, String,
- case "UUID":
- case "boolean":
- case "int":
- case "double":
- case "String":
- case "DayOfWeek":
- case "ChargingPointType":
- case "EvcsLocationType":
- resultStringBuilder.append(methodReturnObject.toString());
- break;
- case "Quantity":
- case "ComparableQuantity":
- resultStringBuilder.append(handleQuantity((Quantity>) methodReturnObject, fieldName));
- break;
- case "Optional":
- // only quantity optionals are expected here!
- // if optional and present, unpack value and call this method again, if not present return
- // an empty string as by convention null == missing value == "" when persisting data
- resultStringBuilder.append(
- ((Optional>) methodReturnObject)
- .map(
- o -> {
- if (o instanceof Quantity>) {
- return handleQuantity((Quantity>) o, fieldName);
- } else {
- throw new EntityProcessorException(
- "Handling of "
- + o.getClass().getSimpleName()
- + ".class instance wrapped into Optional is currently not supported by entity processors!");
- }
- })
- .orElse(""));
- break;
- case "ZonedDateTime":
- resultStringBuilder.append(processZonedDateTime((ZonedDateTime) methodReturnObject));
- break;
- case "OperationTime":
- resultStringBuilder.append(
- processOperationTime((OperationTime) methodReturnObject, fieldName));
- break;
- case "VoltageLevel":
- resultStringBuilder.append(
- processVoltageLevel((VoltageLevel) methodReturnObject, fieldName));
- break;
- case "Point":
- case "LineString":
- resultStringBuilder.append(geoJsonWriter.write((Geometry) methodReturnObject));
- break;
- case "StandardLoadProfile":
- resultStringBuilder.append(((StandardLoadProfile) methodReturnObject).getKey());
- break;
- case "AssetTypeInput":
- case "BmTypeInput":
- case "ChpTypeInput":
- case "EvTypeInput":
- case "HpTypeInput":
- case "LineTypeInput":
- case "LineInput":
- case "NodeInput":
- case "StorageTypeInput":
- case "SystemParticipantInput":
- case "ThermalBusInput":
- case "ThermalStorageInput":
- case "TimeSeries":
- case "Transformer2WTypeInput":
- case "Transformer3WTypeInput":
- case "WecTypeInput":
- resultStringBuilder.append(((UniqueEntity) methodReturnObject).getUuid());
- break;
- case "OperatorInput":
- resultStringBuilder.append(
- ((OperatorInput) methodReturnObject).getId().equalsIgnoreCase("NO_OPERATOR_ASSIGNED")
- ? ""
- : ((OperatorInput) methodReturnObject).getUuid());
- break;
- case "EvCharacteristicInput":
- case "OlmCharacteristicInput":
- case "WecCharacteristicInput":
- case "CosPhiFixed":
- case "CosPhiP":
- case "QV":
- case "ReactivePowerCharacteristic":
- case "CharacteristicInput":
- resultStringBuilder.append(((CharacteristicInput, ?>) methodReturnObject).deSerialize());
- break;
- default:
- throw new EntityProcessorException(
- "Unable to process value for attribute/field '"
- + fieldName
- + "' and method return type '"
- + method.getReturnType().getSimpleName()
- + "' for method with name '"
- + method.getName()
- + "' in in entity model "
- + getRegisteredClass().getSimpleName()
- + ".class.");
+ case "UUID",
+ "boolean",
+ "int",
+ "double",
+ "String",
+ "DayOfWeek",
+ "ChargingPointType",
+ "EvcsLocationType" -> resultStringBuilder.append(methodReturnObject.toString());
+ case "Quantity", "ComparableQuantity" -> resultStringBuilder.append(
+ handleQuantity((Quantity>) methodReturnObject, fieldName));
+ case "Optional" ->
+ // only quantity optionals are expected here!
+ // if optional and present, unpack value and call this method again, if not present return
+ // an empty string as by convention null == missing value == "" when persisting data
+ resultStringBuilder.append(
+ ((Optional>) methodReturnObject)
+ .map(
+ o -> {
+ if (o instanceof Quantity>) {
+ return handleQuantity((Quantity>) o, fieldName);
+ } else {
+ throw new EntityProcessorException(
+ "Handling of "
+ + o.getClass().getSimpleName()
+ + ".class instance wrapped into Optional is currently not supported by entity processors!");
+ }
+ })
+ .orElse(""));
+ case "ZonedDateTime" -> resultStringBuilder.append(
+ processZonedDateTime((ZonedDateTime) methodReturnObject));
+ case "OperationTime" -> resultStringBuilder.append(
+ processOperationTime((OperationTime) methodReturnObject, fieldName));
+ case "VoltageLevel" -> resultStringBuilder.append(
+ processVoltageLevel((VoltageLevel) methodReturnObject, fieldName));
+ case "Point", "LineString" -> resultStringBuilder.append(
+ geoJsonWriter.write((Geometry) methodReturnObject));
+ case "StandardLoadProfile" -> resultStringBuilder.append(
+ ((StandardLoadProfile) methodReturnObject).getKey());
+ case "AssetTypeInput",
+ "BmTypeInput",
+ "ChpTypeInput",
+ "EvTypeInput",
+ "HpTypeInput",
+ "LineTypeInput",
+ "LineInput",
+ "NodeInput",
+ "StorageTypeInput",
+ "SystemParticipantInput",
+ "ThermalBusInput",
+ "ThermalStorageInput",
+ "TimeSeries",
+ "Transformer2WTypeInput",
+ "Transformer3WTypeInput",
+ "WecTypeInput" -> resultStringBuilder.append(
+ ((UniqueEntity) methodReturnObject).getUuid());
+ case "OperatorInput" -> resultStringBuilder.append(
+ ((OperatorInput) methodReturnObject).getId().equalsIgnoreCase("NO_OPERATOR_ASSIGNED")
+ ? ""
+ : ((OperatorInput) methodReturnObject).getUuid());
+ case "EvCharacteristicInput",
+ "OlmCharacteristicInput",
+ "WecCharacteristicInput",
+ "CosPhiFixed",
+ "CosPhiP",
+ "QV",
+ "ReactivePowerCharacteristic",
+ "CharacteristicInput" -> resultStringBuilder.append(
+ ((CharacteristicInput, ?>) methodReturnObject).deSerialize());
+ default -> throw new EntityProcessorException(
+ "Unable to process value for attribute/field '"
+ + fieldName
+ + "' and method return type '"
+ + method.getReturnType().getSimpleName()
+ + "' for method with name '"
+ + method.getName()
+ + "' in in entity model "
+ + getRegisteredClass().getSimpleName()
+ + ".class.");
}
return resultStringBuilder.toString();
diff --git a/src/main/java/edu/ie3/datamodel/io/processor/input/InputEntityProcessor.java b/src/main/java/edu/ie3/datamodel/io/processor/input/InputEntityProcessor.java
index f5e4a7ec3..4bb56ef8f 100644
--- a/src/main/java/edu/ie3/datamodel/io/processor/input/InputEntityProcessor.java
+++ b/src/main/java/edu/ie3/datamodel/io/processor/input/InputEntityProcessor.java
@@ -22,7 +22,6 @@
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
-import javax.measure.quantity.*;
/**
* Processes all {@link InputEntity}s and it's child classes
diff --git a/src/main/java/edu/ie3/datamodel/io/processor/result/ResultEntityProcessor.java b/src/main/java/edu/ie3/datamodel/io/processor/result/ResultEntityProcessor.java
index 419f95a3c..92ffffadc 100644
--- a/src/main/java/edu/ie3/datamodel/io/processor/result/ResultEntityProcessor.java
+++ b/src/main/java/edu/ie3/datamodel/io/processor/result/ResultEntityProcessor.java
@@ -64,32 +64,19 @@ protected Optional handleProcessorSpecificQuantity(
Quantity> quantity, String fieldName) {
Optional normalizedQuantityValue = Optional.empty();
switch (fieldName) {
- case "energy":
- case "eConsAnnual":
- case "eStorage":
- normalizedQuantityValue =
- quantityValToOptionalString(
- quantity.asType(Energy.class).to(StandardUnits.ENERGY_RESULT));
- break;
- case "q":
- normalizedQuantityValue =
- quantityValToOptionalString(
- quantity.asType(Power.class).to(StandardUnits.REACTIVE_POWER_RESULT));
- break;
- case "p":
- case "pMax":
- case "pOwn":
- case "pThermal":
- normalizedQuantityValue =
- quantityValToOptionalString(
- quantity.asType(Power.class).to(StandardUnits.ACTIVE_POWER_RESULT));
- break;
- default:
- log.error(
- "Cannot process quantity with value '{}' for field with name {} in result entity processing!",
- quantity,
- fieldName);
- break;
+ case "energy", "eConsAnnual", "eStorage" -> normalizedQuantityValue =
+ quantityValToOptionalString(
+ quantity.asType(Energy.class).to(StandardUnits.ENERGY_RESULT));
+ case "q" -> normalizedQuantityValue =
+ quantityValToOptionalString(
+ quantity.asType(Power.class).to(StandardUnits.REACTIVE_POWER_RESULT));
+ case "p", "pMax", "pOwn", "pThermal" -> normalizedQuantityValue =
+ quantityValToOptionalString(
+ quantity.asType(Power.class).to(StandardUnits.ACTIVE_POWER_RESULT));
+ default -> log.error(
+ "Cannot process quantity with value '{}' for field with name {} in result entity processing!",
+ quantity,
+ fieldName);
}
return normalizedQuantityValue;
}
diff --git a/src/main/java/edu/ie3/datamodel/io/processor/timeseries/TimeSeriesProcessor.java b/src/main/java/edu/ie3/datamodel/io/processor/timeseries/TimeSeriesProcessor.java
index 0a2bf66b3..d8b7d09c9 100644
--- a/src/main/java/edu/ie3/datamodel/io/processor/timeseries/TimeSeriesProcessor.java
+++ b/src/main/java/edu/ie3/datamodel/io/processor/timeseries/TimeSeriesProcessor.java
@@ -235,9 +235,7 @@ private Map handleEntry(T timeSeries, E entry) {
Map valueFieldToMethod = extractFieldToMethod(VALUE);
LinkedHashMap valueResult = processObject(entry.getValue(), valueFieldToMethod);
/* Treat WeatherValues specially, as they are nested ones */
- if (entry.getValue() instanceof WeatherValue) {
- WeatherValue weatherValue = (WeatherValue) entry.getValue();
-
+ if (entry.getValue() instanceof WeatherValue weatherValue) {
Map irradianceFieldToMethod = extractFieldToMethod(WEATHER_IRRADIANCE);
valueResult.putAll(processObject(weatherValue.getSolarIrradiance(), irradianceFieldToMethod));
diff --git a/src/main/java/edu/ie3/datamodel/io/sink/CsvFileSink.java b/src/main/java/edu/ie3/datamodel/io/sink/CsvFileSink.java
index 289ffec95..bb31c1562 100644
--- a/src/main/java/edu/ie3/datamodel/io/sink/CsvFileSink.java
+++ b/src/main/java/edu/ie3/datamodel/io/sink/CsvFileSink.java
@@ -126,8 +126,7 @@ public void persist(T entity) {
persistIncludeNested((InputEntity) entity);
} else if (entity instanceof ResultEntity) {
write(entity);
- } else if (entity instanceof TimeSeries) {
- TimeSeries, ?> timeSeries = (TimeSeries, ?>) entity;
+ } else if (entity instanceof TimeSeries, ?> timeSeries) {
persistTimeSeries(timeSeries);
} else {
log.error(
@@ -147,10 +146,10 @@ public void persistAllIgnoreNested(Collection entitie
@Override
public void persistIncludeNested(C entity) {
- if (entity instanceof NestedEntity) {
+ if (entity instanceof NestedEntity nestedEntity) {
try {
write(entity);
- for (InputEntity ent : Extractor.extractElements((NestedEntity) entity)) {
+ for (InputEntity ent : Extractor.extractElements(nestedEntity)) {
write(ent);
}
} catch (ExtractorException e) {
diff --git a/src/main/java/edu/ie3/datamodel/io/sink/InfluxDbSink.java b/src/main/java/edu/ie3/datamodel/io/sink/InfluxDbSink.java
index e68e08da6..ce9027caf 100644
--- a/src/main/java/edu/ie3/datamodel/io/sink/InfluxDbSink.java
+++ b/src/main/java/edu/ie3/datamodel/io/sink/InfluxDbSink.java
@@ -236,10 +236,10 @@ private , V extends Value> Set transformToPo
private Set extractPoints(C entity) {
Set points = new HashSet<>();
/* Distinguish between result models and time series */
- if (entity instanceof ResultEntity) {
+ if (entity instanceof ResultEntity resultEntity) {
try {
points.add(
- transformToPoint((ResultEntity) entity)
+ transformToPoint(resultEntity)
.orElseThrow(() -> new SinkException("Could not transform entity")));
} catch (SinkException e) {
log.error(
@@ -247,8 +247,7 @@ private Set extractPoints(C entity) {
entity.getClass().getSimpleName(),
e);
}
- } else if (entity instanceof TimeSeries) {
- TimeSeries, ?> timeSeries = (TimeSeries, ?>) entity;
+ } else if (entity instanceof TimeSeries, ?> timeSeries) {
points.addAll(transformToPoints(timeSeries));
} else {
log.error(
diff --git a/src/main/java/edu/ie3/datamodel/io/source/IdCoordinateSource.java b/src/main/java/edu/ie3/datamodel/io/source/IdCoordinateSource.java
index 9b9673b7d..c50c834ab 100644
--- a/src/main/java/edu/ie3/datamodel/io/source/IdCoordinateSource.java
+++ b/src/main/java/edu/ie3/datamodel/io/source/IdCoordinateSource.java
@@ -8,7 +8,6 @@
import edu.ie3.util.geo.CoordinateDistance;
import edu.ie3.util.geo.GeoUtils;
import java.util.*;
-import java.util.stream.Collectors;
import org.locationtech.jts.geom.Point;
/**
@@ -78,6 +77,6 @@ default List getNearestCoordinates(
(allCoordinates == null || allCoordinates.isEmpty())
? getAllCoordinates()
: allCoordinates);
- return sortedDistances.stream().limit(n).collect(Collectors.toList());
+ return sortedDistances.stream().limit(n).toList();
}
}
diff --git a/src/main/java/edu/ie3/datamodel/io/source/csv/CsvDataSource.java b/src/main/java/edu/ie3/datamodel/io/source/csv/CsvDataSource.java
index 6a3869c44..56a47d0d0 100644
--- a/src/main/java/edu/ie3/datamodel/io/source/csv/CsvDataSource.java
+++ b/src/main/java/edu/ie3/datamodel/io/source/csv/CsvDataSource.java
@@ -64,9 +64,10 @@ public abstract class CsvDataSource {
* @deprecated ensures downward compatibility with old csv data format. Can be removed when
* support for old csv format is removed. *
*/
- @Deprecated private boolean notYetLoggedWarning = true;
+ @Deprecated(since = "1.1.0", forRemoval = true)
+ private boolean notYetLoggedWarning = true;
- public CsvDataSource(String csvSep, String folderPath, FileNamingStrategy fileNamingStrategy) {
+ protected CsvDataSource(String csvSep, String folderPath, FileNamingStrategy fileNamingStrategy) {
this.csvSep = csvSep;
this.connector = new CsvFileConnector(folderPath, fileNamingStrategy);
}
@@ -169,7 +170,7 @@ protected String[] parseCsvRow(String csvRow, String csvSep) {
* @return an array with one entry per column of the provided csv row string
* @deprecated only left for downward compatibility. Will be removed in a major release
*/
- @Deprecated
+ @Deprecated(since = "1.1.0", forRemoval = true)
private String[] oldFieldVals(String csvSep, String csvRow) {
/*geo json support*/
@@ -181,8 +182,8 @@ private String[] oldFieldVals(String csvSep, String csvRow) {
final String charReplacement = "charRepl";
/*removes double double quotes*/
- List geoList = extractMatchingStrings(geoJsonRegex, csvRow.replaceAll("\"\"", "\""));
- List charList = extractMatchingStrings(charInputRegex, csvRow.replaceAll("\"\"", "\""));
+ List geoList = extractMatchingStrings(geoJsonRegex, csvRow.replace("\"\"", "\""));
+ List charList = extractMatchingStrings(charInputRegex, csvRow.replace("\"\"", "\""));
AtomicInteger geoCounter = new AtomicInteger(0);
AtomicInteger charCounter = new AtomicInteger(0);
@@ -413,7 +414,7 @@ protected List