diff --git a/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/persistence/maneuver/AbstractTransformedManeuversPersistenceManager.java b/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/persistence/maneuver/AbstractTransformedManeuversPersistenceManager.java index 3249d993437..c93c9239cb9 100644 --- a/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/persistence/maneuver/AbstractTransformedManeuversPersistenceManager.java +++ b/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/persistence/maneuver/AbstractTransformedManeuversPersistenceManager.java @@ -2,7 +2,7 @@ package com.sap.sailing.windestimation.data.persistence.maneuver; import java.net.UnknownHostException; -import org.bson.conversions.Bson; +import org.bson.Document; import com.sap.sailing.windestimation.util.LoggingUtil; @@ -16,7 +16,7 @@ public abstract class AbstractTransformedManeuversPersistenceManager extends this.dependencyOnOtherPersistenceManagers = dependencyToOtherPersistenceManagers; } - protected abstract Bson getMongoDbEvalStringForTransformation(); + protected abstract String getMongoDbEvalStringForTransformation(); public void createIfNotExistsCollectionWithTransformedManeuvers() { boolean collectionExists = collectionExists(); @@ -48,7 +48,7 @@ public abstract class AbstractTransformedManeuversPersistenceManager extends } dropCollection(); LoggingUtil.logInfo("Transformation for \"" + getCollectionName() + "\" collection started."); - Object result = getDb().runCommand(getMongoDbEvalStringForTransformation()); + Object result = getDb().runCommand(Document.parse(getMongoDbEvalStringForTransformation())); long numberOfElements = countElements(); if (numberOfElements < 1) { dropCollection(); diff --git a/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/persistence/maneuver/ManeuverForDataAnalysisPersistenceManager.java b/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/persistence/maneuver/ManeuverForDataAnalysisPersistenceManager.java index bd5674358d9..8c0896e6452 100644 --- a/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/persistence/maneuver/ManeuverForDataAnalysisPersistenceManager.java +++ b/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/persistence/maneuver/ManeuverForDataAnalysisPersistenceManager.java @@ -1,10 +1,6 @@ package com.sap.sailing.windestimation.data.persistence.maneuver; import java.net.UnknownHostException; -import java.util.Arrays; - -import org.bson.Document; -import org.bson.conversions.Bson; public class ManeuverForDataAnalysisPersistenceManager extends AbstractTransformedManeuversForDataAnalysisPersistenceManager { @@ -22,20 +18,18 @@ public class ManeuverForDataAnalysisPersistenceManager //TODO repair if required @Override - protected Bson getMongoDbEvalStringForTransformation() { - return new Document().append("aggregate", RaceWithManeuverForDataAnalysisPersistenceManager.COLLECTION_NAME + "." + AbstractRaceWithEstimationDataPersistenceManager.COMPETITOR_TRACKS_COLLECTION_NAME_EXTENSION). - append("pipeline", Arrays.asList( - new Document("$addFields", new Document().append("competitorTracks.elements.regattaName", "$regattaName")), - new Document("$addFields", new Document().append("competitorTracks.elements.windQuality", "$windQuality")), - new Document("$addFields", new Document().append("competitorTracks.trackId", - new Document("$concat", Arrays.asList("$regattaName", " - ", "$trackedRaceName")))), - new Document("$unwind", "$competitorTracks"). - new Document("$addFields", new Document() - .append("competitorTracks.elements.trackId", new Document("$concat", Arrays.asList("$competitorTracks.trackId", " # ", "$competitorTracks.competitorName"))) - .append("competitorTracks.avgTrackSpeedInKnots", new Document("$divide", new Document("$divide", - Arrays.asList("$competitorTracks.distanceTravelledInMeters", new Document("$divide", - Arrays.asList(new Document("$subtract", - Arrays.asList("$competitorTracks.endUnixTime", "$competitorTracks.startUnixTime")))), + protected String getMongoDbEvalStringForTransformation() { + return "{" + + "aggregate: '" + RaceWithManeuverForDataAnalysisPersistenceManager.COLLECTION_NAME + "." + AbstractRaceWithEstimationDataPersistenceManager.COMPETITOR_TRACKS_COLLECTION_NAME_EXTENSION + "',\r\n" + + "pipeline: [\r\n" + + "{$addFields: {\"competitorTracks.elements.regattaName\": '$regattaName'}},\r\n" + + "{$addFields: {\"competitorTracks.elements.windQuality\": '$windQuality'}},\r\n" + + "{$addFields: {\"competitorTracks.trackId\": {$concat: ['$regattaName', ' - ', '$trackedRaceName']}}},\r\n" + + "{$unwind: '$competitorTracks'},\r\n" + "{$addFields: {\r\n" + + " \"competitorTracks.elements.trackId\": {$concat: ['$competitorTracks.trackId', ' # ', '$competitorTracks.competitorName']},\r\n" + + " 'competitorTracks.avgTrackSpeedInKnots': {$divide: [\r\n" + " {$divide:\r\n" + + " ['$competitorTracks.distanceTravelledInMeters',\r\n" + " {$divide: \r\n" + + " [ {$subtract: ['$competitorTracks.endUnixTime', '$competitorTracks.startUnixTime']},\r\n" + " 1000.0\r\n" + " ]}\r\n" + " ]\r\n" + " },\r\n" + " 0.5144444444444\r\n" + " ]},\r\n" + " 'markPassingsCountMatchesWaypointsCount': {$eq: ['$competitorTracks.markPassingsCount', '$competitorTracks.waypointsCount']},\r\n" @@ -49,7 +43,10 @@ public class ManeuverForDataAnalysisPersistenceManager + " {'competitorTracks.avgTrackSpeedInKnots': {\r\n" + " $gt: 1.0\r\n" + " }}\r\n" + " ]\r\n" + "}},\r\n" + "{$project: {\r\n" + " elements: '$competitorTracks.elements'\r\n" + "}},\r\n" + "{$unwind: '$elements'},\r\n" - + "{$replaceRoot: {newRoot : '$elements'}},\r\n" + "{$out: '" + COLLECTION_NAME + "'}\r\n" + "])\r\n"; + + "{$replaceRoot: {newRoot : '$elements'}},\r\n" + "{$out: '" + COLLECTION_NAME + "'}\r\n" + + "],\r\n" + + "cursor: {}\r\n" + + "}"; } } diff --git a/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/persistence/maneuver/ManeuverForEstimationPersistenceManager.java b/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/persistence/maneuver/ManeuverForEstimationPersistenceManager.java index f6a21e9cdfa..85c09972c01 100644 --- a/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/persistence/maneuver/ManeuverForEstimationPersistenceManager.java +++ b/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/persistence/maneuver/ManeuverForEstimationPersistenceManager.java @@ -2,8 +2,6 @@ package com.sap.sailing.windestimation.data.persistence.maneuver; import java.net.UnknownHostException; -import org.bson.conversions.Bson; - public class ManeuverForEstimationPersistenceManager extends AbstractTransformedManeuversForEstimationPersistenceManager { @@ -19,8 +17,10 @@ public class ManeuverForEstimationPersistenceManager } @Override - protected Bson getMongoDbEvalStringForTransformation() { - return "db.getCollection('" + RaceWithManeuverForEstimationPersistenceManager.COLLECTION_NAME + "." + AbstractRaceWithEstimationDataPersistenceManager.COMPETITOR_TRACKS_COLLECTION_NAME_EXTENSION + "').aggregate([\r\n" + + protected String getMongoDbEvalStringForTransformation() { + return "{" + + "aggregate: '" + RaceWithManeuverForEstimationPersistenceManager.COLLECTION_NAME + "." + AbstractRaceWithEstimationDataPersistenceManager.COMPETITOR_TRACKS_COLLECTION_NAME_EXTENSION + "',\r\n" + + "pipeline: [\r\n" + "{$match: {\r\n" + " 'clean': true\r\n" + "}},\r\n" + @@ -30,7 +30,9 @@ public class ManeuverForEstimationPersistenceManager "{$unwind: '$elements'},\r\n" + "{$replaceRoot: {newRoot : '$elements'}},\r\n" + "{$out: '" + COLLECTION_NAME + "'}\r\n" + - "])"; + "],\r\n" + + "cursor: {}\r\n" + + "}"; } } diff --git a/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/persistence/maneuver/PenaltyCircleManeuverForDataAnalysisPersistenceManager.java b/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/persistence/maneuver/PenaltyCircleManeuverForDataAnalysisPersistenceManager.java index 5e6edb412b6..e27620339d2 100644 --- a/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/persistence/maneuver/PenaltyCircleManeuverForDataAnalysisPersistenceManager.java +++ b/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/persistence/maneuver/PenaltyCircleManeuverForDataAnalysisPersistenceManager.java @@ -2,8 +2,6 @@ package com.sap.sailing.windestimation.data.persistence.maneuver; import java.net.UnknownHostException; -import org.bson.conversions.Bson; - public class PenaltyCircleManeuverForDataAnalysisPersistenceManager extends AbstractTransformedManeuversForDataAnalysisPersistenceManager { @@ -19,10 +17,16 @@ public class PenaltyCircleManeuverForDataAnalysisPersistenceManager } @Override - protected Bson getMongoDbEvalStringForTransformation() { - return "db.getCollection('" + ManeuverForDataAnalysisPersistenceManager.COLLECTION_NAME + "').aggregate([\r\n" + "{$match: {\r\n" + " $and: [\r\n" + protected String getMongoDbEvalStringForTransformation() { + return "{" + + "aggregate: '" + ManeuverForDataAnalysisPersistenceManager.COLLECTION_NAME + "',\r\n" + + "pipeline: [\r\n" + + "{$match: {\r\n" + " $and: [\r\n" + " {'category': {\r\n" + " $eq: '_360'\r\n" + " }}\r\n" + " ]\r\n" - + "}},\r\n" + "{$out: 'penaltyCirclesForDataAnalysis'}\r\n" + "])\r\n"; + + "}},\r\n" + "{$out: '" + COLLECTION_NAME + "'}\r\n" + + "],\r\n" + + "cursor: {}\r\n" + + "}"; } } diff --git a/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/persistence/maneuver/PenaltyCircleManeuverForEstimationPersistenceManager.java b/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/persistence/maneuver/PenaltyCircleManeuverForEstimationPersistenceManager.java index 152d7e3eda6..48731392307 100644 --- a/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/persistence/maneuver/PenaltyCircleManeuverForEstimationPersistenceManager.java +++ b/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/persistence/maneuver/PenaltyCircleManeuverForEstimationPersistenceManager.java @@ -2,8 +2,6 @@ package com.sap.sailing.windestimation.data.persistence.maneuver; import java.net.UnknownHostException; -import org.bson.conversions.Bson; - public class PenaltyCircleManeuverForEstimationPersistenceManager extends AbstractTransformedManeuversForEstimationPersistenceManager { @@ -19,15 +17,19 @@ public class PenaltyCircleManeuverForEstimationPersistenceManager } @Override - protected Bson getMongoDbEvalStringForTransformation() { - return "db.getCollection('" + ManeuverForEstimationPersistenceManager.COLLECTION_NAME + "').aggregate([\r\n" + + protected String getMongoDbEvalStringForTransformation() { + return "{" + + "aggregate: '" + ManeuverForEstimationPersistenceManager.COLLECTION_NAME + "',\r\n" + + "pipeline: [\r\n" + "{$match: {\r\n" + " {'category': {\r\n" + " $eq: '_360'\r\n" + " }}\r\n" + "}},\r\n" + - "{$out: 'penaltyCirclesForEstimation'}\r\n" + - "])"; + "{$out: '" + COLLECTION_NAME + "'}\r\n" + + "],\r\n" + + "cursor: {}\r\n" + + "}"; } } diff --git a/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/persistence/maneuver/RegularManeuverWithMarkPassingForDataAnalysisPersistenceManager.java b/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/persistence/maneuver/RegularManeuverWithMarkPassingForDataAnalysisPersistenceManager.java index f916f9d5a98..17a73a21c22 100644 --- a/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/persistence/maneuver/RegularManeuverWithMarkPassingForDataAnalysisPersistenceManager.java +++ b/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/persistence/maneuver/RegularManeuverWithMarkPassingForDataAnalysisPersistenceManager.java @@ -2,29 +2,35 @@ package com.sap.sailing.windestimation.data.persistence.maneuver; import java.net.UnknownHostException; -import org.bson.conversions.Bson; - public class RegularManeuverWithMarkPassingForDataAnalysisPersistenceManager extends AbstractTransformedManeuversForDataAnalysisPersistenceManager { + public static final String COLLECTION_NAME = "regularManeuversWithMarkPassingsForDataAnalysis"; + public RegularManeuverWithMarkPassingForDataAnalysisPersistenceManager() throws UnknownHostException { super(new ManeuverForDataAnalysisPersistenceManager()); } @Override public String getCollectionName() { - return "regularManeuversWithMarkPassingsForDataAnalysis"; + return COLLECTION_NAME; } @Override - protected Bson getMongoDbEvalStringForTransformation() { - return "db.getCollection('maneuversForDataAnalysis').aggregate([\r\n" + "{$match: {\r\n" + " $and: [\r\n" + protected String getMongoDbEvalStringForTransformation() { + return "{" + + "aggregate: '" + ManeuverForDataAnalysisPersistenceManager.COLLECTION_NAME + "',\r\n" + + "pipeline: [\r\n" + + "{$match: {\r\n" + " $and: [\r\n" + " {'absMainCurveAngle': {\r\n" + " $gte: 20\r\n" + " }},\r\n" + " {'absMainCurveAngle': {\r\n" + " $lte: 120\r\n" + " }},\r\n" + " {'deviationTackAngle': {\r\n" + " $ne: null\r\n" + " }},\r\n" + " {'deviationJibeAngle': {\r\n" + " $ne: null\r\n" + " }},\r\n" + " {'clean': {\r\n" + " $eq: true\r\n" + " }}\r\n" + " ]\r\n" + "}},\r\n" - + "{$out: 'regularManeuversWithMarkPassingsForDataAnalysis'}\r\n" + "])\r\n"; + + "{$out: '" + COLLECTION_NAME + "'}\r\n" + + "],\r\n" + + "cursor: {}\r\n" + + "}"; } } diff --git a/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/persistence/maneuver/RegularManeuverWithoutMarkPassingForDataAnalysisPersistenceManager.java b/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/persistence/maneuver/RegularManeuverWithoutMarkPassingForDataAnalysisPersistenceManager.java index 85a8bcb8062..689452dd902 100644 --- a/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/persistence/maneuver/RegularManeuverWithoutMarkPassingForDataAnalysisPersistenceManager.java +++ b/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/persistence/maneuver/RegularManeuverWithoutMarkPassingForDataAnalysisPersistenceManager.java @@ -2,26 +2,32 @@ package com.sap.sailing.windestimation.data.persistence.maneuver; import java.net.UnknownHostException; -import org.bson.conversions.Bson; - public class RegularManeuverWithoutMarkPassingForDataAnalysisPersistenceManager extends AbstractTransformedManeuversForDataAnalysisPersistenceManager { + private static final String COLLECTION_NAME = "regularManeuversWithoutMarkPassingsForDataAnalysis"; + public RegularManeuverWithoutMarkPassingForDataAnalysisPersistenceManager() throws UnknownHostException { super(new RegularManeuverWithMarkPassingForDataAnalysisPersistenceManager()); } @Override public String getCollectionName() { - return "regularManeuversWithoutMarkPassingsForDataAnalysis"; + return COLLECTION_NAME; } @Override - protected Bson getMongoDbEvalStringForTransformation() { - return "db.getCollection('regularManeuversWithMarkPassingsForDataAnalysis').aggregate([\r\n" + "{$match: {\r\n" + protected String getMongoDbEvalStringForTransformation() { + return "{" + + "aggregate: '" + RegularManeuverWithMarkPassingForDataAnalysisPersistenceManager.COLLECTION_NAME + "',\r\n" + + "pipeline: [\r\n" + + "{$match: {\r\n" + " $and: [\r\n" + " {'category': {\r\n" + " $ne: 'MARK_PASSING'\r\n" + " }}\r\n" + " ]\r\n" + "}},\r\n" - + "{$out: 'regularManeuversWithoutMarkPassingsForDataAnalysis'}\r\n" + "])\r\n"; + + "{$out: '" + COLLECTION_NAME + "'}\r\n" + + "],\r\n" + + "cursor: {}\r\n" + + "}"; } } diff --git a/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/persistence/maneuver/RegularManeuversForEstimationPersistenceManager.java b/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/persistence/maneuver/RegularManeuversForEstimationPersistenceManager.java index fe9ff083ec9..7225dbbd481 100644 --- a/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/persistence/maneuver/RegularManeuversForEstimationPersistenceManager.java +++ b/java/com.sap.sailing.windestimation.lab/src/com/sap/sailing/windestimation/data/persistence/maneuver/RegularManeuversForEstimationPersistenceManager.java @@ -2,8 +2,6 @@ package com.sap.sailing.windestimation.data.persistence.maneuver; import java.net.UnknownHostException; -import org.bson.conversions.Bson; - public class RegularManeuversForEstimationPersistenceManager extends AbstractTransformedManeuversForEstimationPersistenceManager { @@ -19,8 +17,10 @@ public class RegularManeuversForEstimationPersistenceManager } @Override - protected Bson getMongoDbEvalStringForTransformation() { - return "db.getCollection('" + ManeuverForEstimationPersistenceManager.COLLECTION_NAME + "').aggregate([\r\n" + + protected String getMongoDbEvalStringForTransformation() { + return "{" + + "aggregate: '" + ManeuverForEstimationPersistenceManager.COLLECTION_NAME + "',\r\n" + + "pipeline: [\r\n" + "{$match: {\r\n" + " $and: [\r\n" + " {$or: [\r\n" + @@ -43,7 +43,9 @@ public class RegularManeuversForEstimationPersistenceManager " ]\r\n" + "}},\r\n" + "{$out: '" + COLLECTION_NAME + "'}\r\n" + - "])"; + "],\r\n" + + "cursor: {}\r\n" + + "}"; } }