Changeset 7987 for RevitalizationWS


Ignore:
Timestamp:
17/11/11 13:27:37 (8 years ago)
Author:
mnagni
Message:

Improved the Timer service adding reference to ingest command

Location:
RevitalizationWS/ws/DPWS/trunk
Files:
14 edited

Legend:

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

    r7982 r7987  
    44        <groupId>ndg.services.dpws</groupId> 
    55        <artifactId>ejb</artifactId> 
    6         <version>2.0.0</version> 
     6        <version>2.1.0</version> 
    77        <packaging>ejb</packaging> 
    88 
     
    4141                                <configuration> 
    4242                                        <ejbVersion>3.0</ejbVersion> 
     43                                        <jarName>dpws-ejb</jarName> 
    4344                                        <!-- 
    4445                                                <archive> 
     
    4748                                                <manifest> <addClasspath>true</addClasspath> </manifest> 
    4849                                                </archive> 
    49                                         --> 
     50                                        -->                                      
    5051                                </configuration> 
    5152                        </plugin> 
     
    5859                        <groupId>ndg.services.schemas</groupId> 
    5960                        <artifactId>dataprovider</artifactId> 
    60                         <version>1.1.0</version> 
     61                        <version>2.1.0</version> 
    6162                        <scope>provided</scope> 
    6263                </dependency> 
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/ejb/HarvestThenIngestTimerService.java

    r7625 r7987  
    7171 
    7272        private final static String GET_TIMER_FOR_PROVIDER = "select l from TimerInfo l  where l.commonId=:providerID"; 
     73        private final static String GET_TIMER = "select l from TimerInfo l  where l.id=:id";     
    7374        private final Map<TimerInfo, Timer> timers = new WeakHashMap<TimerInfo, Timer>(); 
    7475        private final List<HarvestProcessMonitoring> monitors = new ArrayList<HarvestProcessMonitoring>(); 
     
    9596                final TimerInfo infoCache = (TimerInfo) timer.getInfo(); 
    9697                 
    97                 if (infoCache.getCommonId() == null) 
     98                if (infoCache.getId() == null) 
    9899                        return; 
    99100                 
    100                 TimerInfo infoDB = getTimerInfo(infoCache.getCommonId()); 
     101                TimerInfo infoDB = getTimerInfo(infoCache.getId()); 
    101102                 
    102103                if (infoDB == null) 
     
    218219        } 
    219220         
    220         public void updateTimerInfoLastReqId(int providerID, int lastReqId) { 
    221                 TimerInfo timerInfo = getTimerInfo(providerID); 
     221        public void updateTimerInfoLastReqId(int timerID, int lastReqId) { 
     222                TimerInfo timerInfo = getTimerInfo(timerID); 
    222223                timerInfo.setLastReqId(lastReqId); 
    223224                em.persist(timerInfo); 
    224225        } 
    225226         
    226         public TimerInfo getTimerInfo(int providerID){ 
    227                 List<TimerInfo> ret = getTimerInfoPriv(providerID); 
    228                 return (ret == null || ret.isEmpty()) ? null : ret.get(0);  
    229         } 
    230          
    231227        @TransactionAttribute(value = TransactionAttributeType.REQUIRES_NEW) 
    232         public TimerInfoLog deleteProviderTimer(int providerID) { 
    233                         //For now just one Timer per Provider is allowed 
    234                         TimerInfo oldTimer = getTimerInfo(providerID); 
     228        public TimerInfoLog deleteTimer(int timerID) { 
     229                        TimerInfo oldTimer = getTimerInfo(timerID); 
    235230                        if (oldTimer == null) 
    236231                                return null; 
     
    269264 
    270265        @SuppressWarnings("unchecked") 
    271         private List<TimerInfo> getTimerInfoPriv(int providerID){ 
     266        public List<TimerInfo> getTimerInfoByProvider(int providerID){ 
    272267                Query query = em.createQuery(GET_TIMER_FOR_PROVIDER); 
    273268                query.setParameter("providerID", providerID); 
    274269                return query.getResultList(); 
    275270        } 
     271         
     272        @SuppressWarnings("unchecked") 
     273        public TimerInfo getTimerInfo(int id){ 
     274                Query query = em.createQuery(GET_TIMER); 
     275                query.setParameter("id", id); 
     276                try { 
     277                        return (TimerInfo)query.getSingleResult();       
     278                } catch (javax.persistence.NoResultException ex) { 
     279                        return null; 
     280                } 
     281                 
     282        }        
    276283         
    277284        private Timer setTimers(final Timer timer, final TimerInfo info) { 
     
    293300                request.setProviderID(info.getCommonId()); 
    294301                DoHarvestResponse response = dpws.doHarvest(request); 
    295                 updateTimerInfoLastReqId(info.getCommonId(), response.getProcessID().getId()); 
     302                updateTimerInfoLastReqId(info.getId(), response.getProcessID().getId()); 
    296303                info.setLastReqId(response.getProcessID().getId()); 
    297304        } 
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/ejb/ModelManager.java

    r7982 r7987  
    392392        } 
    393393 
     394        public HiProcess updateHiProcessCommand(Integer processID, String ingestCommand) { 
     395                HiProcess hiProcess = getHiProcess(processID); 
     396                if (hiProcess != null) { 
     397                        hiProcess.setIngestCommand(ingestCommand); 
     398                } 
     399                return hiProcess; 
     400        } 
     401         
    394402        public ProviderCommon getProviderCommon(int commonId) { 
    395403                        return em.find(ProviderCommon.class, commonId); 
     
    454462         
    455463        @TransactionAttribute(value = TransactionAttributeType.REQUIRES_NEW) 
    456         public TimerInfoLog deleteProviderTimer(int providerID) { 
    457                         return timerService.deleteProviderTimer(providerID); 
    458         } 
    459          
    460         public void updateTimerInfoLastReqId(int providerID, int lastReqId) { 
    461                 timerService.updateTimerInfoLastReqId(providerID, lastReqId); 
    462         } 
    463          
    464         public TimerInfo getTimerInfo(int providerID) throws NdgExecutionException { 
     464        public TimerInfoLog deleteTimer(int timerID) { 
     465                        return timerService.deleteTimer(timerID); 
     466        } 
     467         
     468        public void updateTimerInfoLastReqId(int timerID, int lastReqId) { 
     469                timerService.updateTimerInfoLastReqId(timerID, lastReqId); 
     470        } 
     471         
     472        public List<TimerInfo> getTimerInfoByProvider(int providerID) throws NdgExecutionException { 
    465473                if (getProviderCommon(providerID) == null) { 
    466474                        throw new NdgExecutionException("The provider providerId does not exist "); 
    467475                } 
    468                 return timerService.getTimerInfo(providerID); 
     476                return timerService.getTimerInfoByProvider(providerID); 
     477        } 
     478         
     479        public TimerInfo getTimerInfo(int timerID) throws NdgExecutionException { 
     480                return timerService.getTimerInfo(timerID); 
    469481        } 
    470482         
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/ejb/interfaces/HTITimerServiceLocal.java

    r7868 r7987  
    3131 */ 
    3232package ndg.services.revitalization.ejb.interfaces; 
     33import java.util.List; 
     34 
    3335import javax.ejb.Local; 
    3436 
     
    4850         * Updates the lastReqId 
    4951         **/ 
    50         public void updateTimerInfoLastReqId(int providerID, int lastReqId); 
     52        public void updateTimerInfoLastReqId(int timerID, int lastReqId); 
    5153         
    5254        /** 
    5355         * Deletes a {@link TimerInfo} instance</code> 
    54          * @param providerID the provider id associated with the timer to delete 
     56         * @param timerID the timer's id to delete 
    5557         * @return the {@link TimerInfoLog} or <code>null</code> if errors occours 
    5658         * */ 
    57         public TimerInfoLog deleteProviderTimer(int providerID); 
     59        public TimerInfoLog deleteTimer(int timerID); 
    5860         
    5961        /** 
    60          * Returns the {@link TimerInfo} associated with a provider</code> 
    61          * @param providerID the provider id associated with the timer 
     62         * Returns the {@link TimerInfo} associated with the given id 
     63         * @param timerID the timer id 
    6264         * @return the {@link TimerInfo} or <code>null</code> if errors occours 
    6365         * */ 
    64         public TimerInfo getTimerInfo(int providerID); 
     66        public TimerInfo getTimerInfo(int timerID); 
     67         
     68        /** 
     69         * Returns a List of {@link TimerInfo} associated with a given provider 
     70         * @param providerID the provider id 
     71         * @return a {@link TimerInfo} List or <code>null</code> if errors occours 
     72         * */ 
     73        public List<TimerInfo> getTimerInfoByProvider(int providerID); 
    6574} 
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/ejb/interfaces/ModelManagerLocal.java

    r7868 r7987  
    4242import ndg.services.revitalization.jpa.HarvestLog; 
    4343import ndg.services.revitalization.jpa.HiProcess; 
     44import ndg.services.revitalization.jpa.IngestCommand; 
    4445import ndg.services.revitalization.jpa.IngestSearchLogging; 
    4546import ndg.services.revitalization.jpa.ProviderCommon; 
     
    108109         
    109110        public List<ProviderStatistic> getProviderStatistic(List<Integer> providerID) throws NdgExecutionException; 
     111         
     112        /** 
     113         * Returns a single {@link IngestCommand} 
     114         * @param ingestCommandID the IngestCommand ID 
     115         * @return an IngestCommand or <code>null</code> if not exists 
     116         * */ 
     117        public IngestCommand getIngestCommand(int ingestCommandID);      
     118         
     119        public void deleteIngestCommand(int commandID) throws NdgExecutionException; 
     120         
     121        public IngestCommand createIngestCommand(IngestCommand command) throws NdgExecutionException; 
     122         
     123        public HiProcess updateHiProcessCommand(Integer processID, String ingestCommand);        
    110124} 
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/ejb/interfaces/ModelManagerRemote.java

    r7982 r7987  
    167167        /** 
    168168         * Deletes a {@link TimerInfo} instance</code> 
    169          * @param providerID the provider id associated with the timer to delete 
     169         * @param timerID the timer's id to delete 
    170170         * @return the {@link TimerInfoLog} or <code>null</code> if errors occours 
    171171         * */ 
    172         public TimerInfoLog deleteProviderTimer(int providerID); 
    173          
    174         /** 
    175          * Returns the {@link TimerInfo} associated with a provider</code> 
    176          * @param providerID the provider id associated with the timer 
     172        public TimerInfoLog deleteTimer(int timerID); 
     173         
     174 
     175        public TimerInfo getTimerInfo(int timerID)  throws NdgExecutionException; 
     176 
     177        /** 
     178         * Returns a List of {@link TimerInfo} associated with a provider</code> 
     179         * @param providerID the provider id to look for associated timers 
    177180         * @return the {@link TimerInfo} or <code>null</code> if errors occours 
    178181         * @throws NdgExecutionException if the providerID does not exist  
    179          * */ 
    180         public TimerInfo getTimerInfo(int providerID) throws NdgExecutionException; 
     182         * */    
     183        public List<TimerInfo> getTimerInfoByProvider(int providerID) throws NdgExecutionException; 
    181184         
    182185        public void deleteProvider(List<Integer> providerID) throws NdgExecutionException; 
     
    194197         
    195198        public IngestCommand createIngestCommand(IngestCommand command) throws NdgExecutionException; 
     199         
     200        public HiProcess updateHiProcessCommand(Integer processID, String ingestCommand); 
    196201} 
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/executor/CommonProviderAdapter.java

    r7788 r7987  
    7272                pd.setProviderType(helper.extractDetails(ret, ServiceExecutor.getOf())); 
    7373                ModelManagerRemote mm = EJBBeanFactory.getModelManager(); 
    74                 TimerInfo timerInfo = mm.getTimerInfo(ret.getId()); 
     74                 
     75                List<TimerInfo> timerInfo = mm.getTimerInfoByProvider(ret.getId()); 
    7576                HTITimerAdapter adapter = new HTITimerAdapter(); 
    76                 pd.setTimerInfo(adapter.modelToResponse(timerInfo)); 
     77 
     78                for (TimerInfo ti : timerInfo) { 
     79                        pd.getTimerInfo().add(adapter.modelToResponse(ti));              
     80                } 
    7781                return pd; 
    7882        } 
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/executor/ExecuteAddTimer.java

    r7625 r7987  
    3535import ndg.common.exception.NdgExecutionException; 
    3636import ndg.services.revitalization.EJBBeanFactory; 
     37import ndg.services.revitalization.dictionary.ServiceConfigurationParameter; 
     38import ndg.services.revitalization.jpa.IngestCommand; 
    3739import ndg.services.revitalization.jpa.TimerInfo; 
    3840import ndg.services.schemas.revitalization.AddTimerRequest; 
     
    5557                        throw new NdgExecutionException("The ProviderID cannot be empty"); 
    5658                 
    57                 TimerInfo timerInfo = EJBBeanFactory.getModelManager().getTimerInfo(doRequest.getNewTimer().getProviderID()); 
     59                HTITimerAdapter adapter = new HTITimerAdapter(); 
    5860                 
    59                 if (timerInfo != null) 
    60                         throw new NdgExecutionException("The provider:" + doRequest.getNewTimer().getProviderID() + " already owns a timer. Delete it first before add a new one"); 
     61                if (doRequest.getNewTimer().getIngestCommand() == null) { 
     62                        doRequest.getNewTimer().setIngestCommand(EJBBeanFactory.getModelManager().getConfigurationParameter( 
     63                                        ServiceConfigurationParameter.DO_INGEST_CMD));                   
     64                } else { 
     65                        int cmdID = -1; 
     66                        try { 
     67                                cmdID = Integer.parseInt(doRequest.getNewTimer().getIngestCommand()); 
     68                                IngestCommand ic = EJBBeanFactory.getModelManager().getIngestCommand(cmdID); 
     69                                if (ic != null) 
     70                                        doRequest.getNewTimer().setIngestCommand(ic.getCommand()); 
     71                        } catch (NumberFormatException e) { 
     72                                // TODO: handle exception 
     73                        }                         
     74                } 
    6175                 
    62                 HTITimerAdapter adapter = new HTITimerAdapter(); 
    63                 timerInfo = adapter.requestToModel(doRequest.getNewTimer()); 
    64                  
     76                TimerInfo timerInfo = adapter.requestToModel(doRequest.getNewTimer());           
    6577                try { 
    6678                        timerInfo = EJBBeanFactory.getModelManager().createNewProviderTimer(timerInfo); 
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/executor/ExecuteDeleteTimer.java

    r7625 r7987  
    5252        @Override 
    5353        protected void execute(DeleteTimerRequest doRequest) throws NdgExecutionException { 
    54                 if (Double.isNaN(doRequest.getProviderID())) 
     54                if (Double.isNaN(doRequest.getTimerID())) 
    5555                        throw new NdgExecutionException("The ProviderID cannot be empty"); 
    5656                 
    57                 TimerInfo timerInfo = EJBBeanFactory.getModelManager().getTimerInfo(doRequest.getProviderID()); 
     57                TimerInfo timerInfo = EJBBeanFactory.getModelManager().getTimerInfo(doRequest.getTimerID()); 
    5858                 
    5959                if (timerInfo == null) 
    60                         throw new NdgExecutionException("The provider:" + doRequest.getProviderID() + " does not owns a timer."); 
     60                        throw new NdgExecutionException("No timer exists for ID:" + doRequest.getTimerID()); 
    6161                 
    62                 TimerInfoLog timerInfoLog = EJBBeanFactory.getModelManager().deleteProviderTimer(doRequest.getProviderID()); 
     62                TimerInfoLog timerInfoLog = EJBBeanFactory.getModelManager().deleteTimer(doRequest.getTimerID()); 
    6363                HTITimerAdapter adapter = new HTITimerAdapter(); 
    6464                getResponse().setTimerInfoLog(adapter.logModelToresponse(timerInfoLog));         
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/executor/HTITimerAdapter.java

    r7656 r7987  
    4949class HTITimerAdapter { 
    5050 
     51        public static long TIME_FACTOR = 60000; 
    5152        public TimerInfo requestToModel(TimerInfoCommonType request) { 
    5253                TimerInfo timerInfo = new TimerInfo(); 
     
    6061 
    6162                if (!Double.isNaN(request.getFrequency()))       
    62                         timerInfo.setFrequency(request.getFrequency());  
     63                        timerInfo.setFrequency(request.getFrequency()*TIME_FACTOR);      
     64                                 
     65                if (request.getIngestCommand() != null) 
     66                        timerInfo.setIngestCommand(request.getIngestCommand()); 
    6367                 
    6468                timerInfo.setIsSingleAction(request.isSetSingleAction()); 
     
    7175                TimerInfoDetail timer = new TimerInfoDetail(); 
    7276                 
     77                timer.setTimerID(timerInfo.getId()); 
    7378                TimerInfoCommonType common = new TimerInfoCommonType(); 
    7479                timer.setTimerInfoCommon(common); 
    7580                 
    76                 common.setFrequency(timerInfo.getFrequency()); 
     81                common.setFrequency(timerInfo.getFrequency()/TIME_FACTOR); 
     82                common.setIngestCommand(timerInfo.getIngestCommand()); 
    7783                common.setProviderID(timerInfo.getCommonId()); 
    7884                common.setSingleAction(timerInfo.getIsSingleAction());           
     
    112118                detail.setTimerInfoCommon(common); 
    113119                 
    114                 common.setFrequency(timerInfoLog.getFrequency()); 
     120                common.setFrequency(timerInfoLog.getFrequency()/TIME_FACTOR); 
    115121                common.setProviderID(timerInfoLog.getCommonId()); 
    116122                common.setSingleAction(timerInfoLog.getIsSingleAction()); 
     123                common.setIngestCommand(timerInfoLog.getIngestCommand());                
    117124                 
    118125                GregorianCalendar cal = new GregorianCalendar();                 
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/executor/IngesterImpl.java

    r7982 r7987  
    8383                HiProcess hiProcess = null; 
    8484                try { 
    85                         /* Sets the default ingest command */ 
    86                         String cmd = EJBBeanFactory.getModelManager().getConfigurationParameter( 
    87                                         ServiceConfigurationParameter.DO_INGEST_CMD); 
     85                        String cmd = null; 
    8886 
    8987                        hiProcess = getHiProcess(); 
     
    9492                        } 
    9593                         
    96                         /* If defined override the default ingest command */ 
     94                        /* The priorities are  
     95                         * 1) the command is arriving from the ingestRequest? 
     96                         * 2) the command is stored in the hiProcess (previous ingestion)?  
     97                         * 3) if none of the above use the default one */ 
    9798                        IngestCommand icmd = getIngestCommand(); 
    9899                        if (icmd != null && icmd.getCommand() != null) { 
    99100                                cmd = icmd.getCommand(); 
    100                         } 
     101                        } else if (hiProcess.getIngestCommand() != null && hiProcess.getIngestCommand().trim().length() > 0) { 
     102                                cmd = hiProcess.getIngestCommand(); 
     103                        } else { 
     104                                cmd = EJBBeanFactory.getModelManager().getConfigurationParameter( 
     105                                                ServiceConfigurationParameter.DO_INGEST_CMD);                            
     106                        }                                        
     107                        EJBBeanFactory.getModelManager().updateHiProcessCommand(hiProcess.getId(), cmd); 
    101108                         
    102109                        String formattedCmd = MessageFormatter.getFormattedText(cmd, new Object[] {ingestRequest.getProcessID() }); 
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/jpa/HiProcess.java

    r7465 r7987  
    2727        private Integer providerId;      
    2828        private String info; 
     29        private String ingestCommand;    
    2930 
    3031    public HiProcess() { 
     
    7576                return this.info; 
    7677        } 
     78         
     79        @Column(name="ingest_command")   
     80        public String getIngestCommand() { 
     81                return ingestCommand; 
     82        } 
    7783 
    78          
     84        public void setIngestCommand(String ingestCommand) { 
     85                this.ingestCommand = ingestCommand; 
     86        } 
     87 
     88 
    7989        //uni-directional many-to-one association to HiStatus 
    8090    @ManyToOne 
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/jpa/TimerInfo.java

    r7625 r7987  
    6161        private Timestamp startDate; 
    6262        private Timestamp endDate; 
     63        private String ingestCommand;    
    6364 
    6465    public TimerInfo() { 
     
    164165        } 
    165166 
     167        @Column(name="ingest_command")   
     168        public String getIngestCommand() { 
     169                return ingestCommand; 
     170        } 
     171 
     172        public void setIngestCommand(String ingestCommand) { 
     173                this.ingestCommand = ingestCommand; 
     174        } 
    166175} 
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/jpa/TimerInfoLog.java

    r7625 r7987  
    2323        private Timestamp startDate; 
    2424        private Timestamp stopDate; 
     25        private String ingestCommand;    
    2526 
    2627    public TimerInfoLog() { 
     
    3738        this.startDate = timerInfo.getStartDate(); 
    3839        this.stopDate = timerInfo.getEndDate(); 
     40        this.ingestCommand = timerInfo.getIngestCommand(); 
    3941    } 
    4042     
     
    127129        } 
    128130 
     131        @Column(name="ingest_command")   
     132        public String getIngestCommand() { 
     133                return ingestCommand; 
     134        } 
     135 
     136        public void setIngestCommand(String ingestCommand) { 
     137                this.ingestCommand = ingestCommand; 
     138        } 
     139 
     140         
     141         
    129142} 
Note: See TracChangeset for help on using the changeset viewer.