/*
* Copyright 2014, The OpenNMS Group
*
* Licensed 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.opennms.newts.rest;
import java.util.Arrays;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.NotEmpty;
import org.opennms.newts.api.Duration;
import org.opennms.newts.api.query.StandardAggregationFunctions;
import com.fasterxml.jackson.annotation.JsonProperty;
public class ResultDescriptorDTO {
public static class Datasource {
@NotEmpty
@JsonProperty("label")
private String m_label;
@NotEmpty
@JsonProperty("source")
private String m_source;
@NotNull
@JsonProperty("function")
private StandardAggregationFunctions m_function;
@JsonProperty("heartbeat")
private String m_heartbeat;
public String getLabel() {
return m_label;
}
public String getSource() {
return m_source;
}
public StandardAggregationFunctions getFunction() {
return m_function;
}
public Duration getHeartbeat() {
return Duration.parse(m_heartbeat);
}
@Override
public String toString() {
return String.format(
"%s[label=%s, source=%s, function=%s, heartbeat=%s]",
getClass().getSimpleName(),
getLabel(),
getSource(),
getFunction(),
getHeartbeat());
}
}
public static class Expression {
@NotEmpty
@JsonProperty("label")
private String m_label;
@NotEmpty
@JsonProperty("expression")
private String m_expression;
public String getLabel() {
return m_label;
}
public String getExpression() {
return m_expression;
}
@Override
public String toString() {
return String.format(
"%s[label=%s, expression=%s]",
getClass().getSimpleName(),
getLabel());
}
}
@JsonProperty("interval")
private String m_interval = "300s";
@Valid
@JsonProperty("datasources")
private Datasource[] m_datasources = {};
@Valid
@JsonProperty("expressions")
private Expression[] m_expressions = {};
@NotEmpty
@JsonProperty("exports")
private String[] m_exports;
public Duration getInterval() {
return Duration.parse(m_interval);
}
public Datasource[] getDatasources() {
return m_datasources;
}
public Expression[] getExpressions() {
return m_expressions;
}
public String[] getExports() {
return m_exports;
}
@Override
public String toString() {
return String.format(
"%s[interval=%s, datasources=%s, expressions=%s, exports=%s]",
getClass().getSimpleName(),
getInterval(),
Arrays.asList(getDatasources()),
Arrays.asList(getExpressions()),
Arrays.asList(getExports()));
}
}