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; - - } - }