Solved issues #12 and #6. Unified Xml layout and added some basic error

handling. So technically issue #14 is solved.
This commit is contained in:
Pascal Koenig
2011-09-15 21:19:36 +02:00
parent 0fbfc27d3c
commit 7f0f0f5027
11 changed files with 349 additions and 203 deletions

View File

@@ -21,6 +21,7 @@ import de.sockenklaus.XmlStats.XmlStatsRegistry;
*/ */
public class AchievementsDS extends Datasource { public class AchievementsDS extends Datasource {
//HashMap<String, PlayerAchievement> playerAchievementsList;
public HashMap<String, AchievementListData> getAchievementsList(){ public HashMap<String, AchievementListData> getAchievementsList(){
Achievements ach = (Achievements)XmlStatsRegistry.get("achievements"); Achievements ach = (Achievements)XmlStatsRegistry.get("achievements");
@@ -31,7 +32,16 @@ public class AchievementsDS extends Datasource {
else return new HashMap<String, AchievementListData>(); else return new HashMap<String, AchievementListData>();
} }
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; PlayerAchievement pa;
Achievements ach = (Achievements)XmlStatsRegistry.get("achievements"); Achievements ach = (Achievements)XmlStatsRegistry.get("achievements");

View File

@@ -17,7 +17,6 @@ package de.sockenklaus.XmlStats.Datasource;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Set;
import com.iConomy.iConomy; import com.iConomy.iConomy;
import com.iConomy.system.Account; import com.iConomy.system.Account;
@@ -50,7 +49,7 @@ public class MoneyDS extends Datasource {
} }
@SuppressWarnings("static-access") @SuppressWarnings("static-access")
private Double getBalance(String playerName){ public Double getBalance(String playerName){
Double result = 0.0; Double result = 0.0;
if (XmlStats.checkiConomy()){ if (XmlStats.checkiConomy()){

View File

@@ -16,6 +16,7 @@ package de.sockenklaus.XmlStats.Datasource;
import java.io.File; import java.io.File;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import com.nidefawl.Stats.Stats; import com.nidefawl.Stats.Stats;
import com.nidefawl.Stats.datasource.Category; import com.nidefawl.Stats.datasource.Category;
@@ -57,10 +58,10 @@ public class UserstatsDS extends Datasource {
return this.statsPlugin.getDataFolder(); return this.statsPlugin.getDataFolder();
} }
public HashMap<String, HashMap<String, Integer>> getAddedStats(){ public HashMap<String, HashMap<String, Integer>> getAddedStats(List<String> playerList){
HashMap <String, HashMap<String, Integer>> result = new HashMap<String, HashMap<String, Integer>>(); HashMap <String, HashMap<String, Integer>> result = new HashMap<String, HashMap<String, Integer>>();
for(String playerName : this.fetchAllPlayers()){ for(String playerName : playerList){
PlayerStat player = this.getPlayerStat(playerName); PlayerStat player = this.getPlayerStat(playerName);
for(String catName : player.getCats()){ for(String catName : player.getCats()){

View File

@@ -75,14 +75,14 @@ public class Webserver {
this.server = HttpServer.create(this.address, 0); 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(); this.server.start();
} }
protected void startiConomy(){ protected void startiConomy(){
if (this.isRunning() && XmlStats.checkiConomy()){ 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"); XmlStats.LogInfo("iConomy seems to be loaded correctly. Enabling /user_balances.xml");
} }
else { else {
@@ -92,7 +92,8 @@ public class Webserver {
protected void startAchievements(){ protected void startAchievements(){
if(this.isRunning() && XmlStats.checkAchievements()){ 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"); XmlStats.LogInfo("Achievements seems to be loaded correctly. Enabling /user_achievements.xml");
} }
else { else {
@@ -102,7 +103,7 @@ public class Webserver {
protected void startStats(){ protected void startStats(){
if(this.isRunning() && XmlStats.checkStats()){ 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"); XmlStats.LogInfo("Stats seems to be loaded correctly. Enabling /user_stats.xml");
} }
else { else {

View File

@@ -17,48 +17,43 @@ import de.sockenklaus.XmlStats.Datasource.AchievementsDS;
* @author socrates * @author socrates
* *
*/ */
public class XmlWorkerAchievements extends XmlWorker { public class AchievementsList extends XmlWorker {
AchievementsDS achDS;
public XmlWorkerAchievements(){
this.achDS = new AchievementsDS();
}
/* (non-Javadoc) /* (non-Javadoc)
* @see de.sockenklaus.XmlStats.XmlWorkers.XmlWorker#getXML(java.util.Map) * @see de.sockenklaus.XmlStats.XmlWorkers.XmlWorker#getXml(java.util.Map)
*/ */
@Override @Override
Element getXML(Map<String, List<String>> parameters) { protected Element getXml(Map<String, List<String>> parameters) {
HashMap<String, AchievementListData> achList = new AchievementsDS().getAchievementsList();
HashMap<String, AchievementListData> achList = achDS.getAchievementsList();
Element elem_achs = this.doc.createElement("achievements"); Element elem_achs = this.doc.createElement("achievements");
/* for(String achName : achList.keySet()){
* Hier wird das XML aufgebaut elem_achs.appendChild(getAchievement(achList.get(achName)));
*/
if(parameters.containsKey("user")){
for (String playerName : parameters.get("user")){
elem_achs.appendChild(getPlayerAchievement(playerName));
}
}
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<String> playerList, Map<String, List<String>> 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<String> playerList, Map<String, List<String>> parameters) {
return this.getXml(parameters);
} }
private Element getAchievement(AchievementListData data){ private Element getAchievement(AchievementListData data){
Element elem_ach = this.doc.createElement("achievement"); Element elem_ach = this.doc.createElement("achievement");
elem_ach.setAttribute("enabled", data.isEnabled()?"true":"false");
Element elem_category = this.doc.createElement("category"); Element elem_category = this.doc.createElement("category");
elem_category.setTextContent(data.getCategory()); elem_category.setTextContent(data.getCategory());
@@ -84,11 +79,4 @@ public class XmlWorkerAchievements extends XmlWorker {
} }
private Element getPlayerAchievement(String playerName){
Element elem_player = this.doc.createElement("user");
elem_player.appendChild(getTextElem("name", playerName));
return null;
}
} }

View File

@@ -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<String, List<String>> 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<String> playerList, Map<String, List<String>> 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<String> userList, Map<String, List<String>> parameters) {
Element elem_users = this.doc.createElement("users");
for(String userName : userList){
elem_users.appendChild(this.getUserAchievement(userName));
}
return elem_users;
}
}

View File

@@ -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 <http://www.gnu.org/licenses/>.
*/
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<String> playerList, Map<String, List<String>> 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<String, List<String>> 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<String> userList, Map<String, List<String>> 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;
}
}

View File

@@ -29,13 +29,13 @@ import de.sockenklaus.XmlStats.Datasource.UsersDS;
/** /**
* The Class XmlWorkerUsers. * The Class XmlWorkerUsers.
*/ */
public class XmlWorkerUsers extends XmlWorker { public class UserList extends XmlWorker {
/* (non-Javadoc) /* (non-Javadoc)
* @see de.sockenklaus.XmlStats.XmlWorkers.XmlWorker#getXML(java.util.Map) * @see de.sockenklaus.XmlStats.XmlWorkers.XmlWorker#getXML(java.util.Map)
*/ */
@Override @Override
public Element getXML(Map<String, List<String>> parameters) { public Element getXml(Map<String, List<String>> parameters) {
UsersDS users = new UsersDS(); UsersDS users = new UsersDS();
Element elem_users = this.doc.createElement("users"); Element elem_users = this.doc.createElement("users");
@@ -77,4 +77,20 @@ public class XmlWorkerUsers extends XmlWorker {
return elem_users; return elem_users;
} }
/* (non-Javadoc)
* @see de.sockenklaus.XmlStats.XmlWorkers.XmlWorker#getSumXml(java.util.List, java.util.Map)
*/
@Override
protected Element getSumXml(List<String> playerList, Map<String, List<String>> 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<String> playerList, Map<String, List<String>> parameters) {
return this.getXml(parameters);
}
} }

View File

@@ -29,7 +29,7 @@ import de.sockenklaus.XmlStats.Datasource.UserstatsDS;
/** /**
* The Class XmlWorkerUserstats. * The Class XmlWorkerUserstats.
*/ */
public class XmlWorkerUserstats extends XmlWorker { public class UserStats extends XmlWorker {
/** The stats ds. */ /** The stats ds. */
private UserstatsDS statsDS; private UserstatsDS statsDS;
@@ -37,37 +37,19 @@ public class XmlWorkerUserstats extends XmlWorker {
/** /**
* Instantiates a new xml worker userstats. * Instantiates a new xml worker userstats.
*/ */
public XmlWorkerUserstats(){ public UserStats(){
this.statsDS = new UserstatsDS(); this.statsDS = new UserstatsDS();
} }
/* (non-Javadoc) /* (non-Javadoc)
* @see de.sockenklaus.XmlStats.XmlWorkers.XmlWorker#getXML(java.util.Map) * @see de.sockenklaus.XmlStats.XmlWorkers.XmlWorker#getXML(java.util.Map)
*/ */
public Element getXML(Map<String, List<String>> parameters) { public Element getXml(Map<String, List<String>> parameters) {
Element elem_error = this.doc.createElement("error");
elem_error.setAttribute("code", "1");
elem_error.setTextContent("No data provided with this query!");
Element elem_userstats = this.doc.createElement("userstats"); return elem_error;
/*
* 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;
} }
/** /**
@@ -107,12 +89,12 @@ public class XmlWorkerUserstats extends XmlWorker {
* *
* @return the added up stats element * @return the added up stats element
*/ */
private Element getAddedUpStatsElement(){ private Element getAddedUpStatsElement(List<String> playerList){
HashMap<String, HashMap<String, Integer>> addedStats = statsDS.getAddedStats(); HashMap<String, HashMap<String, Integer>> addedStats = statsDS.getAddedStats(playerList);
Element elem_player = this.doc.createElement("user"); Element elem_stats = this.doc.createElement("stats");
Element elem_cats = this.doc.createElement("categories"); Element elem_cats = this.doc.createElement("categories");
elem_player.appendChild(elem_cats); elem_stats.appendChild(elem_cats);
for (String catName : addedStats.keySet()){ for (String catName : addedStats.keySet()){
Element elem_cat = this.doc.createElement("category"); Element elem_cat = this.doc.createElement("category");
@@ -128,7 +110,7 @@ public class XmlWorkerUserstats extends XmlWorker {
elem_cat.appendChild(elem_items); elem_cat.appendChild(elem_items);
} }
return elem_player; return elem_stats;
} }
/** /**
@@ -146,4 +128,41 @@ public class XmlWorkerUserstats extends XmlWorker {
return elem_item; return elem_item;
} }
/* (non-Javadoc)
* @see de.sockenklaus.XmlStats.XmlWorkers.XmlWorker#getSumXml(java.util.List, java.util.Map)
*/
@Override
protected Element getSumXml(List<String> playerList, Map<String, List<String>> 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<String> playerList, Map<String, List<String>> parameters) {
Element elem_users = this.doc.createElement("users");
for(String playerName : playerList){
elem_users.appendChild(this.getUserElement(playerName));
}
return elem_users;
}
} }

View File

@@ -45,6 +45,8 @@ import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpExchange; import com.sun.net.httpserver.HttpExchange;
import de.sockenklaus.XmlStats.XmlStats; import de.sockenklaus.XmlStats.XmlStats;
import de.sockenklaus.XmlStats.Datasource.Datasource;
import de.sockenklaus.XmlStats.Datasource.UsersDS;
// TODO: Auto-generated Javadoc // TODO: Auto-generated Javadoc
/** /**
@@ -90,13 +92,38 @@ public abstract class XmlWorker implements HttpHandler {
this.result = new StreamResult(this.writer); this.result = new StreamResult(this.writer);
this.tf = TransformerFactory.newInstance(); this.tf = TransformerFactory.newInstance();
this.transformer = this.tf.newTransformer(); this.transformer = this.tf.newTransformer();
Datasource ds = new UsersDS();
Element root = this.doc.createElement("xmlstats"); Element root = this.doc.createElement("xmlstats");
List<String> playerList;
this.doc.appendChild(root); this.doc.appendChild(root);
/* /*
* Actually create the XML * 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 * Build string from XML
@@ -162,6 +189,26 @@ public abstract class XmlWorker implements HttpHandler {
} }
} }
/**
* @param parameters
* @return
*/
protected abstract Element getXml(Map<String, List<String>> parameters);
/**
* @param playerList
* @param parameters
* @return
*/
protected abstract Element getSumXml(List<String> playerList, Map<String, List<String>> parameters);
/**
* @param playerList
* @param parameters
* @return
*/
protected abstract Element getUserXml(List<String> playerList, Map<String, List<String>> parameters);
/** /**
* Parses the parameters. * Parses the parameters.
* *
@@ -204,14 +251,6 @@ public abstract class XmlWorker implements HttpHandler {
return result; return result;
} }
/**
* Gets the xML.
*
* @param parameters the parameters
* @return the xML
*/
abstract Element getXML(Map<String, List<String>> parameters);
private byte[] compressData(byte[] input){ private byte[] compressData(byte[] input){
ByteArrayOutputStream out = new ByteArrayOutputStream(); ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] output; byte[] output;
@@ -260,4 +299,10 @@ public abstract class XmlWorker implements HttpHandler {
result.setTextContent(text); result.setTextContent(text);
return result; return result;
} }
protected Element getTextElem(String elemName, int value){
Element result = this.doc.createElement(elemName);
result.setTextContent(String.valueOf(value));
return result;
}
} }

View File

@@ -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 <http://www.gnu.org/licenses/>.
*/
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<String, List<String>> parameters) {
HashMap<String, Double> 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<String> userList = new ArrayList<String>();
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");
}
}