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<>(); List<Map<String,Object>> itemizedMaps = new ArrayList<>();
for (Map.Entry<String, Object> entries : map.entrySet()) { for (Map.Entry<String, Object> entries : map.entrySet()) {
Object value = entries.getValue(); Object value = entries.getValue();
if (value instanceof LinkedHashMap) { if (value instanceof List listval) {
// reset order to favor naming first Map<String,Object> stmtDetails = new LinkedHashMap<>() {{
LinkedHashMap<String, Object> vmap = (LinkedHashMap<String, Object>) value; put("name",entries.getKey());
LinkedHashMap<String, Object> cp = new LinkedHashMap<>(vmap); 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.clear();
vmap.put("name", entries.getKey()); vmap.put("name", entries.getKey());
vmap.putAll(cp); vmap.putAll(cp);
itemizedMaps.add(vmap); itemizedMaps.add(vmap);
} else if (value instanceof String) { } else if (value instanceof String string) {
Map<String, Object> stmtDetails = new HashMap<>() {{ Map<String, Object> stmtDetails = new LinkedHashMap<>() {{
put("name", entries.getKey()); put("name", entries.getKey());
put("stmt", entries.getValue()); put("stmt", string);
}}; }};
itemizedMaps.add(stmtDetails); itemizedMaps.add(stmtDetails);
} else { } 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.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import java.util.HashMap; import java.util.*;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Optional;
public class OpDef extends OpTemplate { public class OpDef extends OpTemplate {
private final static Logger logger = LogManager.getLogger(OpDef.class); private final static Logger logger = LogManager.getLogger(OpDef.class);
@@ -62,6 +59,8 @@ public class OpDef extends OpTemplate {
}); });
} else if (op instanceof CharSequence) { } else if (op instanceof CharSequence) {
newmap.put("stmt", op.toString()); newmap.put("stmt", op.toString());
} else if (op instanceof List list) {
newmap.put("stmt", list);
} else { } else {
throw new BasicError("Unable to coerce a '" + op.getClass().getCanonicalName() + "' into an op template"); throw new BasicError("Unable to coerce a '" + op.getClass().getCanonicalName() + "' into an op template");
} }