Essentials/Essentials/src/com/earth2me/essentials/metrics/MetricsStarter.java

193 lines
7.1 KiB
Java

package com.earth2me.essentials.metrics;
import com.earth2me.essentials.metrics.Metrics.Graph;
import com.earth2me.essentials.metrics.Metrics.Plotter;
import com.earth2me.essentials.register.payment.Method;
import com.earth2me.essentials.register.payment.methods.VaultEco;
import com.earth2me.essentials.signs.EssentialsSign;
import net.ess3.api.IEssentials;
import org.bukkit.configuration.ConfigurationSection;
import java.util.Locale;
import java.util.logging.Level;
public class MetricsStarter implements Runnable {
private final IEssentials ess;
private transient Boolean start;
private enum Modules {
Essentials,
EssentialsAntiBuild,
EssentialsAntiCheat,
EssentialsChat,
EssentialsSpawn,
EssentialsProtect,
EssentialsGeoIP,
EssentialsXMPP
}
public MetricsStarter(final IEssentials plugin) {
ess = plugin;
try {
final Metrics metrics = new Metrics(ess);
ess.setMetrics(metrics);
if (!metrics.isOptOut()) {
if (ess.getSettings().isMetricsEnabled()) {
start = true;
} else {
ess.getLogger().info("This plugin collects minimal statistic data and sends it to http://metrics.essentials3.net.");
ess.getLogger().info("You can opt out, disabling metrics for all plugins, by running /essentials opt-out");
ess.getLogger().info("This will start 5 minutes after the first admin/op joins.");
start = false;
}
return;
}
} catch (Exception ex) {
metricsError(ex);
}
}
@Override
public void run() {
try {
final Metrics metrics = ess.getMetrics();
final Graph moduleGraph = metrics.createGraph("Modules Used");
for (Modules module : Modules.values()) {
final String moduleName = module.toString();
if (ess.getServer().getPluginManager().isPluginEnabled(moduleName)) {
moduleGraph.addPlotter(new SimplePlotter(moduleName));
}
}
final Graph localeGraph = metrics.createGraph("Locale");
localeGraph.addPlotter(new SimplePlotter(ess.getI18n().getCurrentLocale().getDisplayLanguage(Locale.ENGLISH)));
final Graph featureGraph = metrics.createGraph("Features");
featureGraph.addPlotter(new Plotter("Unique Accounts") {
@Override
public int getValue() {
return ess.getUserMap().getUniqueUsers();
}
});
featureGraph.addPlotter(new Plotter("Jails") {
@Override
public int getValue() {
return ess.getJails().getCount();
}
});
featureGraph.addPlotter(new Plotter("Kits") {
@Override
public int getValue() {
ConfigurationSection kits = ess.getSettings().getKits();
if (kits == null) {
return 0;
}
return kits.getKeys(false).size();
}
});
featureGraph.addPlotter(new Plotter("Warps") {
@Override
public int getValue() {
return ess.getWarps().getCount();
}
});
final Graph enabledGraph = metrics.createGraph("EnabledFeatures");
enabledGraph.addPlotter(new SimplePlotter("Total"));
final String BKcommand = ess.getSettings().getBackupCommand();
if (BKcommand != null && !"".equals(BKcommand)) {
enabledGraph.addPlotter(new SimplePlotter("Backup"));
}
if (ess.getJails().getCount() > 0) {
enabledGraph.addPlotter(new SimplePlotter("Jails"));
}
if (ess.getSettings().getKits() != null && ess.getSettings().getKits().getKeys(false).size() > 0) {
enabledGraph.addPlotter(new SimplePlotter("Kits"));
}
if (ess.getWarps().getCount() > 0) {
enabledGraph.addPlotter(new SimplePlotter("Warps"));
}
if (ess.getSettings().getTeleportCooldown() > 0) {
enabledGraph.addPlotter(new SimplePlotter("TeleportCooldown"));
}
if (ess.getSettings().getTeleportDelay() > 0) {
enabledGraph.addPlotter(new SimplePlotter("TeleportDelay"));
}
if (!ess.getSettings().areSignsDisabled()) {
enabledGraph.addPlotter(new SimplePlotter("Signs"));
}
if (ess.getSettings().getAutoAfk() > 0) {
enabledGraph.addPlotter(new SimplePlotter("AutoAFK"));
}
if (ess.getSettings().changePlayerListName()) {
enabledGraph.addPlotter(new SimplePlotter("PlayerListName"));
}
if (ess.getSettings().getOperatorColor() != null) {
enabledGraph.addPlotter(new SimplePlotter("OpColour"));
}
if (ess.getSettings().changeDisplayName()) {
enabledGraph.addPlotter(new SimplePlotter("DisplayName"));
}
if (ess.getSettings().getChatRadius() >= 1) {
enabledGraph.addPlotter(new SimplePlotter("LocalChat"));
}
final Graph depGraph = metrics.createGraph("Dependencies");
final Method method = ess.getPaymentMethod().getMethod();
if (method != null) {
String version;
if (method instanceof VaultEco) {
version = ((VaultEco) method).getEconomy();
} else {
version = method.getVersion();
final int dashPosition = version.indexOf('-');
if (dashPosition > 0) {
version = version.substring(0, dashPosition);
}
}
depGraph.addPlotter(new SimplePlotter(method.getName() + " " + version));
}
depGraph.addPlotter(new SimplePlotter(ess.getPermissionsHandler().getName()));
final Graph signGraph = metrics.createGraph("Signs");
for (EssentialsSign sign : ess.getSettings().enabledSigns()) {
signGraph.addPlotter(new SimplePlotter(sign.getName()));
}
metrics.start();
} catch (Exception ex) {
metricsError(ex);
}
}
public void metricsError(final Exception ex) {
if (ess.getSettings().isDebug()) {
ess.getLogger().log(Level.INFO, "[Metrics] " + ex.getMessage(), ex);
} else {
ess.getLogger().log(Level.INFO, "[Metrics] " + ex.getMessage());
}
}
public Boolean getStart() {
return start;
}
private class SimplePlotter extends Plotter {
public SimplePlotter(final String name) {
super(name);
}
@Override
public int getValue() {
return 1;
}
}
}