diff --git a/build.xml b/build.xml
index 0fc50c1..5326928 100644
--- a/build.xml
+++ b/build.xml
@@ -11,7 +11,10 @@
-
+
+
+
+
diff --git a/src/de/sockenklaus/XmlStats/Datasource/AchievementsDS.java b/src/de/sockenklaus/XmlStats/Datasource/AchievementsDS.java
index 180cd31..03dc44f 100644
--- a/src/de/sockenklaus/XmlStats/Datasource/AchievementsDS.java
+++ b/src/de/sockenklaus/XmlStats/Datasource/AchievementsDS.java
@@ -3,10 +3,37 @@
*/
package de.sockenklaus.XmlStats.Datasource;
+import java.io.File;
+import java.util.HashMap;
+
+import com.nidefawl.Achievements.AchPropertiesFile;
+import com.nidefawl.Achievements.AchievementListData;
+import com.nidefawl.Achievements.Achievements;
+import com.nidefawl.Achievements.AchievementsLoader;
+
+import de.sockenklaus.XmlStats.XmlStats;
+import de.sockenklaus.XmlStats.XmlStatsRegistry;
+
/**
* @author socrates
*
*/
public class AchievementsDS extends Datasource {
+
+ public HashMap getAchievementsList(){
+ Achievements ach = (Achievements)XmlStatsRegistry.get("achievements");
+
+ if(XmlStats.checkAchievements()){
+ return ach.achievementList;
+ }
+ else return new HashMap();
+ //return AchievementsLoader.LoadAchievementsList(ach, ach.getDataFolder().getPath(), getListLocation(ach));
+ }
+
+ /*private String getListLocation(Achievements ach){
+ AchPropertiesFile props = new AchPropertiesFile(new File(ach.getDataFolder(), "achievements.properties"));
+
+ return props.getString("achievements-list", "achievements.txt", "");
+ }*/
}
diff --git a/src/de/sockenklaus/XmlStats/Datasource/MoneyDS.java b/src/de/sockenklaus/XmlStats/Datasource/MoneyDS.java
index bd0be8e..4f211c3 100644
--- a/src/de/sockenklaus/XmlStats/Datasource/MoneyDS.java
+++ b/src/de/sockenklaus/XmlStats/Datasource/MoneyDS.java
@@ -51,7 +51,7 @@ public class MoneyDS extends Datasource {
private Double getBalance(String playerName){
Double result = 0.0;
- if (XmlStats.isiConomyHooked()){
+ if (XmlStats.checkiConomy()){
if(this.iConomy.hasAccount(playerName)){
Account account = this.iConomy.getAccount(playerName);
diff --git a/src/de/sockenklaus/XmlStats/Webserver.java b/src/de/sockenklaus/XmlStats/Webserver.java
index bde6c17..37e4a4f 100644
--- a/src/de/sockenklaus/XmlStats/Webserver.java
+++ b/src/de/sockenklaus/XmlStats/Webserver.java
@@ -77,7 +77,7 @@ public class Webserver {
this.server.createContext("/users.xml", new XmlWorkerUsers());
- if(XmlStats.isStatsHooked()){
+ if(XmlStats.checkStats()){
server.createContext("/userstats.xml", new XmlWorkerUserstats());
XmlStats.LogInfo("Stats seems to be loaded correctly. Enabling /userstats.xml");
}
@@ -85,7 +85,7 @@ public class Webserver {
XmlStats.LogWarn("Stats not loaded correctly. Disabling /userstats.xml");
}
- if (XmlStats.isiConomyHooked()){
+ if (XmlStats.checkiConomy()){
server.createContext("/money.xml", new XmlWorkerMoney());
XmlStats.LogInfo("iConomy seems to be loaded correctly. Enabling /money.xml.");
}
@@ -93,7 +93,7 @@ public class Webserver {
XmlStats.LogWarn("iConomy not loaded correctly. Disabling /money.xml");
}
- if(XmlStats.isAchievementsHooked()){
+ if(XmlStats.checkAchievements()){
server.createContext("/achievements.xml", new XmlWorkerAchievements());
}
else {
diff --git a/src/de/sockenklaus/XmlStats/XmlStats.java b/src/de/sockenklaus/XmlStats/XmlStats.java
index d59ebee..8ddc91a 100644
--- a/src/de/sockenklaus/XmlStats/XmlStats.java
+++ b/src/de/sockenklaus/XmlStats/XmlStats.java
@@ -181,7 +181,7 @@ public class XmlStats extends JavaPlugin {
*
* @return true, if is stats hooked
*/
- public static boolean isStatsHooked(){
+ public static boolean checkStats(){
Stats StatsTemp = (Stats)XmlStatsRegistry.get("stats");
if (StatsTemp != null){
@@ -195,7 +195,7 @@ public class XmlStats extends JavaPlugin {
*
* @return true, if is i conomy hooked
*/
- public static boolean isiConomyHooked(){
+ public static boolean checkiConomy(){
iConomy iConomyTemp = (iConomy)XmlStatsRegistry.get("iconomy");
if (iConomyTemp != null){
@@ -209,8 +209,8 @@ public class XmlStats extends JavaPlugin {
*
* @return true, if is Achievements hooked
*/
- public static boolean isAchievementsHooked(){
- Achievements AchievementsTemp = (Achievements)XmlStatsRegistry.get("achievments");
+ public static boolean checkAchievements(){
+ Achievements AchievementsTemp = (Achievements)XmlStatsRegistry.get("achievements");
if (AchievementsTemp != null){
if(AchievementsTemp.getClass().getName().equals("com.nidefawl.Achievements.Achievements") && AchievementsTemp.isEnabled()) return true;
diff --git a/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorkerAchievements.java b/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorkerAchievements.java
index 20956dd..0df3df6 100644
--- a/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorkerAchievements.java
+++ b/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorkerAchievements.java
@@ -3,8 +3,26 @@
*/
package de.sockenklaus.XmlStats.XmlWorkers;
+import java.io.StringWriter;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.logging.Level;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+import com.nidefawl.Achievements.AchievementListData;
+import com.nidefawl.Stats.Stats;
+
+import de.sockenklaus.XmlStats.Datasource.AchievementsDS;
/**
* @author socrates
@@ -12,13 +30,89 @@ import java.util.Map;
*/
public class XmlWorkerAchievements extends XmlWorker {
+ AchievementsDS achDS;
+
+ public XmlWorkerAchievements(){
+ this.achDS = new AchievementsDS();
+ }
+
/* (non-Javadoc)
* @see de.sockenklaus.XmlStats.XmlWorkers.XmlWorker#getXML(java.util.Map)
*/
@Override
String getXML(Map> parameters) {
- // TODO Auto-generated method stub
- return null;
+ try {
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ DocumentBuilder builder = factory.newDocumentBuilder();
+ Document doc = builder.newDocument();
+ DOMSource source = new DOMSource(doc);
+ StringWriter writer = new StringWriter();
+ StreamResult result = new StreamResult(writer);
+ TransformerFactory tf = TransformerFactory.newInstance();
+ Transformer transformer = tf.newTransformer();
+
+ HashMap achList = achDS.getAchievementsList();
+
+ Element root = doc.createElement("achievements");
+ doc.appendChild(root);
+
+ /*
+ * Hier wird das XML aufgebaut
+ */
+ for(String achName : achList.keySet()){
+ root.appendChild(getAchievement(doc, achList.get(achName)));
+ }
+
+ /*
+ * Hier endet der XML-Aufbau
+ */
+
+ transformer.transform(source, result);
+ return writer.toString();
+ }
+
+ catch (Exception e){
+ Stats.log.log(Level.SEVERE, "Something went terribly wrong!");
+ Stats.log.log(Level.SEVERE, e.getMessage());
+ }
+
+ return "";
+ }
+
+ private Element getAchievement(Document doc, AchievementListData data){
+ Element elem_ach = doc.createElement("achievement");
+ elem_ach.setAttribute("enabled", String.valueOf(data.isEnabled()));
+
+ Element elem_name = doc.createElement("name");
+ elem_name.setTextContent(data.getName());
+ elem_ach.appendChild(elem_name);
+
+ Element elem_description = doc.createElement("description");
+ elem_description.setTextContent(data.getDescription());
+ elem_ach.appendChild(elem_description);
+
+ Element elem_category = doc.createElement("category");
+ elem_category.setTextContent(data.getCategory());
+ elem_ach.appendChild(elem_category);
+
+ Element elem_stat = doc.createElement("stat");
+ elem_stat.setTextContent(data.getKey());
+ elem_ach.appendChild(elem_stat);
+
+ Element elem_value = doc.createElement("value");
+ elem_value.setTextContent(String.valueOf(data.getValue()));
+ elem_ach.appendChild(elem_value);
+
+ Element elem_maxawards = doc.createElement("maxawards");
+ elem_maxawards.setTextContent(String.valueOf(data.getMaxawards()));
+ elem_ach.appendChild(elem_maxawards);
+
+ Element elem_commands = doc.createElement("commands");
+ elem_commands.setTextContent(data.commands.toString());
+ elem_ach.appendChild(elem_commands);
+
+ return elem_ach;
+
}
}