Started to unify the xml structure to match the common xml semantics and

tried to simplify the xml worker classes.
This commit is contained in:
Pascal Koenig
2011-09-05 01:35:21 +02:00
parent de2276bdcd
commit b325e0f2dd
8 changed files with 171 additions and 179 deletions

View File

@@ -3,13 +3,10 @@
*/ */
package de.sockenklaus.XmlStats.Datasource; package de.sockenklaus.XmlStats.Datasource;
import java.io.File;
import java.util.HashMap; import java.util.HashMap;
import com.nidefawl.Achievements.AchPropertiesFile;
import com.nidefawl.Achievements.AchievementListData; import com.nidefawl.Achievements.AchievementListData;
import com.nidefawl.Achievements.Achievements; import com.nidefawl.Achievements.Achievements;
import com.nidefawl.Achievements.AchievementsLoader;
import de.sockenklaus.XmlStats.XmlStats; import de.sockenklaus.XmlStats.XmlStats;
import de.sockenklaus.XmlStats.XmlStatsRegistry; import de.sockenklaus.XmlStats.XmlStatsRegistry;
@@ -28,12 +25,5 @@ public class AchievementsDS extends Datasource {
return ach.achievementList; return ach.achievementList;
} }
else return new HashMap<String, AchievementListData>(); else return new HashMap<String, AchievementListData>();
//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", "");
}*/
} }

View File

