From: <jbo...@li...> - 2005-08-16 11:28:51
|
Author: szimano Date: 2005-08-16 07:28:17 -0400 (Tue, 16 Aug 2005) New Revision: 864 Modified: trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/WikiEngine.java trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/WikiPage.java trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/WikiPlugin.java trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/WikiPortlet.java trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/WikiType.java trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/WikiTypeHandler.java trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/plugins/HTMLTranslator.java Log: plugins... Modified: trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/WikiEngine.java =================================================================== --- trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/WikiEngine.java 2005-08-15 22:52:40 UTC (rev 863) +++ trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/WikiEngine.java 2005-08-16 11:28:17 UTC (rev 864) @@ -6,7 +6,7 @@ * See terms of license at gnu.org. * * * *************************************************/ - package org.jboss.wiki; +package org.jboss.wiki; import java.util.Date; import java.util.HashMap; @@ -18,243 +18,280 @@ import org.xml.sax.SAXException; /** - * + * * @author <a href="mailto:ds...@jb...">Damon Sicore</a> * @author <a href="mailto:tom...@jb...">Tomasz Szymanski</a> * @version $Id$ - * - * getLink - gets a link to a given page - * getEditLink - same but link to edit that page - * save - saves page with given attributes - * getContent - retrieves the content from a wiki page and returns it in the type specified by 'type' - * Probably need to have some sort of WikiSession per request with an associated WikiContext, but maybe not--don't want to duplicate PortletSession + * + * getLink - gets a link to a given page getEditLink - same but link to edit + * that page save - saves page with given attributes getContent - retrieves the + * content from a wiki page and returns it in the type specified by 'type' + * Probably need to have some sort of WikiSession per request with an associated + * WikiContext, but maybe not--don't want to duplicate PortletSession */ public class WikiEngine { -/** - * <p>Represents ...</p> - * - */ - private String urlBase; - -/** - * <p>Represents ...</p> - * - */ - private Map wikiTypePlugins; + /** + * <p> + * Represents ... + * </p> + * + */ + private String urlBase; -/** - * <p></p> - * - */ - private HashMap<String, WikiPage> pages; - - private HashMap<String, WikiType> wikiTypes; - - private MediaDataSource mediaDataSource; + /** + * <p> + * Represents ... + * </p> + * + */ + private Map wikiTypePlugins; -/** - * <p>Does ...</p> - * - * - * @param pageName - * @return - * @param wikiContext - */ - public String get(String pageName, WikiContext wikiContext) { - // your code here - return null; - } + /** + * <p> + * </p> + * + */ + private HashMap<String, WikiPage> pages; -/** - * <p>Does ...</p> - * - * - * @param pageName - * @param content - * @param wikiContext - * @return - */ - public boolean save(String pageName, String content, WikiContext wikiContext) { - // your code here - return false; - } + private HashMap<String, WikiType> wikiTypes; -/** - * <p>Does ...</p> - * - * - * @param pageName - * @param type - * @return - */ - public String getContent(String pageName, String type) { - // your code here - return null; - } + private MediaDataSource mediaDataSource; -/** - * <p>Does ...</p> - * - * - * @param pageName - * @return - * @param wikiContext - */ - public WikiPage getByName(String pageName, WikiContext wikiContext) { - - // TODO: make user authentication with wikiContext - - WikiPage ret = null; - - if (pages.containsKey(pageName)) { - ret = pages.get(pageName); - } - else { - ret = mediaDataSource.getPage(pageName); - - pages.put(pageName, ret); - } - - return wikiContext.process(ret); - } + /** + * <p> + * Does ... + * </p> + * + * + * @param pageName + * @return + * @param wikiContext + */ + public String get(String pageName, WikiContext wikiContext) { + // your code here + return null; + } -/** - * <p>Does ...</p> - * - * - * @return - */ - public void init() { - mediaDataSource = new FileDataSource(); - pages = new HashMap<String, WikiPage>(); - wikiTypes = new HashMap<String, WikiType>(); - loadWikiTypes(); - } + /** + * <p> + * Does ... + * </p> + * + * + * @param pageName + * @param content + * @param wikiContext + * @return + */ + public boolean save(String pageName, String content, WikiContext wikiContext) { + // your code here + return false; + } -/** - * <p>Parses configuration file to get WikiTypes</p> - * - * - * @return - */ - protected void loadWikiTypes() { - try { - SAXParser sp = (SAXParserFactory.newInstance()).newSAXParser(); - sp.parse(WikiTypeHandler.class.getResourceAsStream("WikiTypes.xml"), new WikiTypeHandler(this)); - } - catch (Exception se) { - System.err.println("Error while parsing WikiType configuration: "+se); - } - } + /** + * <p> + * Does ... + * </p> + * + * + * @param pageName + * @param type + * @return + */ + public String getContent(String pageName, String type) { + // your code here + return null; + } -/** - * <p>Does ...</p> - * - * - * @return - */ - protected void loadWikiTypePlugins() { - // your code here - //return null; - } + /** + * <p> + * Does ... + * </p> + * + * + * @param pageName + * @return + * @param wikiContext + */ + public WikiPage getByName(String pageName, WikiContext wikiContext) { -/** - * <p>Does ...</p> - * - * - * @return - * @param pageName - * @param wikiContext - */ - public void lock(String pageName, WikiContext wikiContext) { - // your code here - //return null; - } + // TODO: make user authentication with wikiContext -/** - * <p>Does ...</p> - * - * - * @return - * @param pageName - * @param wikiContext - */ - public void unlock(String pageName, WikiContext wikiContext) { - // your code here - //return null; - } + WikiPage ret = null; -/** - * <p>Does ...</p> - * - * - * @return - * @param path - * @param wikiContext - */ - public void getByPath(String path, WikiContext wikiContext) { - // your code here - //return null; - } + if (pages.containsKey(pageName)) { + ret = pages.get(pageName); + } else { + ret = mediaDataSource.getPage(pageName); -/** - * <p>Does ...</p> - * - * - * @return - * @param pageName - * @param wikiContext - */ - public void setProperty(String pageName, WikiContext wikiContext) { - // your code here - //return null; - } + pages.put(pageName, ret); + } -/** - * <p>Does ...</p> - * - * - * @return - * @param wikiType - * @param userCredentials - */ - public void getWikiContext(String wikiType, Credentials userCredentials) { - // your code here - //return null; - } - - public void addWikiType(String name, WikiType wikiType) { - System.out.println("[WIKIENGINE]: Added WikiType: "+name+" Class: "+wikiType); - wikiTypes.put(name, wikiType); - } - - public WikiType getWikiType(String wikiTypeName) { - System.out.println("[WIKITYPE REQUEST]: "+wikiTypes.get(wikiTypeName)); - return wikiTypes.get(wikiTypeName); - } - /** - * <p></p> - * - */ - public WikiEngine() { - init(); - } - - - - public static void main(String[] args) { + if (wikiContext != null) { + return wikiContext.process(ret); + } else { + return ret; + } + } + + /** + * <p> + * Does ... + * </p> + * + * + * @return + */ + public void init() { + mediaDataSource = new FileDataSource(); + pages = new HashMap<String, WikiPage>(); + wikiTypes = new HashMap<String, WikiType>(); + loadWikiTypes(); + } + + /** + * <p> + * Parses configuration file to get WikiTypes + * </p> + * + * + * @return + */ + protected void loadWikiTypes() { + try { + SAXParser sp = (SAXParserFactory.newInstance()).newSAXParser(); + sp.parse( + WikiTypeHandler.class.getResourceAsStream("WikiTypes.xml"), + new WikiTypeHandler(this)); + } catch (Exception se) { + System.err.println("Error while parsing WikiType configuration: " + + se); + } + } + + /** + * <p> + * Does ... + * </p> + * + * + * @return + */ + protected void loadWikiTypePlugins() { + // your code here + // return null; + } + + /** + * <p> + * Does ... + * </p> + * + * + * @return + * @param pageName + * @param wikiContext + */ + public void lock(String pageName, WikiContext wikiContext) { + // your code here + // return null; + } + + /** + * <p> + * Does ... + * </p> + * + * + * @return + * @param pageName + * @param wikiContext + */ + public void unlock(String pageName, WikiContext wikiContext) { + // your code here + // return null; + } + + /** + * <p> + * Does ... + * </p> + * + * + * @return + * @param path + * @param wikiContext + */ + public void getByPath(String path, WikiContext wikiContext) { + // your code here + // return null; + } + + /** + * <p> + * Does ... + * </p> + * + * + * @return + * @param pageName + * @param wikiContext + */ + public void setProperty(String pageName, WikiContext wikiContext) { + // your code here + // return null; + } + + /** + * <p> + * Does ... + * </p> + * + * + * @return + * @param wikiType + * @param userCredentials + */ + public void getWikiContext(String wikiType, Credentials userCredentials) { + // your code here + // return null; + } + + public void addWikiType(String name, WikiType wikiType) { + System.out.println("[WIKIENGINE]: Added WikiType: " + name + " Class: " + + wikiType); + wikiTypes.put(name, wikiType); + } + + public WikiType getWikiType(String wikiTypeName) { + System.out + .println("[WIKITYPE REQUEST]: " + wikiTypes.get(wikiTypeName)); + return wikiTypes.get(wikiTypeName); + } + + /** + * <p> + * </p> + * + */ + public WikiEngine() { + init(); + } + + public static void main(String[] args) { WikiEngine we = new WikiEngine(); - + WikiType wt = we.getWikiType("HTML"); - + WikiContext wc = new WikiContext(null, wt); - - WikiPage wp = new WikiPage("name", new Credentials("tomek"), "[content|ble sme]", 1, new Date()); - + + WikiPage wp = new WikiPage("name", new Credentials("tomek"), + "[content|ble sme]", 1, new Date()); + wp = wc.process(wp); - + System.out.println(wp.getContent()); } - - } + +} Modified: trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/WikiPage.java =================================================================== --- trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/WikiPage.java 2005-08-15 22:52:40 UTC (rev 863) +++ trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/WikiPage.java 2005-08-16 11:28:17 UTC (rev 864) @@ -12,6 +12,8 @@ import java.util.Date; import java.util.HashMap; +import org.jboss.portal.core.model.User; + /** * <p> * </p> @@ -30,6 +32,9 @@ */ private static final long serialVersionUID = 1L; + private Date lockTime = null; + + private String lockUser; /** * <p> * Represents ... @@ -310,4 +315,15 @@ getPageContent(), getLastVersion(), getEditDate()); return clonedPage; } + + public Date lock(User user) { + Date lockTime = null; + + //if + return lockTime; + } + + public String getLockUser() { + return lockUser; + } } Modified: trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/WikiPlugin.java =================================================================== --- trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/WikiPlugin.java 2005-08-15 22:52:40 UTC (rev 863) +++ trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/WikiPlugin.java 2005-08-16 11:28:17 UTC (rev 864) @@ -18,7 +18,9 @@ * @author <a href="mailto:tom...@jb...">Tomasz Szymanski</a> * @version $Id$ */ -public interface WikiPlugin { +public abstract class WikiPlugin { + + protected WikiEngine wikiEngine; /** * <p></p> * @@ -31,7 +33,7 @@ * @return * @param content */ - public WikiPage process(WikiPage wikiPage); + public abstract WikiPage process(WikiPage wikiPage); /** * <p>Does ...</p> @@ -39,10 +41,14 @@ * * @return */ - public void next(); + public abstract void next(); /** * <p></p> * */ + + public void setWikiEngine(WikiEngine wikiEngine) { + this.wikiEngine = wikiEngine; + } } Modified: trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/WikiPortlet.java =================================================================== --- trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/WikiPortlet.java 2005-08-15 22:52:40 UTC (rev 863) +++ trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/WikiPortlet.java 2005-08-16 11:28:17 UTC (rev 864) @@ -94,29 +94,40 @@ String wikiPage = defaultPage; + WikiPage pageToShow = null; + + WikiContext wikiContext = null ; + + if (rReq.getParameter("page") != null) { + wikiPage = rReq.getParameter("page"); + } + if ((rReq.getParameter("action") != null) && (rReq.getParameter("action").equals("Edit"))) { page = "Edit.jsp"; + pageToShow = wikiEngine.getByName(wikiPage, wikiContext); + + Date dateLock = pageToShow.lock(rReq.getUser()); + + if (dateLock != null) { + + } + } else { page = "Wiki.jsp"; + wikiContext = new WikiContext(rReq.getUser(), wikiEngine.getWikiType("HTML")); + pageToShow = wikiEngine.getByName(wikiPage, wikiContext); + } - if (rReq.getParameter("page") != null) { - wikiPage = rReq.getParameter("page"); - } - - WikiContext wikiContext = new WikiContext(rReq.getUser(), wikiEngine.getWikiType("HTML")); - PortletURL wikiURL = rRes.createActionURL(); rReq.setAttribute("actionURL", wikiURL.toString()); rReq.setAttribute("wikiName", "<img src=\"/file-access/default/members/jbosswiki/images/JBossWikiLogoMedium.png\" width=\"100\" />"); - WikiPage pageToShow = wikiEngine.getByName(wikiPage, wikiContext); - if (pageToShow == null) { - // TODO Make this show, that page isn't there yet + // TODO MOVE IT UP !!! wikiPage = defaultPage; Modified: trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/WikiType.java =================================================================== --- trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/WikiType.java 2005-08-15 22:52:40 UTC (rev 863) +++ trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/WikiType.java 2005-08-16 11:28:17 UTC (rev 864) @@ -26,6 +26,8 @@ public class WikiType { protected String name; + + protected WikiEngine wikiEngine; /** * <p> @@ -98,6 +100,8 @@ if (plugin != null) { plugins.put(pluginName, plugin); + + plugin.setWikiEngine(wikiEngine); System.out.println("[WikiType:" + name + "]Plugin added: " + pluginName + " class: " + pluginClass); @@ -142,4 +146,8 @@ System.out.print("Setting new WikiType name: " + name); this.name = name; } + + public void setWikiEngine(WikiEngine wikiEngine) { + this.wikiEngine = wikiEngine; + } } Modified: trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/WikiTypeHandler.java =================================================================== --- trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/WikiTypeHandler.java 2005-08-15 22:52:40 UTC (rev 863) +++ trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/WikiTypeHandler.java 2005-08-16 11:28:17 UTC (rev 864) @@ -57,6 +57,8 @@ } else if ((qName.equals("wikiType")) && (wikiType != null)) { // add WikiType + wikiType.setWikiEngine(wikiEngine); + wikiEngine.addWikiType(wikiType.getName(), wikiType); wikiType = null; wikiTypeName = null; Modified: trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/plugins/HTMLTranslator.java =================================================================== --- trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/plugins/HTMLTranslator.java 2005-08-15 22:52:40 UTC (rev 863) +++ trunk/forge/portal-extensions/forge-wiki/src/java/org/jboss/wiki/plugins/HTMLTranslator.java 2005-08-16 11:28:17 UTC (rev 864) @@ -13,10 +13,11 @@ import java.util.StringTokenizer; //import org.jboss.wiki.Credentials; +import org.jboss.wiki.WikiEngine; import org.jboss.wiki.WikiPage; import org.jboss.wiki.WikiPlugin; -public class HTMLTranslator implements WikiPlugin { +public class HTMLTranslator extends WikiPlugin { private Pattern myPattern; |