текущий код акшена updateTask
Код:
package ru.bitel.bgbilling.plugins.crm.server.register;
import java.sql.SQLException;
import java.util.Date;
import org.w3c.dom.Element;
import ru.bitel.bgbilling.plugins.crm.common.model.RegisterGroup;
import ru.bitel.bgbilling.plugins.crm.common.model.RegisterTask;
import ru.bitel.bgbilling.plugins.crm.server.bean.event.RegisterTaskClosedEvent;
import ru.bitel.bgbilling.plugins.crm.server.dao.RegisterGroupManager;
import ru.bitel.bgbilling.plugins.crm.server.dao.RegisterTaskManager;
import bitel.billing.common.CommonUtils;
import bitel.billing.server.script.bean.event.EventProcessor;
import bitel.billing.server.util.MailMsg;
public class ActionUpdateRegisterTask extends ActionBase
{
   @Override
    public void doAction()
      throws SQLException
   {
      int id = getIntParameter( "id", -1 );
      int status = getIntParameter( "status", 0 );
        Date now = new Date();
      RegisterTask task = null;
      boolean closeEvent = false;
        RegisterTaskManager manager = new RegisterTaskManager( con );
      if ( id < 0 )
      {
         task = new RegisterTask();
         task.setID( -1 );
         task.setContractID( cid );
         task.setOpenUserID( userID.intValue() );
         task.setOpenTime( new Date() );
           task.setTypeID( getIntParameter( "type", 0 ) );
      }
      else
      {
         task = manager.getTaskByID( id );         
         // статус был изменен
         if( task.getStatus() != status )
         {
            switch ( status )
            {
               case RegisterTask.STATUS_OPEN:
               {
                  task.setOpenUserID( userID.intValue() );
                  task.setOpenTime( new Date() );
                  break;
               }
               case RegisterTask.STATUS_ACCEPTED:
               {
                  task.setAcceptUserID( userID.intValue() );
                  task.setAcceptTime( new Date() );                        
                  break;
               }
               case RegisterTask.STATUS_CLOSED:
               {
                  task.setCloseUserID( userID.intValue() );
                  task.setCloseTime( new Date() );
                  closeEvent = true;
                  break;
               }
            }
         }
      }
      task.setTargetDate( getDateParameter( "target_date" ) );
      task.setExecuteDate( getDateParameter( "execute_date" ) );
        
        // проверка дат при закрытии
        if ( status == RegisterTask.STATUS_CLOSED )
        {
            String checkResult = checkCloseDates( now, task );
            if ( checkResult != null )
            {
                setErrorStatus( checkResult );
                return;
            }
        }
        else if ( status == RegisterTask.STATUS_ACCEPTED )
        {
            String checkResult = checkAcceptDates( now, task );
            if ( checkResult != null )
            {
                setErrorStatus( checkResult );
                return;
            }
        }
        task.setLastmodUserID( userID );
        task.setLastmodTime( new Date() );
        task.setAddressParamID( getIntParameter( "apid", 0 ) );
        task.setAddressObjectId( getIntParameter( "aObjectId", 0 ) );
        task.setStatus( status );
        task.setExecutors(  CommonUtils.stringToIntegerList( getParameter( "executors" ) ) );
        task.setGroupID( getIntParameter( "group", 0 ) );
        task.setComment( getParameter( "comment", "" ) );
        task.setResolution( getParameter( "resolution", "" ) );
        manager.updateTask( task );
        manager.updateExecutorList( task );
        
        if ( closeEvent )
        {
            // отправка сообщения
            EventProcessor.getProcessor().addEvent( new RegisterTaskClosedEvent( plugin.getPluginUID(), task ) );
        }
      if ( task != null && getParameter( "send.mail" ) != null )
      {
         sendRegisterEmail( task, getSubject( task ) );
      }
      
      Element problem = createElement( rootNode, "task" );
      problem.setAttribute( "id", String.valueOf( task.getID() ) );      
   }
    
    private String getSubject( RegisterTask task )
    {
        String pattern = pluginSetup.getStringValue( "register.task.mail.subject", setup.getStringValue( "register.task.mail.subject", "Отчет по задаче" ) );
        try
        {
            if ( pattern.indexOf( "${group}" ) >= 0 )
            {
                RegisterGroup group = new RegisterGroupManager( con ).getGroupByID( task.getGroupID() );
                if ( group != null )
                {
                    pattern = pattern.replaceAll( "\\$\\{group\\}", group.getTitle() );
                }
            }
            if ( pattern.indexOf( "${type}" ) >= 0 )
            {
                pattern = pattern.replaceAll( "\\$\\{type\\}", getTaskType( task.getTypeID() ) );
            }
        }
        catch( Exception ex )
        {
            ex.printStackTrace();
        }
        return pattern;
    }
   protected void sendRegisterEmail( RegisterTask task, String subject )
      throws SQLException
   {
      RegisterGroup group = new RegisterGroupManager( con ).getGroupByID( task.getGroupID() );
      if ( group != null && notEmptyString( group.getEmail() ) )
      {
         // высылка извещения группе
         MailMsg msg = new MailMsg( setup );
         String message = createRegisterReport( task, group, "register_task.xsl" );
         msg.sendMessage( group.getEmail(), subject, message );
      }
      else
      {
         setErrorStatus( "У группы нет почтового адреса!" );
      }
   }
}