mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-14 22:43:57 +00:00
Bug 5085: Added loading + improved storing capabilities for
MarkProperties
This commit is contained in:
1 parent
ef5a294515
commit
db8252aff3
4 files changed
+78
-4
No files matched your search
+3
@@ -28,6 +28,7 @@ import com.sap.sailing.domain.base.impl.DynamicCompetitor;
|
||||
import com.sap.sailing.domain.common.RaceIdentifier;
|
||||
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.leaderboard.EventResolver;
|
||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.LeaderboardGroup;
|
||||
@@ -216,4 +217,6 @@ public interface DomainObjectFactory {
|
||||
* Loads all stored anniversary races.
|
||||
*/
|
||||
Map<? extends Integer, ? extends Pair<DetailedRaceInfo, AnniversaryType>> getAnniversaryData() throws MalformedURLException;
|
||||
|
||||
Iterable<MarkProperties> loadAllMarkProperties();
|
||||
}
|
||||
+56
@@ -33,6 +33,7 @@ import org.json.simple.JSONObject;
|
||||
import org.json.simple.parser.JSONParser;
|
||||
import org.json.simple.parser.ParseException;
|
||||
|
||||
import com.mongodb.BasicDBList;
|
||||
import com.mongodb.MongoException;
|
||||
import com.mongodb.MongoNamespace;
|
||||
import com.mongodb.client.FindIterable;
|
||||
@@ -199,6 +200,8 @@ import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus;
|
||||
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.leaderboard.DelayedLeaderboardCorrections;
|
||||
import com.sap.sailing.domain.leaderboard.EventResolver;
|
||||
import com.sap.sailing.domain.leaderboard.FlexibleLeaderboard;
|
||||
@@ -2597,6 +2600,59 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory {
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<MarkProperties> loadAllMarkProperties() {
|
||||
List<MarkProperties> result = new ArrayList<>();
|
||||
MongoCollection<Document> configurationCollection = database
|
||||
.getCollection(CollectionNames.MARK_PROPERTIES.name());
|
||||
try {
|
||||
for (Document dbObject : configurationCollection.find()) {
|
||||
MarkProperties entry = loadMarkPropertiesEntry(dbObject);
|
||||
result.add(entry);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
logger.log(Level.SEVERE, "Error connecting to MongoDB, unable to load mark properties.");
|
||||
logger.log(Level.SEVERE, "loadAllMarkProperties", e);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private MarkProperties loadMarkPropertiesEntry(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);
|
||||
final String pattern = dbObject.getString(FieldNames.MARK_PROPERTIES_PATTERN);
|
||||
final String shape = dbObject.getString(FieldNames.MARK_PROPERTIES_SHAPE);
|
||||
|
||||
final String type = dbObject.getString(FieldNames.MARK_PROPERTIES_TYPE);
|
||||
final MarkType markType = MarkType.valueOf(type);
|
||||
|
||||
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);
|
||||
|
||||
try {
|
||||
final DeviceIdentifier deviceIdentifier = loadDeviceId(deviceIdentifierServiceFinder,
|
||||
dbObject.get(FieldNames.MARK_PROPERTIES_TRACKING_DEVICE_IDENTIFIER, Document.class));
|
||||
result.setTrackingDeviceIdentifier(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;
|
||||
}
|
||||
|
||||
private DeviceConfiguration loadConfigurationEntry(Document dbObject) throws JsonDeserializationException, ParseException {
|
||||
final String idAsString = dbObject.getString(FieldNames.CONFIGURATION_ID_AS_STRING.name());
|
||||
final DeviceConfiguration configuration;
|
||||
|
||||
+9
-4
@@ -1333,9 +1333,8 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory {
|
||||
MarkProperties markProperties) {
|
||||
MongoCollection<Document> collection = database.getCollection(CollectionNames.MARK_PROPERTIES.name());
|
||||
Document query = new Document(FieldNames.MARK_PROPERTIES_ID.name(), markProperties.getId().toString());
|
||||
Document entry;
|
||||
try {
|
||||
entry = storeMarkPropertiesToDocument(deviceIdentifierServiceFinder, markProperties);
|
||||
Document entry = storeMarkPropertiesToDocument(deviceIdentifierServiceFinder, markProperties);
|
||||
collection.withWriteConcern(WriteConcern.ACKNOWLEDGED).replaceOne(query, entry,
|
||||
new UpdateOptions().upsert(true));
|
||||
} catch (TransformationException | NoCorrespondingServiceRegisteredException e) {
|
||||
@@ -1356,10 +1355,16 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory {
|
||||
result.put(FieldNames.MARK_PROPERTIES_PATTERN.name(), markProperties.getPattern());
|
||||
result.put(FieldNames.MARK_PROPERTIES_SHAPE.name(), markProperties.getShape());
|
||||
result.put(FieldNames.MARK_PROPERTIES_SHORT_NAME.name(), markProperties.getShortName());
|
||||
result.put(FieldNames.MARK_PROPERTIES_TAGS.name(), markProperties.getTags());
|
||||
|
||||
BasicDBList tags = new BasicDBList();
|
||||
markProperties.getTags().forEach(t -> tags.add(t));
|
||||
result.put(FieldNames.MARK_PROPERTIES_TAGS.name(), tags);
|
||||
|
||||
result.put(FieldNames.MARK_PROPERTIES_TRACKING_DEVICE_IDENTIFIER.name(),
|
||||
storeDeviceId(deviceIdentifierServiceFinder, markProperties.getTrackingDeviceIdentifier()));
|
||||
result.put(FieldNames.MARK_PROPERTIES_TYPE.name(), markProperties.getType());
|
||||
|
||||
result.put(FieldNames.MARK_PROPERTIES_TYPE.name(),
|
||||
markProperties.getType() == null ? null : markProperties.getType().name());
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
+10
@@ -12,6 +12,7 @@ public class MarkPropertiesImpl extends CommonMarkPropertiesImpl implements Mark
|
||||
private static final long serialVersionUID = -5588202720707030502L;
|
||||
private DeviceIdentifier trackingDeviceIdentifier;
|
||||
private Position fixedPosition;
|
||||
private Iterable<String> tags;
|
||||
|
||||
public MarkPropertiesImpl(String name, String shortName, Color color, String shape, String pattern, MarkType type) {
|
||||
super(name, shortName, color, shape, pattern, type);
|
||||
@@ -67,4 +68,13 @@ public class MarkPropertiesImpl extends CommonMarkPropertiesImpl implements Mark
|
||||
this.fixedPosition = fixedPosition;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<String> getTags() {
|
||||
return this.tags;
|
||||
}
|
||||
|
||||
public void setTags(Iterable<String> tags) {
|
||||
this.tags = tags;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user