@@ -85,7 +85,6 @@ public class XmlStats extends JavaPlugin {
this.enabled = true; this.enabled = true;
LogInfo("XmStats "+this.version+" enabled"); LogInfo("XmStats "+this.version+" enabled");
this.hookPlugins(); this.hookPlugins();
this.registerEvents(); this.registerEvents();
} }
catch (Exception ex){ catch (Exception ex){

View File

@@ -6,10 +6,6 @@ package de.sockenklaus.XmlStats;
import org.bukkit.event.server.PluginDisableEvent; import org.bukkit.event.server.PluginDisableEvent;
import org.bukkit.event.server.PluginEnableEvent; import org.bukkit.event.server.PluginEnableEvent;
import org.bukkit.event.server.ServerListener; import org.bukkit.event.server.ServerListener;
import org.bukkit.plugin.Plugin;
import com.iConomy.iConomy;
import com.nidefawl.Stats.Stats;
/** /**
* @author socrates * @author socrates

View File

@@ -16,6 +16,7 @@ package de.sockenklaus.XmlStats.XmlWorkers;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.StringWriter;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection; import java.net.HttpURLConnection;
import java.net.URLDecoder; import java.net.URLDecoder;
@@ -25,6 +26,15 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.zip.GZIPOutputStream; import java.util.zip.GZIPOutputStream;
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 com.sun.net.httpserver.Headers; import com.sun.net.httpserver.Headers;
import com.sun.net.httpserver.HttpContext; import com.sun.net.httpserver.HttpContext;
import com.sun.net.httpserver.HttpHandler; import com.sun.net.httpserver.HttpHandler;
@@ -37,6 +47,14 @@ import de.sockenklaus.XmlStats.XmlStats;
* The Class XmlWorker. * The Class XmlWorker.
*/ */
public abstract class XmlWorker implements HttpHandler { public abstract class XmlWorker implements HttpHandler {
protected DocumentBuilderFactory factory;
protected DocumentBuilder builder;
protected Document doc;
protected DOMSource source;
protected StringWriter writer;
protected StreamResult result;
protected TransformerFactory tf;
protected Transformer transformer;
/* (non-Javadoc) /* (non-Javadoc)
* @see com.sun.net.httpserver.HttpHandler#handle(com.sun.net.httpserver.HttpExchange) * @see com.sun.net.httpserver.HttpHandler#handle(com.sun.net.httpserver.HttpExchange)
@@ -155,12 +173,12 @@ public abstract class XmlWorker implements HttpHandler {
try { try {
XmlStats.LogDebug("OK... let's try gzip compression..."); XmlStats.LogDebug("OK... let's try gzip compression...");
XmlStats.LogDebug("Actual size of the xml file: "+input.length+"Bytes"); XmlStats.LogDebug("Actual size of the xml file: "+input.length+" B");
GZIPOutputStream gzip = new GZIPOutputStream(out); GZIPOutputStream gzip = new GZIPOutputStream(out);
gzip.write(input); gzip.write(input);
gzip.close(); gzip.close();
output = out.toByteArray(); output = out.toByteArray();
XmlStats.LogDebug("Compressed size of the xml file: "+output.length+"Bytes"); XmlStats.LogDebug("Compressed size of the xml file: "+output.length+" B");
} }
catch(IOException e){ catch(IOException e){
XmlStats.LogError("GZIP-Compression failed! Returning empty byte[]"); XmlStats.LogError("GZIP-Compression failed! Returning empty byte[]");

View File

@@ -9,14 +9,11 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.logging.Level; import java.util.logging.Level;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory; import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource; import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult; import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element; import org.w3c.dom.Element;
import com.nidefawl.Achievements.AchievementListData; import com.nidefawl.Achievements.AchievementListData;
@@ -41,73 +38,67 @@ public class XmlWorkerAchievements extends XmlWorker {
*/ */
@Override @Override
String getXML(Map<String, List<String>> parameters) { String getXML(Map<String, List<String>> parameters) {
try { try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); this.factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder(); this.builder = this.factory.newDocumentBuilder();
Document doc = builder.newDocument(); this.doc = this.builder.newDocument();
DOMSource source = new DOMSource(doc); this.source = new DOMSource(this.doc);
StringWriter writer = new StringWriter(); this.writer = new StringWriter();
StreamResult result = new StreamResult(writer); this.result = new StreamResult(this.writer);
TransformerFactory tf = TransformerFactory.newInstance(); this.tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer(); this.transformer = this.tf.newTransformer();
HashMap<String, AchievementListData> achList = achDS.getAchievementsList(); HashMap<String, AchievementListData> achList = achDS.getAchievementsList();
Element root = doc.createElement("achievements"); Element root = this.doc.createElement("xmlstats");
doc.appendChild(root); Element elem_achs = this.doc.createElement("achievements");
this.doc.appendChild(root);
root.appendChild(elem_achs);
/* /*
* Hier wird das XML aufgebaut * Hier wird das XML aufgebaut
*/ */
for(String achName : achList.keySet()){ for(String achName : achList.keySet()){
root.appendChild(getAchievement(doc, achList.get(achName))); elem_achs.appendChild(getAchievement(achList.get(achName)));
} }
/* /*
* Hier endet der XML-Aufbau * Hier endet der XML-Aufbau
*/ */
transformer.transform(source, result); this.transformer.transform(this.source, result);
return writer.toString(); return this.writer.toString();
} }
catch (Exception e){ catch (Exception e){
Stats.log.log(Level.SEVERE, "Something went terribly wrong!"); Stats.log.log(Level.SEVERE, "Something went terribly wrong!");
Stats.log.log(Level.SEVERE, e.getMessage()); Stats.log.log(Level.SEVERE, e.getMessage());
}
return ""; 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"); private Element getAchievement(AchievementListData data){
elem_description.setTextContent(data.getDescription()); Element elem_ach = this.doc.createElement("achievement");
elem_ach.appendChild(elem_description);
Element elem_category = doc.createElement("category"); Element elem_category = this.doc.createElement("category");
elem_category.setTextContent(data.getCategory()); elem_category.setTextContent(data.getCategory());
elem_ach.appendChild(elem_category); elem_ach.appendChild(elem_category);
Element elem_stat = doc.createElement("stat"); Element elem_stat = this.doc.createElement("stat");
elem_stat.setTextContent(data.getKey()); elem_stat.setTextContent(data.getKey());
elem_ach.appendChild(elem_stat); elem_ach.appendChild(elem_stat);
Element elem_value = doc.createElement("value"); Element elem_value = this.doc.createElement("value");
elem_value.setTextContent(String.valueOf(data.getValue())); elem_value.setTextContent(String.valueOf(data.getValue()));
elem_ach.appendChild(elem_value); elem_ach.appendChild(elem_value);
Element elem_maxawards = doc.createElement("maxawards"); Element elem_maxawards = this.doc.createElement("maxawards");
elem_maxawards.setTextContent(String.valueOf(data.getMaxawards())); elem_maxawards.setTextContent(String.valueOf(data.getMaxawards()));
elem_ach.appendChild(elem_maxawards); elem_ach.appendChild(elem_maxawards);
Element elem_commands = doc.createElement("commands"); Element elem_commands = this.doc.createElement("commands");
elem_commands.setTextContent(data.commands.toString()); elem_commands.setTextContent(data.commands.toString());
elem_ach.appendChild(elem_commands); elem_ach.appendChild(elem_commands);

View File

@@ -20,14 +20,11 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.logging.Level; import java.util.logging.Level;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory; import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource; import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult; import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element; import org.w3c.dom.Element;
import com.nidefawl.Stats.Stats; import com.nidefawl.Stats.Stats;
@@ -51,46 +48,48 @@ public class XmlWorkerMoney extends XmlWorker {
*/ */
@Override @Override
public String getXML(Map<String, List<String>> parameters) { public String getXML(Map<String, List<String>> parameters) {
try { try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); this.factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder(); this.builder = this.factory.newDocumentBuilder();
Document doc = builder.newDocument(); this.doc = this.builder.newDocument();
DOMSource source = new DOMSource(doc); this.source = new DOMSource(this.doc);
StringWriter writer = new StringWriter(); this.writer = new StringWriter();
StreamResult result = new StreamResult(writer); this.result = new StreamResult(this.writer);
TransformerFactory tf = TransformerFactory.newInstance(); this.tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer(); this.transformer = this.tf.newTransformer();
HashMap<String, Double> balances = moneyDS.getBalances(); HashMap<String, Double> balances = moneyDS.getBalances();
Element root = doc.createElement("money"); Element root = this.doc.createElement("xmlstats");
doc.appendChild(root); Element elem_money = this.doc.createElement("money");
this.doc.appendChild(root);
root.appendChild(elem_money);
/* /*
* Hier wird das XML aufgebaut * Hier wird das XML aufgebaut
*/ */
for (String playerName : balances.keySet()){ for (String playerName : balances.keySet()){
Element elem_player = doc.createElement("player"); Element elem_player = this.doc.createElement("player");
elem_player.setAttribute("name", playerName); elem_player.setAttribute("name", playerName);
elem_player.setAttribute("balance", String.valueOf(balances.get(playerName))); elem_player.setAttribute("balance", String.valueOf(balances.get(playerName)));
root.appendChild(elem_player); elem_money.appendChild(elem_player);
} }
/* /*
* Hier endet der XML-Aufbau * Hier endet der XML-Aufbau
*/ */
transformer.transform(this.source, result);
transformer.transform(source, result); return this.writer.toString();
return writer.toString();
} }
catch (Exception e){ catch (Exception e){
Stats.log.log(Level.SEVERE, "Something went terribly wrong!"); Stats.log.log(Level.SEVERE, "Something went terribly wrong!");
Stats.log.log(Level.SEVERE, e.getMessage()); Stats.log.log(Level.SEVERE, e.getMessage());
}
return ""; return "";
} }
} }
}

View File

@@ -20,15 +20,12 @@ import java.util.Map;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.List; import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory; import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource; import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult; import javax.xml.transform.stream.StreamResult;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.w3c.dom.Document;
import org.w3c.dom.Element; import org.w3c.dom.Element;
import com.nidefawl.Stats.Stats; import com.nidefawl.Stats.Stats;
@@ -51,18 +48,20 @@ public class XmlWorkerUsers extends XmlWorker {
UsersDS users = new UsersDS(); UsersDS users = new UsersDS();
try { try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); this.factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder(); this.builder = this.factory.newDocumentBuilder();
Document doc = builder.newDocument(); this.doc = this.builder.newDocument();
DOMSource source = new DOMSource(doc); this.source = new DOMSource(this.doc);
StringWriter writer = new StringWriter(); this.writer = new StringWriter();
StreamResult result = new StreamResult(writer); this.result = new StreamResult(writer);
TransformerFactory tf = TransformerFactory.newInstance(); this.tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer(); this.transformer = tf.newTransformer();
Element root = doc.createElement("players"); Element root = this.doc.createElement("xmlstats");
root.setAttribute("count", String.valueOf(users.getAllPlayers().size())); Element elem_users = this.doc.createElement("users");
doc.appendChild(root); elem_users.setAttribute("count", String.valueOf(users.getAllPlayers().size()));
this.doc.appendChild(root);
root.appendChild(elem_users);
/* /*
* Get list online player names * Get list online player names
@@ -87,17 +86,16 @@ public class XmlWorkerUsers extends XmlWorker {
for(String playerName : users.getAllPlayers()){ for(String playerName : users.getAllPlayers()){
Element elem_player = doc.createElement("player"); Element elem_player = this.doc.createElement("player");
elem_player.setAttribute("name", playerName); elem_player.setTextContent(playerName);
elem_player.setAttribute("status", onlinePlayerNames.contains(playerName) ? "online":"offline"); elem_player.setAttribute("status", onlinePlayerNames.contains(playerName) ? "online":"offline");
root.appendChild(elem_player); elem_users.appendChild(elem_player);
} }
/* /*
* Hier endet der XML-Aufbau * Hier endet der XML-Aufbau
*/ */
transformer.transform(source, result); transformer.transform(source, result);
return writer.toString(); return writer.toString();
} }
@@ -106,9 +104,8 @@ public class XmlWorkerUsers extends XmlWorker {
{ {
Stats.log.log(Level.SEVERE, "Something went terribly wrong!"); Stats.log.log(Level.SEVERE, "Something went terribly wrong!");
Stats.log.log(Level.SEVERE, e.getMessage()); Stats.log.log(Level.SEVERE, e.getMessage());
}
return ""; return "";
} }
}
} }

