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


Reply via email to