Changeset 7787 for RevitalizationWS


Ignore:
Timestamp:
22/12/10 12:00:56 (8 years ago)
Author:
mnagni
Message:

Fixed an bug when updating provider's configuration

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

Legend:

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

    r7711 r7787  
    4646import javax.persistence.PersistenceContext; 
    4747import javax.persistence.Query; 
     48import javax.xml.namespace.QName; 
    4849 
    4950import ndg.common.ejb.exception.TimerCreationException; 
     
    5657import ndg.services.revitalization.executor.ProviderLogs; 
    5758import ndg.services.revitalization.harvest.Harvester; 
     59import ndg.services.revitalization.jpa.CswProvider; 
    5860import ndg.services.revitalization.jpa.HarvestLog; 
    5961import ndg.services.revitalization.jpa.HiProcess; 
    6062import ndg.services.revitalization.jpa.IngestSearchLogging; 
     63import ndg.services.revitalization.jpa.OaiProvider; 
    6164import ndg.services.revitalization.jpa.ProviderCommon; 
    6265import ndg.services.revitalization.jpa.ProviderEmail; 
     
    230233        @TransactionAttribute(value = TransactionAttributeType.REQUIRES_NEW) 
    231234        public <T extends ProviderCommon> T createNewProvider(T provider) { 
     235                        ProviderCommon storedProvider = null; 
     236                        //its a new Provider 
    232237                        if (provider.getId() == null) { 
    233238                                em.persist(provider); 
     
    236241                                        email.setCommonId(id); 
    237242                                } 
    238                         } else { 
    239                                 ProviderCommon oldProvider = em.find(ProviderCommon.class, provider.getId()); 
    240  
    241                                 Iterator<ProviderEmail> iterator = oldProvider.getProviderEmails().iterator(); 
     243                                storedProvider = provider; 
     244                        } else { //its doing update 
     245                                storedProvider = getHarvesterConfiguration(provider.getId()); 
     246                                 
     247                                //CommonProvider 
     248                                if (provider.getEmailToAdmin() != null  
     249                                                && !provider.getEmailToAdmin().equals(storedProvider.getEmailToAdmin()))        { 
     250                                        storedProvider.setEmailToAdmin(provider.getEmailToAdmin()); 
     251                                }                                
     252                                 
     253                                if (provider.getBaseUrl() != null  
     254                                                && !provider.getBaseUrl().equals(storedProvider.getBaseUrl()))  { 
     255                                        storedProvider.setBaseUrl(provider.getBaseUrl()); 
     256                                }                                
     257                                 
     258                                if (provider.getName() != null  
     259                                                && !provider.getName().equals(storedProvider.getName()))        { 
     260                                        storedProvider.setName(provider.getName()); 
     261                                }                                
     262                                 
     263                                Iterator<ProviderEmail> iterator = storedProvider.getProviderEmails().iterator(); 
    242264                                ProviderEmail item = null; 
    243265                                while (iterator.hasNext()) { 
    244                                         item = iterator.next(); 
    245                                         if (provider.getProviderEmails() == null || !provider.getProviderEmails().contains(item)) 
     266                                        item = iterator.next();                                  
     267                                        if (provider.getProviderEmails() == null || !provider.getProviderEmails().contains(item)) { 
     268                                                iterator.remove(); 
    246269                                                em.remove(item); 
    247                                 } 
    248                         } 
    249                         return em.merge(provider); 
     270                                                continue; 
     271                                        } 
     272                                         
     273                                        int indexMail = provider.getProviderEmails().indexOf(item); 
     274                                        if (indexMail != -1) { 
     275                                                ProviderEmail newMail = provider.getProviderEmails().get(indexMail); 
     276                                                 
     277                                                if (newMail.getAdminEmail()!= null && !newMail.getAdminEmail().equals(item.getAdminEmail()))    { 
     278                                                        item.setAdminEmail(newMail.getAdminEmail()); 
     279                                                }                                
     280                                                if (newMail.getEmail()!= null && !newMail.getEmail().equals(item.getEmail()))   { 
     281                                                        item.setEmail(newMail.getEmail()); 
     282                                                }                                
     283                                                if (newMail.getRealName()!= null && !newMail.getRealName().equals(item.getRealName()))  { 
     284                                                        item.setRealName(newMail.getRealName()); 
     285                                                }                                                                                
     286                                        } 
     287                                } 
     288                                 
     289                                iterator = provider.getProviderEmails().iterator(); 
     290                                while (iterator.hasNext()) { 
     291                                        item = iterator.next();                                  
     292                                        if (item.getId() == null && (item.getAdminEmail() != null || item.getEmail() != null || item.getRealName() != null)) { 
     293                                                item.setCommonId(storedProvider.getId()); 
     294                                                storedProvider.getProviderEmails().add(item);                                            
     295                                        } 
     296                                } 
     297                                 
     298                                //OAI Provider 
     299                                if (storedProvider.getClass().isAssignableFrom(OaiProvider.class) 
     300                                                && provider.getClass().isAssignableFrom(OaiProvider.class)){ 
     301                                        OaiProvider oldOAI = (OaiProvider)storedProvider; 
     302                                        OaiProvider newOAI = (OaiProvider)provider; 
     303                                        if (newOAI.getSplitBySet()!= null && !newOAI.getSplitBySet().equals(oldOAI.getSplitBySet()))    { 
     304                                                oldOAI.setSplitBySet(newOAI.getSplitBySet()); 
     305                                        }        
     306                                         
     307                                        if (newOAI.getFormat()!= null && !newOAI.getFormat().equals(oldOAI.getFormat()))        { 
     308                                                oldOAI.setFormat(newOAI.getFormat()); 
     309                                        }                
     310                                         
     311                                        if (newOAI.getSet()!= null && !newOAI.getSet().equals(oldOAI.getSet())) { 
     312                                                oldOAI.setSet(newOAI.getSet()); 
     313                                        }                                                                                        
     314                                } 
     315                                                                 
     316                                //CSW Provider 
     317                                if (storedProvider.getClass().isAssignableFrom(CswProvider.class) 
     318                                                && provider.getClass().isAssignableFrom(CswProvider.class)){                             
     319                                        CswProvider oldCSW = (CswProvider)storedProvider; 
     320                                        CswProvider newCSW = (CswProvider)provider; 
     321                                        if (newCSW.getOutputSchema()!= null && !newCSW.getOutputSchema().equals(oldCSW.getOutputSchema()))      { 
     322                                                oldCSW.setOutputSchema(newCSW.getOutputSchema()); 
     323                                        } 
     324                                         
     325                                        Iterator<QName> cswIter = oldCSW.getTypeNames().iterator(); 
     326                                        List<QName> newQnames = new ArrayList<QName>(); 
     327                                        QName qnameItem = null; 
     328                                        while (cswIter.hasNext()) { 
     329                                                qnameItem = cswIter.next();                                      
     330                                                if (newCSW.getTypeNames() == null || !newCSW.getTypeNames().contains(qnameItem)) { 
     331                                                        cswIter.remove(); 
     332                                                } 
     333                                                 
     334                                                int indexQname = newCSW.getTypeNames().indexOf(qnameItem); 
     335                                                if (indexQname != -1) { 
     336                                                        QName newQname = newCSW.getTypeNames().get(indexQname); 
     337                                                         
     338                                                        if (newQname.getLocalPart()!= null  
     339                                                                        && (!newQname.getLocalPart().equals(qnameItem.getLocalPart()) 
     340                                                                                        || !newQname.getNamespaceURI().equals(qnameItem.getNamespaceURI())))    { 
     341                                                                cswIter.remove(); 
     342                                                                newQnames.add(new QName(qnameItem.getNamespaceURI(), newQname.getLocalPart())); 
     343                                                        }                                                
     344                                                } 
     345                                        } 
     346                                        if (!newQnames.isEmpty()) { 
     347                                                oldCSW.getTypeNames().addAll(newQnames); 
     348                                        } 
     349                                } 
     350                        } 
     351                        return (T)storedProvider; 
    250352        } 
    251353 
     
    291393         * @return an Harvester instance, otherwise <code>null</code> 
    292394         * */ 
    293         @SuppressWarnings("unchecked") 
    294         public ProviderCommon getHarvesterConfiguration(int commonID) { 
    295                         ProviderCommon ret = null; 
    296                         ret = getProvider(commonID, GET_OAI_PROVIDER); 
    297                         if (ret == null) 
     395        public <T extends ProviderCommon> T getHarvesterConfiguration(int commonID) { 
     396                        ProviderCommon ret = getProvider(commonID, GET_OAI_PROVIDER); 
     397                        if (ret == null) { 
    298398                                ret = getProvider(commonID, GET_CSW_PROVIDER); 
    299                         return ret; 
     399                        }  
     400                        return (T)ret; 
    300401        } 
    301402 
     
    378479         
    379480        @SuppressWarnings("unchecked") 
    380         private <T extends ProviderCommon> T getProvider(int id, String queryText) { 
     481        private ProviderCommon getProvider(int id, String queryText) { 
    381482                        Query query = em.createQuery(queryText); 
    382483                        query.setParameter("id", id); 
    383                         List<T> values = query.getResultList(); 
     484                        List<ProviderCommon> values = query.getResultList(); 
    384485                        if (values == null || values.size() == 0) { 
    385486                                return null; 
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/executor/ExecuteDoNewProvider.java

    r7783 r7787  
    9393                        email = new ProviderEmail(); 
    9494                        //email = getNewUpdateEmail(provider.getProviderEmails(), item.getID()); 
     95                        if (item.getID() == null && item.getEmail() == null && item.getName() == null) { 
     96                                continue; 
     97                        } 
    9598                        if (! Validate.validateEmail(item.getEmail())) { 
    9699                                throw new NdgExecutionException(new NdgMessage("illegal.mail.format", new Object[]{item.getEmail()})); 
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/jpa/ProviderEmail.java

    r7312 r7787  
    9797                        return false; 
    9898                ProviderEmail other = (ProviderEmail) obj; 
    99                 if (commonId == null) { 
    100                         if (other.commonId != null) 
    101                                 return false; 
    102                 } else if (!commonId.equals(other.commonId)) 
    103                         return false; 
    10499                if (id == null) { 
    105100                        if (other.id != null) 
Note: See TracChangeset for help on using the changeset viewer.