org.opendaylight.tsdr.collector.spi.CollectorSPIImpl.java Source code

Java tutorial

Introduction

Here is the source code for org.opendaylight.tsdr.collector.spi.CollectorSPIImpl.java

Source

/*
 * 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.collector.spi;

import com.google.common.util.concurrent.Futures;
import org.opendaylight.yang.gen.v1.opendaylight.tsdr.log.data.rev160325.StoreTSDRLogRecordInputBuilder;
import org.opendaylight.yang.gen.v1.opendaylight.tsdr.log.data.rev160325.TsdrLogDataService;
import org.opendaylight.yang.gen.v1.opendaylight.tsdr.log.data.rev160325.storetsdrlogrecord.input.TSDRLogRecord;
import org.opendaylight.yang.gen.v1.opendaylight.tsdr.log.data.rev160325.storetsdrlogrecord.input.TSDRLogRecordBuilder;
import org.opendaylight.yang.gen.v1.opendaylight.tsdr.metric.data.rev160325.StoreTSDRMetricRecordInputBuilder;
import org.opendaylight.yang.gen.v1.opendaylight.tsdr.metric.data.rev160325.TsdrMetricDataService;
import org.opendaylight.yang.gen.v1.opendaylight.tsdr.metric.data.rev160325.storetsdrmetricrecord.input.TSDRMetricRecord;
import org.opendaylight.yang.gen.v1.opendaylight.tsdr.metric.data.rev160325.storetsdrmetricrecord.input.TSDRMetricRecordBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.tsdr.collector.spi.rev150915.InsertTSDRLogRecordInput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.tsdr.collector.spi.rev150915.InsertTSDRMetricRecordInput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.tsdr.collector.spi.rev150915.TsdrCollectorSpiService;
import org.opendaylight.yangtools.yang.common.RpcResult;
import org.opendaylight.yangtools.yang.common.RpcResultBuilder;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Future;

/**
 * @author Sharon Aicler(saichler@gmail.com)
 * This class is being used as a stub to the persistence layer SPI. It purpose is to give a layer
 * where TSDR project can do statistics and throttle the inserted metrics.
 **/
public class CollectorSPIImpl implements TsdrCollectorSpiService {

    private TsdrMetricDataService metricDataService = null;
    private TsdrLogDataService logDataService = null;

    public CollectorSPIImpl(TsdrMetricDataService metricService, TsdrLogDataService logService) {
        this.metricDataService = metricService;
        this.logDataService = logService;
    }

    @Override
    public Future<RpcResult<Void>> insertTSDRMetricRecord(InsertTSDRMetricRecordInput input) {
        StoreTSDRMetricRecordInputBuilder tsdrServiceInput = new StoreTSDRMetricRecordInputBuilder();
        List<TSDRMetricRecord> records = new ArrayList<TSDRMetricRecord>();
        for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.tsdr.collector.spi.rev150915.inserttsdrmetricrecord.input.TSDRMetricRecord inputRec : input
                .getTSDRMetricRecord()) {
            TSDRMetricRecordBuilder rec = new TSDRMetricRecordBuilder();
            rec.setMetricName(inputRec.getMetricName());
            rec.setMetricValue(inputRec.getMetricValue());
            rec.setNodeID(inputRec.getNodeID());
            rec.setRecordKeys(inputRec.getRecordKeys());
            rec.setTimeStamp(inputRec.getTimeStamp());
            rec.setTSDRDataCategory(inputRec.getTSDRDataCategory());
            records.add(rec.build());
        }
        tsdrServiceInput.setTSDRMetricRecord(records);
        metricDataService.storeTSDRMetricRecord(tsdrServiceInput.build());
        return Futures.immediateFuture(RpcResultBuilder.<Void>success().build());
    }

    @Override
    public Future<RpcResult<Void>> insertTSDRLogRecord(InsertTSDRLogRecordInput input) {
        StoreTSDRLogRecordInputBuilder tsdrServiceInput = new StoreTSDRLogRecordInputBuilder();
        List<TSDRLogRecord> records = new ArrayList<TSDRLogRecord>();
        for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.tsdr.collector.spi.rev150915.inserttsdrlogrecord.input.TSDRLogRecord inputRec : input
                .getTSDRLogRecord()) {
            TSDRLogRecordBuilder rec = new TSDRLogRecordBuilder();
            rec.setNodeID(inputRec.getNodeID());
            rec.setRecordAttributes(inputRec.getRecordAttributes());
            rec.setRecordFullText(inputRec.getRecordFullText());
            rec.setRecordKeys(inputRec.getRecordKeys());
            rec.setTimeStamp(inputRec.getTimeStamp());
            rec.setIndex(inputRec.getIndex());
            rec.setTSDRDataCategory(inputRec.getTSDRDataCategory());
            records.add(rec.build());
        }
        tsdrServiceInput.setTSDRLogRecord(records);
        logDataService.storeTSDRLogRecord(tsdrServiceInput.build());
        return Futures.immediateFuture(RpcResultBuilder.<Void>success().build());
    }
}