WikiBase.java :  » Wiki-Engine » gwtwiki » org » jamwiki » Java Open Source

Java Open Source » Wiki Engine » gwtwiki 
gwtwiki » org » jamwiki » WikiBase.java
/**
 * Licensed under the GNU LESSER GENERAL PUBLIC LICENSE, version 2.1, dated February 1999.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the latest version of the GNU Lesser General
 * Public License as published by the Free Software Foundation;
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program (LICENSE.txt); if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 */
package org.jamwiki;

import java.util.Locale;

import org.jamwiki.model.WikiGroup;
import org.jamwiki.model.WikiUser;
import org.jamwiki.utils.WikiLogger;
import org.jamwiki.utils.WikiUtil;

/**
 * <code>WikiBase</code> is loaded as a singleton class and provides access
 * to all core wiki structures.  In addition this class provides utility methods
 * for resetting core structures including caches and permissions.
 *
 * @see org.jamwiki.DataHandler
 * @see org.jamwiki.SearchEngine
 */
public class WikiBase {

  /** Standard logger. */
  private static final WikiLogger logger = WikiLogger.getLogger(WikiBase.class.getName());
  /** The singleton instance of this class. */
  private static WikiBase instance = null;
  /** The data handler that looks after read/write operations. */
  private static DataHandler dataHandler = null;
  /** The search engine instance. */
//  private static SearchEngine searchEngine = null;

  /** Cache name for the cache of parsed topic content. */
  public static final String CACHE_PARSED_TOPIC_CONTENT = "org.jamwiki.WikiBase.CACHE_PARSED_TOPIC_CONTENT";
  /** Name of the default wiki */
  // FIXME - make this configurable
  public static final String DEFAULT_VWIKI = "en";
  /** Default group for registered users. */
  private static WikiGroup GROUP_REGISTERED_USER = null;
  /** Data stored using an external database */
  public static final String PERSISTENCE_EXTERNAL = "DATABASE";
  /** Data stored using an internal copy of the HSQL database */
  public static final String PERSISTENCE_INTERNAL = "INTERNAL";
  /** Root directory within the WAR distribution that contains the default topic pages. */
  public static final String SPECIAL_PAGE_DIR = "pages";
  /** Name of the default starting points topic. */
  public static final String SPECIAL_PAGE_STARTING_POINTS = "MainPage";
  /** Name of the default left menu topic. */
  public static final String SPECIAL_PAGE_LEFT_MENU = "LeftMenu";
  /** Name of the default footer topic. */
  public static final String SPECIAL_PAGE_BOTTOM_AREA = "BottomArea";
  /** Name of the default jamwiki.css topic. */
  public static final String SPECIAL_PAGE_STYLESHEET = "StyleSheet";
  /** Allow file uploads of any file type. */
  public static final int UPLOAD_ALL = 0;
  /** Use a blacklist to determine what file types can be uploaded. */
  public static final int UPLOAD_BLACKLIST = 2;
  /** Disable all file uploads. */
  public static final int UPLOAD_NONE = 1;
  /** Use a whitelist to determine what file types can be uploaded. */
  public static final int UPLOAD_WHITELIST = 3;

  static {
    try {
      WikiBase.instance = new WikiBase();
    } catch (Exception e) {
      logger.severe("Failure while initializing WikiBase", e);
    }
  }

  /**
   * Creates an instance of <code>WikiBase</code>, initializing the default
   * data handler instance and search engine instance.
   *
   * @throws Exception If the instance cannot be instantiated.
   */
  private WikiBase() throws Exception {
    this.reload();
  }

  /**
   * Get an instance of the current data handler.
   *
   * @return The current data handler instance, or <code>null</code>
   *  if the handler has not yet been initialized.
   */
  public static DataHandler getDataHandler() {
    return WikiBase.dataHandler;
  }
  
  /**
  *
  */
 public static WikiGroup getGroupRegisteredUser() {
   if (WikiUtil.isFirstUse() || WikiUtil.isUpgrade()) {
     throw new IllegalStateException("Cannot retrieve group information prior to completing setup/upgrade");
   }
   if (WikiBase.GROUP_REGISTERED_USER == null) {
     try {
       WikiBase.GROUP_REGISTERED_USER = WikiBase.getDataHandler().lookupWikiGroup(WikiGroup.GROUP_REGISTERED_USER);
     } catch (Exception e) {
       throw new RuntimeException("Unable to retrieve registered users group", e);
     }
   }
   return WikiBase.GROUP_REGISTERED_USER;
 }
 
  /**
   * Reload the data handler, user handler, and other basic wiki
   * data structures.
   */
  public static void reload() throws Exception {
    WikiBase.dataHandler = WikiUtil.dataHandlerInstance();
//    WikiBase.searchEngine = WikiUtil.searchEngineInstance();
  }

  /**
   * Reset the WikiBase object, re-initializing the data handler and
   * other values.
   *
   * @param locale The locale to be used if any system pages need to be set up
   *  as a part of the initialization process.
   * @param user A sysadmin user to be used in case any system pages need to
   *  be created as a part of the initialization process.
   * @param username The admin user's username (login).
   * @param encryptedPassword The admin user's encrypted password.  This value
   *  is only required when creating a new admin user.
   * @throws Exception Thrown if an error occurs during re-initialization.
   */
  public static void reset(Locale locale, WikiUser user, String username, String encryptedPassword) throws Exception {
    WikiBase.instance = new WikiBase();
//    WikiCache.initialize();
    WikiBase.dataHandler.setup(locale, user, username, encryptedPassword);
  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.