diff --git a/build.xml b/build.xml
index 56ff7eb..5229e4b 100644
--- a/build.xml
+++ b/build.xml
@@ -5,7 +5,7 @@
-
+
diff --git a/lib/Achievements.jar b/lib/Achievements.jar
index 03da59f..0d5caa8 100644
Binary files a/lib/Achievements.jar and b/lib/Achievements.jar differ
diff --git a/lib/bukkit-0.0.1-SNAPSHOT.jar b/lib/bukkit-0.0.1-SNAPSHOT.jar
index da3b9e4..b348aa1 100644
Binary files a/lib/bukkit-0.0.1-SNAPSHOT.jar and b/lib/bukkit-0.0.1-SNAPSHOT.jar differ
diff --git a/src/de/sockenklaus/XmlStats/Datasource/AchievementsDS.java b/src/de/sockenklaus/XmlStats/Datasource/AchievementsDS.java
index 5e88b0c..eec409e 100644
--- a/src/de/sockenklaus/XmlStats/Datasource/AchievementsDS.java
+++ b/src/de/sockenklaus/XmlStats/Datasource/AchievementsDS.java
@@ -31,6 +31,7 @@ public class AchievementsDS extends Datasource {
Achievements ach = (Achievements)XmlStatsRegistry.get("achievements");
if(xmlstats.checkAchievements()){
+ XmlStats.LogDebug("Found "+ach.achievementList.size()+" achievements.");
return ach.achievementList;
}
else return new HashMap();
diff --git a/src/de/sockenklaus/XmlStats/Datasource/Datasource.java b/src/de/sockenklaus/XmlStats/Datasource/Datasource.java
index 05d26c7..1866108 100644
--- a/src/de/sockenklaus/XmlStats/Datasource/Datasource.java
+++ b/src/de/sockenklaus/XmlStats/Datasource/Datasource.java
@@ -18,6 +18,10 @@ import java.io.File;
import java.util.ArrayList;
import java.util.List;
+import org.bukkit.World;
+
+import de.sockenklaus.XmlStats.XmlStats;
+import de.sockenklaus.XmlStats.XmlStatsRegistry;
import de.sockenklaus.XmlStats.Exceptions.XmlStatsException;
// TODO: Auto-generated Javadoc
@@ -32,19 +36,25 @@ public abstract class Datasource {
* @return the array list
*/
public static ArrayList fetchAllPlayers(){
- File[] files = new File("world/players").listFiles();
+ XmlStats xmlstats = (XmlStats)XmlStatsRegistry.get("xmlstats");
+ List worlds = xmlstats.getServer().getWorlds();
ArrayList result = new ArrayList();
- for (int i = 0; i < files.length; i++){
- int whereDot = files[i].getName().lastIndexOf('.');
+ for(World world : worlds){
+ File[] files = new File(world.getName()+"/players").listFiles();
- if (0 < whereDot && whereDot <= files[i].getName().length() - 2){
- String playerName = files[i].getName().substring(0, whereDot);
+ for (File file : files){
+ int whereDot = file.getName().lastIndexOf('.');
- result.add(playerName);
+ if (0 < whereDot && whereDot <= file.getName().length() - 2){
+ String playerName = file.getName().substring(0, whereDot);
+
+ if(!result.contains(playerName)) result.add(playerName);
+ }
}
}
+
return result;
}
diff --git a/src/de/sockenklaus/XmlStats/Objects/Achievement.java b/src/de/sockenklaus/XmlStats/Objects/Achievement.java
index 890fc6f..1170935 100644
--- a/src/de/sockenklaus/XmlStats/Objects/Achievement.java
+++ b/src/de/sockenklaus/XmlStats/Objects/Achievement.java
@@ -8,6 +8,8 @@ import org.w3c.dom.Element;
import com.nidefawl.Achievements.AchievementListData;
+import de.sockenklaus.XmlStats.XmlStats;
+
/**
* @author socrates
*
@@ -24,6 +26,7 @@ public class Achievement extends Elem {
private Boolean enabled;
public Achievement(AchievementListData ach){
+
this.name = ach.getName();
this.description = ach.getDescription();
this.category = ach.getCategory();
@@ -32,6 +35,7 @@ public class Achievement extends Elem {
this.maxawards = ach.getMaxawards();
this.commands = ach.commands.toString();
this.enabled = ach.isEnabled();
+ XmlStats.LogDebug("End of Achievement constructor.");
}
protected Achievement(){
@@ -41,7 +45,7 @@ public class Achievement extends Elem {
public Element getXml(Document doc){
Element result = doc.createElement("achievement");
- result.setAttribute("enabled", this.enabled ?"true":"false");
+ result.setAttribute("enabled", this.enabled.toString());
result.appendChild(this.addXmlChild("name", this.name, doc));
result.appendChild(this.addXmlChild("description", this.description, doc));
result.appendChild(this.addXmlChild("category", this.category, doc));
diff --git a/src/de/sockenklaus/XmlStats/Objects/Achievements.java b/src/de/sockenklaus/XmlStats/Objects/Achievements.java
index 9a5a07e..08f8b39 100644
--- a/src/de/sockenklaus/XmlStats/Objects/Achievements.java
+++ b/src/de/sockenklaus/XmlStats/Objects/Achievements.java
@@ -3,7 +3,6 @@
*/
package de.sockenklaus.XmlStats.Objects;
-import java.util.ArrayList;
import java.util.HashMap;
import org.w3c.dom.Document;
@@ -11,6 +10,7 @@ import org.w3c.dom.Element;
import com.nidefawl.Achievements.AchievementListData;
+import de.sockenklaus.XmlStats.XmlStats;
import de.sockenklaus.XmlStats.Datasource.AchievementsDS;
/**
@@ -18,13 +18,14 @@ import de.sockenklaus.XmlStats.Datasource.AchievementsDS;
*
*/
public class Achievements extends Array {
- protected ArrayList childNodes;
-
+
public Achievements(){
+ super();
+ XmlStats.LogDebug("Casting Achievements constructor");
AchievementsDS ads = new AchievementsDS();
HashMap achList = ads.getAchievementsList();
-
+
for(String achName : achList.keySet()){
this.childNodes.add(new Achievement(achList.get(achName)));
}
@@ -34,7 +35,7 @@ public class Achievements extends Array {
Element result = doc.createElement("achievements");
result.setAttribute("count", this.getCountStr());
- for(Achievement ach : this.childNodes){
+ for(Elem ach : this.childNodes){
result.appendChild(ach.getXml(doc));
}
diff --git a/src/de/sockenklaus/XmlStats/Objects/Array.java b/src/de/sockenklaus/XmlStats/Objects/Array.java
index 180f4c4..2e7c90b 100644
--- a/src/de/sockenklaus/XmlStats/Objects/Array.java
+++ b/src/de/sockenklaus/XmlStats/Objects/Array.java
@@ -9,8 +9,12 @@ import java.util.ArrayList;
* @author socrates
*
*/
-public abstract class Array {
- private ArrayList> childNodes;
+public abstract class Array extends Elem{
+ protected ArrayList childNodes;
+
+ public Array(){
+ this.childNodes = new ArrayList();
+ }
public int getCountInt(){
return this.childNodes.size();
diff --git a/src/de/sockenklaus/XmlStats/Objects/Categories.java b/src/de/sockenklaus/XmlStats/Objects/Categories.java
index 9766c64..b8171c8 100644
--- a/src/de/sockenklaus/XmlStats/Objects/Categories.java
+++ b/src/de/sockenklaus/XmlStats/Objects/Categories.java
@@ -3,10 +3,22 @@
*/
package de.sockenklaus.XmlStats.Objects;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
/**
* @author socrates
*
*/
public class Categories extends Array {
+ /* (non-Javadoc)
+ * @see de.sockenklaus.XmlStats.Objects.Elem#getXml(org.w3c.dom.Document)
+ */
+ @Override
+ public Element getXml(Document doc) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
}
diff --git a/src/de/sockenklaus/XmlStats/Objects/Elem.java b/src/de/sockenklaus/XmlStats/Objects/Elem.java
index 892027c..474f685 100644
--- a/src/de/sockenklaus/XmlStats/Objects/Elem.java
+++ b/src/de/sockenklaus/XmlStats/Objects/Elem.java
@@ -22,4 +22,10 @@ public abstract class Elem {
result.setTextContent(String.valueOf(value));
return result;
}
+
+ /**
+ * @param doc
+ * @return
+ */
+ public abstract Element getXml(Document doc);
}
diff --git a/src/de/sockenklaus/XmlStats/Objects/Items.java b/src/de/sockenklaus/XmlStats/Objects/Items.java
index a162bd7..6a59821 100644
--- a/src/de/sockenklaus/XmlStats/Objects/Items.java
+++ b/src/de/sockenklaus/XmlStats/Objects/Items.java
@@ -3,12 +3,22 @@
*/
package de.sockenklaus.XmlStats.Objects;
-import java.util.ArrayList;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
/**
* @author socrates
*
*/
public class Items extends Array {
+
+ /* (non-Javadoc)
+ * @see de.sockenklaus.XmlStats.Objects.Elem#getXml(org.w3c.dom.Document)
+ */
+ @Override
+ public Element getXml(Document doc) {
+ // TODO Auto-generated method stub
+ return null;
+ }
}
diff --git a/src/de/sockenklaus/XmlStats/Objects/UserAchievements.java b/src/de/sockenklaus/XmlStats/Objects/UserAchievements.java
index 7697101..de9eebe 100644
--- a/src/de/sockenklaus/XmlStats/Objects/UserAchievements.java
+++ b/src/de/sockenklaus/XmlStats/Objects/UserAchievements.java
@@ -9,27 +9,32 @@ import org.w3c.dom.Element;
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 UserAchievements extends Achievements {
- public UserAchievements(String userName){
+ public UserAchievements(String userName) throws XmlStatsException{
AchievementsDS ads = new AchievementsDS();
- PlayerAchievement pa = ads.getUserAchievement(userName);
-
- for(String paName : pa.achievements.keySet()){
- this.childNodes.add(new UserAchievement(paName, pa.get(paName)));
+ if (Datasource.userExists(userName)){
+ PlayerAchievement pa = ads.getUserAchievement(userName);
+
+ for(String paName : pa.achievements.keySet()){
+ this.childNodes.add(new UserAchievement(paName, pa.get(paName)));
+ }
}
+ else throw new XmlStatsException("The given username is not valid.");
}
public Element getXml(Document doc){
Element result = doc.createElement("achievements");
result.setAttribute("count", this.getCountStr());
- for(Achievement ach : this.childNodes){
+ for(Elem ach : this.childNodes){
result.appendChild(((UserAchievement)ach).getXml(doc));
}
diff --git a/src/de/sockenklaus/XmlStats/Objects/Users.java b/src/de/sockenklaus/XmlStats/Objects/Users.java
index 30d9827..8c5cae6 100644
--- a/src/de/sockenklaus/XmlStats/Objects/Users.java
+++ b/src/de/sockenklaus/XmlStats/Objects/Users.java
@@ -3,10 +3,22 @@
*/
package de.sockenklaus.XmlStats.Objects;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
/**
* @author socrates
*
*/
public class Users extends Array {
+ /* (non-Javadoc)
+ * @see de.sockenklaus.XmlStats.Objects.Elem#getXml(org.w3c.dom.Document)
+ */
+ @Override
+ public Element getXml(Document doc) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
}
diff --git a/src/de/sockenklaus/XmlStats/XmlWorkers/AchievementsList.java b/src/de/sockenklaus/XmlStats/XmlWorkers/AchievementsList.java
index 02bec22..44c1542 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.Achievements;
/**
* @author socrates
@@ -24,16 +21,9 @@ 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()));
+ Achievements ach = new Achievements();
+ return ach.getXml(this.doc);
- for(String achName : achList.keySet()){
- elem_achs.appendChild(getAchievement(achList.get(achName)));
- }
-
- return elem_achs;
}
/* (non-Javadoc)
@@ -51,21 +41,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");
-
- elem_ach.appendChild(getTextElem("name", data.getName()));
- elem_ach.appendChild(getTextElem("description", data.getDescription()));
- elem_ach.appendChild(getTextElem("category", data.getCategory()));
- elem_ach.appendChild(getTextElem("stat", data.getKey()));
- elem_ach.appendChild(getTextElem("value", data.getValue()));
- elem_ach.appendChild(getTextElem("maxawards", data.getMaxawards()));
- elem_ach.appendChild(getTextElem("commands", data.commands.toString()));
-
- return elem_ach;
-
- }
-
}