/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.nifi.reporting.ambari.api;
import javax.json.JsonBuilderFactory;
import javax.json.JsonObject;
/**
* Builds the JsonObject for an individual metric.
*/
public class MetricBuilder {
private final JsonBuilderFactory factory;
private String applicationId;
private String instanceId;
private String hostname;
private String timestamp;
private String metricName;
private String metricValue;
public MetricBuilder(final JsonBuilderFactory factory) {
this.factory = factory;
}
public MetricBuilder applicationId(final String applicationId) {
this.applicationId = applicationId;
return this;
}
public MetricBuilder instanceId(final String instanceId) {
this.instanceId = instanceId;
return this;
}
public MetricBuilder hostname(final String hostname) {
this.hostname = hostname;
return this;
}
public MetricBuilder timestamp(final long timestamp) {
this.timestamp = String.valueOf(timestamp);
return this;
}
public MetricBuilder metricName(final String metricName) {
this.metricName = metricName;
return this;
}
public MetricBuilder metricValue(final String metricValue) {
this.metricValue = metricValue;
return this;
}
public JsonObject build() {
return factory.createObjectBuilder()
.add(MetricFields.METRIC_NAME, metricName)
.add(MetricFields.APP_ID, applicationId)
.add(MetricFields.INSTANCE_ID, instanceId)
.add(MetricFields.HOSTNAME, hostname)
.add(MetricFields.TIMESTAMP, timestamp)
.add(MetricFields.START_TIME, timestamp)
.add(MetricFields.METRICS,
factory.createObjectBuilder()
.add(String.valueOf(timestamp), metricValue)
).build();
}
}