[Yanel-commits] rev 20318 - in public/yanel/trunk/src: contributions/resources/wiki/src/java/org/wyona/yanel/impl/resources core/java/org/wyona/yanel/core/api/attributes core/java/org/wyona/yanel/servlet

simon at wyona.com simon at wyona.com
Fri Nov 24 17:39:05 CET 2006


Author: simon
Date: 2006-11-24 17:39:03 +0100 (Fri, 24 Nov 2006)
New Revision: 20318

Modified:
   public/yanel/trunk/src/contributions/resources/wiki/src/java/org/wyona/yanel/impl/resources/WikiResource.java
   public/yanel/trunk/src/core/java/org/wyona/yanel/core/api/attributes/CreatableV2.java
   public/yanel/trunk/src/core/java/org/wyona/yanel/servlet/CreateUsecaseHelper.java
Log:
improved creator a little bit ;)

Modified: public/yanel/trunk/src/contributions/resources/wiki/src/java/org/wyona/yanel/impl/resources/WikiResource.java
===================================================================
--- public/yanel/trunk/src/contributions/resources/wiki/src/java/org/wyona/yanel/impl/resources/WikiResource.java	2006-11-24 16:37:11 UTC (rev 20317)
+++ public/yanel/trunk/src/contributions/resources/wiki/src/java/org/wyona/yanel/impl/resources/WikiResource.java	2006-11-24 16:39:03 UTC (rev 20318)
@@ -16,9 +16,12 @@
 
 package org.wyona.yanel.impl.resources;
 
+import java.io.BufferedWriter;
 import java.io.File;
 import java.io.InputStream;
 import java.io.OutputStream;
+import java.io.Writer;
+import java.io.PrintWriter;
 import java.util.HashMap;
 
 import javax.servlet.http.HttpServletRequest;
@@ -66,6 +69,7 @@
     public WikiResource() {
         dbf = DocumentBuilderFactory.newInstance();
         dbf.setNamespaceAware(true);
+        properties.put("title", "");
     }
 
     /**
@@ -184,6 +188,43 @@
         return null;
     }
     
+    /**
+     * @return the empty wiki resource as String 
+     */
+    private String getEmptyWikiXml() {
+        StringBuffer emptyWikiXml = new StringBuffer();
+        emptyWikiXml.append("<?xml version=\"1.0\"?>");
+        emptyWikiXml.append("\n");
+        emptyWikiXml.append("<wiki xmlns=\"http://www.wyona.org/neutron/1.0\">");
+        emptyWikiXml.append("\n");
+        emptyWikiXml.append("</wiki>");
+        
+        return emptyWikiXml.toString();
+    }
+    
+    /**
+     * @param newWikiPage
+     * @return the empty wiki introspection as String
+     */
+    private String getEmptyWikiIntrospection(String newWikiPage) {
+        StringBuffer emptyWikiPageContent = new StringBuffer();
+        emptyWikiPageContent.append("<?xml version=\"1.0\"?>");
+        emptyWikiPageContent.append("\n");
+        emptyWikiPageContent.append("<introspection xmlns=\"http://www.wyona.org/neutron/1.0\">");
+        emptyWikiPageContent.append("\n\t");
+        emptyWikiPageContent.append("<edit mime-type=\"application/xml\" name=\"" + newWikiPage + "\">");
+        emptyWikiPageContent.append("\n\t\t");
+        emptyWikiPageContent.append("<checkout url=\"/wiki/" + newWikiPage + ".html\" method=\"GET\"/>");
+        emptyWikiPageContent.append("\n\t\t");
+        emptyWikiPageContent.append("<checkin url=\"/wiki/" + newWikiPage + ".html?yanel.resource.usecase=checkin\" method=\"PUT\"/>");
+        emptyWikiPageContent.append("\n\t");
+        emptyWikiPageContent.append("</edit>");
+        emptyWikiPageContent.append("\n");
+        emptyWikiPageContent.append("</introspection>");
+        
+        return emptyWikiPageContent.toString();
+    }    
+    
     protected RepositoryFactory getRepositoryFactory() {
         return yanel.getRepositoryFactory("DefaultRepositoryFactory");
     }
