From 2e229bddc9c43e2b4916fbd4d9a2504f80685b03 Mon Sep 17 00:00:00 2001 From: Steffen Jacobs Date: Tue, 13 Aug 2019 11:23:47 +0200 Subject: [PATCH] Bug 5085: wired MarkTemplates into SharedSailingDataImpl --- .../coursetemplate/impl/MarkTemplateImpl.java | 10 +++++ .../sharedsailingdata/SharedSailingData.java | 4 +- .../impl/ReplicatingSharedSailingData.java | 3 +- .../server/impl/SharedSailingDataImpl.java | 40 ++++++++++--------- 4 files changed, 34 insertions(+), 23 deletions(-) diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/coursetemplate/impl/MarkTemplateImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/coursetemplate/impl/MarkTemplateImpl.java index 1e118313bdb..7e4cbc430b9 100755 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/coursetemplate/impl/MarkTemplateImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/coursetemplate/impl/MarkTemplateImpl.java @@ -4,6 +4,7 @@ import java.util.Collections; import java.util.UUID; import com.sap.sailing.domain.common.MarkType; +import com.sap.sailing.domain.coursetemplate.CommonMarkProperties; import com.sap.sailing.domain.coursetemplate.MarkTemplate; import com.sap.sse.common.Color; import com.sap.sse.common.impl.NamedWithUUIDImpl; @@ -34,6 +35,15 @@ public class MarkTemplateImpl extends NamedWithUUIDImpl implements MarkTemplate this.type = type; } + public MarkTemplateImpl(UUID id, CommonMarkProperties commonMarkProperties) { + super(commonMarkProperties.getName(), id); + this.shortName = commonMarkProperties.getShortName(); + this.color = commonMarkProperties.getColor(); + this.shape = commonMarkProperties.getShape(); + this.pattern = commonMarkProperties.getPattern(); + this.type = commonMarkProperties.getType(); + } + @Override public Iterable getMarks() { return Collections.singleton(this); diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/sharedsailingdata/SharedSailingData.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/sharedsailingdata/SharedSailingData.java index 7dc03ddf250..478abe93533 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/sharedsailingdata/SharedSailingData.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/sharedsailingdata/SharedSailingData.java @@ -23,7 +23,7 @@ public interface SharedSailingData { Iterable getAllMarkProperties(Iterable tagsToFilterFor); - Iterable getAllMarkTemplates(Iterable tagsToFilterFor); + Iterable getAllMarkTemplates(); Iterable getAllCourseTemplates(Iterable tagsToFilterFor); @@ -41,7 +41,7 @@ public interface SharedSailingData { */ void setTrackingDeviceIdentifierForMarkProperties(MarkProperties markProperties, DeviceIdentifier deviceIdentifier); - MarkTemplate createMarkTemplate(CommonMarkProperties properties, Iterable tags); + MarkTemplate createMarkTemplate(CommonMarkProperties properties); MarkTemplate getMarkTemplateById(UUID id); diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/ReplicatingSharedSailingData.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/ReplicatingSharedSailingData.java index 0146498761b..250105f1f0d 100644 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/ReplicatingSharedSailingData.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/ReplicatingSharedSailingData.java @@ -17,8 +17,7 @@ public interface ReplicatingSharedSailingData extends SharedSailingData, Void internalCreateMarkProperties(UUID idOfNewMarkProperties, CommonMarkProperties properties, Iterable tags); - Void internalCreateMarkTemplate(UUID idOfNewMarkTemplate, CommonMarkProperties properties, - Iterable tags); + Void internalCreateMarkTemplate(UUID idOfNewMarkTemplate, CommonMarkProperties properties); Void internalCreateCourseTemplate(UUID idOfNewCourseTemplate, String courseTemplateName, Iterable marks, Iterable waypoints, int zeroBasedIndexOfRepeatablePartStart, diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/SharedSailingDataImpl.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/SharedSailingDataImpl.java index cf712b30588..510b13ce907 100644 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/SharedSailingDataImpl.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/SharedSailingDataImpl.java @@ -25,6 +25,7 @@ import com.sap.sailing.domain.coursetemplate.MarkProperties; import com.sap.sailing.domain.coursetemplate.MarkPropertiesBuilder; import com.sap.sailing.domain.coursetemplate.MarkTemplate; import com.sap.sailing.domain.coursetemplate.WaypointTemplate; +import com.sap.sailing.domain.coursetemplate.impl.MarkTemplateImpl; import com.sap.sailing.domain.persistence.DomainObjectFactory; import com.sap.sailing.domain.persistence.MongoObjectFactory; import com.sap.sailing.domain.persistence.racelog.tracking.DeviceIdentifierMongoHandler; @@ -60,8 +61,18 @@ public class SharedSailingDataImpl implements ReplicatingSharedSailingData, Clea this.mongoObjectFactory = mongoObjectFactory; this.deviceIdentifierServiceFinder = deviceIdentifierServiceFinder; this.securityServiceTracker = securityServiceTracker; + + load(); } + private void load() { + // load mark templates before mark properties + domainObjectFactory.loadAllMarkTemplates().forEach(m -> markTemplatesById.put(m.getId(), m)); + + domainObjectFactory.loadAllMarkProperties(v -> markTemplatesById.get(v)) + .forEach(m -> markPropertiesById.put(m.getId(), m)); + } + @Override public void clearState() throws Exception { removeAll(); @@ -77,15 +88,7 @@ public class SharedSailingDataImpl implements ReplicatingSharedSailingData, Clea @Override public Iterable getAllMarkProperties(Iterable tagsToFilterFor) { - - // TODO: ensure mark templates are loaded - // TODO: synchronization - if (markPropertiesById.isEmpty()) { - domainObjectFactory.loadAllMarkProperties(v -> markTemplatesById.get(v)) - .forEach(m -> markPropertiesById.put(m.getId(), m)); - } - return markPropertiesById.values().stream().filter(m -> containsAny(m.getTags(), tagsToFilterFor)) .filter(getSecurityService()::hasCurrentUserReadPermission) .collect(Collectors.toList()); @@ -101,9 +104,8 @@ public class SharedSailingDataImpl implements ReplicatingSharedSailingData, Clea } @Override - public Iterable getAllMarkTemplates(Iterable tagsToFilterFor) { - // TODO Auto-generated method stub - return null; + public Iterable getAllMarkTemplates() { + return markTemplatesById.values(); } @Override @@ -136,8 +138,8 @@ public class SharedSailingDataImpl implements ReplicatingSharedSailingData, Clea properties.getType()).withTags(tags).build(); // TODO: synchronization - markPropertiesById.put(markProperties.getId(), markProperties); mongoObjectFactory.storeMarkProperties(deviceIdentifierServiceFinder, markProperties); + markPropertiesById.put(markProperties.getId(), markProperties); return null; } @@ -181,27 +183,27 @@ public class SharedSailingDataImpl implements ReplicatingSharedSailingData, Clea } @Override - public MarkTemplate createMarkTemplate(CommonMarkProperties properties, Iterable tags) { + public MarkTemplate createMarkTemplate(CommonMarkProperties properties) { final UUID idOfNewMarkTemplate = UUID.randomUUID(); return getSecurityService().setOwnershipCheckPermissionForObjectCreationAndRevertOnError( SecuredDomainType.MARK_TEMPLATE, MarkTemplate.getTypeRelativeObjectIdentifier(idOfNewMarkTemplate), idOfNewMarkTemplate + "/" + properties.getName(), () -> { - apply(s -> s.internalCreateMarkTemplate(idOfNewMarkTemplate, properties, tags)); + apply(s -> s.internalCreateMarkTemplate(idOfNewMarkTemplate, properties)); return getMarkTemplateById(idOfNewMarkTemplate); }); } @Override - public Void internalCreateMarkTemplate(UUID idOfNewMarkTemplate, CommonMarkProperties properties, - Iterable tags) { - // TODO Auto-generated method stub + public Void internalCreateMarkTemplate(UUID idOfNewMarkTemplate, CommonMarkProperties properties) { + MarkTemplate markTemplate = new MarkTemplateImpl(idOfNewMarkTemplate, properties); + mongoObjectFactory.storeMarkTemplate(markTemplate); + markTemplatesById.put(markTemplate.getId(), markTemplate); return null; } @Override public MarkTemplate getMarkTemplateById(UUID id) { - // TODO Auto-generated method stub - return null; + return markTemplatesById.get(id); } @Override