diff --git a/build.xml b/build.xml
index b5b06e9..c0a1822 100644
--- a/build.xml
+++ b/build.xml
@@ -5,7 +5,7 @@
-
+
diff --git a/src/de/sockenklaus/XmlStats/Datasource/MoneyDS.java b/src/de/sockenklaus/XmlStats/Datasource/MoneyDS.java
index 4f211c3..042167f 100644
--- a/src/de/sockenklaus/XmlStats/Datasource/MoneyDS.java
+++ b/src/de/sockenklaus/XmlStats/Datasource/MoneyDS.java
@@ -16,6 +16,8 @@ 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;
@@ -69,4 +71,18 @@ public class MoneyDS extends Datasource {
return result;
}
+
+ /**
+ * @param list
+ * @return
+ */
+ public int getSum(List list) {
+ int result = 0;
+
+ for(String playerName : list){
+ result+=this.getBalance(playerName);
+ }
+
+ return result;
+ }
}
diff --git a/src/de/sockenklaus/XmlStats/Webserver.java b/src/de/sockenklaus/XmlStats/Webserver.java
index 4929faf..e364526 100644
--- a/src/de/sockenklaus/XmlStats/Webserver.java
+++ b/src/de/sockenklaus/XmlStats/Webserver.java
@@ -75,15 +75,15 @@ public class Webserver {
this.server = HttpServer.create(this.address, 0);
- this.server.createContext("/users_list.xml", new XmlWorkerUsers());
+ this.server.createContext("/user_list.xml", new XmlWorkerUsers());
this.server.start();
}
protected void startiConomy(){
if (this.isRunning() && XmlStats.checkiConomy()){
- server.createContext("/users_balances.xml", new XmlWorkerMoney());
- XmlStats.LogInfo("iConomy seems to be loaded correctly. Enabling /users_balances.xml");
+ server.createContext("/user_balances.xml", new XmlWorkerMoney());
+ XmlStats.LogInfo("iConomy seems to be loaded correctly. Enabling /user_balances.xml");
}
else {
XmlStats.LogWarn("iConomy or webserver not loaded correctly. Disabling /users_balances.xml");
diff --git a/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorker.java b/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorker.java
index c975cd1..da1ad57 100644
--- a/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorker.java
+++ b/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorker.java
@@ -179,27 +179,26 @@ public abstract class XmlWorker implements HttpHandler {
String param[] = pair.split("[=]");
String key = null;
- String value = null;
+ String[] valueArr = null;
if(param.length > 0){
key = URLDecoder.decode(param[0].toLowerCase(), System.getProperty("file.encoding"));
+ valueArr = new String[1];
+ valueArr[0] = "";
}
if(param.length > 1){
- value = URLDecoder.decode(param[1].toLowerCase(), System.getProperty("file.encoding"));
+ valueArr = URLDecoder.decode(param[1].toLowerCase(), System.getProperty("file.encoding")).split(",");
}
- if (result.containsKey(key)){
- List values = result.get(key);
-
- values.add(value);
+ List values = new ArrayList();
+ for (String value : valueArr){
+ if (!values.contains(value)){
+ values.add(value);
+ }
}
- else {
- List values = new ArrayList();
- values.add(value);
- result.put(key, values);
- }
+ result.put(key, values);
}
}
return result;
diff --git a/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorkerMoney.java b/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorkerMoney.java
index e0569d0..9442a82 100644
--- a/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorkerMoney.java
+++ b/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorkerMoney.java
@@ -14,12 +14,15 @@
*/
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
@@ -42,23 +45,70 @@ public class XmlWorkerMoney extends XmlWorker {
HashMap balances = moneyDS.getBalances();
- Element elem_users = this.doc.createElement("users");
+ 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))));
- /*
- * Hier wird das XML aufgebaut
- */
-
- 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);
+ 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;
}
-
- /*
- * Hier endet der XML-Aufbau
- */
- 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");
}
}