⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 inboxpropertyfactory.java

📁 CRM源码This file describes some issues that should be implemented in future and how it should be imple
💻 JAVA
字号:
/* * Copyright 2006-2007 Queplix Corp. * * Licensed under the Queplix Public License, Version 1.1.1 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.queplix.com/solutions/commercial-open-source/queplix-public-license/ * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */package com.queplix.core.modules.inbox.utils;import com.queplix.core.error.GenericSystemException;import com.queplix.core.modules.inbox.Account;import com.queplix.core.modules.inbox.jxb.ErrorFilter;import com.queplix.core.modules.inbox.jxb.Filter;import com.queplix.core.modules.inbox.jxb.InboxConfig;import com.queplix.core.modules.inbox.jxb.Provider;import com.queplix.core.modules.inbox.utils.log.SystemLogPublisher;import com.queplix.core.utils.dao.AbstractPropertyFactory;import com.queplix.core.utils.log.AbstractLogger;import java.util.ArrayList;import java.util.Collections;import java.util.HashMap;import java.util.List;import java.util.Map;/** * The class presents Inbox property factory. * @author Firstname LastName * @since 8 Dec 2006 */public final class InboxPropertyFactory    extends AbstractPropertyFactory {    // ================================================================= Constants    // Single instance.    private static final InboxPropertyFactory o = new InboxPropertyFactory();    // Config file name.    private static final String CONFIG_FILE = "inbox.xml";    // ================================================================= Fields    // XML inbox config    private InboxConfig inboxConfig;    // Map of com.queplix.core.modules.inbox.jxb.Provider objects    private Map providerMap;    // Map of Class objects for different InboxProvider.    private Map providerClassMap;    // Map of com.queplix.core.modules.inbox.jxb.Filter objects    private Map filterMap;    // Map of Class objects for different MailFilter.    private Map filterClassMap;    // Map of filter name in execution order.    private List filterNameList;    // Error filter class.    private Class errFilterClass;    // Account DAO.    private AccountDAO accountDAO;    // InboxMsgBuilder class.    private Class msgBuilderClass;    // ================================================================= Constructor    // Constructor - blocks direct instantiation.    private InboxPropertyFactory() {        // XML config initialization        inboxConfig = ( InboxConfig ) loadSysPropertiesAsObject( CONFIG_FILE, InboxConfig.class );        //        // Initialization        //        // 1. Inbox providers.        providerMap = new HashMap();        providerClassMap = new HashMap();        int providerSize = inboxConfig.getProviders().getProviderCount();        for( int i = 0; i < providerSize; i++ ) {            Provider provider = inboxConfig.getProviders().getProvider( i );            providerMap.put( provider.getName(), provider );            providerClassMap.put( provider.getName(), initClass( provider.getClassName() ) );        }        // 2. Inbox filters.        filterMap = new HashMap();        filterClassMap = new HashMap();        filterNameList = new ArrayList();        int filterSize = inboxConfig.getFilters().getFilterCount();        for( int i = 0; i < filterSize; i++ ) {            Filter filter = inboxConfig.getFilters().getFilter( i );            filterMap.put( filter.getName(), filter );            filterClassMap.put( filter.getName(), initClass( filter.getClassName() ) );            filterNameList.add( filter.getName() );        }        // .. error filter        ErrorFilter filter = inboxConfig.getFilters().getErrorFilter();        errFilterClass = initClass( filter.getClassName() );        // 3. DAOs.        // account        accountDAO = ( AccountDAO ) initObject(            inboxConfig.getAccountConfig().getDao().getClassName(),            inboxConfig.getAccountConfig().getDao().getParam() );        // 4. Other classes.        // message builder        msgBuilderClass = initClass( inboxConfig.getMessageBuilderClassName() );    }    // ================================================================= Static methods    /**     * Get single instance     * @return InboxPropertyFactory object     */    public static InboxPropertyFactory getInstance() {        return o;    }    // ================================================================= Public methods    /**     * Gets provider class     * @param name provider name     * @return class     */    public Class getInboxProviderClass( String name ) {        Class clazz = ( Class ) providerClassMap.get( name );        if( clazz == null ) {            throw new IllegalStateException( "Cannot get InboxProvider class for name: " + name );        }        return clazz;    }    /**     * Gets error filter class     * @return class     */    public Class getErrorMailFilterClass() {        if( errFilterClass == null ) {            throw new IllegalStateException( "Cannot get error class" );        }        return errFilterClass;    }    /**     * Gets filter class     * @param name filter name     * @return class     */    public Class getMailFilterClass( String name ) {        Class clazz = ( Class ) filterClassMap.get( name );        if( clazz == null ) {            throw new IllegalStateException( "Cannot get MailFilter class for name: " + name );        }        return clazz;    }    /**     * Gets filter names.     * @return List     */    public List getMailFilterNames() {        return Collections.unmodifiableList( filterNameList );    }    /**     * Instantiates the account DAO     * @return AccountDAO     */    public AccountDAO getAccountDAO() {        if( accountDAO == null ) {            throw new GenericSystemException( "Can't get account DAO" );        }        return accountDAO;    }    /**     * Gets message builder class     * @return Class     */    public Class getMessageBuilderClass() {        if( msgBuilderClass == null ) {            throw new GenericSystemException( "Can't get message builder class" );        }        return msgBuilderClass;    }    /**     * Instantiates new object - InboxPluggableModule.     * @param clazz Class     * @param account Account     * @param logName String     * @return InboxPluggableModule     */    public InboxPluggableModule getInstance(Class clazz, Account account, String logName, SystemLogPublisher publisher) {        // Checking.        if( clazz == null ) {            throw new NullPointerException( "InboxPropertyFactory#getInstance: 'clazz' is NULL" );        }        if( account == null ) {            throw new NullPointerException( "InboxPropertyFactory#getInstance: 'account' is NULL" );        }        if( logName == null ) {            throw new NullPointerException( "InboxPropertyFactory#getInstance: 'logName' is NULL" );        }        // Instantiating InboxPluggableModule.        InboxPluggableModule o;        try {            o = ( InboxPluggableModule ) clazz.newInstance();        } catch( Exception ex ) {            ERROR( ex );            throw new GenericSystemException( "Cannot instantiate AbstractInboxPluggableModule. " +                                              "Class: " + clazz.getName(), ex );        }        o.setAccount( account );        o.setLogName( logName );        o.setLogPublisher(publisher);        return o;    } // getInstance(Class, Account, String) : InboxPluggableModule}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -