@Nullable @Override public ValueObject filterValue(@Nullable ValueObject value, @Nullable Bundle context) { if (value != null) { if (map == null) { value = defaultValue != null ? defaultValue : toNull ? null : value; } else { ValueObject v = map.getValue(context).asMap().get(value.toString()); if (v != null) { value = v; } else if (defaultValue != null) { value = defaultValue; } else if (toNull) { value = null; } } return value; } else { return value; } } }
int count = 0; StringBuffer sb = new StringBuffer(); ValueMap map = value.asMap(); if (sort) {
@Override public ValueObject filterValue(ValueObject value) { if (value == null) { return null; } boolean empty = false; switch (value.getObjectType()) { case ARRAY: empty = value.asArray().size() == 0; break; case MAP: empty = value.asMap().size() == 0; break; default: String s = ValueUtil.asNativeString(value); empty = s != null && s.length() == 0; break; } if (not) { return empty ? null : value; } else { return empty ? value : null; } }
ValueObject valueObject = field.getValue(p); if (valueObject != null) { ValueMap valueMap = valueObject.asMap(); for (ValueMapEntry entry : valueMap) { insertKeyValuePair(conf, p, entry.getKey(), entry.getValue());
map = value.asMap(); } catch (ValueTranslationException vte) { log.warn("Error extracting map from value: {}", value);
private Object unbox(ValueObject val) { switch (val.getObjectType()) { case INT: return val.asLong().getLong(); case FLOAT: return val.asDouble().getDouble(); case STRING: return val.asString().asNative(); case ARRAY: List<Object> retList = new LinkedList<>(); for (ValueObject element : val.asArray()) { retList.add(unbox(element)); } return retList; case MAP: Map<String, Object> retMap = new HashMap<>(); ValueMap valAsMap = val.asMap(); for (ValueMapEntry entry : valAsMap) { retMap.put(entry.getKey(), unbox(entry.getValue())); } return retMap; } throw new IllegalArgumentException("Unsupported bundle field type: " + val.getObjectType()); }
@Override public ValueObject filterValue(ValueObject value, Bundle context) { if (value == null || value.getObjectType() != ValueObject.TYPE.MAP || this.key == null) { // TODO: log error return null; } ValueMap mapValue = value.asMap(); if (this.put != null) { ValueMap copy = ValueFactory.createMap(); copy.putAll(mapValue); copy.put(this.key.getString(context).get(), this.put.getValue(context)); return copy; } else if (this.defaultValue != null) { return mapValue.getOrDefault(this.key.getString(context).get(), this.defaultValue.getValue(context)); } else { return mapValue.get(this.key.getString(context).get()); } } }
private void updateCounter(ValueObject value) { if (value == null) { return; } switch (value.getObjectType()) { case INT: case FLOAT: case STRING: case BYTES: case CUSTOM: ic.offer(value.toString()); break; case ARRAY: ValueArray arr = value.asArray(); for (ValueObject o : arr) { updateCounter(o); } break; case MAP: ValueMap map = value.asMap(); for (ValueMapEntry o : map) { updateCounter(ValueFactory.create(o.getKey())); } break; } }
private static void updateCounter(ICardinality estimator, ValueObject value) { if (value == null) { return; } switch (value.getObjectType()) { case INT: case FLOAT: case STRING: case BYTES: case CUSTOM: estimator.offer(value.toString()); break; case ARRAY: ValueArray arr = value.asArray(); for (ValueObject o : arr) { updateCounter(estimator, o); } break; case MAP: ValueMap map = value.asMap(); for (ValueMapEntry o : map) { updateCounter(estimator, ValueFactory.create(o.getKey())); } break; } }
@Override public ValueObject filterValue(ValueObject value) { if (value != null) { if (value.getObjectType() == ValueObject.TYPE.ARRAY) { return ValueFactory.create(value.asArray().size()); } if (value.getObjectType() == ValueObject.TYPE.MAP) { return ValueFactory.create(value.asMap().size()); } Numeric num = ValueUtil.asNumber(value); if (num != null) { return num; } return ValueFactory.create(ValueUtil.asNativeString(value).length()); } return null; }
mapValue = value.asMap(); } catch (ValueTranslationException vte) { log.warn("Error extracting map from value: " + value + " bundle: " + bundle);
ValueMap map = value.asMap(); for (ValueMapEntry o : map) {
ValueMap nameAsMap = name.asMap(); for (ValueMapEntry e : nameAsMap) { String key = e.getKey();
@Override public ValueObject filterValue(ValueObject input) { if (input == null) { return null; } String match; ValueObject.TYPE type = input.getObjectType(); if (type == ValueObject.TYPE.MAP) { ValueMap inputAsMap = input.asMap(); for (String cmp : inputAsMap.keySet()) { if (key != null && (match = checkContains(cmp, key)) != null) { return not ? null : returnMatch ? ValueFactory.create(match) : input; } if (value != null && (match = checkContains(cmp, value)) != null) { return not ? null : returnMatch ? ValueFactory.create(match) : input; } } } else if (type == ValueObject.TYPE.ARRAY && value != null) { for (ValueObject el : input.asArray()) { String cmp = ValueUtil.asNativeString(el); if ((match = checkContains(cmp, value)) != null) { return not ? null : returnMatch ? ValueFactory.create(match) : input; } } } else if (value != null) { return compareInputAsString(input); } return not ? input : null; }
@Override public void process(Bundle bundle, StreamEmitter emitter) { ValueObject obj = field.getValue(bundle); field.removeValue(bundle); if ((obj != null) && (obj.getObjectType() == ValueObject.TYPE.MAP)) { ValueMap map = obj.asMap(); for (ValueMapEntry entry : map) { Bundle newBundle = Bundles.deepCopyBundle(bundle); keyField.setValue(newBundle, ValueFactory.create(entry.getKey())); valueField.setValue(newBundle, entry.getValue()); if (emitFilter == null || emitFilter.filter(newBundle)) { emitter.emit(newBundle); } } } if (emitOriginal && (emitFilter == null || emitFilter.filter(bundle))) { emitter.emit(bundle); } } }
@Test public void createMap() throws IOException { ValueFilterCreateMap vf = Configs.decodeObject(ValueFilterCreateMap.class, ""); ValueMap result = vf.filter(ValueFactory.create("hello=world,foo=bar")).asMap(); assertEquals("world", result.get("hello").asString().asNative()); assertEquals("bar", result.get("foo").asString().asNative()); result = vf.filter(ValueFactory.create("hello=world,hello=bar")).asMap(); assertEquals("bar", result.get("hello").asString().asNative()); result = vf.filter(ValueFactory.create("hello=world,hello")).asMap(); assertEquals("world", result.get("hello").asString().asNative()); }
@Test public void append() throws IOException { ValueFilterCreateMap vf = Configs.decodeObject(ValueFilterCreateMap.class, "appendValues=true"); ValueMap result = vf.filter(ValueFactory.create("hello=world,baz=quux,hello=bar,hello=world")).asMap(); ValueArray values = result.get("hello").asArray(); assertEquals(3, values.size()); assertEquals("world", values.get(0).asString().asNative()); assertEquals("bar", values.get(1).asString().asNative()); assertEquals("world", values.get(2).asString().asNative()); assertEquals("quux", result.get("baz").asString().asNative()); }