Author: nextgens
Date: 2007-12-05 09:58:49 +0000 (Wed, 05 Dec 2007)
New Revision: 16300

Modified:
   trunk/apps/Echo/src/plugins/echo/Echo.java
   trunk/apps/Echo/src/plugins/echo/ProjectManager.java
Log:
Echo: refactor things a bit... hopefully re-loading echo will work now

Modified: trunk/apps/Echo/src/plugins/echo/Echo.java
===================================================================
--- trunk/apps/Echo/src/plugins/echo/Echo.java  2007-12-05 09:53:11 UTC (rev 
16299)
+++ trunk/apps/Echo/src/plugins/echo/Echo.java  2007-12-05 09:58:49 UTC (rev 
16300)
@@ -26,6 +26,7 @@
 import java.io.InputStream;
 import java.io.IOException;
 //     * Exceptions !
+import java.util.MissingResourceException;
 //     * var Project / projectManager


@@ -37,43 +38,55 @@
        public static final int NODE_ID_LENGTH = 4;

        protected PluginRespirator respirator;
-       private Builder parser;
-       private XSLTransform transform;
-       private I18n i18n;
-       private HashMap<String,Page> pages;
-       private ProjectManager projectManager;
-       private Project project;
-       private NodesManager nodesManager;
-       private BlockManager blockManager;
-               
-       public void runPlugin(PluginRespirator p) {
-               
+       private final Builder parser;
+       private final XSLTransform transform;
+       private final HashMap<String,Page> pages;
+       private final ProjectManager projectManager;
+       private final Project project;
+       private final NodesManager nodesManager;
+       private final BlockManager blockManager;
+       private final Page welcomePage;
+       
+       public Echo() throws Exception {
                try {
-                       this.respirator = p;
-                       
                        if(!BASE_DIR.exists())
                                BASE_DIR.mkdirs();
-                       
-                       I18n.setLanguage("en");

-                       parser = new Builder();
-                       
+                       try {
+                               I18n.setLanguage(I18n.DEFAULT_LANGUAGE);
+                       } catch(MissingResourceException e) {
+                       }
+
+                       this.parser = new Builder();
                        Document styleSheet = 
parser.build(Echo.class.getClassLoader().getResourceAsStream("/xml/edit.xsl"));

                        I18n.translateXML(styleSheet);
-                       transform = new XSLTransform(styleSheet);
+                       this.transform = new XSLTransform(styleSheet);

-                       projectManager = new ProjectManager(BASE_DIR, 
respirator.getNode().random);
+                       this.projectManager = new ProjectManager(this);
                        if(projectManager.countProjects() == 0)
                                projectManager.newProject("My Flog");
-                       
-                       setProject(projectManager.loadProject("001"));
+
+                       this.project = projectManager.loadProject("001");
+                       this.nodesManager = project.getNodesManager();
+                       this.blockManager = project.getBlockManager();
+                       transform.setParameter("baseDir", 
project.getProjectDir().getAbsolutePath() + "/");
+
+                       this.welcomePage = 
StaticPage.createFromContentFile("Welcome", "welcome.xml");
+                       this.pages = new HashMap<String, Page>();
+               } catch (Exception e) {
+                       System.out.println("Echo made a booo! " 
+e.getMessage());
+                       e.printStackTrace();
+                       throw e;
+               }
+       }
+               
+       public void runPlugin(PluginRespirator p) {
+               try {
+                       this.respirator = p;
                        String formPsw = 
respirator.getNode().clientCore.formPassword;
-                       
-                       
-                       pages = new HashMap<String,Page>();

-                       pages.put("plugins.echo.Echo", 
StaticPage.createFromContentFile("Welcome", "welcome.xml"));
+                       pages.put("plugins.echo.Echo", welcomePage);

                        Page nodePage = new NodePage(nodesManager, formPsw);
                        pages.put("newPost", nodePage);
@@ -106,16 +119,7 @@
        public void terminate() {
                // TODO
        }
-
-       private void setProject(Project p) {

-               this.project = p;
-               this.nodesManager = project.getNodesManager();
-               this.blockManager = project.getBlockManager();
-               transform.setParameter("baseDir", 
project.getProjectDir().getAbsolutePath() + "/");
-       
-       }
-       
        public String handleHTTPGet(HTTPRequest request) throws 
PluginHTTPException {
                if ("/plugins/plugins.echo.Echo".equals(request.getPath()))
                        throw new RedirectPluginHTTPException("", BASE_URL);
@@ -141,7 +145,18 @@

                }

-               throw new PluginHTTPException("Unable to handle the request!", 
BASE_URL);
+               try {
+                       welcomePage.handleHTTPRequest(request);
+                       return transform.transform(new 
Document(welcomePage.toXML())).get(0).toXML();
+               } catch (Exception e) {
+                       e.printStackTrace();
+                       return e.toString();
+               }
+//             String passwd = request.getParam("formPassword");
+//             if((passwd == null) || 
!passwd.equals(respirator.getNode().clientCore.formPassword))
+//                     throw new AccessDeniedPluginHTTPException("The 
formPassword hasn't been set!", BASE_URL);
+//             else
+//                     return handleHTTPPost(request);
        }

        public String handleHTTPPut(HTTPRequest request) throws 
PluginHTTPException {

Modified: trunk/apps/Echo/src/plugins/echo/ProjectManager.java
===================================================================
--- trunk/apps/Echo/src/plugins/echo/ProjectManager.java        2007-12-05 
09:53:11 UTC (rev 16299)
+++ trunk/apps/Echo/src/plugins/echo/ProjectManager.java        2007-12-05 
09:58:49 UTC (rev 16300)
@@ -2,7 +2,6 @@

 import freenet.crypt.RandomSource;
 import freenet.keys.InsertableClientSSK;
-import freenet.keys.FreenetURI;

 import java.util.HashMap;
 import java.util.Properties;
@@ -17,22 +16,18 @@
 *      This class provides methods to manage projects
 */
 public class ProjectManager {
-
-       private File baseDir;
        private HashMap<String,File> projects;
-       private RandomSource randomSource;
        private Project currentProject;
+       private Echo _e;

        /**
        *       Class constructor specifying the projects base dir and the 
random source used to generate the projects keys.
        */
-       public ProjectManager(File baseDir, RandomSource randomSource) {
-       
-               this.baseDir= baseDir;
-               this.randomSource = randomSource;
-               projects = new HashMap<String,File>();
+       public ProjectManager(Echo e) {
+               this._e = e;
+               this.projects = new HashMap<String,File>();

-               File[] files = baseDir.listFiles();
+               File[] files = Echo.BASE_DIR.listFiles();
                for(File f : files) {
                        if(f.isDirectory() && f.getName().matches("[0-9]{" + 
Echo.PROJECT_ID_LENGTH + "}"))
                                projects.put(f.getName(), f);
@@ -84,7 +79,7 @@
                                break;
                }

-               File projectDir = new File(baseDir, id);
+               File projectDir = new File(Echo.BASE_DIR, id);
                if(projectDir.mkdirs()) {

                        (new File(projectDir.getPath() + File.separator + 
"nodes")).mkdirs();
@@ -94,7 +89,7 @@
                        Properties conf = new Properties();
                        conf.setProperty("title", projectTitle);

-                       InsertableClientSSK key = 
InsertableClientSSK.createRandom(randomSource, projectTitle);
+                       InsertableClientSSK key = 
InsertableClientSSK.createRandom(_e.respirator.getNode().random, projectTitle);
                        conf.setProperty("insertURI", 
key.getInsertURI().toString());
                        conf.setProperty("requestURI", key.getURI().toString());



Reply via email to