mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-13 14:12:11 +00:00
Merge branch 'master' into bug5410
This commit is contained in:
commit
5ba98978cf
20 files changed
+284
-80
No files matched your search
+1
-1
@@ -10,7 +10,7 @@ package com.sap.sailing.domain.coursetemplate;
|
||||
*
|
||||
*/
|
||||
public interface FreestyleMarkConfiguration<P> extends MarkConfiguration<P> {
|
||||
CommonMarkProperties getFreestyleProperties();
|
||||
FreestyleMarkProperties getFreestyleProperties();
|
||||
|
||||
/**
|
||||
* @return a non-{@code null} object if this mark configuration originated from a {@link MarkProperties} object
|
||||
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
package com.sap.sailing.domain.coursetemplate;
|
||||
|
||||
/**
|
||||
* While sharing most of @{@link CommonMarkProperties}, {@link MarkProperties} do have the distinct
|
||||
* {@link FreestyleMarkConfiguration} property tags.
|
||||
*
|
||||
*/
|
||||
public interface FreestyleMarkProperties extends CommonMarkProperties, HasTags {
|
||||
void setTags(Iterable<String> tags);
|
||||
}
|
||||
+1
-1
@@ -39,7 +39,7 @@ import com.sap.sse.security.shared.WithQualifiedObjectIdentifier;
|
||||
* @author Axel Uhl (d043530)
|
||||
*
|
||||
*/
|
||||
public interface MarkProperties extends CommonMarkProperties, NamedWithUUID, HasTags, WithQualifiedObjectIdentifier {
|
||||
public interface MarkProperties extends FreestyleMarkProperties, NamedWithUUID, WithQualifiedObjectIdentifier {
|
||||
void setColor(Color color);
|
||||
|
||||
void setShape(String shape);
|
||||
|
||||
+4
-3
@@ -1,6 +1,7 @@
|
||||
package com.sap.sailing.domain.coursetemplate.impl;
|
||||
|
||||
import com.sap.sailing.domain.coursetemplate.CommonMarkProperties;
|
||||
import com.sap.sailing.domain.coursetemplate.FreestyleMarkProperties;
|
||||
import com.sap.sailing.domain.coursetemplate.FreestyleMarkConfiguration;
|
||||
import com.sap.sailing.domain.coursetemplate.MarkConfigurationVisitor;
|
||||
import com.sap.sailing.domain.coursetemplate.MarkProperties;
|
||||
@@ -10,10 +11,10 @@ public class FreestyleMarkConfigurationImpl<P> extends MarkConfigurationImpl<P>
|
||||
private static final long serialVersionUID = 8167307943855869321L;
|
||||
|
||||
private final MarkProperties optionalMarkProperties;
|
||||
private final CommonMarkProperties freestyleProperties;
|
||||
private final FreestyleMarkProperties freestyleProperties;
|
||||
|
||||
public FreestyleMarkConfigurationImpl(MarkTemplate optionalMarkTemplate, MarkProperties optionalMarkProperties,
|
||||
CommonMarkProperties freestyleProperties, P annotation) {
|
||||
FreestyleMarkProperties freestyleProperties, P annotation) {
|
||||
super(optionalMarkTemplate, annotation);
|
||||
this.optionalMarkProperties = optionalMarkProperties;
|
||||
this.freestyleProperties = freestyleProperties;
|
||||
@@ -35,7 +36,7 @@ public class FreestyleMarkConfigurationImpl<P> extends MarkConfigurationImpl<P>
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonMarkProperties getFreestyleProperties() {
|
||||
public FreestyleMarkProperties getFreestyleProperties() {
|
||||
return freestyleProperties;
|
||||
}
|
||||
|
||||
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
package com.sap.sailing.domain.coursetemplate.impl;
|
||||
|
||||
import com.sap.sailing.domain.common.MarkType;
|
||||
import com.sap.sailing.domain.coursetemplate.CommonMarkProperties;
|
||||
import com.sap.sailing.domain.coursetemplate.FreestyleMarkProperties;
|
||||
import com.sap.sse.common.Color;
|
||||
|
||||
public class FreestyleMarkPropertiesImpl extends CommonMarkPropertiesImpl implements FreestyleMarkProperties {
|
||||
private static final long serialVersionUID = -925045903410189747L;
|
||||
private Iterable<String> tags;
|
||||
|
||||
public FreestyleMarkPropertiesImpl(String name, String shortName, Color color, String shape, String pattern, MarkType type, Iterable<String> tags) {
|
||||
super(name, shortName, color, shape, pattern, type);
|
||||
this.tags = tags;
|
||||
}
|
||||
|
||||
public FreestyleMarkPropertiesImpl(final CommonMarkProperties commonMarkProperties, Iterable<String> tags) {
|
||||
this(commonMarkProperties.getName(), commonMarkProperties.getShortName(), commonMarkProperties.getColor(),
|
||||
commonMarkProperties.getShape(), commonMarkProperties.getPattern(), commonMarkProperties.getType(), tags);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<String> getTags() {
|
||||
return this.tags;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTags(Iterable<String> tags) {
|
||||
this.tags = tags;
|
||||
}
|
||||
}
|
||||
+2
-18
@@ -6,7 +6,6 @@ import java.util.UUID;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import com.sap.sailing.domain.common.MarkType;
|
||||
import com.sap.sailing.domain.coursetemplate.CommonMarkProperties;
|
||||
import com.sap.sailing.domain.coursetemplate.MarkProperties;
|
||||
import com.sap.sailing.domain.coursetemplate.MarkRole;
|
||||
import com.sap.sailing.domain.coursetemplate.MarkTemplate;
|
||||
@@ -14,10 +13,9 @@ import com.sap.sailing.domain.coursetemplate.Positioning;
|
||||
import com.sap.sse.common.Color;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
|
||||
public class MarkPropertiesImpl extends CommonMarkPropertiesImpl implements MarkProperties {
|
||||
public class MarkPropertiesImpl extends FreestyleMarkPropertiesImpl implements MarkProperties {
|
||||
private static final long serialVersionUID = -5588202720707030502L;
|
||||
private Positioning positioningInformation;
|
||||
private Iterable<String> tags;
|
||||
private UUID id;
|
||||
|
||||
private final ConcurrentHashMap<MarkTemplate, TimePoint> lastUsedMarkTemplate = new ConcurrentHashMap<>();
|
||||
@@ -29,12 +27,7 @@ public class MarkPropertiesImpl extends CommonMarkPropertiesImpl implements Mark
|
||||
|
||||
public MarkPropertiesImpl(UUID id, String name, String shortName, Color color, String shape, String pattern,
|
||||
MarkType type) {
|
||||
super(name, shortName, color, shape, pattern, type);
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public MarkPropertiesImpl(UUID id, final CommonMarkProperties commonMarkProperties) {
|
||||
super(commonMarkProperties);
|
||||
super(name, shortName, color, shape, pattern, type, /* tags */ null);
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
@@ -78,15 +71,6 @@ public class MarkPropertiesImpl extends CommonMarkPropertiesImpl implements Mark
|
||||
this.positioningInformation = positioningInformation;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<String> getTags() {
|
||||
return this.tags;
|
||||
}
|
||||
|
||||
public void setTags(Iterable<String> tags) {
|
||||
this.tags = tags;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<MarkTemplate, TimePoint> getLastUsedMarkTemplate() {
|
||||
return Collections.unmodifiableMap(lastUsedMarkTemplate);
|
||||
|
||||
+1
-1
@@ -70,7 +70,7 @@ public class CourseConfiguration extends JsonWrapper {
|
||||
public MarkConfiguration getMarkConfigurationByEffectiveName(String name) {
|
||||
MarkConfiguration result = null;
|
||||
for (MarkConfiguration markConfiguration : getMarkConfigurations()) {
|
||||
MarkAppearance effectiveProperties = markConfiguration.getEffectiveProperties();
|
||||
FreestyleProperties effectiveProperties = markConfiguration.getEffectiveProperties();
|
||||
if (effectiveProperties != null && name.equals(effectiveProperties.getName())) {
|
||||
result = markConfiguration;
|
||||
break;
|
||||
|
||||
+10
-4
@@ -1,10 +1,13 @@
|
||||
package com.sap.sailing.selenium.api.coursetemplate;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import org.json.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.selenium.api.core.JsonWrapper;
|
||||
|
||||
public class MarkAppearance extends JsonWrapper {
|
||||
public class FreestyleProperties extends JsonWrapper {
|
||||
|
||||
private static final String FIELD_NAME = "name";
|
||||
private static final String FIELD_SHORT_NAME = "shortName";
|
||||
@@ -12,13 +15,14 @@ public class MarkAppearance extends JsonWrapper {
|
||||
private static final String FIELD_SHAPE = "shape";
|
||||
private static final String FIELD_PATTERN = "pattern";
|
||||
private static final String FIELD_MARK_TYPE = "markType";
|
||||
private static final String FIELD_TAG = "tag";
|
||||
|
||||
public MarkAppearance(final JSONObject json) {
|
||||
public FreestyleProperties(final JSONObject json) {
|
||||
super(json);
|
||||
}
|
||||
|
||||
public MarkAppearance(final String name, final String shortName, final String color, final String shape,
|
||||
final String pattern, final String markType) {
|
||||
public FreestyleProperties(final String name, final String shortName, final String color, final String shape,
|
||||
final String pattern, final String markType, Set<String> tags) {
|
||||
super(new JSONObject());
|
||||
getJson().put(FIELD_NAME, name);
|
||||
getJson().put(FIELD_SHORT_NAME, shortName);
|
||||
@@ -26,6 +30,8 @@ public class MarkAppearance extends JsonWrapper {
|
||||
getJson().put(FIELD_SHAPE, shape);
|
||||
getJson().put(FIELD_PATTERN, pattern);
|
||||
getJson().put(FIELD_MARK_TYPE, markType);
|
||||
JSONArray jsonTags = new JSONArray(tags);
|
||||
getJson().put(FIELD_TAG, jsonTags);
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
+7
-6
@@ -4,6 +4,7 @@ import static org.junit.Assert.assertEquals;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -38,7 +39,7 @@ public class MarkConfiguration extends JsonWrapper {
|
||||
|
||||
public static MarkConfiguration createFreestyle(final UUID markTemplateId, final UUID markPropertiesId,
|
||||
final UUID associatedRoleId, final String name, final String shortName, final String color,
|
||||
final String shape, final String pattern, final String markType) {
|
||||
final String shape, final String pattern, final String markType, Set<String> tags) {
|
||||
MarkConfiguration markConfiguration = new MarkConfiguration(new JSONObject());
|
||||
markConfiguration.getJson().put(FIELD_ID, UUID.randomUUID().toString());
|
||||
if (markTemplateId != null) {
|
||||
@@ -51,7 +52,7 @@ public class MarkConfiguration extends JsonWrapper {
|
||||
markConfiguration.getJson().put(FIELD_ASSOCIATED_ROLE_ID, associatedRoleId.toString());
|
||||
}
|
||||
markConfiguration.getJson().put(FIELD_FREESTYLE_PROPERTIES,
|
||||
new MarkAppearance(name, shortName, color, shape, pattern, markType).getJson());
|
||||
new FreestyleProperties(name, shortName, color, shape, pattern, markType, tags).getJson());
|
||||
return markConfiguration;
|
||||
}
|
||||
|
||||
@@ -137,14 +138,14 @@ public class MarkConfiguration extends JsonWrapper {
|
||||
return markTemplateId != null ? UUID.fromString((String) markTemplateId) : null;
|
||||
}
|
||||
|
||||
public MarkAppearance getEffectiveProperties() {
|
||||
public FreestyleProperties getEffectiveProperties() {
|
||||
final JSONObject effectivePropertiesJson = (JSONObject) get(FIELD_EFFECTIVE_PROPERTIES);
|
||||
return effectivePropertiesJson != null ? new MarkAppearance(effectivePropertiesJson) : null;
|
||||
return effectivePropertiesJson != null ? new FreestyleProperties(effectivePropertiesJson) : null;
|
||||
}
|
||||
|
||||
public MarkAppearance getFreestyleProperties() {
|
||||
public FreestyleProperties getFreestyleProperties() {
|
||||
final JSONObject effectivePropertiesJson = (JSONObject) get(FIELD_FREESTYLE_PROPERTIES);
|
||||
return effectivePropertiesJson != null ? new MarkAppearance(effectivePropertiesJson) : null;
|
||||
return effectivePropertiesJson != null ? new FreestyleProperties(effectivePropertiesJson) : null;
|
||||
}
|
||||
|
||||
public boolean isStoreToInventory() {
|
||||
|
||||
+16
@@ -1,7 +1,10 @@
|
||||
package com.sap.sailing.selenium.api.coursetemplate;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.common.MarkType;
|
||||
@@ -21,6 +24,8 @@ public class MarkProperties extends JsonWrapper {
|
||||
private static final String FIELD_POSITIONING_DEVICE_IDENTIFIER = "device_identifier";
|
||||
private static final String FIELD_POSITIONING_FIXED_POSITION_LATDEG = "latitude_deg";
|
||||
private static final String FIELD_POSITIONING_FIXED_POSITION_LONDEG = "longitude_deg";
|
||||
private static final String FIELD_TAGS = "tag";
|
||||
|
||||
|
||||
public MarkProperties(JSONObject json) {
|
||||
super(json);
|
||||
@@ -79,6 +84,17 @@ public class MarkProperties extends JsonWrapper {
|
||||
final JSONObject position = (JSONObject) ((JSONObject) get(FIELD_POSITIONING)).get(FIELD_POSITIONING_POSITION);
|
||||
return (Double) (position == null ? null : position.get(FIELD_POSITIONING_FIXED_POSITION_LONDEG));
|
||||
}
|
||||
|
||||
public Set<String> getTags() {
|
||||
JSONArray jsonTags = get(FIELD_TAGS);
|
||||
final Set<String> tags = new HashSet<>();
|
||||
if(jsonTags != null) {
|
||||
for(Object tag : jsonTags) {
|
||||
tags.add(tag.toString());
|
||||
}
|
||||
}
|
||||
return tags;
|
||||
}
|
||||
|
||||
public void setLonDeg(double lonDeg) {
|
||||
JSONObject jsonPositioning = get(FIELD_POSITIONING);
|
||||
|
||||
+52
-16
@@ -40,7 +40,7 @@ import com.sap.sailing.selenium.api.coursetemplate.CourseConfigurationApi;
|
||||
import com.sap.sailing.selenium.api.coursetemplate.CourseTemplate;
|
||||
import com.sap.sailing.selenium.api.coursetemplate.CourseTemplateApi;
|
||||
import com.sap.sailing.selenium.api.coursetemplate.DeviceMapping;
|
||||
import com.sap.sailing.selenium.api.coursetemplate.MarkAppearance;
|
||||
import com.sap.sailing.selenium.api.coursetemplate.FreestyleProperties;
|
||||
import com.sap.sailing.selenium.api.coursetemplate.MarkConfiguration;
|
||||
import com.sap.sailing.selenium.api.coursetemplate.MarkProperties;
|
||||
import com.sap.sailing.selenium.api.coursetemplate.MarkPropertiesApi;
|
||||
@@ -115,14 +115,14 @@ public class CourseConfigurationTest extends AbstractSeleniumTest {
|
||||
final Map<MarkConfiguration, String> markConfigurationToNameMap = new HashMap<>();
|
||||
for (final MarkConfiguration markConfiguration : srcMarkConfigurations) {
|
||||
final UUID markTemplateId = markConfiguration.getMarkTemplateId();
|
||||
MarkAppearance srcAppearance = markConfiguration.getEffectiveProperties();
|
||||
FreestyleProperties srcAppearance = markConfiguration.getEffectiveProperties();
|
||||
if (srcAppearance == null) {
|
||||
srcAppearance = markConfiguration.getFreestyleProperties();
|
||||
}
|
||||
Positioning srcPositioning = markConfiguration.getPositioning();
|
||||
boolean found = false;
|
||||
for (final MarkConfiguration trgtMarkConfiguration : trgtMarkConfigurations) {
|
||||
final MarkAppearance trgtAppearance = trgtMarkConfiguration.getEffectiveProperties();
|
||||
final FreestyleProperties trgtAppearance = trgtMarkConfiguration.getEffectiveProperties();
|
||||
if (srcAppearance == null && trgtAppearance == null) {
|
||||
return;
|
||||
}
|
||||
@@ -572,14 +572,17 @@ public class CourseConfigurationTest extends AbstractSeleniumTest {
|
||||
eventApi.createEvent(ctx, regattaName, "", CompetitorRegistrationType.CLOSED, "");
|
||||
final RaceColumn race = regattaApi.addRaceColumn(ctx, regattaName, /* prefix */ null, 1)[0];
|
||||
MarkConfiguration sb = MarkConfiguration.createFreestyle(null, null,
|
||||
markRoleApi.createMarkRole(sharedServerCtx, "role_sb", /* shortName */ null).getId(), "startboat", "sb", null, null, null, null);
|
||||
markRoleApi.createMarkRole(sharedServerCtx, "role_sb", /* shortName */ null).getId(), "startboat", "sb",
|
||||
null, null, null, null, Collections.emptySet());
|
||||
sb.setFixedPosition(5.5, 7.1);
|
||||
MarkConfiguration pe = MarkConfiguration.createFreestyle(null, null,
|
||||
markRoleApi.createMarkRole(sharedServerCtx, "role_pe", /* shortName */ null).getId(), "pin end", "pe", null, null, null, null);
|
||||
markRoleApi.createMarkRole(sharedServerCtx, "role_pe", /* shortName */ null).getId(), "pin end", "pe",
|
||||
null, null, null, null, Collections.emptySet());
|
||||
UUID randomDeviceId = UUID.randomUUID();
|
||||
pe.setTrackingDeviceId(randomDeviceId);
|
||||
MarkConfiguration bl = MarkConfiguration.createFreestyle(null, null,
|
||||
markRoleApi.createMarkRole(sharedServerCtx, "role_bl", /* shortName */ null).getId(), "1", null, "#0000FF", null, null, null);
|
||||
markRoleApi.createMarkRole(sharedServerCtx, "role_bl", /* shortName */ null).getId(), "1", null,
|
||||
"#0000FF", null, null, null, Collections.emptySet());
|
||||
WaypointWithMarkConfiguration wp1 = new WaypointWithMarkConfiguration("start/end", "s/e",
|
||||
PassingInstruction.Line, Arrays.asList(sb.getId(), pe.getId()));
|
||||
WaypointWithMarkConfiguration wp2 = new WaypointWithMarkConfiguration(null, null, PassingInstruction.Port,
|
||||
@@ -596,14 +599,17 @@ public class CourseConfigurationTest extends AbstractSeleniumTest {
|
||||
@Test
|
||||
public void testCreateCourseTemplateWithPositioningIncluded() {
|
||||
MarkConfiguration sb = MarkConfiguration.createFreestyle(null, null,
|
||||
markRoleApi.createMarkRole(sharedServerCtx, "role_sb", /* shortName */ null).getId(), "startboat", "sb", null, null, null, null);
|
||||
markRoleApi.createMarkRole(sharedServerCtx, "role_sb", /* shortName */ null).getId(), "startboat", "sb",
|
||||
null, null, null, null, Collections.emptySet());
|
||||
sb.setFixedPosition(5.5, 7.1);
|
||||
MarkConfiguration pe = MarkConfiguration.createFreestyle(null, null,
|
||||
markRoleApi.createMarkRole(sharedServerCtx, "role_pe", /* shortName */ null).getId(), "pin end", "pe", null, null, null, null);
|
||||
markRoleApi.createMarkRole(sharedServerCtx, "role_pe", /* shortName */ null).getId(), "pin end", "pe",
|
||||
null, null, null, null, Collections.emptySet());
|
||||
UUID randomDeviceId = UUID.randomUUID();
|
||||
pe.setTrackingDeviceId(randomDeviceId);
|
||||
MarkConfiguration bl = MarkConfiguration.createFreestyle(null, null,
|
||||
markRoleApi.createMarkRole(sharedServerCtx, "role_bl", /* shortName */ null).getId(), "1", null, "#0000FF", null, null, null);
|
||||
markRoleApi.createMarkRole(sharedServerCtx, "role_bl", /* shortName */ null).getId(), "1", null,
|
||||
"#0000FF", null, null, null, Collections.emptySet());
|
||||
WaypointWithMarkConfiguration wp1 = new WaypointWithMarkConfiguration("start/end", "s/e",
|
||||
PassingInstruction.Line, Arrays.asList(sb.getId(), pe.getId()));
|
||||
WaypointWithMarkConfiguration wp2 = new WaypointWithMarkConfiguration(null, null, PassingInstruction.Port,
|
||||
@@ -640,7 +646,8 @@ public class CourseConfigurationTest extends AbstractSeleniumTest {
|
||||
mc2.setFixedPosition(latDeg, longDeg); // overrides the 1.0 / 1.0 as provided by the mp1 MarkProperties object
|
||||
|
||||
final MarkConfiguration mc3 = MarkConfiguration.createFreestyle(null, null,
|
||||
markRoleApi.createMarkRole(sharedServerCtx, "role_mp2", /* shortName */ null).getId(), "mc3", "mc3", "#0000FF", null, null, null);
|
||||
markRoleApi.createMarkRole(sharedServerCtx, "role_mp2", /* shortName */ null).getId(), "mc3", "mc3",
|
||||
"#0000FF", null, null, null, Collections.emptySet());
|
||||
mc3.setFixedPosition(latDeg, longDeg);
|
||||
|
||||
final UUID deviceId = UUID.randomUUID();
|
||||
@@ -764,11 +771,11 @@ public class CourseConfigurationTest extends AbstractSeleniumTest {
|
||||
final RaceColumn race = regattaApi.addRaceColumn(ctx, regattaName, /* prefix */ null, 1)[0];
|
||||
final String pinEndName = "Start/Finish Pin";
|
||||
MarkConfiguration sfp = MarkConfiguration.createFreestyle(null, null, null, pinEndName, "SFP", null, null, null,
|
||||
MarkType.BUOY.name());
|
||||
MarkType.BUOY.name(), Collections.emptySet());
|
||||
sfp.setFixedPosition(47.159776, 27.5891346);
|
||||
sfp.setStoreToInventory(true);
|
||||
MarkConfiguration sfb = MarkConfiguration.createFreestyle(null, null, null, "Start/Finish Boat", "SFB", null,
|
||||
null, null, MarkType.STARTBOAT.name());
|
||||
null, null, MarkType.STARTBOAT.name(), Collections.emptySet());
|
||||
sfp.setStoreToInventory(true);
|
||||
WaypointWithMarkConfiguration wp1 = new WaypointWithMarkConfiguration("Start", "S", PassingInstruction.Gate,
|
||||
Arrays.asList(sfp.getId(), sfb.getId()));
|
||||
@@ -810,7 +817,7 @@ public class CourseConfigurationTest extends AbstractSeleniumTest {
|
||||
|
||||
String markName = "some mark";
|
||||
MarkConfiguration mark = MarkConfiguration.createFreestyle(null, null, null, markName, null, null, null, null,
|
||||
MarkType.BUOY.name());
|
||||
MarkType.BUOY.name(), Collections.emptySet());
|
||||
|
||||
WaypointWithMarkConfiguration wp = new WaypointWithMarkConfiguration(null, null, PassingInstruction.Starboard,
|
||||
Arrays.asList(mark.getId()));
|
||||
@@ -875,18 +882,21 @@ public class CourseConfigurationTest extends AbstractSeleniumTest {
|
||||
private void testCreateCourseConfigurationWithStoreToInventory(final ApiContext ctx, final ApiContext sharedServerCtx) {
|
||||
final String STARTBOAT_NAME = "startboat";
|
||||
MarkConfiguration sb = MarkConfiguration.createFreestyle(null, null,
|
||||
markRoleApi.createMarkRole(sharedServerCtx, "role_sb", /* shortName */ null).getId(), STARTBOAT_NAME, "sb", null, null, null, null);
|
||||
markRoleApi.createMarkRole(sharedServerCtx, "role_sb", /* shortName */ null).getId(), STARTBOAT_NAME,
|
||||
"sb", null, null, null, null, Collections.emptySet());
|
||||
final double startBoatLatDeg = 5.5;
|
||||
final double startBoatLonDeg = 7.1;
|
||||
sb.setFixedPosition(startBoatLatDeg, startBoatLonDeg);
|
||||
sb.setStoreToInventory(true);
|
||||
MarkConfiguration pe = MarkConfiguration.createFreestyle(null, null,
|
||||
markRoleApi.createMarkRole(sharedServerCtx, "role_pe", /* shortName */ null).getId(), "pin end", "pe", null, null, null, null);
|
||||
markRoleApi.createMarkRole(sharedServerCtx, "role_pe", /* shortName */ null).getId(), "pin end", "pe",
|
||||
null, null, null, null, Collections.emptySet());
|
||||
pe.setStoreToInventory(true);
|
||||
UUID randomDeviceId = UUID.randomUUID();
|
||||
pe.setTrackingDeviceId(randomDeviceId);
|
||||
MarkConfiguration bl = MarkConfiguration.createFreestyle(null, null,
|
||||
markRoleApi.createMarkRole(sharedServerCtx, "role_bl", /* shortName */ null).getId(), "1", null, "#0000FF", null, null, null);
|
||||
markRoleApi.createMarkRole(sharedServerCtx, "role_bl", /* shortName */ null).getId(), "1", null,
|
||||
"#0000FF", null, null, null, Collections.emptySet());
|
||||
MarkTemplate mtb2 = markTemplateApi.createMarkTemplate(sharedServerCtx, "mark template 1", "mt1", "#FFFFFF", "Cylinder",
|
||||
"Checkered", MarkType.BUOY.name());
|
||||
MarkConfiguration b2 = MarkConfiguration.createMarkTemplateBased(mtb2.getId(),
|
||||
@@ -987,6 +997,32 @@ public class CourseConfigurationTest extends AbstractSeleniumTest {
|
||||
assertConsistentCourseConfiguration(createdCourseConfiguration);
|
||||
assertCourseConfigurationCompared(sharedServerCtx, simpleCourseConfiguration, createdCourseConfiguration);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createCourseConfigurationWithFreestyleUpdateForExistingMarkProperty() {
|
||||
final double MP_LAT_DEG = 49.097487;
|
||||
final double MP_LNG_DEG = 8.648631;
|
||||
final UUID markPropertiesId = markPropertiesApi.createMarkProperties(sharedServerCtx, "mpWithPos", "mpWithPos",
|
||||
/* deviceUuid */ null, "#ffffff", "shape", "pattern", MarkType.LANDMARK.name(),
|
||||
Collections.emptyList(), MP_LAT_DEG, MP_LNG_DEG).getId();
|
||||
final Set<String> tags = new HashSet<>();
|
||||
tags.add("tag1");
|
||||
final MarkConfiguration mc1 = MarkConfiguration.createFreestyle(null, markPropertiesId, null, null, null,
|
||||
null, null, null, null, tags);
|
||||
mc1.setStoreToInventory(true);
|
||||
final WaypointWithMarkConfiguration wp1 = new WaypointWithMarkConfiguration("landmark", "landmark",
|
||||
PassingInstruction.Single_Unknown, Arrays.asList(mc1.getId()));
|
||||
final CourseConfiguration courseConfiguration = new CourseConfiguration("test1", Arrays.asList(mc1),
|
||||
Arrays.asList(wp1));
|
||||
final String regattaName = "Regatta1";
|
||||
eventApi.createEvent(ctx, regattaName, "", CompetitorRegistrationType.CLOSED, "");
|
||||
final RaceColumn race = regattaApi.addRaceColumn(ctx, regattaName, null, 1)[0];
|
||||
courseConfigurationApi.createCourse(ctx, courseConfiguration, regattaName,
|
||||
race.getRaceName(), "Default");
|
||||
MarkProperties markProperties = markPropertiesApi.getMarkProperties(sharedServerCtx, markPropertiesId);
|
||||
Set<String> updatedTags = markProperties.getTags();
|
||||
assertEquals(tags, updatedTags);
|
||||
}
|
||||
|
||||
private CourseConfiguration createSimpleCourseConfiguration(final ApiContext ctx) {
|
||||
List<MarkConfiguration> markConfigurations = new ArrayList<MarkConfiguration>();
|
||||
|
||||
+3
-2
@@ -12,6 +12,7 @@ import static org.junit.Assert.assertNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.junit.Before;
|
||||
@@ -153,11 +154,11 @@ public class MarkApiTest extends AbstractSeleniumTest {
|
||||
|
||||
final String pinEndName = "Start/Finish Pin";
|
||||
final MarkConfiguration sfp = MarkConfiguration.createFreestyle(null, null, null, pinEndName, "SFP", null, null,
|
||||
null, MarkType.BUOY.name());
|
||||
null, MarkType.BUOY.name(), Collections.emptySet());
|
||||
sfp.setFixedPosition(47.159776, 27.5891346);
|
||||
sfp.setStoreToInventory(true);
|
||||
final MarkConfiguration sfb = MarkConfiguration.createFreestyle(null, null, null, "Start/Finish Boat", "SFB",
|
||||
null, null, null, MarkType.STARTBOAT.name());
|
||||
null, null, null, MarkType.STARTBOAT.name(), Collections.emptySet());
|
||||
sfp.setStoreToInventory(true);
|
||||
final MarkConfiguration sft = MarkConfiguration.createMarkBased(mark.getMarkId(), null);
|
||||
sft.setFixedPosition(47.159776, 37.5891346);
|
||||
|
||||
+3
-3
@@ -20,7 +20,7 @@ import com.sap.sailing.domain.common.DeviceIdentifier;
|
||||
import com.sap.sailing.domain.common.PassingInstruction;
|
||||
import com.sap.sailing.domain.common.tracking.GPSFix;
|
||||
import com.sap.sailing.domain.common.tracking.impl.GPSFixImpl;
|
||||
import com.sap.sailing.domain.coursetemplate.CommonMarkProperties;
|
||||
import com.sap.sailing.domain.coursetemplate.FreestyleMarkProperties;
|
||||
import com.sap.sailing.domain.coursetemplate.CourseConfiguration;
|
||||
import com.sap.sailing.domain.coursetemplate.CourseTemplate;
|
||||
import com.sap.sailing.domain.coursetemplate.CourseTemplateCompatibilityChecker;
|
||||
@@ -98,7 +98,7 @@ public class CourseConfigurationBuilder {
|
||||
}
|
||||
|
||||
public MarkConfiguration<MarkConfigurationRequestAnnotation> addMarkConfiguration(UUID optionalMarkTemplateID, UUID optionalMarkPropertiesID,
|
||||
UUID optionalMarkID, CommonMarkProperties commonMarkProperties, Positioning optionalPositioning,
|
||||
UUID optionalMarkID, FreestyleMarkProperties commonMarkProperties, Positioning optionalPositioning,
|
||||
boolean storeToInventory, MarkRoleCreationRequest optionalMarkRoleCreationRequest) {
|
||||
final MarkConfiguration<MarkConfigurationRequestAnnotation> result;
|
||||
final MarkConfigurationRequestAnnotationImpl markConfigurationRequestAnnotation = new MarkConfigurationRequestAnnotationImpl(
|
||||
@@ -186,7 +186,7 @@ public class CourseConfigurationBuilder {
|
||||
}
|
||||
|
||||
public FreestyleMarkConfiguration<MarkConfigurationRequestAnnotation> addFreestyleMarkConfiguration(UUID optionalMarkTemplateID,
|
||||
UUID optionalMarkPropertiesID, CommonMarkProperties commonMarkProperties, MarkConfigurationRequestAnnotation markConfigurationRequestAnnotation) {
|
||||
UUID optionalMarkPropertiesID, FreestyleMarkProperties commonMarkProperties, MarkConfigurationRequestAnnotation markConfigurationRequestAnnotation) {
|
||||
final MarkTemplate resolvedMarkTemplate = optionalMarkTemplateID == null ? null
|
||||
: resolveMarkTemplateByID(optionalMarkTemplateID);
|
||||
final MarkProperties resolvedMarkProperties = sharedSailingData.getMarkPropertiesById(optionalMarkPropertiesID);
|
||||
|
||||
+4
-4
@@ -13,7 +13,7 @@ import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.common.PassingInstruction;
|
||||
import com.sap.sailing.domain.coursetemplate.CommonMarkProperties;
|
||||
import com.sap.sailing.domain.coursetemplate.FreestyleMarkProperties;
|
||||
import com.sap.sailing.domain.coursetemplate.CourseConfiguration;
|
||||
import com.sap.sailing.domain.coursetemplate.CourseTemplate;
|
||||
import com.sap.sailing.domain.coursetemplate.MarkConfiguration;
|
||||
@@ -30,7 +30,7 @@ import com.sap.sailing.shared.server.SharedSailingData;
|
||||
public class CourseConfigurationJsonDeserializer implements JsonDeserializer<CourseConfiguration<MarkConfigurationRequestAnnotation>> {
|
||||
|
||||
private final SharedSailingData sharedSailingData;
|
||||
private final CommonMarkPropertiesJsonDeserializer commonMarkPropertiesJsonDeserializer;
|
||||
private final FreestyleMarkPropertiesJsonDeserializer commonMarkPropertiesJsonDeserializer;
|
||||
private final JsonDeserializer<RepeatablePart> repeatablePartJsonDeserializer;
|
||||
private final Regatta regatta;
|
||||
private final PositioningJsonDeserializer positioningJsonDeserializer;
|
||||
@@ -38,7 +38,7 @@ public class CourseConfigurationJsonDeserializer implements JsonDeserializer<Cou
|
||||
public CourseConfigurationJsonDeserializer(final SharedSailingData sharedSailingData,
|
||||
DeviceIdentifierJsonDeserializer deviceIdentifierDeserializer, final Regatta regatta) {
|
||||
this.sharedSailingData = sharedSailingData;
|
||||
commonMarkPropertiesJsonDeserializer = new CommonMarkPropertiesJsonDeserializer();
|
||||
commonMarkPropertiesJsonDeserializer = new FreestyleMarkPropertiesJsonDeserializer();
|
||||
repeatablePartJsonDeserializer = new RepeatablePartJsonDeserializer();
|
||||
positioningJsonDeserializer = new PositioningJsonDeserializer(deviceIdentifierDeserializer);
|
||||
this.regatta = regatta;
|
||||
@@ -76,7 +76,7 @@ public class CourseConfigurationJsonDeserializer implements JsonDeserializer<Cou
|
||||
.get(CourseConfigurationJsonSerializer.FIELD_MARK_CONFIGURATION_MARK_ID);
|
||||
final JSONObject freestylePropertiesObject = (JSONObject) markConfigurationJSON
|
||||
.get(CourseConfigurationJsonSerializer.FIELD_MARK_CONFIGURATION_FREESTYLE_PROPERTIES);
|
||||
final CommonMarkProperties optionalFreestyleProperties = freestylePropertiesObject == null ? null
|
||||
final FreestyleMarkProperties optionalFreestyleProperties = freestylePropertiesObject == null ? null
|
||||
: commonMarkPropertiesJsonDeserializer.deserialize(freestylePropertiesObject);
|
||||
final Object positioningObject = markConfigurationJSON
|
||||
.get(CourseConfigurationJsonSerializer.FIELD_MARK_CONFIGURATION_POSITIONING);
|
||||
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
package com.sap.sailing.server.gateway.deserialization.impl;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.coursetemplate.CommonMarkProperties;
|
||||
import com.sap.sailing.domain.coursetemplate.FreestyleMarkProperties;
|
||||
import com.sap.sailing.domain.coursetemplate.impl.FreestyleMarkPropertiesImpl;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.FreestyleMarkPropertiesJsonSerializer;
|
||||
|
||||
public class FreestyleMarkPropertiesJsonDeserializer implements JsonDeserializer<FreestyleMarkProperties> {
|
||||
private final CommonMarkPropertiesJsonDeserializer commonMarkPropertiesJsonDeserializer;
|
||||
|
||||
public FreestyleMarkPropertiesJsonDeserializer() {
|
||||
this.commonMarkPropertiesJsonDeserializer = new CommonMarkPropertiesJsonDeserializer();
|
||||
}
|
||||
|
||||
@Override
|
||||
public FreestyleMarkProperties deserialize(JSONObject json) throws JsonDeserializationException {
|
||||
Object tagsArray = json.get(FreestyleMarkPropertiesJsonSerializer.FIELD_TAGS);
|
||||
final Set<String> tags = new HashSet<>();
|
||||
if (tagsArray != null && tagsArray instanceof JSONArray) {
|
||||
for (Object tag : (JSONArray) tagsArray) {
|
||||
tags.add(tag.toString());
|
||||
}
|
||||
}
|
||||
CommonMarkProperties commonMarkProperties = commonMarkPropertiesJsonDeserializer.deserialize(json);
|
||||
return new FreestyleMarkPropertiesImpl(commonMarkProperties, tags);
|
||||
}
|
||||
}
|
||||
+4
-1
@@ -10,6 +10,7 @@ import org.json.simple.JSONObject;
|
||||
import com.sap.sailing.domain.common.DeviceIdentifier;
|
||||
import com.sap.sailing.domain.common.tracking.GPSFix;
|
||||
import com.sap.sailing.domain.coursetemplate.CommonMarkProperties;
|
||||
import com.sap.sailing.domain.coursetemplate.FreestyleMarkProperties;
|
||||
import com.sap.sailing.domain.coursetemplate.ControlPointWithMarkConfiguration;
|
||||
import com.sap.sailing.domain.coursetemplate.CourseConfiguration;
|
||||
import com.sap.sailing.domain.coursetemplate.FreestyleMarkConfiguration;
|
||||
@@ -62,11 +63,13 @@ public class CourseConfigurationJsonSerializer implements JsonSerializer<CourseC
|
||||
|
||||
private final JsonSerializer<RepeatablePart> repeatablePartJsonSerializer;
|
||||
private final JsonSerializer<CommonMarkProperties> commonMarkPropertiesJsonSerializer;
|
||||
private final JsonSerializer<FreestyleMarkProperties> commonMarkPropertiesWithTagsJsonSerializer;
|
||||
private final JsonSerializer<GPSFix> gpsFixJsonSerializer;
|
||||
|
||||
public CourseConfigurationJsonSerializer() {
|
||||
this.repeatablePartJsonSerializer = new RepeatablePartJsonSerializer();
|
||||
this.commonMarkPropertiesJsonSerializer = new CommonMarkPropertiesJsonSerializer();
|
||||
this.commonMarkPropertiesWithTagsJsonSerializer = new FreestyleMarkPropertiesJsonSerializer();
|
||||
this.gpsFixJsonSerializer = new GPSFixJsonSerializer();
|
||||
}
|
||||
|
||||
@@ -110,7 +113,7 @@ public class CourseConfigurationJsonSerializer implements JsonSerializer<CourseC
|
||||
freeStyleMarkConfiguration.getOptionalMarkProperties().getId().toString());
|
||||
}
|
||||
markConfigurationsEntry.put(FIELD_MARK_CONFIGURATION_FREESTYLE_PROPERTIES,
|
||||
commonMarkPropertiesJsonSerializer
|
||||
commonMarkPropertiesWithTagsJsonSerializer
|
||||
.serialize(freeStyleMarkConfiguration.getFreestyleProperties()));
|
||||
return null;
|
||||
}
|
||||
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
package com.sap.sailing.server.gateway.serialization.impl;
|
||||
|
||||
import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.coursetemplate.FreestyleMarkProperties;
|
||||
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
|
||||
public class FreestyleMarkPropertiesJsonSerializer implements JsonSerializer<FreestyleMarkProperties> {
|
||||
|
||||
public static final String FIELD_TAGS = "tag";
|
||||
|
||||
private final CommonMarkPropertiesJsonSerializer commonMarkPropertiesJsonSerializer;
|
||||
|
||||
public FreestyleMarkPropertiesJsonSerializer() {
|
||||
commonMarkPropertiesJsonSerializer = new CommonMarkPropertiesJsonSerializer();
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject serialize(FreestyleMarkProperties commonMarkProperties) {
|
||||
JSONObject result = commonMarkPropertiesJsonSerializer.serialize(commonMarkProperties);
|
||||
JSONArray jsonTags = new JSONArray();
|
||||
for (String tag : commonMarkProperties.getTags()) {
|
||||
jsonTags.add(tag);
|
||||
}
|
||||
result.put(FIELD_TAGS, jsonTags);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
+3
-5
@@ -8,14 +8,13 @@ import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
|
||||
public class MarkPropertiesJsonSerializer implements JsonSerializer<MarkProperties> {
|
||||
private static final String FIELD_ID = "id";
|
||||
private static final String FIELD_TAGS = "tags";
|
||||
private static final String FIELD_POSITIONING = "positioning";
|
||||
|
||||
private final CommonMarkPropertiesJsonSerializer commonMarkPropertiesJsonSerializer;
|
||||
private final FreestyleMarkPropertiesJsonSerializer commonMarkPropertiesWithTagsJsonSerializer;
|
||||
private final PositioningJsonSerializer positioningJsonSerializer;
|
||||
|
||||
public MarkPropertiesJsonSerializer(DeviceIdentifierJsonSerializer deviceIdentifierSerializer) {
|
||||
this.commonMarkPropertiesJsonSerializer = new CommonMarkPropertiesJsonSerializer();
|
||||
this.commonMarkPropertiesWithTagsJsonSerializer = new FreestyleMarkPropertiesJsonSerializer();
|
||||
this.positioningJsonSerializer = new PositioningJsonSerializer(deviceIdentifierSerializer);
|
||||
}
|
||||
|
||||
@@ -25,8 +24,7 @@ public class MarkPropertiesJsonSerializer implements JsonSerializer<MarkProperti
|
||||
result.put(FIELD_ID, markProperties.getId().toString());
|
||||
final JSONArray tags = new JSONArray();
|
||||
markProperties.getTags().forEach(tags::add);
|
||||
result.put(FIELD_TAGS, tags);
|
||||
result.putAll(commonMarkPropertiesJsonSerializer.serialize(markProperties));
|
||||
result.putAll(commonMarkPropertiesWithTagsJsonSerializer.serialize(markProperties));
|
||||
result.put(FIELD_POSITIONING, markProperties.getPositioningInformation() == null ? null :
|
||||
positioningJsonSerializer.serialize(markProperties.getPositioningInformation()));
|
||||
return result;
|
||||
|
||||
+28
-9
@@ -53,6 +53,7 @@ import com.sap.sailing.domain.coursetemplate.CourseTemplate;
|
||||
import com.sap.sailing.domain.coursetemplate.CourseTemplateCompatibilityChecker;
|
||||
import com.sap.sailing.domain.coursetemplate.FixedPositioning;
|
||||
import com.sap.sailing.domain.coursetemplate.FreestyleMarkConfiguration;
|
||||
import com.sap.sailing.domain.coursetemplate.FreestyleMarkProperties;
|
||||
import com.sap.sailing.domain.coursetemplate.MarkConfiguration;
|
||||
import com.sap.sailing.domain.coursetemplate.MarkConfigurationRequestAnnotation;
|
||||
import com.sap.sailing.domain.coursetemplate.MarkConfigurationRequestAnnotation.MarkRoleCreationRequest;
|
||||
@@ -75,6 +76,7 @@ import com.sap.sailing.domain.coursetemplate.WaypointTemplate;
|
||||
import com.sap.sailing.domain.coursetemplate.WaypointWithMarkConfiguration;
|
||||
import com.sap.sailing.domain.coursetemplate.impl.CourseConfigurationImpl;
|
||||
import com.sap.sailing.domain.coursetemplate.impl.FreestyleMarkConfigurationImpl;
|
||||
import com.sap.sailing.domain.coursetemplate.impl.FreestyleMarkPropertiesImpl;
|
||||
import com.sap.sailing.domain.coursetemplate.impl.MarkConfigurationRequestAnnotationImpl;
|
||||
import com.sap.sailing.domain.coursetemplate.impl.MarkPairWithConfigurationImpl;
|
||||
import com.sap.sailing.domain.coursetemplate.impl.MarkPropertiesBasedMarkConfigurationImpl;
|
||||
@@ -213,16 +215,30 @@ public class CourseAndMarkConfigurationFactoryImpl implements CourseAndMarkConfi
|
||||
final Positioning positioningOrNull = markConfiguration.getAnnotationInfo().getOptionalPositioning();
|
||||
// create or update the non position-related aspects of the MarkProperties object in the "inventory":
|
||||
if (markPropertiesOrNull == null) {
|
||||
CommonMarkProperties effectiveProperties = markConfiguration.getEffectiveProperties();
|
||||
Iterable<String> tags = Collections.emptySet();
|
||||
if (effectiveProperties instanceof FreestyleMarkProperties) {
|
||||
tags = ((FreestyleMarkProperties) effectiveProperties).getTags();
|
||||
}else {
|
||||
tags = Collections.emptySet();
|
||||
}
|
||||
// If no mark properties exist yet, a new one is created
|
||||
markPropertiesInInventory = getSharedSailingData().createMarkProperties(markConfiguration.getEffectiveProperties(),
|
||||
/* tags */ Collections.emptySet(), optionalNonDefaultGroupOwnership);
|
||||
markPropertiesInInventory = getSharedSailingData().createMarkProperties(effectiveProperties, tags,
|
||||
optionalNonDefaultGroupOwnership);
|
||||
} else {
|
||||
CommonMarkProperties effectiveProperties = markConfiguration.getEffectiveProperties();
|
||||
final Iterable<String> tags;
|
||||
if (effectiveProperties instanceof FreestyleMarkProperties) {
|
||||
tags = ((FreestyleMarkProperties) effectiveProperties).getTags();
|
||||
}else {
|
||||
tags = Collections.emptySet();
|
||||
}
|
||||
// in the case of a MarkPropertiesBasedMarkConfiguration, the following call is expected to notice
|
||||
// the identity between the mark properties object to update and the mark properties that constitute
|
||||
// the effective properties and then skip the update.
|
||||
markPropertiesInInventory = markPropertiesOrNull;
|
||||
getSharedSailingData().updateMarkProperties(markPropertiesInInventory.getId(), markConfiguration.getEffectiveProperties(),
|
||||
positioningOrNull, /* TODO tags */ Collections.emptySet());
|
||||
getSharedSailingData().updateMarkProperties(markPropertiesInInventory.getId(), effectiveProperties,
|
||||
positioningOrNull, tags);
|
||||
}
|
||||
if (positioningOrNull != null) {
|
||||
positioningOrNull.accept(new PositioningVisitor<Void>() {
|
||||
@@ -316,11 +332,14 @@ public class CourseAndMarkConfigurationFactoryImpl implements CourseAndMarkConfi
|
||||
if (markPropertiesOrNull.hasEqualAppeareanceWith(effectiveMarkTemplate)) {
|
||||
effectiveConfiguration = new MarkPropertiesBasedMarkConfigurationImpl<>(markPropertiesOrNull,
|
||||
effectiveMarkTemplate, markConfiguration.getAnnotationInfo());
|
||||
} else {
|
||||
effectiveConfiguration = new FreestyleMarkConfigurationImpl<>(effectiveMarkTemplate,
|
||||
markPropertiesOrNull, effectiveMarkTemplate, markConfiguration.getAnnotationInfo());
|
||||
}
|
||||
} else {
|
||||
} else {
|
||||
effectiveConfiguration = new FreestyleMarkConfigurationImpl<>(effectiveMarkTemplate,
|
||||
markPropertiesOrNull,
|
||||
new FreestyleMarkPropertiesImpl(effectiveMarkTemplate,
|
||||
/* tags */ null),
|
||||
markConfiguration.getAnnotationInfo());
|
||||
}
|
||||
} else {
|
||||
effectiveConfiguration = new MarkTemplateBasedMarkConfigurationImpl<>(effectiveMarkTemplate,
|
||||
markConfiguration.getAnnotationInfo());
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.sap.sse.gwt.client.xdstorage.impl;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.event.shared.HandlerRegistration;
|
||||
import com.sap.sse.gwt.client.Storage;
|
||||
import com.sap.sse.gwt.client.xdstorage.CrossDomainStorage;
|
||||
@@ -29,7 +30,11 @@ public class LocalStorage implements CrossDomainStorage {
|
||||
|
||||
@Override
|
||||
public void setItem(String key, String value, Consumer<Void> callback) {
|
||||
storage.setItem(key, value);
|
||||
if (storage != null) {
|
||||
storage.setItem(key, value);
|
||||
} else {
|
||||
GWT.log("Warning: cannot store "+key+"="+value+" in local storage; local storage not accessible");
|
||||
}
|
||||
if (callback != null) {
|
||||
callback.accept(null);
|
||||
}
|
||||
@@ -37,14 +42,25 @@ public class LocalStorage implements CrossDomainStorage {
|
||||
|
||||
@Override
|
||||
public void getItem(String key, Consumer<String> callback) {
|
||||
final String result;
|
||||
if (storage != null) {
|
||||
result = storage.getItem(key);
|
||||
} else {
|
||||
GWT.log("Warning: cannot read "+key+" from local storage; local storage not accessible");
|
||||
result = null;
|
||||
}
|
||||
if (callback != null) {
|
||||
callback.accept(storage.getItem(key));
|
||||
callback.accept(result);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeItem(String key, Consumer<Void> callback) {
|
||||
storage.removeItem(key);
|
||||
if (storage != null) {
|
||||
storage.removeItem(key);
|
||||
} else {
|
||||
GWT.log("Warning: cannot remove "+key+" from local storage; local storage not accessible");
|
||||
}
|
||||
if (callback != null) {
|
||||
callback.accept(null);
|
||||
}
|
||||
@@ -52,7 +68,11 @@ public class LocalStorage implements CrossDomainStorage {
|
||||
|
||||
@Override
|
||||
public void clear(Consumer<Void> callback) {
|
||||
storage.clear();
|
||||
if (storage != null) {
|
||||
storage.clear();
|
||||
} else {
|
||||
GWT.log("Warning: cannot clear local storage; local storage not accessible");
|
||||
}
|
||||
if (callback != null) {
|
||||
callback.accept(null);
|
||||
}
|
||||
@@ -60,15 +80,29 @@ public class LocalStorage implements CrossDomainStorage {
|
||||
|
||||
@Override
|
||||
public void key(int index, Consumer<String> callback) {
|
||||
final String result;
|
||||
if (storage != null) {
|
||||
result = storage.key(index);
|
||||
} else {
|
||||
GWT.log("Warning: cannot read key at index "+index+" from local storage; local storage not accessible");
|
||||
result = null;
|
||||
}
|
||||
if (callback != null) {
|
||||
callback.accept(storage.key(index));
|
||||
callback.accept(result);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getLength(Consumer<Integer> callback) {
|
||||
if (callback != null) {
|
||||
callback.accept(storage.getLength());
|
||||
final Integer result;
|
||||
if (storage != null) {
|
||||
result = storage.getLength();
|
||||
} else {
|
||||
GWT.log("Warning: cannot get local storage length; local storage not accessible");
|
||||
result = null;
|
||||
}
|
||||
callback.accept(result);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user