From 1ccc5244e8bc31f1511eefda87851924ff3ee73e Mon Sep 17 00:00:00 2001 From: Pascal Koenig Date: Fri, 14 Oct 2011 01:27:09 +0200 Subject: [PATCH] Did some refactoring on datasources. --- .../XmlStats/Datasource/AchievementsDS.java | 66 ++++++--- .../XmlStats/Datasource/Datasource.java | 30 ++-- .../{BalancesDS.java => RegisterDS.java} | 57 ++++++-- .../{UserstatsDS.java => StatsDS.java} | 60 ++++++-- .../XmlStats/Datasource/UsersDS.java | 22 --- .../XmlStats/Objects/NodeAchievements.java | 5 +- .../XmlStats/Objects/NodeCategories.java | 4 +- .../XmlStats/Objects/NodeItems.java | 4 +- .../XmlStats/Objects/NodeUser.java | 5 +- .../Objects/NodeUserAchievements.java | 5 +- src/de/sockenklaus/XmlStats/Settings.java | 10 +- src/de/sockenklaus/XmlStats/Util.java | 45 ++++++ src/de/sockenklaus/XmlStats/Webserver.java | 47 ++++--- src/de/sockenklaus/XmlStats/XmlStats.java | 131 ++++-------------- .../XmlStats/XmlStatsRegistry.java | 57 -------- .../XmlStats/XmlStatsServerListener.java | 45 ++---- .../XmlStats/XmlWorkers/AuthRegister.java | 3 +- .../XmlStats/XmlWorkers/UserAchievements.java | 7 - .../XmlStats/XmlWorkers/UserBalances.java | 12 +- .../XmlStats/XmlWorkers/UserList.java | 2 +- .../XmlStats/XmlWorkers/UserStats.java | 4 +- .../XmlStats/XmlWorkers/XmlWorker.java | 13 +- 22 files changed, 305 insertions(+), 329 deletions(-) rename src/de/sockenklaus/XmlStats/Datasource/{BalancesDS.java => RegisterDS.java} (62%) rename src/de/sockenklaus/XmlStats/Datasource/{UserstatsDS.java => StatsDS.java} (56%) delete mode 100644 src/de/sockenklaus/XmlStats/Datasource/UsersDS.java create mode 100644 src/de/sockenklaus/XmlStats/Util.java delete mode 100644 src/de/sockenklaus/XmlStats/XmlStatsRegistry.java diff --git a/src/de/sockenklaus/XmlStats/Datasource/AchievementsDS.java b/src/de/sockenklaus/XmlStats/Datasource/AchievementsDS.java index 5e88b0c..af7e5c0 100644 --- a/src/de/sockenklaus/XmlStats/Datasource/AchievementsDS.java +++ b/src/de/sockenklaus/XmlStats/Datasource/AchievementsDS.java @@ -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 playerAchievementsList; - - public HashMap getAchievementsList(){ - Achievements ach = (Achievements)XmlStatsRegistry.get("achievements"); - - if(xmlstats.checkAchievements()){ - return ach.achievementList; - } - else return new HashMap(); + 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 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; + } } diff --git a/src/de/sockenklaus/XmlStats/Datasource/Datasource.java b/src/de/sockenklaus/XmlStats/Datasource/Datasource.java index 1866108..cac6795 100644 --- a/src/de/sockenklaus/XmlStats/Datasource/Datasource.java +++ b/src/de/sockenklaus/XmlStats/Datasource/Datasource.java @@ -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 fetchAllPlayers(){ - XmlStats xmlstats = (XmlStats)XmlStatsRegistry.get("xmlstats"); - List worlds = xmlstats.getServer().getWorlds(); + public ArrayList fetchAllPlayers(){ + List worlds = this.xmlstats.getServer().getWorlds(); ArrayList result = new ArrayList(); 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 fetchValidUsers(List list) throws XmlStatsException{ + public List fetchValidUsers(List list) throws XmlStatsException{ ArrayList output = new ArrayList(); 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; } + } diff --git a/src/de/sockenklaus/XmlStats/Datasource/BalancesDS.java b/src/de/sockenklaus/XmlStats/Datasource/RegisterDS.java similarity index 62% rename from src/de/sockenklaus/XmlStats/Datasource/BalancesDS.java rename to src/de/sockenklaus/XmlStats/Datasource/RegisterDS.java index 078768c..d67760a 100644 --- a/src/de/sockenklaus/XmlStats/Datasource/BalancesDS.java +++ b/src/de/sockenklaus/XmlStats/Datasource/RegisterDS.java @@ -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 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 getBalances() throws XmlStatsException { HashMap result = new HashMap(); - 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; + } } diff --git a/src/de/sockenklaus/XmlStats/Datasource/UserstatsDS.java b/src/de/sockenklaus/XmlStats/Datasource/StatsDS.java similarity index 56% rename from src/de/sockenklaus/XmlStats/Datasource/UserstatsDS.java rename to src/de/sockenklaus/XmlStats/Datasource/StatsDS.java index 4f0231d..e5e3802 100644 --- a/src/de/sockenklaus/XmlStats/Datasource/UserstatsDS.java +++ b/src/de/sockenklaus/XmlStats/Datasource/StatsDS.java @@ -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 getAddedStats(List playerList){ + public HashMap getAddedStats(List playerList){ HashMap result = new HashMap(); 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; + } } diff --git a/src/de/sockenklaus/XmlStats/Datasource/UsersDS.java b/src/de/sockenklaus/XmlStats/Datasource/UsersDS.java deleted file mode 100644 index 6e59fe2..0000000 --- a/src/de/sockenklaus/XmlStats/Datasource/UsersDS.java +++ /dev/null @@ -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 . -*/ -package de.sockenklaus.XmlStats.Datasource; - -// TODO: Auto-generated Javadoc -/** - * The Class UsersDS. - */ -public class UsersDS extends Datasource { -} \ No newline at end of file diff --git a/src/de/sockenklaus/XmlStats/Objects/NodeAchievements.java b/src/de/sockenklaus/XmlStats/Objects/NodeAchievements.java index 770030b..43f9233 100644 --- a/src/de/sockenklaus/XmlStats/Objects/NodeAchievements.java +++ b/src/de/sockenklaus/XmlStats/Objects/NodeAchievements.java @@ -17,9 +17,8 @@ public class NodeAchievements extends NodeArray { public NodeAchievements(){ super("achievements"); - AchievementsDS ads = new AchievementsDS(); - - HashMap achList = ads.getAchievementsList(); + + HashMap achList = AchievementsDS.getInstance().getAchievementsList(); for(String achName : achList.keySet()){ this.childNodes.add(new NodeAchievement(achList.get(achName))); diff --git a/src/de/sockenklaus/XmlStats/Objects/NodeCategories.java b/src/de/sockenklaus/XmlStats/Objects/NodeCategories.java index 2f02487..fa0b711 100644 --- a/src/de/sockenklaus/XmlStats/Objects/NodeCategories.java +++ b/src/de/sockenklaus/XmlStats/Objects/NodeCategories.java @@ -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)); diff --git a/src/de/sockenklaus/XmlStats/Objects/NodeItems.java b/src/de/sockenklaus/XmlStats/Objects/NodeItems.java index 9f5e366..f92927c 100644 --- a/src/de/sockenklaus/XmlStats/Objects/NodeItems.java +++ b/src/de/sockenklaus/XmlStats/Objects/NodeItems.java @@ -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)); diff --git a/src/de/sockenklaus/XmlStats/Objects/NodeUser.java b/src/de/sockenklaus/XmlStats/Objects/NodeUser.java index 87b5484..36691cc 100644 --- a/src/de/sockenklaus/XmlStats/Objects/NodeUser.java +++ b/src/de/sockenklaus/XmlStats/Objects/NodeUser.java @@ -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"; diff --git a/src/de/sockenklaus/XmlStats/Objects/NodeUserAchievements.java b/src/de/sockenklaus/XmlStats/Objects/NodeUserAchievements.java index 281ba39..35492a5 100644 --- a/src/de/sockenklaus/XmlStats/Objects/NodeUserAchievements.java +++ b/src/de/sockenklaus/XmlStats/Objects/NodeUserAchievements.java @@ -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))); diff --git a/src/de/sockenklaus/XmlStats/Settings.java b/src/de/sockenklaus/XmlStats/Settings.java index 728e53f..2114b23 100644 --- a/src/de/sockenklaus/XmlStats/Settings.java +++ b/src/de/sockenklaus/XmlStats/Settings.java @@ -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. * diff --git a/src/de/sockenklaus/XmlStats/Util.java b/src/de/sockenklaus/XmlStats/Util.java new file mode 100644 index 0000000..f05cd2f --- /dev/null +++ b/src/de/sockenklaus/XmlStats/Util.java @@ -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; + } +} diff --git a/src/de/sockenklaus/XmlStats/Webserver.java b/src/de/sockenklaus/XmlStats/Webserver.java index bb8d7f0..0dacf13 100644 --- a/src/de/sockenklaus/XmlStats/Webserver.java +++ b/src/de/sockenklaus/XmlStats/Webserver.java @@ -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"); } diff --git a/src/de/sockenklaus/XmlStats/XmlStats.java b/src/de/sockenklaus/XmlStats/XmlStats.java index 4614997..59aa74b 100644 --- a/src/de/sockenklaus/XmlStats/XmlStats.java +++ b/src/de/sockenklaus/XmlStats/XmlStats.java @@ -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); } } diff --git a/src/de/sockenklaus/XmlStats/XmlStatsRegistry.java b/src/de/sockenklaus/XmlStats/XmlStatsRegistry.java deleted file mode 100644 index ebb5668..0000000 --- a/src/de/sockenklaus/XmlStats/XmlStatsRegistry.java +++ /dev/null @@ -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 register = null; - private static XmlStatsRegistry instance = null; - - /** - * Instantiates a new xml stats registry. - */ - private XmlStatsRegistry(){ - register = new HashMap(); - } - - /** - * 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; - } -} diff --git a/src/de/sockenklaus/XmlStats/XmlStatsServerListener.java b/src/de/sockenklaus/XmlStats/XmlStatsServerListener.java index a9a7bca..d1345ec 100644 --- a/src/de/sockenklaus/XmlStats/XmlStatsServerListener.java +++ b/src/de/sockenklaus/XmlStats/XmlStatsServerListener.java @@ -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); } } diff --git a/src/de/sockenklaus/XmlStats/XmlWorkers/AuthRegister.java b/src/de/sockenklaus/XmlStats/XmlWorkers/AuthRegister.java index 2cc99ea..ca4b3d5 100644 --- a/src/de/sockenklaus/XmlStats/XmlWorkers/AuthRegister.java +++ b/src/de/sockenklaus/XmlStats/XmlWorkers/AuthRegister.java @@ -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); diff --git a/src/de/sockenklaus/XmlStats/XmlWorkers/UserAchievements.java b/src/de/sockenklaus/XmlStats/XmlWorkers/UserAchievements.java index e063f4b..0fc9ad2 100644 --- a/src/de/sockenklaus/XmlStats/XmlWorkers/UserAchievements.java +++ b/src/de/sockenklaus/XmlStats/XmlWorkers/UserAchievements.java @@ -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) diff --git a/src/de/sockenklaus/XmlStats/XmlWorkers/UserBalances.java b/src/de/sockenklaus/XmlStats/XmlWorkers/UserBalances.java index 2866eab..5c7b590 100644 --- a/src/de/sockenklaus/XmlStats/XmlWorkers/UserBalances.java +++ b/src/de/sockenklaus/XmlStats/XmlWorkers/UserBalances.java @@ -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); diff --git a/src/de/sockenklaus/XmlStats/XmlWorkers/UserList.java b/src/de/sockenklaus/XmlStats/XmlWorkers/UserList.java index 7a825b2..09458a3 100644 --- a/src/de/sockenklaus/XmlStats/XmlWorkers/UserList.java +++ b/src/de/sockenklaus/XmlStats/XmlWorkers/UserList.java @@ -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)); } diff --git a/src/de/sockenklaus/XmlStats/XmlWorkers/UserStats.java b/src/de/sockenklaus/XmlStats/XmlWorkers/UserStats.java index b6055d0..41e5d25 100644 --- a/src/de/sockenklaus/XmlStats/XmlWorkers/UserStats.java +++ b/src/de/sockenklaus/XmlStats/XmlWorkers/UserStats.java @@ -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 addedStats = UserstatsDS.getAddedStats(playerList); + HashMap addedStats = StatsDS.getInstance().getAddedStats(playerList); for(String catName : addedStats.keySet()){ NodeCategory node_cat = new NodeCategory(catName, addedStats.get(catName)); diff --git a/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorker.java b/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorker.java index 4a6d369..7a47dbd 100644 --- a/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorker.java +++ b/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorker.java @@ -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> parameters = new HashMap>(); - + Datasource datasource = Datasource.getInstance(); Headers headers = exchange.getRequestHeaders(); if("get".equalsIgnoreCase(exchange.getRequestMethod())){ @@ -103,7 +102,7 @@ public abstract class XmlWorker implements HttpHandler { List 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)); }