diff --git a/build.xml b/build.xml
index 5229e4b..56ff7eb 100644
--- a/build.xml
+++ b/build.xml
@@ -5,7 +5,7 @@
-
+
diff --git a/src/de/sockenklaus/XmlStats/Datasource/AchievementsDS.java b/src/de/sockenklaus/XmlStats/Datasource/AchievementsDS.java
index eec409e..5e88b0c 100644
--- a/src/de/sockenklaus/XmlStats/Datasource/AchievementsDS.java
+++ b/src/de/sockenklaus/XmlStats/Datasource/AchievementsDS.java
@@ -31,7 +31,6 @@ 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 1866108..05d26c7 100644
--- a/src/de/sockenklaus/XmlStats/Datasource/Datasource.java
+++ b/src/de/sockenklaus/XmlStats/Datasource/Datasource.java
@@ -18,10 +18,6 @@ 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
@@ -36,25 +32,19 @@ public abstract class Datasource {
* @return the array list
*/
public static ArrayList fetchAllPlayers(){
- XmlStats xmlstats = (XmlStats)XmlStatsRegistry.get("xmlstats");
- List worlds = xmlstats.getServer().getWorlds();
+ File[] files = new File("world/players").listFiles();
ArrayList result = new ArrayList();
- for(World world : worlds){
- File[] files = new File(world.getName()+"/players").listFiles();
+ for (int i = 0; i < files.length; i++){
+ int whereDot = files[i].getName().lastIndexOf('.');
- for (File file : files){
- int whereDot = file.getName().lastIndexOf('.');
+ if (0 < whereDot && whereDot <= files[i].getName().length() - 2){
+ String playerName = files[i].getName().substring(0, whereDot);
- if (0 < whereDot && whereDot <= file.getName().length() - 2){
- String playerName = file.getName().substring(0, whereDot);
-
- if(!result.contains(playerName)) result.add(playerName);
- }
+ result.add(playerName);
}
}
-
return result;
}
diff --git a/src/de/sockenklaus/XmlStats/Objects/Achievement.java b/src/de/sockenklaus/XmlStats/Objects/Achievement.java
new file mode 100644
index 0000000..890fc6f
--- /dev/null
+++ b/src/de/sockenklaus/XmlStats/Objects/Achievement.java
@@ -0,0 +1,55 @@
+/**
+ *
+ */
+package de.sockenklaus.XmlStats.Objects;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+import com.nidefawl.Achievements.AchievementListData;
+
+/**
+ * @author socrates
+ *
+ */
+public class Achievement extends Elem {
+
+ private String name;
+ private String description;
+ private String category;
+ private String stat;
+ private Integer value;
+ private Integer maxawards;
+ private String commands;
+ private Boolean enabled;
+
+ public Achievement(AchievementListData ach){
+ this.name = ach.getName();
+ this.description = ach.getDescription();
+ this.category = ach.getCategory();
+ this.stat = ach.getKey();
+ this.value = ach.getValue();
+ this.maxawards = ach.getMaxawards();
+ this.commands = ach.commands.toString();
+ this.enabled = ach.isEnabled();
+ }
+
+ protected Achievement(){
+
+ }
+
+ public Element getXml(Document doc){
+ Element result = doc.createElement("achievement");
+
+ result.setAttribute("enabled", this.enabled ?"true":"false");
+ result.appendChild(this.addXmlChild("name", this.name, doc));
+ result.appendChild(this.addXmlChild("description", this.description, doc));
+ result.appendChild(this.addXmlChild("category", this.category, doc));
+ result.appendChild(this.addXmlChild("stat", this.stat, doc));
+ result.appendChild(this.addXmlChild("value", this.value, doc));
+ result.appendChild(this.addXmlChild("maxawards", this.maxawards, doc));
+ result.appendChild(this.addXmlChild("commands", this.commands, doc));
+
+ return result;
+ }
+}
diff --git a/src/de/sockenklaus/XmlStats/Objects/Achievements.java b/src/de/sockenklaus/XmlStats/Objects/Achievements.java
new file mode 100644
index 0000000..9a5a07e
--- /dev/null
+++ b/src/de/sockenklaus/XmlStats/Objects/Achievements.java
@@ -0,0 +1,43 @@
+/**
+ *
+ */
+package de.sockenklaus.XmlStats.Objects;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+import com.nidefawl.Achievements.AchievementListData;
+
+import de.sockenklaus.XmlStats.Datasource.AchievementsDS;
+
+/**
+ * @author socrates
+ *
+ */
+public class Achievements extends Array {
+ protected ArrayList childNodes;
+
+ public Achievements(){
+ AchievementsDS ads = new AchievementsDS();
+
+ HashMap achList = ads.getAchievementsList();
+
+ for(String achName : achList.keySet()){
+ this.childNodes.add(new Achievement(achList.get(achName)));
+ }
+ }
+
+ public Element getXml(Document doc){
+ Element result = doc.createElement("achievements");
+ result.setAttribute("count", this.getCountStr());
+
+ for(Achievement ach : this.childNodes){
+ result.appendChild(ach.getXml(doc));
+ }
+
+ return result;
+ }
+}
diff --git a/src/de/sockenklaus/XmlStats/Objects/Array.java b/src/de/sockenklaus/XmlStats/Objects/Array.java
new file mode 100644
index 0000000..180f4c4
--- /dev/null
+++ b/src/de/sockenklaus/XmlStats/Objects/Array.java
@@ -0,0 +1,22 @@
+/**
+ *
+ */
+package de.sockenklaus.XmlStats.Objects;
+
+import java.util.ArrayList;
+
+/**
+ * @author socrates
+ *
+ */
+public abstract class Array {
+ private ArrayList> childNodes;
+
+ public int getCountInt(){
+ return this.childNodes.size();
+ }
+
+ public String getCountStr(){
+ return String.valueOf(this.childNodes.size());
+ }
+}
diff --git a/src/de/sockenklaus/XmlStats/Objects/Categories.java b/src/de/sockenklaus/XmlStats/Objects/Categories.java
new file mode 100644
index 0000000..9766c64
--- /dev/null
+++ b/src/de/sockenklaus/XmlStats/Objects/Categories.java
@@ -0,0 +1,12 @@
+/**
+ *
+ */
+package de.sockenklaus.XmlStats.Objects;
+
+/**
+ * @author socrates
+ *
+ */
+public class Categories extends Array {
+
+}
diff --git a/src/de/sockenklaus/XmlStats/Objects/Elem.java b/src/de/sockenklaus/XmlStats/Objects/Elem.java
new file mode 100644
index 0000000..892027c
--- /dev/null
+++ b/src/de/sockenklaus/XmlStats/Objects/Elem.java
@@ -0,0 +1,25 @@
+/**
+ *
+ */
+package de.sockenklaus.XmlStats.Objects;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+/**
+ * @author socrates
+ *
+ */
+public abstract class Elem {
+ protected Element addXmlChild(String elemName, String text, Document doc){
+ Element result = doc.createElement(elemName);
+ result.setTextContent(text);
+ return result;
+ }
+
+ protected Element addXmlChild(String elemName, int value, Document doc){
+ Element result = doc.createElement(elemName);
+ result.setTextContent(String.valueOf(value));
+ return result;
+ }
+}
diff --git a/src/de/sockenklaus/XmlStats/Objects/Items.java b/src/de/sockenklaus/XmlStats/Objects/Items.java
new file mode 100644
index 0000000..a162bd7
--- /dev/null
+++ b/src/de/sockenklaus/XmlStats/Objects/Items.java
@@ -0,0 +1,14 @@
+/**
+ *
+ */
+package de.sockenklaus.XmlStats.Objects;
+
+import java.util.ArrayList;
+
+/**
+ * @author socrates
+ *
+ */
+public class Items extends Array {
+
+}
diff --git a/src/de/sockenklaus/XmlStats/Objects/UserAchievements.java b/src/de/sockenklaus/XmlStats/Objects/UserAchievements.java
new file mode 100644
index 0000000..7697101
--- /dev/null
+++ b/src/de/sockenklaus/XmlStats/Objects/UserAchievements.java
@@ -0,0 +1,38 @@
+/**
+ *
+ */
+package de.sockenklaus.XmlStats.Objects;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+import com.nidefawl.Achievements.PlayerAchievement;
+
+import de.sockenklaus.XmlStats.Datasource.AchievementsDS;
+
+/**
+ * @author socrates
+ *
+ */
+public class UserAchievements extends Achievements {
+ public UserAchievements(String userName){
+ AchievementsDS ads = new AchievementsDS();
+
+ PlayerAchievement pa = ads.getUserAchievement(userName);
+
+ for(String paName : pa.achievements.keySet()){
+ this.childNodes.add(new UserAchievement(paName, pa.get(paName)));
+ }
+ }
+
+ public Element getXml(Document doc){
+ Element result = doc.createElement("achievements");
+ result.setAttribute("count", this.getCountStr());
+
+ for(Achievement ach : this.childNodes){
+ result.appendChild(((UserAchievement)ach).getXml(doc));
+ }
+
+ return result;
+ }
+}
diff --git a/src/de/sockenklaus/XmlStats/Objects/Users.java b/src/de/sockenklaus/XmlStats/Objects/Users.java
new file mode 100644
index 0000000..30d9827
--- /dev/null
+++ b/src/de/sockenklaus/XmlStats/Objects/Users.java
@@ -0,0 +1,12 @@
+/**
+ *
+ */
+package de.sockenklaus.XmlStats.Objects;
+
+/**
+ * @author socrates
+ *
+ */
+public class Users extends Array {
+
+}
diff --git a/src/de/sockenklaus/XmlStats/XmlWorkers/AchievementsList.java b/src/de/sockenklaus/XmlStats/XmlWorkers/AchievementsList.java
index 1c811d3..716461b 100644
--- a/src/de/sockenklaus/XmlStats/XmlWorkers/AchievementsList.java
+++ b/src/de/sockenklaus/XmlStats/XmlWorkers/AchievementsList.java
@@ -56,6 +56,7 @@ public class AchievementsList extends XmlWorker {
Element elem_ach = this.doc.createElement("achievement");
elem_ach.setAttribute("enabled", data.isEnabled()?"true":"false");
+<<<<<<< HEAD
Element elem_achname = this.doc.createElement("name");
elem_achname.setTextContent(data.getName());
elem_ach.appendChild(elem_achname);
@@ -84,6 +85,16 @@ public class AchievementsList extends XmlWorker {
elem_commands.setTextContent(data.commands.toString());
elem_ach.appendChild(elem_commands);
+=======
+ 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()));
+
+>>>>>>> parent of 40d9bce... Pushed version to 0.4. Did some work on object based XML generation.
return elem_ach;
}