/* * Copyright (c) JForum Team * All rights reserved. * * Redistribution and use in source and binary forms, * with or without modification, are permitted provided * that the following conditions are met: * * 1) Redistributions of source code must retain the above * copyright notice, this list of conditions and the * following disclaimer. * 2) Redistributions in binary form must reproduce the * above copyright notice, this list of conditions and * the following disclaimer in the documentation and/or * other materials provided with the distribution. * 3) Neither the name of "Rafael Steil" nor * the names of its contributors may be used to endorse * or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT * HOLDERS AND CONTRIBUTORS "AS IS" AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE * * This file creation date: Mar 3, 2003 / 1:37:05 PM * The JForum Project * http://www.jforum.net */ package net.jforum.dao; /** * The class that every driver class must implement. * JForum implementation provides a simple and extremely * configurable way to use diferent database engines without * any modification to the core source code. * <br> * For example, if you want to use the Database "XYZ" as * backend, all you need to do is to implement <code>DataAccessDriver</code>, * all *Model classes and a specific file with the SQL queries. * <br> * The default implementation was written to support MySQL, so if you want a base code to * analise, look at <code>net.jforum.drivers.generic</code> package. * * @author Rafael Steil * @version $Id: DataAccessDriver.java,v 1.20 2007/07/28 20:07:18 rafaelsteil Exp $ */ public abstract class DataAccessDriver { private static DataAccessDriver driver; protected DataAccessDriver() {} /** * Starts the engine. * This method should be called when the system * is starting. * * @param implementation The dao.driver implementation */ public static void init(DataAccessDriver implementation) { driver = implementation; } /** * Gets a driver implementation instance. * You MUST use this method when you want a instance * of a valid <code>DataAccessDriver</code>. Never access * the driver implementation directly. * * @return <code>DataAccessDriver</code> instance */ public static DataAccessDriver getInstance() { return driver; } /** * Gets a {@link net.jforum.dao.ForumDAO} instance. * * @return <code>net.jforum.model.ForumModel</code> instance */ public abstract ForumDAO newForumDAO(); /** * Gets a {@link net.jforum.dao.GroupDAO} instance * * @return <code>net.jforum.model.GroupModel</code> instance. */ public abstract GroupDAO newGroupDAO(); /** * Gets a {@link net.jforum.dao.PostDAO} instance. * * @return <code>net.jforum.model.PostModel</code> instance. */ public abstract PostDAO newPostDAO(); /** * Gets a {@link net.jforum.dao.PollDAO} instance. * * @return <code>net.jforum.model.PollModel</code> instance. */ public abstract PollDAO newPollDAO(); /** * Gets a {@link net.jforum.dao.RankingDAO} instance. * * @return <code>net.jforum.model.RankingModel</code> instance */ public abstract RankingDAO newRankingDAO(); /** * Gets a {@link net.jforum.dao.TopicDAO} instance. * * @return <code>net.jforum.model.TopicModel</code> instance. */ public abstract TopicDAO newTopicDAO(); /** * Gets an {@link net.jforum.dao.UserDAO} instance. * * @return <code>net.jforum.model.UserModel</code> instance. */ public abstract UserDAO newUserDAO(); /** * Gets an {@link net.jforum.dao.CategoryDAO} instance. * * @return <code>net.jforum.model.CategoryModel</code> instance. */ public abstract CategoryDAO newCategoryDAO(); /** * Gets an {@link net.jforum.dao.TreeGroupDAO} instance * * @return <code>net.jforum.model.TreeGroupModel</code> instance. */ public abstract TreeGroupDAO newTreeGroupDAO(); /** * Gets a {@link net.jforum.dao.SmilieDAO} instance * * @return <code>net.jforum.model.SmilieModel</code> instance. */ public abstract SmilieDAO newSmilieDAO(); /** * Gets a {@link net.jforum.dao.GroupSecurityDAO} instance * * @return <code>net.jforum.model.security.GroupSecurityModel</code> instance */ public abstract GroupSecurityDAO newGroupSecurityDAO(); /** * Gets a {@link net.jforum.dao.PrivateMessageDAO} instance * * @return <code>link net.jforum.model.security.PrivateMessageModel</code> instance */ public abstract PrivateMessageDAO newPrivateMessageDAO(); /** * Gets a {@link net.jforum.dao.UserSessionDAO} instance * * @return <code>link net.jforum.model.UserSessionModel</code> instance */ public abstract UserSessionDAO newUserSessionDAO(); /** * Gets a {@link net.jforum.dao.ConfigDAO} instance * * @return <code>link net.jforum.model.ConfigModel</code> instance */ public abstract ConfigDAO newConfigDAO(); /** * Gets a {@link net.jforum.dao.KarmaDAO} instance * * @return <code>link net.jforum.model.KarmaModel</code> instance */ public abstract KarmaDAO newKarmaDAO(); /** * Gets a {@link net.jforum.dao.BookmarkDAO} instance * * @return <code>link net.jforum.model.BookmarkModel</code> instance */ public abstract BookmarkDAO newBookmarkDAO(); /** * Gets a {@link net.jforum.dao.AttachmentDAO} instance * * @return <code>link net.jforum.model.AttachmentModel</code> instance */ public abstract AttachmentDAO newAttachmentDAO(); /** * Gets a {@link net.jforum.dao.ModerationDAO} instance * * @return <code>link net.jforum.model.ModerationModel</code> instance */ public abstract ModerationDAO newModerationDAO(); /** * Gets an {@link net.jforum.dao.BannerDAO} instance. * * @return <code>net.jforum.dao.BannerDAO</code> instance. */ public abstract BannerDAO newBannerDAO(); /** * Gets an {@link net.jforum.dao.SummaryDAO} instance. * * @return <code>net.jforum.dao.SummaryDAO</code> instance. */ public abstract SummaryDAO newSummaryDAO(); /** * Gets a {@link net.jforum.dao.MailIntegrationDAO} instance. * * @return <code>net.jforum.dao.MailIntegrationDAO</code> instance. */ public abstract MailIntegrationDAO newMailIntegrationDAO(); /** * Gets a {@link net.jforum.dao.ApiDAO} instance. * * @return <code>net.jforum.dao.ApiDAO</code> instance. */ public abstract ApiDAO newApiDAO(); public abstract BanlistDAO newBanlistDAO(); public abstract ModerationLogDAO newModerationLogDAO(); public abstract LuceneDAO newLuceneDAO(); }