class InfluxDbPoint {
    private String measurement;
    private Map<String, String> tags = Collections.emptyMap();
    private long timestamp;
    private String value;

    public InfluxDbPoint(final String measurement, final long timestamp, final String value) {
        this.measurement = measurement;
        this.timestamp = timestamp;
        this.value = value;
    }

    public InfluxDbPoint(final String measurement, final Map<String, String> tags, final long timestamp, final String value) {
        this.measurement = measurement;
        this.timestamp = timestamp;
        this.value = value;
        this.tags = tags;
    }

    public String getMeasurement() {
        return measurement;
    }

    public void setMeasurement(String measurement) {
        this.measurement = measurement;
    }

    public Map<String, String> getTags() {
        return tags;
    }

    public void setTags(Map<String, String> tags) {
        this.tags = tags;
    }

    public long getTimestamp() {
        return timestamp;
    }

    public void setTimestamp(long timestamp) {
        this.timestamp = timestamp;
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    @Override
    public String toString() {<FILL_FUNCTION_BODY>}

    static public String map2String(final Map<String, String> tags) {
        if(tags != null && !tags.isEmpty()) {
            StringJoiner joined = new StringJoiner(",");
            for (Object o : tags.entrySet()) {
                Map.Entry pair = (Map.Entry) o;
                joined.add(pair.getKey() + "=" + pair.getValue());
            }
            return joined.toString();
        } else {
            return "";
        }
    }

}

        String t = map2String(tags);
        return measurement +
                (t.length() > 0? "," + t : "") +
                " value=" + value +
                " " + timestamp;
    
<no_super_class>