mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-02 02:13:55 +00:00
Merge branch 'master' into updatable-chart_2
This commit is contained in:
commit
3e6adaeba8
6 files changed
+83
-7
No files matched your search
+3
@@ -42,6 +42,9 @@ public interface SwissTimingFactory {
|
||||
SailMasterConnector getOrCreateSailMasterConnector(String hostname, int port,
|
||||
RaceSpecificMessageLoader messageLoader, boolean canSendRequests) throws InterruptedException;
|
||||
|
||||
SailMasterConnector getOrCreateSailMasterLiveSimulatorConnector(String host, int port,
|
||||
RaceSpecificMessageLoader messageLoader, boolean canSendRequests) throws InterruptedException;
|
||||
|
||||
SailMasterTransceiver createSailMasterTransceiver();
|
||||
|
||||
SwissTimingConfiguration createSwissTimingConfiguration(String name, String hostname, int port, boolean canSendRequests);
|
||||
|
||||
+1
-1
@@ -299,7 +299,7 @@ public class SailMasterConnectorImpl extends SailMasterTransceiverImpl implement
|
||||
blockingQueue.offer(message);
|
||||
}
|
||||
|
||||
private void notifyListeners(SailMasterMessage message) throws ParseException {
|
||||
protected void notifyListeners(SailMasterMessage message) throws ParseException {
|
||||
switch (message.getType()) {
|
||||
case RPD:
|
||||
notifyListenersRPD(message);
|
||||
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
package com.sap.sailing.domain.swisstimingadapter.impl;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import com.sap.sailing.domain.swisstimingadapter.RaceSpecificMessageLoader;
|
||||
import com.sap.sailing.domain.swisstimingadapter.SailMasterMessage;
|
||||
|
||||
public class SailMasterLiveSimulatorConnectorImpl extends SailMasterConnectorImpl {
|
||||
private final List<SailMasterMessage> bufferedMessageList;
|
||||
|
||||
private long messageDeliveryIntervalInMs = 1000;
|
||||
|
||||
public SailMasterLiveSimulatorConnectorImpl(String host, int port, RaceSpecificMessageLoader messageLoader, boolean canSendRequests) throws InterruptedException {
|
||||
super(host, port, messageLoader, canSendRequests);
|
||||
|
||||
bufferedMessageList = Collections.synchronizedList(new ArrayList<SailMasterMessage>());
|
||||
|
||||
Thread messageDeliveryThread = new Thread(" SailMasterLiveSimulatorConnector") {
|
||||
public void run() {
|
||||
while(true) {
|
||||
try {
|
||||
if(!bufferedMessageList.isEmpty()) {
|
||||
SailMasterMessage message = bufferedMessageList.get(0);
|
||||
|
||||
notifyParentListeners(message);
|
||||
|
||||
bufferedMessageList.remove(0);
|
||||
}
|
||||
|
||||
Thread.sleep(messageDeliveryIntervalInMs);
|
||||
} catch (Exception e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
messageDeliveryThread.start();
|
||||
}
|
||||
|
||||
private void notifyParentListeners(SailMasterMessage message) throws ParseException {
|
||||
super.notifyListeners(message);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void notifyListeners(SailMasterMessage message) throws ParseException {
|
||||
// we cache all messages here and deliver them with a different speed
|
||||
bufferedMessageList.add(message);
|
||||
}
|
||||
|
||||
}
|
||||
+17
-2
@@ -1,7 +1,6 @@
|
||||
package com.sap.sailing.domain.swisstimingadapter.impl;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import java.net.UnknownHostException;
|
||||
import java.text.ParseException;
|
||||
import java.util.HashMap;
|
||||
@@ -35,7 +34,8 @@ public class SwissTimingFactoryImpl implements SwissTimingFactory {
|
||||
}
|
||||
|
||||
@Override
|
||||
public SailMasterConnector getOrCreateSailMasterConnector(String host, int port, RaceSpecificMessageLoader messageLoader, boolean canSendRequests) throws InterruptedException {
|
||||
public SailMasterConnector getOrCreateSailMasterConnector(String host, int port, RaceSpecificMessageLoader messageLoader,
|
||||
boolean canSendRequests) throws InterruptedException {
|
||||
Triple<String, Integer, RaceSpecificMessageLoader> key = new Triple<String, Integer, RaceSpecificMessageLoader>(host, port, messageLoader);
|
||||
SailMasterConnector result = connectors.get(key);
|
||||
if (result == null) {
|
||||
@@ -49,6 +49,21 @@ public class SwissTimingFactoryImpl implements SwissTimingFactory {
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SailMasterConnector getOrCreateSailMasterLiveSimulatorConnector(String host, int port, RaceSpecificMessageLoader messageLoader, boolean canSendRequests) throws InterruptedException {
|
||||
Triple<String, Integer, RaceSpecificMessageLoader> key = new Triple<String, Integer, RaceSpecificMessageLoader>(host, port, messageLoader);
|
||||
SailMasterConnector result = connectors.get(key);
|
||||
if (result == null) {
|
||||
result = new SailMasterLiveSimulatorConnectorImpl(host, port, messageLoader, canSendRequests);
|
||||
connectors.put(key, result);
|
||||
// TODO how do connectors get stopped, terminated and removed from the connectors map again?
|
||||
} else if (result.isStopped()) {
|
||||
result = new SailMasterLiveSimulatorConnectorImpl(host, port, messageLoader, canSendRequests);
|
||||
connectors.put(key, result);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SwissTimingConfiguration createSwissTimingConfiguration(String name, String hostname, int port, boolean canSendRequests) {
|
||||
return new SwissTimingConfigurationImpl(name, hostname, port, canSendRequests);
|
||||
|
||||
+9
-4
@@ -220,6 +220,11 @@ public class SwissTimingEventManagementPanel extends AbstractEventManagementPane
|
||||
|
||||
Label lblTrackSettings = new Label(stringConstants.trackSettings());
|
||||
trackPanel.add(lblTrackSettings);
|
||||
|
||||
final CheckBox simulateLiveEventCheckbox = new CheckBox("Simulate live event");
|
||||
simulateLiveEventCheckbox.setValue(false);
|
||||
simulateLiveEventCheckbox.setWordWrap(false);
|
||||
trackPanel.add(simulateLiveEventCheckbox);
|
||||
|
||||
final CheckBox trackWindCheckbox = new CheckBox(stringConstants.trackWind());
|
||||
trackWindCheckbox.setWordWrap(false);
|
||||
@@ -241,7 +246,7 @@ public class SwissTimingEventManagementPanel extends AbstractEventManagementPane
|
||||
btnTrack.addClickHandler(new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
trackSelectedRaces(trackWindCheckbox.getValue(), declinationCheckbox.getValue());
|
||||
trackSelectedRaces(simulateLiveEventCheckbox.getValue(), trackWindCheckbox.getValue(), declinationCheckbox.getValue());
|
||||
}
|
||||
});
|
||||
|
||||
@@ -337,13 +342,13 @@ public class SwissTimingEventManagementPanel extends AbstractEventManagementPane
|
||||
});
|
||||
}
|
||||
|
||||
private void trackSelectedRaces(boolean trackWind, boolean correctWindByDeclination) {
|
||||
private void trackSelectedRaces(boolean simulateLiveEvent, boolean trackWind, boolean correctWindByDeclination) {
|
||||
String hostname = hostnameTextbox.getValue();
|
||||
int port = portIntegerbox.getValue();
|
||||
for (final SwissTimingRaceRecordDTO rr : raceList.getList()) {
|
||||
if (raceTable.getSelectionModel().isSelected(rr)) {
|
||||
sailingService.trackWithSwissTiming(rr, hostname, port, /* TODO canSendRequests */false, trackWind,
|
||||
correctWindByDeclination, new AsyncCallback<Void>() {
|
||||
sailingService.trackWithSwissTiming(rr, hostname, port, /* canSendRequests */false,
|
||||
trackWind, correctWindByDeclination, new AsyncCallback<Void>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
errorReporter.reportError("Error trying to register race " + rr.ID + " for tracking: "
|
||||
|
||||
+1
@@ -143,6 +143,7 @@ public class CompareCompetitorsChartDialog extends DialogBox {
|
||||
});
|
||||
}
|
||||
parentPanel.add(raceChooserPanel);
|
||||
|
||||
}
|
||||
|
||||
private void selectRace(final RaceIdentifier selectedRace) {
|
||||
|
||||
Reference in new issue
Block a user