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:
@@ -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", "");
|
|
||||||
}*/
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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){
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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[]");
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
|
|||||||
@@ -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 "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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 "";
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user