001package io.prometheus.metrics.model.snapshots;
002
003import java.util.Objects;
004
005/**
006 * Utility for iterating over {@link Labels}.
007 */
008public final class Label implements Comparable<Label> {
009
010    private final String name;
011    private final String value;
012
013    public Label(String name, String value) {
014        this.name = name;
015        this.value = value;
016    }
017
018    public String getName() {
019        return name;
020    }
021
022    public String getValue() {
023        return value;
024    }
025
026    @Override
027    public int compareTo(Label other) {
028        int nameCompare = name.compareTo(other.name);
029        return nameCompare != 0 ? nameCompare : value.compareTo(other.value);
030    }
031
032    @Override
033    public String toString() {
034        return "Label{" +
035                "name='" + name + '\'' +
036                ", value='" + value + '\'' +
037                '}';
038    }
039
040    @Override
041    public boolean equals(Object o) {
042        if (this == o) return true;
043        if (o == null || getClass() != o.getClass()) return false;
044        Label label = (Label) o;
045        return Objects.equals(name, label.name) && Objects.equals(value, label.value);
046    }
047
048    @Override
049    public int hashCode() {
050        return Objects.hash(name, value);
051    }
052}