From 379e9fb591a6a30f6b286fbd9bf2485b45319883 Mon Sep 17 00:00:00 2001 From: Pascal Koenig Date: Wed, 5 Oct 2011 19:42:34 +0200 Subject: [PATCH] Improved the hierarchy of inheritance... --- .build.number | 4 +- .../XmlStats/Objects/Achievement.java | 53 +++--------- .../XmlStats/Objects/Achievements.java | 20 +---- .../sockenklaus/XmlStats/Objects/Array.java | 15 +++- .../XmlStats/Objects/Categories.java | 8 ++ src/de/sockenklaus/XmlStats/Objects/Elem.java | 81 ------------------- src/de/sockenklaus/XmlStats/Objects/Item.java | 3 +- .../sockenklaus/XmlStats/Objects/Items.java | 8 ++ src/de/sockenklaus/XmlStats/Objects/Node.java | 43 ++++++++++ .../XmlStats/Objects/NodeList.java | 36 +++++++++ .../XmlStats/Objects/NodeText.java | 38 +++++++++ src/de/sockenklaus/XmlStats/Objects/User.java | 3 +- .../XmlStats/Objects/UserAchievement.java | 19 +---- .../XmlStats/Objects/UserAchievements.java | 11 --- .../sockenklaus/XmlStats/Objects/Users.java | 8 ++ 15 files changed, 176 insertions(+), 174 deletions(-) delete mode 100644 src/de/sockenklaus/XmlStats/Objects/Elem.java create mode 100644 src/de/sockenklaus/XmlStats/Objects/Node.java create mode 100644 src/de/sockenklaus/XmlStats/Objects/NodeList.java create mode 100644 src/de/sockenklaus/XmlStats/Objects/NodeText.java diff --git a/.build.number b/.build.number index 323e666..b5c7d7c 100644 --- a/.build.number +++ b/.build.number @@ -1,3 +1,3 @@ #Build Number for ANT. Do not edit! -#Wed Oct 05 13:06:09 CEST 2011 -build.number=22 +#Wed Oct 05 19:32:58 CEST 2011 +build.number=30 diff --git a/src/de/sockenklaus/XmlStats/Objects/Achievement.java b/src/de/sockenklaus/XmlStats/Objects/Achievement.java index adb0fb2..6f4b44b 100644 --- a/src/de/sockenklaus/XmlStats/Objects/Achievement.java +++ b/src/de/sockenklaus/XmlStats/Objects/Achievement.java @@ -3,55 +3,28 @@ */ package de.sockenklaus.XmlStats.Objects; -import org.w3c.dom.Document; -import org.w3c.dom.Element; - import com.nidefawl.Achievements.AchievementListData; /** * @author socrates * */ -public class Achievement extends Elem { +public class Achievement extends NodeList { - private Elem name; - private Elem description; - private Elem category; - private Elem stat; - private Elem value; - private Elem maxawards; - private Elem commands; - private Boolean enabled; + public Achievement(){ + super("achievement"); + } public Achievement(AchievementListData ach){ + super("achievement"); - this.name = new Elem("name", ach.getName()); - this.description = new Elem("description", ach.getDescription()); - this.category = new Elem("category", ach.getCategory()); - this.stat = new Elem("stat", ach.getKey()); - this.value = new Elem("value", ach.getValue()); - this.maxawards = new Elem("maxawards", ach.getMaxawards()); - this.commands = new Elem("commands", ach.commands.toString()); - this.enabled = ach.isEnabled(); - } - - protected Achievement(){ - - } - - public Element getXml(Document doc){ - Element result = doc.createElement("achievement"); - - result.setAttribute("enabled", this.enabled ?"true":"false"); - - result.appendChild(this.name.getXml(doc)); - result.appendChild(this.description.getXml(doc)); - result.appendChild(this.category.getXml(doc)); - result.appendChild(this.stat.getXml(doc)); - result.appendChild(this.value.getXml(doc)); - result.appendChild(this.maxawards.getXml(doc)); - result.appendChild(this.commands.getXml(doc)); - - return result; + this.childNodes.add(new NodeText("name", ach.getName())); + this.childNodes.add(new NodeText("description", ach.getDescription())); + this.childNodes.add(new NodeText("category", ach.getCategory())); + this.childNodes.add(new NodeText("stat", ach.getKey())); + this.childNodes.add(new NodeText("value", ach.getValue())); + this.childNodes.add(new NodeText("maxawards", ach.getMaxawards())); + this.childNodes.add(new NodeText("commands", ach.commands.toString())); + this.attributes.put("enabled", String.valueOf(ach.isEnabled())); } } diff --git a/src/de/sockenklaus/XmlStats/Objects/Achievements.java b/src/de/sockenklaus/XmlStats/Objects/Achievements.java index 967658d..adcfb45 100644 --- a/src/de/sockenklaus/XmlStats/Objects/Achievements.java +++ b/src/de/sockenklaus/XmlStats/Objects/Achievements.java @@ -3,12 +3,8 @@ */ package de.sockenklaus.XmlStats.Objects; -import java.util.ArrayList; import java.util.HashMap; -import org.w3c.dom.Document; -import org.w3c.dom.Element; - import com.nidefawl.Achievements.AchievementListData; import de.sockenklaus.XmlStats.Datasource.AchievementsDS; @@ -18,10 +14,9 @@ import de.sockenklaus.XmlStats.Datasource.AchievementsDS; * */ public class Achievements extends Array { - //protected ArrayList childNodes; - + public Achievements(){ - super(); + super("achievements"); AchievementsDS ads = new AchievementsDS(); HashMap achList = ads.getAchievementsList(); @@ -30,15 +25,4 @@ public class Achievements extends Array { this.childNodes.add(new Achievement(achList.get(achName))); } } - - public Element getXml(Document doc){ - Element result = doc.createElement("achievements"); - result.setAttribute("count", this.getCountStr()); - - for(Elem ach : this.childNodes){ - result.appendChild(ach.getXml(doc)); - } - - return result; - } } diff --git a/src/de/sockenklaus/XmlStats/Objects/Array.java b/src/de/sockenklaus/XmlStats/Objects/Array.java index 469f315..91fdd46 100644 --- a/src/de/sockenklaus/XmlStats/Objects/Array.java +++ b/src/de/sockenklaus/XmlStats/Objects/Array.java @@ -3,11 +3,18 @@ */ package de.sockenklaus.XmlStats.Objects; +import org.w3c.dom.Document; +import org.w3c.dom.Element; + /** * @author socrates * */ -public abstract class Array extends Elem{ +public abstract class Array extends NodeList { + + public Array(String tagName){ + super(tagName); + } public int getCountInt(){ return this.childNodes.size(); @@ -16,4 +23,10 @@ public abstract class Array extends Elem{ public String getCountStr(){ return String.valueOf(this.childNodes.size()); } + + public Element getXml(Document doc){ + this.attributes.put("count", String.valueOf(this.childNodes.size())); + + return super.getXml(doc); + } } diff --git a/src/de/sockenklaus/XmlStats/Objects/Categories.java b/src/de/sockenklaus/XmlStats/Objects/Categories.java index 558422d..e3da7de 100644 --- a/src/de/sockenklaus/XmlStats/Objects/Categories.java +++ b/src/de/sockenklaus/XmlStats/Objects/Categories.java @@ -12,6 +12,14 @@ import org.w3c.dom.Element; */ public class Categories extends Array { + /** + * @param tagName + */ + public Categories() { + super("categories"); + // TODO Auto-generated constructor stub + } + /* (non-Javadoc) * @see de.sockenklaus.XmlStats.Objects.Array#getXml(org.w3c.dom.Document) */ diff --git a/src/de/sockenklaus/XmlStats/Objects/Elem.java b/src/de/sockenklaus/XmlStats/Objects/Elem.java deleted file mode 100644 index 0121d35..0000000 --- a/src/de/sockenklaus/XmlStats/Objects/Elem.java +++ /dev/null @@ -1,81 +0,0 @@ -/** - * - */ -package de.sockenklaus.XmlStats.Objects; - -import java.util.ArrayList; - -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.Node; - -/** - * @author socrates - * - */ -public class Elem { - - protected String textContent; - protected String elemName; - protected ArrayList childNodes; - - protected Elem(){ - this.childNodes = new ArrayList(); - } - - protected Elem(String elemName){ - this(); - this.elemName = elemName; - } - - protected Elem(String elemName, String textContent){ - this(elemName); - this.textContent = textContent; - } - protected Elem(String elemName, Integer intContent){ - this(elemName); - this.textContent = intContent.toString(); - } - - protected Element addXmlChild(String elemName, String text, Document doc){ - Element result = doc.createElement(elemName); - result.setTextContent(text); - return result; - } - - protected Element addXmlChild(String elemName, int value, Document doc){ - Element result = doc.createElement(elemName); - result.setTextContent(String.valueOf(value)); - return result; - } - - /** - * @param doc - * @return - */ - public Element getXml(Document doc){ - Element result = doc.createElement(this.elemName); - - if(!this.textContent.isEmpty()) result.setTextContent(this.textContent); - - for (Elem child : this.childNodes){ - result.appendChild(child.getXml(doc)); - } - - return result; - - } - - public void setTextContent(String content){ - this.textContent = content; - } - - public void addChild(Elem child){ - this.childNodes.add(child); - } - - public Elem getFirstChild(){ - if (this.childNodes.size() > 0) return this.childNodes.get(0); - else throw new IndexOutOfBoundsException(); - } -} diff --git a/src/de/sockenklaus/XmlStats/Objects/Item.java b/src/de/sockenklaus/XmlStats/Objects/Item.java index cdba2c1..c46e02a 100644 --- a/src/de/sockenklaus/XmlStats/Objects/Item.java +++ b/src/de/sockenklaus/XmlStats/Objects/Item.java @@ -5,13 +5,12 @@ package de.sockenklaus.XmlStats.Objects; import org.w3c.dom.Document; import org.w3c.dom.Element; -import org.w3c.dom.Node; /** * @author socrates * */ -public class Item extends Elem { +public class Item extends Node { /* (non-Javadoc) * @see de.sockenklaus.XmlStats.Objects.Elem#getXml(org.w3c.dom.Document) diff --git a/src/de/sockenklaus/XmlStats/Objects/Items.java b/src/de/sockenklaus/XmlStats/Objects/Items.java index fd01266..c1d1c8f 100644 --- a/src/de/sockenklaus/XmlStats/Objects/Items.java +++ b/src/de/sockenklaus/XmlStats/Objects/Items.java @@ -12,6 +12,14 @@ import org.w3c.dom.Element; */ public class Items extends Array { + /** + * @param tagName + */ + public Items() { + super("items"); + // TODO Auto-generated constructor stub + } + /* (non-Javadoc) * @see de.sockenklaus.XmlStats.Objects.Array#getXml(org.w3c.dom.Document) */ diff --git a/src/de/sockenklaus/XmlStats/Objects/Node.java b/src/de/sockenklaus/XmlStats/Objects/Node.java new file mode 100644 index 0000000..bf324ce --- /dev/null +++ b/src/de/sockenklaus/XmlStats/Objects/Node.java @@ -0,0 +1,43 @@ +/** + * + */ +package de.sockenklaus.XmlStats.Objects; + + +import java.util.HashMap; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +import de.sockenklaus.XmlStats.XmlStats; + + +/** + * @author socrates + * + */ +public abstract class Node { + + protected String tagName; + protected HashMap attributes; + + public Node(){ + this.attributes = new HashMap(); + XmlStats.LogDebug("Casting the constructor of Node()"); + } + + public void setAttribute(String name, String value){ + this.attributes.put(name, value); + } + + public Element getXml(Document doc){ + XmlStats.LogDebug("Casting the first level getXml()"); + Element result = doc.createElement(this.tagName); + + for(String attrName : this.attributes.keySet()){ + result.setAttribute(attrName, this.attributes.get(attrName)); + } + + return result; + } +} diff --git a/src/de/sockenklaus/XmlStats/Objects/NodeList.java b/src/de/sockenklaus/XmlStats/Objects/NodeList.java new file mode 100644 index 0000000..9536755 --- /dev/null +++ b/src/de/sockenklaus/XmlStats/Objects/NodeList.java @@ -0,0 +1,36 @@ +/** + * + */ +package de.sockenklaus.XmlStats.Objects; + +import java.util.ArrayList; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +/** + * @author socrates + * + */ +public abstract class NodeList extends Node { + protected ArrayList childNodes; + + public NodeList(String tagName){ + this.childNodes = new ArrayList(); + this.tagName = tagName; + } + + public void addChild(Node child){ + this.childNodes.add(child); + } + + public Element getXml(Document doc){ + Element result = super.getXml(doc); + + for(Node node : this.childNodes){ + result.appendChild(node.getXml(doc)); + } + + return result; + } +} diff --git a/src/de/sockenklaus/XmlStats/Objects/NodeText.java b/src/de/sockenklaus/XmlStats/Objects/NodeText.java new file mode 100644 index 0000000..86ab25c --- /dev/null +++ b/src/de/sockenklaus/XmlStats/Objects/NodeText.java @@ -0,0 +1,38 @@ +/** + * + */ +package de.sockenklaus.XmlStats.Objects; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +/** + * @author socrates + * + */ +public class NodeText extends Node { + + protected String textContent; + + public NodeText(String tagName){ + this.tagName = tagName; + } + + public NodeText(String tagName, String textContent){ + this(tagName); + this.textContent = textContent; + } + + public NodeText(String tagName, Integer intContent) { + this(tagName); + this.textContent = intContent.toString(); + } + + public Element getXml(Document doc){ + Element result = super.getXml(doc); + + if (!this.textContent.isEmpty()) result.setTextContent(this.textContent); + + return result; + } +} diff --git a/src/de/sockenklaus/XmlStats/Objects/User.java b/src/de/sockenklaus/XmlStats/Objects/User.java index 3a9d57e..980b73b 100644 --- a/src/de/sockenklaus/XmlStats/Objects/User.java +++ b/src/de/sockenklaus/XmlStats/Objects/User.java @@ -5,13 +5,12 @@ package de.sockenklaus.XmlStats.Objects; import org.w3c.dom.Document; import org.w3c.dom.Element; -import org.w3c.dom.Node; /** * @author socrates * */ -public class User extends Elem { +public class User extends Node { private String name; diff --git a/src/de/sockenklaus/XmlStats/Objects/UserAchievement.java b/src/de/sockenklaus/XmlStats/Objects/UserAchievement.java index 58f482f..2a0e0be 100644 --- a/src/de/sockenklaus/XmlStats/Objects/UserAchievement.java +++ b/src/de/sockenklaus/XmlStats/Objects/UserAchievement.java @@ -3,9 +3,6 @@ */ package de.sockenklaus.XmlStats.Objects; -import org.w3c.dom.Document; -import org.w3c.dom.Element; - import de.sockenklaus.XmlStats.XmlStats; /** @@ -14,22 +11,10 @@ import de.sockenklaus.XmlStats.XmlStats; */ public class UserAchievement extends Achievement { - private String name; - private int count; - public UserAchievement(String paName, com.nidefawl.Achievements.Achievement achievement){ - this.name = paName; - this.count = achievement.getCount(); + this.childNodes.add(new NodeText("name", paName)); + this.childNodes.add(new NodeText("count", achievement.getCount())); XmlStats.LogDebug("UserAchievement-const castet."); } - - public Element getXml(Document doc){ - Element result = doc.createElement("achievement"); - - result.appendChild(this.addXmlChild("name", this.name, doc)); - result.appendChild(this.addXmlChild("count", this.count, doc)); - - return result; - } } diff --git a/src/de/sockenklaus/XmlStats/Objects/UserAchievements.java b/src/de/sockenklaus/XmlStats/Objects/UserAchievements.java index 7c85b64..624e817 100644 --- a/src/de/sockenklaus/XmlStats/Objects/UserAchievements.java +++ b/src/de/sockenklaus/XmlStats/Objects/UserAchievements.java @@ -33,15 +33,4 @@ public class UserAchievements extends Achievements { } else throw new XmlStatsException("The given username is not valid."); } - - public Element getXml(Document doc){ - Element result = doc.createElement("achievements"); - result.setAttribute("count", this.getCountStr()); - - for(Elem ach : this.childNodes){ - result.appendChild(ach.getXml(doc)); - } - - return result; - } } diff --git a/src/de/sockenklaus/XmlStats/Objects/Users.java b/src/de/sockenklaus/XmlStats/Objects/Users.java index 8c5cae6..c891112 100644 --- a/src/de/sockenklaus/XmlStats/Objects/Users.java +++ b/src/de/sockenklaus/XmlStats/Objects/Users.java @@ -12,6 +12,14 @@ import org.w3c.dom.Element; */ public class Users extends Array { + /** + * @param tagName + */ + public Users() { + super("users"); + // TODO Auto-generated constructor stub + } + /* (non-Javadoc) * @see de.sockenklaus.XmlStats.Objects.Elem#getXml(org.w3c.dom.Document) */