Merge branch 'bug3446'

This commit is contained in:
Axel Uhl committed 2016-01-30 15:13:21 +01:00
commit 75c658cb21
27 files changed
+123 -444

No files matched your search

@@ -10,7 +10,6 @@ Export-Package: com.sap.sailing.domain.common,
com.sap.sailing.domain.common.abstractlog,
com.sap.sailing.domain.common.confidence,
com.sap.sailing.domain.common.confidence.impl,
com.sap.sailing.domain.common.configuration,
com.sap.sailing.domain.common.dto,
com.sap.sailing.domain.common.impl,
com.sap.sailing.domain.common.media,
@@ -1,16 +0,0 @@
package com.sap.sailing.domain.common.configuration;
public enum DeviceConfigurationMatcherType {
SINGLE(1), MULTI(2);
private int matchingRank;
private DeviceConfigurationMatcherType(int rank) {
this.matchingRank = rank;
}
public int getRank() {
return matchingRank;
}
}
@@ -156,7 +156,6 @@ import com.sap.sailing.domain.common.SpeedWithBearing;
import com.sap.sailing.domain.common.Wind;
import com.sap.sailing.domain.common.WindSource;
import com.sap.sailing.domain.common.WindSourceType;
import com.sap.sailing.domain.common.configuration.DeviceConfigurationMatcherType;
import com.sap.sailing.domain.common.impl.DegreeBearingImpl;
import com.sap.sailing.domain.common.impl.DegreePosition;
import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl;
@@ -1972,8 +1971,6 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory {
}
private DeviceConfigurationMatcher loadConfigurationMatcher(DBObject matcherObject) {
DeviceConfigurationMatcherType type = DeviceConfigurationMatcherType.valueOf(
matcherObject.get(FieldNames.CONFIGURATION_MATCHER_TYPE.name()).toString());
List<String> clientIdentifiers = new ArrayList<String>();
BasicDBList clientIdentifiersObject = (BasicDBList) matcherObject.get(FieldNames.CONFIGURATION_MATCHER_CLIENTS.name());
if (clientIdentifiersObject != null) {
@@ -1981,7 +1978,7 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory {
clientIdentifiers.add(clientIdentifier.toString());
}
}
return baseDomainFactory.getOrCreateDeviceConfigurationMatcher(type, clientIdentifiers);
return baseDomainFactory.getOrCreateDeviceConfigurationMatcher(clientIdentifiers);
}
private DeviceConfiguration loadConfiguration(DBObject configObject) {
@@ -120,7 +120,7 @@ public enum FieldNames {
SERVER_IS_STANDALONE,
// configurations
CONFIGURATION_MATCHER, CONFIGURATION_CONFIG, CONFIGURATION_MATCHER_ID, CONFIGURATION_MATCHER_TYPE, CONFIGURATION_MATCHER_CLIENTS,
CONFIGURATION_MATCHER, CONFIGURATION_CONFIG, CONFIGURATION_MATCHER_ID, CONFIGURATION_MATCHER_CLIENTS,
CONFIGURATION_CONFIG_ALLOWED_COURSE_AREA_NAMES, CONFIGURATION_CONFIG_MIN_ROUNDS, CONFIGURATION_CONFIG_MAX_ROUNDS, CONFIGURATION_CONFIG_RESULTS_MAIL,
CONFIGURATION_CONFIG_PROCEDURES,
@@ -75,7 +75,6 @@ import com.sap.sailing.domain.base.Waypoint;
import com.sap.sailing.domain.base.configuration.DeviceConfiguration;
import com.sap.sailing.domain.base.configuration.DeviceConfigurationMatcher;
import com.sap.sailing.domain.base.configuration.RegattaConfiguration;
import com.sap.sailing.domain.base.configuration.impl.DeviceConfigurationMatcherMulti;
import com.sap.sailing.domain.base.configuration.impl.DeviceConfigurationMatcherSingle;
import com.sap.sailing.domain.base.impl.FleetImpl;
import com.sap.sailing.domain.common.Bearing;
@@ -115,7 +114,6 @@ import com.sap.sse.common.TimeRange;
import com.sap.sse.common.Timed;
import com.sap.sse.common.TypeBasedServiceFinder;
import com.sap.sse.common.TypeBasedServiceFinderFactory;
import com.sap.sse.common.Util;
import com.sap.sse.common.impl.MillisecondsTimePoint;
import com.sap.sse.shared.media.ImageDescriptor;
import com.sap.sse.shared.media.VideoDescriptor;
@@ -1272,15 +1270,10 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory {
private DBObject createDeviceConfigurationMatcherObject(DeviceConfigurationMatcher matcher) {
DBObject matcherObject = new BasicDBObject();
matcherObject.put(FieldNames.CONFIGURATION_MATCHER_TYPE.name(), matcher.getMatcherType().name());
if (matcher instanceof DeviceConfigurationMatcherSingle) {
BasicDBList client = new BasicDBList();
client.add(((DeviceConfigurationMatcherSingle)matcher).getClientIdentifier());
matcherObject.put(FieldNames.CONFIGURATION_MATCHER_CLIENTS.name(), client);
} else if (matcher instanceof DeviceConfigurationMatcherMulti) {
BasicDBList clients = new BasicDBList();
Util.addAll(((DeviceConfigurationMatcherMulti)matcher).getClientIdentifiers(), clients);
matcherObject.put(FieldNames.CONFIGURATION_MATCHER_CLIENTS.name(), clients);
}
return matcherObject;
}
@@ -8,7 +8,6 @@ import com.sap.sailing.domain.abstractlog.race.analyzing.impl.RaceLogResolver;
import com.sap.sailing.domain.base.configuration.DeviceConfigurationMatcher;
import com.sap.sailing.domain.common.MarkType;
import com.sap.sailing.domain.common.PassingInstruction;
import com.sap.sailing.domain.common.configuration.DeviceConfigurationMatcherType;
public interface SharedDomainFactory extends CompetitorFactory {
@@ -100,7 +99,7 @@ public interface SharedDomainFactory extends CompetitorFactory {
/**
* Hm.
*/
DeviceConfigurationMatcher getOrCreateDeviceConfigurationMatcher(DeviceConfigurationMatcherType type, List<String> clientIdentifiers);
DeviceConfigurationMatcher getOrCreateDeviceConfigurationMatcher(List<String> clientIdentifiers);
Mark getExistingMarkByIdAsString(String toStringRepresentationOfID);
@@ -3,35 +3,15 @@ package com.sap.sailing.domain.base.configuration;
import java.io.Serializable;
import com.sap.sailing.domain.base.SharedDomainFactory;
import com.sap.sailing.domain.base.configuration.impl.DeviceConfigurationMapImpl;
import com.sap.sailing.domain.common.configuration.DeviceConfigurationMatcherType;
import com.sap.sse.common.IsManagedByCache;
/**
* <p>
* Classes implementing this interface are matching {@link DeviceConfigurationIdentifier}s to associate them with a
* {@link DeviceConfiguration}.
* </p>
*
* <p>The rank (see {@link DeviceConfigurationMatcher#getMatchingRank()}) is used as a priority when multiple matchers
* are matching a {@link DeviceConfigurationIdentifier} (see also {@link DeviceConfigurationMapImpl}) (lower wins).</p>
* </p>
*/
public interface DeviceConfigurationMatcher extends IsManagedByCache<SharedDomainFactory>, Serializable {
/**
* Returns the kind of matching used by this matcher.
*
* @return the {@link Type}.
*/
DeviceConfigurationMatcherType getMatcherType();
/**
* Gets the matcher's rank.
*
* @return the rank.
*/
int getMatchingRank();
/**
* Returns <code>true</code> if this {@link DeviceConfigurationMatcher} matches the given
* {@link DeviceConfigurationIdentifier}; otherwise <code>false</code>.
@@ -47,7 +47,7 @@ public class DeviceConfigurationMapImpl extends ConcurrentHashMap<DeviceConfigur
DeviceConfigurationMatcher match = null;
for (Entry<DeviceConfigurationMatcher, DeviceConfiguration> entry : entrySet()) {
if (entry.getKey().matches(key)) {
if (match == null || match.getMatchingRank() > entry.getKey().getMatchingRank()) {
if (match == null) {
match = entry.getKey();
}
}
@@ -1,62 +0,0 @@
package com.sap.sailing.domain.base.configuration.impl;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import com.sap.sailing.domain.base.SharedDomainFactory;
import com.sap.sailing.domain.base.configuration.DeviceConfigurationIdentifier;
import com.sap.sailing.domain.base.configuration.DeviceConfigurationMatcher;
import com.sap.sailing.domain.common.configuration.DeviceConfigurationMatcherType;
import com.sap.sse.common.IsManagedByCache;
/**
* Matches a set of {@link DeviceConfigurationIdentifier}s.
*/
public class DeviceConfigurationMatcherMulti implements DeviceConfigurationMatcher {
private static final long serialVersionUID = 2372299957258702516L;
private final List<String> clientIdentifiers;
public DeviceConfigurationMatcherMulti(List<String> matchingClientIdentifiers) {
this.clientIdentifiers = new ArrayList<String>(matchingClientIdentifiers);
Collections.sort(this.clientIdentifiers);
}
@Override
public DeviceConfigurationMatcherType getMatcherType() {
return DeviceConfigurationMatcherType.MULTI;
}
@Override
public int getMatchingRank() {
return getMatcherType().getRank();
}
@Override
public boolean matches(DeviceConfigurationIdentifier identifier) {
return this.clientIdentifiers.contains(identifier.getClientIdentifier());
}
public Iterable<String> getClientIdentifiers() {
return clientIdentifiers;
}
@Override
public Serializable getMatcherIdentifier() {
return String.format("%s%s", DeviceConfigurationMatcherMulti.class.getSimpleName(), clientIdentifiers.toString());
}
@Override
public String toString() {
return "DeviceConfigurationMatcherMulti [clientIdentifiers=" + clientIdentifiers + "]";
}
@Override
public IsManagedByCache<SharedDomainFactory> resolve(SharedDomainFactory domainFactory) {
return domainFactory.getOrCreateDeviceConfigurationMatcher(getMatcherType(), clientIdentifiers);
}
}
@@ -6,7 +6,6 @@ import java.util.Arrays;
import com.sap.sailing.domain.base.SharedDomainFactory;
import com.sap.sailing.domain.base.configuration.DeviceConfigurationIdentifier;
import com.sap.sailing.domain.base.configuration.DeviceConfigurationMatcher;
import com.sap.sailing.domain.common.configuration.DeviceConfigurationMatcherType;
import com.sap.sse.common.IsManagedByCache;
/**
@@ -26,16 +25,6 @@ public class DeviceConfigurationMatcherSingle implements DeviceConfigurationMatc
return this.clientIdentifier.equals(identifier.getClientIdentifier());
}
@Override
public DeviceConfigurationMatcherType getMatcherType() {
return DeviceConfigurationMatcherType.SINGLE;
}
@Override
public int getMatchingRank() {
return getMatcherType().getRank();
}
public String getClientIdentifier() {
return clientIdentifier;
}
@@ -52,7 +41,7 @@ public class DeviceConfigurationMatcherSingle implements DeviceConfigurationMatc
@Override
public IsManagedByCache<SharedDomainFactory> resolve(SharedDomainFactory domainFactory) {
return domainFactory.getOrCreateDeviceConfigurationMatcher(getMatcherType(), Arrays.asList(clientIdentifier));
return domainFactory.getOrCreateDeviceConfigurationMatcher(Arrays.asList(clientIdentifier));
}
}
@@ -27,12 +27,10 @@ import com.sap.sailing.domain.base.Nationality;
import com.sap.sailing.domain.base.SharedDomainFactory;
import com.sap.sailing.domain.base.Waypoint;
import com.sap.sailing.domain.base.configuration.DeviceConfigurationMatcher;
import com.sap.sailing.domain.base.configuration.impl.DeviceConfigurationMatcherMulti;
import com.sap.sailing.domain.base.configuration.impl.DeviceConfigurationMatcherSingle;
import com.sap.sailing.domain.common.BoatClassMasterdata;
import com.sap.sailing.domain.common.MarkType;
import com.sap.sailing.domain.common.PassingInstruction;
import com.sap.sailing.domain.common.configuration.DeviceConfigurationMatcherType;
import com.sap.sse.common.Color;
import com.sap.sse.common.Duration;
import com.sap.sse.common.WithID;
@@ -350,9 +348,8 @@ public class SharedDomainFactoryImpl implements SharedDomainFactory {
}
@Override
public DeviceConfigurationMatcher getOrCreateDeviceConfigurationMatcher(DeviceConfigurationMatcherType type,
List<String> clientIdentifiers) {
DeviceConfigurationMatcher probe = createMatcher(type, clientIdentifiers);
public DeviceConfigurationMatcher getOrCreateDeviceConfigurationMatcher(List<String> clientIdentifiers) {
DeviceConfigurationMatcher probe = createMatcher(clientIdentifiers);
DeviceConfigurationMatcher matcher = configurationMatcherCache.get(probe.getMatcherIdentifier());
if (matcher == null) {
configurationMatcherCache.put(probe.getMatcherIdentifier(), probe);
@@ -361,19 +358,8 @@ public class SharedDomainFactoryImpl implements SharedDomainFactory {
return matcher;
}
private DeviceConfigurationMatcher createMatcher(DeviceConfigurationMatcherType type, List<String> clientIdentifiers) {
DeviceConfigurationMatcher matcher = null;
switch (type) {
case SINGLE:
matcher = new DeviceConfigurationMatcherSingle(clientIdentifiers.get(0));
break;
case MULTI:
matcher = new DeviceConfigurationMatcherMulti(clientIdentifiers);
break;
default:
throw new IllegalArgumentException("Unknown matcher type: " + type);
}
return matcher;
private DeviceConfigurationMatcher createMatcher(List<String> clientIdentifiers) {
return new DeviceConfigurationMatcherSingle(clientIdentifiers.get(0));
}
@Override
@@ -1,178 +0,0 @@
package com.sap.sailing.gwt.ui.adminconsole;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.PushButton;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.domain.common.configuration.DeviceConfigurationMatcherType;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.DeviceConfigurationMatcherDTO;
import com.sap.sse.gwt.client.IconResources;
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
public class DeviceConfigurationCreateMatcherDialog extends DataEntryDialog<DeviceConfigurationMatcherDTO> {
public static class MatcherValidator implements Validator<DeviceConfigurationMatcherDTO> {
private List<DeviceConfigurationMatcherDTO> allMatchers;
public MatcherValidator(List<DeviceConfigurationMatcherDTO> allMatchers) {
this.allMatchers = allMatchers;
}
@Override
public String getErrorMessage(DeviceConfigurationMatcherDTO valueToValidate) {
for (DeviceConfigurationMatcherDTO existingMatcher : allMatchers) {
if (existingMatcher.type.equals(valueToValidate.type)) {
switch (valueToValidate.type) {
case SINGLE:
if (existingMatcher.clients.containsAll(valueToValidate.clients)) {
return "There is already a configuration for such a matcher.";
}
break;
case MULTI:
if (existingMatcher.clients.containsAll(valueToValidate.clients) &&
valueToValidate.clients.containsAll(existingMatcher.clients)) {
return "There is already a configuration for such a matcher.";
}
break;
default:
break;
}
}
}
for (String identifier : valueToValidate.clients) {
if (identifier.isEmpty()) {
return "Enter an identifier name";
}
}
return null;
}
}
private ListBox typeBox;
private List<TextBox> devicesBoxes;
public DeviceConfigurationCreateMatcherDialog(StringMessages stringMessages,
Validator<DeviceConfigurationMatcherDTO> validator,
com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback<DeviceConfigurationMatcherDTO> callback) {
super("Create Device Configuration", "Specify for which devices the new configuration should apply",
"Create", stringMessages.cancel(), validator, callback);
this.devicesBoxes = new ArrayList<TextBox>();
}
@Override
protected Widget getAdditionalWidget() {
final Grid valueGrid = new Grid(2, 2);
valueGrid.setWidget(0, 0, createLabel("Matcher type"));
typeBox = createListBox(false);
typeBox.addItem(DeviceConfigurationMatcherType.SINGLE.name());
typeBox.addItem(DeviceConfigurationMatcherType.MULTI.name());
valueGrid.setWidget(0, 1, typeBox);
valueGrid.setWidget(1, 0, createLabel("Matching devices"));
final Grid devicesGrid = new Grid(2, 2);
TextBox firstDeviceBox = createTextBox("");
devicesGrid.setWidget(0, 0, firstDeviceBox);
devicesBoxes.add(firstDeviceBox);
final Button addDeviceButton = new Button("Add Device");
addDeviceButton.setVisible(false);
addDeviceButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
devicesGrid.insertRow(0);
TextBox deviceBox = createTextBox("");
devicesBoxes.add(deviceBox);
devicesGrid.setWidget(0, 0, deviceBox);
devicesGrid.setWidget(0, 1, createRemoveButton(devicesGrid));
}
});
devicesGrid.setWidget(1, 0, addDeviceButton);
valueGrid.setWidget(1, 1, devicesGrid);
typeBox.addChangeHandler(new ChangeHandler() {
@Override
public void onChange(ChangeEvent event) {
DeviceConfigurationMatcherType type = DeviceConfigurationMatcherType.valueOf(typeBox.getValue(typeBox.getSelectedIndex()));
switch (type) {
case SINGLE:
valueGrid.getWidget(1, 0).setVisible(true);
valueGrid.getWidget(1, 1).setVisible(true);
devicesGrid.getWidget(0, 0).setVisible(true);
devicesGrid.getWidget(1, 0).setVisible(false);
for (int i = 0; i < devicesGrid.getRowCount() - 2; i++) {
devicesGrid.getWidget(i, 0).setVisible(false);
devicesGrid.getWidget(i, 1).setVisible(false);
}
break;
case MULTI:
valueGrid.getWidget(1, 0).setVisible(true);
valueGrid.getWidget(1, 1).setVisible(true);
devicesGrid.getWidget(0, 0).setVisible(true);
devicesGrid.getWidget(1, 0).setVisible(true);
for (int i = 0; i < devicesGrid.getRowCount() - 2; i++) {
devicesGrid.getWidget(i, 0).setVisible(true);
devicesGrid.getWidget(i, 1).setVisible(true);
}
break;
default:
valueGrid.getWidget(1, 0).setVisible(false);
valueGrid.getWidget(1, 1).setVisible(false);
break;
}
}
});
return valueGrid;
}
@Override
protected DeviceConfigurationMatcherDTO getResult() {
DeviceConfigurationMatcherDTO dto = new DeviceConfigurationMatcherDTO();
dto.type = DeviceConfigurationMatcherType.valueOf(typeBox.getValue(typeBox.getSelectedIndex()));
switch (dto.type) {
case SINGLE:
dto.clients = Arrays.asList(devicesBoxes.get(0).getText());
break;
case MULTI:
dto.clients = new ArrayList<String>();
for (TextBox textBox : devicesBoxes) {
dto.clients.add(textBox.getText());
}
break;
default:
dto.clients = Collections.emptyList();
break;
}
return dto;
}
private PushButton createRemoveButton(final Grid devicesGrid) {
PushButton removeButton = new PushButton(new Image(IconResources.INSTANCE.removeIcon()));
removeButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
int rowToBeRemoved = devicesGrid.getCellForEvent(event).getRowIndex();
devicesBoxes.remove(devicesGrid.getWidget(rowToBeRemoved, 0));
devicesGrid.removeRow(rowToBeRemoved);
}
});
return removeButton;
}
}
@@ -1,24 +1,51 @@
package com.sap.sailing.gwt.ui.adminconsole;
import java.util.Arrays;
import java.util.List;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.domain.common.configuration.DeviceConfigurationMatcherType;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.DeviceConfigurationMatcherDTO;
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
public class DeviceConfigurationCreateSingleMatcherDialog extends DataEntryDialog<DeviceConfigurationMatcherDTO> {
public static class MatcherValidator implements Validator<DeviceConfigurationMatcherDTO> {
private List<DeviceConfigurationMatcherDTO> allMatchers;
private final StringMessages stringMessages;
public MatcherValidator(List<DeviceConfigurationMatcherDTO> allMatchers, StringMessages stringMessages) {
this.allMatchers = allMatchers;
this.stringMessages = stringMessages;
}
@Override
public String getErrorMessage(DeviceConfigurationMatcherDTO valueToValidate) {
for (DeviceConfigurationMatcherDTO existingMatcher : allMatchers) {
if (existingMatcher.clients.containsAll(valueToValidate.clients)) {
return stringMessages.thereIsAlreadyAConfigurationForThisDevice();
}
}
for (String identifier : valueToValidate.clients) {
if (identifier.isEmpty()) {
return stringMessages.enterDeviceIdentifierName();
}
}
return null;
}
}
private TextBox identifierBox;
public DeviceConfigurationCreateSingleMatcherDialog(StringMessages stringMessages,
Validator<DeviceConfigurationMatcherDTO> validator,
com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback<DeviceConfigurationMatcherDTO> callback) {
super("Create Device Configuration", "Specify for which device the new configuration should apply",
"Create", stringMessages.cancel(), validator, callback);
super(stringMessages.createDeviceConfiguration(), stringMessages.forWhichDeviceShouldConfigurationApply(),
stringMessages.create(), stringMessages.cancel(), validator, callback);
this.identifierBox = createTextBox("");
}
@@ -30,10 +57,16 @@ public class DeviceConfigurationCreateSingleMatcherDialog extends DataEntryDialo
return grid;
}
@Override
public void show() {
super.show();
identifierBox.setFocus(true);
}
@Override
protected DeviceConfigurationMatcherDTO getResult() {
DeviceConfigurationMatcherDTO matcher = new DeviceConfigurationMatcherDTO();
matcher.type = DeviceConfigurationMatcherType.SINGLE;
matcher.clients = Arrays.asList(identifierBox.getValue());
return matcher;
}
@@ -30,6 +30,7 @@ import com.sap.sailing.gwt.ui.shared.DeviceConfigurationDTO.RegattaConfiguration
import com.sap.sailing.gwt.ui.shared.DeviceConfigurationMatcherDTO;
import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.IconResources;
import com.sap.sse.gwt.client.async.MarkedAsyncCallback;
import com.sap.sse.gwt.client.controls.listedit.ListEditorComposite;
import com.sap.sse.gwt.client.controls.listedit.StringListEditorComposite;
import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback;
@@ -64,19 +65,15 @@ public class DeviceConfigurationDetailComposite extends Composite {
private CheckBox overwriteRegattaConfigurationBox;
private RegattaConfigurationDTO currentRegattaConfiguration;
public DeviceConfigurationDetailComposite(final SailingServiceAsync sailingService, final ErrorReporter errorReporter, final StringMessages stringMessages,
final DeviceConfigurationCloneListener listener) {
this.sailingService = sailingService;
this.errorReporter = errorReporter;
this.stringMessages = stringMessages;
this.cloneListener = listener;
this.matcher = null;
this.originalConfiguration = null;
this.currentRegattaConfiguration = null;
captionPanel = new CaptionPanel(stringMessages.configuration());
VerticalPanel verticalPanel = new VerticalPanel();
contentPanel = new VerticalPanel();
@@ -96,14 +93,11 @@ public class DeviceConfigurationDetailComposite extends Composite {
}
});
verticalPanel.add(contentPanel);
verticalPanel.add(new HTML("<hr style=\"width:100%;\" />"));
HorizontalPanel actionPanel = new HorizontalPanel();
actionPanel.add(cloneButton);
actionPanel.add(updateButton);
verticalPanel.add(actionPanel);
captionPanel.add(verticalPanel);
initWidget(captionPanel);
}
@@ -285,7 +279,7 @@ public class DeviceConfigurationDetailComposite extends Composite {
}
DeviceConfigurationDTO dto = getResult();
sailingService.createOrUpdateDeviceConfiguration(matcher, dto,
new AsyncCallback<DeviceConfigurationMatcherDTO>() {
new MarkedAsyncCallback<>(new AsyncCallback<DeviceConfigurationMatcherDTO>() {
@Override
public void onSuccess(DeviceConfigurationMatcherDTO matcher) {
markAsDirty(false);
@@ -295,7 +289,7 @@ public class DeviceConfigurationDetailComposite extends Composite {
public void onFailure(Throwable caught) {
errorReporter.reportError(caught.getMessage());
}
});
}));
}
private KeyUpHandler dirtyMarker = new KeyUpHandler() {
@@ -1,13 +1,10 @@
package com.sap.sailing.gwt.ui.adminconsole;
import java.util.Comparator;
import java.util.List;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.cellview.client.CellTable;
import com.google.gwt.user.cellview.client.ColumnSortEvent;
import com.google.gwt.user.cellview.client.ColumnSortEvent.ListHandler;
import com.google.gwt.user.cellview.client.TextColumn;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Label;
@@ -22,7 +19,7 @@ import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.celltable.EntityIdentityComparator;
import com.sap.sse.gwt.client.celltable.RefreshableMultiSelectionModel;
public class DeviceConfigurationListComposite extends Composite {
public abstract class DeviceConfigurationListComposite extends Composite {
protected static AdminConsoleTableResources tableResource = GWT.create(AdminConsoleTableResources.class);
@@ -61,12 +58,12 @@ public class DeviceConfigurationListComposite extends Composite {
refreshableConfigurationSelectionModel = new RefreshableMultiSelectionModel<>(new EntityIdentityComparator<DeviceConfigurationMatcherDTO>() {
@Override
public boolean representSameEntity(DeviceConfigurationMatcherDTO dto1, DeviceConfigurationMatcherDTO dto2) {
return Util.equalsWithNull(dto1.type.name(), dto2.type.name());
return Util.equalsWithNull(dto1.clients, dto2.clients);
}
@Override
public int hashCode(DeviceConfigurationMatcherDTO t) {
return t.type.name() == null ? 0 : t.type.name().hashCode();
return t.clients == null ? 0 : t.clients.hashCode();
}
}, configurationsDataProvider);
configurationTable.setSelectionModel(refreshableConfigurationSelectionModel);
@@ -102,50 +99,7 @@ public class DeviceConfigurationListComposite extends Composite {
});
}
protected CellTable<DeviceConfigurationMatcherDTO> createConfigurationTable() {
CellTable<DeviceConfigurationMatcherDTO> table = new CellTable<DeviceConfigurationMatcherDTO>(
/* pageSize */10000, tableResource);
configurationsDataProvider.addDataDisplay(table);
table.setWidth("100%");
ListHandler<DeviceConfigurationMatcherDTO> columnSortHandler =
new ListHandler<DeviceConfigurationMatcherDTO>(configurationsDataProvider.getList());
table.addColumnSortHandler(columnSortHandler);
TextColumn<DeviceConfigurationMatcherDTO> identifierTypeColumn =
new TextColumn<DeviceConfigurationMatcherDTO>() {
@Override
public String getValue(DeviceConfigurationMatcherDTO identifier) {
return identifier.type.name();
}
};
identifierTypeColumn.setSortable(true);
columnSortHandler.setComparator(identifierTypeColumn, new Comparator<DeviceConfigurationMatcherDTO>() {
@Override
public int compare(DeviceConfigurationMatcherDTO r1, DeviceConfigurationMatcherDTO r2) {
return new Integer(r1.rank).compareTo(r2.rank);
}
});
TextColumn<DeviceConfigurationMatcherDTO> identifierNameColumn =
new TextColumn<DeviceConfigurationMatcherDTO>() {
@Override
public String getValue(DeviceConfigurationMatcherDTO identifier) {
return DeviceConfigurationPanel.renderIdentifiers(identifier.clients, stringMessages);
}
};
identifierNameColumn.setSortable(true);
columnSortHandler.setComparator(identifierNameColumn, new Comparator<DeviceConfigurationMatcherDTO>() {
@Override
public int compare(DeviceConfigurationMatcherDTO r1, DeviceConfigurationMatcherDTO r2) {
return r1.toString().compareTo(r2.toString());
}
});
table.addColumn(identifierTypeColumn, stringMessages.matcher());
table.addColumn(identifierNameColumn, stringMessages.device());
return table;
}
abstract protected CellTable<DeviceConfigurationMatcherDTO> createConfigurationTable();
public RefreshableMultiSelectionModel<DeviceConfigurationMatcherDTO> getSelectionModel() {
return refreshableConfigurationSelectionModel;
@@ -21,12 +21,13 @@ import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.DeviceConfigurationDTO;
import com.sap.sailing.gwt.ui.shared.DeviceConfigurationMatcherDTO;
import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.async.MarkedAsyncCallback;
import com.sap.sse.gwt.client.celltable.RefreshableMultiSelectionModel;
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback;
import com.sap.sse.gwt.client.dialog.DataEntryDialog.Validator;
public class DeviceConfigurationPanel extends SimplePanel implements DeviceConfigurationCloneListener {
public abstract class DeviceConfigurationPanel extends SimplePanel implements DeviceConfigurationCloneListener {
public static String renderIdentifiers(List<String> clientIdentifiers, StringMessages stringMessages) {
if (clientIdentifiers.size() == 1) {
@@ -136,7 +137,7 @@ public class DeviceConfigurationPanel extends SimplePanel implements DeviceConfi
}
private void createConfiguration(final DeviceConfigurationDTO configuration) {
sailingService.getDeviceConfigurationMatchers(new AsyncCallback<List<DeviceConfigurationMatcherDTO>>() {
sailingService.getDeviceConfigurationMatchers(new MarkedAsyncCallback<>(new AsyncCallback<List<DeviceConfigurationMatcherDTO>>() {
@Override
public void onSuccess(List<DeviceConfigurationMatcherDTO> allMatchers) {
createConfiguration(allMatchers, configuration);
@@ -146,17 +147,17 @@ public class DeviceConfigurationPanel extends SimplePanel implements DeviceConfi
public void onFailure(Throwable caught) {
errorReporter.reportError(caught.getMessage());
}
});
}));
}
private void createConfiguration(final List<DeviceConfigurationMatcherDTO> allMatchers, final DeviceConfigurationDTO configuration) {
getCreateDialog(stringMessages,
new DeviceConfigurationCreateMatcherDialog.MatcherValidator(allMatchers),
new DeviceConfigurationCreateSingleMatcherDialog.MatcherValidator(allMatchers, stringMessages),
new DialogCallback<DeviceConfigurationMatcherDTO>() {
@Override
public void ok(DeviceConfigurationMatcherDTO createdMatcher) {
sailingService.createOrUpdateDeviceConfiguration(createdMatcher, configuration,
new AsyncCallback<DeviceConfigurationMatcherDTO>() {
new MarkedAsyncCallback<>(new AsyncCallback<DeviceConfigurationMatcherDTO>() {
@Override
public void onSuccess(DeviceConfigurationMatcherDTO newMatcher) {
listComposite.refreshTable();
@@ -168,7 +169,7 @@ public class DeviceConfigurationPanel extends SimplePanel implements DeviceConfi
public void onFailure(Throwable caught) {
errorReporter.reportError(caught.getMessage());
}
});
}));
}
@Override
@@ -176,27 +177,21 @@ public class DeviceConfigurationPanel extends SimplePanel implements DeviceConfi
}).show();
}
protected DataEntryDialog<DeviceConfigurationMatcherDTO> getCreateDialog(final StringMessages stringMessages,
abstract protected DataEntryDialog<DeviceConfigurationMatcherDTO> getCreateDialog(final StringMessages stringMessages,
final Validator<DeviceConfigurationMatcherDTO> validator,
final DialogCallback<DeviceConfigurationMatcherDTO> callback) {
return new DeviceConfigurationCreateMatcherDialog(stringMessages, validator, callback);
}
final DialogCallback<DeviceConfigurationMatcherDTO> callback);
protected DeviceConfigurationListComposite createListComposite(SailingServiceAsync sailingService,
ErrorReporter errorReporter, StringMessages stringMessages) {
return new DeviceConfigurationListComposite(sailingService, errorReporter, stringMessages);
}
abstract protected DeviceConfigurationListComposite createListComposite(SailingServiceAsync sailingService,
ErrorReporter errorReporter, StringMessages stringMessages);
protected DeviceConfigurationDetailComposite createDetailComposite(SailingServiceAsync sailingService,
ErrorReporter errorReporter, StringMessages stringMessages, DeviceConfigurationCloneListener cloneListener) {
return new DeviceConfigurationDetailComposite(sailingService, errorReporter, stringMessages, cloneListener);
}
abstract protected DeviceConfigurationDetailComposite createDetailComposite(SailingServiceAsync sailingService,
ErrorReporter errorReporter, StringMessages stringMessages, DeviceConfigurationCloneListener cloneListener);
private void removeConfiguration() {
detailComposite.setConfiguration(null);
detailComposite.setVisible(false);
for (DeviceConfigurationMatcherDTO identifier : refreshableMultiSelectionModel.getSelectedSet()) {
sailingService.removeDeviceConfiguration(identifier.type, identifier.clients, new AsyncCallback<Boolean>() {
sailingService.removeDeviceConfiguration(identifier.clients, new AsyncCallback<Boolean>() {
@Override
public void onSuccess(Boolean result) {
listComposite.refreshTable();
@@ -29,7 +29,6 @@ import com.sap.sailing.domain.common.ScoringSchemeType;
import com.sap.sailing.domain.common.UnableToCloseDeviceMappingException;
import com.sap.sailing.domain.common.WindSource;
import com.sap.sailing.domain.common.abstractlog.NotRevokableException;
import com.sap.sailing.domain.common.configuration.DeviceConfigurationMatcherType;
import com.sap.sailing.domain.common.dto.BoatDTO;
import com.sap.sailing.domain.common.dto.CompetitorDTO;
import com.sap.sailing.domain.common.dto.FleetDTO;
@@ -436,7 +435,7 @@ public interface SailingService extends RemoteService, FileStorageManagementGwtS
DeviceConfigurationMatcherDTO createOrUpdateDeviceConfiguration(DeviceConfigurationMatcherDTO matcherDTO, DeviceConfigurationDTO configurationDTO);
boolean removeDeviceConfiguration(DeviceConfigurationMatcherType type, List<String> clientIds);
boolean removeDeviceConfiguration(List<String> clientIds);
boolean setStartTimeAndProcedure(RaceLogSetStartTimeAndProcedureDTO dto);
@@ -24,7 +24,6 @@ import com.sap.sailing.domain.common.RegattaIdentifier;
import com.sap.sailing.domain.common.RegattaNameAndRaceName;
import com.sap.sailing.domain.common.ScoringSchemeType;
import com.sap.sailing.domain.common.WindSource;
import com.sap.sailing.domain.common.configuration.DeviceConfigurationMatcherType;
import com.sap.sailing.domain.common.dto.BoatDTO;
import com.sap.sailing.domain.common.dto.CompetitorDTO;
import com.sap.sailing.domain.common.dto.FleetDTO;
@@ -583,8 +582,7 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan
void createOrUpdateDeviceConfiguration(DeviceConfigurationMatcherDTO matcherDTO,
DeviceConfigurationDTO configurationDTO, AsyncCallback<DeviceConfigurationMatcherDTO> callback);
void removeDeviceConfiguration(DeviceConfigurationMatcherType type, List<String> clientIds,
AsyncCallback<Boolean> asyncCallback);
void removeDeviceConfiguration(List<String> clientIds, AsyncCallback<Boolean> asyncCallback);
/**
* Sets the a new start time.
@@ -1466,4 +1466,12 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, c
String confirmLosingCompetitorEditsWhenTogglingLogBasedView();
String removalOfMarkDisabledMayBeUsedInRaces(String raceNames);
String pleaseCreateAtLeastOneMappingBy();
String matcherType();
String matchingDevices();
String addDevice();
String createDeviceConfiguration();
String forWhichDeviceShouldConfigurationApply();
String create();
String thereIsAlreadyAConfigurationForThisDevice();
String enterDeviceIdentifierName();
}
@@ -1432,4 +1432,12 @@ bufferLineStrokeWeight=Buffer line stroke weight
showOnlyCompetitorsOfLog=Show only competitors registered in Log
confirmLosingCompetitorEditsWhenTogglingLogBasedView=This will reset your current, unsaved changes to the competitors.\nDo you really want to continue?
removalOfMarkDisabledMayBeUsedInRaces=Removal deavticated, marks are used in races {0}
pleaseCreateAtLeastOneMappingBy=Plase create at list one mapping by first selecting a track on the left hand side and then selecting a mark or competitor on the right hand side
pleaseCreateAtLeastOneMappingBy=Plase create at list one mapping by first selecting a track on the left hand side and then selecting a mark or competitor on the right hand side
matcherType=Matcher type
matchingDevices=Matching devices
addDevice=Add Device
createDeviceConfiguration=Create Device Configuration
forWhichDeviceShouldConfigurationApply=Specify for which device the new configuration should apply
create=Create
thereIsAlreadyAConfigurationForThisDevice=There is already a configuration for this device.
enterDeviceIdentifierName=Enter an identifier name
@@ -1423,4 +1423,12 @@ scoringSchemeHighPointFirstGetsTwelveOrEight=High-Point System 12 Punkte
scoringSchemeHighPointFirstGetsTwelveOrEightDescription=Scores als Punkte. Der Gewinner bekommt 12 Punkte.
scoringSchemeHighPointEssOverall12=High Point System ESS Gesamtwertung (12)
scoringSchemeHighPointEssOverall12Description=High Point System, der Gewinner eines Acts erhält 12 Punkte, der Zweite 11 und so weiter.
pleaseCreateAtLeastOneMappingBy=Bitte erstellen Sie mindestens eine Zuordnung, indem Sie zunächst einen Track auf der linken Seite und anschließend einen Teilnehmer oder eine Tonne auf der rechten Seite auswählen
pleaseCreateAtLeastOneMappingBy=Bitte erstellen Sie mindestens eine Zuordnung, indem Sie zunächst einen Track auf der linken Seite und anschließend einen Teilnehmer oder eine Tonne auf der rechten Seite auswählen
matcherType=Matcher-Typ
matchingDevices=Passende Geräte
addDevice=Gerät hinzufügen
createDeviceConfiguration=Gerätekonfiguration anlegen
forWhichDeviceShouldConfigurationApply=Für welches Gerät soll die neue Konfiguration gelten?
create=Anlegen
thereIsAlreadyAConfigurationForThisDevice=Es gibt bereits eine Konfiguration für dieses Gerät.
enterDeviceIdentifierName=Geräteidentifikator eingeben
@@ -1354,4 +1354,12 @@ scoringSchemeHighPointFirstGetsTwelveOrEight=High Point, winner gets 12 points (
scoringSchemeHighPointFirstGetsTwelveOrEightDescription=Score in points. Winner scores 12 points, 2nd - 11 points, .... A tie is broken in favour of the competitor having won most races, if tie remains then tie is broken by the rank in the last race scored.
scoringSchemeHighPointEssOverall12=High Point System ESS Overall (12)
scoringSchemeHighPointEssOverall12Description=Score in points. Winner of an act scores 12 points, 2nd - 11 points, .... Any tie in the overall Extreme Sailing Series is broken in favour of the competitor with the most Act wins. If that does not break the tie, the result in the last Act will be used.
pleaseCreateAtLeastOneMappingBy=Plase create at list one mapping by first selecting a track on the left hand side and then selecting a mark or competitor on the right hand side
pleaseCreateAtLeastOneMappingBy=Plase create at list one mapping by first selecting a track on the left hand side and then selecting a mark or competitor on the right hand side
matcherType=Matcher type
matchingDevices=Matching devices
addDevice=Add Device
createDeviceConfiguration=Create Device Configuration
forWhichDeviceShouldConfigurationApply=Specify for which device the new configuration should apply
create=Create
thereIsAlreadyAConfigurationForThisDevice=There is already a configuration for this device.
enterDeviceIdentifierName=Enter an identifier name
@@ -1369,4 +1369,12 @@ scoringSchemeHighPointFirstGetsTwelveOrEight=High Point, winner gets 12 points (
scoringSchemeHighPointFirstGetsTwelveOrEightDescription=Score in points. Winner scores 12 points, 2nd - 11 points, .... A tie is broken in favour of the competitor having won most races, if tie remains then tie is broken by the rank in the last race scored.
scoringSchemeHighPointEssOverall12=High Point System ESS Overall (12)
scoringSchemeHighPointEssOverall12Description=Score in points. Winner of an act scores 12 points, 2nd - 11 points, .... Any tie in the overall Extreme Sailing Series is broken in favour of the competitor with the most Act wins. If that does not break the tie, the result in the last Act will be used.
pleaseCreateAtLeastOneMappingBy=Plase create at list one mapping by first selecting a track on the left hand side and then selecting a mark or competitor on the right hand side
pleaseCreateAtLeastOneMappingBy=Plase create at list one mapping by first selecting a track on the left hand side and then selecting a mark or competitor on the right hand side
matcherType=Matcher type
matchingDevices=Matching devices
addDevice=Add Device
createDeviceConfiguration=Create Device Configuration
forWhichDeviceShouldConfigurationApply=Specify for which device the new configuration should apply
create=Create
thereIsAlreadyAConfigurationForThisDevice=There is already a configuration for this device.
enterDeviceIdentifierName=Enter an identifier name
@@ -122,7 +122,6 @@ import com.sap.sailing.domain.base.configuration.DeviceConfiguration;
import com.sap.sailing.domain.base.configuration.DeviceConfigurationMatcher;
import com.sap.sailing.domain.base.configuration.RegattaConfiguration;
import com.sap.sailing.domain.base.configuration.impl.DeviceConfigurationImpl;
import com.sap.sailing.domain.base.configuration.impl.DeviceConfigurationMatcherMulti;
import com.sap.sailing.domain.base.configuration.impl.DeviceConfigurationMatcherSingle;
import com.sap.sailing.domain.base.configuration.impl.ESSConfigurationImpl;
import com.sap.sailing.domain.base.configuration.impl.GateStartConfigurationImpl;
@@ -178,7 +177,6 @@ import com.sap.sailing.domain.common.Wind;
import com.sap.sailing.domain.common.WindSource;
import com.sap.sailing.domain.common.WindSourceType;
import com.sap.sailing.domain.common.abstractlog.NotRevokableException;
import com.sap.sailing.domain.common.configuration.DeviceConfigurationMatcherType;
import com.sap.sailing.domain.common.dto.BoatClassDTO;
import com.sap.sailing.domain.common.dto.BoatDTO;
import com.sap.sailing.domain.common.dto.CompetitorDTO;
@@ -4708,7 +4706,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
@Override
public DeviceConfigurationDTO getDeviceConfiguration(DeviceConfigurationMatcherDTO matcherDto) {
DeviceConfigurationMatcher matcher = convertToDeviceConfigurationMatcher(matcherDto.type, matcherDto.clients);
DeviceConfigurationMatcher matcher = convertToDeviceConfigurationMatcher(matcherDto.clients);
DeviceConfiguration configuration = getService().getAllDeviceConfigurations().get(matcher);
if (configuration == null) {
return null;
@@ -4719,37 +4717,31 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
@Override
public DeviceConfigurationMatcherDTO createOrUpdateDeviceConfiguration(DeviceConfigurationMatcherDTO matcherDTO, DeviceConfigurationDTO configurationDTO) {
DeviceConfigurationMatcher matcher = convertToDeviceConfigurationMatcher(matcherDTO.type, matcherDTO.clients);
DeviceConfigurationMatcher matcher = convertToDeviceConfigurationMatcher(matcherDTO.clients);
DeviceConfiguration configuration = convertToDeviceConfiguration(configurationDTO);
getService().createOrUpdateDeviceConfiguration(matcher, configuration);
return convertToDeviceConfigurationMatcherDTO(matcher);
}
@Override
public boolean removeDeviceConfiguration(DeviceConfigurationMatcherType type, List<String> clientIds) {
DeviceConfigurationMatcher matcher = convertToDeviceConfigurationMatcher(type, clientIds);
public boolean removeDeviceConfiguration(List<String> clientIds) {
DeviceConfigurationMatcher matcher = convertToDeviceConfigurationMatcher(clientIds);
getService().removeDeviceConfiguration(matcher);
return true;
}
private DeviceConfigurationMatcherDTO convertToDeviceConfigurationMatcherDTO(DeviceConfigurationMatcher matcher) {
List<String> clients = new ArrayList<String>();
if (matcher instanceof DeviceConfigurationMatcherSingle) {
clients.add(((DeviceConfigurationMatcherSingle)matcher).getClientIdentifier());
} else if (matcher instanceof DeviceConfigurationMatcherMulti) {
Util.addAll(((DeviceConfigurationMatcherMulti)matcher).getClientIdentifiers(), clients);
}
DeviceConfigurationMatcherDTO dto = new DeviceConfigurationMatcherDTO(
matcher.getMatcherType(),
clients,
matcher.getMatchingRank());
clients);
return dto;
}
private DeviceConfigurationMatcher convertToDeviceConfigurationMatcher(DeviceConfigurationMatcherType type, List<String> clientIds) {
return baseDomainFactory.getOrCreateDeviceConfigurationMatcher(type, clientIds);
private DeviceConfigurationMatcher convertToDeviceConfigurationMatcher(List<String> clientIds) {
return baseDomainFactory.getOrCreateDeviceConfigurationMatcher(clientIds);
}
private DeviceConfigurationDTO convertToDeviceConfigurationDTO(DeviceConfiguration configuration) {
@@ -3,22 +3,15 @@ package com.sap.sailing.gwt.ui.shared;
import java.util.List;
import com.google.gwt.user.client.rpc.IsSerializable;
import com.sap.sailing.domain.common.configuration.DeviceConfigurationMatcherType;
public class DeviceConfigurationMatcherDTO implements IsSerializable {
public List<String> clients;
public DeviceConfigurationMatcherType type;
public int rank;
public DeviceConfigurationMatcherDTO() {
}
public DeviceConfigurationMatcherDTO(DeviceConfigurationMatcherType type, List<String> clients, int rank) {
public DeviceConfigurationMatcherDTO(List<String> clients) {
this.clients = clients;
this.type = type;
this.rank = rank;
}
}
@@ -44,7 +44,6 @@ public class StoreAndLoadDeviceConfigurationsTest extends AbstractMongoDBTest {
assertEquals(1, Util.size(configurations));
Entry<DeviceConfigurationMatcher, DeviceConfiguration> entry = configurations.iterator().next();
assertEquals(matcher.getMatcherType(), entry.getKey().getMatcherType());
assertNull(entry.getValue().getAllowedCourseAreaNames());
assertNull(entry.getValue().getByNameCourseDesignerCourseNames());
assertNull(entry.getValue().getResultsMailRecipient());
@@ -64,7 +63,6 @@ public class StoreAndLoadDeviceConfigurationsTest extends AbstractMongoDBTest {
assertEquals(1, Util.size(configurations));
Entry<DeviceConfigurationMatcher, DeviceConfiguration> entry = configurations.iterator().next();
assertEquals(matcher.getMatcherType(), entry.getKey().getMatcherType());
assertNotNull(entry.getValue().getAllowedCourseAreaNames());
assertEquals(2, entry.getValue().getAllowedCourseAreaNames().size());
assertEquals(2, entry.getValue().getByNameCourseDesignerCourseNames().size());
@@ -10,7 +10,6 @@ import org.junit.Test;
import com.sap.sailing.domain.base.configuration.DeviceConfiguration;
import com.sap.sailing.domain.base.configuration.DeviceConfigurationMatcher;
import com.sap.sailing.domain.base.configuration.impl.DeviceConfigurationImpl;
import com.sap.sailing.domain.base.configuration.impl.DeviceConfigurationMatcherMulti;
import com.sap.sailing.domain.base.configuration.impl.DeviceConfigurationMatcherSingle;
import com.sap.sailing.domain.base.configuration.impl.RegattaConfigurationImpl;
@@ -18,15 +17,12 @@ public class DeviceConfigurationReplicationTest extends AbstractServerReplicatio
@Test
public void testCreateConfiguration() throws InterruptedException {
DeviceConfigurationMatcher matcher = new DeviceConfigurationMatcherMulti(Arrays.asList("a", "b"));
DeviceConfigurationMatcher matcher = new DeviceConfigurationMatcherSingle("a");
DeviceConfigurationImpl configuration = new DeviceConfigurationImpl(new RegattaConfigurationImpl());
master.createOrUpdateDeviceConfiguration(matcher, configuration);
Thread.sleep(1000);
Map<DeviceConfigurationMatcher, DeviceConfiguration> configurationMap = replica.getAllDeviceConfigurations();
assertEquals(1, configurationMap.size());
assertEquals(matcher.getMatcherType(), configurationMap.keySet().iterator().next().getMatcherType());
}
@Test