/*
*
* Copyright (c) void.fm
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice, this list
* of conditions and the following disclaimer.
*
* Redistributions in binary form must reproduce the above copyright notice, this
* list of conditions and the following disclaimer in the documentation and/or
* other materials provided with the distribution.
*
* Neither the name void.fm nor the names of its contributors may be
* used to endorse or promote products derived from this software without specific
* prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
package etm.contrib.rrd.rrd4j;
import etm.contrib.rrd.core.AbstractRrdPlugin;
import etm.contrib.rrd.core.RrdDestination;
import etm.core.metadata.PluginMetaData;
import etm.core.util.Log;
import etm.core.util.LogAdapter;
import java.io.File;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* <a href="https://rrd4j.dev.java.net/">RRD4j</a> based implementation of an RRD plugin.
*
* @author void.fm
* @version $Revision$
* @since 1.2.0
*/
public class Rrd4jPlugin extends AbstractRrdPlugin {
private static final LogAdapter LOG = Log.getLog(Rrd4jPlugin.class);
private String configPath = System.getProperty("java.io.tmpdir");
private List destinationConfiguration;
public Rrd4jPlugin() {
LOG.warn("You are about to use an experimental JETM feature. Please report issues with it. Thanks.");
}
public void setRrdFilePath(String path) {
configPath = path;
}
public void setDestinations(List aDestinations) {
destinationConfiguration = aDestinations;
}
protected RrdDestination[] getDestinations() {
if (destinationConfiguration == null) {
return new RrdDestination[0];
}
destinations = new RrdDestination[destinationConfiguration.size()];
for (int i = 0; i < destinationConfiguration.size(); i++) {
String s = (String) destinationConfiguration.get(i);
int index = s.indexOf('!');
String filename = s.substring(0, index);
String pattern = s.substring(index + 1);
destinations[i] = new Rrd4jDestination(pattern, new File(configPath, filename));
}
return destinations;
}
public PluginMetaData getPluginMetaData() {
Map config = new HashMap();
config.put("configPath", configPath);
if (destinationConfiguration != null) {
config.put("destinationConfiguration", destinationConfiguration.toString());
}
return new PluginMetaData(getClass(), "RRD4j plugin.", config);
}
}