Merge branch 'master' into updatable-chart_2

This commit is contained in:
Lennart Hensler committed 2012-02-17 11:53:00 +01:00
commit 3e6adaeba8
6 files changed
+83 -7

No files matched your search

@@ -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);
@@ -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);
@@ -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);
}
}
@@ -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);
@@ -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: "
@@ -143,6 +143,7 @@ public class CompareCompetitorsChartDialog extends DialogBox {
});
}
parentPanel.add(raceChooserPanel);
}
private void selectRace(final RaceIdentifier selectedRace) {