/* * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ package org.opendaylight.tsdr.dataquery.rest.query; import org.opendaylight.yang.gen.v1.opendaylight.tsdr.metric.data.rev160325.gettsdraggregatedmetrics.output.AggregatedMetrics; import org.opendaylight.yang.gen.v1.opendaylight.tsdr.metric.data.rev160325.gettsdrmetrics.output.Metrics; import org.opendaylight.yang.gen.v1.opendaylight.tsdr.rev150219.tsdrrecord.RecordKeys; import javax.xml.bind.annotation.XmlRootElement; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Calendar; import java.util.List; /** * @author Sharon Aicler(saichler@gmail.com) **/ @XmlRootElement(name = "TSDRMetricsQueryReply") public class TSDRMetricsQueryReply { private final List<MetricRecord> metricRecords = new ArrayList<MetricRecord>(); private final int recordCount; public TSDRMetricsQueryReply(List<Metrics> metricList){ this.recordCount = metricList.size(); for (Metrics m : metricList) { metricRecords.add(new MetricRecord(m)); } } public TSDRMetricsQueryReply(String tsdrDataCategory, List<AggregatedMetrics> metricList){ this.recordCount = metricList.size(); for (AggregatedMetrics m : metricList) { metricRecords.add(new MetricRecord(tsdrDataCategory, m)); } } public static class MetricRecord { private final String metricName; private final BigDecimal metricValue; private final String timeStamp; private final String nodeID; private final String tsdrDataCategory; private final List<MetricRecordKeys> recordKeys = new ArrayList<>(); public MetricRecord(Metrics mr) { this.metricName = mr.getMetricName(); this.metricValue = mr.getMetricValue(); Calendar c = Calendar.getInstance(); c.setTimeInMillis(mr.getTimeStamp()); this.timeStamp = c.getTime().toString(); this.nodeID = mr.getNodeID(); this.tsdrDataCategory = mr.getTSDRDataCategory().name(); if (mr.getRecordKeys() != null) { for (RecordKeys rk : mr.getRecordKeys()) { recordKeys.add(new MetricRecordKeys(rk)); } } } public MetricRecord(String tsdrDataCategory, AggregatedMetrics mr) { this.metricValue = mr.getMetricValue(); Calendar c = Calendar.getInstance(); c.setTimeInMillis(mr.getTimeStamp()); this.timeStamp = c.getTime().toString(); this.tsdrDataCategory = tsdrDataCategory; this.nodeID = null; this.metricName = null; } } public static class MetricRecordKeys { private final String keyName; private final String keyValue; public MetricRecordKeys(RecordKeys r) { this.keyName = r.getKeyName(); this.keyValue = r.getKeyValue(); } public String getKeyName() { return keyName; } public String getKeyValue() { return keyValue; } } }