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).
+[](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