From 7b5ac20e59e8ccdccd1225693aecd6f7983db5f7 Mon Sep 17 00:00:00 2001 From: Steffen Jacobs Date: Tue, 13 Aug 2019 11:03:52 +0200 Subject: [PATCH] Bug 5085: added storing for MarkTemplates --- .../persistence/MongoObjectFactory.java | 5 ++++ .../persistence/impl/CollectionNames.java | 6 ++++- .../domain/persistence/impl/FieldNames.java | 3 +++ .../impl/MongoObjectFactoryImpl.java | 26 +++++++++++++++++++ 4 files changed, 39 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/MongoObjectFactory.java b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/MongoObjectFactory.java index eecab94f4f4..c82ea48e231 100755 --- a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/MongoObjectFactory.java +++ b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/MongoObjectFactory.java @@ -21,6 +21,7 @@ import com.sap.sailing.domain.base.configuration.DeviceConfiguration; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.common.dto.AnniversaryType; import com.sap.sailing.domain.coursetemplate.MarkProperties; +import com.sap.sailing.domain.coursetemplate.MarkTemplate; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.LeaderboardGroup; import com.sap.sailing.domain.persistence.racelog.tracking.DeviceIdentifierMongoHandler; @@ -220,4 +221,8 @@ public interface MongoObjectFactory { /** Removes a {@link MarkProperties} object from the database. */ void removeMarkProperties(UUID markPropertiesId); + + void storeMarkTemplate(MarkTemplate markTemplate); + + void removeMarkTemplate(UUID markTemplateId); } diff --git a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/CollectionNames.java b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/CollectionNames.java index a2862c9e1f1..e9f31838810 100755 --- a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/CollectionNames.java +++ b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/CollectionNames.java @@ -3,6 +3,7 @@ package com.sap.sailing.domain.persistence.impl; import com.sap.sailing.domain.base.RaceDefinition; import com.sap.sailing.domain.common.tracking.GPSFix; import com.sap.sailing.domain.coursetemplate.MarkProperties; +import com.sap.sailing.domain.coursetemplate.MarkTemplate; import com.sap.sailing.domain.tracking.RaceTrackingConnectivityParameters; /** @@ -124,5 +125,8 @@ public enum CollectionNames { ANNIVERSARIES, /** Contains the {@link MarkProperties}. */ - MARK_PROPERTIES + MARK_PROPERTIES, + + /** Contains the {@link MarkTemplate} objects. */ + MARK_TEMPLATES } diff --git a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/FieldNames.java b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/FieldNames.java index f01236cf0ff..e49963ff2ab 100644 --- a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/FieldNames.java +++ b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/FieldNames.java @@ -176,4 +176,7 @@ public enum FieldNames { MARK_PROPERTIES_ID, MARK_PROPERTIES_FIXED_POSITION, MARK_PROPERTIES_TAGS, MARK_PROPERTIES_TRACKING_DEVICE_IDENTIFIER, MARK_PROPERTIES_USED_ROLE, MARK_PROPERTIES_USED_TEMPLATE, // common mark properties COMMON_MARK_PROPERTIES_COLOR, COMMON_MARK_PROPERTIES_NAME, COMMON_MARK_PROPERTIES_PATTERN, COMMON_MARK_PROPERTIES_SHAPE, COMMON_MARK_PROPERTIES_SHORT_NAME, COMMON_MARK_PROPERTIES_TYPE, + + // mark template fields + MARK_TEMPLATE_ID; } diff --git a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/MongoObjectFactoryImpl.java b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/MongoObjectFactoryImpl.java index 4000088b784..2b9e53f0637 100644 --- a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/MongoObjectFactoryImpl.java +++ b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/MongoObjectFactoryImpl.java @@ -105,6 +105,7 @@ import com.sap.sailing.domain.common.dto.AnniversaryType; import com.sap.sailing.domain.common.racelog.tracking.TransformationException; import com.sap.sailing.domain.coursetemplate.CommonMarkProperties; import com.sap.sailing.domain.coursetemplate.MarkProperties; +import com.sap.sailing.domain.coursetemplate.MarkTemplate; import com.sap.sailing.domain.leaderboard.FlexibleLeaderboard; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.LeaderboardGroup; @@ -1874,4 +1875,29 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory { e.printStackTrace(); } } + + @Override + public void storeMarkTemplate(MarkTemplate markTemplate) { + final MongoCollection collection = database.getCollection(CollectionNames.MARK_TEMPLATES.name()); + final Document query = new Document(FieldNames.MARK_TEMPLATE_ID.name(), markTemplate.getId().toString()); + + final Document entry = storeMarkTemplateToDocument(markTemplate); + collection.withWriteConcern(WriteConcern.ACKNOWLEDGED).replaceOne(query, entry, + new UpdateOptions().upsert(true)); + } + + private Document storeMarkTemplateToDocument(MarkTemplate markTemplate) { + final Document result = new Document(FieldNames.MARK_TEMPLATE_ID.name(), markTemplate.getId().toString()); + storeCommonMarkProperties(markTemplate, result); + return result; + } + + @Override + public void removeMarkTemplate(UUID markTemplateId) { + final MongoCollection configurationsCollections = database + .getCollection(CollectionNames.MARK_TEMPLATES.name()); + final Document query = new Document(FieldNames.MARK_TEMPLATE_ID.name(), markTemplateId.toString()); + configurationsCollections.deleteOne(query); + } + }