mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-22 21:55:39 +00:00
bug6140: added log output to Igtimi freestyle command dialog
This commit is contained in:
+3
@@ -28,6 +28,7 @@ import com.sap.sailing.domain.igtimiadapter.server.replication.ReplicableRiotSer
|
||||
import com.sap.sailing.domain.igtimiadapter.server.replication.RiotReplicationOperation;
|
||||
import com.sap.sailing.domain.igtimiadapter.server.riot.impl.RiotServerImpl;
|
||||
import com.sap.sailing.domain.igtimiadapter.shared.IgtimiWindReceiver;
|
||||
import com.sap.sse.common.Duration;
|
||||
import com.sap.sse.common.MultiTimeRange;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.Util;
|
||||
@@ -180,4 +181,6 @@ public interface RiotServer extends Replicable<ReplicableRiotServer, RiotReplica
|
||||
* device identified by {@code deviceSerialNumber}.
|
||||
*/
|
||||
boolean sendFreestyleCommand(String deviceSerialNumber, String command) throws IOException;
|
||||
|
||||
Iterable<String> getDeviceLogs(String serialNumber, Duration duration) throws ParseException, IOException;
|
||||
}
|
||||
|
||||
+27
@@ -14,9 +14,11 @@ import java.nio.channels.SelectionKey;
|
||||
import java.nio.channels.Selector;
|
||||
import java.nio.channels.ServerSocketChannel;
|
||||
import java.nio.channels.SocketChannel;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
@@ -573,6 +575,31 @@ public class RiotServerImpl extends AbstractReplicableWithObjectInputStream<Repl
|
||||
T getResult(IgtimiConnection connection, String deviceSerialNumber, Type[] types) throws IOException, ParseException;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<String> getDeviceLogs(String serialNumber, Duration duration) throws ParseException, IOException {
|
||||
final TimePoint endTime = TimePoint.now();
|
||||
final TimePoint startTime = endTime.minus(duration);
|
||||
final Iterable<Msg> messages;
|
||||
if (getMasterDescriptor() == null) {
|
||||
messages = domainObjectFactory.getMessages(serialNumber, MultiTimeRange.of(TimeRange.create(startTime, endTime)),
|
||||
Collections.singleton(DataCase.LOG), /* clientSessionOrNull */ null);
|
||||
} else {
|
||||
messages = getFromPrimary(serialNumber, new Type[] { Type.valueOf(DataCase.LOG.getNumber()) },
|
||||
(c, dsn, ts)->c.getMessages(startTime, endTime, Collections.singleton(dsn), ts));
|
||||
}
|
||||
final List<String> logMessages = new ArrayList<>();
|
||||
for (final Msg message : messages) {
|
||||
for (final DataMsg data : message.getData().getDataList()) {
|
||||
for (final DataPoint dataPoint : data.getDataList()) {
|
||||
if (dataPoint.hasLog()) {
|
||||
logMessages.add(dataPoint.getLog().getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return logMessages;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addWebSocketClient(RiotWebsocketHandler riotWebsocketHandler) {
|
||||
liveWebSocketConnections.add(riotWebsocketHandler);
|
||||
|
||||
Reference in New Issue
Block a user