From 7f0f0f5027d5bcfdf4789043f070d7d0c74eb9e2 Mon Sep 17 00:00:00 2001 From: Pascal Koenig Date: Thu, 15 Sep 2011 21:19:36 +0200 Subject: [PATCH] Solved issues #12 and #6. Unified Xml layout and added some basic error handling. So technically issue #14 is solved. --- .../XmlStats/Datasource/AchievementsDS.java | 12 +- .../XmlStats/Datasource/MoneyDS.java | 3 +- .../XmlStats/Datasource/UserstatsDS.java | 5 +- src/de/sockenklaus/XmlStats/Webserver.java | 9 +- ...chievements.java => AchievementsList.java} | 62 ++++------ .../XmlStats/XmlWorkers/UserAchievements.java | 91 ++++++++++++++ .../XmlStats/XmlWorkers/UserBalances.java | 90 ++++++++++++++ .../{XmlWorkerUsers.java => UserList.java} | 20 ++- ...XmlWorkerUserstats.java => UserStats.java} | 79 +++++++----- .../XmlStats/XmlWorkers/XmlWorker.java | 67 ++++++++-- .../XmlStats/XmlWorkers/XmlWorkerMoney.java | 114 ------------------ 11 files changed, 349 insertions(+), 203 deletions(-) rename src/de/sockenklaus/XmlStats/XmlWorkers/{XmlWorkerAchievements.java => AchievementsList.java} (56%) create mode 100644 src/de/sockenklaus/XmlStats/XmlWorkers/UserAchievements.java create mode 100644 src/de/sockenklaus/XmlStats/XmlWorkers/UserBalances.java rename src/de/sockenklaus/XmlStats/XmlWorkers/{XmlWorkerUsers.java => UserList.java} (75%) rename src/de/sockenklaus/XmlStats/XmlWorkers/{XmlWorkerUserstats.java => UserStats.java} (66%) delete mode 100644 src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorkerMoney.java diff --git a/src/de/sockenklaus/XmlStats/Datasource/AchievementsDS.java b/src/de/sockenklaus/XmlStats/Datasource/AchievementsDS.java index 412a98f..d5de98e 100644 --- a/src/de/sockenklaus/XmlStats/Datasource/AchievementsDS.java +++ b/src/de/sockenklaus/XmlStats/Datasource/AchievementsDS.java @@ -21,6 +21,7 @@ import de.sockenklaus.XmlStats.XmlStatsRegistry; */ public class AchievementsDS extends Datasource { + //HashMap playerAchievementsList; public HashMap getAchievementsList(){ Achievements ach = (Achievements)XmlStatsRegistry.get("achievements"); @@ -31,7 +32,16 @@ public class AchievementsDS extends Datasource { else return new HashMap(); } - public PlayerAchievement getPlayerAchievement(String playerName){ + /*public void refreshPlayerAchievements(){ + PlayerAchievement pa; + Achievements ach = (Achievements)XmlStatsRegistry.get("achievements"); + + if(ach.useSQL){ + + } + }*/ + + public PlayerAchievement getUserAchievement(String playerName){ PlayerAchievement pa; Achievements ach = (Achievements)XmlStatsRegistry.get("achievements"); diff --git a/src/de/sockenklaus/XmlStats/Datasource/MoneyDS.java b/src/de/sockenklaus/XmlStats/Datasource/MoneyDS.java index 042167f..eabfdb5 100644 --- a/src/de/sockenklaus/XmlStats/Datasource/MoneyDS.java +++ b/src/de/sockenklaus/XmlStats/Datasource/MoneyDS.java @@ -17,7 +17,6 @@ package de.sockenklaus.XmlStats.Datasource; import java.util.ArrayList; import java.util.HashMap; import java.util.List; -import java.util.Set; import com.iConomy.iConomy; import com.iConomy.system.Account; @@ -50,7 +49,7 @@ public class MoneyDS extends Datasource { } @SuppressWarnings("static-access") - private Double getBalance(String playerName){ + public Double getBalance(String playerName){ Double result = 0.0; if (XmlStats.checkiConomy()){ diff --git a/src/de/sockenklaus/XmlStats/Datasource/UserstatsDS.java b/src/de/sockenklaus/XmlStats/Datasource/UserstatsDS.java index 0da6ba6..67ec6a9 100644 --- a/src/de/sockenklaus/XmlStats/Datasource/UserstatsDS.java +++ b/src/de/sockenklaus/XmlStats/Datasource/UserstatsDS.java @@ -16,6 +16,7 @@ package de.sockenklaus.XmlStats.Datasource; import java.io.File; import java.util.HashMap; +import java.util.List; import com.nidefawl.Stats.Stats; import com.nidefawl.Stats.datasource.Category; @@ -57,10 +58,10 @@ public class UserstatsDS extends Datasource { return this.statsPlugin.getDataFolder(); } - public HashMap> getAddedStats(){ + public HashMap> getAddedStats(List playerList){ HashMap > result = new HashMap>(); - for(String playerName : this.fetchAllPlayers()){ + for(String playerName : playerList){ PlayerStat player = this.getPlayerStat(playerName); for(String catName : player.getCats()){ diff --git a/src/de/sockenklaus/XmlStats/Webserver.java b/src/de/sockenklaus/XmlStats/Webserver.java index e364526..ee10ca1 100644 --- a/src/de/sockenklaus/XmlStats/Webserver.java +++ b/src/de/sockenklaus/XmlStats/Webserver.java @@ -75,14 +75,14 @@ public class Webserver { this.server = HttpServer.create(this.address, 0); - this.server.createContext("/user_list.xml", new XmlWorkerUsers()); + this.server.createContext("/user_list.xml", new UserList()); this.server.start(); } protected void startiConomy(){ if (this.isRunning() && XmlStats.checkiConomy()){ - server.createContext("/user_balances.xml", new XmlWorkerMoney()); + server.createContext("/user_balances.xml", new UserBalances()); XmlStats.LogInfo("iConomy seems to be loaded correctly. Enabling /user_balances.xml"); } else { @@ -92,7 +92,8 @@ public class Webserver { protected void startAchievements(){ if(this.isRunning() && XmlStats.checkAchievements()){ - server.createContext("/user_achievements.xml", new XmlWorkerAchievements()); + server.createContext("/user_achievements.xml", new UserAchievements()); + server.createContext("/achievements_list.xml", new AchievementsList()); XmlStats.LogInfo("Achievements seems to be loaded correctly. Enabling /user_achievements.xml"); } else { @@ -102,7 +103,7 @@ public class Webserver { protected void startStats(){ if(this.isRunning() && XmlStats.checkStats()){ - server.createContext("/user_stats.xml", new XmlWorkerUserstats()); + server.createContext("/user_stats.xml", new UserStats()); XmlStats.LogInfo("Stats seems to be loaded correctly. Enabling /user_stats.xml"); } else { diff --git a/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorkerAchievements.java b/src/de/sockenklaus/XmlStats/XmlWorkers/AchievementsList.java similarity index 56% rename from src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorkerAchievements.java rename to src/de/sockenklaus/XmlStats/XmlWorkers/AchievementsList.java index 734bce6..940e8f7 100644 --- a/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorkerAchievements.java +++ b/src/de/sockenklaus/XmlStats/XmlWorkers/AchievementsList.java @@ -17,48 +17,43 @@ import de.sockenklaus.XmlStats.Datasource.AchievementsDS; * @author socrates * */ -public class XmlWorkerAchievements extends XmlWorker { +public class AchievementsList extends XmlWorker { - AchievementsDS achDS; - - public XmlWorkerAchievements(){ - this.achDS = new AchievementsDS(); - } - /* (non-Javadoc) - * @see de.sockenklaus.XmlStats.XmlWorkers.XmlWorker#getXML(java.util.Map) + * @see de.sockenklaus.XmlStats.XmlWorkers.XmlWorker#getXml(java.util.Map) */ @Override - Element getXML(Map> parameters) { - - - HashMap achList = achDS.getAchievementsList(); + protected Element getXml(Map> parameters) { + HashMap achList = new AchievementsDS().getAchievementsList(); Element elem_achs = this.doc.createElement("achievements"); - - /* - * Hier wird das XML aufgebaut - */ - if(parameters.containsKey("user")){ - for (String playerName : parameters.get("user")){ - elem_achs.appendChild(getPlayerAchievement(playerName)); - } + + for(String achName : achList.keySet()){ + elem_achs.appendChild(getAchievement(achList.get(achName))); } - else { - for(String achName : achList.keySet()){ - elem_achs.appendChild(getAchievement(achList.get(achName))); - } - } - - /* - * Hier endet der XML-Aufbau - */ - return elem_achs; + return elem_achs; + } + + /* (non-Javadoc) + * @see de.sockenklaus.XmlStats.XmlWorkers.XmlWorker#getSumXml(java.util.List, java.util.Map) + */ + @Override + protected Element getSumXml(List playerList, Map> parameters) { + return this.getXml(parameters); + } + + /* (non-Javadoc) + * @see de.sockenklaus.XmlStats.XmlWorkers.XmlWorker#getUserXml(java.util.List, java.util.Map) + */ + @Override + 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"); Element elem_category = this.doc.createElement("category"); elem_category.setTextContent(data.getCategory()); @@ -83,12 +78,5 @@ public class XmlWorkerAchievements extends XmlWorker { return elem_ach; } - - private Element getPlayerAchievement(String playerName){ - Element elem_player = this.doc.createElement("user"); - elem_player.appendChild(getTextElem("name", playerName)); - - return null; - } } diff --git a/src/de/sockenklaus/XmlStats/XmlWorkers/UserAchievements.java b/src/de/sockenklaus/XmlStats/XmlWorkers/UserAchievements.java new file mode 100644 index 0000000..605fcfd --- /dev/null +++ b/src/de/sockenklaus/XmlStats/XmlWorkers/UserAchievements.java @@ -0,0 +1,91 @@ +/** + * + */ +package de.sockenklaus.XmlStats.XmlWorkers; + +import java.util.List; +import java.util.Map; + +import org.w3c.dom.Element; + +import com.nidefawl.Achievements.PlayerAchievement; + +import de.sockenklaus.XmlStats.Datasource.AchievementsDS; + +/** + * @author socrates + * + */ +public class UserAchievements extends XmlWorker { + + AchievementsDS achDS; + + public UserAchievements(){ + this.achDS = new AchievementsDS(); + } + + /* (non-Javadoc) + * @see de.sockenklaus.XmlStats.XmlWorkers.XmlWorker#getXML(java.util.Map) + */ + @Override + protected Element getXml(Map> parameters) { + Element elem_error = this.doc.createElement("error"); + elem_error.setAttribute("code", "1"); + elem_error.setTextContent("No data provided with this query!"); + + return elem_error; + } + + private Element getUserAchievement(String userName){ + Element elem_player = this.doc.createElement("user"); + elem_player.appendChild(getTextElem("name", userName)); + + PlayerAchievement pa = achDS.getUserAchievement(userName); + + Element elem_achs = this.doc.createElement("achievements"); + + for(String achName : pa.achievements.keySet()){ + Element elem_ach = this.doc.createElement("achievement"); + elem_ach.appendChild(getTextElem("name", achName)); + elem_ach.appendChild(getTextElem("count", pa.achievements.get(achName).getCount())); + + elem_achs.appendChild(elem_ach); + } + elem_player.appendChild(elem_achs); + + return elem_player; + } + + /* (non-Javadoc) + * @see de.sockenklaus.XmlStats.XmlWorkers.XmlWorker#getSumXml(java.util.List, java.util.Map) + */ + @Override + protected Element getSumXml(List playerList, Map> parameters) { + if(parameters.containsKey("user")){ + return null; + } + else { + Element elem_error = this.doc.createElement("error"); + elem_error.setAttribute("code", "1"); + elem_error.setTextContent("No data provided with this query!"); + + return elem_error; + } + } + + /* (non-Javadoc) + * @see de.sockenklaus.XmlStats.XmlWorkers.XmlWorker#getUserXml(java.util.List, java.util.Map) + */ + @Override + protected Element getUserXml(List userList, Map> parameters) { + Element elem_users = this.doc.createElement("users"); + + for(String userName : userList){ + + elem_users.appendChild(this.getUserAchievement(userName)); + } + + return elem_users; + } + +} diff --git a/src/de/sockenklaus/XmlStats/XmlWorkers/UserBalances.java b/src/de/sockenklaus/XmlStats/XmlWorkers/UserBalances.java new file mode 100644 index 0000000..f8a0377 --- /dev/null +++ b/src/de/sockenklaus/XmlStats/XmlWorkers/UserBalances.java @@ -0,0 +1,90 @@ +/* + * Copyright (C) [2011] [Pascal König] +* +* This program is free software; you can redistribute it and/or modify it under the terms of +* the GNU General Public License as published by the Free Software Foundation; either version +* 3 of the License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +* See the GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License along with this program; +* if not, see . +*/ +package de.sockenklaus.XmlStats.XmlWorkers; + +import java.util.List; +import java.util.Map; + +import org.w3c.dom.Element; + +import de.sockenklaus.XmlStats.XmlStats; +import de.sockenklaus.XmlStats.Datasource.MoneyDS; + +// TODO: Auto-generated Javadoc +/** + * The Class XmlWorkerMoney. + */ +public class UserBalances extends XmlWorker { + + private MoneyDS moneyDS; + + public UserBalances(){ + this.moneyDS = new MoneyDS(); + } + + + protected Element getUserXml(List playerList, Map> parameters){ + + Element elem_users = this.doc.createElement("users"); + + for(String userName : playerList){ + Element elem_user = this.doc.createElement("user"); + elem_user.appendChild(getTextElem("name", userName)); + elem_user.appendChild(getTextElem("balance", String.valueOf(moneyDS.getBalance(userName)))); + + elem_users.appendChild(elem_user); + } + + return elem_users; + } + + /* (non-Javadoc) + * @see de.sockenklaus.XmlStats.XmlWorkers.XmlWorker#getXML(java.util.Map) + */ + @Override + public Element getXml(Map> parameters) { + Element elem_error = this.doc.createElement("error"); + elem_error.setAttribute("code", "1"); + elem_error.setTextContent("No data provided with this query!"); + + return elem_error; + } + + + /* (non-Javadoc) + * @see de.sockenklaus.XmlStats.XmlWorkers.XmlWorker#getSumXml(java.util.List, java.util.Map) + */ + @Override + protected Element getSumXml(List userList, Map> parameters) { + + Element elem_sum = this.doc.createElement("sum"); + Element elem_users = this.doc.createElement("users"); + elem_users.setAttribute("type", "name"); + elem_sum.appendChild(elem_users); + + for(String userName : userList){ + Element elem_user = this.doc.createElement("user"); + elem_user.appendChild(getTextElem("name", userName)); + elem_users.appendChild(elem_user); + XmlStats.LogDebug("Got "+userName); + } + + int sum = moneyDS.getSum(userList); + + elem_sum.appendChild(getTextElem("balance", String.valueOf(sum))); + + return elem_sum; + } +} diff --git a/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorkerUsers.java b/src/de/sockenklaus/XmlStats/XmlWorkers/UserList.java similarity index 75% rename from src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorkerUsers.java rename to src/de/sockenklaus/XmlStats/XmlWorkers/UserList.java index 91d527b..e58a1d5 100644 --- a/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorkerUsers.java +++ b/src/de/sockenklaus/XmlStats/XmlWorkers/UserList.java @@ -29,13 +29,13 @@ import de.sockenklaus.XmlStats.Datasource.UsersDS; /** * The Class XmlWorkerUsers. */ -public class XmlWorkerUsers extends XmlWorker { +public class UserList extends XmlWorker { /* (non-Javadoc) * @see de.sockenklaus.XmlStats.XmlWorkers.XmlWorker#getXML(java.util.Map) */ @Override - public Element getXML(Map> parameters) { + public Element getXml(Map> parameters) { UsersDS users = new UsersDS(); Element elem_users = this.doc.createElement("users"); @@ -76,5 +76,21 @@ public class XmlWorkerUsers extends XmlWorker { */ return elem_users; } + + /* (non-Javadoc) + * @see de.sockenklaus.XmlStats.XmlWorkers.XmlWorker#getSumXml(java.util.List, java.util.Map) + */ + @Override + protected Element getSumXml(List playerList, Map> parameters) { + return this.getXml(parameters); + } + + /* (non-Javadoc) + * @see de.sockenklaus.XmlStats.XmlWorkers.XmlWorker#getUserXml(java.util.List, java.util.Map) + */ + @Override + protected Element getUserXml(List playerList, Map> parameters) { + return this.getXml(parameters); + } } diff --git a/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorkerUserstats.java b/src/de/sockenklaus/XmlStats/XmlWorkers/UserStats.java similarity index 66% rename from src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorkerUserstats.java rename to src/de/sockenklaus/XmlStats/XmlWorkers/UserStats.java index 4d5d4b3..635f972 100644 --- a/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorkerUserstats.java +++ b/src/de/sockenklaus/XmlStats/XmlWorkers/UserStats.java @@ -29,7 +29,7 @@ import de.sockenklaus.XmlStats.Datasource.UserstatsDS; /** * The Class XmlWorkerUserstats. */ -public class XmlWorkerUserstats extends XmlWorker { +public class UserStats extends XmlWorker { /** The stats ds. */ private UserstatsDS statsDS; @@ -37,37 +37,19 @@ public class XmlWorkerUserstats extends XmlWorker { /** * Instantiates a new xml worker userstats. */ - public XmlWorkerUserstats(){ + public UserStats(){ this.statsDS = new UserstatsDS(); } /* (non-Javadoc) * @see de.sockenklaus.XmlStats.XmlWorkers.XmlWorker#getXML(java.util.Map) */ - public Element getXML(Map> parameters) { - - Element elem_userstats = this.doc.createElement("userstats"); + public Element getXml(Map> parameters) { + Element elem_error = this.doc.createElement("error"); + elem_error.setAttribute("code", "1"); + elem_error.setTextContent("No data provided with this query!"); - /* - * Hier wird das XML aufgebaut - */ - if (!parameters.containsKey("player")){ - // Generate a summarized XML - elem_userstats.setAttribute("type", "sum"); - elem_userstats.appendChild(getAddedUpStatsElement()); - } - else { - // Generate the XML for the given user(s) - for(String playerName : statsDS.fetchAllPlayers()){ - if (parameters.containsKey("user") && parameters.get("user").contains(playerName.toLowerCase())){ - elem_userstats.appendChild(getUserElement(playerName)); - } - } - } - /* - * Hier endet der XML-Aufbau - */ - return elem_userstats; + return elem_error; } /** @@ -107,12 +89,12 @@ public class XmlWorkerUserstats extends XmlWorker { * * @return the added up stats element */ - private Element getAddedUpStatsElement(){ - HashMap> addedStats = statsDS.getAddedStats(); - Element elem_player = this.doc.createElement("user"); + private Element getAddedUpStatsElement(List playerList){ + HashMap> addedStats = statsDS.getAddedStats(playerList); + Element elem_stats = this.doc.createElement("stats"); Element elem_cats = this.doc.createElement("categories"); - elem_player.appendChild(elem_cats); + elem_stats.appendChild(elem_cats); for (String catName : addedStats.keySet()){ Element elem_cat = this.doc.createElement("category"); @@ -128,7 +110,7 @@ public class XmlWorkerUserstats extends XmlWorker { elem_cat.appendChild(elem_items); } - return elem_player; + return elem_stats; } /** @@ -146,4 +128,41 @@ public class XmlWorkerUserstats extends XmlWorker { return elem_item; } + + /* (non-Javadoc) + * @see de.sockenklaus.XmlStats.XmlWorkers.XmlWorker#getSumXml(java.util.List, java.util.Map) + */ + @Override + protected Element getSumXml(List playerList, Map> parameters) { + Element elem_sum = this.doc.createElement("sum"); + Element elem_users = this.doc.createElement("users"); + + for (String userName : playerList){ + Element elem_user = this.doc.createElement("user"); + elem_user.appendChild(getTextElem("name", userName)); + + elem_users.appendChild(elem_user); + } + + elem_sum.appendChild(elem_users); + elem_sum.appendChild(this.getAddedUpStatsElement(playerList)); + + return elem_sum; + } + + /* (non-Javadoc) + * @see de.sockenklaus.XmlStats.XmlWorkers.XmlWorker#getUserXml(java.util.List, java.util.Map) + */ + @Override + protected Element getUserXml(List playerList, Map> parameters) { + Element elem_users = this.doc.createElement("users"); + + for(String playerName : playerList){ + elem_users.appendChild(this.getUserElement(playerName)); + } + + return elem_users; + } + + } diff --git a/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorker.java b/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorker.java index da1ad57..59f829d 100644 --- a/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorker.java +++ b/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorker.java @@ -45,6 +45,8 @@ import com.sun.net.httpserver.HttpHandler; import com.sun.net.httpserver.HttpExchange; import de.sockenklaus.XmlStats.XmlStats; +import de.sockenklaus.XmlStats.Datasource.Datasource; +import de.sockenklaus.XmlStats.Datasource.UsersDS; // TODO: Auto-generated Javadoc /** @@ -90,14 +92,39 @@ public abstract class XmlWorker implements HttpHandler { this.result = new StreamResult(this.writer); this.tf = TransformerFactory.newInstance(); this.transformer = this.tf.newTransformer(); - + Datasource ds = new UsersDS(); Element root = this.doc.createElement("xmlstats"); + List playerList; this.doc.appendChild(root); /* * Actually create the XML */ - root.appendChild(getXML(parameters)); - + + if(parameters.isEmpty()){ + root.appendChild(getXml(parameters)); + } + + else if(parameters.containsKey("user")){ + if (parameters.get("user").contains("*")){ + playerList = ds.fetchAllPlayers(); + } + else { + playerList = parameters.get("user"); + } + + root.appendChild(getUserXml(playerList, parameters)); + } + + if(parameters.containsKey("sum")){ + if(parameters.get("sum").contains("*")){ + playerList = ds.fetchAllPlayers(); + } + else { + playerList = parameters.get("sum"); + } + root.appendChild(getSumXml(playerList, parameters)); + } + /* * Build string from XML */ @@ -162,6 +189,26 @@ public abstract class XmlWorker implements HttpHandler { } } + /** + * @param parameters + * @return + */ + protected abstract Element getXml(Map> parameters); + + /** + * @param playerList + * @param parameters + * @return + */ + protected abstract Element getSumXml(List playerList, Map> parameters); + + /** + * @param playerList + * @param parameters + * @return + */ + protected abstract Element getUserXml(List playerList, Map> parameters); + /** * Parses the parameters. * @@ -204,14 +251,6 @@ public abstract class XmlWorker implements HttpHandler { return result; } - /** - * Gets the xML. - * - * @param parameters the parameters - * @return the xML - */ - abstract Element getXML(Map> parameters); - private byte[] compressData(byte[] input){ ByteArrayOutputStream out = new ByteArrayOutputStream(); byte[] output; @@ -260,4 +299,10 @@ public abstract class XmlWorker implements HttpHandler { result.setTextContent(text); return result; } + + protected Element getTextElem(String elemName, int value){ + Element result = this.doc.createElement(elemName); + result.setTextContent(String.valueOf(value)); + return result; + } } diff --git a/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorkerMoney.java b/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorkerMoney.java deleted file mode 100644 index 9442a82..0000000 --- a/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorkerMoney.java +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright (C) [2011] [Pascal König] -* -* This program is free software; you can redistribute it and/or modify it under the terms of -* the GNU General Public License as published by the Free Software Foundation; either version -* 3 of the License, or (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; -* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -* See the GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License along with this program; -* if not, see . -*/ -package de.sockenklaus.XmlStats.XmlWorkers; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import org.w3c.dom.Element; - -import de.sockenklaus.XmlStats.XmlStats; -import de.sockenklaus.XmlStats.Datasource.MoneyDS; - -// TODO: Auto-generated Javadoc -/** - * The Class XmlWorkerMoney. - */ -public class XmlWorkerMoney extends XmlWorker { - - private MoneyDS moneyDS; - - public XmlWorkerMoney(){ - this.moneyDS = new MoneyDS(); - } - - /* (non-Javadoc) - * @see de.sockenklaus.XmlStats.XmlWorkers.XmlWorker#getXML(java.util.Map) - */ - @Override - public Element getXML(Map> parameters) { - - HashMap balances = moneyDS.getBalances(); - - if (parameters.containsKey("user")){ - Element elem_users = this.doc.createElement("users"); - if(parameters.get("user").contains("*")){ - - for (String playerName : balances.keySet()){ - Element elem_user = this.doc.createElement("user"); - elem_user.appendChild(getTextElem("name", playerName)); - elem_user.appendChild(getTextElem("balance", String.valueOf(balances.get(playerName)))); - - elem_users.appendChild(elem_user); - } - - } - else { - for(String playerName : parameters.get("user")){ - Element elem_user = this.doc.createElement("user"); - elem_user.appendChild(getTextElem("name", playerName)); - elem_user.appendChild(getTextElem("balance", String.valueOf(balances.get(playerName)))); - - elem_users.appendChild(elem_user); - } - } - return elem_users; - } - - else if (parameters.containsKey("sum")){ - XmlStats.LogDebug("Entering the sum part"); - Element elem_sum = this.doc.createElement("sum"); - Element elem_users = this.doc.createElement("users"); - elem_users.setAttribute("type", "name"); - elem_sum.appendChild(elem_users); - - - if(parameters.get("sum").contains("*")){ - List userList = new ArrayList(); - for(String userName : balances.keySet()){ - Element elem_user = this.doc.createElement("user"); - elem_user.appendChild(getTextElem("name", userName)); - elem_users.appendChild(elem_user); - XmlStats.LogDebug("Got "+userName); - userList.add(userName); - } - - int sum = moneyDS.getSum(userList); - - elem_sum.appendChild(getTextElem("balance", String.valueOf(sum))); - } - - else { - - for(String userName : parameters.get("sum")){ - Element elem_user = this.doc.createElement("user"); - elem_user.appendChild(getTextElem("name", userName)); - elem_users.appendChild(elem_user); - } - - int sum = moneyDS.getSum(parameters.get("sum")); - - elem_sum.appendChild(getTextElem("balance", String.valueOf(sum))); - } - - - return elem_sum; - } - return this.doc.createElement("users"); - } -}