Did some refactoring on datasources.

This commit is contained in:
Pascal Koenig
2011-10-14 01:27:09 +02:00
parent 00fba43537
commit 1ccc5244e8
22 changed files with 305 additions and 329 deletions

View File

@@ -6,51 +6,65 @@ package de.sockenklaus.XmlStats.Datasource;
import java.io.File;
import java.util.HashMap;
import org.bukkit.plugin.Plugin;
import com.nidefawl.Achievements.AchievementListData;
import com.nidefawl.Achievements.Achievements;
import com.nidefawl.Achievements.PlayerAchievement;
import com.nidefawl.Achievements.PlayerAchievementFile;
import com.nidefawl.Achievements.PlayerAchievementSQL;
import de.sockenklaus.XmlStats.Util;
import de.sockenklaus.XmlStats.Webserver;
import de.sockenklaus.XmlStats.XmlStats;
import de.sockenklaus.XmlStats.XmlStatsRegistry;
/**
* @author socrates
*
*/
public class AchievementsDS extends Datasource {
private XmlStats xmlstats = null;
private Plugin ach; // = (Achievements)XmlStatsRegistry.get("achievements");
private static AchievementsDS instance;
public AchievementsDS(){
this.xmlstats = (XmlStats)XmlStatsRegistry.get("xmlstats");
}
//HashMap<String, PlayerAchievement> playerAchievementsList;
public HashMap<String, AchievementListData> getAchievementsList(){
Achievements ach = (Achievements)XmlStatsRegistry.get("achievements");
if(xmlstats.checkAchievements()){
return ach.achievementList;
}
else return new HashMap<String, AchievementListData>();
private AchievementsDS(){
super();
}
/*public void refreshPlayerAchievements(){
PlayerAchievement pa;
Achievements ach = (Achievements)XmlStatsRegistry.get("achievements");
private void hookAchievements(){
Plugin AchievementsTemp = this.xmlstats.getServer().getPluginManager().getPlugin("Achievements");
Webserver webserver = Webserver.getInstance();
if(ach.useSQL){
this.ach = AchievementsTemp;
XmlStats.LogInfo("Hooked into Achievements!");
webserver.startAchievements();
}
public static AchievementsDS getInstance(){
if(instance == null){
XmlStats.LogDebug("There's no instance of AchievementsDS");
if(Util.checkAchievements()){
XmlStats.LogDebug("Achievements seems to be there...");
instance = new AchievementsDS();
instance.hookAchievements();
}
else {
XmlStats.LogWarn("Achievements not found! Can't hook into it.");
}
}
}*/
return instance;
}
public HashMap<String, AchievementListData> getAchievementsList(){
return this.getAchievements().achievementList;
}
public PlayerAchievement getUserAchievement(String playerName){
PlayerAchievement pa;
Achievements ach = (Achievements)XmlStatsRegistry.get("achievements");
if(ach.useSQL){
if(this.getAchievements().useSQL){
String location = ach.getDataFolder().getPath() + File.separator + playerName + ".txt";
File fold = new File(location);
@@ -70,4 +84,10 @@ public class AchievementsDS extends Datasource {
return pa;
}
public Achievements getAchievements(){
return (Achievements)this.ach;
}
}

View File

@@ -21,23 +21,34 @@ import java.util.List;
import org.bukkit.World;
import de.sockenklaus.XmlStats.XmlStats;
import de.sockenklaus.XmlStats.XmlStatsRegistry;
import de.sockenklaus.XmlStats.Exceptions.XmlStatsException;
// TODO: Auto-generated Javadoc
/**
* The Class Datasource.
*/
public abstract class Datasource {
public class Datasource {
private static Datasource instance;
protected XmlStats xmlstats;
protected Datasource(){
this.xmlstats = XmlStats.getInstance();
}
public static Datasource getInstance(){
if(instance == null) instance = new Datasource();
return instance;
}
/**
* Fetch all players.
*
* @return the array list
*/
public static ArrayList<String> fetchAllPlayers(){
XmlStats xmlstats = (XmlStats)XmlStatsRegistry.get("xmlstats");
List<World> worlds = xmlstats.getServer().getWorlds();
public ArrayList<String> fetchAllPlayers(){
List<World> worlds = this.xmlstats.getServer().getWorlds();
ArrayList<String> result = new ArrayList<String>();
for(World world : worlds){
@@ -58,17 +69,18 @@ public abstract class Datasource {
return result;
}
public static boolean userExists(String player){
return fetchAllPlayers().contains(player);
public boolean userExists(String player){
return this.fetchAllPlayers().contains(player);
}
public static List<String> fetchValidUsers(List<String> list) throws XmlStatsException{
public List<String> fetchValidUsers(List<String> list) throws XmlStatsException{
ArrayList<String> output = new ArrayList<String>();
for (String possibleUser : list){
if(Datasource.userExists(possibleUser)) output.add(possibleUser);
if(this.userExists(possibleUser)) output.add(possibleUser);
}
if(output.isEmpty()) throw new XmlStatsException("No valid user has been found!");
else return output;
}
}

View File

@@ -14,35 +14,64 @@
*/
package de.sockenklaus.XmlStats.Datasource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import org.bukkit.plugin.Plugin;
import com.nijikokun.register.Register;
import com.nijikokun.register.payment.Method;
import com.nijikokun.register.payment.Method.MethodAccount;
import com.nijikokun.register.payment.Methods;
import de.sockenklaus.XmlStats.Util;
import de.sockenklaus.XmlStats.Webserver;
import de.sockenklaus.XmlStats.XmlStats;
import de.sockenklaus.XmlStats.XmlStatsRegistry;
import de.sockenklaus.XmlStats.Exceptions.XmlStatsException;
/**
* The Class MoneyDS.
*/
public class BalancesDS extends Datasource {
private ArrayList<String> allPlayers;
private XmlStats xmlstats;
public class RegisterDS extends Datasource {
public BalancesDS(){
this.allPlayers = fetchAllPlayers();
this.xmlstats = (XmlStats)XmlStatsRegistry.get("xmlstats");
private static RegisterDS instance;
private Plugin register;
private RegisterDS(){
super();
}
private void hookRegister(){
Plugin registerTemp = this.xmlstats.getServer().getPluginManager().getPlugin("Register");
Webserver webserver = Webserver.getInstance();
this.register = registerTemp;
XmlStats.LogInfo("Hooked into Register");
webserver.startRegister();
}
public static RegisterDS getInstance(){
if(instance == null){
XmlStats.LogDebug("Theres no instance of RegisterDS");
if(Util.checkRegister()){
XmlStats.LogDebug("Seems like there's a working instancen of Register");
instance = new RegisterDS();
instance.hookRegister();
}
else {
XmlStats.LogWarn("Register or no payment method found. Will not hook into Register.");
}
}
return instance;
}
public HashMap<String, Double> getBalances() throws XmlStatsException {
HashMap<String, Double> result = new HashMap<String, Double>();
for (String playerName : allPlayers){
for (String playerName : fetchAllPlayers()){
result.put(playerName, getBalance(playerName));
}
@@ -52,7 +81,7 @@ public class BalancesDS extends Datasource {
public Double getBalance(String playerName) throws XmlStatsException {
Double result = 0.0;
if (xmlstats.checkRegister()){
if (Util.checkRegister()){
Method paymentMethod = Methods.getMethod();
@@ -79,9 +108,13 @@ public class BalancesDS extends Datasource {
int result = 0;
for(String playerName : list){
result+=this.getBalance(playerName);
result+=getBalance(playerName);
}
return result;
}
public Register getRegister(){
return (Register)this.register;
}
}

View File

@@ -18,32 +18,57 @@ import java.io.File;
import java.util.HashMap;
import java.util.List;
import org.bukkit.plugin.Plugin;
import com.nidefawl.Stats.Stats;
import com.nidefawl.Stats.datasource.Category;
import com.nidefawl.Stats.datasource.PlayerStat;
import com.nidefawl.Stats.datasource.PlayerStatSQL;
import de.sockenklaus.XmlStats.XmlStatsRegistry;
import de.sockenklaus.XmlStats.Util;
import de.sockenklaus.XmlStats.Webserver;
import de.sockenklaus.XmlStats.XmlStats;
//import de.sockenklaus.XmlStats.XmlStatsRegistry;
// TODO: Auto-generated Javadoc
/**
* The Class StatsDS.
*/
public class UserstatsDS extends Datasource {
public class StatsDS extends Datasource {
private static Stats statsPlugin;
private static StatsDS instance;
private Plugin stats;
private StatsDS(){
super();
}
public static StatsDS getInstance(){
XmlStats.LogDebug("Let's get an instance of StatsDS");
if(instance == null){
XmlStats.LogDebug("There's no instance of StatsDS.");
if(Util.checkStats()){
XmlStats.LogDebug("Looks like Stats is up and running.");
instance = new StatsDS();
instance.hookStats();
}
else {
XmlStats.LogWarn("Stats not found! Can't hook into it.");
}
}
return instance;
}
/**
* Gets the data folder.
*
* @return the data folder
*/
public static File getDataFolder(){
statsPlugin = (Stats)XmlStatsRegistry.get("stats");
return statsPlugin.getDataFolder();
public File getDataFolder(){
return this.stats.getDataFolder();
}
public static HashMap<String, Category> getAddedStats(List<String> playerList){
public HashMap<String, Category> getAddedStats(List<String> playerList){
HashMap <String, Category> result = new HashMap<String, Category>();
for(String playerName : playerList){
@@ -77,12 +102,27 @@ public class UserstatsDS extends Datasource {
return result;
}
public static PlayerStat getPlayerStat(String playerName){
statsPlugin = (Stats)XmlStatsRegistry.get("stats");
PlayerStat result = new PlayerStatSQL(playerName, statsPlugin);
public PlayerStat getPlayerStat(String playerName){
PlayerStat result = new PlayerStatSQL(playerName, this.getStats());
result.load();
return result;
}
private void hookStats(){
Plugin StatsTemp = xmlstats.getServer().getPluginManager().getPlugin("Stats");
Webserver webserver = Webserver.getInstance();
this.stats = StatsTemp;
XmlStats.LogInfo("Hooked into Stats!");
webserver.startStats();
}
public Stats getStats(){
return (Stats)this.stats;
}
}

View File

@@ -1,22 +0,0 @@
/*
* Copyright (C) [2011] [Pascal K<>nig]
*
* 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/>.
*/
package de.sockenklaus.XmlStats.Datasource;
// TODO: Auto-generated Javadoc
/**
* The Class UsersDS.
*/
public class UsersDS extends Datasource {
}

View File

@@ -17,9 +17,8 @@ public class NodeAchievements extends NodeArray {
public NodeAchievements(){
super("achievements");
AchievementsDS ads = new AchievementsDS();
HashMap<String, AchievementListData> achList = ads.getAchievementsList();
HashMap<String, AchievementListData> achList = AchievementsDS.getInstance().getAchievementsList();
for(String achName : achList.keySet()){
this.childNodes.add(new NodeAchievement(achList.get(achName)));

View File

@@ -5,7 +5,7 @@ package de.sockenklaus.XmlStats.Objects;
import com.nidefawl.Stats.datasource.PlayerStat;
import de.sockenklaus.XmlStats.Datasource.UserstatsDS;
import de.sockenklaus.XmlStats.Datasource.StatsDS;
/**
* @author socrates
@@ -21,7 +21,7 @@ public class NodeCategories extends NodeArray {
*/
public NodeCategories(String userName) {
this();
PlayerStat userStat = UserstatsDS.getPlayerStat(userName);
PlayerStat userStat = StatsDS.getInstance().getPlayerStat(userName);
for(String catName : userStat.getCats()){
NodeCategory node_cat = new NodeCategory(catName, userStat.get(catName));

View File

@@ -8,7 +8,7 @@ import java.io.File;
import com.nidefawl.Stats.ItemResolver.hModItemResolver;
import com.nidefawl.Stats.datasource.Category;
import de.sockenklaus.XmlStats.Datasource.UserstatsDS;
import de.sockenklaus.XmlStats.Datasource.StatsDS;
/**
* @author socrates
@@ -22,7 +22,7 @@ public class NodeItems extends NodeArray {
public NodeItems(Category category, Boolean resolve) {
super("items");
hModItemResolver itemResolver = new hModItemResolver(new File(UserstatsDS.getDataFolder(),"items.txt"));
hModItemResolver itemResolver = new hModItemResolver(new File(StatsDS.getInstance().getDataFolder(),"items.txt"));
for(String varName : category.getEntries()){
NodeItem node_item = new NodeItem(varName, category.get(varName));

View File

@@ -7,7 +7,6 @@ import org.bukkit.Server;
import org.bukkit.entity.Player;
import de.sockenklaus.XmlStats.XmlStats;
import de.sockenklaus.XmlStats.XmlStatsRegistry;
import de.sockenklaus.XmlStats.Datasource.Datasource;
import de.sockenklaus.XmlStats.Exceptions.XmlStatsException;
@@ -19,8 +18,8 @@ public class NodeUser extends NodeList {
public NodeUser(String name) throws XmlStatsException{
super("user");
if (Datasource.userExists(name)){
Server server = ((XmlStats)XmlStatsRegistry.get("xmlstats")).getServer();
if (Datasource.getInstance().userExists(name)){
Server server = XmlStats.getInstance().getServer();
Player player = server.getPlayer(name);
String status = (player != null && player.isOnline()) ?"online":"offline";

View File

@@ -16,10 +16,9 @@ import de.sockenklaus.XmlStats.Exceptions.XmlStatsException;
public class NodeUserAchievements extends NodeArray {
public NodeUserAchievements(String userName) throws XmlStatsException{
super("achivements");
AchievementsDS ads = new AchievementsDS();
if (Datasource.userExists(userName)){
PlayerAchievement pa = ads.getUserAchievement(userName);
if (Datasource.getInstance().userExists(userName)){
PlayerAchievement pa = AchievementsDS.getInstance().getUserAchievement(userName);
for(String paName : pa.achievements.keySet()){
this.childNodes.add(new NodeUserAchievement(paName, pa.get(paName)));

View File

@@ -25,6 +25,7 @@ import org.bukkit.util.config.Configuration;
public class Settings {
private static final String configFilename = "config.yml";
private static Settings instance;
private Configuration conf;
/**
@@ -32,8 +33,8 @@ public class Settings {
*
* @param xmlStats the xml stats
*/
public Settings(XmlStats xmlStats){
File f = new File(xmlStats.getDataFolder(), configFilename);
private Settings(){
File f = new File(XmlStats.getInstance().getDataFolder(), configFilename);
conf = new Configuration(f);
if(f.exists()){
@@ -47,6 +48,11 @@ public class Settings {
}
}
public static synchronized Settings getInstance(){
if(instance == null) instance = new Settings();
return instance;
}
/**
* Gets the int.
*

View File

@@ -0,0 +1,45 @@
/**
*
*/
package de.sockenklaus.XmlStats;
import org.bukkit.plugin.Plugin;
import com.nijikokun.register.payment.Methods;
/**
* @author socrates
*
*/
public class Util {
/**
* Checks if is Achievements hooked.
*
* @return true, if is Achievements hooked
*/
public static boolean checkAchievements(){
Plugin AchievementsTemp = XmlStats.getInstance().getServer().getPluginManager().getPlugin("Achievements");
if(AchievementsTemp != null && AchievementsTemp.getClass().getName().equals("com.nidefawl.Achievements.Achievements") && AchievementsTemp.isEnabled()) return true;
return false;
}
public static boolean checkRegister(){
Plugin registerTemp = XmlStats.getInstance().getServer().getPluginManager().getPlugin("Register");
if (registerTemp != null && registerTemp.getClass().getName().equals("com.nijikokun.register.Register") && registerTemp.isEnabled() && Methods.hasMethod()) return true;
return false;
}
/**
* Checks if is stats hooked.
*
* @return true, if is stats hooked
*/
public static boolean checkStats(){
Plugin StatsTemp = XmlStats.getInstance().getServer().getPluginManager().getPlugin("Stats");
if(StatsTemp != null && StatsTemp.getClass().getName().equals("com.nidefawl.Stats.Stats") && StatsTemp.isEnabled()) return true;
return false;
}
}

View File

@@ -19,6 +19,9 @@ import java.net.InetSocketAddress;
import com.sun.net.httpserver.HttpServer;
import de.sockenklaus.XmlStats.Datasource.AchievementsDS;
import de.sockenklaus.XmlStats.Datasource.RegisterDS;
import de.sockenklaus.XmlStats.Datasource.StatsDS;
import de.sockenklaus.XmlStats.XmlWorkers.*;
// TODO: Auto-generated Javadoc
@@ -29,7 +32,8 @@ public class Webserver {
private InetSocketAddress address;
private HttpServer server = null;
private XmlStats xmlstats = null;
private static Webserver instance;
private Settings settings;
/**
* Instantiates a new web server.
@@ -37,10 +41,23 @@ public class Webserver {
* @param port the port
* @throws IOException Signals that an I/O exception has occurred.
*/
public Webserver() throws IOException {
Settings settingsTemp = (Settings)XmlStatsRegistry.get("settings");
this.xmlstats = (XmlStats)XmlStatsRegistry.get("xmlstats");
this.start(settingsTemp.getInt("options.webserver-port"));
private Webserver() throws IOException {
this.settings = Settings.getInstance();
this.start(this.settings.getInt("options.webserver-port"));
}
public static synchronized Webserver getInstance() {
if(instance == null) {
try {
instance = new Webserver();
}
catch (IOException ex){
XmlStats.LogError("An error occured while creating the webserver!");
XmlStats.LogError(ex.getMessage());
ex.printStackTrace();
}
}
return instance;
}
/**
@@ -62,10 +79,8 @@ public class Webserver {
public void reload() throws IOException {
this.stop();
Settings settingsTemp = (Settings)XmlStatsRegistry.get("settings");
this.start(settingsTemp.getInt("options.webserver-port"));
this.start(this.settings.getInt("options.webserver-port"));
}
private void start(int port) throws IOException {
@@ -84,16 +99,16 @@ public class Webserver {
this.server.createContext("/auth_register.xml", new AuthRegister());
XmlStats.LogDebug("Created context /auth_register.xml.");
this.server.createContext("auth_deregister.xml", new AuthDeregister());
this.server.createContext("/auth_deregister.xml", new AuthDeregister());
XmlStats.LogDebug("Created context /auth_deregister.xml.");
this.server.start();
XmlStats.LogDebug("Started webserver.");
}
protected void startRegister(){
public void startRegister(){
XmlStats.LogDebug("Casting startRegister()");
if (this.isRunning() && xmlstats.checkRegister()){
if (this.isRunning() && Util.checkRegister()){
server.createContext("/user_balances.xml", new UserBalances());
XmlStats.LogInfo("Register seems to be loaded correctly. Enabling /user_balances.xml");
}
@@ -102,8 +117,8 @@ public class Webserver {
}
}
protected void startAchievements(){
if(this.isRunning() && xmlstats.checkAchievements()){
public void startAchievements(){
if(this.isRunning() && Util.checkAchievements()){
server.createContext("/user_achievements.xml", new UserAchievements());
server.createContext("/achievements_list.xml", new AchievementsList());
XmlStats.LogInfo("Achievements seems to be loaded correctly. Enabling /user_achievements.xml");
@@ -113,8 +128,8 @@ public class Webserver {
}
}
protected void startStats(){
if(this.isRunning() && xmlstats.checkStats()){
public void startStats(){
if(this.isRunning() && Util.checkStats()){
server.createContext("/user_stats.xml", new UserStats());
XmlStats.LogInfo("Stats seems to be loaded correctly. Enabling /user_stats.xml");
}

View File

@@ -21,13 +21,11 @@ import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.event.Event.Priority;
import org.bukkit.event.Event.Type;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin;
import com.nidefawl.Achievements.Achievements;
import com.nidefawl.Stats.Stats;
import com.nijikokun.register.Register;
import com.nijikokun.register.payment.Methods;
import de.sockenklaus.XmlStats.Datasource.AchievementsDS;
import de.sockenklaus.XmlStats.Datasource.RegisterDS;
import de.sockenklaus.XmlStats.Datasource.StatsDS;
// TODO: Auto-generated Javadoc
/**
@@ -39,13 +37,21 @@ public class XmlStats extends JavaPlugin {
private String version;
private final static String logprefix = "[XmlStats]";
private boolean enabled = false;
private static XmlStats instance;
public static XmlStats getInstance(){
if(instance == null){
instance = new XmlStats();
}
return instance;
}
/* (non-Javadoc)
* @see org.bukkit.plugin.Plugin#onDisable()
*/
@Override
public void onDisable() {
Webserver webserverTemp = (Webserver)XmlStatsRegistry.get("webserver");
Webserver webserverTemp = Webserver.getInstance();
if(this.enabled && webserverTemp.isRunning()){
this.enabled = false;
@@ -53,12 +59,11 @@ public class XmlStats extends JavaPlugin {
webserverTemp.stop();
LogDebug("Webserver stopped.");
XmlStatsRegistry.flush();
getServer().getScheduler().cancelTasks(this);
}
LogInfo("XmlStats Disabled");
}
/* (non-Javadoc)
* @see org.bukkit.plugin.Plugin#onEnable()
*/
@@ -68,10 +73,9 @@ public class XmlStats extends JavaPlugin {
getDataFolder().mkdirs();
XmlStatsRegistry.put("settings", new Settings(this));
XmlStatsRegistry.put("xmlstats", this);
instance = this;
Settings settingsTemp = (Settings)XmlStatsRegistry.get("settings");
Settings settingsTemp = Settings.getInstance();
LogDebug("Settings read:");
LogDebug("options.webserver-enabled: "+settingsTemp.getBoolean("options.webserver-enabled"));
@@ -79,19 +83,12 @@ public class XmlStats extends JavaPlugin {
LogDebug("options.verbose-enabled: "+settingsTemp.getBoolean("options.verbose-enabled"));
if (settingsTemp.getBoolean("options.webserver-enabled")){
try {
XmlStatsRegistry.put("webserver", new Webserver());
Webserver.getInstance();
this.enabled = true;
LogInfo("XmStats "+this.version+" enabled");
this.hookPlugins();
this.registerEvents();
}
catch (Exception ex){
LogError("Fehler beim Erstellen des Webservers:");
LogError(ex.getMessage());
ex.printStackTrace();
}
this.enabled = true;
LogInfo("XmStats "+this.version+" enabled");
this.hookPlugins();
this.registerEvents();
}
else {
LogWarn("Webserver ist derzeit in der "+settingsTemp.getSettingsFilename()+" deaktiviert.");
@@ -133,7 +130,7 @@ public class XmlStats extends JavaPlugin {
* @param Message the message
*/
public static void LogDebug(String Message){
Settings settingsTemp = (Settings)XmlStatsRegistry.get("settings");
Settings settingsTemp = Settings.getInstance();
if(settingsTemp.getBoolean("options.verbose-enabled")){
log.log(Level.INFO, logprefix+"[DEBUG] "+Message);
}
@@ -143,89 +140,12 @@ public class XmlStats extends JavaPlugin {
* Hook plugins.
*/
protected void hookPlugins(){
this.hookAchievements();
this.hookRegister();
this.hookStats();
if(Util.checkStats()) StatsDS.getInstance();
if(Util.checkAchievements()) AchievementsDS.getInstance();
if(Util.checkRegister()) RegisterDS.getInstance();
}
protected void hookRegister(){
Plugin registerTemp = getServer().getPluginManager().getPlugin("Register");
Webserver webserver = (Webserver)XmlStatsRegistry.get("webserver");
if (this.checkRegister()) {
XmlStatsRegistry.put("register", (Register)registerTemp);
LogInfo("Hooked into Register");
webserver.startRegister();
}
else {
LogWarn("Register or no payment method found! Can't hook into it.");
}
}
protected void hookAchievements(){
Plugin AchievementsTemp = getServer().getPluginManager().getPlugin("Achievements");
Webserver webserver = (Webserver)XmlStatsRegistry.get("webserver");
if(this.checkAchievements()){
XmlStatsRegistry.put("achievements", (Achievements)AchievementsTemp);
LogInfo("Hooked into Achievements!");
webserver.startAchievements();
}
else {
LogWarn("Achievements not found! Can't hook into it.");
}
}
protected void hookStats(){
Plugin StatsTemp = getServer().getPluginManager().getPlugin("Stats");
Webserver webserver = (Webserver)XmlStatsRegistry.get("webserver");
if(this.checkStats()){
XmlStatsRegistry.put("stats", (Stats)StatsTemp);
LogInfo("Hooked into Stats!");
webserver.startStats();
}
else {
LogWarn("Stats not found! Can't hook into it.");
}
}
/**
* Checks if is stats hooked.
*
* @return true, if is stats hooked
*/
public boolean checkStats(){
Plugin StatsTemp = getServer().getPluginManager().getPlugin("Stats");
if(StatsTemp != null && StatsTemp.getClass().getName().equals("com.nidefawl.Stats.Stats") && StatsTemp.isEnabled()) return true;
return false;
}
/**
* Checks if is i conomy hooked.
*
* @return true, if is i conomy hooked
*/
public boolean checkRegister(){
Plugin registerTemp = getServer().getPluginManager().getPlugin("Register");
if (registerTemp != null && registerTemp.getClass().getName().equals("com.nijikokun.register.Register") && registerTemp.isEnabled() && Methods.hasMethod()) return true;
return false;
}
/**
* Checks if is Achievements hooked.
*
* @return true, if is Achievements hooked
*/
public boolean checkAchievements(){
Plugin AchievementsTemp = getServer().getPluginManager().getPlugin("Achievements");
if(AchievementsTemp != null && AchievementsTemp.getClass().getName().equals("com.nidefawl.Achievements.Achievements") && AchievementsTemp.isEnabled()) return true;
return false;
}
/* (non-Javadoc)
* @see org.bukkit.plugin.java.JavaPlugin#onCommand(org.bukkit.command.CommandSender, org.bukkit.command.Command, java.lang.String, java.lang.String[])
*/
@@ -257,9 +177,8 @@ public class XmlStats extends JavaPlugin {
}
private void registerEvents(){
XmlStatsServerListener listener = new XmlStatsServerListener(this);
XmlStatsServerListener listener = new XmlStatsServerListener();
getServer().getPluginManager().registerEvent(Type.PLUGIN_ENABLE, listener, Priority.Monitor, this);
//getServer().getPluginManager().registerEvent(Type.PLUGIN_DISABLE, listener, Priority.Monitor, this);
}
}

View File

@@ -1,57 +0,0 @@
/**
*
*/
package de.sockenklaus.XmlStats;
import java.util.HashMap;
// TODO: Auto-generated Javadoc
/**
* The Class XmlStatsRegistry.
*
* @author socrates
*/
public class XmlStatsRegistry {
private HashMap<String, Object> register = null;
private static XmlStatsRegistry instance = null;
/**
* Instantiates a new xml stats registry.
*/
private XmlStatsRegistry(){
register = new HashMap<String, Object>();
}
/**
* Put.
*
* @param key the key
* @param value the value
*/
public static void put(String key, Object value){
if(instance == null){
instance = new XmlStatsRegistry();
}
instance.register.put(key, value);
}
/**
* Get.
*
* @param key the key
* @return the object
*/
static public Object get(String key){
if(instance == null){
instance = new XmlStatsRegistry();
}
return instance.register.get(key);
}
/**
* Flush.
*/
public static void flush(){
instance = null;
}
}

View File

@@ -3,56 +3,33 @@
*/
package de.sockenklaus.XmlStats;
import org.bukkit.event.server.PluginDisableEvent;
import org.bukkit.event.server.PluginEnableEvent;
import org.bukkit.event.server.ServerListener;
import de.sockenklaus.XmlStats.Datasource.AchievementsDS;
import de.sockenklaus.XmlStats.Datasource.RegisterDS;
import de.sockenklaus.XmlStats.Datasource.StatsDS;
/**
* @author socrates
*
*/
public class XmlStatsServerListener extends ServerListener {
private XmlStats plugin;
public XmlStatsServerListener(XmlStats plugin){
this.plugin = plugin;
}
public void onPluginDisable(PluginDisableEvent event){
/*
* TODO
* Not implemented yet!
*/
/*Plugin iConomy = (Plugin)XmlStatsRegistry.get("iconomy");
Plugin Stats = (Plugin)XmlStatsRegistry.get("stats");
Plugin Achievements = (Plugin)XmlStatsRegistry.get("achievements");
if (!XmlStats.checkAchievements()){
}
if(!XmlStats.checkiConomy()){
}
if(!XmlStats.checkStats()){
}*/
}
public void onPluginEnable(PluginEnableEvent event){
if(this.identifyPlugin(event, "stats")){
this.plugin.hookStats();
if(this.identifyPlugin(event, "stats") && Util.checkStats()){
StatsDS.getInstance();
}
if(this.identifyPlugin(event, "achievements")){
this.plugin.hookAchievements();
if(this.identifyPlugin(event, "achievements") && Util.checkAchievements()){
AchievementsDS.getInstance();
}
if(this.identifyPlugin(event, "register")){
this.plugin.hookRegister();
if(this.identifyPlugin(event, "register") && Util.checkRegister()){
RegisterDS.getInstance();
}
}
private boolean identifyPlugin(PluginEnableEvent event, String name){
XmlStats.LogDebug(event.getPlugin().getDescription().getName()+" fired an event!");
return event.getPlugin().getDescription().getName().equalsIgnoreCase(name);
}
}

View File

@@ -11,7 +11,6 @@ import org.bukkit.util.config.Configuration;
import org.w3c.dom.Element;
import de.sockenklaus.XmlStats.XmlStats;
import de.sockenklaus.XmlStats.XmlStatsRegistry;
import de.sockenklaus.XmlStats.Exceptions.XmlStatsException;
/**
@@ -37,7 +36,7 @@ public class AuthRegister extends XmlWorker {
if(parameters.containsKey("key")){
for (String key : parameters.get("key")){
XmlStats x_temp = (XmlStats)XmlStatsRegistry.get("xmlstats");
XmlStats x_temp = XmlStats.getInstance();
File authKeyFile = new File(x_temp.getDataFolder(), this.authKeyFilename);
Configuration authKeyConf = new Configuration(authKeyFile);

View File

@@ -8,7 +8,6 @@ import java.util.Map;
import org.w3c.dom.Element;
import de.sockenklaus.XmlStats.Datasource.AchievementsDS;
import de.sockenklaus.XmlStats.Exceptions.XmlStatsException;
import de.sockenklaus.XmlStats.Objects.NodeUser;
import de.sockenklaus.XmlStats.Objects.NodeUserAchievements;
@@ -19,12 +18,6 @@ import de.sockenklaus.XmlStats.Objects.NodeUsers;
*
*/
public class UserAchievements extends XmlWorker {
AchievementsDS achDS;
public UserAchievements(){
this.achDS = new AchievementsDS();
}
/* (non-Javadoc)
* @see de.sockenklaus.XmlStats.XmlWorkers.XmlWorker#getXML(java.util.Map)

View File

@@ -19,7 +19,7 @@ import java.util.Map;
import org.w3c.dom.Element;
import de.sockenklaus.XmlStats.Datasource.BalancesDS;
import de.sockenklaus.XmlStats.Datasource.RegisterDS;
import de.sockenklaus.XmlStats.Exceptions.XmlStatsException;
import de.sockenklaus.XmlStats.Objects.NodeList;
import de.sockenklaus.XmlStats.Objects.NodeText;
@@ -31,11 +31,11 @@ import de.sockenklaus.XmlStats.Objects.NodeUsers;
* The Class XmlWorkerMoney.
*/
public class UserBalances extends XmlWorker {
private BalancesDS moneyDS;
private RegisterDS regDS;
public UserBalances(){
this.moneyDS = new BalancesDS();
this.regDS = RegisterDS.getInstance();
}
@@ -45,7 +45,7 @@ public class UserBalances extends XmlWorker {
for(String userName : playerList){
NodeUser node_user = new NodeUser(userName);
node_user.appendChild(new NodeText("balance", moneyDS.getBalance(userName)));
node_user.appendChild(new NodeText("balance", this.regDS.getBalance(userName)));
node_users.appendChild(node_user);
}
@@ -78,7 +78,7 @@ public class UserBalances extends XmlWorker {
node_users.appendChild(node_user);
}
int sum = moneyDS.getSum(userList);
int sum = this.regDS.getSum(userList);
node_sum.appendChild(new NodeText("balance", sum));
return node_sum.getXml(this.doc);

View File

@@ -38,7 +38,7 @@ public class UserList extends XmlWorker {
NodeUsers node_users = new NodeUsers();
for(String playerName : Datasource.fetchAllPlayers()){
for(String playerName : Datasource.getInstance().fetchAllPlayers()){
node_users.appendChild(new NodeUser(playerName));
}

View File

@@ -22,7 +22,7 @@ import org.w3c.dom.Element;
import com.nidefawl.Stats.datasource.Category;
import de.sockenklaus.XmlStats.Datasource.UserstatsDS;
import de.sockenklaus.XmlStats.Datasource.StatsDS;
import de.sockenklaus.XmlStats.Exceptions.XmlStatsException;
import de.sockenklaus.XmlStats.Objects.NodeCategories;
import de.sockenklaus.XmlStats.Objects.NodeCategory;
@@ -59,7 +59,7 @@ public class UserStats extends XmlWorker {
node_users.appendChild(new NodeUser(userName));
}
HashMap<String, Category> addedStats = UserstatsDS.getAddedStats(playerList);
HashMap<String, Category> addedStats = StatsDS.getInstance().getAddedStats(playerList);
for(String catName : addedStats.keySet()){
NodeCategory node_cat = new NodeCategory(catName, addedStats.get(catName));

View File

@@ -45,7 +45,6 @@ import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpExchange;
import de.sockenklaus.XmlStats.XmlStats;
import de.sockenklaus.XmlStats.XmlStatsRegistry;
import de.sockenklaus.XmlStats.Datasource.Datasource;
import de.sockenklaus.XmlStats.Exceptions.XmlStatsException;
@@ -68,7 +67,7 @@ public abstract class XmlWorker implements HttpHandler {
*/
public void handle(HttpExchange exchange) {
Map<String, List<String>> parameters = new HashMap<String, List<String>>();
Datasource datasource = Datasource.getInstance();
Headers headers = exchange.getRequestHeaders();
if("get".equalsIgnoreCase(exchange.getRequestMethod())){
@@ -103,7 +102,7 @@ public abstract class XmlWorker implements HttpHandler {
List<String> userList;
this.doc.appendChild(root);
XmlStats xmlstats = (XmlStats)XmlStatsRegistry.get("xmlstats");
XmlStats xmlstats = XmlStats.getInstance();
Element server = this.doc.createElement("server");
server.appendChild(getTextElem("version", xmlstats.getServer().getVersion()));
@@ -125,10 +124,10 @@ public abstract class XmlWorker implements HttpHandler {
if(parameters.containsKey("user")){
if (parameters.get("user").contains("*")){
userList = Datasource.fetchAllPlayers();
userList = datasource.fetchAllPlayers();
}
else {
userList = Datasource.fetchValidUsers(parameters.get("user"));
userList = datasource.fetchValidUsers(parameters.get("user"));
}
root.appendChild(getUserXml(userList, parameters));
@@ -136,10 +135,10 @@ public abstract class XmlWorker implements HttpHandler {
if(parameters.containsKey("sum")){
if(parameters.get("sum").contains("*")){
userList = Datasource.fetchAllPlayers();
userList = datasource.fetchAllPlayers();
}
else {
userList = Datasource.fetchValidUsers(parameters.get("sum"));
userList = datasource.fetchValidUsers(parameters.get("sum"));
}
root.appendChild(getSumXml(userList, parameters));
}