@@ -207,8 +248,64 @@
         //TODO not implemented yet
         return null;
     }
-    
-    public void create(String name){
+  
+    public void create(HttpServletRequest request ,String createName){
         log.warn("TODO: Not implemented yet!");
+        //yanel rti TODO does not work yet
+        //writeRti(new Path(request.getServletPath()), createName, "rtd/wiki.rtd");
+        
+        
+        //content
+        writeContent(new Path(request.getServletPath()), createName, this.getEmptyWikiXml());
+
+        //introspection
+        //writeToRepo(newpath,content);
     }
+ 
+    public void writeContent(Path path,String createName,  String content){
+        
+        try{
+            
+        RepoPath rp = new org.wyona.yarep.util.YarepUtil().getRepositoryPath(new org.wyona.yarep.core.Path(path.toString()+"/"+createName), new RepositoryFactory());
+        repository = rp.getRepo();
+
+        // Write content to repository
+        System.out.println("\nWriting content to repository " + repository.getName() +"with content: "+content+"to path: "+path.toString()+"/"+createName);
+        Writer writer = repository.getWriter(rp.getPath());
+        writer.write(content);
+        writer.close();
+        }
+        catch (Exception e) {
+            log.warn(e);
+        }
+    }
+
+    public void writeRti(Path path,String createName,  String content){
+        
+        try{
+            RepoPath rpRTI = new org.wyona.yarep.util.YarepUtil().getRepositoryPath(new org.wyona.yarep.core.Path(path.toString()+"/"+createName), yanel.getRepositoryFactory("RTIRepositoryFactory"));
+            
+            repository = rpRTI.getRepo();
+
+            // Write content to repository
+            System.out.println("\nWriting content to repository " + repository.getName() +"with content: "+content+"to path: "+path.toString()+"/"+createName);
+            Writer writer = repository.getWriter(rpRTI.getPath());
+            writer.write(content);
+            writer.close();
+            
+            //Writer br = rpRTI.getRepo().getWriter(new org.wyona.yarep.core.Path(new Path(rpRTI.getPath().toString()).getRTIPath().toString()));
+            
+            //PrintWriter br = new PrintWriter(rpRTI.getRepo().getWriter(new org.wyona.yarep.core.Path(new Path(rpRTI.getPath().toString()).getRTIPath().toString())));
+
+            
+            // Write the rti file
+            //System.out.println("\nWriting RTI to repository " + repository.getName() +"with content: "+content+"to path: "+path.toString()+"/"+createName);
+            //br.write(content);
+            //br.close();
+        }
+        catch (Exception e) {
+            log.error(e);
+        }
+    }
+            
 }

Modified: public/yanel/trunk/src/core/java/org/wyona/yanel/core/api/attributes/CreatableV2.java
===================================================================
--- public/yanel/trunk/src/core/java/org/wyona/yanel/core/api/attributes/CreatableV2.java	2006-11-24 16:37:11 UTC (rev 20317)
+++ public/yanel/trunk/src/core/java/org/wyona/yanel/core/api/attributes/CreatableV2.java	2006-11-24 16:39:03 UTC (rev 20318)
@@ -16,6 +16,9 @@
 
 package org.wyona.yanel.core.api.attributes;
 
+import javax.servlet.http.HttpServletRequest;
+
+import org.wyona.yanel.core.Path;
 import org.wyona.yanel.core.api.attributes.CreatableV1;
 
 /**
@@ -32,5 +35,5 @@
     /**
      * creates the resource
      */
-    public void create(String path);
+    public void create(HttpServletRequest request, String createName);
 }

