From 8fb7b80c265605434b9e363c9748dda6fa217272 Mon Sep 17 00:00:00 2001 From: MarkWolters Date: Wed, 8 May 2024 18:45:02 -0400 Subject: [PATCH] refactor common code --- .../DataApiDeleteOneOpDispenser.java | 27 +++++++++---------- .../DataApiFindOneAndDeleteOpDispenser.java | 27 +++++++++---------- .../DataApiFindOneOpDispenser.java | 25 ++++++++--------- .../opdispensers/DataApiFindOpDispenser.java | 25 ++++++++--------- .../opdispensers/DataApiOpDispenser.java | 17 ++++++++++++ 5 files changed, 63 insertions(+), 58 deletions(-) diff --git a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiDeleteOneOpDispenser.java b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiDeleteOneOpDispenser.java index 3473267a8..f2de7714a 100644 --- a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiDeleteOneOpDispenser.java +++ b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiDeleteOneOpDispenser.java @@ -17,10 +17,7 @@ package io.nosqlbench.adapter.dataapi.opdispensers; import com.datastax.astra.client.Database; -import com.datastax.astra.client.model.DeleteOneOptions; -import com.datastax.astra.client.model.Filter; -import com.datastax.astra.client.model.Filters; -import com.datastax.astra.client.model.Sorts; +import com.datastax.astra.client.model.*; import io.nosqlbench.adapter.dataapi.DataApiDriverAdapter; import io.nosqlbench.adapter.dataapi.ops.DataApiBaseOp; import io.nosqlbench.adapter.dataapi.ops.DataApiDeleteOneOp; @@ -45,17 +42,8 @@ public class DataApiDeleteOneOpDispenser extends DataApiOpDispenser { return (l) -> { Database db = spaceFunction.apply(l).getDatabase(); Filter filter = getFilterFromOp(op, l); - DeleteOneOptions options = new DeleteOneOptions(); - Optional> sortFunction = op.getAsOptionalFunction("sort", Map.class); - if (sortFunction.isPresent()) { - Map sortFields = sortFunction.get().apply(l); - String sortOrder = sortFields.get("type").toString(); - String sortField = sortFields.get("field").toString(); - switch(sortOrder) { - case "asc" -> options = options.sort(Sorts.ascending(sortField)); - case "desc" -> options = options.sort(Sorts.descending(sortField)); - } - } + DeleteOneOptions options = getDeleteOneOptions(op, l); + return new DataApiDeleteOneOp( db, db.getCollection(targetFunction.apply(l)), @@ -65,6 +53,15 @@ public class DataApiDeleteOneOpDispenser extends DataApiOpDispenser { }; } + private DeleteOneOptions getDeleteOneOptions(ParsedOp op, long l) { + DeleteOneOptions options = new DeleteOneOptions(); + Sort sort = getSortFromOp(op, l); + if (sort != null) { + options = options.sort(sort); + } + return options; + } + @Override public DataApiBaseOp getOp(long value) { return opFunction.apply(value); diff --git a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiFindOneAndDeleteOpDispenser.java b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiFindOneAndDeleteOpDispenser.java index 47e594ae4..b63a6386c 100644 --- a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiFindOneAndDeleteOpDispenser.java +++ b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiFindOneAndDeleteOpDispenser.java @@ -18,9 +18,8 @@ package io.nosqlbench.adapter.dataapi.opdispensers; import com.datastax.astra.client.Database; import com.datastax.astra.client.model.Filter; -import com.datastax.astra.client.model.Filters; import com.datastax.astra.client.model.FindOneAndDeleteOptions; -import com.datastax.astra.client.model.Sorts; +import com.datastax.astra.client.model.Sort; import io.nosqlbench.adapter.dataapi.DataApiDriverAdapter; import io.nosqlbench.adapter.dataapi.ops.DataApiBaseOp; import io.nosqlbench.adapter.dataapi.ops.DataApiFindOneAndDeleteOp; @@ -28,8 +27,6 @@ import io.nosqlbench.adapters.api.templating.ParsedOp; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import java.util.Map; -import java.util.Optional; import java.util.function.LongFunction; public class DataApiFindOneAndDeleteOpDispenser extends DataApiOpDispenser { @@ -45,17 +42,8 @@ public class DataApiFindOneAndDeleteOpDispenser extends DataApiOpDispenser { return (l) -> { Database db = spaceFunction.apply(l).getDatabase(); Filter filter = getFilterFromOp(op, l); - FindOneAndDeleteOptions options = new FindOneAndDeleteOptions(); - Optional> sortFunction = op.getAsOptionalFunction("sort", Map.class); - if (sortFunction.isPresent()) { - Map sortFields = sortFunction.get().apply(l); - String sortOrder = sortFields.get("type").toString(); - String sortField = sortFields.get("field").toString(); - switch(sortOrder) { - case "asc" -> options = options.sort(Sorts.ascending(sortField)); - case "desc" -> options = options.sort(Sorts.descending(sortField)); - } - } + FindOneAndDeleteOptions options = getFindOneAndDeleteOptions(op, l); + return new DataApiFindOneAndDeleteOp( db, db.getCollection(targetFunction.apply(l)), @@ -65,6 +53,15 @@ public class DataApiFindOneAndDeleteOpDispenser extends DataApiOpDispenser { }; } + private FindOneAndDeleteOptions getFindOneAndDeleteOptions(ParsedOp op, long l) { + FindOneAndDeleteOptions options = new FindOneAndDeleteOptions(); + Sort sort = getSortFromOp(op, l); + if (sort != null) { + options = options.sort(sort); + } + return options; + } + @Override public DataApiBaseOp getOp(long value) { return opFunction.apply(value); diff --git a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiFindOneOpDispenser.java b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiFindOneOpDispenser.java index 87478e90b..a07c0be97 100644 --- a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiFindOneOpDispenser.java +++ b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiFindOneOpDispenser.java @@ -19,7 +19,7 @@ package io.nosqlbench.adapter.dataapi.opdispensers; import com.datastax.astra.client.Database; import com.datastax.astra.client.model.Filter; import com.datastax.astra.client.model.FindOneOptions; -import com.datastax.astra.client.model.Sorts; +import com.datastax.astra.client.model.Sort; import io.nosqlbench.adapter.dataapi.DataApiDriverAdapter; import io.nosqlbench.adapter.dataapi.ops.DataApiBaseOp; import io.nosqlbench.adapter.dataapi.ops.DataApiFindOneOp; @@ -27,8 +27,6 @@ import io.nosqlbench.adapters.api.templating.ParsedOp; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import java.util.Map; -import java.util.Optional; import java.util.function.LongFunction; public class DataApiFindOneOpDispenser extends DataApiOpDispenser { @@ -43,17 +41,7 @@ public class DataApiFindOneOpDispenser extends DataApiOpDispenser { return (l) -> { Database db = spaceFunction.apply(l).getDatabase(); Filter filter = getFilterFromOp(op, l); - FindOneOptions options = new FindOneOptions(); - Optional> sortFunction = op.getAsOptionalFunction("sort", Map.class); - if (sortFunction.isPresent()) { - Map sortFields = sortFunction.get().apply(l); - String sortOrder = sortFields.get("type").toString(); - String sortField = sortFields.get("field").toString(); - switch(sortOrder) { - case "asc" -> options = options.sort(Sorts.ascending(sortField)); - case "desc" -> options = options.sort(Sorts.descending(sortField)); - } - } + FindOneOptions options = getFindOneOptions(op, l); return new DataApiFindOneOp( db, db.getCollection(targetFunction.apply(l)), @@ -63,6 +51,15 @@ public class DataApiFindOneOpDispenser extends DataApiOpDispenser { }; } + private FindOneOptions getFindOneOptions(ParsedOp op, long l) { + FindOneOptions options = new FindOneOptions(); + Sort sort = getSortFromOp(op, l); + if (sort != null) { + options = options.sort(sort); + } + return options; + } + @Override public DataApiBaseOp getOp(long value) { return opFunction.apply(value); diff --git a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiFindOpDispenser.java b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiFindOpDispenser.java index adc2665f6..3c9af8fa3 100644 --- a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiFindOpDispenser.java +++ b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiFindOpDispenser.java @@ -19,7 +19,7 @@ package io.nosqlbench.adapter.dataapi.opdispensers; import com.datastax.astra.client.Database; import com.datastax.astra.client.model.Filter; import com.datastax.astra.client.model.FindOptions; -import com.datastax.astra.client.model.Sorts; +import com.datastax.astra.client.model.Sort; import io.nosqlbench.adapter.dataapi.DataApiDriverAdapter; import io.nosqlbench.adapter.dataapi.ops.DataApiBaseOp; import io.nosqlbench.adapter.dataapi.ops.DataApiFindOp; @@ -27,8 +27,6 @@ import io.nosqlbench.adapters.api.templating.ParsedOp; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import java.util.Map; -import java.util.Optional; import java.util.function.LongFunction; public class DataApiFindOpDispenser extends DataApiOpDispenser { @@ -43,17 +41,7 @@ public class DataApiFindOpDispenser extends DataApiOpDispenser { return (l) -> { Database db = spaceFunction.apply(l).getDatabase(); Filter filter = getFilterFromOp(op, l); - FindOptions options = new FindOptions(); - Optional> sortFunction = op.getAsOptionalFunction("sort", Map.class); - if (sortFunction.isPresent()) { - Map sortFields = sortFunction.get().apply(l); - String sortOrder = sortFields.get("type").toString(); - String sortField = sortFields.get("field").toString(); - switch(sortOrder) { - case "asc" -> options = options.sort(Sorts.ascending(sortField)); - case "desc" -> options = options.sort(Sorts.descending(sortField)); - } - } + FindOptions options = getFindOptions(op, l); return new DataApiFindOp( db, db.getCollection(targetFunction.apply(l)), @@ -63,6 +51,15 @@ public class DataApiFindOpDispenser extends DataApiOpDispenser { }; } + private FindOptions getFindOptions(ParsedOp op, long l) { + FindOptions options = new FindOptions(); + Sort sort = getSortFromOp(op, l); + if (sort != null) { + options = options.sort(sort); + } + return options; + } + @Override public DataApiBaseOp getOp(long value) { return opFunction.apply(value); diff --git a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiOpDispenser.java b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiOpDispenser.java index 7ab96ad52..c732b5833 100644 --- a/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiOpDispenser.java +++ b/nb-adapters/adapter-dataapi/src/main/java/io/nosqlbench/adapter/dataapi/opdispensers/DataApiOpDispenser.java @@ -18,6 +18,8 @@ package io.nosqlbench.adapter.dataapi.opdispensers; import com.datastax.astra.client.model.Filter; import com.datastax.astra.client.model.Filters; +import com.datastax.astra.client.model.Sort; +import com.datastax.astra.client.model.Sorts; import io.nosqlbench.adapter.dataapi.DataApiSpace; import io.nosqlbench.adapter.dataapi.ops.DataApiBaseOp; import io.nosqlbench.adapters.api.activityimpl.BaseOpDispenser; @@ -41,6 +43,21 @@ public abstract class DataApiOpDispenser extends BaseOpDispenser> sortFunction = op.getAsOptionalFunction("sort", Map.class); + if (sortFunction.isPresent()) { + Map sortFields = sortFunction.get().apply(l); + String sortOrder = sortFields.get("type").toString(); + String sortField = sortFields.get("field").toString(); + switch(sortOrder) { + case "asc" -> sort = Sorts.ascending(sortField); + case "desc" -> sort = Sorts.descending(sortField); + } + } + return sort; + } + protected Filter getFilterFromOp(ParsedOp op, long l) { Filter filter = null; Optional> filterFunction = op.getAsOptionalFunction("filters", Map.class);