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

📄 alertservlet.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.alert.www;import com.queplix.core.error.GenericSystemException;import com.queplix.core.error.IncorrectParameterException;import com.queplix.core.integrator.security.AccessRightsManager;import com.queplix.core.integrator.security.LogonSession;import com.queplix.core.integrator.security.User;import com.queplix.core.integrator.security.WebLoginManager;import com.queplix.core.integrator.security.WorkGroup;import com.queplix.core.modules.alert.ejb.AlertManagerLocal;import com.queplix.core.modules.alert.ejb.AlertManagerLocalHome;import com.queplix.core.modules.alert.eql.AlertEQLAgent;import com.queplix.core.modules.alert.utils.AlertSelectorCriteria;import com.queplix.core.modules.config.ejb.FocusConfigManagerLocal;import com.queplix.core.modules.config.ejb.FocusConfigManagerLocalHome;import com.queplix.core.modules.config.jxb.Form;import com.queplix.core.modules.config.utils.EntityHelper;import com.queplix.core.modules.eql.CompoundKey;import com.queplix.core.modules.eql.error.EQLException;import com.queplix.core.modules.jeo.JEObjectHandler;import com.queplix.core.modules.jeo.ejb.JEOManagerLocal;import com.queplix.core.modules.jeo.ejb.JEOManagerLocalHome;import com.queplix.core.modules.jeo.gen.AlertObject;import com.queplix.core.modules.jeo.gen.AlertObjectHandler;import com.queplix.core.integrator.security.NoSuchGroupException;import com.queplix.core.integrator.security.NoSuchUserException;import com.queplix.core.integrator.security.SecurityException;import com.queplix.core.utils.JNDINames;import com.queplix.core.utils.www.AbstractServlet;import com.queplix.core.utils.www.ServletHelper;import javax.ejb.CreateException;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.util.SortedMap;/** * <p>Helper servlet to manage alerts<p> * * <p>Returns 1 if current user has new alerts, otherwise - 0<p> * <strong>USAGE</strong>: <pre>GET /sys/alert/count</pre> * * <p>Create new alert(s)<p> * <strong>USAGE</strong>: <pre>GET /sys/alert/add?employeeId=123&message=TEST&recordId=1</pre> * <p><strong>Parameters</strong>: * <pre>     One of: *        toAll=true: send to all employee *      or.. *        employeeId: employee id *      or.. *        customerId: customer id *      or.. *        workgroupId: workgroup id *        [tier (1,2...): workgroup tier] *        [toAll (true|false): send to all in workgroup or not] *      message: alert message *      severity: alert severity *      [form: full form name] *      [recordId: the unique record ID] *      [recordId2: the unique record composite ID] *      [recordId3: the unique record composite ID] *      [recordId4: the unique record composite ID] * </pre></p> * * @author [ALB] Baranov Andrey * @see AlertEQLAgent * @version $Revision: 1.1.1.1 $ $Date: 2005/09/12 15:30:10 $ */public class AlertServlet    extends AbstractServlet {    // ----------------------------------------------------- methods    //    // Service method    //    public void service( HttpServletRequest req, HttpServletResponse res )        throws IOException, ServletException {        String action = req.getPathInfo();        if( action != null ) {            action = action.substring( 1 );        } else {            action = "";        }        // Perform action        try {            if( action.equalsIgnoreCase( "count" ) ) {                doCountAction( req, res );            } else if( action.equalsIgnoreCase( "add" ) ) {                doAddAction( req, res );            } else {                throw new IncorrectParameterException( "action", action );            }        } catch( SecurityException ex ) {            throw new ServletException( ex );        }    }    // ----------------------------------------------------- actions    //    // Count alert action    //    private void doCountAction( HttpServletRequest req, HttpServletResponse res )        throws ServletException,        SecurityException,        IOException {        //        // Initialization        //        LogonSession ls = WebLoginManager.getLogonSession( req );        Long lastAlertId = AlertEQLAgent.getLastReadAlert( ls );        // Search result.        SortedMap ret;        AlertManagerLocal local = null;        try {            // Create criteria.            // Try to search one record at least.            AlertSelectorCriteria criteria = new AlertSelectorCriteria();            criteria.setLogonSession( ls );            criteria.setIncomming( true );            criteria.setPage(0);            criteria.setPageSize( new Integer( 1 ) );            criteria.setStartID( lastAlertId );            // Call Alert Manager search method.            local = getAlertManagerLocal( ls );            ret = local.getAlerts( criteria );        } finally {            try {                if( local != null ) {                    local.remove();                }            } catch( Exception ex ) {}        }        // Print count of new alerts.        // It must be 0 or 1.        int count = 0;        if( ret != null ) {            count = ret.size();        }        logger.DEBUG( "Searching new alerts result: " + count );        res.setContentType( ServletHelper.CONTENT_TYPE_TEXT );        res.getWriter().print( count );    }    //    // Helper method. Add alert action.    //    private void doAddAction( HttpServletRequest req, HttpServletResponse res )        throws ServletException,        SecurityException,        IOException {        //        // Initialization        //        LogonSession ls = WebLoginManager.getLogonSession( req );        // Alert recipients        User recipient = null;        WorkGroup workgroup = null;        Integer tier = null;        boolean toAll = false;        String s;        if( ( s = req.getParameter( "employeeId" ) ) != null ) {            //            // Get Employee            //            try {                long employeeId = Long.parseLong( s );                recipient = loadUser( employeeId );            } catch( NumberFormatException ex ) {                throw new GenericSystemException( "Bad 'employeeId' attribute:" + s, ex );            }        } else if( ( s = req.getParameter( "customerId" ) ) != null ) {            //            // Get Customer            //            try {                long customerId = Long.parseLong( s );                recipient = loadUser( customerId );            } catch( NumberFormatException ex ) {                throw new GenericSystemException( "Bad 'customerId' attribute:" + s, ex );            }        } else if( ( s = req.getParameter( "workgroupId" ) ) != null ) {            //            // Get Workgroup            //            try {                long workgroupId = Long.parseLong( s );                workgroup = loadWorkgroup( workgroupId );            } catch( NumberFormatException ex ) {                throw new GenericSystemException( "Bad 'workgroupId' attribute:" + s, ex );            }            // get Tier            s = req.getParameter( "tier" );            if( s != null ) {                try {                    tier = new Integer( s );                } catch( NumberFormatException ex ) {                    throw new GenericSystemException( "Bad 'tier' attribute:" + s, ex );                }            }            // get toAll            s = req.getParameter( "toAll" );            if( s != null ) {                toAll = new Boolean( s ).booleanValue();            }        } else if( ( s = req.getParameter( "toAll" ) ) != null &&                   new Boolean( s ).booleanValue() == true ) {            //            // Send to All. Do nothing            //        } else {            throw new GenericSystemException( "Please, specify recipient parameter" );        }        // Alert message        String message = ServletHelper.getParamAsString( req, "message" );        // Alert severity        int severityId = ServletHelper.getParamAsInt( req, "severity" );        // Alert form        Form form = loadForm( req.getParameter( "form" ) );        // Alert key        CompoundKey recordKey = getCompoundRecordId( req );        if( logger.getLogger().isDebugEnabled() ) {            logger.DEBUG( "Try to send alert: recipient=" + recipient +                          "; message=" + message + "; key=" + recordKey +                          "; severityId=" + severityId + "; workgroup=" + workgroup +                          "; tier=" + tier + "; toAll=" + toAll +                          "; form=" + ( form == null ? null : form.getName() ) );        }        //        // Call JEO Manager.        //        JEOManagerLocal local = getJEOManagerLocal();        JEObjectHandler hnd;        try {            hnd = local.create( ls, AlertObjectHandler.class );        } catch( EQLException ex ) {            logger.ERROR( ex );            throw new ServletException( ex );        }        AlertObject obj = ( AlertObject ) hnd.getJEObject();        // Set required data.        obj.setMessage( message );        obj.setSeverity(severityId);        // Set recipient.        if( recipient != null ) {            // .. user            obj.setRecipient_id(recipient.getUserID());            obj.setRecipient_type(recipient.getAuthenticationType());        } else if( workgroup != null ) {            // .. workgroup            obj.setWorkgroup_id(workgroup.getGroupID());            obj.setTier( tier );            if( toAll ) {                obj.setTo_all(1);            }        } else {            // .. 'To All'            obj.setTo_all(1);        }        // Set Add-on data.        if( form != null ) {            obj.setFocus_id( EntityHelper.getParentFocusName( form.getTab() ) );            obj.setTab_id( form.getTab() );            obj.setForm_id( form.getName() );            int keys = recordKey.size();            int i = 0;            obj.setRecord_id( ( String ) recordKey.getKey( i++ ) );            if( i < keys ) {                obj.setRecord_id2( ( String ) recordKey.getKey( i++ ) );                if( i < keys ) {                    obj.setRecord_id3( ( String ) recordKey.getKey( i++ ) );                    if( i < keys ) {                        obj.setRecord_id4( ( String ) recordKey.getKey( i++ ) );                    }                }            }        }        // Commit.        try {            hnd.commit();        } catch( EQLException ex ) {            logger.ERROR( ex );            throw new ServletException( ex );        }    }    // ----------------------------------------------------- private methods    //    // Get Form object by the name    //    private Form loadForm( String formName )        throws ServletException {        if( formName == null ) {            return null;        }        return getFocusConfigManagerLocal().getForm( formName );    }    //    // Get employee User object    //    private User loadUser( long employeeId )        throws ServletException {        try {            return AccessRightsManager.getUser( employeeId );        } catch( NoSuchUserException ex ) {            throw new ServletException( ex );        }    }    //    // Get Group object    //    private WorkGroup loadWorkgroup( long workgroupId )        throws ServletException {        try {            return AccessRightsManager.getGroup( workgroupId );        } catch( NoSuchGroupException ex ) {            throw new ServletException( ex );        }    }    //    // Get compound record id    //    private CompoundKey getCompoundRecordId( HttpServletRequest req )        throws ServletException {        try {            return ServletHelper.getCompoundRecordId( req );        } catch( IncorrectParameterException ex ) {            return null;        }    }    //    // Get FocusConfigManager local interface    //    private FocusConfigManagerLocal getFocusConfigManagerLocal()        throws ServletException {        return( FocusConfigManagerLocal ) getLocalObject( JNDINames.FocusConfigManager,            FocusConfigManagerLocalHome.class );    }    //    // Get JEO Manager local interface    //    private JEOManagerLocal getJEOManagerLocal()        throws ServletException {        return( JEOManagerLocal ) getLocalObject( JNDINames.JEOManager,                                                  JEOManagerLocalHome.class );    }    //    // Get AlertManager local interface    //    private AlertManagerLocal getAlertManagerLocal( LogonSession ls )        throws ServletException {        AlertManagerLocalHome home = ( AlertManagerLocalHome )            getLocalHome( JNDINames.AlertManager, AlertManagerLocalHome.class );        try {            return home.create( ls );        } catch( CreateException ex ) {            throw new GenericSystemException( "Can't create AlertManager EJB.", ex );        }    }}

⌨️ 快捷键说明

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