001: /*
002: Very Quick Wiki - WikiWikiWeb clone
003: Copyright (C) 2001-2002 Gareth Cronin
004:
005: This program is free software; you can redistribute it and/or modify
006: it under the terms of the latest version of the GNU Lesser General
007: Public License as published by the Free Software Foundation;
008:
009: This program is distributed in the hope that it will be useful,
010: but WITHOUT ANY WARRANTY; without even the implied warranty of
011: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
012: GNU Lesser General Public License for more details.
013:
014: You should have received a copy of the GNU Lesser General Public License
015: along with this program (gpl.txt); if not, write to the Free Software
016: Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
017: */
018: package vqwiki.db;
019:
020: import java.sql.Connection;
021: import java.sql.PreparedStatement;
022: import java.sql.ResultSet;
023: import java.util.ArrayList;
024: import java.util.Collection;
025:
026: import vqwiki.AbstractSearchEngine;
027: import vqwiki.WikiBase;
028: import vqwiki.servlets.WikiServlet;
029:
030: /**
031: * Search-Engine for the database.
032: *
033: * @author $Author: studer $
034: * @version $Revision: 607 $
035: *
036: * Additions for Lucene by Tobias Schulz-Hess (sourceforge@schulz-hess.de)
037: */
038: public class DatabaseSearchEngine extends AbstractSearchEngine {
039:
040: /** SQL-Statement to get a name */
041: protected static final String STATEMENT_ALL_NAMES = "SELECT name FROM Topic WHERE virtualwiki = ? ORDER BY name";
042:
043: /** An instance to myself (Singleton pattern) */
044: protected static DatabaseSearchEngine instance;
045:
046: /**
047: * Creates a new DatabaseSearchEngine object.
048: *
049: * @throws Exception DOCUMENT ME!
050: */
051: private DatabaseSearchEngine() throws Exception {
052: }
053:
054: /**
055: * Get the one and only existing instance of this class
056: *
057: * @return An Instance to this class
058: *
059: * @throws Exception If something really goes wrong
060: */
061: public static synchronized DatabaseSearchEngine getInstance()
062: throws Exception {
063: if (instance == null) {
064: instance = new DatabaseSearchEngine();
065: instance.initSearchEngine(WikiServlet.getCurrentContext());
066: instance.refreshIndex();
067: }
068: return instance;
069: }
070:
071: /**
072: * Get a collection of all topic names.
073: *
074: * @param virtualWiki The virtual wiki, for all topic names
075: *
076: * @return A Collection of String, containing all topic names for this virtual wiki
077: *
078: * @throws Exception If something goes wrong
079: */
080: public Collection getAllTopicNames(String virtualWiki)
081: throws Exception {
082: Collection all = new ArrayList();
083: if (virtualWiki == null || virtualWiki.length() == 0) {
084: virtualWiki = WikiBase.DEFAULT_VWIKI;
085: }
086: Connection conn = null;
087: try {
088: conn = DatabaseConnection.getConnection();
089: PreparedStatement statement = conn
090: .prepareStatement(STATEMENT_ALL_NAMES);
091: statement.setString(1, virtualWiki);
092: ResultSet rs = statement.executeQuery();
093: for (; rs.next();) {
094: all.add(rs.getString("name"));
095: }
096: rs.close();
097: statement.close();
098: } finally {
099: DatabaseConnection.closeConnection(conn);
100: }
101: return all;
102: }
103:
104: /**
105: * Get the filename of a topic file.
106: * @see vqwiki.AbstractSearchEngine#getFilename(java.lang.String, java.lang.String)
107: */
108: protected String getFilename(String currentWiki, String topic) {
109: return null;
110: }
111:
112: }
|