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

📄 inboxmanagerservlet.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.www;import com.queplix.core.integrator.security.*;import com.queplix.core.integrator.security.SecurityException;import com.queplix.core.modules.inbox.Account;import com.queplix.core.modules.inbox.InboxMessage;import com.queplix.core.modules.inbox.actions.InboxAction;import com.queplix.core.modules.inbox.error.InvalidAccountException;import com.queplix.core.modules.inbox.utils.AccountDAO;import com.queplix.core.modules.inbox.utils.DefaultMessageFilter;import com.queplix.core.modules.inbox.utils.InboxMsgBuilder;import com.queplix.core.modules.inbox.utils.InboxPropertyFactory;import com.queplix.core.modules.inbox.utils.InboxProvider;import com.queplix.core.modules.inbox.utils.ResultSet;import com.queplix.core.modules.inbox.utils.log.SystemLogPublisher;import com.queplix.core.modules.services.ActionRunner;import com.queplix.core.modules.services.XAActionContext;import com.queplix.core.utils.DateHelper;import com.queplix.core.utils.StringHelper;import com.queplix.core.utils.www.AbstractServlet;import com.queplix.core.utils.www.ServletHelper;import javax.mail.Message;import javax.mail.MessagingException;import javax.servlet.ServletException;import javax.servlet.SingleThreadModel;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.text.ParseException;import java.util.ArrayList;import java.util.Collection;import java.util.HashMap;import java.util.List;import java.util.Map;/** * Inbox manager servlet. * The following actions are available: * <p> * Get the list of all available mail accounts. * <br> * Usage: <pre>/inboxManager/accList</pre> * </p> * * <p> * Get the list of all mails belong to selected account. * <br> * Usage: <pre>/inboxManager/mails?...</pre> * <br> * Parameters: * <ul> *   <li><b>accId</b> - the account id</li> * </ul> * </p> * * <p> * Get mail body for selected mail message. * <br> * Usage: <pre>/inboxManager/mailInfo?...</pre> * <br> * Parameters: * <ul> *   <li><b>pos</b> - position in the list</li> * </ul> * </p> * * <p> * Test account. * <br> * Usage: <pre>/inboxManager/testAcc?...</pre> * <br> * Parameters: * <ul> *   <li><b>accId</b> - the account id</li> * </ul> * </p> * * <p> * Process selected mail message. * <br> * Usage: <pre>/inboxManager/process?...</pre> * <br> * Parameters: * <ul> *   <li><b>pos</b> - position in the list</li> * </ul> * </p> * * @author [ALB] Baranov Andrey * @version $Revision: 1.2 $ $Date: 2006/01/24 20:30:20 $ */public class InboxManagerServlet    extends AbstractServlet implements SingleThreadModel {    // ===================================================== Constants    public static final String ACC_LIST_NAME = "acc_list_name";    public static final String MAILS_NAME = "mails_name";    public static final String MAIL_NAME = "mail_name";    // ===================================================== Servlet API methods    /* (non-Javadoc)     * @see HttpServlet#service(HttpServletRequest, HttpServletResponse)     */    public void service( HttpServletRequest request, HttpServletResponse response )        throws IOException, ServletException {        // Check permissions.        //if( SystemHelper.isProductionMode() ) {        //    throw new ServletException( "Cannot use this servlet in production mode" );        //}        // Get action.        String action = request.getPathInfo();        if( action != null ) {            action = action.substring( 1 );        } else {            action = StringHelper.EMPTY_VALUE;        }        // Action switch.        try {            if( action.equalsIgnoreCase( "accList" ) ) {                doAccListAction( request, response );            } else if( action.equalsIgnoreCase( "mails" ) ) {                doMailsAction( request, response );            } else if( action.equalsIgnoreCase( "mailInfo" ) ) {                doMailInfoAction( request, response );            } else if( action.equalsIgnoreCase( "testAcc" ) ) {                doTestAction( request, response );            } else if( action.equalsIgnoreCase( "process" ) ) {                doProcessAction( request, response );            } else {                throw new IllegalStateException( "Unknown action: " + action );            }        } catch( SecurityException ex ) {            throw new ServletException( ex );        }    }    // ========================================================== Action handlers    //    // Collection of Account objects.    //    private void doAccListAction( HttpServletRequest request,                                  HttpServletResponse response )        throws ServletException, SecurityException, IOException {        AccountDAO dao = InboxPropertyFactory.getInstance().getAccountDAO();        Collection ret = dao.loadAllAccountVO();        // put in request        request.setAttribute( ACC_LIST_NAME, ret );        // make redirect        request.getRequestDispatcher( "/tools/inbox/showAccList.jsp" ).forward( request, response );    }    //    // List of Message objects.    //    private void doMailsAction( HttpServletRequest request,                                HttpServletResponse response )        throws ServletException, SecurityException, IOException {        long accoundId = ServletHelper.getParamAsLong( request, "id" );        request.setAttribute( "id", "" + accoundId );        List ret = new ArrayList();        // Load account.        AccountDAO dao = InboxPropertyFactory.getInstance().getAccountDAO();        Account account = dao.loadAccountVO( accoundId );        if( account == null ) {            throw new NullPointerException( "Account #" + accoundId + " not found!" );        }        // Init sys log publisher.        SystemLogPublisher publisher = getSysLog();        // Init Inbox provider.        Class providerClazz = InboxPropertyFactory.getInstance().getInboxProviderClass( account.getProviderName() );        InboxProvider provider = ( InboxProvider ) InboxPropertyFactory.getInstance().            getInstance( providerClazz, account, "<*>", publisher );        // Init Message Builder class.        Class msgBuilderClazz = InboxPropertyFactory.getInstance().getMessageBuilderClass();        try {            // Opening mail session...            provider.open();            /** @todo forbid to see more than 50 messages */            // Get mail ResultSet            DefaultMessageFilter filter = new DefaultMessageFilter(                DateHelper.parseDate( "08/08/1976", "dd/MM/yyyy" ), // -- just use fake date                null, null, false, provider );            ResultSet rs = provider.getResultSet( filter );            //            // Messages processing...            //            Message message;            while( ( message = rs.next() ) != null ) {                // Init Inbox message builder.                InboxMsgBuilder builder = ( InboxMsgBuilder ) InboxPropertyFactory.getInstance().                    getInstance( msgBuilderClazz, account, "<*>", publisher );                builder.setInboxProvider( provider );                // Build InboxMessage.                InboxMessage im;                try {                    im = builder.build( message );                } catch( MessagingException me ) {                    // just report problem                    logger.ERROR( me );                    continue;                }                logger.DEBUG( "Read next message: " + im );                ret.add( im );            }        } catch( ParseException ex ) {            throw new ServletException( ex );        } catch( MessagingException ex ) {            throw new ServletException( ex );        } finally {            try {                provider.close( false );            } catch( Exception ex ) {}        }        // store in the session        request.getSession().setAttribute( MAILS_NAME, ret );        // put in request        request.setAttribute( MAILS_NAME, ret );        // make redirect        request.getRequestDispatcher( "/tools/inbox/showMails.jsp" ).forward( request, response );    }    //    // Show mail body.    //    private void doMailInfoAction( HttpServletRequest request,                                   HttpServletResponse response )        throws ServletException, SecurityException, IOException {        int pos = ServletHelper.getParamAsInt( request, "pos" );        // Retrive mail from session.        List mailList = ( List ) request.getSession().getAttribute( MAILS_NAME );        if( mailList == null ) {            response.sendRedirect( "/tools/inbox/index.jsp" );            return;        }        InboxMessage im = ( InboxMessage ) mailList.get( pos );        if( im == null ) {            throw new NullPointerException( "Mail message (pos = " + pos + ") not found in the list!" );        }        // put in request        request.setAttribute( MAIL_NAME, im );        // make redirect        request.getRequestDispatcher( "/tools/inbox/showMailBody.jsp" ).forward( request, response );    }    //    // Test account.    //    private void doTestAction( HttpServletRequest request,                               HttpServletResponse response )        throws ServletException, SecurityException, IOException {        long accoundId = ServletHelper.getParamAsLong( request, "id" );        request.setAttribute( "id", "" + accoundId );        // Load account.        AccountDAO dao = InboxPropertyFactory.getInstance().getAccountDAO();        Account account = dao.loadAccountVO( accoundId );        if( account == null ) {            throw new NullPointerException( "Account #" + accoundId + " not found!" );        }                // Init Inbox provider.        Class clazz = InboxPropertyFactory.getInstance().getInboxProviderClass( account.getProviderName() );        InboxProvider provider = ( InboxProvider ) InboxPropertyFactory.getInstance().            getInstance( clazz, account, "<*>", getSysLog() );        try {            // Do check account.            provider.checkAccount();            // Print Out.            response.setContentType( ServletHelper.CONTENT_TYPE_HTML );            response.getWriter().print( "<p style='font-size: 16px; color: green'>Account #" + accoundId + " is valid!</p>" );        } catch( InvalidAccountException ex ) {            // Print Out.            response.setContentType( ServletHelper.CONTENT_TYPE_HTML );            response.getWriter().print( "<p style='font-size: 16px; color: red'>Account #" + accoundId +                                        " is invalid!</p><br><br>Error: " + ex.getMessage() );        }    }    //    // Process mail.    //    private void doProcessAction( HttpServletRequest request,                                  HttpServletResponse response )        throws ServletException, com.queplix.core.integrator.security.SecurityException, IOException {        int pos = ServletHelper.getParamAsInt( request, "pos" );        // Retrive mail from session.        List mailList = ( List ) request.getSession().getAttribute( MAILS_NAME );        if( mailList == null ) {            response.sendRedirect( "/tools/inbox/index.jsp" );            return;        }        InboxMessage im = ( InboxMessage ) mailList.get( pos );        if( im == null ) {            throw new NullPointerException( "Mail message (pos = " + pos + ") not found in the list!" );        }        // Load account.        long accountId = im.getAccountId().longValue();        AccountDAO dao = InboxPropertyFactory.getInstance().getAccountDAO();        Account account = dao.loadAccountVO( accountId );        if( account == null ) {            throw new NullPointerException( "Account #" + accountId + " not found!" );        }        // Preparing the Inbox action parameters.        Map params = new HashMap();        params.put( "im", im );        params.put( "account", account );        // Init sys log publisher.        SystemLogPublisher publisher = getSysLog();        // Init action context.        XAActionContext xa = new XAActionContext( publisher.getLogonSession(), publisher );        // Call InboxAction.        InboxAction inboxAction = new InboxAction();        xa.addParameters( params );        try {            ActionRunner.runAsXA( inboxAction, xa );            // Print Out.            response.setContentType( ServletHelper.CONTENT_TYPE_HTML );            response.getWriter().print( "<p style='font-size: 16px; color: green'>Message #" +                                        im.getMessageUid() + " went to process routine.</p>" );        } catch( Throwable t ) {            logger.ERROR( t );            // Print Out.            response.setContentType( ServletHelper.CONTENT_TYPE_HTML );            response.getWriter().print( "<p style='font-size: 16px; color: red'>Message #" +                                        im.getMessageUid() + " processing failed.</p>" +                                        "<br><br>Error: " + t.getMessage() );        }    }    //    // Constructs SystemLogPublisher.    //    protected SystemLogPublisher getSysLog()        throws ServletException {        LogonSession ls;        ls = AccessRightsManager.getSystemLogonSession();        return new SystemLogPublisher( ls );    }}

⌨️ 快捷键说明

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