@Override public ValueMap asMap() { ValueMap result = ValueFactory.createMap(); result.put("targetEpoch", ValueFactory.create(targetEpoch)); result.put("numObservations", ValueFactory.create(numObservations)); result.put("doubleToLongBits", ValueFactory.create(doubleToLongBits ? 1 : 0)); result.put("raw", ValueFactory.create(raw ? 1 : 0)); result.put("percentile", ValueFactory.create(percentile)); result.put("sigma", ValueFactory.create(sigma)); result.put("minMeasurement", ValueFactory.create(minMeasurement)); result.put("mode", ValueFactory.create(mode)); result.put("minEpoch", ValueFactory.create(heldObject.minEpoch)); ValueArray reservoir = ValueFactory.createArray(heldObject.reservoir.length); for (int i = 0; i < heldObject.reservoir.length; i++) { reservoir.add(i, ValueFactory.create(heldObject.reservoir[i])); } result.put("reservoir", reservoir); return result; }
@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()); } } }
@Override @Nonnull public Set<Entry<String, Double>> entrySet() { return new View(data.entrySet()); } }
private void insertMapValue(ValueMap map, ValueObject vo) { String valueString = vo.asString().asNative(); String[] elementArray = valueString.split(elementSeparator); for (String element : elementArray) { String[] keyValue = element.split(keySeparator); if (!includeNullValues && keyValue.length != 2) { continue; } String key = keyValue[0]; ValueObject value = keyValue.length > 1 ? ValueFactory.create(keyValue[1]) : null; ValueObject current = map.get(key); if (!appendValues || (current == null)) { map.put(key, value); } else { ValueArray array = current.asArray(); array.add(value); map.put(key, array); } } } }
@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; } } }
@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; } }
@Override public byte[] get(Object key) { String stringKey = (String) key; ValueObject val = data.get(stringKey); if (val == null) { return null; } else { return val.asBytes().asNative(); } }
case MAP: ValueMap map = value.asMap(); Map<String, Object> avroMap = new HashMap<>(value.asMap().size()); for (ValueMapEntry valueMapEntry : map) { avroMap.put(valueMapEntry.getKey(), getAvroNativeFromValue(valueMapEntry.getValue(),
@Override public ValueMap asMap() throws ValueTranslationException { ValueMap map = ValueFactory.createMap(); map.put(key, asBytes()); return map; }
@Override public Long get(Object key) { String stringKey = (String) key; ValueObject val = data.get(stringKey); if (val == null) { return null; } else { return val.asLong().getLong(); } }
case MAP: ValueMap map = value.asMap(); Map<String, Object> avroMap = new HashMap<>(value.asMap().size()); for (ValueMapEntry valueMapEntry : map) { avroMap.put(valueMapEntry.getKey(), getAvroNativeFromValue(valueMapEntry.getValue(),
@Override @Nonnull public Set<Entry<String, byte[]>> entrySet() { return new View(data.entrySet()); } }
@Override public ValueMap asMap() throws ValueTranslationException { ValueMap map = ValueFactory.createMap(); int bound = heldObject.byteSize(); ByteBuffer buf = ByteBuffer.allocate(bound); heldObject.asSmallBytes(buf); map.put("q", ValueFactory.create(quantile)); map.put("o", ValueFactory.create(op.toString())); map.put("b", ValueFactory.create(buf.array())); return map; }
@Override public void setValues(ValueMap valueMapEntries) { byte[] b = valueMapEntries.get("b").asBytes().asNative(); this.quantile = valueMapEntries.get("q").asDouble().getDouble(); this.op = OP.valueOf(valueMapEntries.get("o").asString().toString()); heldObject = TDigest.fromBytes(ByteBuffer.wrap(b)); }
@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; }
@Override @Nonnull public Set<Entry<String, List<String>>> entrySet() { return new View(data.entrySet()); } }
public static ValueMap create(Map<String, Double> input) { if (input == null) { return null; } if (input instanceof MapStringDouble) { return ((MapStringDouble) input).getData(); } else { ValueMap output = ValueFactory.createMap(); for (Map.Entry<String, Double> entry : input.entrySet()) { output.put(entry.getKey(), ValueFactory.create(entry.getValue())); } return output; } }
@Override public String get(Object key) { String stringKey = (String) key; ValueObject val = data.get(stringKey); if (val == null) { return null; } else { return val.asString().asNative(); } }
@Override @Nonnull public Set<Entry<String, String>> entrySet() { return new View(data.entrySet()); } }