mirror of
https://github.com/nosqlbench/nosqlbench.git
synced 2025-02-25 18:55:28 -06:00
move cql capture to dispenser
This commit is contained in:
@@ -18,12 +18,26 @@ package io.nosqlbench.adapter.cqld4.opdispensers;
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
import com.datastax.oss.driver.api.core.cql.ColumnDefinition;
|
||||||
|
import com.datastax.oss.driver.api.core.cql.ColumnDefinitions;
|
||||||
|
import com.datastax.oss.driver.api.core.cql.Row;
|
||||||
import io.nosqlbench.adapter.cqld4.Cqld4DriverAdapter;
|
import io.nosqlbench.adapter.cqld4.Cqld4DriverAdapter;
|
||||||
import io.nosqlbench.adapter.cqld4.optypes.Cqld4BaseOp;
|
import io.nosqlbench.adapter.cqld4.optypes.Cqld4BaseOp;
|
||||||
import io.nosqlbench.adapter.cqld4.optypes.Cqld4CqlOp;
|
import io.nosqlbench.adapter.cqld4.optypes.Cqld4CqlOp;
|
||||||
import io.nosqlbench.adapters.api.templating.ParsedOp;
|
import io.nosqlbench.adapters.api.templating.ParsedOp;
|
||||||
|
import io.nosqlbench.virtdata.core.templates.CapturePoint;
|
||||||
|
import io.nosqlbench.virtdata.core.templates.CapturePointException;
|
||||||
|
import io.nosqlbench.virtdata.core.templates.CapturePoints;
|
||||||
|
import io.nosqlbench.virtdata.core.templates.UniformVariableCapture;
|
||||||
|
|
||||||
public abstract class Cqld4CqlBaseOpDispenser<T extends Cqld4CqlOp> extends Cqld4BaseOpDispenser<T> {
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
|
public abstract class Cqld4CqlBaseOpDispenser<T extends Cqld4CqlOp> extends Cqld4BaseOpDispenser<T>
|
||||||
|
implements UniformVariableCapture<List<Row>>
|
||||||
|
{
|
||||||
|
|
||||||
public Cqld4CqlBaseOpDispenser(Cqld4DriverAdapter adapter, ParsedOp op) {
|
public Cqld4CqlBaseOpDispenser(Cqld4DriverAdapter adapter, ParsedOp op) {
|
||||||
super(adapter, op);
|
super(adapter, op);
|
||||||
@@ -31,4 +45,35 @@ public abstract class Cqld4CqlBaseOpDispenser<T extends Cqld4CqlOp> extends Cqld
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public abstract T getOp(long cycle);
|
public abstract T getOp(long cycle);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Function<List<Row>, Map<String, ?>> captureF(CapturePoints<List<Row>> points) {
|
||||||
|
Function<List<Row>, Map<String, ?>> f = (List<Row> result) -> {
|
||||||
|
if (result.size() != 1) {
|
||||||
|
throw new CapturePointException(
|
||||||
|
"result contained " + result.size() + " rows, required exactly 1");
|
||||||
|
}
|
||||||
|
Row row = result.get(0);
|
||||||
|
ColumnDefinitions coldefs = row.getColumnDefinitions();
|
||||||
|
Map<String, Object> values = new HashMap<>(coldefs.size());
|
||||||
|
|
||||||
|
if (points.isGlob()) {
|
||||||
|
for (ColumnDefinition coldef : coldefs) {
|
||||||
|
String colname = coldef.getName().toString();
|
||||||
|
values.put(colname, row.getObject(colname));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (CapturePoint<List<Row>> point : points) {
|
||||||
|
String sourceName = point.getSourceName();
|
||||||
|
Object value = row.getObject(point.getSourceName());
|
||||||
|
Object recast = point.getAsCast().cast(value);
|
||||||
|
values.put(point.getAsName(), recast);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return values;
|
||||||
|
};
|
||||||
|
return f;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ import java.util.function.Function;
|
|||||||
|
|
||||||
|
|
||||||
public abstract class Cqld4CqlOp
|
public abstract class Cqld4CqlOp
|
||||||
implements Cqld4BaseOp<List<Row>>, UniformVariableCapture<List<Row>>, OpGenerator, OpResultSize {
|
implements Cqld4BaseOp<List<Row>>, OpGenerator, OpResultSize {
|
||||||
|
|
||||||
private final static Logger logger = LogManager.getLogger(Cqld4CqlOp.class);
|
private final static Logger logger = LogManager.getLogger(Cqld4CqlOp.class);
|
||||||
|
|
||||||
@@ -168,34 +168,6 @@ public abstract class Cqld4CqlOp
|
|||||||
return next;
|
return next;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Function<List<Row>, Map<String, ?>> captureF(CapturePoints<List<Row>> points) {
|
|
||||||
Function<List<Row>,Map<String,?>> f = (List<Row> result) -> {
|
|
||||||
if (result.size()!=1) {
|
|
||||||
throw new CapturePointException("result contained " + result.size() + " rows, required exactly 1");
|
|
||||||
}
|
|
||||||
Row row = result.get(0);
|
|
||||||
ColumnDefinitions coldefs = row.getColumnDefinitions();
|
|
||||||
Map<String,Object> values = new HashMap<>(coldefs.size());
|
|
||||||
|
|
||||||
if (points.isGlob()) {
|
|
||||||
for (ColumnDefinition coldef : coldefs) {
|
|
||||||
String colname = coldef.getName().toString();
|
|
||||||
values.put(colname,row.getObject(colname));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
for (CapturePoint<List<Row>> point : points) {
|
|
||||||
String sourceName = point.getSourceName();
|
|
||||||
Object value = row.getObject(point.getSourceName());
|
|
||||||
Object recast = point.getAsCast().cast(value);
|
|
||||||
values.put(point.getAsName(), recast);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return values;
|
|
||||||
};
|
|
||||||
return f;
|
|
||||||
}
|
|
||||||
|
|
||||||
public abstract Statement<?> getStmt();
|
public abstract Statement<?> getStmt();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user