Author: fred
Date: 2007-08-13 14:52:32 +0000 (Mon, 13 Aug 2007)
New Revision: 14644
Added:
trunk/plugins/Echo/src/plugins/echo/block/
trunk/plugins/Echo/src/plugins/echo/block/Block.java
trunk/plugins/Echo/src/plugins/echo/block/BlockManager.java
trunk/plugins/Echo/src/plugins/echo/block/BlogrollBlock.java
trunk/plugins/Echo/src/plugins/echo/block/CategoriesBlock.java
Log:
add block dir
Added: trunk/plugins/Echo/src/plugins/echo/block/Block.java
===================================================================
--- trunk/plugins/Echo/src/plugins/echo/block/Block.java
(rev 0)
+++ trunk/plugins/Echo/src/plugins/echo/block/Block.java 2007-08-13
14:52:32 UTC (rev 14644)
@@ -0,0 +1,94 @@
+package plugins.echo.block;
+
+import nu.xom.Document;
+import nu.xom.Element;
+
+public abstract class Block {
+
+ public enum BlockType {
+ RECENT_POSTS("recent-posts"), CATEGORIES("categories"),
BLOG_ROLL("blog-roll");
+
+ private String description;
+
+ BlockType(String desc) {
+
+ this.description = desc;
+
+ }
+
+ public String toString() {
+
+ return description;
+
+ }
+
+ public static BlockType value(String str) {
+ for(BlockType type : values()) {
+ if(type.toString().equals(str))
+ return type;
+ }
+
+ throw new IllegalArgumentException("Cannot parse into a
BlockType element : '" + str + "'");
+ }
+
+ };
+
+ public static final int BLOCK_ID_LENGTH = 3;
+
+ protected Document doc;
+ protected Element block;
+
+ public Block(Document document) {
+
+ this.doc = document;
+ this.block = document.getRootElement();
+
+ }
+
+ public abstract boolean isConfigurable();
+
+ public abstract BlockType getType();
+
+ public final String getId() {
+
+ return block.getAttribute("id").getValue();
+
+ }
+
+ public String getPosition() {
+
+ return block.getAttribute("position").getValue();
+
+ }
+
+ public void setPosition(String newPosition) {
+
+ block.getAttribute("position").setValue(newPosition);
+
+ }
+
+ public int getWeight() {
+
+ return
Integer.parseInt(block.getAttribute("weight").getValue());
+
+ }
+
+ public void setWeight(int newWeight) {
+
+
block.getAttribute("weight").setValue(String.valueOf(newWeight));
+
+ }
+
+ public Element toXMLElement() {
+
+ return block;
+
+ }
+
+ public Document getDoc() {
+
+ return doc;
+
+ }
+
+}
\ No newline at end of file
Added: trunk/plugins/Echo/src/plugins/echo/block/BlockManager.java
===================================================================
--- trunk/plugins/Echo/src/plugins/echo/block/BlockManager.java
(rev 0)
+++ trunk/plugins/Echo/src/plugins/echo/block/BlockManager.java 2007-08-13
14:52:32 UTC (rev 14644)
@@ -0,0 +1,81 @@
+package plugins.echo.block;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.util.HashMap;
+import java.io.IOException;
+
+import nu.xom.Builder;
+import nu.xom.Document;
+import nu.xom.Element;
+import nu.xom.Nodes;
+import nu.xom.Serializer;
+import nu.xom.ParsingException;
+
+public class BlockManager {
+
+ private File blocksDir;
+ private Builder parser;
+ private HashMap<String,Block> blocks;
+
+ public BlockManager (File blocksDir) throws ParsingException,
IOException{
+
+ this.blocksDir = blocksDir;
+ this.parser = new Builder();
+ this.blocks = new HashMap<String,Block>();
+
+ File[] files = blocksDir.listFiles();
+ for(File f : files) {
+ if(f.getName().matches("[0-9]{" + Block.BLOCK_ID_LENGTH
+ "}.xml")) {
+
+ Block block = null;
+ Document doc = parser.build(f);
+ String type =
doc.query("/block/@type").get(0).getValue();
+ System.err.println(">>>>>>" + type);
+ switch (Block.BlockType.value(type)) {
+ case BLOG_ROLL:
+ block = new BlogrollBlock(doc);
+
System.err.println(">>>>>>>bleh");
+ break;
+ }
+
+ if(block != null)
+ blocks.put(block.getId(), block);
+ }
+ }
+ }
+
+ public Block getBlockById(String id) {
+
+ return blocks.get(id);
+
+ }
+
+ public String[] getIds() {
+
+ return blocks.keySet().toArray(new String[]{});
+
+ }
+
+ public Block[] getBlocks() {
+
+ String[] ids = getIds();
+ Block[] blocksTable = new Block[ids.length];
+ for(int i=0; i < ids.length; i++)
+ blocksTable[i] = getBlockById(ids[i]);
+
+ return blocksTable;
+ }
+
+ public void write(Block block) throws IOException { // TODO : exists in
HashMap,.
+
+ String id = block.getId();
+
+ Serializer serializer = new Serializer(new
FileOutputStream(blocksDir.getPath() + File.separator + id + ".xml"));
+ serializer.setIndent(4);
+ serializer.setMaxLength(128);
+ serializer.write(block.getDoc());
+
+ }
+
+}
\ No newline at end of file
Added: trunk/plugins/Echo/src/plugins/echo/block/BlogrollBlock.java
===================================================================
--- trunk/plugins/Echo/src/plugins/echo/block/BlogrollBlock.java
(rev 0)
+++ trunk/plugins/Echo/src/plugins/echo/block/BlogrollBlock.java
2007-08-13 14:52:32 UTC (rev 14644)
@@ -0,0 +1,54 @@
+package plugins.echo.block;
+
+import java.net.URL;
+
+import freenet.keys.FreenetURI;
+
+import nu.xom.Document;
+import nu.xom.Element;
+import nu.xom.Attribute;
+
+public class BlogrollBlock extends Block {
+
+// public BlogrollBlock (String id) {
+//
+// super(id, Block.BlockType.BLOG_ROLL);
+//
+// }
+
+ public BlogrollBlock (Document document) {
+
+ super(document);
+
+ }
+
+ public final boolean isConfigurable() {
+
+ return true;
+
+ }
+
+ public final BlockType getType() {
+
+ return Block.BlockType.BLOG_ROLL;
+
+ }
+
+ public void addLink(String name, URL url) {
+
+ Element link = new Element("link");
+ link.addAttribute(new Attribute("url", url.toExternalForm()));
+ link.appendChild(name);
+ block.appendChild(link);
+
+ }
+
+ public void addLink(String name, FreenetURI key) {
+
+ Element link = new Element("link");
+ link.addAttribute(new Attribute("key",key.toString()));
+ link.appendChild(name);
+ block.appendChild(link);
+ }
+
+}
\ No newline at end of file
Added: trunk/plugins/Echo/src/plugins/echo/block/CategoriesBlock.java
===================================================================
--- trunk/plugins/Echo/src/plugins/echo/block/CategoriesBlock.java
(rev 0)
+++ trunk/plugins/Echo/src/plugins/echo/block/CategoriesBlock.java
2007-08-13 14:52:32 UTC (rev 14644)
@@ -0,0 +1,11 @@
+package plugins.echo.block;
+
+public class CategoriesBlock /*extends Block*/ {
+
+// public CategoriesBlock(String id) {
+//
+// super(id, Block.BlockType.CATEGORIES);
+//
+// }
+
+}
\ No newline at end of file