Skip to content

Commit

Permalink
Fixing some code smells
Browse files Browse the repository at this point in the history
  • Loading branch information
sebastian-peter committed Jul 28, 2022
1 parent 12c36b5 commit c802a67
Show file tree
Hide file tree
Showing 14 changed files with 193 additions and 269 deletions.
64 changes: 16 additions & 48 deletions src/main/java/edu/ie3/datamodel/graph/SubGridGate.java
Expand Up @@ -12,13 +12,13 @@
import edu.ie3.datamodel.models.input.connector.TransformerInput;
import edu.ie3.datamodel.models.input.container.SubGridContainer;
import java.io.Serializable;
import java.util.Objects;

/**
* Defines gates between {@link SubGridContainer}s and serves as edge definition for {@link
* SubGridTopologyGraph}
*/
public class SubGridGate implements Serializable {
public record SubGridGate(TransformerInput link, NodeInput superiorNode, NodeInput inferiorNode)
implements Serializable {
/**
* Creates a sub grid gate from two winding transformer.
*
Expand All @@ -40,47 +40,30 @@ public static SubGridGate fromTransformer2W(Transformer2WInput transformer) {
*/
public static SubGridGate fromTransformer3W(
Transformer3WInput transformer, ConnectorPort inferiorPort) {
switch (inferiorPort) {
case B:
return new SubGridGate(transformer, transformer.getNodeA(), transformer.getNodeB());
case C:
return new SubGridGate(transformer, transformer.getNodeA(), transformer.getNodeC());
default:
throw new IllegalArgumentException(
"Only port "
+ ConnectorPort.B
+ " or "
+ ConnectorPort.C
+ " can be "
+ "chosen as inferior port.");
}
}

private final TransformerInput link;
private final NodeInput superiorNode;
private final NodeInput inferiorNode;

/**
* Create a {@link SubGridGate}
*
* @param link Model, that physically represents the gate
* @param superiorNode Upstream node of the gate
* @param inferiorNode Downstream node of the gate
*/
public SubGridGate(TransformerInput link, NodeInput superiorNode, NodeInput inferiorNode) {
this.link = link;
this.superiorNode = superiorNode;
this.inferiorNode = inferiorNode;
return switch (inferiorPort) {
case B -> new SubGridGate(transformer, transformer.getNodeA(), transformer.getNodeB());
case C -> new SubGridGate(transformer, transformer.getNodeA(), transformer.getNodeC());
default -> throw new IllegalArgumentException(
"Only port "
+ ConnectorPort.B
+ " or "
+ ConnectorPort.C
+ " can be "
+ "chosen as inferior port.");
};
}

@Deprecated(since = "3.0")
public TransformerInput getLink() {
return link;
}

@Deprecated(since = "3.0")
public NodeInput getSuperiorNode() {
return superiorNode;
}

@Deprecated(since = "3.0")
public NodeInput getInferiorNode() {
return inferiorNode;
}
Expand All @@ -93,21 +76,6 @@ public int getInferiorSubGrid() {
return inferiorNode.getSubnet();
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
SubGridGate that = (SubGridGate) o;
return link.equals(that.link)
&& superiorNode.equals(that.superiorNode)
&& inferiorNode.equals(that.inferiorNode);
}

@Override
public int hashCode() {
return Objects.hash(link, superiorNode, inferiorNode);
}

@Override
public String toString() {
return "SubGridTopolgyEdge{"
Expand Down
Expand Up @@ -108,7 +108,7 @@ private BufferedCsvWriter initWriter(String baseDirectory, CsvFileDefinition fil
/* Join the full DIRECTORY path (excluding file name) */
String baseDirectoryHarmonized = IoUtil.harmonizeFileSeparator(baseDirectory);
String fullDirectoryPath =
FilenameUtils.concat(baseDirectoryHarmonized, fileDefinition.getDirectoryPath());
FilenameUtils.concat(baseDirectoryHarmonized, fileDefinition.directoryPath());
String fullPath = FilenameUtils.concat(baseDirectoryHarmonized, fileDefinition.getFilePath());

/* Create missing directories */
Expand All @@ -122,13 +122,13 @@ private BufferedCsvWriter initWriter(String baseDirectory, CsvFileDefinition fil
boolean append = pathFile.exists();
BufferedCsvWriter writer =
new BufferedCsvWriter(
fullPath, fileDefinition.getHeadLineElements(), fileDefinition.getCsvSep(), append);
fullPath, fileDefinition.headLineElements(), fileDefinition.csvSep(), append);
if (!append) {
writer.writeFileHeader();
} else {
log.warn(
"File '{}' already exist. Will append new content WITHOUT new header! Full path: {}",
fileDefinition.getFileName(),
fileDefinition.fileName(),
pathFile.getAbsolutePath());
}
return writer;
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/edu/ie3/datamodel/io/csv/BufferedCsvWriter.java
Expand Up @@ -63,8 +63,8 @@ public BufferedCsvWriter(String baseFolder, CsvFileDefinition fileDefinition, bo
throws IOException {
this(
baseFolder + File.separator + fileDefinition.getFilePath(),
fileDefinition.getHeadLineElements(),
fileDefinition.getCsvSep(),
fileDefinition.headLineElements(),
fileDefinition.csvSep(),
append);
}

Expand Down
32 changes: 7 additions & 25 deletions src/main/java/edu/ie3/datamodel/io/csv/CsvFileDefinition.java
Expand Up @@ -14,19 +14,15 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class CsvFileDefinition {
public record CsvFileDefinition(
String fileName, String directoryPath, String[] headLineElements, String csvSep) {
private static final Logger logger = LoggerFactory.getLogger(CsvFileDefinition.class);

private static final Pattern FILE_NAME_PATTERN =
Pattern.compile(
"^(?<fileName>[^\\\\/\\s.]{0,255})(?:\\.(?<extension>[a-zA-Z0-9]{0,10}(?:\\.[a-zA-Z0-9]{0,10})?))?$");

protected static final String FILE_EXTENSION = "csv";

private final String directoryPath;
private final String fileName;
private final String[] headLineElements;
private final String csvSep;
private static final String FILE_EXTENSION = "csv";

public CsvFileDefinition(
String fileName, String directoryPath, String[] headLineElements, String csvSep) {
Expand Down Expand Up @@ -60,11 +56,13 @@ public CsvFileDefinition(
this.csvSep = csvSep;
}

@Deprecated(since = "3.0")
public String getDirectoryPath() {
return directoryPath;
}

/** @return The file name including extension */
@Deprecated(since = "3.0")
public String getFileName() {
return fileName;
}
Expand All @@ -77,32 +75,16 @@ public String getFilePath() {
return !directoryPath.isEmpty() ? FilenameUtils.concat(directoryPath, fileName) : fileName;
}

@Deprecated(since = "3.0")
public String[] getHeadLineElements() {
return headLineElements;
}

@Deprecated(since = "3.0")
public String getCsvSep() {
return csvSep;
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof CsvFileDefinition)) return false;
CsvFileDefinition that = (CsvFileDefinition) o;
return directoryPath.equals(that.directoryPath)
&& fileName.equals(that.fileName)
&& Arrays.equals(headLineElements, that.headLineElements)
&& csvSep.equals(that.csvSep);
}

@Override
public int hashCode() {
int result = Objects.hash(directoryPath, fileName, csvSep);
result = 31 * result + Arrays.hashCode(headLineElements);
return result;
}

@Override
public String toString() {
return "CsvFileDefinition{"
Expand Down
33 changes: 17 additions & 16 deletions src/main/java/edu/ie3/datamodel/io/processor/EntityProcessor.java
Expand Up @@ -73,22 +73,23 @@ public Optional<LinkedHashMap<String, String>> handleEntity(T entity) {
@Override
protected Optional<String> handleProcessorSpecificQuantity(
Quantity<?> quantity, String fieldName) {
Optional<String> normalizedQuantityValue = Optional.empty();
switch (fieldName) {
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;
return switch (fieldName) {
case "energy", "eConsAnnual", "eStorage":
yield quantityValToOptionalString(
quantity.asType(Energy.class).to(StandardUnits.ENERGY_IN));
case "q":
yield quantityValToOptionalString(
quantity.asType(Power.class).to(StandardUnits.REACTIVE_POWER_IN));
case "p", "pMax", "pOwn", "pThermal":
yield 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);
yield Optional.empty();
};
}

@Override
Expand Down
Expand Up @@ -19,8 +19,6 @@
import edu.ie3.datamodel.models.input.thermal.CylindricalStorageInput;
import edu.ie3.datamodel.models.input.thermal.ThermalBusInput;
import edu.ie3.datamodel.models.input.thermal.ThermalHouseInput;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

/**
Expand All @@ -33,47 +31,46 @@ public class InputEntityProcessor extends EntityProcessor<InputEntity> {

/** The entities that can be used within this processor */
public static final List<Class<? extends InputEntity>> eligibleEntityClasses =
Collections.unmodifiableList(
Arrays.asList(
/* InputEntity */
OperatorInput.class,
RandomLoadParameters.class,
TimeSeriesMappingSource.MappingEntry.class,
/* - AssetInput */
NodeInput.class,
LineInput.class,
Transformer2WInput.class,
Transformer3WInput.class,
SwitchInput.class,
MeasurementUnitInput.class,
ThermalBusInput.class,
/* -- SystemParticipantInput */
ChpInput.class,
BmInput.class,
EvInput.class,
EvcsInput.class,
FixedFeedInInput.class,
HpInput.class,
LoadInput.class,
PvInput.class,
StorageInput.class,
WecInput.class,
/* -- ThermalUnitInput */
ThermalHouseInput.class,
CylindricalStorageInput.class,
/* - GraphicInput */
NodeGraphicInput.class,
LineGraphicInput.class,
/* - AssetTypeInput */
BmTypeInput.class,
ChpTypeInput.class,
EvTypeInput.class,
HpTypeInput.class,
LineTypeInput.class,
Transformer2WTypeInput.class,
Transformer3WTypeInput.class,
StorageTypeInput.class,
WecTypeInput.class));
List.of(
/* InputEntity */
OperatorInput.class,
RandomLoadParameters.class,
TimeSeriesMappingSource.MappingEntry.class,
/* - AssetInput */
NodeInput.class,
LineInput.class,
Transformer2WInput.class,
Transformer3WInput.class,
SwitchInput.class,
MeasurementUnitInput.class,
ThermalBusInput.class,
/* -- SystemParticipantInput */
ChpInput.class,
BmInput.class,
EvInput.class,
EvcsInput.class,
FixedFeedInInput.class,
HpInput.class,
LoadInput.class,
PvInput.class,
StorageInput.class,
WecInput.class,
/* -- ThermalUnitInput */
ThermalHouseInput.class,
CylindricalStorageInput.class,
/* - GraphicInput */
NodeGraphicInput.class,
LineGraphicInput.class,
/* - AssetTypeInput */
BmTypeInput.class,
ChpTypeInput.class,
EvTypeInput.class,
HpTypeInput.class,
LineTypeInput.class,
Transformer2WTypeInput.class,
Transformer3WTypeInput.class,
StorageTypeInput.class,
WecTypeInput.class);

public InputEntityProcessor(Class<? extends InputEntity> registeredClass) {
super(registeredClass);
Expand Down

0 comments on commit c802a67

Please sign in to comment.