Changeset 7319 for RevitalizationWS


Ignore:
Timestamp:
12/08/10 09:41:22 (9 years ago)
Author:
mnagni
Message:

Implemented the mail system for the DoIngest? process.
Refactoring of the MailHelper?

Location:
RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization
Files:
3 edited
1 moved

Legend:

Unmodified
Added
Removed
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/MailHelper.java

    r7316 r7319  
    1212import ndg.services.revitalization.jpa.ProviderEmail; 
    1313import ndg.services.schemas.revitalization.DoHarvestRequest; 
     14import ndg.services.schemas.revitalization.DoIngestRequest; 
    1415 
    1516public class MailHelper { 
    1617 
    17         private MailHelper(){} 
     18        private MailHelper() { 
     19        } 
    1820 
    1921        public static MailHelper getInstance() { 
    2022                return new MailHelper(); 
    2123        } 
    22          
     24 
    2325        public void newDispatchedHarvestMail(DoHarvestRequest request, HiProcess process) throws NdgExecutionException { 
    2426                ModelManagerRemote mmr = EJBBeanFactory.getModelManager(); 
    25                 ProviderCommon common = mmr.getProviderCommon(request.getProviderID()); 
     27                ProviderCommon common = mmr.getProviderCommon(process.getProviderId()); 
     28                List<String> mailTo = filterEmail(request.getEmailReportID(), common); 
     29                 
     30                String text = mmr.getConfigurationParameter(ServiceConfigurationParameter.NEW_DISPATCHED_HARVEST_MAIL); 
     31                Object[] params = { common.toString(), process.getId() }; 
     32                dispatchMail(mailTo, "ProcessId:" + process.getId(), text, params); 
     33        } 
     34 
     35        public void terminatedHarvestMail(HiProcess hiProcess) throws NdgExecutionException { 
     36                sendTerminatedProcess(hiProcess, ServiceConfigurationParameter.HARVEST_TERMINATED_MAIL); 
     37        } 
     38 
     39        public void terminatedIngestMail(HiProcess hiProcess) throws NdgExecutionException { 
     40                sendTerminatedProcess(hiProcess, ServiceConfigurationParameter.DO_INGEST_PROCESS_TERMINATED_EMAIL); 
     41        } 
     42         
     43        public void dispatchedDoIngestMail(DoIngestRequest request) throws NdgExecutionException { 
     44                ModelManagerRemote mmr = EJBBeanFactory.getModelManager(); 
     45                HiProcess process = mmr.getHiProcess(request.getProcessID().getId()); 
     46                List<String> mailTo = filterEmail(request.getEmailReportID(), process.getProviderId()); 
     47                 
     48                String text = mmr.getConfigurationParameter(ServiceConfigurationParameter.NEW_DISPATCHED_INGEST_MAIL); 
     49                Object[] params = { process.getId() }; 
     50                dispatchMail(mailTo, "ProcessId:" + process.getId(), text, params); 
     51        } 
     52 
     53        private void sendTerminatedProcess(HiProcess hiProcess, ServiceConfigurationParameter msg) 
     54                        throws NdgExecutionException { 
     55                List<String> mailTo = filterEmail(null, hiProcess.getProviderId()); 
     56                String text = EJBBeanFactory.getModelManager().getConfigurationParameter(msg); 
     57                Object[] params = { hiProcess.getId() }; 
     58                dispatchMail(mailTo, "ProcessId:" + hiProcess.getId(), text, params); 
     59        } 
     60 
     61        public void sentProcessFailedMail(HiProcess hiProcess, String msg) throws NdgExecutionException {                
     62                List<String> mailTo = filterEmail(null, hiProcess.getProviderId()); 
     63                dispatchMail(mailTo, "ProcessId:" + hiProcess.getId(), msg, null); 
     64        } 
     65 
     66        private void dispatchMail(List<String> mailTo, String subject, String msgText, Object[] msgTextParams) 
     67                        throws NdgExecutionException { 
     68                String text = MessageFormatter.getFormattedText(msgText, msgTextParams); 
     69                EJBBeanFactory.getMailDispatcher().sendMail(mailTo, subject, text); 
     70        } 
     71 
     72        /** 
     73         * Returns a list of emailIDs extracted from a {@link ProviderCommon}. Such mailIDs are matched with  
     74         * the <code>emailsID</code> parameter if it is not <code>null</code> 
     75         * @param emailIDs the list of IDs to be matched 
     76         * @param common the object containig the default emails information 
     77         * @return a list of emails  
     78         * */ 
     79        private List<String> filterEmail(List<Integer> emailIDs, int providerID) throws NdgExecutionException { 
     80                return filterEmail(emailIDs, EJBBeanFactory.getModelManager().getProviderCommon(providerID)); 
     81        } 
     82         
     83        /** 
     84         * Returns a list of emailIDs extracted from a {@link ProviderCommon}. Such mailIDs are matched with  
     85         * the <code>emailsID</code> parameter if it is not <code>null</code> 
     86         * @param emailIDs the list of IDs to be matched 
     87         * @param common the object containig the default emails information 
     88         * @return a list of emails  
     89         * */ 
     90        private List<String> filterEmail(List<Integer> emailIDs, ProviderCommon common) throws NdgExecutionException { 
    2691                List<String> mailTo = new ArrayList<String>(); 
    2792                for (ProviderEmail email : common.getProviderEmails()) { 
    28                         if (request.getEmailReportID().contains(email.getId())  
    29                                         || (email.getAdminEmail() && common.getEmailToAdmin()) ) { 
     93                        if (emailIDs == null || emailIDs.contains(email.getId()) 
     94                                        || (email.getAdminEmail() && common.getEmailToAdmin())) { 
    3095                                mailTo.add(email.getEmail()); 
    31                         }                                
     96                        } 
    3297                } 
    33                  
    34                 String text = mmr.getConfigurationParameter(ServiceConfigurationParameter.NEW_DISPATCHED_HARVEST_MAIL); 
    35                 Object[] params =  {common.toString(), process.getId()};         
    36                 dispatchMail(mailTo, "ProcessId:" + process.getId(), text, params); 
    37         } 
    38          
    39         public void terminatedHarvestMail(HiProcess hiProcess) throws NdgExecutionException { 
    40                 ModelManagerRemote mmr = EJBBeanFactory.getModelManager(); 
    41                 ProviderCommon common = mmr.getProviderCommon(hiProcess.getProviderId()); 
    42                 List<String> mailTo = new ArrayList<String>(); 
    43                 for (ProviderEmail email : common.getProviderEmails()) { 
    44                                 mailTo.add(email.getEmail()); 
    45                 } 
    46                 String text = mmr.getConfigurationParameter(ServiceConfigurationParameter.HARVEST_TERMINATED_MAIL); 
    47                 Object[] params =  {hiProcess.getId()};  
    48                 dispatchMail(mailTo, "ProcessId:" + hiProcess.getId(), text, params); 
    49         } 
    50          
    51         public void terminatedIngestMail(HiProcess hiProcess) throws NdgExecutionException { 
    52                 //to be done 
    53         } 
    54          
    55         private void dispatchMail(List<String> mailTo, String subject, String msgText, Object[] msgTextParams) throws NdgExecutionException { 
    56                 MessageFormatter mf = new MessageFormatter(); 
    57                 String text = mf.getFormattedText(msgText, msgTextParams);               
    58                 EJBBeanFactory.getMailDispatcher().sendMail(mailTo, subject, text); 
     98                return mailTo; 
    5999        } 
    60100} 
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/dictionary/ServiceConfigurationParameter.java

    r7316 r7319  
    55        NEW_DISPATCHED_HARVEST_MAIL, 
    66        HARVEST_TERMINATED_MAIL, 
    7         DO_INGEST_CMD 
     7        DO_INGEST_CMD, 
     8        NEW_DISPATCHED_INGEST_MAIL, 
     9        DO_INGEST_PROCESS_START, 
     10        DO_INGEST_PROCESS_TERMINATED_EMAIL, 
     11        PROCESS_FAILED_EMAIL 
    812} 
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/executor/DoIngestProcess.java

    r7316 r7319  
    77import ndg.common.StreamReader; 
    88import ndg.common.exception.NdgExecutionException; 
     9import ndg.common.exception.NdgRunTimeProcessException; 
    910import ndg.services.revitalization.EJBBeanFactory; 
    1011import ndg.services.revitalization.InvokeProcess; 
     12import ndg.services.revitalization.MailHelper; 
    1113import ndg.services.revitalization.dictionary.ServiceConfigurationParameter; 
    1214import ndg.services.revitalization.jpa.HiProcess; 
     
    1416import org.apache.commons.io.FileUtils; 
    1517 
    16 public class DoIngesterHelper implements InvokeProcess { 
     18public class DoIngestProcess implements InvokeProcess { 
    1719        /** 
    1820         *  
     
    2123        private final int processID; 
    2224         
    23         public DoIngesterHelper(int processID) { 
     25        public DoIngestProcess(int processID) { 
    2426                super(); 
    2527                this.processID = processID; 
     
    3032        @Override 
    3133        public void invoke() throws NdgExecutionException { 
    32                 String cmd = EJBBeanFactory.getModelManager().getConfigurationParameter( 
    33                                 ServiceConfigurationParameter.DO_INGEST_CMD); 
    34                 String formattedCmd = MessageFormatter.getFormattedText(cmd, new Object[] {processID }); 
    35                 manageSystemCall(formattedCmd); 
    36                 HiProcess hiProcess = EJBBeanFactory.getModelManager().getHiProcess(processID); 
    37                 File harvDir = new File(hiProcess.getHarvestDir()); 
     34                HiProcess hiProcess = null; 
    3835                try { 
     36                        String cmd = EJBBeanFactory.getModelManager().getConfigurationParameter( 
     37                                        ServiceConfigurationParameter.DO_INGEST_CMD); 
     38 
     39                        hiProcess = EJBBeanFactory.getModelManager().getHiProcess(processID); 
     40                        String formattedCmd = MessageFormatter.getFormattedText(cmd, new Object[] {processID }); 
     41                        manageSystemCall(formattedCmd); 
     42                        File harvDir = new File(hiProcess.getHarvestDir()); 
    3943                        FileUtils.deleteDirectory(harvDir); 
    40                 } catch (IOException e) { 
    41                         throw new NdgExecutionException(e); 
     44                        MailHelper.getInstance().terminatedIngestMail(hiProcess); 
     45                } catch (IOException e) {                        
     46                        MailHelper.getInstance().sentProcessFailedMail(hiProcess, formatError(processID, e.getMessage()));       
     47                } catch (NdgRunTimeProcessException e) { 
     48                        MailHelper.getInstance().sentProcessFailedMail(hiProcess, formatError(processID, e.getMessage())); 
    4249                } 
    4350        } 
    4451         
    45         private void manageSystemCall(String aCommand) throws NdgExecutionException {            
     52        private void manageSystemCall(String aCommand) throws NdgRunTimeProcessException {               
    4653                int exitVal = 0;                 
    4754                try { 
     
    5158                                StreamReader stout = new StreamReader(proc.getInputStream()); 
    5259                                StreamReader sterr = new StreamReader(proc.getErrorStream());                            
    53                                 throw new NdgExecutionException(MessageFormatter.getFormattedText(errProcMsg, new Object[]{1, sterr.extractStreamValue()})); 
     60                                throw new NdgRunTimeProcessException(MessageFormatter.getFormattedText(errProcMsg, new Object[]{1, sterr.extractStreamValue()})); 
    5461                        } 
    5562                } catch (InterruptedException e) { 
    56                         throw new NdgExecutionException(e); 
     63                        throw new NdgRunTimeProcessException(e); 
    5764                } catch (IOException e) { 
    58                         throw new NdgExecutionException(e); 
     65                        throw new NdgRunTimeProcessException(e); 
     66                } catch (NdgExecutionException e) { 
     67                        throw new NdgRunTimeProcessException(e); 
    5968                }  
    6069        }  
     70         
     71        private String formatError(int processID, String msg) throws NdgExecutionException { 
     72                String failedMsg = EJBBeanFactory.getModelManager().getConfigurationParameter( 
     73                                ServiceConfigurationParameter.PROCESS_FAILED_EMAIL); 
     74                return MessageFormatter.getFormattedText(failedMsg, new Object[] {processID, msg}); 
     75        } 
    6176} 
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/executor/ExecuteDoIngest.java

    r7316 r7319  
    33import ndg.common.exception.NdgExecutionException; 
    44import ndg.services.revitalization.EJBBeanFactory; 
     5import ndg.services.revitalization.MailHelper; 
    56import ndg.services.schemas.revitalization.DoIngestRequest; 
    67import ndg.services.schemas.revitalization.DoIngestResponse; 
     
    1920                 
    2021                int processID = request.getProcessID().getId();          
    21                 DoIngesterHelper ingester = new DoIngesterHelper(processID);             
     22                DoIngestProcess ingester = new DoIngestProcess(processID);               
    2223                EJBBeanFactory.getMessageDispatcher().dispatchHarvestRequest(ingester); 
    23         }        
     24                MailHelper.getInstance().dispatchedDoIngestMail(request); 
     25        }  
    2426} 
Note: See TracChangeset for help on using the changeset viewer.