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.optypes.Cqld4BaseOp;
|
||||
import io.nosqlbench.adapter.cqld4.optypes.Cqld4CqlOp;
|
||||
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) {
|
||||
super(adapter, op);
|
||||
@@ -31,4 +45,35 @@ public abstract class Cqld4CqlBaseOpDispenser<T extends Cqld4CqlOp> extends Cqld
|
||||
|
||||
@Override
|
||||
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
|
||||
implements Cqld4BaseOp<List<Row>>, UniformVariableCapture<List<Row>>, OpGenerator, OpResultSize {
|
||||
implements Cqld4BaseOp<List<Row>>, OpGenerator, OpResultSize {
|
||||
|
||||
private final static Logger logger = LogManager.getLogger(Cqld4CqlOp.class);
|
||||
|
||||
@@ -168,34 +168,6 @@ public abstract class Cqld4CqlOp
|
||||
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();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user