diff --git a/.build.number b/.build.number index e3aef26..6b71439 100644 --- a/.build.number +++ b/.build.number @@ -1,3 +1,3 @@ #Build Number for ANT. Do not edit! -#Tue Oct 04 10:45:18 CEST 2011 -build.number=53 +#Fri Feb 03 16:29:04 CET 2012 +build.number=72 diff --git a/.classpath b/.classpath index 13973b9..ebd05a5 100644 --- a/.classpath +++ b/.classpath @@ -2,13 +2,9 @@ - - - - - - + + diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs index bdc32a3..174608e 100644 --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -1,12 +1,12 @@ -#Sat Aug 27 14:58:29 CEST 2011 +#Fri Feb 03 00:30:05 CET 2012 eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.6 +org.eclipse.jdt.core.compiler.compliance=1.7 org.eclipse.jdt.core.compiler.debug.lineNumber=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.6 +org.eclipse.jdt.core.compiler.source=1.7 diff --git a/README.md b/README.md index d5cea27..97ef706 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,8 @@ This plugin for the Bukkit Minecraft Server API ([Homepage](http://bukkit.org) | [Github](https://github.com/Bukkit/Bukkit )) offers the possibility to access some playerstats via xml files. The provided data is basically generated by [Stats](https://github.com/nidefawl/Stats). +[![Flattr this git repo](http://api.flattr.com/button/flattr-badge-large.png)](https://flattr.com/submit/auto?user_id=socke&url=https://github.com/sockenklaus/XmlStats&title=XmlStats&language=&tags=github&category=software) + ## Install To install the plugin, simply place the compiled **XmlStats.jar** in your servers plugin directory and execute the /reload-command on your server. The plugin will create it's config file in the /plugins/XmlStats directory. diff --git a/build.xml b/build.xml index 56ff7eb..bfcb39a 100644 --- a/build.xml +++ b/build.xml @@ -5,7 +5,7 @@ - + @@ -13,9 +13,8 @@ - - - + + diff --git a/lib/Achievements.jar b/lib/Achievements.jar index 03da59f..b937d82 100644 Binary files a/lib/Achievements.jar and b/lib/Achievements.jar differ diff --git a/lib/Register-1.5.jar b/lib/Register.jar similarity index 100% rename from lib/Register-1.5.jar rename to lib/Register.jar diff --git a/lib/Stats.jar b/lib/Stats.jar index c13b053..f033053 100644 Binary files a/lib/Stats.jar and b/lib/Stats.jar differ diff --git a/lib/bukkit-0.0.1-SNAPSHOT.jar b/lib/bukkit-1.1-R3.jar similarity index 50% rename from lib/bukkit-0.0.1-SNAPSHOT.jar rename to lib/bukkit-1.1-R3.jar index da3b9e4..aa26f4f 100644 Binary files a/lib/bukkit-0.0.1-SNAPSHOT.jar and b/lib/bukkit-1.1-R3.jar differ diff --git a/src/de/sockenklaus/XmlStats/Datasource/AchievementsDS.java b/src/de/sockenklaus/XmlStats/Datasource/AchievementsDS.java index 4626318..5e88b0c 100644 --- a/src/de/sockenklaus/XmlStats/Datasource/AchievementsDS.java +++ b/src/de/sockenklaus/XmlStats/Datasource/AchievementsDS.java @@ -49,7 +49,7 @@ public class AchievementsDS extends Datasource { PlayerAchievement pa; Achievements ach = (Achievements)XmlStatsRegistry.get("achievements"); - + if(ach.useSQL){ String location = ach.getDataFolder().getPath() + File.separator + playerName + ".txt"; File fold = new File(location); diff --git a/src/de/sockenklaus/XmlStats/Datasource/BalancesDS.java b/src/de/sockenklaus/XmlStats/Datasource/BalancesDS.java index 078768c..b951ad9 100644 --- a/src/de/sockenklaus/XmlStats/Datasource/BalancesDS.java +++ b/src/de/sockenklaus/XmlStats/Datasource/BalancesDS.java @@ -1,5 +1,5 @@ /* - * Copyright (C) [2011] [Pascal König] + * Copyright (C) [2011] [Pascal Koenig] * * 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 diff --git a/src/de/sockenklaus/XmlStats/Datasource/Datasource.java b/src/de/sockenklaus/XmlStats/Datasource/Datasource.java index 1866108..1d0e168 100644 --- a/src/de/sockenklaus/XmlStats/Datasource/Datasource.java +++ b/src/de/sockenklaus/XmlStats/Datasource/Datasource.java @@ -1,5 +1,5 @@ /* - * Copyright (C) [2011] [Pascal König] + * Copyright (C) [2011] [Pascal Koenig] * * 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 diff --git a/src/de/sockenklaus/XmlStats/Datasource/UsersDS.java b/src/de/sockenklaus/XmlStats/Datasource/UsersDS.java index 6e59fe2..1fa9394 100644 --- a/src/de/sockenklaus/XmlStats/Datasource/UsersDS.java +++ b/src/de/sockenklaus/XmlStats/Datasource/UsersDS.java @@ -1,5 +1,5 @@ /* - * Copyright (C) [2011] [Pascal König] + * Copyright (C) [2011] [Pascal Koenig] * * 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 diff --git a/src/de/sockenklaus/XmlStats/Datasource/UserstatsDS.java b/src/de/sockenklaus/XmlStats/Datasource/UserstatsDS.java index 67ec6a9..7710316 100644 --- a/src/de/sockenklaus/XmlStats/Datasource/UserstatsDS.java +++ b/src/de/sockenklaus/XmlStats/Datasource/UserstatsDS.java @@ -1,5 +1,5 @@ /* - * Copyright (C) [2011] [Pascal König] + * Copyright (C) [2011] [Pascal Koenig] * * 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 @@ -18,10 +18,15 @@ import java.io.File; import java.util.HashMap; import java.util.List; -import com.nidefawl.Stats.Stats; +import terranetworkorg.Stats.Stats; +import terranetworkorg.Stats.Storage.PlayerCache; +import terranetworkorg.Stats.Storage.PlayerControl; +import terranetworkorg.Stats.Storage.PlayerStats; + +/*import com.nidefawl.Stats.Stats; import com.nidefawl.Stats.datasource.Category; import com.nidefawl.Stats.datasource.PlayerStat; -import com.nidefawl.Stats.datasource.PlayerStatSQL; +import com.nidefawl.Stats.datasource.PlayerStatSQL;*/ import de.sockenklaus.XmlStats.XmlStatsRegistry; @@ -31,78 +36,93 @@ import de.sockenklaus.XmlStats.XmlStatsRegistry; */ public class UserstatsDS extends Datasource { - private Stats statsPlugin; - - /** - * Instantiates a new stats ds. - */ - public UserstatsDS() { - this.statsPlugin = (Stats)XmlStatsRegistry.get("stats"); - } - - /** - * Gets the plugin. - * - * @return the plugin - */ -// public Stats getPlugin() { - // return this.statsPlugin; - //} + private static Stats statsPlugin; /** * Gets the data folder. * * @return the data folder */ - public File getDataFolder(){ - return this.statsPlugin.getDataFolder(); + public static File getDataFolder(){ + statsPlugin = (Stats)XmlStatsRegistry.get("stats"); + return statsPlugin.getDataFolder(); } - public HashMap> getAddedStats(List playerList){ + public static HashMap> getAddedStats(List playerList){ HashMap > result = new HashMap>(); for(String playerName : playerList){ - PlayerStat player = this.getPlayerStat(playerName); + PlayerCache player = getPlayerCache(playerName); - for(String catName : player.getCats()){ - Category cat = player.get(catName); - - for(String entryName : cat.getEntries()){ - Integer entry = cat.get(entryName); + for(PlayerStats ps : player.getStats()){ + if(!result.containsKey(ps.getCat())){ + /* + * Fall 1: + * Result enthaelt schon die Kat nicht + */ + HashMap tmpMap = new HashMap(); + tmpMap.put(ps.getName(), ps.getValue()); + result.put(ps.getCat(), tmpMap); + } + else if(!result.get(ps.getCat()).containsKey(ps.getName())){ + /* + * Fall 2: Result enthaelt Cat aber Stat nicht. + */ + result.get(ps.getCat()).put(ps.getName(), ps.getValue()); + } + else { + /* + * Fall 3: Es ist beides schon vorhanden + */ + Integer currVal = result.get(ps.getCat()).get(ps.getName()); - if(result.containsKey(catName)){ - if(result.get(catName).containsKey(entryName)){ - - if(entryName.equals("lastlogin") || entryName.equals("lastlogout")){ - result.get(catName).put(entryName, Math.max(result.get(catName).get(entryName), entry)); - } - else { - Integer tempInt = result.get(catName).get(entryName) + entry; - result.get(catName).put(entryName, tempInt); - } - - } - else { - result.get(catName).put(entryName, entry); - } + if(ps.getName().equals("lastlogin") || ps.getName().equals("lastlogout")){ + result.get(ps.getCat()).put(ps.getName(), Math.max(ps.getValue(), currVal)); } else { - HashMap tempMap = new HashMap(); - tempMap.put(entryName, entry); - result.put(catName, tempMap); + result.get(ps.getCat()).put(ps.getName(), currVal + ps.getValue()); } } } } + + return result; + } + + public static HashMap> getStats(String playerName){ + HashMap> result = new HashMap>(); + + PlayerCache player = getPlayerCache(playerName); + + for(PlayerStats ps : player.getStats()){ + if(!result.containsKey(ps.getCat())){ + /* + * Fall 1: Result enthaelt die Kategorie nicht. + */ + HashMap tmpMap = new HashMap(); + tmpMap.put(ps.getName(), ps.getValue()); + result.put(ps.getCat(), tmpMap); + } + else if(!result.get(ps.getCat()).containsKey(ps.getName())){ + /* + * Fall 2: Result kennt Kategorie, aber nicht den Stat. + */ + result.get(ps.getCat()).put(ps.getName(), ps.getValue()); + } + else { + /* + * Fall 3 (sollte nicht auftreten): Result kennt beides schon. + * Im Zweifel ueberschreiben... + */ + result.get(ps.getCat()).put(ps.getName(), ps.getValue()); + } + } return result; + } - public PlayerStat getPlayerStat(String playerName){ - PlayerStat result = new PlayerStatSQL(playerName, this.statsPlugin); - - result.load(); - - return result; + private static PlayerCache getPlayerCache(String playerName){ + return PlayerControl.getPlayerCache(playerName); } } diff --git a/src/de/sockenklaus/XmlStats/Objects/Node.java b/src/de/sockenklaus/XmlStats/Objects/Node.java new file mode 100644 index 0000000..864b46f --- /dev/null +++ b/src/de/sockenklaus/XmlStats/Objects/Node.java @@ -0,0 +1,47 @@ +/** + * + */ +package de.sockenklaus.XmlStats.Objects; + + +import java.util.HashMap; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +/** + * @author socrates + * + */ +public abstract class Node { + + protected String tagName; + protected HashMap attributes; + + public Node(){ + this.attributes = new HashMap(); + } + + public void setAttribute(String name, String value){ + this.attributes.put(name, value); + } + + /** + * @param name + * @param item + */ + public void setAttribute(String name, Integer value) { + this.setAttribute(name, value.toString()); + + } + + public Element getXml(Document doc){ + Element result = doc.createElement(this.tagName); + + for(String attrName : this.attributes.keySet()){ + result.setAttribute(attrName, this.attributes.get(attrName)); + } + + return result; + } +} diff --git a/src/de/sockenklaus/XmlStats/Objects/NodeAchievement.java b/src/de/sockenklaus/XmlStats/Objects/NodeAchievement.java new file mode 100644 index 0000000..3ee5821 --- /dev/null +++ b/src/de/sockenklaus/XmlStats/Objects/NodeAchievement.java @@ -0,0 +1,30 @@ +/** + * + */ +package de.sockenklaus.XmlStats.Objects; + +import com.nidefawl.Achievements.AchievementListData; + +/** + * @author socrates + * + */ +public class NodeAchievement extends NodeList { + + public NodeAchievement(){ + super("achievement"); + } + + public NodeAchievement(AchievementListData ach){ + super("achievement"); + + this.childNodes.add(new NodeText("name", ach.getName())); + this.childNodes.add(new NodeText("description", ach.getDescription())); + this.childNodes.add(new NodeText("category", ach.getCategory())); + this.childNodes.add(new NodeText("stat", ach.getKey())); + this.childNodes.add(new NodeText("value", ach.getValue())); + this.childNodes.add(new NodeText("maxawards", ach.getMaxawards())); + this.childNodes.add(new NodeText("commands", ach.commands.toString())); + this.attributes.put("enabled", String.valueOf(ach.isEnabled())); + } +} diff --git a/src/de/sockenklaus/XmlStats/Objects/NodeAchievements.java b/src/de/sockenklaus/XmlStats/Objects/NodeAchievements.java new file mode 100644 index 0000000..770030b --- /dev/null +++ b/src/de/sockenklaus/XmlStats/Objects/NodeAchievements.java @@ -0,0 +1,28 @@ +/** + * + */ +package de.sockenklaus.XmlStats.Objects; + +import java.util.HashMap; + +import com.nidefawl.Achievements.AchievementListData; + +import de.sockenklaus.XmlStats.Datasource.AchievementsDS; + +/** + * @author socrates + * + */ +public class NodeAchievements extends NodeArray { + + public NodeAchievements(){ + super("achievements"); + AchievementsDS ads = new AchievementsDS(); + + HashMap achList = ads.getAchievementsList(); + + for(String achName : achList.keySet()){ + this.childNodes.add(new NodeAchievement(achList.get(achName))); + } + } +} diff --git a/src/de/sockenklaus/XmlStats/Objects/NodeArray.java b/src/de/sockenklaus/XmlStats/Objects/NodeArray.java new file mode 100644 index 0000000..d9ab104 --- /dev/null +++ b/src/de/sockenklaus/XmlStats/Objects/NodeArray.java @@ -0,0 +1,24 @@ +/** + * + */ +package de.sockenklaus.XmlStats.Objects; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +/** + * @author socrates + * + */ +public abstract class NodeArray extends NodeList { + + public NodeArray(String tagName){ + super(tagName); + } + + public Element getXml(Document doc){ + this.attributes.put("count", String.valueOf(this.childNodes.size())); + + return super.getXml(doc); + } +} diff --git a/src/de/sockenklaus/XmlStats/Objects/NodeCategories.java b/src/de/sockenklaus/XmlStats/Objects/NodeCategories.java new file mode 100644 index 0000000..44a359b --- /dev/null +++ b/src/de/sockenklaus/XmlStats/Objects/NodeCategories.java @@ -0,0 +1,31 @@ +/** + * + */ +package de.sockenklaus.XmlStats.Objects; + +import java.util.HashMap; + +import de.sockenklaus.XmlStats.Datasource.UserstatsDS; + +/** + * @author socrates + * + */ +public class NodeCategories extends NodeArray { + + public NodeCategories(){ + super("categories"); + } + /** + * @param tagName + */ + public NodeCategories(String userName) { + this(); + HashMap> userStat = UserstatsDS.getStats(userName); + + for(String catName : userStat.keySet()){ + NodeCategory node_cat = new NodeCategory(catName, userStat.get(catName)); + this.appendChild(node_cat); + } + } +} diff --git a/src/de/sockenklaus/XmlStats/Objects/NodeCategory.java b/src/de/sockenklaus/XmlStats/Objects/NodeCategory.java new file mode 100644 index 0000000..e92fc15 --- /dev/null +++ b/src/de/sockenklaus/XmlStats/Objects/NodeCategory.java @@ -0,0 +1,24 @@ +/** + * + */ +package de.sockenklaus.XmlStats.Objects; + +import java.util.HashMap; + +/** + * @author socrates + * + */ +public class NodeCategory extends NodeList { + + /** + * @param category + */ + public NodeCategory(String catName, HashMap category) { + super("category"); + + this.appendChild(new NodeText("name", catName)); + this.appendChild(new NodeItems(category)); + } + +} diff --git a/src/de/sockenklaus/XmlStats/Objects/NodeItem.java b/src/de/sockenklaus/XmlStats/Objects/NodeItem.java new file mode 100644 index 0000000..f98ce64 --- /dev/null +++ b/src/de/sockenklaus/XmlStats/Objects/NodeItem.java @@ -0,0 +1,22 @@ +/** + * + */ +package de.sockenklaus.XmlStats.Objects; + +/** + * @author socrates + * + */ +public class NodeItem extends NodeList { + + /** + * @param varName + * @param i + */ + public NodeItem(String varName, int value) { + super("item"); + + this.appendChild(new NodeText("name", varName)); + this.appendChild(new NodeText("value", value)); + } +} diff --git a/src/de/sockenklaus/XmlStats/Objects/NodeItems.java b/src/de/sockenklaus/XmlStats/Objects/NodeItems.java new file mode 100644 index 0000000..02f3c7c --- /dev/null +++ b/src/de/sockenklaus/XmlStats/Objects/NodeItems.java @@ -0,0 +1,25 @@ +/** + * + */ +package de.sockenklaus.XmlStats.Objects; + +import java.util.HashMap; + + +/** + * @author socrates + * + */ +public class NodeItems extends NodeArray { + + /** + * @param category + */ + public NodeItems(HashMap category) { + super("items"); + + for(String varName : category.keySet()){ + this.appendChild(new NodeItem(varName, category.get(varName))); + } + } +} diff --git a/src/de/sockenklaus/XmlStats/Objects/NodeList.java b/src/de/sockenklaus/XmlStats/Objects/NodeList.java new file mode 100644 index 0000000..4c6d465 --- /dev/null +++ b/src/de/sockenklaus/XmlStats/Objects/NodeList.java @@ -0,0 +1,36 @@ +/** + * + */ +package de.sockenklaus.XmlStats.Objects; + +import java.util.ArrayList; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +/** + * @author socrates + * + */ +public class NodeList extends Node { + protected ArrayList childNodes; + + public NodeList(String tagName){ + this.childNodes = new ArrayList(); + this.tagName = tagName; + } + + public void appendChild(Node child){ + this.childNodes.add(child); + } + + public Element getXml(Document doc){ + Element result = super.getXml(doc); + + for(Node node : this.childNodes){ + result.appendChild(node.getXml(doc)); + } + + return result; + } +} diff --git a/src/de/sockenklaus/XmlStats/Objects/NodeText.java b/src/de/sockenklaus/XmlStats/Objects/NodeText.java new file mode 100644 index 0000000..f0a63ca --- /dev/null +++ b/src/de/sockenklaus/XmlStats/Objects/NodeText.java @@ -0,0 +1,43 @@ +/** + * + */ +package de.sockenklaus.XmlStats.Objects; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +/** + * @author socrates + * + */ +public class NodeText extends Node { + + protected String textContent; + + public NodeText(String tagName){ + this.tagName = tagName; + } + + public NodeText(String tagName, String textContent){ + this(tagName); + this.textContent = textContent; + } + + public NodeText(String tagName, Integer intContent) { + this(tagName); + this.textContent = intContent.toString(); + } + + public NodeText(String tagName, Double dblContent){ + this(tagName); + this.textContent = dblContent.toString(); + } + + public Element getXml(Document doc){ + Element result = super.getXml(doc); + + if (!this.textContent.isEmpty()) result.setTextContent(this.textContent); + + return result; + } +} diff --git a/src/de/sockenklaus/XmlStats/Objects/NodeUser.java b/src/de/sockenklaus/XmlStats/Objects/NodeUser.java new file mode 100644 index 0000000..87b5484 --- /dev/null +++ b/src/de/sockenklaus/XmlStats/Objects/NodeUser.java @@ -0,0 +1,35 @@ +/** + * + */ +package de.sockenklaus.XmlStats.Objects; + +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; + +/** + * @author socrates + * + */ +public class NodeUser extends NodeList { + + public NodeUser(String name) throws XmlStatsException{ + super("user"); + if (Datasource.userExists(name)){ + Server server = ((XmlStats)XmlStatsRegistry.get("xmlstats")).getServer(); + Player player = server.getPlayer(name); + + String status = (player != null && player.isOnline()) ?"online":"offline"; + this.attributes.put("status", status); + this.childNodes.add(new NodeText("name", name)); + } + else { + throw new XmlStatsException("The given user doesn't exist!"); + } + + } +} diff --git a/src/de/sockenklaus/XmlStats/Objects/NodeUserAchievement.java b/src/de/sockenklaus/XmlStats/Objects/NodeUserAchievement.java new file mode 100644 index 0000000..3db0925 --- /dev/null +++ b/src/de/sockenklaus/XmlStats/Objects/NodeUserAchievement.java @@ -0,0 +1,20 @@ +/** +* +*/ +package de.sockenklaus.XmlStats.Objects; + +import com.nidefawl.Achievements.Achievement; + +/** +* @author socrates +* +*/ +public class NodeUserAchievement extends NodeList { + + public NodeUserAchievement(String paName, Achievement achievement){ + super("achievement"); + this.childNodes.add(new NodeText("name", paName)); + this.childNodes.add(new NodeText("count", achievement.getCount())); + } +} + diff --git a/src/de/sockenklaus/XmlStats/Objects/NodeUserAchievements.java b/src/de/sockenklaus/XmlStats/Objects/NodeUserAchievements.java new file mode 100644 index 0000000..281ba39 --- /dev/null +++ b/src/de/sockenklaus/XmlStats/Objects/NodeUserAchievements.java @@ -0,0 +1,30 @@ +/** + * + */ +package de.sockenklaus.XmlStats.Objects; + +import com.nidefawl.Achievements.PlayerAchievement; + +import de.sockenklaus.XmlStats.Datasource.AchievementsDS; +import de.sockenklaus.XmlStats.Datasource.Datasource; +import de.sockenklaus.XmlStats.Exceptions.XmlStatsException; + +/** + * @author socrates + * + */ +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); + + for(String paName : pa.achievements.keySet()){ + this.childNodes.add(new NodeUserAchievement(paName, pa.get(paName))); + } + } + else throw new XmlStatsException("The given username is not valid."); + } +} diff --git a/src/de/sockenklaus/XmlStats/Objects/NodeUsers.java b/src/de/sockenklaus/XmlStats/Objects/NodeUsers.java new file mode 100644 index 0000000..8ed4569 --- /dev/null +++ b/src/de/sockenklaus/XmlStats/Objects/NodeUsers.java @@ -0,0 +1,20 @@ +/** + * + */ +package de.sockenklaus.XmlStats.Objects; + +/** + * @author socrates + * + */ +public class NodeUsers extends NodeArray { + + /** + * @param tagName + */ + public NodeUsers() { + super("users"); + } + + +} diff --git a/src/de/sockenklaus/XmlStats/Settings.java b/src/de/sockenklaus/XmlStats/Settings.java index 728e53f..70cde2b 100644 --- a/src/de/sockenklaus/XmlStats/Settings.java +++ b/src/de/sockenklaus/XmlStats/Settings.java @@ -1,5 +1,5 @@ /* - * Copyright (C) [2011] [Pascal König] + * Copyright (C) [2011] [Pascal Koenig] * * 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 @@ -15,8 +15,9 @@ package de.sockenklaus.XmlStats; import java.io.File; +import java.io.IOException; -import org.bukkit.util.config.Configuration; +import org.bukkit.configuration.file.YamlConfiguration; // TODO: Auto-generated Javadoc /** @@ -25,7 +26,7 @@ import org.bukkit.util.config.Configuration; public class Settings { private static final String configFilename = "config.yml"; - private Configuration conf; + private YamlConfiguration conf; /** * Instantiates a new settings. @@ -35,15 +36,18 @@ public class Settings { public Settings(XmlStats xmlStats){ File f = new File(xmlStats.getDataFolder(), configFilename); - conf = new Configuration(f); if(f.exists()){ - conf.load(); + conf = YamlConfiguration.loadConfiguration(f); } else { - conf.setProperty("options.webserver-enabled", true); - conf.setProperty("options.webserver-port", 9123); - conf.setProperty("options.verbose-enabled", true); - conf.save(); + conf.set("options.webserver-enabled", true); + conf.set("options.webserver-port", 9123); + conf.set("options.verbose-enabled", true); + try { + conf.save(f); + }catch(IOException e){ + XmlStats.LogError("Something went wrong with the conf-file: "+e.getMessage()); + } } } @@ -84,7 +88,7 @@ public class Settings { * @param value the value */ public void setProperty(String path, Object value){ - conf.setProperty(path, value); + conf.set(path, value); } /** diff --git a/src/de/sockenklaus/XmlStats/Webserver.java b/src/de/sockenklaus/XmlStats/Webserver.java index 05dd52d..3316194 100644 --- a/src/de/sockenklaus/XmlStats/Webserver.java +++ b/src/de/sockenklaus/XmlStats/Webserver.java @@ -1,5 +1,5 @@ /* - * Copyright (C) [2011] [Pascal König] + * Copyright (C) [2011] [Pascal Koenig] * * 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 diff --git a/src/de/sockenklaus/XmlStats/XmlStats.java b/src/de/sockenklaus/XmlStats/XmlStats.java index 4614997..f19fbf2 100644 --- a/src/de/sockenklaus/XmlStats/XmlStats.java +++ b/src/de/sockenklaus/XmlStats/XmlStats.java @@ -1,5 +1,5 @@ /* - * Copyright (C) [2011] [Pascal König] + * Copyright (C) [2011] [Pascal Koenig] * * 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 @@ -19,13 +19,11 @@ import java.util.logging.Logger; 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 terranetworkorg.Stats.Stats; import com.nijikokun.register.Register; import com.nijikokun.register.payment.Methods; @@ -177,8 +175,10 @@ public class XmlStats extends JavaPlugin { } protected void hookStats(){ - Plugin StatsTemp = getServer().getPluginManager().getPlugin("Stats"); + Plugin StatsTemp = getServer().getPluginManager().getPlugin("Stats 2.0"); + LogDebug("Got Plugin \"Stats 2.0\""); Webserver webserver = (Webserver)XmlStatsRegistry.get("webserver"); + LogDebug("Got webserver-object"); if(this.checkStats()){ XmlStatsRegistry.put("stats", (Stats)StatsTemp); @@ -196,9 +196,15 @@ public class XmlStats extends JavaPlugin { * @return true, if is stats hooked */ public boolean checkStats(){ - Plugin StatsTemp = getServer().getPluginManager().getPlugin("Stats"); + LogDebug("Stats 2.0? Are you there?"); + Plugin StatsTemp = getServer().getPluginManager().getPlugin("Stats 2.0"); + LogDebug("Got object \"Stats 2.0\""); - if(StatsTemp != null && StatsTemp.getClass().getName().equals("com.nidefawl.Stats.Stats") && StatsTemp.isEnabled()) return true; + if(StatsTemp != null && StatsTemp.getClass().getName().equals("terranetworkorg.Stats.Stats") && StatsTemp.isEnabled()){ + LogDebug("terranetworkorg.Stats.Stats is enabled."); + return true; + } + LogDebug("terranetworkorg.Stats.Stats is not enabled."); return false; } @@ -254,12 +260,14 @@ public class XmlStats extends JavaPlugin { protected void reload() { this.onDisable(); this.onEnable(); - } + private void registerEvents(){ + LogDebug("Trying to register ServerListener"); XmlStatsServerListener listener = new XmlStatsServerListener(this); + LogDebug("Listener-object created."); - getServer().getPluginManager().registerEvent(Type.PLUGIN_ENABLE, listener, Priority.Monitor, this); - //getServer().getPluginManager().registerEvent(Type.PLUGIN_DISABLE, listener, Priority.Monitor, this); + getServer().getPluginManager().registerEvents(listener, this); + LogDebug("Event registered."); } } diff --git a/src/de/sockenklaus/XmlStats/XmlStatsServerListener.java b/src/de/sockenklaus/XmlStats/XmlStatsServerListener.java index a9a7bca..1caaa30 100644 --- a/src/de/sockenklaus/XmlStats/XmlStatsServerListener.java +++ b/src/de/sockenklaus/XmlStats/XmlStatsServerListener.java @@ -3,15 +3,16 @@ */ package de.sockenklaus.XmlStats; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; import org.bukkit.event.server.PluginDisableEvent; import org.bukkit.event.server.PluginEnableEvent; -import org.bukkit.event.server.ServerListener; /** * @author socrates * */ -public class XmlStatsServerListener extends ServerListener { +public class XmlStatsServerListener implements Listener { private XmlStats plugin; public XmlStatsServerListener(XmlStats plugin){ @@ -40,8 +41,12 @@ public class XmlStatsServerListener extends ServerListener { } + @EventHandler public void onPluginEnable(PluginEnableEvent event){ - if(this.identifyPlugin(event, "stats")){ + XmlStats.LogDebug("onPluginEnable fired"); + + if(this.identifyPlugin(event, "stats 2.0")){ + XmlStats.LogDebug("Stats 2.0 fired the event"); this.plugin.hookStats(); } if(this.identifyPlugin(event, "achievements")){ diff --git a/src/de/sockenklaus/XmlStats/XmlWorkers/AchievementsList.java b/src/de/sockenklaus/XmlStats/XmlWorkers/AchievementsList.java index 1c811d3..352dc70 100644 --- a/src/de/sockenklaus/XmlStats/XmlWorkers/AchievementsList.java +++ b/src/de/sockenklaus/XmlStats/XmlWorkers/AchievementsList.java @@ -3,15 +3,12 @@ */ package de.sockenklaus.XmlStats.XmlWorkers; -import java.util.HashMap; import java.util.List; import java.util.Map; import org.w3c.dom.Element; -import com.nidefawl.Achievements.AchievementListData; - -import de.sockenklaus.XmlStats.Datasource.AchievementsDS; +import de.sockenklaus.XmlStats.Objects.NodeAchievements; /** * @author socrates @@ -24,16 +21,8 @@ public class AchievementsList extends XmlWorker { */ @Override protected Element getXml(Map> parameters) { - HashMap achList = new AchievementsDS().getAchievementsList(); - - Element elem_achs = this.doc.createElement("achievements"); - elem_achs.setAttribute("count", String.valueOf(achList.size())); - - for(String achName : achList.keySet()){ - elem_achs.appendChild(getAchievement(achList.get(achName))); - } - - return elem_achs; + NodeAchievements ach = new NodeAchievements(); + return ach.getXml(this.doc); } /* (non-Javadoc) @@ -51,41 +40,4 @@ public class AchievementsList extends XmlWorker { protected Element getUserXml(List playerList, Map> parameters) { return this.getXml(parameters); } - - private Element getAchievement(AchievementListData data){ - Element elem_ach = this.doc.createElement("achievement"); - elem_ach.setAttribute("enabled", data.isEnabled()?"true":"false"); - - Element elem_achname = this.doc.createElement("name"); - elem_achname.setTextContent(data.getName()); - elem_ach.appendChild(elem_achname); - - Element elem_achdesc = this.doc.createElement("description"); - elem_achdesc.setTextContent(data.getDescription()); - elem_ach.appendChild(elem_achdesc); - - Element elem_category = this.doc.createElement("category"); - elem_category.setTextContent(data.getCategory()); - elem_ach.appendChild(elem_category); - - Element elem_stat = this.doc.createElement("stat"); - elem_stat.setTextContent(data.getKey()); - elem_ach.appendChild(elem_stat); - - Element elem_value = this.doc.createElement("value"); - elem_value.setTextContent(String.valueOf(data.getValue())); - elem_ach.appendChild(elem_value); - - Element elem_maxawards = this.doc.createElement("maxawards"); - elem_maxawards.setTextContent(String.valueOf(data.getMaxawards())); - elem_ach.appendChild(elem_maxawards); - - Element elem_commands = this.doc.createElement("commands"); - elem_commands.setTextContent(data.commands.toString()); - elem_ach.appendChild(elem_commands); - - return elem_ach; - - } - } diff --git a/src/de/sockenklaus/XmlStats/XmlWorkers/UserAchievements.java b/src/de/sockenklaus/XmlStats/XmlWorkers/UserAchievements.java index 3cde291..e063f4b 100644 --- a/src/de/sockenklaus/XmlStats/XmlWorkers/UserAchievements.java +++ b/src/de/sockenklaus/XmlStats/XmlWorkers/UserAchievements.java @@ -8,10 +8,11 @@ import java.util.Map; import org.w3c.dom.Element; -import com.nidefawl.Achievements.PlayerAchievement; - import de.sockenklaus.XmlStats.Datasource.AchievementsDS; import de.sockenklaus.XmlStats.Exceptions.XmlStatsException; +import de.sockenklaus.XmlStats.Objects.NodeUser; +import de.sockenklaus.XmlStats.Objects.NodeUserAchievements; +import de.sockenklaus.XmlStats.Objects.NodeUsers; /** * @author socrates @@ -33,27 +34,6 @@ public class UserAchievements extends XmlWorker { throw new XmlStatsException("No data provided with this query!"); } - private Element getUserAchievement(String userName){ - Element elem_player = this.doc.createElement("user"); - elem_player.appendChild(getTextElem("name", userName)); - - PlayerAchievement pa = achDS.getUserAchievement(userName); - - Element elem_achs = this.doc.createElement("achievements"); - elem_achs.setAttribute("count", String.valueOf(pa.achievements.size())); - - for(String achName : pa.achievements.keySet()){ - Element elem_ach = this.doc.createElement("achievement"); - elem_ach.appendChild(getTextElem("name", achName)); - elem_ach.appendChild(getTextElem("count", pa.achievements.get(achName).getCount())); - - elem_achs.appendChild(elem_ach); - } - elem_player.appendChild(elem_achs); - - return elem_player; - } - /* (non-Javadoc) * @see de.sockenklaus.XmlStats.XmlWorkers.XmlWorker#getSumXml(java.util.List, java.util.Map) */ @@ -66,16 +46,16 @@ public class UserAchievements extends XmlWorker { * @see de.sockenklaus.XmlStats.XmlWorkers.XmlWorker#getUserXml(java.util.List, java.util.Map) */ @Override - protected Element getUserXml(List userList, Map> parameters) { - Element elem_users = this.doc.createElement("users"); - elem_users.setAttribute("count", String.valueOf(userList.size())); + protected Element getUserXml(List userList, Map> parameters) throws XmlStatsException{ + NodeUsers node_users = new NodeUsers(); for(String userName : userList){ - - elem_users.appendChild(this.getUserAchievement(userName)); + NodeUser node_user = new NodeUser(userName); + node_user.appendChild(new NodeUserAchievements(userName)); + node_users.appendChild(node_user); } - - return elem_users; + + return node_users.getXml(this.doc); } } diff --git a/src/de/sockenklaus/XmlStats/XmlWorkers/UserBalances.java b/src/de/sockenklaus/XmlStats/XmlWorkers/UserBalances.java index 7ae2a9a..c2244c1 100644 --- a/src/de/sockenklaus/XmlStats/XmlWorkers/UserBalances.java +++ b/src/de/sockenklaus/XmlStats/XmlWorkers/UserBalances.java @@ -1,5 +1,5 @@ /* - * Copyright (C) [2011] [Pascal König] + * Copyright (C) [2011] [Pascal Koenig] * * 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 @@ -17,12 +17,14 @@ package de.sockenklaus.XmlStats.XmlWorkers; import java.util.List; import java.util.Map; -import org.w3c.dom.DOMException; import org.w3c.dom.Element; -import de.sockenklaus.XmlStats.XmlStats; import de.sockenklaus.XmlStats.Datasource.BalancesDS; import de.sockenklaus.XmlStats.Exceptions.XmlStatsException; +import de.sockenklaus.XmlStats.Objects.NodeList; +import de.sockenklaus.XmlStats.Objects.NodeText; +import de.sockenklaus.XmlStats.Objects.NodeUser; +import de.sockenklaus.XmlStats.Objects.NodeUsers; // TODO: Auto-generated Javadoc /** @@ -39,18 +41,16 @@ public class UserBalances extends XmlWorker { protected Element getUserXml(List playerList, Map> parameters) throws XmlStatsException { - Element elem_users = this.doc.createElement("users"); - elem_users.setAttribute("count", String.valueOf(playerList.size())); - + NodeUsers node_users = new NodeUsers(); + for(String userName : playerList){ - Element elem_user = this.doc.createElement("user"); - elem_user.appendChild(getTextElem("name", userName)); - elem_user.appendChild(getTextElem("balance", String.valueOf(moneyDS.getBalance(userName)))); - - elem_users.appendChild(elem_user); + NodeUser node_user = new NodeUser(userName); + node_user.appendChild(new NodeText("balance", moneyDS.getBalance(userName))); + + node_users.appendChild(node_user); } - return elem_users; + return node_users.getXml(this.doc); } /* (non-Javadoc) @@ -67,24 +67,20 @@ public class UserBalances extends XmlWorker { */ @Override protected Element getSumXml(List userList, Map> parameters) throws XmlStatsException { - - Element elem_sum = this.doc.createElement("sum"); - Element elem_users = this.doc.createElement("users"); - elem_users.setAttribute("count", String.valueOf(userList.size())); - elem_users.setAttribute("type", "name"); - elem_sum.appendChild(elem_users); + + NodeList node_sum = new NodeList("sum"); + NodeUsers node_users = new NodeUsers(); + + node_sum.appendChild(node_users); for(String userName : userList){ - Element elem_user = this.doc.createElement("user"); - elem_user.appendChild(getTextElem("name", userName)); - elem_users.appendChild(elem_user); - XmlStats.LogDebug("Got "+userName); + NodeUser node_user = new NodeUser(userName); + node_users.appendChild(node_user); } int sum = moneyDS.getSum(userList); + node_sum.appendChild(new NodeText("balance", sum)); - elem_sum.appendChild(getTextElem("balance", String.valueOf(sum))); - - return elem_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 7a83530..49f14aa 100644 --- a/src/de/sockenklaus/XmlStats/XmlWorkers/UserList.java +++ b/src/de/sockenklaus/XmlStats/XmlWorkers/UserList.java @@ -1,5 +1,5 @@ /* - * Copyright (C) [2011] [Pascal König] + * Copyright (C) [2011] [Pascal Koenig] * * 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 @@ -14,16 +14,15 @@ */ package de.sockenklaus.XmlStats.XmlWorkers; -import java.util.ArrayList; import java.util.Map; import java.util.List; -import org.bukkit.entity.Player; import org.w3c.dom.Element; -import de.sockenklaus.XmlStats.XmlStats; -import de.sockenklaus.XmlStats.XmlStatsRegistry; import de.sockenklaus.XmlStats.Datasource.Datasource; +import de.sockenklaus.XmlStats.Exceptions.XmlStatsException; +import de.sockenklaus.XmlStats.Objects.NodeUser; +import de.sockenklaus.XmlStats.Objects.NodeUsers; // TODO: Auto-generated Javadoc /** @@ -35,52 +34,22 @@ public class UserList extends XmlWorker { * @see de.sockenklaus.XmlStats.XmlWorkers.XmlWorker#getXML(java.util.Map) */ @Override - public Element getXml(Map> parameters) { + public Element getXml(Map> parameters) throws XmlStatsException { - Element elem_users = this.doc.createElement("users"); - elem_users.setAttribute("count", String.valueOf(Datasource.fetchAllPlayers().size())); - - /* - * Get list online player names - */ - XmlStats pluginTemp= (XmlStats)XmlStatsRegistry.get("xmlstats"); - - Player[] onlinePlayers = pluginTemp.getServer().getOnlinePlayers(); - List onlinePlayerNames = new ArrayList(); - - if (onlinePlayers != null){ - for (int i = 0; i < onlinePlayers.length; i++){ - onlinePlayerNames.add(onlinePlayers[i].getName()); - } - } - /* - * Got list of online player names - */ - - /* - * Hier wird das XML aufgebaut - */ + NodeUsers node_users = new NodeUsers(); for(String playerName : Datasource.fetchAllPlayers()){ - - Element elem_player = this.doc.createElement("user"); - elem_player.appendChild(getTextElem("name", playerName)); - - elem_player.setAttribute("status", onlinePlayerNames.contains(playerName) ? "online":"offline"); - - elem_users.appendChild(elem_player); + node_users.appendChild(new NodeUser(playerName)); } - /* - * Hier endet der XML-Aufbau - */ - return elem_users; + + return node_users.getXml(this.doc); } /* (non-Javadoc) * @see de.sockenklaus.XmlStats.XmlWorkers.XmlWorker#getSumXml(java.util.List, java.util.Map) */ @Override - protected Element getSumXml(List playerList, Map> parameters) { + protected Element getSumXml(List playerList, Map> parameters) throws XmlStatsException { return this.getXml(parameters); } @@ -88,7 +57,7 @@ public class UserList extends XmlWorker { * @see de.sockenklaus.XmlStats.XmlWorkers.XmlWorker#getUserXml(java.util.List, java.util.Map) */ @Override - protected Element getUserXml(List playerList, Map> parameters) { + protected Element getUserXml(List playerList, Map> parameters) throws XmlStatsException { return this.getXml(parameters); } diff --git a/src/de/sockenklaus/XmlStats/XmlWorkers/UserStats.java b/src/de/sockenklaus/XmlStats/XmlWorkers/UserStats.java index 4b94b5d..5133b11 100644 --- a/src/de/sockenklaus/XmlStats/XmlWorkers/UserStats.java +++ b/src/de/sockenklaus/XmlStats/XmlWorkers/UserStats.java @@ -1,5 +1,5 @@ /* - * Copyright (C) [2011] [Pascal König] + * Copyright (C) [2011] [Pascal Koenig] * * 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 @@ -14,20 +14,19 @@ */ package de.sockenklaus.XmlStats.XmlWorkers; -import java.io.File; -import java.util.Arrays; import java.util.HashMap; import java.util.Map; import java.util.List; import org.w3c.dom.Element; -import com.nidefawl.Stats.ItemResolver.hModItemResolver; -import com.nidefawl.Stats.datasource.Category; -import com.nidefawl.Stats.datasource.PlayerStat; - import de.sockenklaus.XmlStats.Datasource.UserstatsDS; import de.sockenklaus.XmlStats.Exceptions.XmlStatsException; +import de.sockenklaus.XmlStats.Objects.NodeCategories; +import de.sockenklaus.XmlStats.Objects.NodeCategory; +import de.sockenklaus.XmlStats.Objects.NodeList; +import de.sockenklaus.XmlStats.Objects.NodeUser; +import de.sockenklaus.XmlStats.Objects.NodeUsers; // TODO: Auto-generated Javadoc /** @@ -35,20 +34,7 @@ import de.sockenklaus.XmlStats.Exceptions.XmlStatsException; */ public class UserStats extends XmlWorker { - /** The stats ds. */ - private UserstatsDS statsDS; - private hModItemResolver itemResolver; - private String[] resolveCats; - - /** - * Instantiates a new xml worker userstats. - */ - public UserStats(){ - this.statsDS = new UserstatsDS(); - itemResolver = new hModItemResolver(new File(statsDS.getDataFolder(),"items.txt")); - resolveCats = new String[]{"blockdestroy", "blockcreate", "itemdrop", "itempickup"}; - } - + /* (non-Javadoc) * @see de.sockenklaus.XmlStats.XmlWorkers.XmlWorker#getXML(java.util.Map) */ @@ -56,134 +42,52 @@ public class UserStats extends XmlWorker { throw new XmlStatsException("No data provided with this query!"); } - /** - * Build a XML subtree for the given player. - * - * @param playerName the player name - * @return Returns a XML subtree for the given playerName. - * @paramthis.doc thethis.doc - */ - private Element getUserElement(String playerName){ - PlayerStat player_stats = statsDS.getPlayerStat(playerName); - - Element elem_player = this.doc.createElement("user"); - Element elem_cats = this.doc.createElement("categories"); - elem_cats.setAttribute("count", String.valueOf(player_stats.getCats().size())); - - elem_player.appendChild(getTextElem("name", playerName)); - elem_player.appendChild(elem_cats); - - for(String catName : player_stats.getCats()){ - Category cat = player_stats.get(catName); - Element elem_cat = this.doc.createElement("category"); - Element elem_items = this.doc.createElement("items"); - elem_items.setAttribute("count", String.valueOf(cat.stats.size())); - - elem_cat.appendChild(getTextElem("name", catName)); - elem_cat.appendChild(elem_items); - elem_cats.appendChild(elem_cat); - - for(String valName : cat.stats.keySet()){ - Element elem_item = getItemElem(valName, cat.get(valName)); - - if(Arrays.asList(resolveCats).contains(catName)){ - elem_item.setAttribute("id", String.valueOf(itemResolver.getItem(valName))); - } - - elem_items.appendChild(elem_item); - } - } - return elem_player; - } - - /** - * Gets the added up stats element. - * - * @return the added up stats element - */ - private Element getAddedUpStatsElement(List playerList){ - HashMap> addedStats = statsDS.getAddedStats(playerList); - Element elem_stats = this.doc.createElement("stats"); - Element elem_cats = this.doc.createElement("categories"); - elem_cats.setAttribute("count", String.valueOf(addedStats.size())); - - elem_stats.appendChild(elem_cats); - - for (String catName : addedStats.keySet()){ - Element elem_cat = this.doc.createElement("category"); - Element elem_items = this.doc.createElement("items"); - elem_items.setAttribute("count", String.valueOf(addedStats.get(catName).size())); - - elem_cat.appendChild(getTextElem("name", catName)); - elem_cat.appendChild(elem_items); - elem_cats.appendChild(elem_cat); - - for(String entryName : addedStats.get(catName).keySet()){ - Element elem_item = this.getItemElem(entryName, addedStats.get(catName).get(entryName)); - - if(Arrays.asList(resolveCats).contains(catName)){ - elem_item.setAttribute("id", String.valueOf(itemResolver.getItem(entryName))); - } - - elem_items.appendChild(elem_item); - } - elem_cat.appendChild(elem_items); - } - - return elem_stats; - } - - /** - * Gets the item elem. - * - * @param key the key - * @param value the value - * @return the item elem - */ - private Element getItemElem(String key, int value){ - Element elem_item = this.doc.createElement("item"); - - elem_item.appendChild(getTextElem("name", key)); - elem_item.appendChild(getTextElem("value", String.valueOf(value))); - - return elem_item; - } /* (non-Javadoc) * @see de.sockenklaus.XmlStats.XmlWorkers.XmlWorker#getSumXml(java.util.List, java.util.Map) */ @Override - protected Element getSumXml(List playerList, Map> parameters) { - Element elem_sum = this.doc.createElement("sum"); - Element elem_users = this.doc.createElement("users"); - elem_users.setAttribute("count", String.valueOf(playerList.size())); + protected Element getSumXml(List playerList, Map> parameters) throws XmlStatsException { + NodeList node_sum = new NodeList("sum"); + NodeList node_stats = new NodeList("stats"); + NodeUsers node_users = new NodeUsers(); + NodeCategories node_cats = new NodeCategories(); - for (String userName : playerList){ - Element elem_user = this.doc.createElement("user"); - elem_user.appendChild(getTextElem("name", userName)); - - elem_users.appendChild(elem_user); + for(String userName : playerList){ + node_users.appendChild(new NodeUser(userName)); } - elem_sum.appendChild(elem_users); - elem_sum.appendChild(this.getAddedUpStatsElement(playerList)); + HashMap> addedStats = UserstatsDS.getAddedStats(playerList); - return elem_sum; + for(String catName : addedStats.keySet()){ + NodeCategory node_cat = new NodeCategory(catName, addedStats.get(catName)); + + node_cats.appendChild(node_cat); + } + + node_sum.appendChild(node_users); + node_stats.appendChild(node_cats); + node_sum.appendChild(node_stats); + + return node_sum.getXml(this.doc); } /* (non-Javadoc) * @see de.sockenklaus.XmlStats.XmlWorkers.XmlWorker#getUserXml(java.util.List, java.util.Map) */ @Override - protected Element getUserXml(List playerList, Map> parameters) { - Element elem_users = this.doc.createElement("users"); - elem_users.setAttribute("count", String.valueOf(playerList.size())); + protected Element getUserXml(List playerList, Map> parameters) throws XmlStatsException { + NodeUsers node_users = new NodeUsers(); - for(String playerName : playerList){ - elem_users.appendChild(this.getUserElement(playerName)); + for(String userName : playerList){ + NodeUser node_user = new NodeUser(userName); + NodeCategories node_cats = new NodeCategories(userName); + + node_user.appendChild(node_cats); + node_users.appendChild(node_user); } - return elem_users; + return node_users.getXml(this.doc); } diff --git a/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorker.java b/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorker.java index 4a6d369..222e5bc 100644 --- a/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorker.java +++ b/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorker.java @@ -1,5 +1,5 @@ /* - * Copyright (C) [2011] [Pascal König] + * Copyright (C) [2011] [Pascal Koenig] * * 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