public boolean isEmpty() { return asMap().isEmpty(); } public boolean contains(String tag) { return tags_.containsKey(tag); }
public boolean isEmpty() { return asMap().isEmpty(); } public boolean contains(String tag) { return tags_.containsKey(tag); }
public Iterator<Map.Entry<String, MetricValue>> iterator() { return asMap().entrySet().iterator(); }
public Optional<MetricValue> getTag(String key) { return Optional.ofNullable(asMap().get(key)); }
public Stream<Map.Entry<String, MetricValue>> stream() { return asMap().entrySet().stream(); }
public Optional<MetricValue> getTag(String key) { return Optional.ofNullable(asMap().get(key)); }
public Stream<Map.Entry<String, MetricValue>> stream() { return asMap().entrySet().stream(); }
public Iterator<Map.Entry<String, MetricValue>> iterator() { return asMap().entrySet().iterator(); }
/** * Create a Tags entry with only the specified keys. */ public static Tags matchingKeys(Tags in, Set<String> keys) { return Tags.valueOf(in.asMap().entrySet().stream() .filter(entry -> keys.contains(entry.getKey()))); }
/** * Create a Tags entry with only mismatching keys. */ public static Tags mismatchingKeys(Tags in, Set<String> keys) { return Tags.valueOf(in.asMap().entrySet().stream() .filter(entry -> !keys.contains(entry.getKey()))); }
public static Tags keepCommonTags(Tags x, Tags y) { return Tags.valueOf(x.stream() .filter(x_entry -> { return Optional.ofNullable(y.asMap().get(x_entry.getKey())) .map(x_entry.getValue()::equals) .orElse(false); })); }
private static void addMetricMappingToCtx(Context<MutableTimeSeriesCollectionPair> ctx, SimpleGroupPath groupPath, MetricName metric, TagData tagData, Map.Entry<Tags, MetricValue> resolvedMetric) { final GroupName group; if (tagData.isEmpty()) { group = GroupName.valueOf(groupPath, resolvedMetric.getKey()); } else { final Map<String, MetricValue> tagMap = new HashMap<>(); tagMap.putAll(resolvedMetric.getKey().asMap()); tagData.getExtraTagsForTags(resolvedMetric.getKey()) .forEach((tagValue) -> tagMap.put(tagValue.getKey(), tagValue.getValue())); group = GroupName.valueOf(groupPath, tagMap); } final MetricValue metricValue = resolvedMetric.getValue(); ctx.getTSData().getCurrentCollection() .addMetric(group, metric, metricValue); }
private Map<String, Any2<MetricValue, List<MetricValue>>> lookup_attributes_(Tags tags, Map<String, Any2<TimeSeriesMetricDeltaSet, List<TimeSeriesMetricDeltaSet>>> values) { final TagMatchingClause matcher = TagMatchingClause.by(tags.asMap().keySet(), false); final TagAggregationClause aggregator = TagAggregationClause.by(tags.asMap().keySet(), false); return values.entrySet().stream() .map(value -> { final Any2<MetricValue, List<MetricValue>> rhs = value.getValue() .map( tsvs -> { return matcher.apply( Stream.of(tags), tsvs.streamAsMap(tags), Function.identity(), Map.Entry::getKey, (t, tsv) -> tsv.getValue()); }, tsvs_list -> { return aggregator.apply( tsvs_list.stream().flatMap(tsvs -> tsvs.streamAsMap(tags)), Map.Entry::getKey, Map.Entry::getValue); }) .map( tsvs -> tsvs.values().stream().findAny().orElse(MetricValue.EMPTY), tsvs -> Optional.ofNullable(tsvs.get(tags)).orElse(EMPTY_LIST)); return SimpleMapEntry.create(value.getKey(), rhs); }) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); }