diff --git a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/DomainFactoryImpl.java b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/DomainFactoryImpl.java index 4cfbede18d9..329a66b00b6 100644 --- a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/DomainFactoryImpl.java +++ b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/DomainFactoryImpl.java @@ -284,14 +284,12 @@ public class DomainFactoryImpl implements DomainFactory { synchronized (raceCache) { RaceDefinition result = raceCache.get(race); boolean interrupted = false; - synchronized (raceCache) { - while (!interrupted && result == null) { - try { - raceCache.wait(); - result = raceCache.get(race); - } catch (InterruptedException e) { - interrupted = true; - } + while (!interrupted && result == null) { + try { + raceCache.wait(); + result = raceCache.get(race); + } catch (InterruptedException e) { + interrupted = true; } } return result; diff --git a/java/com.sap.sailing.expeditionconnector/src/com/sap/sailing/expeditionconnector/ExpeditionWindTrackerFactory.java b/java/com.sap.sailing.expeditionconnector/src/com/sap/sailing/expeditionconnector/ExpeditionWindTrackerFactory.java index 9e16546c419..6a379025c49 100755 --- a/java/com.sap.sailing.expeditionconnector/src/com/sap/sailing/expeditionconnector/ExpeditionWindTrackerFactory.java +++ b/java/com.sap.sailing.expeditionconnector/src/com/sap/sailing/expeditionconnector/ExpeditionWindTrackerFactory.java @@ -52,7 +52,7 @@ public class ExpeditionWindTrackerFactory implements WindTrackerFactory, BundleA } @Override - public synchronized WindTracker createWindTracker(DynamicTrackedEvent trackedEvent, RaceDefinition race, + public WindTracker createWindTracker(DynamicTrackedEvent trackedEvent, RaceDefinition race, boolean correctByDeclination) throws SocketException { WindTracker result = windTrackers.get(race); if (result == null) { diff --git a/java/com.sap.sailing.gwt.ui/src/com/sap/sailing/gwt/ui/client/WindPanel.java b/java/com.sap.sailing.gwt.ui/src/com/sap/sailing/gwt/ui/client/WindPanel.java index b3fdae76bda..3b116a525f0 100755 --- a/java/com.sap.sailing.gwt.ui/src/com/sap/sailing/gwt/ui/client/WindPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/com/sap/sailing/gwt/ui/client/WindPanel.java @@ -1,5 +1,6 @@ package com.sap.sailing.gwt.ui.client; +import java.util.ArrayList; import java.util.Comparator; import java.util.Date; import java.util.List; @@ -12,6 +13,8 @@ import com.google.gwt.user.cellview.client.CellTable; import com.google.gwt.user.cellview.client.CellTree; import com.google.gwt.user.cellview.client.ColumnSortEvent.Handler; import com.google.gwt.user.cellview.client.ColumnSortEvent.ListHandler; +import com.google.gwt.user.cellview.client.ColumnSortList; +import com.google.gwt.user.cellview.client.ColumnSortList.ColumnSortInfo; import com.google.gwt.user.cellview.client.TextColumn; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.Button; @@ -38,12 +41,48 @@ public class WindPanel extends FormPanel implements EventDisplayer, RaceSelectio private final StringConstants stringConstants; private final WindSettingPanel windSettingPanel; private Pair selectedEventAndRace; + private ColumnSortList columnSortList; + private final TextColumn timeColumn; + private final TextColumn speedInKnotsColumn; + private final TextColumn windDirectionInDegColumn; + private final TextColumn dampenedSpeedInKnotsColumn; + private final TextColumn dampenedWindDirectionInDegColumn; public WindPanel(final SailingServiceAsync sailingService, ErrorReporter errorReporter, EventRefresher eventRefresher) { this.sailingService = sailingService; this.errorReporter = errorReporter; this.eventRefresher = eventRefresher; stringConstants = GWT.create(StringConstants.class); + timeColumn = new TextColumn() { + @Override + public String getValue(WindDAO object) { + return new Date(object.timepoint).toString(); + } + }; + speedInKnotsColumn = new TextColumn() { + @Override + public String getValue(WindDAO object) { + return ""+object.trueWindSpeedInKnots; + } + }; + windDirectionInDegColumn = new TextColumn() { + @Override + public String getValue(WindDAO object) { + return ""+object.trueWindFromDeg; + } + }; + dampenedSpeedInKnotsColumn = new TextColumn() { + @Override + public String getValue(WindDAO object) { + return ""+object.dampenedTrueWindSpeedInKnots; + } + }; + dampenedWindDirectionInDegColumn = new TextColumn() { + @Override + public String getValue(WindDAO object) { + return ""+object.dampenedTrueWindFromDeg; + } + }; grid = new Grid(2, 2); // first row: event/race selection; second row: wind display Button btnRefresh = new Button(stringConstants.refresh()); btnRefresh.addClickHandler(new ClickHandler() { @@ -127,36 +166,6 @@ public class WindPanel extends FormPanel implements EventDisplayer, RaceSelectio Label windSourceLabel = new Label("Wind Source: "+e.getKey()+ ", Dampening Interval: "+e.getValue().dampeningIntervalInMilliseconds+"ms"); windDisplay.add(windSourceLabel); - TextColumn timeColumn = new TextColumn() { - @Override - public String getValue(WindDAO object) { - return new Date(object.timepoint).toString(); - } - }; - TextColumn speedInKnotsColumn = new TextColumn() { - @Override - public String getValue(WindDAO object) { - return ""+object.trueWindSpeedInKnots; - } - }; - TextColumn windDirectionInDegColumn = new TextColumn() { - @Override - public String getValue(WindDAO object) { - return ""+object.trueWindFromDeg; - } - }; - TextColumn dampenedSpeedInKnotsColumn = new TextColumn() { - @Override - public String getValue(WindDAO object) { - return ""+object.dampenedTrueWindSpeedInKnots; - } - }; - TextColumn dampenedWindDirectionInDegColumn = new TextColumn() { - @Override - public String getValue(WindDAO object) { - return ""+object.dampenedTrueWindFromDeg; - } - }; timeColumn.setSortable(true); speedInKnotsColumn.setSortable(true); windDirectionInDegColumn.setSortable(true); @@ -173,6 +182,20 @@ public class WindPanel extends FormPanel implements EventDisplayer, RaceSelectio Handler columnSortHandler = getWindTableColumnSortHandler(windList.getList(), timeColumn, speedInKnotsColumn, windDirectionInDegColumn, dampenedSpeedInKnotsColumn, dampenedWindDirectionInDegColumn); windTable.addColumnSortHandler(columnSortHandler); + List sortedColumnList = new ArrayList(); + if (columnSortList != null) { + for (int i=0; i',gb='