import Forum.DBaseConnection; import com.ecyrd.jspwiki.*; import com.ecyrd.jspwiki.plugin.PluginException; import com.ecyrd.jspwiki.plugin.WikiPlugin; import javax.servlet.http.HttpServletRequest; import java.io.*; import java.net.MalformedURLException; import java.net.URL; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.*; import org.apache.log4j.Logger; public class Forum implements WikiPlugin { private static Logger log = Logger.getLogger( Forum.class ); public String execute(WikiContext context, Map ParameterMap) throws PluginException { String result = ""; WikiEngine engine = context.getEngine(); String topic_title = ""; if(ParameterMap != null || ParameterMap.size() > 0) { Iterator parmIter = ParameterMap.keySet().iterator(); if(((String)parmIter.next()).equalsIgnoreCase("title")) topic_title = (String)ParameterMap.get("title"); else return errorMsg(); } else { return errorMsg(); } int topic_index = getTopicIndex(topic_title); /* topic_page is which page of the current topic we are on */ int topic_page = 0; HttpServletRequest request = context.getHttpRequest(); if(request.getParameter("topic_page") != null){ topic_page = Integer.parseInt(request.getParameter("topic_page")); } result = result + ""; result = result + getPage(engine.getBaseURL() + "templates/" + context.getTemplate() + "/Forum/Topic_View.jsp?topic_index=" + topic_index + "&topic_page=" + topic_page); return result; } public int getTopicIndex(String topic_title) { ResultSet rs = null; PreparedStatement ps = null; try{ ps = DBaseConnection.getPreparedStatement("SELECT topic.index FROM topic WHERE topic.title = ?"); ps.setString(1, topic_title); rs = ps.executeQuery(); if(!rs.next()) { ps = null; rs = null; ps = DBaseConnection.getPreparedStatement("INSERT INTO topic (topic.title, topic.category_index) VALUES (?, -1)"); ps.setString(1, topic_title); ps.executeUpdate(); ps = null; ps = DBaseConnection.getPreparedStatement("SELECT topic.index FROM topic WHERE topic.title = ?"); ps.setString(1, topic_title); rs = ps.executeQuery(); rs.next(); } return rs.getInt("topic.index"); }catch(Exception e){ log.error("Error in getTopicIndex: " + e); } return -1; } private String getPage(String pageURL) throws PluginException { String result = ""; String line = ""; try { URL url = new URL(pageURL); InputStreamReader input = new InputStreamReader(url.openStream()); BufferedReader br = new BufferedReader(input); for(line = br.readLine(); line != null; line = br.readLine()) result = result + line + "\r\n"; input.close(); } catch(MalformedURLException e) { log.error("getPage MalformedURLException: " + e); } catch(IOException e) { log.error("getPage IOException: " + e); } return result; } private String errorMsg() { return "

Useage: [{Forum title=<your_title>}]

"; } }