mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-14 22:43:57 +00:00
Bug 5085: Introduced MarkPropertiesBuilder to enable clear split between
api and implementation
This commit is contained in:
1 parent
db8252aff3
commit
13e6ec7b0a
2 files changed
+81
-15
No files matched your search
+15
-15
@@ -201,7 +201,7 @@ import com.sap.sailing.domain.common.racelog.RacingProcedureType;
|
||||
import com.sap.sailing.domain.common.racelog.tracking.TransformationException;
|
||||
import com.sap.sailing.domain.common.tracking.impl.CompetitorJsonConstants;
|
||||
import com.sap.sailing.domain.coursetemplate.MarkProperties;
|
||||
import com.sap.sailing.domain.coursetemplate.impl.MarkPropertiesImpl;
|
||||
import com.sap.sailing.domain.coursetemplate.MarkPropertiesBuilder;
|
||||
import com.sap.sailing.domain.leaderboard.DelayedLeaderboardCorrections;
|
||||
import com.sap.sailing.domain.leaderboard.EventResolver;
|
||||
import com.sap.sailing.domain.leaderboard.FlexibleLeaderboard;
|
||||
@@ -2602,12 +2602,12 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory {
|
||||
|
||||
@Override
|
||||
public Iterable<MarkProperties> loadAllMarkProperties() {
|
||||
List<MarkProperties> result = new ArrayList<>();
|
||||
MongoCollection<Document> configurationCollection = database
|
||||
final List<MarkProperties> result = new ArrayList<>();
|
||||
final MongoCollection<Document> configurationCollection = database
|
||||
.getCollection(CollectionNames.MARK_PROPERTIES.name());
|
||||
try {
|
||||
for (Document dbObject : configurationCollection.find()) {
|
||||
MarkProperties entry = loadMarkPropertiesEntry(dbObject);
|
||||
for (final Document dbObject : configurationCollection.find()) {
|
||||
final MarkProperties entry = loadMarkPropertiesEntry(dbObject);
|
||||
result.add(entry);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
@@ -2618,7 +2618,7 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory {
|
||||
return result;
|
||||
}
|
||||
|
||||
private MarkProperties loadMarkPropertiesEntry(Document dbObject) {
|
||||
private MarkProperties loadMarkPropertiesEntry(final Document dbObject) {
|
||||
final UUID id = UUID.fromString(dbObject.getString(FieldNames.MARK_PROPERTIES_ID));
|
||||
final String name = dbObject.getString(FieldNames.MARK_PROPERTIES_NAME);
|
||||
final String shortName = dbObject.getString(FieldNames.MARK_PROPERTIES_SHORT_NAME);
|
||||
@@ -2631,26 +2631,26 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory {
|
||||
final String storedColor = dbObject.getString(FieldNames.MARK_PROPERTIES_COLOR);
|
||||
final Color color = AbstractColor.getCssColor(storedColor);
|
||||
|
||||
final MarkPropertiesImpl result = new MarkPropertiesImpl(id, name, shortName, color, shape, pattern, markType);
|
||||
|
||||
final Position fixedPosition = loadPosition(
|
||||
dbObject.get(FieldNames.MARK_PROPERTIES_FIXED_POSITION, Document.class));
|
||||
result.setFixedPosition(fixedPosition);
|
||||
|
||||
final BasicDBList tagsList = dbObject.get(FieldNames.MARK_PROPERTIES_TAGS, BasicDBList.class);
|
||||
final Collection<String> tags = new ArrayList<>();
|
||||
tagsList.forEach(t -> tags.add(t.toString()));
|
||||
|
||||
final MarkPropertiesBuilder builder = new MarkPropertiesBuilder(id, name, shortName, color, shape, pattern,
|
||||
markType).withFixedPosition(fixedPosition).withTags(tags);
|
||||
|
||||
try {
|
||||
final DeviceIdentifier deviceIdentifier = loadDeviceId(deviceIdentifierServiceFinder,
|
||||
dbObject.get(FieldNames.MARK_PROPERTIES_TRACKING_DEVICE_IDENTIFIER, Document.class));
|
||||
result.setTrackingDeviceIdentifier(deviceIdentifier);
|
||||
builder.withDeviceId(deviceIdentifier);
|
||||
} catch (TransformationException | NoCorrespondingServiceRegisteredException e) {
|
||||
logger.log(Level.WARNING, "Could not load deviceId for MarkProperties", e);
|
||||
}
|
||||
|
||||
final BasicDBList tagsList = dbObject.get(FieldNames.MARK_PROPERTIES_TAGS, BasicDBList.class);
|
||||
Collection<String> tags = new ArrayList<>();
|
||||
tagsList.forEach(t -> tags.add(t.toString()));
|
||||
result.setTags(tags);
|
||||
|
||||
return result;
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
private DeviceConfiguration loadConfigurationEntry(Document dbObject) throws JsonDeserializationException, ParseException {
|
||||
|
||||
+66
@@ -0,0 +1,66 @@
|
||||
package com.sap.sailing.domain.coursetemplate;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import com.sap.sailing.domain.common.DeviceIdentifier;
|
||||
import com.sap.sailing.domain.common.MarkType;
|
||||
import com.sap.sailing.domain.common.Position;
|
||||
import com.sap.sailing.domain.coursetemplate.impl.MarkPropertiesImpl;
|
||||
import com.sap.sse.common.Color;
|
||||
|
||||
public class MarkPropertiesBuilder {
|
||||
|
||||
private final UUID id;
|
||||
private final String name;
|
||||
private final String shortName;
|
||||
private final Color color;
|
||||
private final String shape;
|
||||
private final String pattern;
|
||||
private final MarkType type;
|
||||
private Iterable<String> tags;
|
||||
private DeviceIdentifier deviceId;
|
||||
private Position position;
|
||||
|
||||
public MarkPropertiesBuilder(UUID id, String name, String shortName, Color color, String shape, String pattern,
|
||||
MarkType type) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.shortName = shortName;
|
||||
this.color = color;
|
||||
this.shape = shape;
|
||||
this.pattern = pattern;
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public MarkPropertiesBuilder withTags(Iterable<String> tags) {
|
||||
this.tags = tags;
|
||||
return this;
|
||||
}
|
||||
|
||||
public MarkPropertiesBuilder withDeviceId(DeviceIdentifier deviceId) {
|
||||
this.deviceId = deviceId;
|
||||
return this;
|
||||
}
|
||||
|
||||
public MarkPropertiesBuilder withFixedPosition(Position position) {
|
||||
this.position = position;
|
||||
return this;
|
||||
}
|
||||
|
||||
public MarkProperties build() {
|
||||
MarkPropertiesImpl impl = new MarkPropertiesImpl(id, name, shortName, color, shape, pattern, type);
|
||||
if (tags != null) {
|
||||
impl.setTags(tags);
|
||||
}
|
||||
|
||||
if (deviceId != null) {
|
||||
impl.setTrackingDeviceIdentifier(deviceId);
|
||||
}
|
||||
|
||||
if (position != null) {
|
||||
impl.setFixedPosition(position);
|
||||
}
|
||||
return impl;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user