/**
* Analytica - beta version - Systems Monitoring Tool
*
* Copyright (C) 2013, KleeGroup, direction.technique@kleegroup.com (http://www.kleegroup.com)
* KleeGroup, Centre d'affaire la Boursidi�re - BP 159 - 92357 Le Plessis Robinson Cedex - France
*
* This program is free software; you can redistribute it and/or modify it under the terms
* of the GNU General Public License as published by the Free Software Foundation;
* either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with this program;
* if not, see <http://www.gnu.org/licenses>
*
* Linking this library statically or dynamically with other modules is making a combined work based on this library.
* Thus, the terms and conditions of the GNU General Public License cover the whole combination.
*
* As a special exception, the copyright holders of this library give you permission to link this library
* with independent modules to produce an executable, regardless of the license terms of these independent modules,
* and to copy and distribute the resulting executable under terms of your choice, provided that you also meet,
* for each linked independent module, the terms and conditions of the license of that module.
* An independent module is a module which is not derived from or based on this library.
* If you modify this library, you may extend this exception to your version of the library,
* but you are not obliged to do so.
* If you do not wish to do so, delete this exception statement from your version.
*/
package io.analytica.spies.imp.javassist;
import io.analytica.agent.impl.net.DummyConnector;
import io.analytica.agent.impl.net.FileLogConnector;
import io.analytica.agent.impl.net.RemoteConnector;
import io.analytica.api.KProcessCollector;
import io.analytica.api.KProcessConnector;
import java.util.Map;
/**
*
*
* @author npiedeloup (2012/09/28 09:30:03)
*/
public final class Container {
private static KProcessCollector PROCESS_COLLECTOR_INSTANCE;
/**
* KProcessConnector instance.
*/
static KProcessConnector PROCESS_CONNECTOR_INSTANCE;
/**
* Initialize KProcessCollector and KProcessConnector.
* @param analyticaSpyConf Configuration file
*/
public static void initCollector(final AnalyticaSpyConf analyticaSpyConf) {
final String collectorName = analyticaSpyConf.getCollectorName();
final Map<String, String> collectorParams = analyticaSpyConf.getCollectorParams();
final KProcessConnector processConnector;
if ("FileLog".equals(collectorName)) {
processConnector = new FileLogConnector(collectorParams.get("fileName"));
} else if ("RemoteHTTP".equals(collectorName)) {
processConnector = new RemoteConnector(collectorParams.get("serverUrl"), Integer.parseInt(collectorParams.get("sendPaquetSize")), Integer.parseInt(collectorParams.get("sendPaquetFrequencySeconds")));
} else {
System.err.println("Unknown Connector : " + collectorName + " fallback to DummyCollector (use one of : FileLog, RemoteHTTP, Dummy)");
processConnector = new DummyConnector();
}
PROCESS_COLLECTOR_INSTANCE = new KProcessCollector(analyticaSpyConf.getSystemName(), analyticaSpyConf.getSystemLocation(), processConnector);
processConnector.start();
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
if (PROCESS_CONNECTOR_INSTANCE != null) {
PROCESS_CONNECTOR_INSTANCE.stop();
}
}
});
}
public static KProcessCollector getProcessCollector() {
if (PROCESS_COLLECTOR_INSTANCE == null) {
throw new NullPointerException("Le ProcessCollector n'a pas �t� configur�. Choisir le KProcessConnector : FileLog ou Remote");
}
return PROCESS_COLLECTOR_INSTANCE;
}
}