support lists at op field level for terseneses

This commit is contained in:
Jonathan Shook 2022-06-27 23:44:57 -05:00
parent 929b4fe929
commit 5e1898bf20
2 changed files with 14 additions and 11 deletions

View File

@ -79,18 +79,22 @@ public class StatementsOwner extends RawStmtFields {
List<Map<String,Object>> itemizedMaps = new ArrayList<>();
for (Map.Entry<String, Object> entries : map.entrySet()) {
Object value = entries.getValue();
if (value instanceof LinkedHashMap) {
// reset order to favor naming first
LinkedHashMap<String, Object> vmap = (LinkedHashMap<String, Object>) value;
LinkedHashMap<String, Object> cp = new LinkedHashMap<>(vmap);
if (value instanceof List listval) {
Map<String,Object> stmtDetails = new LinkedHashMap<>() {{
put("name",entries.getKey());
put("stmt", (List<Object>) listval);
}};
itemizedMaps.add(stmtDetails);
} else if (value instanceof LinkedHashMap vmap) {
LinkedHashMap<String, Object> cp = new LinkedHashMap<String,Object>(vmap);
vmap.clear();
vmap.put("name", entries.getKey());
vmap.putAll(cp);
itemizedMaps.add(vmap);
} else if (value instanceof String) {
Map<String, Object> stmtDetails = new HashMap<>() {{
} else if (value instanceof String string) {
Map<String, Object> stmtDetails = new LinkedHashMap<>() {{
put("name", entries.getKey());
put("stmt", entries.getValue());
put("stmt", string);
}};
itemizedMaps.add(stmtDetails);
} else {

View File

@ -22,10 +22,7 @@ import io.nosqlbench.nb.api.errors.BasicError;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Optional;
import java.util.*;
public class OpDef extends OpTemplate {
private final static Logger logger = LogManager.getLogger(OpDef.class);
@ -62,6 +59,8 @@ public class OpDef extends OpTemplate {
});
} else if (op instanceof CharSequence) {
newmap.put("stmt", op.toString());
} else if (op instanceof List list) {
newmap.put("stmt", list);
} else {
throw new BasicError("Unable to coerce a '" + op.getClass().getCanonicalName() + "' into an op template");
}