diff --git a/metadata/src/main/java/net/laprun/sustainability/power/SensorMetadata.java b/metadata/src/main/java/net/laprun/sustainability/power/SensorMetadata.java index c0ec07c..bddbb6d 100644 --- a/metadata/src/main/java/net/laprun/sustainability/power/SensorMetadata.java +++ b/metadata/src/main/java/net/laprun/sustainability/power/SensorMetadata.java @@ -76,7 +76,8 @@ public SensorMetadata(List components, String documentation) } @JsonCreator - SensorMetadata(Map components, String documentation) { + SensorMetadata(@JsonProperty("metadata") Map components, + @JsonProperty("documentation") String documentation) { this.components = components; this.documentation = documentation; } @@ -228,8 +229,16 @@ public record ComponentMetadata(String name, int index, String description, bool } } - public ComponentMetadata(String name, int index, String description, boolean isAttributed, String unitSymbol) { + @JsonCreator(mode = JsonCreator.Mode.PROPERTIES) + public ComponentMetadata(@JsonProperty("name") String name, @JsonProperty("index") int index, + @JsonProperty("description") String description, + @JsonProperty("isAttributed") boolean isAttributed, @JsonProperty("unit") String unitSymbol) { this(name, index, description, isAttributed, SensorUnit.of(unitSymbol)); } + + @JsonProperty("unit") + public String unitAsSymbol() { + return unit.symbol(); + } } } diff --git a/metadata/src/main/java/net/laprun/sustainability/power/SensorUnit.java b/metadata/src/main/java/net/laprun/sustainability/power/SensorUnit.java index c98c9ce..49555a8 100644 --- a/metadata/src/main/java/net/laprun/sustainability/power/SensorUnit.java +++ b/metadata/src/main/java/net/laprun/sustainability/power/SensorUnit.java @@ -33,8 +33,13 @@ public SensorUnit(String symbol, SensorUnit base, double factor) { this.factor = factor < 0 ? 1 : factor; } - @JsonCreator + @JsonCreator(mode = JsonCreator.Mode.DELEGATING) public static SensorUnit of(String symbol) { + symbol = Objects.requireNonNull(symbol, "Unit symbol cannot be null").trim(); + if (symbol.isBlank()) { + throw new IllegalArgumentException("Unit symbol cannot be blank"); + } + var unit = baseUnits.get(symbol); if (unit != null) { return unit; @@ -45,11 +50,6 @@ public static SensorUnit of(String symbol) { return unit; } - symbol = Objects.requireNonNull(symbol, "Unit symbol cannot be null").trim(); - if (symbol.isBlank()) { - throw new IllegalArgumentException("Unit symbol cannot be blank"); - } - if (symbol.length() == 1) { // assume base unit return baseUnitFor(symbol);