Changeset 7465


Ignore:
Timestamp:
09/09/10 08:14:51 (9 years ago)
Author:
mnagni
Message:

Improved ErrorManagement? for the InvokeProcess?
New column in HiProcess? to store the, eventual, failure status. Update the GetStatusRequest?

Location:
RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization
Files:
9 edited

Legend:

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

    r7360 r7465  
    1616 
    1717import ndg.common.exception.NdgExecutionException; 
     18import ndg.services.revitalization.jpa.HiProcess; 
    1819 
    1920/** 
     
    2728         **/ 
    2829        public void invoke() throws NdgExecutionException; 
     30         
     31        /** 
     32         * Returns the connected Process 
     33         * @return the connected HiProcess or <code>null</code> if not possible to retrieve 
     34         **/ 
     35        public HiProcess getHiProcess(); 
    2936} 
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/ejb/AsyncProcessManager.java

    r7389 r7465  
    1616import javax.ejb.Stateless; 
    1717 
    18 import ndg.common.exception.NdgException; 
     18import ndg.common.MessageFormatter; 
    1919import ndg.common.exception.NdgExecutionException; 
     20import ndg.services.revitalization.EJBBeanFactory; 
    2021import ndg.services.revitalization.InvokeProcess; 
     22import ndg.services.revitalization.MailHelper; 
     23import ndg.services.revitalization.dictionary.ServiceConfigurationParameter; 
    2124import ndg.services.revitalization.harvest.ejb.interfaces.AsyncProcessManagerLocal; 
    2225import ndg.services.revitalization.harvest.ejb.interfaces.AsyncProcessManagerRemote; 
     26import ndg.services.revitalization.jpa.HiProcess; 
    2327 
    2428/** 
    2529 * Starts an {@link InvokeProcess} in an asynchronous way 
    2630 *  
    27  * @author Maurizio Nagni <maurizio.nagni@stfc.ac.uk>  
     31 * @author Maurizio Nagni <maurizio.nagni@stfc.ac.uk> 
    2832 */ 
    2933@Stateless(name = "ejb/AsyncProcessManager") 
    3034public class AsyncProcessManager implements AsyncProcessManagerLocal, AsyncProcessManagerRemote { 
    3135 
    32         /**  
    33          * Invokes the process  
    34          * @param process the to invoke  
     36        /** 
     37         * Invokes the process 
     38         *  
     39         * @param process 
     40         *            the to invoke 
    3541         * */ 
    3642        @Override 
    3743        @Asynchronous 
    3844        public final void invoke(InvokeProcess process) { 
    39                         try { 
    40                                 process.invoke(); 
    41                         } catch (NdgExecutionException ex) { 
    42                                 manageError(ex); 
    43                         } 
     45                try { 
     46                        process.invoke(); 
     47                } catch (NdgExecutionException ex) { 
     48                        manageError(process.getHiProcess(), ex); 
     49                } 
    4450        } 
    45  
    46         private void manageError(NdgException ex) { 
    47  
    48                         //MessageFormatter mf = new MessageFormatter();          
    49                         //ct.setMessage(mf.getFormattedText(ex.getBundlMessage())); 
    50                         //ct.setStatus(ERROR); 
     51         
     52        private void manageError(HiProcess hiProcess, NdgExecutionException ex) { 
     53                try { 
     54                        EJBBeanFactory.getModelManager().updateHarvestingLogAndStatus(hiProcess, null); 
     55                        MailHelper.getInstance().sentProcessFailedMail(hiProcess, formatError(hiProcess.getId(), ex.getMessage())); 
     56                } catch (NdgExecutionException e) { 
     57                        e.printStackTrace(); 
     58                } 
     59        } 
     60         
     61        private String formatError(int processID, String msg) throws NdgExecutionException { 
     62                String failedMsg = EJBBeanFactory.getModelManager().getConfigurationParameter( 
     63                                ServiceConfigurationParameter.PROCESS_FAILED_EMAIL); 
     64                return MessageFormatter.getFormattedText(failedMsg, new Object[] {processID, msg}); 
    5165        } 
    5266} 
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/ejb/HiProcessModel.java

    r7389 r7465  
    5353                if (hiProcess != null) 
    5454                        actualProcess.setHarvestDir(hiProcess.getHarvestDir()); 
    55                 if (actualProcess.getHiStatus().getId().equalsIgnoreCase("start_harv")) 
     55                 
     56                if (hiProcess.getHiStatus().getId().equals("failed_harv") || hiProcess.getHiStatus().getId().equals("failed_ingest")) { 
     57                        actualProcess.setHiStatus(em.find(HiStatus.class, hiProcess.getHiStatus().getId())); 
     58                } else if (actualProcess.getHiStatus().getId().equalsIgnoreCase("start_harv")) { 
    5659                        actualProcess.setHiStatus(em.find(HiStatus.class, "run_harv")); 
    57                 if (actualProcess.getHiStatus().getId().equalsIgnoreCase("run_harv")) 
     60                } else if (actualProcess.getHiStatus().getId().equalsIgnoreCase("run_harv")) { 
    5861                        actualProcess.setHiStatus(em.find(HiStatus.class, "end_harv")); 
     62                }  
    5963                return actualProcess; 
    6064        } 
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/ejb/ModelManager.java

    r7393 r7465  
    165165                        // set the process's status to run_harvest 
    166166                        processModel.advanceStatus(hiProcess); 
     167                        if (harvestLog == null) 
     168                                return; 
     169                         
    167170                        HarvestLog existingLog = em.find(HarvestLog.class, harvestLog.getReqId()); 
    168171                        if (existingLog == null) { 
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/executor/ExecuteGetProcessStatusRequest.java

    r7301 r7465  
    2323                List<ProcessIDType> processResponse = getResponse().getProcessID(); 
    2424                ProcessIDType element = null; 
     25                StringBuffer sb = new StringBuffer(); 
    2526                for (HiProcess item : results) { 
     27                        sb = new StringBuffer(); 
    2628                        element = getOf().createProcessIDType(); 
    27                         element.setStatus(item.getHiStatus().getId()); 
     29                        sb.append(item.getHiStatus().getId());                   
     30                        if (item.getInfo() != null && item.getInfo().length() == 0){ 
     31                                sb.append(" Info: "); 
     32                                sb.append(item.getInfo()); 
     33                        }                                
     34                        element.setStatus(sb.toString()); 
    2835                        element.setId(item.getId()); 
    2936                        processResponse.add(element); 
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/executor/IngesterImpl.java

    r7389 r7465  
    4949        } 
    5050 
    51  
     51        public HiProcess getHiProcess() { 
     52                HiProcess hiProcess = null; 
     53                try { 
     54                        return EJBBeanFactory.getModelManager().getHiProcess(ingestRequest.getProcessID()); 
     55                } catch (NdgExecutionException e) { 
     56                        e.printStackTrace(); 
     57                }  
     58                return hiProcess;                         
     59        } 
    5260 
    5361        private final String errProcMsg = "The process returned an errirID:{0}. \n The standard error stream returned: \n {1}"; 
     
    6068                                        ServiceConfigurationParameter.DO_INGEST_CMD); 
    6169 
    62                         hiProcess = EJBBeanFactory.getModelManager().getHiProcess(ingestRequest.getProcessID()); 
     70                        hiProcess = getHiProcess(); 
    6371                        String formattedCmd = MessageFormatter.getFormattedText(cmd, new Object[] {ingestRequest.getProcessID() }); 
    6472                        manageSystemCall(formattedCmd); 
     
    6674                        FileUtils.deleteDirectory(harvDir); 
    6775                        MailHelper.getInstance().terminatedIngestMail(hiProcess); 
    68                 } catch (IOException e) {                        
    69                         MailHelper.getInstance().sentProcessFailedMail(hiProcess, formatError(ingestRequest.getProcessID(), e.getMessage()));    
     76                } catch (IOException e) { 
     77                        //in future a StatePattern could be better 
     78                        getHiProcess().getHiStatus().setId("failed_ingest"); 
     79                        throw new NdgExecutionException(e);      
    7080                } catch (NdgRunTimeProcessException e) { 
    71                         MailHelper.getInstance().sentProcessFailedMail(hiProcess, formatError(ingestRequest.getProcessID(), e.getMessage())); 
     81                        //in future a StatePattern could be better                       
     82                        getHiProcess().getHiStatus().setId("failed_ingest"); 
     83                        throw new NdgExecutionException(e); 
    7284                } 
    7385        } 
     
    91103                }  
    92104        }  
    93          
    94         private String formatError(int processID, String msg) throws NdgExecutionException { 
    95                 String failedMsg = EJBBeanFactory.getModelManager().getConfigurationParameter( 
    96                                 ServiceConfigurationParameter.PROCESS_FAILED_EMAIL); 
    97                 return MessageFormatter.getFormattedText(failedMsg, new Object[] {processID, msg}); 
    98         } 
    99105} 
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/harvest/HarvesterBase.java

    r7389 r7465  
    6262        @Override 
    6363        public final void invoke() throws NdgExecutionException { 
    64                 HarvestLog harvestLog = null; 
    65                 initializeHarvesting(); 
    6664                try { 
     65                        HarvestLog harvestLog = null; 
     66                        initializeHarvesting(); 
    6767                        doHarvest();     
    68                 } finally { 
    6968                        harvestLog = finalizeHarvesting();                       
     69                        EJBBeanFactory.getModelManager().updateHarvestingLogAndStatus(hiProcess, harvestLog);            
     70                        MailHelper.getInstance().terminatedHarvestMail(getHiProcess());                  
     71                } catch (NdgExecutionException ex) { 
     72                        //in future a StatePattern could be better 
     73                        getHiProcess().getHiStatus().setId("failed_harv"); 
     74                        throw new NdgExecutionException(ex); 
    7075                } 
    71                 EJBBeanFactory.getModelManager().updateHarvestingLogAndStatus(hiProcess, harvestLog);            
    72                 MailHelper.getInstance().terminatedHarvestMail(getHiProcess()); 
    7376        } 
    7477         
    75         protected HiProcess getHiProcess() { 
     78        public HiProcess getHiProcess() { 
    7679                return hiProcess; 
    7780        } 
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/harvest/csw/CSWHarvester.java

    r7389 r7465  
    3939import ndg.services.revitalization.harvest.HarvesterBase; 
    4040import ndg.services.revitalization.jpa.HiProcess; 
    41 import net.opengis.csw.ElementSetNameType; 
    42 import net.opengis.csw.ElementSetType; 
    43 import net.opengis.csw.GetRecordsResponseType; 
    44 import net.opengis.csw.GetRecordsType; 
    45 import net.opengis.csw.ObjectFactory; 
    46 import net.opengis.csw.QueryType; 
    47 import net.opengis.csw.ResultType; 
     41import net.opengis.csw._202.ElementSetNameType; 
     42import net.opengis.csw._202.ElementSetType; 
     43import net.opengis.csw._202.GetRecordsResponseType; 
     44import net.opengis.csw._202.GetRecordsType; 
     45import net.opengis.csw._202.ObjectFactory; 
     46import net.opengis.csw._202.QueryType; 
     47import net.opengis.csw._202.ResultType; 
    4848 
    4949import org.apache.xerces.dom.ElementNSImpl; 
     
    164164 
    165165                public <T> JAXBElement<?> marshallerHelper(T res) { 
    166                         if (res.getClass().isAssignableFrom(net.opengis.csw.GetCapabilitiesType.class)) 
    167                                 return cswOF.createGetCapabilities((net.opengis.csw.GetCapabilitiesType) res); 
    168                         if (res.getClass().isAssignableFrom(net.opengis.csw.CapabilitiesType.class)) 
    169                                 return cswOF.createCapabilities((net.opengis.csw.CapabilitiesType) res); 
    170                         if (res.getClass().isAssignableFrom(net.opengis.csw.GetRecordsType.class)) 
    171                                 return cswOF.createGetRecords((net.opengis.csw.GetRecordsType) res); 
    172                         if (res.getClass().isAssignableFrom(net.opengis.csw.GetRecordsResponseType.class)) 
    173                                 return cswOF.createGetRecordsResponse((net.opengis.csw.GetRecordsResponseType) res); 
     166                        if (res.getClass().isAssignableFrom(net.opengis.csw._202.GetCapabilitiesType.class)) 
     167                                return cswOF.createGetCapabilities((net.opengis.csw._202.GetCapabilitiesType) res); 
     168                        if (res.getClass().isAssignableFrom(net.opengis.csw._202.CapabilitiesType.class)) 
     169                                return cswOF.createCapabilities((net.opengis.csw._202.CapabilitiesType) res); 
     170                        if (res.getClass().isAssignableFrom(net.opengis.csw._202.GetRecordsType.class)) 
     171                                return cswOF.createGetRecords((net.opengis.csw._202.GetRecordsType) res); 
     172                        if (res.getClass().isAssignableFrom(net.opengis.csw._202.GetRecordsResponseType.class)) 
     173                                return cswOF.createGetRecordsResponse((net.opengis.csw._202.GetRecordsResponseType) res); 
    174174                        return null; 
    175175                } 
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/jpa/HiProcess.java

    r7312 r7465  
    2626        private HiStatus hiStatus; 
    2727        private Integer providerId;      
     28        private String info; 
    2829 
    2930    public HiProcess() { 
     
    6465        public void setProviderId(Integer providerId) { 
    6566                this.providerId = providerId; 
     67        }                
     68         
     69        public void setInfo(String info) { 
     70                this.info = info; 
    6671        } 
    6772 
     73        @Column(name="info") 
     74        public String getInfo() { 
     75                return this.info; 
     76        } 
     77 
     78         
    6879        //uni-directional many-to-one association to HiStatus 
    6980    @ManyToOne 
Note: See TracChangeset for help on using the changeset viewer.