Changeset 7389 for RevitalizationWS


Ignore:
Timestamp:
27/08/10 13:34:59 (9 years ago)
Author:
mnagni
Message:

Implemented the CSWHarvester.
Major refactoring on the dispatcher (now the Harvester/Ingester? is build AFTER the message is consumed)

Location:
RevitalizationWS/ws/DPWS/trunk
Files:
7 added
1 deleted
23 edited
3 moved

Legend:

Unmodified
Added
Removed
  • RevitalizationWS/ws/DPWS/trunk/pom.xml

    r7360 r7389  
    122122                        <scope>provided</scope> 
    123123                </dependency> 
     124 
    124125                <dependency> 
    125126                        <groupId>org.jboss.security</groupId> 
     
    128129                        <scope>provided</scope> 
    129130                </dependency> 
     131 
     132                <dependency> 
     133                        <groupId>ndg.services.schemas</groupId> 
     134                        <artifactId>ows</artifactId> 
     135                        <version>1.0.0</version> 
     136                        <scope>provided</scope> 
     137                </dependency> 
     138 
     139                <dependency> 
     140                        <groupId>ndg.services.schemas</groupId> 
     141                        <artifactId>gml</artifactId> 
     142                        <version>3.1.1</version> 
     143                        <scope>provided</scope> 
     144                </dependency> 
     145 
     146                <dependency> 
     147                        <groupId>ndg.services.schemas</groupId> 
     148                        <artifactId>filter</artifactId> 
     149                        <version>1.1.0</version> 
     150                        <scope>provided</scope> 
     151                </dependency> 
     152 
     153                <dependency> 
     154                        <groupId>ndg.services.schemas</groupId> 
     155                        <artifactId>csw</artifactId> 
     156                        <version>2.0.2</version> 
     157                        <scope>provided</scope> 
     158                </dependency> 
     159 
     160                <dependency> 
     161                        <groupId>xerces</groupId> 
     162                        <artifactId>xercesImpl</artifactId> 
     163                        <version>2.9.1</version> 
     164                        <scope>provided</scope> 
     165                </dependency> 
     166 
     167                <dependency> 
     168                        <groupId>org.hibernate</groupId> 
     169                        <artifactId>hibernate-annotations</artifactId> 
     170                        <version>3.4.0.GA</version> 
     171                        <scope>provided</scope> 
     172                </dependency> 
     173 
    130174        </dependencies> 
    131175 
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/EJBBeanFactory.java

    r7360 r7389  
    2626 * Utility class to retrieve the remote EJB necessary to the application. 
    2727 *  
    28  * @author Maurizio Nagni <maurizio.nagni@stfc.ac.uk>  
     28 * @author Maurizio Nagni <maurizio.nagni@stfc.ac.uk> 
    2929 **/ 
    3030public class EJBBeanFactory { 
    31          
     31 
    3232        /** 
    3333         * Returns a {@link JMSDispatcherRemote} 
    34          * @return a instance of a JMSDispatcherRemote  
     34         *  
     35         * @return a instance of a JMSDispatcherRemote 
    3536         **/ 
    3637        public static JMSDispatcherRemote getMessageDispatcher() throws NdgExecutionException { 
    37                 return getEJBInstance("JMSDispatcher", JMSDispatcherRemote.class);       
     38                return getEJBInstance("JMSDispatcher", JMSDispatcherRemote.class); 
    3839        } 
    3940 
    4041        /** 
    4142         * Returns a {@link MailDispatcherRemote} 
    42          * @return a instance of a MailDispatcherRemote  
     43         *  
     44         * @return a instance of a MailDispatcherRemote 
    4345         **/ 
    4446        public static MailDispatcherRemote getMailDispatcher() throws NdgExecutionException { 
    4547                return getEJBInstance("MailDispatcher", MailDispatcherRemote.class); 
    4648        } 
    47          
    48          
     49 
    4950        /** 
    5051         * Returns a {@link ModelManagerRemote} 
    51          * @return a instance of a ModelManagerRemote  
     52         *  
     53         * @return a instance of a ModelManagerRemote 
    5254         **/ 
    5355        public static ModelManagerRemote getModelManager() throws NdgExecutionException { 
    5456                return getEJBInstance("ModelManager", ModelManagerRemote.class); 
    5557        } 
    56          
    57         private synchronized static <T> T getEJBInstance(String ejbName, Class<T> remoteEJBclass) throws NdgExecutionException { 
     58 
     59        private synchronized static <T> T getEJBInstance(String ejbName, Class<T> remoteEJBclass) 
     60                        throws NdgExecutionException { 
    5861                try { 
    5962                        Context jndiContext = new javax.naming.InitialContext(); 
    60                     Object ref = jndiContext.lookup(ejbName); 
    61                     return (T) PortableRemoteObject.narrow(ref,remoteEJBclass); 
     63                        Object ref = jndiContext.lookup(ejbName); 
     64                        return (T) PortableRemoteObject.narrow(ref, remoteEJBclass); 
    6265                } catch (NamingException e) { 
    63                         throw new NdgExecutionException(new NdgMessage("execution.error", new Object[] {"jndiContext.lookup(\"" + ejbName + "\")", e.getMessage()}, null)); 
    64                 }        
     66                        throw new NdgExecutionException(new NdgMessage("execution.error", new Object[] { 
     67                                        "jndiContext.lookup(\"" + ejbName + "\")", e.getMessage() }, null)); 
     68                } 
     69 
    6570        } 
    6671} 
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/MailHelper.java

    r7360 r7389  
    2020import ndg.services.revitalization.dictionary.ServiceConfigurationParameter; 
    2121import ndg.services.revitalization.ejb.interfaces.ModelManagerRemote; 
     22import ndg.services.revitalization.harvest.IngestRequest; 
    2223import ndg.services.revitalization.jpa.HiProcess; 
    2324import ndg.services.revitalization.jpa.ProviderCommon; 
    2425import ndg.services.revitalization.jpa.ProviderEmail; 
    25 import ndg.services.schemas.revitalization.DoHarvestRequest; 
    26 import ndg.services.schemas.revitalization.DoIngestRequest; 
    2726 
    2827/** 
    2928 * Offers some helper methods to send specific mails. 
    3029 *  
    31  * @author Maurizio Nagni <maurizio.nagni@stfc.ac.uk>  
     30 * @author Maurizio Nagni <maurizio.nagni@stfc.ac.uk> 
    3231 */ 
    3332public class MailHelper { 
     
    4140 
    4241        /** 
    43          * Informs a list of subscribers that a new harvest operation has been submitted to the system 
    44          * @param the harvest request containing the list of the subscribers to be informed 
    45          * @param the new process instance 
     42         * Informs a list of subscribers that a new harvest operation has been 
     43         * submitted to the system 
     44         *  
     45         * @param the 
     46         *            harvest request containing the list of the subscribers to be 
     47         *            informed 
     48         * @param the 
     49         *            new process instance 
    4650         **/ 
    47         public void newDispatchedHarvestMail(DoHarvestRequest request, HiProcess process) throws NdgExecutionException { 
     51        public void newDispatchedHarvestMail(List<Integer> emailIDs, HiProcess process) throws NdgExecutionException { 
    4852                ModelManagerRemote mmr = EJBBeanFactory.getModelManager(); 
    4953                ProviderCommon common = mmr.getHarvesterConfiguration(process.getProviderId()); 
    50                 List<String> mailTo = filterEmail(request.getEmailReportID(), common); 
    51                  
     54                List<String> mailTo = filterEmail(emailIDs, common); 
     55 
    5256                String text = mmr.getConfigurationParameter(ServiceConfigurationParameter.NEW_DISPATCHED_HARVEST_MAIL); 
    5357                Object[] params = { common.toString(), process.getId() }; 
     
    5660 
    5761        /** 
    58          * Informs a list of subscribers that a harvest operation has terminated. A message is send to  
    59          * all the provider's subscription list. 
    60          * @param the terminated process instance 
    61          **/     
     62         * Informs a list of subscribers that a harvest operation has terminated. A 
     63         * message is send to all the provider's subscription list. 
     64         *  
     65         * @param the 
     66         *            terminated process instance 
     67         **/ 
    6268        public void terminatedHarvestMail(HiProcess hiProcess) throws NdgExecutionException { 
    6369                sendTerminatedProcess(hiProcess, ServiceConfigurationParameter.HARVEST_TERMINATED_MAIL); 
     
    6773                sendTerminatedProcess(hiProcess, ServiceConfigurationParameter.DO_INGEST_PROCESS_TERMINATED_EMAIL); 
    6874        } 
    69          
     75 
    7076        /** 
    71          * Informs a list of subscribers that a new ingest operation has been submitted to the system 
    72          * @param the ingest request containing the list of the subscribers to be informed 
    73          **/     
    74         public void dispatchedDoIngestMail(DoIngestRequest request) throws NdgExecutionException { 
     77         * Informs a list of subscribers that a new ingest operation has been 
     78         * submitted to the system 
     79         *  
     80         * @param the 
     81         *            ingest request containing the list of the subscribers to be 
     82         *            informed 
     83         **/ 
     84        public void dispatchedDoIngestMail(IngestRequest request) throws NdgExecutionException { 
    7585                ModelManagerRemote mmr = EJBBeanFactory.getModelManager(); 
    76                 HiProcess process = mmr.getHiProcess(request.getProcessID().getId()); 
    77                 List<String> mailTo = filterEmail(request.getEmailReportID(), process.getProviderId()); 
    78                  
     86                HiProcess process = mmr.getHiProcess(request.getProcessID()); 
     87                List<String> mailTo = filterEmail(request.getEmailIDs(), process.getProviderId()); 
     88 
    7989                String text = mmr.getConfigurationParameter(ServiceConfigurationParameter.NEW_DISPATCHED_INGEST_MAIL); 
    8090                Object[] params = { process.getId() }; 
     
    91101 
    92102        /** 
    93          * Informs a list of subscribers that an operation has failed. A message is send to  
    94          * all the provider's subscription list. 
    95          * @param hiProcess the failed process instance 
    96          * @param msg the failure message 
     103         * Informs a list of subscribers that an operation has failed. A message is 
     104         * send to all the provider's subscription list. 
     105         *  
     106         * @param hiProcess 
     107         *            the failed process instance 
     108         * @param msg 
     109         *            the failure message 
    97110         **/ 
    98         public void sentProcessFailedMail(HiProcess hiProcess, String msg) throws NdgExecutionException {                
     111        public void sentProcessFailedMail(HiProcess hiProcess, String msg) throws NdgExecutionException { 
    99112                List<String> mailTo = filterEmail(null, hiProcess.getProviderId()); 
    100113                dispatchMail(mailTo, "ProcessId:" + hiProcess.getId(), msg, null); 
     
    108121 
    109122        /** 
    110          * Returns a list of emailIDs extracted from a {@link ProviderCommon}. Such mailIDs are matched with  
    111          * the <code>emailsID</code> parameter if it is not <code>null</code> 
    112          * @param emailIDs the list of IDs to be matched 
    113          * @param common the object containig the default emails information 
    114          * @return a list of emails  
     123         * Returns a list of emailIDs extracted from a {@link ProviderCommon}. Such 
     124         * mailIDs are matched with the <code>emailsID</code> parameter if it is not 
     125         * <code>null</code> 
     126         *  
     127         * @param emailIDs 
     128         *            the list of IDs to be matched 
     129         * @param common 
     130         *            the object containig the default emails information 
     131         * @return a list of emails 
    115132         * */ 
    116133        private List<String> filterEmail(List<Integer> emailIDs, int providerID) throws NdgExecutionException { 
    117134                return filterEmail(emailIDs, EJBBeanFactory.getModelManager().getHarvesterConfiguration(providerID)); 
    118135        } 
    119          
     136 
    120137        /** 
    121          * Returns a list of emailIDs extracted from a {@link ProviderCommon}. Such mailIDs are matched with  
    122          * the <code>emailsID</code> parameter if it is not <code>null</code> 
    123          * @param emailIDs the list of IDs to be matched 
    124          * @param common the object containig the default emails information 
    125          * @return a list of emails  
     138         * Returns a list of emailIDs extracted from a {@link ProviderCommon}. Such 
     139         * mailIDs are matched with the <code>emailsID</code> parameter if it is not 
     140         * <code>null</code> 
     141         *  
     142         * @param emailIDs 
     143         *            the list of IDs to be matched 
     144         * @param common 
     145         *            the object containig the default emails information 
     146         * @return a list of emails 
    126147         * */ 
    127148        private List<String> filterEmail(List<Integer> emailIDs, ProviderCommon common) throws NdgExecutionException { 
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/ejb/AsyncProcessManager.java

    r7360 r7389  
    2626 *  
    2727 * @author Maurizio Nagni <maurizio.nagni@stfc.ac.uk>  
    28  */  
    29 @Stateless(name="ejb/AsyncProcessManager") 
     28 */ 
     29@Stateless(name = "ejb/AsyncProcessManager") 
    3030public class AsyncProcessManager implements AsyncProcessManagerLocal, AsyncProcessManagerRemote { 
    3131 
     
    3636        @Override 
    3737        @Asynchronous 
    38         public final void invoke(InvokeProcess process) {                
    39                 try { 
    40                         process.invoke(); 
    41                 } catch (NdgExecutionException ex) { 
    42                         manageError(ex); 
    43                 } 
     38        public final void invoke(InvokeProcess process) { 
     39                        try { 
     40                                process.invoke(); 
     41                        } catch (NdgExecutionException ex) { 
     42                                manageError(ex); 
     43                        } 
    4444        } 
    45          
     45 
    4646        private void manageError(NdgException ex) { 
    47                 //MessageFormatter mf = new MessageFormatter();          
    48                 //ct.setMessage(mf.getFormattedText(ex.getBundlMessage())); 
    49                 //ct.setStatus(ERROR); 
    50         }        
     47 
     48                        //MessageFormatter mf = new MessageFormatter();          
     49                        //ct.setMessage(mf.getFormattedText(ex.getBundlMessage())); 
     50                        //ct.setStatus(ERROR); 
     51        } 
    5152} 
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/ejb/DPWS.java

    r7360 r7389  
    1616import javax.jws.WebMethod; 
    1717import javax.jws.WebParam; 
    18 import javax.jws.WebResult; 
    1918import javax.jws.WebService; 
    20 import javax.jws.soap.SOAPBinding; 
    21 import javax.jws.soap.SOAPBinding.Style; 
    22 import javax.jws.soap.SOAPBinding.Use; 
    2319 
    2420import ndg.services.revitalization.ejb.interfaces.DPWSLocal; 
     
    5551/** 
    5652 * Session Bean implementation class DPWS 
    57  * @author Maurizio Nagni <maurizio.nagni@stfc.ac.uk>   
     53 *  
     54 * @author Maurizio Nagni <maurizio.nagni@stfc.ac.uk> 
    5855 */ 
    59 //@RolesAllowed("OPERATOR") 
     56// @RolesAllowed("OPERATOR") 
    6057/* 
    61 @PermitAll 
    62 @SecurityDomain("discoveryDomain") 
    63 @WebContext(contextRoot="/discovery", urlPattern="/dpws" ,authMethod="CLIENT-CERT", transportGuarantee="CONFIDENTIAL", secureWSDLAccess=false) 
    64 */ 
     58 * @PermitAll 
     59 *  
     60 * @SecurityDomain("discoveryDomain") 
     61 *  
     62 * @WebContext(contextRoot="/discovery", urlPattern="/dpws" 
     63 * ,authMethod="CLIENT-CERT", transportGuarantee="CONFIDENTIAL", 
     64 * secureWSDLAccess=false) 
     65 */ 
    6566@WebService 
    66 @Stateless(name="dpws") 
    67 @WebContext(contextRoot="/discovery", urlPattern="/dpws") 
     67@Stateless(name = "dpws") 
     68@WebContext(contextRoot = "/discovery", urlPattern = "/dpws") 
    6869public class DPWS implements DPWSRemote, DPWSLocal { 
    69          
    70         @WebMethod(operationName="doHarvest") 
    71         public DoHarvestResponse doHarvest(@WebParam(name="request") DoHarvestRequest request) { 
     70 
     71        @WebMethod(operationName = "doHarvest") 
     72        public DoHarvestResponse doHarvest(@WebParam(name = "request") DoHarvestRequest request) { 
    7273                ServiceExecutor<DoHarvestRequest, DoHarvestResponse> executor = new ExecuteHarvest(); 
    7374                return executor.doService(request); 
    7475        } 
    7576 
    76          
    77         @WebMethod(operationName="getStatusProcess") 
    78         public GetProcessStatusResponse getUsageStats(@WebParam(name="request") GetProcessStatusRequest request) { 
     77        @WebMethod(operationName = "getStatusProcess") 
     78        public GetProcessStatusResponse getUsageStats(@WebParam(name = "request") GetProcessStatusRequest request) { 
    7979                ServiceExecutor<GetProcessStatusRequest, GetProcessStatusResponse> executor = new ExecuteGetProcessStatusRequest(); 
    8080                return executor.doService(request); 
    8181        } 
    8282 
    83         @WebMethod(operationName="getList") 
    84         public GetListResponse getList(@WebParam(name="request")GetListType request) { 
     83        @WebMethod(operationName = "getList") 
     84        public GetListResponse getList(@WebParam(name = "request") GetListType request) { 
    8585                ServiceExecutor<GetListType, GetListResponse> executor = new ExecuteGetList(); 
    8686                return executor.doService(request); 
    8787        } 
    88          
    89         @WebMethod(operationName="doNewUpdateProvider") 
    90         public DoNewUpdateProviderResponse doNewProvider(@WebParam(name="request") DoNewUpdateProviderRequest request) { 
     88 
     89        @WebMethod(operationName = "doNewUpdateProvider") 
     90        public DoNewUpdateProviderResponse doNewProvider(@WebParam(name = "request") DoNewUpdateProviderRequest request) { 
    9191                ServiceExecutor<DoNewUpdateProviderRequest, DoNewUpdateProviderResponse> executor = new ExecuteDoNewProvider(); 
    9292                return executor.doService(request); 
    93         }        
    94          
    95         @WebMethod(operationName="getListNames") 
     93        } 
     94 
     95        @WebMethod(operationName = "getListNames") 
    9696        public GetListNamesResponse getListNames() { 
    9797                ServiceExecutor<Object, GetListNamesResponse> executor = new ExecuteGetListNames(); 
    9898                return executor.doService(null); 
    99         }                
    100          
    101         @WebMethod(operationName="getProviderDetails") 
    102         public GetProviderDetailsResponse getProviderDetails(@WebParam(name="request") GetProviderDetailsRequest request) { 
     99        } 
     100 
     101        @WebMethod(operationName = "getProviderDetails") 
     102        public GetProviderDetailsResponse getProviderDetails(@WebParam(name = "request") GetProviderDetailsRequest request) { 
    103103                ServiceExecutor<GetProviderDetailsRequest, GetProviderDetailsResponse> executor = new ExecuteGetProviderDetails(); 
    104                 return executor.doService(request);  
     104                return executor.doService(request); 
    105105        } 
    106          
    107         @WebMethod(operationName="getHarvestHistory") 
    108         public GetHarvestHistoryResponse getHarvestHistory(@WebParam(name="request") GetHistoryRequest request) { 
     106 
     107        @WebMethod(operationName = "getHarvestHistory") 
     108        public GetHarvestHistoryResponse getHarvestHistory(@WebParam(name = "request") GetHistoryRequest request) { 
    109109                ServiceExecutor<GetHistoryRequest, GetHarvestHistoryResponse> executor = new ExecuteGetHarvestHistory(); 
    110                 return executor.doService(request);  
     110                return executor.doService(request); 
    111111        } 
    112          
    113         @WebMethod(operationName="getIngestHistory") 
    114         public GetIngestHistoryResponse getIngestHistory(@WebParam(name="request") GetHistoryRequest request) { 
     112 
     113        @WebMethod(operationName = "getIngestHistory") 
     114        public GetIngestHistoryResponse getIngestHistory(@WebParam(name = "request") GetHistoryRequest request) { 
    115115                ServiceExecutor<GetHistoryRequest, GetIngestHistoryResponse> executor = new ExecuteGetIngestHistory(); 
    116116                return executor.doService(request); 
    117117        } 
    118          
    119         @WebMethod(operationName="doIngest") 
    120         public DoIngestResponse doIngest(@WebParam(name="request") DoIngestRequest request) { 
     118 
     119        @WebMethod(operationName = "doIngest") 
     120        public DoIngestResponse doIngest(@WebParam(name = "request") DoIngestRequest request) { 
    121121                ServiceExecutor<DoIngestRequest, DoIngestResponse> executor = new ExecuteDoIngest(); 
    122122                return executor.doService(request); 
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/ejb/HiProcessModel.java

    r7312 r7389  
    1414import ndg.services.revitalization.jpa.HiStatus; 
    1515 
    16  
    1716/** 
    1817 * Session Bean implementation class HiProcessModel 
     
    2221 
    2322        private final static String GET_HI_PROCESS = "select hp from HiProcess hp where hp.id IN (:hpID)"; 
    24          
     23 
     24        /* 
    2525        private enum STATUS { 
    26                 START_HARV("start_harv"), 
    27                 RUN_HARV("run_harv"), 
    28                 END_HARV("end_harv"), 
    29                 START_INGEST("start_ingest"), 
    30                 RUN_INGEST("run_ingest"), 
    31                 END_INGEST("end_ingest"); 
    32                  
     26                START_HARV("start_harv"), RUN_HARV("run_harv"), END_HARV("end_harv"), START_INGEST("start_ingest"), RUN_INGEST( 
     27                                "run_ingest"), END_INGEST("end_ingest"); 
     28 
    3329                private final String status; 
    34                 private STATUS(String status){ 
     30 
     31                private STATUS(String status) { 
    3532                        this.status = status; 
    3633                } 
    37         }; 
    38          
     34        };*/ 
     35 
    3936        @PersistenceContext(unitName = "discoveryDPWS") 
    4037        private EntityManager em; 
    4138 
    4239        @Override 
    43         @TransactionAttribute(value=TransactionAttributeType.REQUIRES_NEW)  
     40        @TransactionAttribute(value = TransactionAttributeType.REQUIRES_NEW) 
    4441        public HiProcess createNewProcess(int providerID) { 
    4542                HiProcess hiProcess = new HiProcess(); 
     
    4946                return hiProcess; 
    5047        } 
    51          
     48 
    5249        @Override 
    53         @TransactionAttribute(value=TransactionAttributeType.SUPPORTS)  
     50        @TransactionAttribute(value = TransactionAttributeType.SUPPORTS) 
    5451        public HiProcess advanceStatus(HiProcess hiProcess) { 
    5552                HiProcess actualProcess = em.find(HiProcess.class, hiProcess.getId()); 
     
    5754                        actualProcess.setHarvestDir(hiProcess.getHarvestDir()); 
    5855                if (actualProcess.getHiStatus().getId().equalsIgnoreCase("start_harv")) 
    59                         actualProcess.setHiStatus(em.find(HiStatus.class, "run_harv"));          
     56                        actualProcess.setHiStatus(em.find(HiStatus.class, "run_harv")); 
    6057                if (actualProcess.getHiStatus().getId().equalsIgnoreCase("run_harv")) 
    61                         actualProcess.setHiStatus(em.find(HiStatus.class, "end_harv"));                          
     58                        actualProcess.setHiStatus(em.find(HiStatus.class, "end_harv")); 
    6259                return actualProcess; 
    6360        } 
    64          
     61 
    6562        public List<HiProcess> getHiProcess(List<Integer> processIDs) { 
    6663                Query query = em.createQuery(GET_HI_PROCESS); 
    6764                query.setParameter("hpID", processIDs); 
    6865                return (List<HiProcess>) query.getResultList(); 
    69         }        
     66        } 
    7067} 
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/ejb/JMSConsumer.java

    r7316 r7389  
     1/* 
     2 * BSD Licence 
     3 * Copyright (c) 2009, Science & Technology Facilities Council (STFC) 
     4 * All rights reserved. 
     5 
     6 * See the LICENSE file in the source distribution of this software for 
     7 * the full license text.        
     8 * Copyright (C) 2007 STFC & NERC (Science and Technology Facilities Council). 
     9 * This software may be distributed under the terms of the 
     10 * Q Public License, version 1.0 or later. 
     11 * http://ndg.nerc.ac.uk/public_docs/QPublic_license.txt 
     12 */ 
    113package ndg.services.revitalization.ejb; 
    214 
     
    1123 
    1224import ndg.services.revitalization.InvokeProcess; 
     25import ndg.services.revitalization.executor.IngesterImpl; 
     26import ndg.services.revitalization.harvest.HarvestRequest; 
     27import ndg.services.revitalization.harvest.Harvester; 
     28import ndg.services.revitalization.harvest.IngestRequest; 
     29import ndg.services.revitalization.harvest.ProviderAdapter; 
    1330import ndg.services.revitalization.harvest.ejb.interfaces.AsyncProcessManagerLocal; 
    1431 
     32/** 
     33 * Receives all the Harvest/Ingest request and assigns them to the proper 
     34 * Process. 
     35 *  
     36 * @author Maurizio Nagni <maurizio.nagni@stfc.ac.uk> 
     37 */ 
    1538@MessageDriven(activationConfig = { 
    1639                @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"), 
    1740                @ActivationConfigProperty(propertyName = "destination", propertyValue = "DiscoveryHarvestQueue"), 
    18                 @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Dups-ok-acknowledge")}) 
     41                @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Dups-ok-acknowledge") }) 
    1942@TransactionManagement(value = TransactionManagementType.BEAN) 
    2043public class JMSConsumer implements MessageListener { 
    21          
     44 
    2245        @EJB 
    2346        private AsyncProcessManagerLocal executor; 
    24          
     47 
    2548        public void onMessage(Message message) { 
    2649                try { 
    2750                        ObjectMessage objMessage = (ObjectMessage) message; 
    2851 
    29                         if ((objMessage.getObject() instanceof InvokeProcess)) 
    30                                 executor.invoke((InvokeProcess) objMessage.getObject()); 
    31                          
     52                        if ((objMessage.getObject() instanceof HarvestRequest)) { 
     53                                Harvester harvester = ProviderAdapter.getInstance().getHarvester( 
     54                                                (HarvestRequest) objMessage.getObject()); 
     55                                executor.invoke((InvokeProcess) harvester); 
     56                        } 
     57 
     58                        if ((objMessage.getObject() instanceof IngestRequest)) { 
     59                                IngesterImpl ingester = new IngesterImpl((IngestRequest) objMessage.getObject()); 
     60                                executor.invoke((InvokeProcess) ingester); 
     61                        } 
    3262                        return; 
    33                          
    3463                } catch (Exception e) { 
    3564                        e.printStackTrace(); 
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/ejb/JMSDispatcher.java

    r7360 r7389  
    2424        @Resource(mappedName = "java:/JmsXA") 
    2525        private ConnectionFactory connectionFactory; 
    26          
     26 
    2727        @Resource(mappedName = "DiscoveryHarvestQueue") 
    2828        private Queue queue; 
    29          
     29 
    3030        @Override 
    31         public void dispatchHarvestRequest(Serializable doRequest){ 
     31        public void dispatchHarvestRequest(Serializable doRequest) { 
    3232                Connection connection = null; 
    3333                Session session = null; 
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/ejb/MailDispatcher.java

    r7360 r7389  
    2020 * Session Bean implementation class MailDispatcher 
    2121 */ 
    22 @Stateless(mappedName="MailDispatcher") 
     22@Stateless(mappedName = "MailDispatcher") 
    2323public class MailDispatcher implements MailDispatcherRemote, MailDispatcherLocal { 
    24         @Resource(mappedName="mail/DiscoveryMail") 
     24        @Resource(mappedName = "mail/DiscoveryMail") 
    2525        private javax.mail.Session mailSession; 
    26          
     26 
    2727        public static final String mailFrom = "discovery@badc.rl.ac.uk"; 
    28          
     28 
    2929        public void sendMail(List<String> mailTo, String subject, String msgText) { 
    30                 if (mailTo == null || mailTo.size() == 0) 
    31                         return; //really should raise an exception 
    32                 List<Address> addresses = new ArrayList<Address>(); 
    33                 Address addr = null; 
    34                 for (String mail: mailTo) { 
     30                        if (mailTo == null || mailTo.size() == 0) { 
     31                                return; 
     32                        }//really should raise an exception 
     33                        List<Address> addresses = new ArrayList<Address>(); 
     34                        Address addr = null; 
     35                        for (String mail : mailTo) { 
     36                                try { 
     37                                        addr = new InternetAddress(mail); 
     38                                        addresses.add(addr); 
     39                                } catch (AddressException e) { 
     40                                        //really should raise an exception 
     41                                        e.printStackTrace(); 
     42                                } 
     43                        } 
     44                        MimeMessage msg = new MimeMessage(mailSession); 
     45 
    3546                        try { 
    36                                 addr = new InternetAddress(mail); 
    37                                 addresses.add(addr); 
     47                                msg.setRecipients(Message.RecipientType.TO, addresses.toArray(new InternetAddress[0])); 
     48                                msg.setFrom(new InternetAddress(mailFrom)); 
     49                                msg.setSubject(subject); 
     50                                msg.setText(msgText); 
     51 
     52                                Transport transport = mailSession.getTransport(); 
     53                                transport.connect(); 
     54                                transport.sendMessage(msg, msg.getAllRecipients()); 
     55 
    3856                        } catch (AddressException e) { 
    39                                 //really should raise an exception 
     57                                // TODO Auto-generated catch block 
     58                                e.printStackTrace(); 
     59                        } catch (MessagingException e) { 
     60                                // TODO Auto-generated catch block 
    4061                                e.printStackTrace(); 
    4162                        } 
    42                 } 
    43                 MimeMessage msg = new MimeMessage(mailSession); 
    44  
    45                 try { 
    46                         msg.setRecipients(Message.RecipientType.TO, addresses.toArray(new InternetAddress[0])); 
    47                         msg.setFrom(new InternetAddress(mailFrom)); 
    48                         msg.setSubject(subject); 
    49                         msg.setText(msgText); 
    50  
    51                         Transport transport = mailSession.getTransport(); 
    52                         transport.connect(); 
    53                         transport.sendMessage(msg, msg.getAllRecipients()); 
    54                          
    55                 } catch (AddressException e) { 
    56                         // TODO Auto-generated catch block 
    57                         e.printStackTrace(); 
    58                 } catch (MessagingException e) { 
    59                         // TODO Auto-generated catch block 
    60                         e.printStackTrace(); 
    61                 } 
    6263        } 
    6364} 
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/ejb/ModelManager.java

    r7360 r7389  
    77import java.util.List; 
    88 
    9 import javax.annotation.Resource; 
    109import javax.ejb.EJB; 
    11 import javax.ejb.SessionContext; 
    1210import javax.ejb.Stateless; 
    1311import javax.ejb.TransactionAttribute; 
     
    5553        private HiProcessModelLocal processModel; 
    5654 
     55        /* 
    5756        @Resource 
    5857        private SessionContext sessionContext; 
     58        */ 
    5959 
    6060        public List<String> getServiceParameterNames() { 
    61                 Query query = em.createQuery(GET_SERVICE_PARAMETER_NAMES); 
    62                 return (List<String>) query.getResultList(); 
     61                        Query query = em.createQuery(GET_SERVICE_PARAMETER_NAMES); 
     62                        return (List<String>) query.getResultList(); 
    6363        } 
    6464 
    6565        public List<String> getServiceParameterNamesValues(String parName) { 
    66                 Query query = em.createQuery(GET_SERVICE_PARAMETER_VALUES); 
    67                 query.setParameter("parName", parName); 
    68                 List<ServiceParameterValue> parValues = query.getResultList(); 
    69                 List<String> ret = new ArrayList<String>(); 
    70                 if (parValues != null && parValues.size() > 0) { 
    71                         for (ServiceParameterValue parValue : parValues) { 
    72                                 ret.add(parValue.getValue()); 
    73                         } 
    74                 } 
    75                 return ret; 
     66                        Query query = em.createQuery(GET_SERVICE_PARAMETER_VALUES); 
     67                        query.setParameter("parName", parName); 
     68                        List<ServiceParameterValue> parValues = query.getResultList(); 
     69                        List<String> ret = new ArrayList<String>(); 
     70                        if (parValues != null && parValues.size() > 0) { 
     71                                for (ServiceParameterValue parValue : parValues) { 
     72                                        ret.add(parValue.getValue()); 
     73                                } 
     74                        } 
     75                        return ret; 
    7676        } 
    7777 
     
    9393         * */ 
    9494        public List<ProviderLogs> getHarvestByProvider(Timestamp start, Timestamp end, int providerId) { 
    95                 Query query = null; 
    96                 if (Double.isNaN(providerId)) { 
    97                         query = em.createQuery(GET_HARVEST_LOG_ALL_PROVIDER); 
    98                 } else { 
    99                         query = em.createQuery(GET_HARVEST_LOG_BY_PROVIDER); 
    100                         query.setParameter("providerID", providerId); 
    101                 } 
    102  
    103                 query.setParameter("start", start); 
    104                 query.setParameter("end", end); 
    105  
    106                 if (start == null) { 
    107                         Calendar date = Calendar.getInstance(); 
    108                         date.set(Calendar.YEAR, -100); 
    109                         query.setParameter("start", new Timestamp(date.getTimeInMillis())); 
    110                 } 
    111  
    112                 if (end == null) 
    113                         query.setParameter("end", new Timestamp(Calendar.getInstance().getTimeInMillis())); 
    114                  
    115                 List<ProviderLogs> ret = new ArrayList<ProviderLogs>(); 
    116                 ProviderLogs tempLogs = null; 
    117                 for (Iterator iter = query.getResultList().iterator() ; iter.hasNext() ;) {                      
    118                         Object[] resultElement = (Object[])iter.next(); 
    119                         tempLogs = new ProviderLogs((Integer)resultElement[1]); 
    120                         if (tempLogs.getProviderID() == null) 
    121                                 continue; 
    122                         int index = ret.indexOf(tempLogs);  
    123                         if (index > -1){ 
    124                                 tempLogs = ret.get(index); 
    125                         } else {                                 
    126                                 ret.add(tempLogs);       
    127                         } 
    128                         tempLogs.getLogs().add((HarvestLog)resultElement[0]); 
    129                 } 
    130                 return ret; 
     95                        Query query = null; 
     96                        if (Double.isNaN(providerId)) { 
     97                                query = em.createQuery(GET_HARVEST_LOG_ALL_PROVIDER); 
     98                        } else { 
     99                                query = em.createQuery(GET_HARVEST_LOG_BY_PROVIDER); 
     100                                query.setParameter("providerID", providerId); 
     101                        } 
     102 
     103                        query.setParameter("start", start); 
     104                        query.setParameter("end", end); 
     105 
     106                        if (start == null) { 
     107                                Calendar date = Calendar.getInstance(); 
     108                                date.set(Calendar.YEAR, -100); 
     109                                query.setParameter("start", new Timestamp(date.getTimeInMillis())); 
     110                        } 
     111 
     112                        if (end == null) 
     113                                query.setParameter("end", new Timestamp(Calendar.getInstance().getTimeInMillis())); 
     114 
     115                        List<ProviderLogs> ret = new ArrayList<ProviderLogs>(); 
     116                        ProviderLogs tempLogs = null; 
     117                        for (Iterator iter = query.getResultList().iterator(); iter.hasNext();) { 
     118                                Object[] resultElement = (Object[]) iter.next(); 
     119                                tempLogs = new ProviderLogs((Integer) resultElement[1]); 
     120                                if (tempLogs.getProviderID() == null) 
     121                                        continue; 
     122                                int index = ret.indexOf(tempLogs); 
     123                                if (index > -1) { 
     124                                        tempLogs = ret.get(index); 
     125                                } else { 
     126                                        ret.add(tempLogs); 
     127                                } 
     128                                tempLogs.getLogs().add((HarvestLog) resultElement[0]); 
     129                        } 
     130                        return ret; 
    131131        } 
    132132 
    133133        public List<IngestSearchLogging> getIngestLogs(List<Integer> processIds) { 
    134                 Query query = em.createQuery(GET_INGESTER_HISTORY); 
    135                 query.setParameter("processIds", processIds); 
    136                 return (List<IngestSearchLogging>) query.getResultList(); 
     134                        Query query = em.createQuery(GET_INGESTER_HISTORY); 
     135                        query.setParameter("processIds", processIds); 
     136                        return (List<IngestSearchLogging>) query.getResultList(); 
    137137        } 
    138138 
    139139        public List<HarvestLog> getHarvestLog(List<Integer> processIds) { 
    140                 Query query = em.createQuery(GET_HARVEST_HISTORY); 
    141                 query.setParameter("processIds", processIds); 
    142                 return (List<HarvestLog>) query.getResultList(); 
     140                        Query query = em.createQuery(GET_HARVEST_HISTORY); 
     141                        query.setParameter("processIds", processIds); 
     142                        return (List<HarvestLog>) query.getResultList(); 
    143143        } 
    144144 
    145145        @TransactionAttribute(value = TransactionAttributeType.REQUIRES_NEW) 
    146146        public void updateHarvestingLogAndStatus(HiProcess hiProcess, HarvestLog harvestLog) { 
    147                 // set the process's status to run_harvest 
    148                 processModel.advanceStatus(hiProcess); 
    149                 HarvestLog existingLog = em.find(HarvestLog.class, harvestLog.getReqId()); 
    150                 if (existingLog == null) { 
    151                         em.persist(harvestLog); 
    152                 } else { 
    153                         em.merge(harvestLog); 
    154                 } 
     147                        // set the process's status to run_harvest 
     148                        processModel.advanceStatus(hiProcess); 
     149                        HarvestLog existingLog = em.find(HarvestLog.class, harvestLog.getReqId()); 
     150                        if (existingLog == null) { 
     151                                em.persist(harvestLog); 
     152                        } else { 
     153                                em.merge(harvestLog); 
     154                        } 
    155155        } 
    156156 
    157157        @TransactionAttribute(value = TransactionAttributeType.REQUIRES_NEW) 
    158158        public <T extends ProviderCommon> T createNewProvider(T provider) { 
    159                 if (provider.getId() == null) { 
    160                         em.persist(provider); 
    161                         int id = provider.getId(); 
    162                         for (ProviderEmail email : provider.getProviderEmails()) { 
    163                                 email.setCommonId(id); 
    164                         } 
    165                 } else { 
    166                         ProviderCommon oldProvider = em.find(ProviderCommon.class, provider.getId()); 
    167  
    168                         Iterator<ProviderEmail> iterator = oldProvider.getProviderEmails().iterator(); 
    169                         ProviderEmail item = null; 
    170                         while (iterator.hasNext()) { 
    171                                 item = iterator.next(); 
    172                                 if (!provider.getProviderEmails().contains(item)) 
    173                                         em.remove(item); 
    174                         } 
    175                 } 
    176                 return em.merge(provider); 
     159                        if (provider.getId() == null) { 
     160                                em.persist(provider); 
     161                                int id = provider.getId(); 
     162                                for (ProviderEmail email : provider.getProviderEmails()) { 
     163                                        email.setCommonId(id); 
     164                                } 
     165                        } else { 
     166                                ProviderCommon oldProvider = em.find(ProviderCommon.class, provider.getId()); 
     167 
     168                                Iterator<ProviderEmail> iterator = oldProvider.getProviderEmails().iterator(); 
     169                                ProviderEmail item = null; 
     170                                while (iterator.hasNext()) { 
     171                                        item = iterator.next(); 
     172                                        if (!provider.getProviderEmails().contains(item)) 
     173                                                em.remove(item); 
     174                                } 
     175                        } 
     176                        return em.merge(provider); 
    177177        } 
    178178 
    179179        public HiProcess createNewProcess(int providerID) { 
    180                 return processModel.createNewProcess(providerID); 
     180                        return processModel.createNewProcess(providerID); 
    181181        } 
    182182 
    183183        public List<HiProcess> getHiProcess(List<Integer> processIDs) { 
    184                 return processModel.getHiProcess(processIDs); 
     184                        return processModel.getHiProcess(processIDs); 
    185185        } 
    186186 
    187187        public HiProcess getHiProcess(Integer processID) { 
    188                 List<Integer> id = new ArrayList<Integer>(); 
    189                 id.add(processID); 
    190                 List<HiProcess> rets = processModel.getHiProcess(id); 
    191                 return rets.size()>0 ? rets.get(0) : null; 
    192         } 
    193          
     188                        List<Integer> id = new ArrayList<Integer>(); 
     189                        id.add(processID); 
     190                        List<HiProcess> rets = processModel.getHiProcess(id); 
     191                        return rets.size() > 0 ? rets.get(0) : null; 
     192        } 
     193 
    194194        public ProviderCommon getProviderCommon(int commonId) { 
    195                 Query query = em.createQuery(GET_PROVIDER_COMMON_BY_ID); 
    196                 query.setParameter("id", commonId); 
    197                 List<ProviderCommon> values = query.getResultList(); 
    198                 if (values == null || values.size() == 0) 
    199                         return null; 
    200                 return values.get(0); 
     195                        Query query = em.createQuery(GET_PROVIDER_COMMON_BY_ID); 
     196                        query.setParameter("id", commonId); 
     197                        List<ProviderCommon> values = query.getResultList(); 
     198                        if (values == null || values.size() == 0) { 
     199                                return null; 
     200                        } 
     201                        return values.get(0); 
    201202        } 
    202203 
    203204        public String getConfigurationParameter(ServiceConfigurationParameter param) { 
    204                 Query query = em.createQuery(GET_CONFIGURATION_PARAMETER); 
    205                 query.setParameter("id", param.name()); 
    206                 List<ServiceConfig> values = query.getResultList(); 
    207                 if (values == null || values.size() == 0) 
    208                         return null; 
    209                 return values.get(0).getParamValue(); 
     205                        Query query = em.createQuery(GET_CONFIGURATION_PARAMETER); 
     206                        query.setParameter("id", param.name()); 
     207                        List<ServiceConfig> values = query.getResultList(); 
     208                        if (values == null || values.size() == 0) { 
     209                                return null; 
     210                        } 
     211                        return values.get(0).getParamValue(); 
    210212        } 
    211213 
     
    218220         * */ 
    219221        public ProviderCommon getHarvesterConfiguration(int commonID) { 
    220                 ProviderCommon ret = null; 
    221                 ret = getProvider(commonID, GET_OAI_PROVIDER); 
    222                 if (ret == null) 
    223                         ret = getProvider(commonID, GET_CSW_PROVIDER); 
    224  
    225                 return ret; 
     222                        ProviderCommon ret = null; 
     223                        ret = getProvider(commonID, GET_OAI_PROVIDER); 
     224                        if (ret == null) 
     225                                ret = getProvider(commonID, GET_CSW_PROVIDER); 
     226                        return ret; 
    226227        } 
    227228 
    228229        @Override 
    229230        public List<? extends ProviderCommon> getHarvesterConfiguration(List<Integer> commonIDs) { 
    230                 List<ProviderCommon> ret = new ArrayList<ProviderCommon>(); 
    231                 if (commonIDs == null || commonIDs.size() == 0) { 
    232                         Query query = em.createQuery(GET_PROVIDER_COMMON); 
    233                         return query.getResultList();                    
    234                 } 
    235                 ProviderCommon provider = null; 
    236                 for (Integer id : commonIDs) { 
    237                         provider = getHarvesterConfiguration(id); 
    238                         if (provider != null) 
    239                                 ret.add(provider); 
    240                 } 
    241                 return ret; 
     231                        List<ProviderCommon> ret = new ArrayList<ProviderCommon>(); 
     232                        if (commonIDs == null || commonIDs.size() == 0) { 
     233                                Query query = em.createQuery(GET_PROVIDER_COMMON); 
     234                                return query.getResultList(); 
     235                        } 
     236                        ProviderCommon provider = null; 
     237                        for (Integer id : commonIDs) { 
     238                                provider = getHarvesterConfiguration(id); 
     239                                if (provider != null) 
     240                                        ret.add(provider); 
     241                        } 
     242                        return ret; 
    242243        } 
    243244 
    244245        private <T extends ProviderCommon> T getProvider(int id, String queryText) { 
    245                 Query query = em.createQuery(queryText); 
    246                 query.setParameter("id", id); 
    247                 List<T> values = query.getResultList(); 
    248                 if (values == null || values.size() == 0) 
    249                         return null; 
    250                 return values.get(0); 
    251         } 
    252  
    253          
     246                        Query query = em.createQuery(queryText); 
     247                        query.setParameter("id", id); 
     248                        List<T> values = query.getResultList(); 
     249                        if (values == null || values.size() == 0) { 
     250                                return null; 
     251                        } 
     252                        return values.get(0); 
     253        } 
     254 
    254255} 
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/exception/NdgHarvestNotExistingException.java

    r7271 r7389  
    99 
    1010        public NdgHarvestNotExistingException() { 
    11                 // TODO Auto-generated constructor stub 
     11 
    1212        } 
    1313 
    1414        public NdgHarvestNotExistingException(String arg0) { 
    1515                super(arg0); 
    16                 // TODO Auto-generated constructor stub 
    1716        } 
    1817 
    1918        public NdgHarvestNotExistingException(Throwable arg0) { 
    2019                super(arg0); 
    21                 // TODO Auto-generated constructor stub 
    2220        } 
    2321 
    2422        public NdgHarvestNotExistingException(NdgMessage bundleMessage) { 
    2523                super(bundleMessage); 
    26                 // TODO Auto-generated constructor stub 
    2724        } 
    2825 
    2926        public NdgHarvestNotExistingException(String arg0, Throwable arg1) { 
    3027                super(arg0, arg1); 
    31                 // TODO Auto-generated constructor stub 
    3228        } 
    3329 
    3430        public NdgHarvestNotExistingException(NdgMessage bundleMessage, Throwable th) { 
    3531                super(bundleMessage, th); 
    36                 // TODO Auto-generated constructor stub 
    3732        } 
    38  
    3933} 
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/executor/ExecuteDoIngest.java

    r7319 r7389  
     1/* 
     2 * BSD Licence 
     3 * Copyright (c) 2009, Science & Technology Facilities Council (STFC) 
     4 * All rights reserved. 
     5 
     6 * See the LICENSE file in the source distribution of this software for 
     7 * the full license text.        
     8 * Copyright (C) 2007 STFC & NERC (Science and Technology Facilities Council). 
     9 * This software may be distributed under the terms of the 
     10 * Q Public License, version 1.0 or later. 
     11 * http://ndg.nerc.ac.uk/public_docs/QPublic_license.txt 
     12 */ 
    113package ndg.services.revitalization.executor; 
    214 
     
    416import ndg.services.revitalization.EJBBeanFactory; 
    517import ndg.services.revitalization.MailHelper; 
     18import ndg.services.revitalization.harvest.IngestRequest; 
    619import ndg.services.schemas.revitalization.DoIngestRequest; 
    720import ndg.services.schemas.revitalization.DoIngestResponse; 
     
    1528 
    1629        @Override 
    17         protected void execute(DoIngestRequest request) throws NdgExecutionException { 
    18                 if (request.getProcessID() == null) 
     30        protected void execute(DoIngestRequest doRequest) throws NdgExecutionException { 
     31                if (doRequest.getProcessID() == null) 
    1932                        throw new NdgExecutionException("The ProcessID cannot be empty"); 
    2033                 
    21                 int processID = request.getProcessID().getId();          
    22                 DoIngestProcess ingester = new DoIngestProcess(processID);               
    23                 EJBBeanFactory.getMessageDispatcher().dispatchHarvestRequest(ingester); 
     34                IngestRequest request = new IngestRequest(doRequest.getProcessID().getId(), doRequest.getEmailReportID());               
     35                EJBBeanFactory.getMessageDispatcher().dispatchHarvestRequest(request); 
    2436                MailHelper.getInstance().dispatchedDoIngestMail(request); 
    2537        }  
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/executor/ExecuteDoNewProvider.java

    r7360 r7389  
    77import ndg.common.exception.NdgExecutionException; 
    88import ndg.services.revitalization.EJBBeanFactory; 
     9import ndg.services.revitalization.harvest.ProviderAdapter; 
     10import ndg.services.revitalization.harvest.ProviderAdapterFactory; 
     11import ndg.services.revitalization.harvest.ProviderAdapterHelper; 
    912import ndg.services.revitalization.jpa.ProviderCommon; 
    1013import ndg.services.revitalization.jpa.ProviderEmail; 
     
    106109                pct.setProviderURL(ret.getBaseUrl());            
    107110                extractProviderEmails(pct, ret);                 
    108                 ProviderAdapterHelper helper = ProviderAdapterHelper.getProviderAdapter(ret.getClass()); 
     111                ProviderAdapterHelper helper = ProviderAdapterFactory.getProviderAdapterHelper(ret.getClass()); 
    109112                pd.setProviderType(helper.extractDetails(ret, getOf()));                         
    110113        } 
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/executor/ExecuteGetProviderDetails.java

    r7312 r7389  
    77import ndg.services.revitalization.EJBBeanFactory; 
    88import ndg.services.revitalization.ejb.interfaces.ModelManagerRemote; 
     9import ndg.services.revitalization.harvest.ProviderAdapter; 
    910import ndg.services.revitalization.jpa.ProviderCommon; 
    1011import ndg.services.revitalization.jpa.ProviderEmail; 
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/executor/ExecuteHarvest.java

    r7360 r7389  
    33import java.io.Serializable; 
    44 
    5 import ndg.common.NdgMessage; 
    65import ndg.common.ejb.JMSDispatcherRemote; 
    76import ndg.common.exception.NdgExecutionException; 
     
    98import ndg.services.revitalization.MailHelper; 
    109import ndg.services.revitalization.ejb.interfaces.ModelManagerRemote; 
    11 import ndg.services.revitalization.exception.NdgHarvestNotExistingException; 
    1210import ndg.services.revitalization.harvest.HarvestRequest; 
    13 import ndg.services.revitalization.harvest.Harvester; 
     11import ndg.services.revitalization.harvest.ProviderAdapter; 
    1412import ndg.services.revitalization.jpa.HiProcess; 
    1513import ndg.services.schemas.revitalization.DoHarvestRequest; 
     
    2523 
    2624        @Override 
    27         protected void execute(DoHarvestRequest request) 
     25        protected void execute(DoHarvestRequest doRequest) 
    2826                        throws NdgExecutionException { 
    29                 HiProcess process = createHiProcess(request.getProviderID()); 
     27                HiProcess hiProcess = createHiProcess(doRequest.getProviderID()); 
    3028                ProcessIDType procId = getOf().createProcessIDType(); 
    31                 procId.setId(process.getId()); 
     29                procId.setId(hiProcess.getId()); 
     30 
    3231                getResponse().setProcessID(procId); 
    3332                getResponse().setConfirmation(getOf().createConfirmationType()); 
    34                                  
    35                 //DispatchedHarvestRequest requestDispatch = new DispatchedHarvestRequest(request, process); 
    36                 Harvester<? extends HarvestRequest> harvester; 
    37                 try { 
    38                         harvester = getHarvester(request, process); 
    39                         dispatchHarvestRequest(harvester);                       
    40                         MailHelper.getInstance().newDispatchedHarvestMail(request, process); 
    41                 } catch (NdgHarvestNotExistingException e) { 
    42                         throw new NdgExecutionException(new NdgMessage("null.object", new Object[]{"Harvest"})); 
    43                 } 
     33                HarvestRequest harvestRequest = ProviderAdapter.getInstance().getHarvesterRequest(doRequest, hiProcess); 
     34                dispatchHarvestRequest(harvestRequest);                          
     35                MailHelper.getInstance().newDispatchedHarvestMail(doRequest.getEmailReportID(), hiProcess); 
    4436        } 
    4537 
    4638        private HiProcess createHiProcess(int providerID) throws NdgExecutionException { 
    47                  ModelManagerRemote modelManager = EJBBeanFactory.getModelManager(); 
     39                ModelManagerRemote modelManager = EJBBeanFactory.getModelManager(); 
    4840                return modelManager.createNewProcess(providerID); 
    49         } 
    50          
    51         private Harvester<? extends HarvestRequest> getHarvester(DoHarvestRequest doRequest, HiProcess process) throws NdgHarvestNotExistingException, NdgExecutionException { 
    52                 return ProviderAdapter.getInstance().getHarvester(doRequest, process); 
    5341        } 
    5442         
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/executor/IngesterImpl.java

    r7319 r7389  
     1/* 
     2 * BSD Licence 
     3 * Copyright (c) 2009, Science & Technology Facilities Council (STFC) 
     4 * All rights reserved. 
     5 
     6 * See the LICENSE file in the source distribution of this software for 
     7 * the full license text.        
     8 * Copyright (C) 2007 STFC & NERC (Science and Technology Facilities Council). 
     9 * This software may be distributed under the terms of the 
     10 * Q Public License, version 1.0 or later. 
     11 * http://ndg.nerc.ac.uk/public_docs/QPublic_license.txt 
     12 */ 
    113package ndg.services.revitalization.executor; 
    214 
     
    921import ndg.common.exception.NdgRunTimeProcessException; 
    1022import ndg.services.revitalization.EJBBeanFactory; 
    11 import ndg.services.revitalization.InvokeProcess; 
    1223import ndg.services.revitalization.MailHelper; 
    1324import ndg.services.revitalization.dictionary.ServiceConfigurationParameter; 
     25import ndg.services.revitalization.harvest.IngestRequest; 
     26import ndg.services.revitalization.harvest.Ingester; 
    1427import ndg.services.revitalization.jpa.HiProcess; 
    1528 
    1629import org.apache.commons.io.FileUtils; 
    1730 
    18 public class DoIngestProcess implements InvokeProcess { 
    19         /** 
    20          *  
    21          */ 
     31/** 
     32 * Exploits an Ingest request. 
     33 *  
     34 * @author Maurizio Nagni <maurizio.nagni@stfc.ac.uk>  
     35 */ 
     36public class IngesterImpl implements Ingester<IngestRequest> { 
     37 
    2238        private static final long serialVersionUID = 3970390875989465160L; 
    23         private final int processID; 
     39        private final IngestRequest ingestRequest; 
    2440         
    25         public DoIngestProcess(int processID) { 
     41        public IngesterImpl(IngestRequest request) { 
    2642                super(); 
    27                 this.processID = processID; 
     43                this.ingestRequest = request; 
    2844        } 
     45         
     46        @Override 
     47        public IngestRequest getIngestRequest() { 
     48                return ingestRequest; 
     49        } 
     50 
     51 
    2952 
    3053        private final String errProcMsg = "The process returned an errirID:{0}. \n The standard error stream returned: \n {1}"; 
     
    3760                                        ServiceConfigurationParameter.DO_INGEST_CMD); 
    3861 
    39                         hiProcess = EJBBeanFactory.getModelManager().getHiProcess(processID); 
    40                         String formattedCmd = MessageFormatter.getFormattedText(cmd, new Object[] {processID }); 
     62                        hiProcess = EJBBeanFactory.getModelManager().getHiProcess(ingestRequest.getProcessID()); 
     63                        String formattedCmd = MessageFormatter.getFormattedText(cmd, new Object[] {ingestRequest.getProcessID() }); 
    4164                        manageSystemCall(formattedCmd); 
    4265                        File harvDir = new File(hiProcess.getHarvestDir()); 
     
    4467                        MailHelper.getInstance().terminatedIngestMail(hiProcess); 
    4568                } catch (IOException e) {                        
    46                         MailHelper.getInstance().sentProcessFailedMail(hiProcess, formatError(processID, e.getMessage()));       
     69                        MailHelper.getInstance().sentProcessFailedMail(hiProcess, formatError(ingestRequest.getProcessID(), e.getMessage()));    
    4770                } catch (NdgRunTimeProcessException e) { 
    48                         MailHelper.getInstance().sentProcessFailedMail(hiProcess, formatError(processID, e.getMessage())); 
     71                        MailHelper.getInstance().sentProcessFailedMail(hiProcess, formatError(ingestRequest.getProcessID(), e.getMessage())); 
    4972                } 
    5073        } 
     
    5679                        exitVal = proc.waitFor(); 
    5780                        if (exitVal > 0) { 
    58                                 StreamReader stout = new StreamReader(proc.getInputStream()); 
     81                                //StreamReader stout = new StreamReader(proc.getInputStream()); 
    5982                                StreamReader sterr = new StreamReader(proc.getErrorStream());                            
    6083                                throw new NdgRunTimeProcessException(MessageFormatter.getFormattedText(errProcMsg, new Object[]{1, sterr.extractStreamValue()})); 
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/harvest/HarvestRequest.java

    r7360 r7389  
    1414 
    1515import java.io.Serializable; 
     16import java.util.List; 
     17 
     18import ndg.services.revitalization.jpa.HiProcess; 
    1619 
    1720 
     
    2932         */ 
    3033        private static final long serialVersionUID = 4539301981210054562L; 
    31         /** The provider identificator */ 
    32         final private int providerID; 
    33         /** The provider URL */ 
    34         final private String url; 
     34        final private HiProcess process; 
    3535         
    36         public HarvestRequest(int providerID, String url) { 
     36        final private List<Integer> emailID; 
     37 
     38         
     39        public HarvestRequest(HiProcess process, List<Integer> emailID) { 
    3740                super(); 
    38                 this.providerID = providerID; 
    39                 this.url = url; 
     41                this.process = process; 
     42                this.emailID = emailID; 
    4043        } 
    4144 
    42         /** 
    43          * Returns the id that the application associates to this provider. Usually this id 
    44          * is supported by a DB providing the necessary persistence system. 
    45          * @return the provider id  
    46          **/ 
    47         public int getProviderID() { 
    48                 return providerID; 
     45        public List<Integer> getEmailID() { 
     46                return emailID; 
     47        } 
     48         
     49        public HiProcess getProcess() { 
     50                return process; 
    4951        } 
    5052 
    51         /** 
    52          * Returns the URL that the application associates to this provider. Usually this URL 
    53          * is part of a more general configuration parameters, stored in a DB providing the necessary persistence system. 
    54          * @return the provider address  
    55          **/     
    56         public String getUrl() { 
    57                 return url; 
    58         }                
     53                 
    5954} 
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/harvest/HarvesterBase.java

    r7360 r7389  
    1313package ndg.services.revitalization.harvest; 
    1414 
     15import java.io.File; 
    1516import java.io.Serializable; 
    1617import java.sql.Timestamp; 
    1718import java.util.ArrayList; 
     19import java.util.Calendar; 
    1820import java.util.List; 
    1921 
     
    6062        @Override 
    6163        public final void invoke() throws NdgExecutionException { 
    62                 initializeHarvesting();          
    63                 doHarvest(); 
    64                 finalizeHarvesting(); 
     64                HarvestLog harvestLog = null; 
     65                initializeHarvesting(); 
     66                try { 
     67                        doHarvest();     
     68                } finally { 
     69                        harvestLog = finalizeHarvesting();                       
     70                } 
     71                EJBBeanFactory.getModelManager().updateHarvestingLogAndStatus(hiProcess, harvestLog);            
     72                MailHelper.getInstance().terminatedHarvestMail(getHiProcess()); 
    6573        } 
    6674         
     
    7280                HarvestLog harvestLog = new HarvestLog(); 
    7381                harvestLog.setReqId(hiProcess.getId()); 
     82                harvestLog.setStartHarvest(new Timestamp(Calendar.getInstance().getTimeInMillis())); 
     83                getHarvestResult().setStartTime(harvestLog.getStartHarvest()); 
    7484                EJBBeanFactory.getModelManager().updateHarvestingLogAndStatus(hiProcess, harvestLog); 
    7585        } 
    7686         
    77         private void finalizeHarvesting() throws NdgExecutionException { 
     87        private HarvestLog finalizeHarvesting() throws NdgExecutionException { 
    7888                List<Integer> procId = new ArrayList<Integer>(); 
    7989                procId.add(hiProcess.getId()); 
     
    8696                 
    8797                harvestLog = harvestLogs.get(0); 
    88                 harvestLog.setStartHarvest(getHarvestResult().getStartTime()); 
    89                 harvestLog.setStopHarvest(getHarvestResult().getEndTime()); 
    90                 harvestLog.setTotRecs(getHarvestResult().getTotRecs()); 
    9198                 
    92                 EJBBeanFactory.getModelManager().updateHarvestingLogAndStatus(hiProcess, harvestLog); 
     99                harvestLog.setStopHarvest(new Timestamp(Calendar.getInstance().getTimeInMillis())); 
     100                getHarvestResult().setEndTime(harvestLog.getStopHarvest()); 
    93101                 
    94                 MailHelper.getInstance().terminatedHarvestMail(getHiProcess()); 
     102                harvestLog.setTotRecs(getHowManyHarvestedFiles()); 
     103                getHarvestResult().setTotRecs(harvestLog.getTotRecs()); 
     104                return harvestLog; 
    95105        } 
    96106         
     
    99109        } 
    100110         
     111        protected int getHowManyHarvestedFiles() { 
     112                File outDir = new File(getHiProcess().getHarvestDir()); 
     113                if (outDir.isDirectory()) { 
     114                        String numfiles[] = outDir.list(); 
     115                        if (numfiles != null) 
     116                                return numfiles.length; 
     117                } 
     118                return 0; 
     119        } 
     120 
    101121        protected class HarvestResult implements Serializable { 
    102122                /** 
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/harvest/ProviderAdapter.java

    r7316 r7389  
    1 package ndg.services.revitalization.executor; 
     1/* 
     2 * BSD Licence 
     3 * Copyright (c) 2009, Science & Technology Facilities Council (STFC) 
     4 * All rights reserved. 
     5 
     6 * See the LICENSE file in the source distribution of this software for 
     7 * the full license text.        
     8 * Copyright (C) 2007 STFC & NERC (Science and Technology Facilities Council). 
     9 * This software may be distributed under the terms of the 
     10 * Q Public License, version 1.0 or later. 
     11 * http://ndg.nerc.ac.uk/public_docs/QPublic_license.txt 
     12 */ 
     13package ndg.services.revitalization.harvest; 
    214 
    315import java.io.File; 
     
    1123import ndg.services.revitalization.dictionary.ServiceConfigurationParameter; 
    1224import ndg.services.revitalization.ejb.interfaces.ModelManagerRemote; 
    13 import ndg.services.revitalization.harvest.HarvestRequest; 
    14 import ndg.services.revitalization.harvest.Harvester; 
    1525import ndg.services.revitalization.jpa.HiProcess; 
    1626import ndg.services.revitalization.jpa.ProviderCommon; 
     
    2636 * specific {@link ProviderCommon} 
    2737 **/ 
    28 class ProviderAdapter<T extends HarvestRequest> { 
     38public class ProviderAdapter<T extends HarvestRequest> { 
    2939 
    3040        private ProviderAdapter() { 
     
    4050        } 
    4151 
    42         public Harvester<T> getHarvester(DoHarvestRequest doRequest, HiProcess hiProcess) throws NdgExecutionException { 
    43                 if (doRequest == null) 
    44                         throw new NdgExecutionException(new NdgMessage("null.object", new Object[] { "DoHarvestRequest" })); 
    45  
     52        public Harvester<T> getHarvester(HarvestRequest request) throws NdgExecutionException { 
    4653                ModelManagerRemote mm = EJBBeanFactory.getModelManager(); 
    47                 ProviderCommon provider = mm.getHarvesterConfiguration(doRequest.getProviderID()); 
     54                ProviderCommon provider = mm.getHarvesterConfiguration(request.getProcess().getProviderId()); 
    4855 
    4956                File tmpDir = new File(mm.getConfigurationParameter(ServiceConfigurationParameter.HARVEST_ROOT_PATH) 
     
    5259                        throw new NdgExecutionException(new NdgMessage("execution.error", new Object[] { "createNewFile()", 
    5360                                        "Cannot create " + tmpDir.getAbsolutePath() }, null)); 
    54  
    55                 return getHelper(provider.getClass()).assembleHarvester(provider, tmpDir, doRequest, hiProcess); 
     61                request.getProcess().setHarvestDir(tmpDir.getAbsolutePath()); 
     62                return getHelper(provider.getClass()).assembleHarvester(provider, request); 
    5663        } 
    5764 
     65        public HarvestRequest getHarvesterRequest(DoHarvestRequest doRequest, HiProcess hiProcess) throws NdgExecutionException { 
     66                if (doRequest == null) 
     67                        throw new NdgExecutionException(new NdgMessage("null.object", new Object[] { "DoHarvestRequest" })); 
     68 
     69                ModelManagerRemote mm = EJBBeanFactory.getModelManager(); 
     70                ProviderCommon provider = mm.getHarvesterConfiguration(doRequest.getProviderID()); 
     71                return new HarvestRequest(hiProcess, doRequest.getEmailReportID()); 
     72        } 
     73         
    5874        /** 
    5975         * Transforms the data from the <code>pdetails</code> parameter in a 
     
    7389 
    7490        private ProviderAdapterHelper getHelper(Class<?> clazz) throws NdgExecutionException { 
    75                 return ProviderAdapterHelper.getProviderAdapter(clazz); 
     91                return ProviderAdapterFactory.getProviderAdapterHelper(clazz); 
    7692        } 
    7793} 
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/harvest/ProviderAdapterFactory.java

    r7312 r7389  
    1 package ndg.services.revitalization.executor; 
    2  
    3 import java.io.File; 
    4  
    5 import javax.xml.bind.JAXBElement; 
     1package ndg.services.revitalization.harvest; 
    62 
    73import ndg.common.exception.NdgExecutionException; 
    8 import ndg.services.revitalization.harvest.HarvestRequest; 
    9 import ndg.services.revitalization.harvest.Harvester; 
     4import ndg.services.revitalization.harvest.csw.CSWAdapterHelper; 
    105import ndg.services.revitalization.harvest.oai.OAIAdapterHelper; 
    11 import ndg.services.revitalization.jpa.HiProcess; 
     6import ndg.services.revitalization.jpa.CswProvider; 
    127import ndg.services.revitalization.jpa.OaiProvider; 
    138import ndg.services.revitalization.jpa.ProviderCommon; 
    14 import ndg.services.schemas.revitalization.DoHarvestRequest; 
     9import ndg.services.schemas.revitalization.CSWProviderDetailsType; 
    1510import ndg.services.schemas.revitalization.OAIProviderDetailsType; 
    16 import ndg.services.schemas.revitalization.ObjectFactory; 
    1711import ndg.services.schemas.revitalization.ProviderDetailsType; 
    1812 
     
    2317 * specific {@link ProviderCommon} 
    2418 **/ 
    25 public abstract class ProviderAdapterHelper<T extends ProviderCommon, Y extends ProviderDetailsType> { 
     19public class ProviderAdapterFactory { 
    2620 
    27         public static ProviderAdapterHelper getProviderAdapter(Class<?> clazz) throws NdgExecutionException { 
     21        public static ProviderAdapterHelper  
     22                        getProviderAdapterHelper(Class<?> clazz) throws NdgExecutionException { 
    2823                if (clazz.isAssignableFrom(OaiProvider.class) || clazz.isAssignableFrom(OAIProviderDetailsType.class)) { 
    2924                        return new OAIAdapterHelper(); 
     25                } 
     26                if (clazz.isAssignableFrom(CswProvider.class) || clazz.isAssignableFrom(CSWProviderDetailsType.class)) { 
     27                        return new CSWAdapterHelper(); 
    3028                } 
    3129 
    3230                throw new NdgExecutionException("Provider type does not exists"); 
    3331        } 
    34  
    35         /* Specific implementation methods */ 
    36  
    37         abstract protected Harvester<? extends HarvestRequest> assembleHarvester(T provider, File tmpDir, 
    38                         DoHarvestRequest doRequest, HiProcess hiProcess) throws NdgExecutionException; 
    39  
    40         abstract protected JAXBElement<? extends ProviderDetailsType> extractDetails(T oai, ObjectFactory of); 
    41  
    42         /** 
    43          * Fills the fields specific to a <code>T</code> class extending the 
    44          * {@link ProviderCommon} class.  
    45          *  
    46          * @param providerDetails 
    47          *            a class extending the {@link ProviderDetailsType} class 
    48          * @return a filled <code>T</code> instance 
    49          **/ 
    50         abstract protected T assembleProvider(Y providerDetails); 
    5132} 
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/harvest/oai/OAIAdapterHelper.java

    r7312 r7389  
    11package ndg.services.revitalization.harvest.oai; 
    2  
    3 import java.io.File; 
    42 
    53import javax.xml.bind.JAXBElement; 
    64 
    75import ndg.common.exception.NdgExecutionException; 
    8 import ndg.services.revitalization.executor.ProviderAdapterHelper; 
    96import ndg.services.revitalization.harvest.HarvestRequest; 
    10 import ndg.services.revitalization.harvest.Harvester; 
    11 import ndg.services.revitalization.jpa.HiProcess; 
     7import ndg.services.revitalization.harvest.ProviderAdapterHelper; 
    128import ndg.services.revitalization.jpa.OaiProvider; 
    13 import ndg.services.schemas.revitalization.DoHarvestRequest; 
     9import ndg.services.revitalization.jpa.ProviderCommon; 
    1410import ndg.services.schemas.revitalization.OAIProviderDetailsType; 
    1511import ndg.services.schemas.revitalization.ObjectFactory; 
    16 import ndg.services.schemas.revitalization.ProviderDetailsType; 
    1712 
    18 public class OAIAdapterHelper extends ProviderAdapterHelper<OaiProvider, OAIProviderDetailsType>{ 
    19  
     13public class OAIAdapterHelper  
     14                implements ProviderAdapterHelper<OaiProvider, OAIProviderDetailsType, OAIHarvester>{ 
     15         
    2016        @Override 
    21         protected Harvester<? extends HarvestRequest> assembleHarvester(OaiProvider provider, File tmpDir, 
    22                         DoHarvestRequest doRequest, HiProcess hiProcess) throws NdgExecutionException { 
    23                 OAIHarvestRequest harvesterReq = new OAIHarvestRequest(provider, doRequest); 
    24                 harvesterReq.setOutdir(tmpDir.getAbsolutePath());                        
    25                 return new OAIHarvester(harvesterReq, hiProcess); 
     17        public OAIHarvester assembleHarvester(ProviderCommon provider, HarvestRequest request) 
     18                        throws NdgExecutionException { 
     19                OAIHarvestRequest harvesterReq = new OAIHarvestRequest(request, (OaiProvider)provider);                  
     20                return new OAIHarvester(harvesterReq, request.getProcess()); 
    2621        } 
    2722 
    2823        @Override 
    29         protected OaiProvider assembleProvider(OAIProviderDetailsType providerDetails) { 
     24        public OaiProvider assembleProvider(OAIProviderDetailsType providerDetails) { 
    3025                OaiProvider nprovider = new OaiProvider(); 
    31                 //If is an update retrieve the stored Provider 
    32                 //This part has to be generalized for all other provider types 
    33                 /* 
    34                 if (id != null) { 
    35                         ProviderCommon provider = EJBBeanFactory.getModelManager().getProviderCommon(id); 
    36                         if (!provider.getClass().isAssignableFrom(OaiProvider.class)) 
    37                                 throw new NdgExecutionException("Provide ID:" + id + " type does differ from the type stored one"); 
    38                         nprovider = (OaiProvider)provider; 
    39                 } 
    40                 */ 
    41                  
    4226                nprovider.setFormat(providerDetails.getFormat()); 
    4327                nprovider.setSet(providerDetails.getSetSpec()); 
     
    4731         
    4832        @Override 
    49         protected JAXBElement<? extends ProviderDetailsType> extractDetails(OaiProvider oai, ObjectFactory of) { 
     33        public JAXBElement<OAIProviderDetailsType> extractDetails(OaiProvider oai, ObjectFactory of) { 
    5034                OAIProviderDetailsType pdt = of.createOAIProviderDetailsType(); 
    5135                pdt.setFormat(oai.getFormat()); 
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/harvest/oai/OAIHarvestRequest.java

    r7312 r7389  
     1/* 
     2 * BSD Licence 
     3 * Copyright (c) 2009, Science & Technology Facilities Council (STFC) 
     4 * All rights reserved. 
     5 
     6 * See the LICENSE file in the source distribution of this software for 
     7 * the full license text.        
     8 * Copyright (C) 2007 STFC & NERC (Science and Technology Facilities Council). 
     9 * This software may be distributed under the terms of the 
     10 * Q Public License, version 1.0 or later. 
     11 * http://ndg.nerc.ac.uk/public_docs/QPublic_license.txt 
     12 */ 
    113package ndg.services.revitalization.harvest.oai; 
    214 
     
    517import ndg.services.revitalization.harvest.HarvestRequest; 
    618import ndg.services.revitalization.jpa.OaiProvider; 
    7 import ndg.services.schemas.revitalization.DoHarvestRequest; 
    819 
    920/** 
    10  * Represents an Harvest request 
     21 * Represents an Harvest request to an OAI provider 
     22 * @author Maurizio Nagni <maurizio.nagni@stfc.ac.uk>    
    1123 **/ 
    1224public class OAIHarvestRequest extends HarvestRequest { 
    1325 
    14         public OAIHarvestRequest(OaiProvider provider, DoHarvestRequest doRequest) { 
    15                 super(provider.getId(), provider.getBaseUrl());  
     26        /** 
     27         *  
     28         */ 
     29        private static final long serialVersionUID = -7918884716907517029L; 
     30 
     31        public OAIHarvestRequest(HarvestRequest request, OaiProvider provider) { 
     32                super(request.getProcess(), request.getEmailID()); 
     33                url = provider.getBaseUrl(); 
    1634                this.setSet(provider.getSet()); 
    1735                if (!provider.getFormat().equals("ANY")) 
     
    2745        */ 
    2846         
     47        private String url; 
     48         
    2949        /** MetadataPrefix. e.g., "oai_dc", or null to harvest all formats */ 
    3050        private String metadataPrefix; 
     
    3959        private Date until; 
    4060         
    41         /** Path of output dir */ 
    42         private String outdir; 
    43          
    44          
    4561        private boolean splitBySet; 
    4662        private String zipName; 
     
    5470        private boolean harvestAllIfNoDeletedRecord; 
    5571 
     72        public String getUrl() { 
     73                return url; 
     74        }        
     75         
    5676        public String getMetadataPrefix() { 
    5777                return metadataPrefix; 
     
    7999        } 
    80100         
    81         public String getOutdir() { 
    82                 return outdir; 
    83         } 
    84         public void setOutdir(String outdir) { 
    85                 this.outdir = outdir; 
    86         } 
    87101        public boolean isSplitBySet() { 
    88102                return splitBySet; 
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/harvest/oai/OAIHarvester.java

    r7312 r7389  
     1/* 
     2 * BSD Licence 
     3 * Copyright (c) 2009, Science & Technology Facilities Council (STFC) 
     4 * All rights reserved. 
     5 
     6 * See the LICENSE file in the source distribution of this software for 
     7 * the full license text.        
     8 * Copyright (C) 2007 STFC & NERC (Science and Technology Facilities Council). 
     9 * This software may be distributed under the terms of the 
     10 * Q Public License, version 1.0 or later. 
     11 * http://ndg.nerc.ac.uk/public_docs/QPublic_license.txt 
     12 */ 
    113package ndg.services.revitalization.harvest.oai; 
    2  
    3 import java.io.File; 
    4 import java.sql.Timestamp; 
    514 
    615import ndg.common.NdgMessage; 
     
    1221import org.dlese.dpc.oai.harvester.OAIErrorException; 
    1322 
    14  
     23/** 
     24 * Represents an OAI able harvester. 
     25 * @author Maurizio Nagni <maurizio.nagni@stfc.ac.uk>    
     26 */ 
    1527public class OAIHarvester extends HarvesterBase<OAIHarvestRequest> { 
    1628         
     
    3547        protected void doHarvest() throws NdgExecutionException { 
    3648                org.dlese.dpc.oai.harvester.Harvester harvester = new org.dlese.dpc.oai.harvester.Harvester(); 
    37                 getHiProcess().setHarvestDir(getHarvestRequest().getOutdir()); 
    3849                try { 
    3950                        harvester.doHarvest(getHarvestRequest().getUrl(),  
     
    4253                                        getHarvestRequest().getFrom(),  
    4354                                        getHarvestRequest().getUntil(),  
    44                                         getHarvestRequest().getOutdir(),  
     55                                        getHiProcess().getHarvestDir(),  
    4556                                        getHarvestRequest().isSplitBySet(),  
    4657                                        getHarvestRequest().getZipName(), 
     
    4859                                        getHarvestRequest().isWriteHeaders(),  
    4960                                        getHarvestRequest().isHarvestAll(),  
    50                                         getHarvestRequest().isHarvestAllIfNoDeletedRecord()); 
    51                         getHarvestResult().setStartTime(new Timestamp(harvester.getStartTime()));        
    52                         getHarvestResult().setEndTime(new Timestamp(harvester.getEndTime())); 
    53                          
    54                         //getHarvestResult().setTotRecs(harvester.getNumRecordsHarvested()); 
    55                         getHarvestResult().setTotRecs(getHowManyHarvestedFiles()); 
     61                                        getHarvestRequest().isHarvestAllIfNoDeletedRecord());                    
    5662                } catch (Hexception e) { 
    5763                        throw new NdgExecutionException(new NdgMessage("execution.error", new Object[] {"doHarvest", e.getMessage()}, null)); 
     
    6066                } 
    6167        } 
    62          
    63         /* 
    64          * This methods substitute the more direct harvester.getNumRecordsHarvested() 
    65          * because such method may returns the wrong number of files in case of resumption 
    66          * operation. Hopefully in a future release of the DLESE's Harvest library this "fix" could be removed. 
    67          * */ 
    68         private int getHowManyHarvestedFiles(){ 
    69                 File outDir = new File(getHarvestRequest().getOutdir()); 
    70                 if (outDir.isDirectory()) { 
    71                         String numfiles[] = outDir.list(); 
    72                         if (numfiles != null) 
    73                                 return numfiles.length; 
    74                 } 
    75                 return 0; 
    76         } 
    7768} 
    7869   
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/jpa/CswProvider.java

    r7301 r7389  
     1/* 
     2 * BSD Licence 
     3 * Copyright (c) 2009, Science & Technology Facilities Council (STFC) 
     4 * All rights reserved. 
     5 
     6 * See the LICENSE file in the source distribution of this software for 
     7 * the full license text.        
     8 * Copyright (C) 2007 STFC & NERC (Science and Technology Facilities Council). 
     9 * This software may be distributed under the terms of the 
     10 * Q Public License, version 1.0 or later. 
     11 * http://ndg.nerc.ac.uk/public_docs/QPublic_license.txt 
     12 */ 
    113package ndg.services.revitalization.jpa; 
    214 
     15import java.util.List; 
     16 
     17import javax.persistence.Column; 
    318import javax.persistence.Entity; 
    419import javax.persistence.PrimaryKeyJoinColumn; 
    520import javax.persistence.Table; 
     21import javax.xml.namespace.QName; 
     22 
     23import org.hibernate.annotations.Type; 
    624 
    725 
    826/** 
    927 * The persistent class for the csw_provider database table. 
    10  *  
     28 * @author Maurizio Nagni <maurizio.nagni@stfc.ac.uk>    
    1129 */ 
    1230@Entity 
     
    2038        private static final long serialVersionUID = -8551777635863224854L; 
    2139 
     40        private List<QName> typeNames; 
     41         
     42        private String outputSchema; 
     43         
    2244        public CswProvider() { 
    2345    } 
     46 
     47        @Type(type = "ndg.services.revitalization.jpa.usertype.QNames") 
     48        @Column(name="type_names") 
     49        public List<QName> getTypeNames() { 
     50                return typeNames; 
     51        } 
     52 
     53        public void setTypeNames(List<QName> typeNames) { 
     54                this.typeNames = typeNames; 
     55        } 
     56 
     57        @Column(name="output_schema") 
     58        public String getOutputSchema() { 
     59                return outputSchema; 
     60        } 
     61 
     62        public void setOutputSchema(String outputSchema) { 
     63                this.outputSchema = outputSchema; 
     64        }        
    2465} 
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/jpa/IngestLoggingProblemFile.java

    r7312 r7389  
    1414        private static final long serialVersionUID = 1L; 
    1515        private Integer problemFileId; 
    16         private String id; 
     16        private Integer id; 
    1717        private String problemFileMessage; 
    1818        private String problemFileName; 
     
    3333 
    3434 
    35         public String getId() { 
     35        public Integer getId() { 
    3636                return this.id; 
    3737        } 
    3838 
    39         public void setId(String id) { 
     39        public void setId(Integer id) { 
    4040                this.id = id; 
    4141        } 
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/jpa/IngestSearchLogging.java

    r7312 r7389  
    1515        private static final long serialVersionUID = 1L; 
    1616        private Integer localIngestId; 
    17         private String id; 
     17        private Integer id; 
    1818        private Timestamp ingestDate; 
    1919        private Integer numberProblemFiles; 
     
    4141 
    4242 
    43         public String getId() { 
     43        public Integer getId() { 
    4444                return this.id; 
    4545        } 
    4646 
    47         public void setId(String id) { 
     47        public void setId(Integer id) { 
    4848                this.id = id; 
    4949        } 
Note: See TracChangeset for help on using the changeset viewer.