[freenet-cvs] r14644 - in trunk/plugins/Echo/src/plugins/echo: . block

fred at freenetproject.org fred at freenetproject.org
Mon Aug 13 14:52:32 UTC 2007


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




More information about the cvs mailing list