Modified: public/yanel/trunk/src/core/java/org/wyona/yanel/servlet/CreateUsecaseHelper.java
===================================================================
--- public/yanel/trunk/src/core/java/org/wyona/yanel/servlet/CreateUsecaseHelper.java	2006-11-24 16:37:11 UTC (rev 20317)
+++ public/yanel/trunk/src/core/java/org/wyona/yanel/servlet/CreateUsecaseHelper.java	2006-11-24 16:39:03 UTC (rev 20318)
@@ -33,8 +33,9 @@
 import org.wyona.yanel.core.api.attributes.ViewableV2;
 import org.wyona.yanel.core.api.attributes.CreatableV2;
 import org.wyona.yanel.core.util.ResourceAttributeHelper;
-import org.wyona.yarep.core.Path;
+import org.wyona.yanel.core.Path;
 
+
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
@@ -43,7 +44,7 @@
  */
 public class CreateUsecaseHelper {
 
-    private static Logger log = Logger.getLogger("test");
+    private static Logger log = Logger.getLogger(CreateUsecaseHelper.class);
 
     /**
      *
@@ -52,13 +53,19 @@
 
         String createName = request.getParameter("create.name");
         String resourceType = request.getParameter("resource.type");
+        String create = request.getParameter("create");
 
         if (resourceType == null) {
             PrintWriter w = response.getWriter();
             w.print(resourcesTypeSelectScreen(createName));
         } else {
-            PrintWriter w = response.getWriter();
-            w.print(createResourceScreen(createName, resourceType));
+            if(create == null){
+                PrintWriter w = response.getWriter();
+                w.print(createResourceScreen(createName, resourceType));
+            } else{
+                PrintWriter w = response.getWriter();
+                w.print(doCreate(resourceType, request, createName));
+            }
         }
         return response;
 
@@ -278,5 +285,55 @@
 
         return resourcesCreateScreen;
     }
+    
+    public String doCreate(String resourceType, HttpServletRequest request, String createName ) {
+        String responseAfterCreationScreen = null;
+        ResourceTypeRegistry rtr = new ResourceTypeRegistry();
+        String[] PropertyNames = null;
+        
+        try {
+            Resource resource = rtr.newResource(resourceType);
+            if (resource != null) {
+                if (ResourceAttributeHelper.hasAttributeImplemented(resource, "Creatable", "2")) {
+                    PropertyNames = ((CreatableV2) resource).getPropertyNames();
+                    
 
+                        ((CreatableV2) resource).create(request, createName);
+                        
+                        //response after creation, better would be a redirect to the fresh created resource
+                        StringBuffer form = new StringBuffer();
+                        form.append("<?xml version=\"1.0\"?>");
+                        form.append("<html xmlns=\"http://www.w3.org/1999/xhtml\">");
+                        form.append("<body>");
+                        form.append("creation successfull");
+                        form.append("</body>");
+                        responseAfterCreationScreen = form.toString();
+                    }else{
+                        //response after creation failed
+                        StringBuffer form = new StringBuffer();
+                        form.append("<?xml version=\"1.0\"?>");
+                        form.append("<html xmlns=\"http://www.w3.org/1999/xhtml\">");
+                        form.append("<body>");
+                        form.append("creation NOT successfull!");
+                        form.append("</body>");
+                        responseAfterCreationScreen = form.toString();
+                    }
+                return responseAfterCreationScreen;
+                }
+
+            }
+         catch (Exception e) {
+            log.error(e.getMessage(), e);
+            String message = e.toString();
+            log.error(e.getMessage(), e);
+            // Element exceptionElement = (Element)
+            // rootElement.appendChild(doc.createElement("exception"));
+            // exceptionElement.appendChild(doc.createTextNode(message));
+            // setYanelOutput(response, doc);
+            // response.setStatus(javax.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+            return message;
+        }
+        return responseAfterCreationScreen;
+    }
+
 }




More information about the Yanel-commits mailing list