View File

@@ -14,26 +14,20 @@
*/ */
package de.sockenklaus.XmlStats.XmlWorkers; package de.sockenklaus.XmlStats.XmlWorkers;
import java.io.File;
import java.io.StringWriter; import java.io.StringWriter;
import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.List; import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory; import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource; import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult; import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element; import org.w3c.dom.Element;
import com.nidefawl.Stats.Stats; import com.nidefawl.Stats.Stats;
import com.nidefawl.Stats.ItemResolver.hModItemResolver;
import com.nidefawl.Stats.datasource.Category; import com.nidefawl.Stats.datasource.Category;
import com.nidefawl.Stats.datasource.PlayerStat; import com.nidefawl.Stats.datasource.PlayerStat;
@@ -47,16 +41,12 @@ public class XmlWorkerUserstats extends XmlWorker {
/** The stats ds. */ /** The stats ds. */
private UserstatsDS statsDS; private UserstatsDS statsDS;
private hModItemResolver itemResolver;
private String[] resolveCats;
/** /**
* Instantiates a new xml worker userstats. * Instantiates a new xml worker userstats.
*/ */
public XmlWorkerUserstats(){ public XmlWorkerUserstats(){
this.statsDS = new UserstatsDS(); this.statsDS = new UserstatsDS();
itemResolver = new hModItemResolver(new File(statsDS.getDataFolder(),"items.txt"));
resolveCats = new String[]{"blockdestroy", "blockcreate", "itemdrop", "itempickup"};
} }
/* (non-Javadoc) /* (non-Javadoc)
@@ -64,32 +54,34 @@ public class XmlWorkerUserstats extends XmlWorker {
*/ */
public String getXML(Map<String, List<String>> parameters) { public String getXML(Map<String, List<String>> parameters) {
try { try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); this.factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder(); this.builder = this.factory.newDocumentBuilder();
Document doc = builder.newDocument(); this.doc = this.builder.newDocument();
DOMSource source = new DOMSource(doc); this.source = new DOMSource(this.doc);
StringWriter writer = new StringWriter(); this.writer = new StringWriter();
StreamResult result = new StreamResult(writer); this.result = new StreamResult(writer);
TransformerFactory tf = TransformerFactory.newInstance(); this.tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer(); this.transformer = this.tf.newTransformer();
Element root = doc.createElement("stats"); Element root = this.doc.createElement("xmlstats");
doc.appendChild(root); Element elem_userstats = this.doc.createElement("userstats");
this.doc.appendChild(root);
root.appendChild(elem_userstats);
/* /*
* Hier wird das XML aufgebaut * Hier wird das XML aufgebaut
*/ */
if (!parameters.containsKey("player")){ if (!parameters.containsKey("player")){
// Generate a summarized XML // Generate a summarized XML
elem_userstats.setAttribute("type", "sum");
root.appendChild(getAddedUpStatsElement(doc)); elem_userstats.appendChild(getAddedUpStatsElement());
} }
else { else {
// Generate the XML for the given user(s) // Generate the XML for the given user(s)
for(String playerName : statsDS.fetchAllPlayers()){ for(String playerName : statsDS.fetchAllPlayers()){
if (parameters.containsKey("player") && parameters.get("player").contains(playerName.toLowerCase())){ if (parameters.containsKey("player") && parameters.get("player").contains(playerName.toLowerCase())){
root.appendChild(getPlayerElement(playerName, doc)); elem_userstats.appendChild(getPlayerElement(playerName));
} }
} }
} }
@@ -101,77 +93,87 @@ public class XmlWorkerUserstats extends XmlWorker {
transformer.transform(source, result); transformer.transform(source, result);
return writer.toString(); return writer.toString();
} }
catch (Exception e){ catch (Exception e){
Stats.log.log(Level.SEVERE, "Something went terribly wrong!"); Stats.log.log(Level.SEVERE, "Something went terribly wrong!");
Stats.log.log(Level.SEVERE, e.getMessage()); Stats.log.log(Level.SEVERE, e.getMessage());
}
return ""; return "";
} }
}
/** /**
* Build a XML subtree for the given player. * Build a XML subtree for the given player.
* *
* @param playerName the player name * @param playerName the player name
* @param doc the doc * @paramthis.doc thethis.doc
* @return Returns a XML subtree for the given playerName. * @return Returns a XML subtree for the given playerName.
*/ */
private Element getPlayerElement(String playerName, Document doc){ private Element getPlayerElement(String playerName){
PlayerStat player_stats = statsDS.getPlayerStat(playerName); PlayerStat player_stats = statsDS.getPlayerStat(playerName);
Element elem_player = doc.createElement("player"); Element elem_player = this.doc.createElement("player");
elem_player.setAttribute("name", playerName); Element elem_cats = this.doc.createElement("categories");
elem_player.appendChild(getTextElem("name", playerName));
elem_player.appendChild(elem_cats);
for(String catName : player_stats.getCats()){ for(String catName : player_stats.getCats()){
Category cat = player_stats.get(catName); Category cat = player_stats.get(catName);
Element elem_cat = doc.createElement("category"); Element elem_cat = this.doc.createElement("category");
elem_cat.setAttribute("name", catName); Element elem_items = this.doc.createElement("items");
elem_cat.appendChild(getTextElem("name", catName));
elem_cat.appendChild(elem_items);
elem_cats.appendChild(elem_cat);
for(String valName : cat.stats.keySet()){ for(String valName : cat.stats.keySet()){
int value = cat.get(valName); int value = cat.get(valName);
Element elem_value = doc.createElement("stat"); Element elem_item = this.doc.createElement("item");
elem_value.setAttribute("name", valName); elem_item.appendChild(getTextElem("name", valName));
elem_item.appendChild(getTextElem("value", String.valueOf(value)));
if (Arrays.asList(resolveCats).contains(catName)){ elem_items.appendChild(elem_item);
elem_value.setAttribute("id", String.valueOf(itemResolver.getItem(valName)));
} }
elem_value.setAttribute("value", String.valueOf(value));
elem_cat.appendChild(elem_value);
}
elem_player.appendChild(elem_cat);
} }
return elem_player; return elem_player;
} }
private Element getAddedUpStatsElement(Document doc){ private Element getAddedUpStatsElement(){
HashMap<String, HashMap<String, Integer>> addedStats = statsDS.getAddedStats(); HashMap<String, HashMap<String, Integer>> addedStats = statsDS.getAddedStats();
Element elem_player = this.doc.createElement("player");
Element elem_cats = this.doc.createElement("categories");
Element elem_player = doc.createElement("player"); elem_player.appendChild(elem_cats);
elem_player.setAttribute("name", "*");
for (String catName : addedStats.keySet()){ for (String catName : addedStats.keySet()){
Element elem_cat = doc.createElement("category"); Element elem_cat = this.doc.createElement("category");
elem_cat.setAttribute("name", catName); Element elem_items = this.doc.createElement("items");
elem_cat.appendChild(getTextElem("name", catName));
elem_cat.appendChild(elem_items);
elem_cats.appendChild(elem_cat);
for(String entryName : addedStats.get(catName).keySet()){ for(String entryName : addedStats.get(catName).keySet()){
Element elem_stat = doc.createElement("stat"); Element elem_item = this.doc.createElement("item");
elem_stat.setAttribute("name", entryName);
if(Arrays.asList(resolveCats).contains(catName)){ elem_item.appendChild(getTextElem("name", entryName));
elem_stat.setAttribute("id", String.valueOf(itemResolver.getItem(entryName))); elem_item.appendChild(getTextElem("value", String.valueOf(addedStats.get(catName).get(entryName))));
}
elem_stat.setAttribute("value", String.valueOf(addedStats.get(catName).get(entryName)));
elem_cat.appendChild(elem_stat); elem_items.appendChild(elem_item);
} }
elem_player.appendChild(elem_cat); elem_cat.appendChild(elem_items);
} }
return elem_player; return elem_player;
} }
private Element getTextElem(String elemName, String text){
Element result = this.doc.createElement(elemName);
result.setTextContent(text);
return result;
}
private Element getItemElem(String key, String value){
return null;
}
} }