diff --git a/README.md b/README.md
index ac28f160..a0dfa95f 100644
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
Stores solar data in a database to view on Android, Grafana, or PVOutput
-
+
Supported Products •
Documentation •
Features •
diff --git a/action-node/src/main/java/me/retrodaredevil/action/node/environment/VariableEnvironment.java b/action-node/src/main/java/me/retrodaredevil/action/node/environment/VariableEnvironment.java
index 61454fa3..e30919f8 100644
--- a/action-node/src/main/java/me/retrodaredevil/action/node/environment/VariableEnvironment.java
+++ b/action-node/src/main/java/me/retrodaredevil/action/node/environment/VariableEnvironment.java
@@ -49,6 +49,7 @@ public void setDeclaredAction(String name, ActionEnvironment actionEnvironment,
declaredActionMap.put(name, new DeclaredAction(actionEnvironment, actionNode));
}
public LockSet getLockSet(String name) {
+ // TODO lockSetMap is never updated, so a call to this method is guaranteed to result in a NoSuchElementException
if (!lockSetMap.containsKey(name)) {
if (outerVariableEnvironment == null) {
throw new NoSuchElementException("LockSet with name='" + name + "' not declared!");
diff --git a/client/src/main/java/me/retrodaredevil/solarthing/actions/command/AlterManagerAction.java b/client/src/main/java/me/retrodaredevil/solarthing/actions/command/AlterManagerAction.java
index 969352e1..129e609e 100644
--- a/client/src/main/java/me/retrodaredevil/solarthing/actions/command/AlterManagerAction.java
+++ b/client/src/main/java/me/retrodaredevil/solarthing/actions/command/AlterManagerAction.java
@@ -269,6 +269,7 @@ private void receivePacketWithIntegrity(String sender, TargetPacketGroup packetG
}
+ // TODO put thought into how to better design the alter manager program and SolarThing database replication
/**
* @deprecated This method *probably* works perfectly fine, but it is untested against malicious data and the fact that we have to use this method itself shows
* how we are using this as a bandaid for the real problem: We need to be sure that the solarthing_open database is secure
diff --git a/client/src/main/java/me/retrodaredevil/solarthing/actions/command/EnvironmentUpdaterMultiplexer.java b/client/src/main/java/me/retrodaredevil/solarthing/actions/command/EnvironmentUpdaterMultiplexer.java
index 4406f0d9..18588ed2 100644
--- a/client/src/main/java/me/retrodaredevil/solarthing/actions/command/EnvironmentUpdaterMultiplexer.java
+++ b/client/src/main/java/me/retrodaredevil/solarthing/actions/command/EnvironmentUpdaterMultiplexer.java
@@ -3,7 +3,6 @@
import me.retrodaredevil.action.node.environment.InjectEnvironment;
import me.retrodaredevil.solarthing.reason.ExecutionReason;
-import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
@@ -13,7 +12,7 @@ public class EnvironmentUpdaterMultiplexer implements EnvironmentUpdater {
private final List environmentUpdaterList;
public EnvironmentUpdaterMultiplexer(Collection extends EnvironmentUpdater> environmentUpdaters) {
- this.environmentUpdaterList = Collections.unmodifiableList(new ArrayList<>(environmentUpdaters));
+ this.environmentUpdaterList = List.copyOf(environmentUpdaters);
}
public EnvironmentUpdaterMultiplexer(EnvironmentUpdater... environmentUpdaters) {
this.environmentUpdaterList = Collections.unmodifiableList(Arrays.asList(environmentUpdaters));
diff --git a/client/src/main/java/me/retrodaredevil/solarthing/actions/environment/MultiRoverModbusEnvironment.java b/client/src/main/java/me/retrodaredevil/solarthing/actions/environment/MultiRoverModbusEnvironment.java
index 40b76ff5..fb0b4c4f 100644
--- a/client/src/main/java/me/retrodaredevil/solarthing/actions/environment/MultiRoverModbusEnvironment.java
+++ b/client/src/main/java/me/retrodaredevil/solarthing/actions/environment/MultiRoverModbusEnvironment.java
@@ -10,7 +10,7 @@ public final class MultiRoverModbusEnvironment {
private final Map map;
public MultiRoverModbusEnvironment(Map map) {
- this.map = Collections.unmodifiableMap(new HashMap<>(map));
+ this.map = Map.copyOf(map);
}
public MultiRoverModbusEnvironment() {
this.map = Collections.emptyMap();
diff --git a/client/src/main/java/me/retrodaredevil/solarthing/actions/environment/MultiTracerModbusEnvironment.java b/client/src/main/java/me/retrodaredevil/solarthing/actions/environment/MultiTracerModbusEnvironment.java
index 9528b7a5..ee5e5ea9 100644
--- a/client/src/main/java/me/retrodaredevil/solarthing/actions/environment/MultiTracerModbusEnvironment.java
+++ b/client/src/main/java/me/retrodaredevil/solarthing/actions/environment/MultiTracerModbusEnvironment.java
@@ -11,7 +11,7 @@ public final class MultiTracerModbusEnvironment {
private final Map map;
public MultiTracerModbusEnvironment(Map map) {
- this.map = Collections.unmodifiableMap(new HashMap<>(map));
+ this.map = Map.copyOf(map);
}
public MultiTracerModbusEnvironment() {
this.map = Collections.emptyMap();
diff --git a/client/src/main/java/me/retrodaredevil/solarthing/chatbot/ChatBotHandlerMultiplexer.java b/client/src/main/java/me/retrodaredevil/solarthing/chatbot/ChatBotHandlerMultiplexer.java
index 11b7d6ef..0a61989a 100644
--- a/client/src/main/java/me/retrodaredevil/solarthing/chatbot/ChatBotHandlerMultiplexer.java
+++ b/client/src/main/java/me/retrodaredevil/solarthing/chatbot/ChatBotHandlerMultiplexer.java
@@ -3,8 +3,6 @@
import me.retrodaredevil.solarthing.annotations.NotNull;
import me.retrodaredevil.solarthing.message.MessageSender;
-import java.util.ArrayList;
-import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
@@ -12,7 +10,7 @@ public class ChatBotHandlerMultiplexer implements ChatBotHandler {
private final List chatBotHandlerList;
public ChatBotHandlerMultiplexer(List extends ChatBotHandler> chatBotHandlerList) {
- this.chatBotHandlerList = Collections.unmodifiableList(new ArrayList<>(chatBotHandlerList));
+ this.chatBotHandlerList = List.copyOf(chatBotHandlerList);
}
@Override
diff --git a/client/src/main/java/me/retrodaredevil/solarthing/chatbot/FlagCommandChatBotHandler.java b/client/src/main/java/me/retrodaredevil/solarthing/chatbot/FlagCommandChatBotHandler.java
index 0a8fab60..675c0810 100644
--- a/client/src/main/java/me/retrodaredevil/solarthing/chatbot/FlagCommandChatBotHandler.java
+++ b/client/src/main/java/me/retrodaredevil/solarthing/chatbot/FlagCommandChatBotHandler.java
@@ -336,7 +336,7 @@ public boolean handleMessage(Message message, MessageSender messageSender) {
String durationString = aliasSplit[1];
defaultDuration = TimeUtil.lenientParseDurationOrNull(durationString);
if (defaultDuration == null) {
- messageSender.sendMessage("Invalid duration: " + defaultDuration);
+ messageSender.sendMessage("Invalid duration: " + durationString);
return true;
}
}
diff --git a/client/src/main/java/me/retrodaredevil/solarthing/config/databases/implementations/InfluxDbDatabaseSettings.java b/client/src/main/java/me/retrodaredevil/solarthing/config/databases/implementations/InfluxDbDatabaseSettings.java
index e8ff74a5..ccb865d0 100644
--- a/client/src/main/java/me/retrodaredevil/solarthing/config/databases/implementations/InfluxDbDatabaseSettings.java
+++ b/client/src/main/java/me/retrodaredevil/solarthing/config/databases/implementations/InfluxDbDatabaseSettings.java
@@ -36,7 +36,7 @@ public InfluxDbDatabaseSettings(InfluxProperties influxProperties, OkHttpPropert
this.okHttpProperties = requireNonNull(okHttpProperties);
this.databaseName = databaseName;
this.measurementName = measurementName;
- this.frequentStatusRetentionPolicyList = Collections.unmodifiableList(new ArrayList<>(frequentRetentionPolicies));
+ this.frequentStatusRetentionPolicyList = List.copyOf(frequentRetentionPolicies);
this.eventRetentionPolicySetting = eventRetentionPolicySetting;
}
diff --git a/client/src/main/java/me/retrodaredevil/solarthing/config/options/AutomationProgramOptions.java b/client/src/main/java/me/retrodaredevil/solarthing/config/options/AutomationProgramOptions.java
index da44d063..c337764d 100644
--- a/client/src/main/java/me/retrodaredevil/solarthing/config/options/AutomationProgramOptions.java
+++ b/client/src/main/java/me/retrodaredevil/solarthing/config/options/AutomationProgramOptions.java
@@ -11,6 +11,7 @@
import static java.util.Objects.requireNonNull;
+@SuppressWarnings("CanBeFinal")
@JsonTypeName("automation")
@JsonExplicit
public class AutomationProgramOptions extends DatabaseTimeZoneOptionBase implements ActionsOption {
diff --git a/client/src/main/java/me/retrodaredevil/solarthing/config/options/DatabaseTimeZoneOptionBase.java b/client/src/main/java/me/retrodaredevil/solarthing/config/options/DatabaseTimeZoneOptionBase.java
index 618d7287..653eacbd 100644
--- a/client/src/main/java/me/retrodaredevil/solarthing/config/options/DatabaseTimeZoneOptionBase.java
+++ b/client/src/main/java/me/retrodaredevil/solarthing/config/options/DatabaseTimeZoneOptionBase.java
@@ -7,6 +7,7 @@
import java.nio.file.Path;
+@SuppressWarnings("CanBeFinal")
@JsonExplicit
public abstract class DatabaseTimeZoneOptionBase extends TimeZoneOptionBase implements DatabaseOption, TimeZoneOption {
diff --git a/client/src/main/java/me/retrodaredevil/solarthing/config/options/MateProgramOptions.java b/client/src/main/java/me/retrodaredevil/solarthing/config/options/MateProgramOptions.java
index 6f905c2a..25e7c2aa 100644
--- a/client/src/main/java/me/retrodaredevil/solarthing/config/options/MateProgramOptions.java
+++ b/client/src/main/java/me/retrodaredevil/solarthing/config/options/MateProgramOptions.java
@@ -11,6 +11,7 @@
import static java.util.Objects.requireNonNull;
+@SuppressWarnings({"FieldMayBeFinal", "CanBeFinal"})
@JsonTypeName("mate")
@JsonIgnoreProperties("allow_commands")
public class MateProgramOptions extends PacketHandlingOptionBase implements IOBundleOption, ProgramOptions {
diff --git a/client/src/main/java/me/retrodaredevil/solarthing/config/options/PVOutputUploadProgramOptions.java b/client/src/main/java/me/retrodaredevil/solarthing/config/options/PVOutputUploadProgramOptions.java
index 602a363d..a097f632 100644
--- a/client/src/main/java/me/retrodaredevil/solarthing/config/options/PVOutputUploadProgramOptions.java
+++ b/client/src/main/java/me/retrodaredevil/solarthing/config/options/PVOutputUploadProgramOptions.java
@@ -17,7 +17,7 @@
import java.util.List;
import java.util.Map;
-@SuppressWarnings("FieldMayBeFinal")
+@SuppressWarnings({"FieldMayBeFinal", "CanBeFinal"})
@JsonTypeName("pvoutput-upload")
@JsonExplicit
public class PVOutputUploadProgramOptions extends DatabaseTimeZoneOptionBase implements AnalyticsOption, DatabaseOption, ProgramOptions {
diff --git a/client/src/main/java/me/retrodaredevil/solarthing/config/options/PacketHandlingOptionBase.java b/client/src/main/java/me/retrodaredevil/solarthing/config/options/PacketHandlingOptionBase.java
index 5acbca1b..0d01bc97 100644
--- a/client/src/main/java/me/retrodaredevil/solarthing/config/options/PacketHandlingOptionBase.java
+++ b/client/src/main/java/me/retrodaredevil/solarthing/config/options/PacketHandlingOptionBase.java
@@ -14,7 +14,7 @@
import static java.util.Objects.requireNonNull;
-@SuppressWarnings("FieldCanBeLocal")
+@SuppressWarnings({"FieldCanBeLocal", "CanBeFinal"})
abstract class PacketHandlingOptionBase extends TimeZoneOptionBase implements PacketHandlingOption, ActionsOption, CommandOption, AnalyticsOption {
// private static final Logger LOGGER = LoggerFactory.getLogger(PacketHandlingOptionBase.class);
diff --git a/client/src/main/java/me/retrodaredevil/solarthing/config/options/RequestProgramOptionsBase.java b/client/src/main/java/me/retrodaredevil/solarthing/config/options/RequestProgramOptionsBase.java
index 0525e492..66a04443 100644
--- a/client/src/main/java/me/retrodaredevil/solarthing/config/options/RequestProgramOptionsBase.java
+++ b/client/src/main/java/me/retrodaredevil/solarthing/config/options/RequestProgramOptionsBase.java
@@ -6,6 +6,7 @@
import static java.util.Objects.requireNonNull;
+@SuppressWarnings({"FieldMayBeFinal", "CanBeFinal"})
public abstract class RequestProgramOptionsBase extends PacketHandlingOptionBase implements CommandOption, ActionsOption {
// When defined as a Duration, Jackson will parse numbers as second values for the duration
diff --git a/client/src/main/java/me/retrodaredevil/solarthing/config/options/RoverSetupProgramOptions.java b/client/src/main/java/me/retrodaredevil/solarthing/config/options/RoverSetupProgramOptions.java
index 27008af3..769d3a34 100644
--- a/client/src/main/java/me/retrodaredevil/solarthing/config/options/RoverSetupProgramOptions.java
+++ b/client/src/main/java/me/retrodaredevil/solarthing/config/options/RoverSetupProgramOptions.java
@@ -8,6 +8,7 @@
import static java.util.Objects.requireNonNull;
+@SuppressWarnings({"FieldMayBeFinal", "CanBeFinal"})
@JsonTypeName("rover-setup")
@JsonExplicit
public class RoverSetupProgramOptions implements ProgramOptions, RoverOption {
diff --git a/client/src/main/java/me/retrodaredevil/solarthing/influxdb/retention/RetentionPolicySetting.java b/client/src/main/java/me/retrodaredevil/solarthing/influxdb/retention/RetentionPolicySetting.java
index aa2c1992..09c26cd1 100644
--- a/client/src/main/java/me/retrodaredevil/solarthing/influxdb/retention/RetentionPolicySetting.java
+++ b/client/src/main/java/me/retrodaredevil/solarthing/influxdb/retention/RetentionPolicySetting.java
@@ -60,6 +60,7 @@ public boolean isIgnoreUnsuccessfulCreate() {
return ignoreUnsuccessfulCreate;
}
+ @SuppressWarnings({"FieldMayBeFinal", "CanBeFinal"})
@JsonPOJOBuilder
static class Builder {
@JsonProperty("name")
diff --git a/client/src/main/java/me/retrodaredevil/solarthing/message/MessageSenderMultiplexer.java b/client/src/main/java/me/retrodaredevil/solarthing/message/MessageSenderMultiplexer.java
index f6a28101..119229ee 100644
--- a/client/src/main/java/me/retrodaredevil/solarthing/message/MessageSenderMultiplexer.java
+++ b/client/src/main/java/me/retrodaredevil/solarthing/message/MessageSenderMultiplexer.java
@@ -1,15 +1,13 @@
package me.retrodaredevil.solarthing.message;
-import java.util.ArrayList;
import java.util.Collection;
-import java.util.Collections;
import java.util.List;
public class MessageSenderMultiplexer implements MessageSender {
private final List messageSenderList;
public MessageSenderMultiplexer(Collection extends MessageSender> messageSenders) {
- this.messageSenderList = Collections.unmodifiableList(new ArrayList<>(messageSenders));
+ this.messageSenderList = List.copyOf(messageSenders);
}
@Override
diff --git a/client/src/main/java/me/retrodaredevil/solarthing/message/event/TemperatureEvent.java b/client/src/main/java/me/retrodaredevil/solarthing/message/event/TemperatureEvent.java
index dc4e9278..2a61ffb6 100644
--- a/client/src/main/java/me/retrodaredevil/solarthing/message/event/TemperatureEvent.java
+++ b/client/src/main/java/me/retrodaredevil/solarthing/message/event/TemperatureEvent.java
@@ -40,11 +40,7 @@ public TemperatureEvent(
throw new IllegalArgumentException("Either celsius or fahrenheit must be defined!");
}
this.timeout = Duration.parse(timeoutDurationString);
- if (temperatureType == null) {
- this.temperatureType = TemperatureType.BATTERY;
- } else {
- this.temperatureType = temperatureType;
- }
+ this.temperatureType = temperatureType == null ? TemperatureType.BATTERY : temperatureType;
}
@Override
diff --git a/client/src/main/java/me/retrodaredevil/solarthing/program/SecurityPacketReceiver.java b/client/src/main/java/me/retrodaredevil/solarthing/program/SecurityPacketReceiver.java
index 7eb426d1..47532f50 100644
--- a/client/src/main/java/me/retrodaredevil/solarthing/program/SecurityPacketReceiver.java
+++ b/client/src/main/java/me/retrodaredevil/solarthing/program/SecurityPacketReceiver.java
@@ -214,7 +214,7 @@ private void receivePacketGroup(StoredPacketGroup storedPacketGroup, TargetPacke
}
LargeIntegrityPacket largeIntegrityPacket = (LargeIntegrityPacket) packet;
String sender = largeIntegrityPacket.getSender();
- final String invalidSenderReason = sender == null ? "sender is null!" : SenderUtil.getInvalidSenderNameReason(sender);
+ final String invalidSenderReason = SenderUtil.getInvalidSenderNameReason(sender);
if(invalidSenderReason != null){
LOGGER.warn(SolarThingConstants.SUMMARY_MARKER, invalidSenderReason);
reject(storedPacketGroup, SecurityRejectPacket.Reason.INVALID_DATA, invalidSenderReason);
diff --git a/client/src/main/java/me/retrodaredevil/solarthing/program/pvoutput/PVOutputUploadMain.java b/client/src/main/java/me/retrodaredevil/solarthing/program/pvoutput/PVOutputUploadMain.java
index 2fdf10be..42de08a7 100644
--- a/client/src/main/java/me/retrodaredevil/solarthing/program/pvoutput/PVOutputUploadMain.java
+++ b/client/src/main/java/me/retrodaredevil/solarthing/program/pvoutput/PVOutputUploadMain.java
@@ -44,9 +44,11 @@
import java.io.IOException;
import java.nio.file.Path;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
+import java.time.Instant;
+import java.time.LocalDate;
import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
+import java.time.format.DateTimeParseException;
import java.time.format.TextStyle;
import java.util.ArrayList;
import java.util.Arrays;
@@ -63,7 +65,6 @@ public class PVOutputUploadMain {
@SuppressWarnings({"SameReturnValue", "deprecation"})
public static int startPVOutputUpload(PVOutputUploadProgramOptions options, CommandOptions commandOptions, Path dataDirectory, boolean isValidate){
- final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd"); // Not thread safe, otherwise this would be a static field
LOGGER.info(SolarThingConstants.SUMMARY_MARKER, "Starting PV Output upload program");
ZoneId zoneId = options.getZoneId();
@@ -91,13 +92,13 @@ public static int startPVOutputUpload(PVOutputUploadProgramOptions options, Comm
String toDateString = commandOptions.getPVOutputToDate();
if(fromDateString != null && toDateString != null) {
System.out.println("Starting range upload");
- final SimpleDate fromDate;
- final SimpleDate toDate;
+ final LocalDate fromDate;
+ final LocalDate toDate;
try {
// TODO Don't use SimpleDateFormat anymore and remove supress warnings for deprecation
- fromDate = SimpleDate.fromDate(DATE_FORMAT.parse(fromDateString));
- toDate = SimpleDate.fromDate(DATE_FORMAT.parse(toDateString));
- } catch (ParseException e) {
+ fromDate = LocalDate.parse(fromDateString, DateTimeFormatter.ISO_LOCAL_DATE);
+ toDate = LocalDate.parse(toDateString, DateTimeFormatter.ISO_LOCAL_DATE);
+ } catch (DateTimeParseException e) {
e.printStackTrace();
System.err.println("Unable to parser either from date or to date. Use the yyyy-MM-dd format");
return SolarThingConstants.EXIT_CODE_INVALID_OPTIONS;
@@ -123,61 +124,57 @@ public static int startPVOutputUpload(PVOutputUploadProgramOptions options, Comm
}
@SuppressWarnings("CatchAndPrintStackTrace")
private static int startRangeUpload(
- SimpleDate fromDate, SimpleDate toDate,
+ LocalDate fromDate, LocalDate toDate,
PVOutputUploadProgramOptions options, SolarThingDatabase database,
PVOutputHandler handler, PVOutputService service, ZoneId zoneId
) {
List addOutputParameters = new ArrayList<>();
- SimpleDate date = fromDate;
- while(date.compareTo(toDate) <= 0) {
+ for(LocalDate date = fromDate; !date.isAfter(toDate); date = date.plusDays(1)) { // toDate is inclusive
System.out.println("Doing " + date);
- SimpleDate tomorrow = date.tomorrow();
- long dayStart = date.getDayStartDateMillis(zoneId);
- long dayEnd = tomorrow.getDayStartDateMillis(zoneId);
+ Instant dayStart = date.atStartOfDay(zoneId).toInstant();
+ Instant dayEnd = date.plusDays(1).atStartOfDay(zoneId).toInstant();
List extends PacketGroup> rawPacketGroups = null;
try {
rawPacketGroups = database.getStatusDatabase().query(new MillisQueryBuilder()
- .startKey(dayStart)
- .endKey(dayEnd)
+ .startKey(dayStart.toEpochMilli())
+ .endKey(dayEnd.toEpochMilli())
.inclusiveEnd(false)
.build()
);
- System.out.println("Got " + rawPacketGroups.size() + " packets for date: " + date.toPVOutputString());
+ System.out.println("Got " + rawPacketGroups.size() + " packets for date: " + date);
} catch (SolarThingDatabaseException e) {
e.printStackTrace();
- System.err.println("Couldn't query packets. Skipping " + date.toPVOutputString());
+ System.err.println("Couldn't query packets. Skipping " + date);
}
if (rawPacketGroups != null) {
List packetGroups = PacketUtil.getPacketGroups(options.getSourceId(), options.getDefaultInstanceOptions(), rawPacketGroups);
if (packetGroups != null) {
- if (!handler.checkPackets(dayStart, packetGroups)) {
- System.err.println("Unsuccessfully checked packets for " + date.toPVOutputString());
+ if (!handler.checkPackets(dayStart.toEpochMilli(), packetGroups)) {
+ System.err.println("Unsuccessfully checked packets for " + date);
try {
System.out.println(MAPPER.writeValueAsString(packetGroups.get(packetGroups.size() - 1)));
} catch (JsonProcessingException e) {
e.printStackTrace();
}
} else {
- AddStatusParameters statusParameters = handler.getStatus(dayStart, packetGroups);
+ AddStatusParameters statusParameters = handler.getStatus(dayStart.toEpochMilli(), packetGroups);
AddOutputParametersBuilder outputParametersBuilder = new AddOutputParametersBuilder(statusParameters.getDate())
.setGenerated(statusParameters.getEnergyGeneration())
.setConsumption(statusParameters.getEnergyConsumption());
- PVOutputHandler.setImportedExported(outputParametersBuilder, packetGroups, AccumulationConfig.createDefault(dayStart), options.isIncludeImport(), options.isIncludeExport());
+ PVOutputHandler.setImportedExported(outputParametersBuilder, packetGroups, AccumulationConfig.createDefault(dayStart.toEpochMilli()), options.isIncludeImport(), options.isIncludeExport());
AddOutputParameters outputParameters = outputParametersBuilder.build();
addOutputParameters.add(outputParameters);
- System.out.println("Added parameters for " + date.toPVOutputString() + " to queue.");
+ System.out.println("Added parameters for " + date + " to queue.");
System.out.println("Generated: " + statusParameters.getEnergyGeneration());
System.out.println(Arrays.toString(outputParameters.toCsvArray()));
System.out.println(CsvUtil.toCsvString(outputParameters.toCsvArray()));
}
} else {
- System.err.println("Didn't find any packets with source: " + options.getSourceId() + " for date: " + date.toPVOutputString());
+ System.err.println("Didn't find any packets with source: " + options.getSourceId() + " for date: " + date);
}
}
-
- date = tomorrow;
}
System.out.println("Going to upload in batches of 30...");
for (int i = 0; i < addOutputParameters.size(); i += 30) {
diff --git a/client/src/test/java/me/retrodaredevil/solarthing/JacksonTestUtil.java b/client/src/test/java/me/retrodaredevil/solarthing/JacksonUtilTest.java
similarity index 93%
rename from client/src/test/java/me/retrodaredevil/solarthing/JacksonTestUtil.java
rename to client/src/test/java/me/retrodaredevil/solarthing/JacksonUtilTest.java
index c99dac07..b539cafc 100644
--- a/client/src/test/java/me/retrodaredevil/solarthing/JacksonTestUtil.java
+++ b/client/src/test/java/me/retrodaredevil/solarthing/JacksonUtilTest.java
@@ -7,7 +7,7 @@
import java.time.Duration;
-public class JacksonTestUtil {
+public class JacksonUtilTest {
@Test
void testDefaultMapper() throws JsonProcessingException {
ObjectMapper mapper = JacksonUtil.defaultMapper();
diff --git a/common/src/main/java/me/retrodaredevil/solarthing/program/DatabaseConfig.java b/common/src/main/java/me/retrodaredevil/solarthing/program/DatabaseConfig.java
index 762d5897..df505db7 100644
--- a/common/src/main/java/me/retrodaredevil/solarthing/program/DatabaseConfig.java
+++ b/common/src/main/java/me/retrodaredevil/solarthing/program/DatabaseConfig.java
@@ -8,7 +8,6 @@
import me.retrodaredevil.solarthing.config.databases.IndividualSettings;
import java.util.Collections;
-import java.util.HashMap;
import java.util.Map;
@JsonExplicit
@@ -34,7 +33,7 @@ private DatabaseConfig(){
public DatabaseConfig(DatabaseSettings settings, Map frequencySettingsMap) {
this.settings = settings;
- this.individualSettingsMap = Collections.unmodifiableMap(new HashMap<>(frequencySettingsMap));
+ this.individualSettingsMap = Map.copyOf(frequencySettingsMap);
type = settings.getDatabaseType().getName();
}
diff --git a/core/src/main/java/me/retrodaredevil/solarthing/database/couchdb/CouchDbAlterDatabase.java b/core/src/main/java/me/retrodaredevil/solarthing/database/couchdb/CouchDbAlterDatabase.java
index 350f66c5..e871c768 100644
--- a/core/src/main/java/me/retrodaredevil/solarthing/database/couchdb/CouchDbAlterDatabase.java
+++ b/core/src/main/java/me/retrodaredevil/solarthing/database/couchdb/CouchDbAlterDatabase.java
@@ -85,7 +85,7 @@ public CouchDbAlterDatabase(CouchDbDatabase database, ObjectMapper mapper) {
ObjectNode objectNode = (ObjectNode) jsonNode;
final StoredAlterPacket storedAlterPacket;
try {
- storedAlterPacket = mapper.treeToValue(objectNode, StoredAlterPacket.class);;
+ storedAlterPacket = mapper.treeToValue(objectNode, StoredAlterPacket.class);
} catch (JsonProcessingException e) {
throw new SolarThingDatabaseException("Could not parse. JsonData: " + jsonData.getJson(), e);
}
diff --git a/core/src/main/java/me/retrodaredevil/solarthing/misc/device/CelsiusCpuTemperaturePacket.java b/core/src/main/java/me/retrodaredevil/solarthing/misc/device/CelsiusCpuTemperaturePacket.java
index 0803b488..1fc68672 100644
--- a/core/src/main/java/me/retrodaredevil/solarthing/misc/device/CelsiusCpuTemperaturePacket.java
+++ b/core/src/main/java/me/retrodaredevil/solarthing/misc/device/CelsiusCpuTemperaturePacket.java
@@ -56,7 +56,7 @@ public float getCpuTemperatureFahrenheit() {
}
@Override
- public List getCores() {
+ public @NotNull List getCores() {
return cores;
}
diff --git a/core/src/main/java/me/retrodaredevil/solarthing/packets/security/ImmutableAuthNewSenderPacket.java b/core/src/main/java/me/retrodaredevil/solarthing/packets/security/ImmutableAuthNewSenderPacket.java
index 667a1df1..7cf25678 100644
--- a/core/src/main/java/me/retrodaredevil/solarthing/packets/security/ImmutableAuthNewSenderPacket.java
+++ b/core/src/main/java/me/retrodaredevil/solarthing/packets/security/ImmutableAuthNewSenderPacket.java
@@ -8,6 +8,8 @@
import java.security.PublicKey;
+import static java.util.Objects.requireNonNull;
+
public final class ImmutableAuthNewSenderPacket implements AuthNewSenderPacket {
private final String sender;
@@ -19,8 +21,8 @@ public ImmutableAuthNewSenderPacket(
@JsonProperty(value = "sender", required = true) String sender,
@JsonProperty(value = "publicKey", required = true) String publicKey
) throws InvalidKeyException {
- this.sender = sender;
- this.publicKey = publicKey;
+ this.sender = requireNonNull(sender);
+ this.publicKey = requireNonNull(publicKey);
publicKeyObject = KeyUtil.decodePublicKey(publicKey);
}
diff --git a/core/src/main/java/me/retrodaredevil/solarthing/packets/security/ImmutableIntegrityPacket.java b/core/src/main/java/me/retrodaredevil/solarthing/packets/security/ImmutableIntegrityPacket.java
index 18f9d5a1..68d2d729 100644
--- a/core/src/main/java/me/retrodaredevil/solarthing/packets/security/ImmutableIntegrityPacket.java
+++ b/core/src/main/java/me/retrodaredevil/solarthing/packets/security/ImmutableIntegrityPacket.java
@@ -4,6 +4,8 @@
import com.fasterxml.jackson.annotation.JsonProperty;
import me.retrodaredevil.solarthing.annotations.NotNull;
+import static java.util.Objects.requireNonNull;
+
public final class ImmutableIntegrityPacket implements IntegrityPacket {
private final String sender;
private final String encryptedData;
@@ -13,8 +15,8 @@ public ImmutableIntegrityPacket(
@JsonProperty(value = "sender", required = true) String sender,
@JsonProperty(value = "encryptedData", required = true) String encryptedData
) {
- this.sender = sender;
- this.encryptedData = encryptedData;
+ this.sender = requireNonNull(sender);
+ this.encryptedData = requireNonNull(encryptedData);
}
@Override
diff --git a/core/src/main/java/me/retrodaredevil/solarthing/packets/security/ImmutableLargeIntegrityPacket.java b/core/src/main/java/me/retrodaredevil/solarthing/packets/security/ImmutableLargeIntegrityPacket.java
index aa3d5b22..c8f0584c 100644
--- a/core/src/main/java/me/retrodaredevil/solarthing/packets/security/ImmutableLargeIntegrityPacket.java
+++ b/core/src/main/java/me/retrodaredevil/solarthing/packets/security/ImmutableLargeIntegrityPacket.java
@@ -4,6 +4,8 @@
import com.fasterxml.jackson.annotation.JsonProperty;
import me.retrodaredevil.solarthing.annotations.NotNull;
+import static java.util.Objects.requireNonNull;
+
public class ImmutableLargeIntegrityPacket implements LargeIntegrityPacket {
private final String sender;
@@ -15,9 +17,9 @@ public ImmutableLargeIntegrityPacket(
@JsonProperty(value = "sender", required = true) String sender,
@JsonProperty(value = "encryptedHash", required = true) String encryptedHash,
@JsonProperty(value = "payload", required = true) String payload) {
- this.sender = sender;
- this.encryptedHash = encryptedHash;
- this.payload = payload;
+ this.sender = requireNonNull(sender);
+ this.encryptedHash = requireNonNull(encryptedHash);
+ this.payload = requireNonNull(payload);
}
@Override
diff --git a/core/src/main/java/me/retrodaredevil/solarthing/solar/outback/mx/ImmutableMXStatusPacket.java b/core/src/main/java/me/retrodaredevil/solarthing/solar/outback/mx/ImmutableMXStatusPacket.java
index 5e99fc32..3933cb83 100644
--- a/core/src/main/java/me/retrodaredevil/solarthing/solar/outback/mx/ImmutableMXStatusPacket.java
+++ b/core/src/main/java/me/retrodaredevil/solarthing/solar/outback/mx/ImmutableMXStatusPacket.java
@@ -32,7 +32,7 @@ final class ImmutableMXStatusPacket implements MXStatusPacket {
@JsonCreator
ImmutableMXStatusPacket(
- @JsonProperty("packetVersion") Integer packetVersion,
+ @JsonProperty("packetVersion") @Nullable Integer packetVersion,
@JsonProperty(value = "address", required = true) int address, @JsonProperty(value = "chargerCurrent", required = true) int chargerCurrent, @JsonProperty(value = "pvCurrent", required = true) int pvCurrent, @JsonProperty(value = "inputVoltage", required = true) int inputVoltage,
@JsonProperty(value = "dailyKWH", required = true) float dailyKWH,
@JsonProperty(value = "ampChargerCurrent", required = true) float ampChargerCurrent,
diff --git a/notation-script/src/main/java/me/retrodaredevil/notation/translators/json/JsonNodeTranslator.java b/notation-script/src/main/java/me/retrodaredevil/notation/translators/json/JsonNodeTranslator.java
index f01fbc35..9f21d264 100644
--- a/notation-script/src/main/java/me/retrodaredevil/notation/translators/json/JsonNodeTranslator.java
+++ b/notation-script/src/main/java/me/retrodaredevil/notation/translators/json/JsonNodeTranslator.java
@@ -77,8 +77,7 @@ private JsonNode translateData(Node node) {
}
Map namedArguments = node.getNamedArguments();
Map fieldMap = new HashMap<>();
- namedArguments.entrySet()
- .forEach(entry -> fieldMap.put(entry.getKey(), translateArgument(entry.getValue())));
+ namedArguments.forEach((key, value) -> fieldMap.put(key, translateArgument(value)));
return new ObjectNode(JsonNodeFactory.instance, fieldMap);
}
diff --git a/other/grafana/graphql_queries.md b/other/grafana/graphql_queries.md
index 049edd78..d119ed6e 100644
--- a/other/grafana/graphql_queries.md
+++ b/other/grafana/graphql_queries.md
@@ -56,7 +56,7 @@ query {
Time: dateMillis
packet {
productModelString
- chargingStateName
+ solarModeName
controllerTemperatureCelsius
}
}
diff --git a/server/src/main/java/me/retrodaredevil/solarthing/rest/cache/CacheController.java b/server/src/main/java/me/retrodaredevil/solarthing/rest/cache/CacheController.java
index f0abc59b..8c2e78b9 100644
--- a/server/src/main/java/me/retrodaredevil/solarthing/rest/cache/CacheController.java
+++ b/server/src/main/java/me/retrodaredevil/solarthing/rest/cache/CacheController.java
@@ -28,7 +28,7 @@ public CacheController(CacheHandler cacheHandler) {
produces = "application/json"
)
public @NotNull List<@NotNull IdentificationCacheDataPacket> getChargeControllerAccumulation(String sourceId, long startMillis, long endMillis) {
- final TypeReference> typeReference = new TypeReference>() {};
+ final TypeReference> typeReference = new TypeReference<>() {};
return cacheHandler.getCachesFromDateMillis(typeReference, ChargeControllerAccumulationDataCache.CACHE_NAME, sourceId, startMillis, endMillis);
}
@GetMapping(
@@ -36,7 +36,7 @@ public CacheController(CacheHandler cacheHandler) {
produces = "application/json"
)
public @NotNull List<@NotNull IdentificationCacheDataPacket> getFXAccumulation(String sourceId, long startMillis, long endMillis) {
- final TypeReference> typeReference = new TypeReference>() {};
+ final TypeReference> typeReference = new TypeReference<>() {};
return cacheHandler.getCachesFromDateMillis(typeReference, FXAccumulationDataCache.CACHE_NAME, sourceId, startMillis, endMillis);
}
@GetMapping(
diff --git a/server/src/main/java/me/retrodaredevil/solarthing/rest/graphql/AnnotationUtil.java b/server/src/main/java/me/retrodaredevil/solarthing/rest/graphql/AnnotationUtil.java
index 11f4ad1e..566757fd 100644
--- a/server/src/main/java/me/retrodaredevil/solarthing/rest/graphql/AnnotationUtil.java
+++ b/server/src/main/java/me/retrodaredevil/solarthing/rest/graphql/AnnotationUtil.java
@@ -49,11 +49,10 @@ public static T getAnnotation(Class annotationClass, M
return getAnnotation(annotationClass, method, method.getDeclaringClass());
}
public static T getAnnotation(Class annotationClass, Member member) {
- if (member instanceof Method) {
- return getAnnotation(annotationClass, (Method) member);
+ if (member instanceof Method method) {
+ return getAnnotation(annotationClass, method);
}
- if (member instanceof Field) {
- Field field = (Field) member;
+ if (member instanceof Field field) {
return field.getAnnotation(annotationClass);
}
throw new UnsupportedOperationException("Unsupported type: " + member.getClass());
diff --git a/server/src/main/java/me/retrodaredevil/solarthing/rest/graphql/PacketFinder.java b/server/src/main/java/me/retrodaredevil/solarthing/rest/graphql/PacketFinder.java
index 6bd24430..73ee63d6 100644
--- a/server/src/main/java/me/retrodaredevil/solarthing/rest/graphql/PacketFinder.java
+++ b/server/src/main/java/me/retrodaredevil/solarthing/rest/graphql/PacketFinder.java
@@ -38,8 +38,7 @@ private void updateWithRange(long queryStart, long queryEnd) {
for (InstancePacketGroup instancePacketGroup : rawPackets) {
int fragmentId = instancePacketGroup.getFragmentId();
for (Packet packet : instancePacketGroup.getPackets()) {
- if (packet instanceof Identifiable) {
- Identifiable identifiable = (Identifiable) packet;
+ if (packet instanceof Identifiable identifiable) {
IdentifierFragment packetIdentifierFragment = IdentifierFragment.create(fragmentId, identifiable.getIdentifier());
cacheMap.putIfAbsent(packetIdentifierFragment, identifiable);
}
diff --git a/server/src/main/java/me/retrodaredevil/solarthing/rest/graphql/SolarThingExceptionHandler.java b/server/src/main/java/me/retrodaredevil/solarthing/rest/graphql/SolarThingExceptionHandler.java
index 21d7644c..e1841ef9 100644
--- a/server/src/main/java/me/retrodaredevil/solarthing/rest/graphql/SolarThingExceptionHandler.java
+++ b/server/src/main/java/me/retrodaredevil/solarthing/rest/graphql/SolarThingExceptionHandler.java
@@ -10,6 +10,8 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.concurrent.CompletableFuture;
+
public class SolarThingExceptionHandler implements DataFetcherExceptionHandler {
private static final Logger LOGGER = LoggerFactory.getLogger(SolarThingExceptionHandler.class);
@@ -19,19 +21,20 @@ public class SolarThingExceptionHandler implements DataFetcherExceptionHandler {
*/
@Override
- public DataFetcherExceptionHandlerResult onException(DataFetcherExceptionHandlerParameters handlerParameters) {
-
- Throwable exception = handlerParameters.getException();
- SourceLocation sourceLocation = handlerParameters.getSourceLocation();
- ResultPath path = handlerParameters.getPath();
+ public CompletableFuture handleException(DataFetcherExceptionHandlerParameters handlerParameters) {
+ return CompletableFuture.supplyAsync(() -> {
+ Throwable exception = handlerParameters.getException();
+ SourceLocation sourceLocation = handlerParameters.getSourceLocation();
+ ResultPath path = handlerParameters.getPath();
- if (exception instanceof DatabaseException) { // this is the most common exception, usually caused by a timeout
- LOGGER.info("Got database exception", exception);
- } else {
- LOGGER.warn("Got uncommon exception", exception);
- }
+ if (exception instanceof DatabaseException) { // this is the most common exception, usually caused by a timeout
+ LOGGER.info("Got database exception", exception);
+ } else {
+ LOGGER.warn("Got uncommon exception", exception);
+ }
- ExceptionWhileDataFetching error = new ExceptionWhileDataFetching(path, exception, sourceLocation);
- return DataFetcherExceptionHandlerResult.newResult().error(error).build();
+ ExceptionWhileDataFetching error = new ExceptionWhileDataFetching(path, exception, sourceLocation);
+ return DataFetcherExceptionHandlerResult.newResult().error(error).build();
+ });
}
}
diff --git a/server/src/main/java/me/retrodaredevil/solarthing/rest/graphql/SolarThingGraphQLMetaService.java b/server/src/main/java/me/retrodaredevil/solarthing/rest/graphql/SolarThingGraphQLMetaService.java
index 53d41941..330064cd 100644
--- a/server/src/main/java/me/retrodaredevil/solarthing/rest/graphql/SolarThingGraphQLMetaService.java
+++ b/server/src/main/java/me/retrodaredevil/solarthing/rest/graphql/SolarThingGraphQLMetaService.java
@@ -28,8 +28,7 @@ public SolarThingGraphQLMetaService(SimpleQueryHandler simpleQueryHandler) {
int dataId = packetNode.getPacket().getDataId();
MetaDatabase metaDatabase = simpleQueryHandler.queryMeta();
for (TargetedMetaPacket targetedMetaPacket : metaDatabase.getMeta(packetNode.getDateMillis(), fragmentId)) {
- if (targetedMetaPacket instanceof DataMetaPacket) {
- DataMetaPacket dataMetaPacket = (DataMetaPacket) targetedMetaPacket;
+ if (targetedMetaPacket instanceof DataMetaPacket dataMetaPacket) {
if (dataMetaPacket.getDataId() == dataId) {
return dataMetaPacket;
}
diff --git a/server/src/main/java/me/retrodaredevil/solarthing/rest/graphql/packets/IdentifierFilter.java b/server/src/main/java/me/retrodaredevil/solarthing/rest/graphql/packets/IdentifierFilter.java
index 4b85f99c..fdddec6d 100644
--- a/server/src/main/java/me/retrodaredevil/solarthing/rest/graphql/packets/IdentifierFilter.java
+++ b/server/src/main/java/me/retrodaredevil/solarthing/rest/graphql/packets/IdentifierFilter.java
@@ -28,24 +28,16 @@ public IdentifierFilter(String identifierRepresentation, boolean acceptSupplemen
@Override
public boolean keep(PacketNode> packetNode) {
Object packet = packetNode.getPacket();
- if (packet instanceof Identifiable) {
- if (acceptSupplementary && packet instanceof SupplementaryIdentifiable) {
- SupplementaryIdentifiable supplementaryIdentifiable = (SupplementaryIdentifiable) packet;
- if (supplementaryIdentifiable.getIdentifier().getSupplementaryTo().getRepresentation().equals(identifierRepresentation)) {
- return true;
- }
- }
- return ((Identifiable) packet).getIdentifier().getRepresentation().equals(identifierRepresentation);
- }
- switch (defaultAction) {
- case KEEP:
- return true;
- case NO_KEEP:
- return false;
- case ERROR:
- throw new IllegalArgumentException("packet in packetNode wasn't Identifiable! packetNode: " + packetNode);
- default:
- throw new AssertionError("unknown defaultAction=" + defaultAction);
+ if (packet instanceof Identifiable identifiable) {
+ return (acceptSupplementary
+ && packet instanceof SupplementaryIdentifiable supplementaryIdentifiable
+ && supplementaryIdentifiable.getIdentifier().getSupplementaryTo().getRepresentation().equals(identifierRepresentation))
+ || identifiable.getIdentifier().getRepresentation().equals(identifierRepresentation);
}
+ return switch (defaultAction) {
+ case KEEP -> true;
+ case NO_KEEP -> false;
+ case ERROR -> throw new IllegalArgumentException("packet in packetNode wasn't Identifiable! packetNode: " + packetNode);
+ };
}
}
diff --git a/server/src/main/java/me/retrodaredevil/solarthing/rest/graphql/packets/PacketFilterMultiplexer.java b/server/src/main/java/me/retrodaredevil/solarthing/rest/graphql/packets/PacketFilterMultiplexer.java
index 496911b5..7c5a6bc7 100644
--- a/server/src/main/java/me/retrodaredevil/solarthing/rest/graphql/packets/PacketFilterMultiplexer.java
+++ b/server/src/main/java/me/retrodaredevil/solarthing/rest/graphql/packets/PacketFilterMultiplexer.java
@@ -2,16 +2,14 @@
import me.retrodaredevil.solarthing.rest.graphql.packets.nodes.PacketNode;
-import java.util.ArrayList;
import java.util.Collection;
-import java.util.Collections;
import java.util.List;
public class PacketFilterMultiplexer implements PacketFilter {
private final List packetFilterList;
public PacketFilterMultiplexer(Collection extends PacketFilter> packetFilterList) {
- this.packetFilterList = Collections.unmodifiableList(new ArrayList<>(packetFilterList));
+ this.packetFilterList = List.copyOf(packetFilterList);
}
@Override
diff --git a/server/src/main/java/me/retrodaredevil/solarthing/rest/graphql/service/SolarThingGraphQLDailyService.java b/server/src/main/java/me/retrodaredevil/solarthing/rest/graphql/service/SolarThingGraphQLDailyService.java
index 510cadcc..60bc6643 100644
--- a/server/src/main/java/me/retrodaredevil/solarthing/rest/graphql/service/SolarThingGraphQLDailyService.java
+++ b/server/src/main/java/me/retrodaredevil/solarthing/rest/graphql/service/SolarThingGraphQLDailyService.java
@@ -143,9 +143,8 @@ private void addDayPoints(Collection super DataNode>> identifierMap = map.computeIfAbsent(date, (_date) -> new HashMap<>());
identifierMap.computeIfAbsent(identifierFragment, (_identifier) -> new ArrayList<>()).add(new TimestampedPacket<>(dailyChargeController, dateMillis));
diff --git a/server/src/main/java/me/retrodaredevil/solarthing/rest/graphql/service/SolarThingGraphQLLongTermService.java b/server/src/main/java/me/retrodaredevil/solarthing/rest/graphql/service/SolarThingGraphQLLongTermService.java
index 41100ebe..33173f16 100644
--- a/server/src/main/java/me/retrodaredevil/solarthing/rest/graphql/service/SolarThingGraphQLLongTermService.java
+++ b/server/src/main/java/me/retrodaredevil/solarthing/rest/graphql/service/SolarThingGraphQLLongTermService.java
@@ -72,9 +72,7 @@ public SolarThingLongTermQuery(String sourceId, long startMillis, long endMillis
if (result == null) {
result = packet;
} else {
- @SuppressWarnings("unchecked")
- IdentificationCacheDataPacket newResult = (IdentificationCacheDataPacket) result.combine(packet);
- result = newResult;
+ result = result.combine(packet);
}
}
return result;
diff --git a/server/src/main/java/me/retrodaredevil/solarthing/rest/graphql/service/SolarThingGraphQLService.java b/server/src/main/java/me/retrodaredevil/solarthing/rest/graphql/service/SolarThingGraphQLService.java
index 767ea5f5..62549c05 100644
--- a/server/src/main/java/me/retrodaredevil/solarthing/rest/graphql/service/SolarThingGraphQLService.java
+++ b/server/src/main/java/me/retrodaredevil/solarthing/rest/graphql/service/SolarThingGraphQLService.java
@@ -183,6 +183,7 @@ public SolarThingStatusQuery(PacketGetter packetGetter, List extends Fragmente
}
@GraphQLQuery
public @NotNull List<@NotNull PacketNode> temperature() {
+ // TODO the filtering of packets should not be based on POSSIBLE_BAD_VALUES, but should instead be based on sudden spikes in the data
List> packetNodes = packetGetter.getPackets(TemperaturePacket.class);
packetNodes.removeIf(node -> TemperaturePacket.POSSIBLE_BAD_VALUES.contains(node.getPacket().getTemperatureCelsius()));
return packetNodes;
diff --git a/server/src/main/java/me/retrodaredevil/solarthing/rest/graphql/service/web/SolarThingAdminService.java b/server/src/main/java/me/retrodaredevil/solarthing/rest/graphql/service/web/SolarThingAdminService.java
index 82c34cc8..00a7779f 100644
--- a/server/src/main/java/me/retrodaredevil/solarthing/rest/graphql/service/web/SolarThingAdminService.java
+++ b/server/src/main/java/me/retrodaredevil/solarthing/rest/graphql/service/web/SolarThingAdminService.java
@@ -1,6 +1,5 @@
package me.retrodaredevil.solarthing.rest.graphql.service.web;
-import graphql.AssertException;
import io.leangen.graphql.annotations.GraphQLArgument;
import io.leangen.graphql.annotations.GraphQLMutation;
import io.leangen.graphql.annotations.GraphQLQuery;
@@ -183,29 +182,14 @@ private SolarThingDatabaseSystemStatus(SolarThingDatabase database) {
}
@Override
public @NotNull DatabaseStatus getStatus(@NotNull SolarThingDatabaseType databaseType) {
- final DatabaseSource source;
- switch (requireNonNull(databaseType)) {
- case STATUS:
- source = database.getStatusDatabase().getDatabaseSource();
- break;
- case EVENT:
- source = database.getEventDatabase().getDatabaseSource();
- break;
- case CLOSED:
- source = database.getClosedDatabaseSource();
- break;
- case OPEN:
- source = database.getOpenDatabase().getDatabaseSource();
- break;
- case CACHE:
- source = database.getCacheDatabaseSource();
- break;
- case ALTER:
- source = database.getAlterDatabase().getDatabaseSource();
- break;
- default:
- throw new AssertException("Unknown database type: " + databaseType);
- }
+ final DatabaseSource source = switch (requireNonNull(databaseType)) {
+ case STATUS -> database.getStatusDatabase().getDatabaseSource();
+ case EVENT -> database.getEventDatabase().getDatabaseSource();
+ case CLOSED -> database.getClosedDatabaseSource();
+ case OPEN -> database.getOpenDatabase().getDatabaseSource();
+ case CACHE -> database.getCacheDatabaseSource();
+ case ALTER -> database.getAlterDatabase().getDatabaseSource();
+ };
try {
boolean exists = source.exists();
if (!exists) {
diff --git a/serviceapi/src/main/java/me/retrodaredevil/solarthing/pvoutput/SimpleDate.java b/serviceapi/src/main/java/me/retrodaredevil/solarthing/pvoutput/SimpleDate.java
index de26b5ff..1826d618 100644
--- a/serviceapi/src/main/java/me/retrodaredevil/solarthing/pvoutput/SimpleDate.java
+++ b/serviceapi/src/main/java/me/retrodaredevil/solarthing/pvoutput/SimpleDate.java
@@ -16,9 +16,6 @@
import java.time.temporal.ChronoField;
import java.time.temporal.Temporal;
import java.util.Calendar;
-import java.util.Date;
-import java.util.GregorianCalendar;
-import java.util.TimeZone;
import java.util.Objects;
/**
@@ -48,25 +45,10 @@ public static SimpleDate fromCalendar(Calendar calendar){
public static SimpleDate fromTemporal(Temporal instant){
return new SimpleDate(instant.get(ChronoField.YEAR), instant.get(ChronoField.MONTH_OF_YEAR), instant.get(ChronoField.DAY_OF_MONTH));
}
- @Deprecated
- public static SimpleDate fromDate(Date date) {
- Calendar calendar = new GregorianCalendar(TimeZone.getTimeZone("UTC"));
- calendar.setTime(date);
- return fromCalendar(calendar);
- }
public static SimpleDate fromDateMillis(long dateMillis, ZoneId zoneId) {
LocalDateTime localDateTime = Instant.ofEpochMilli(dateMillis).atZone(zoneId).toLocalDateTime();
return fromTemporal(localDateTime);
}
- @Deprecated
- public Calendar toCalendar(TimeZone timeZone) {
- Calendar calendar = new GregorianCalendar(timeZone);
- // Java Calender stuff is between 0 and 11 for months
- //noinspection MagicConstant
- calendar.set(year, month - 1, day, 0, 0, 0);
- calendar.set(Calendar.MILLISECOND, 0);
- return calendar;
- }
public LocalDate toLocalDate() {
return LocalDate.of(year, month, day);
}