Changeset 7783 for RevitalizationWS


Ignore:
Timestamp:
16/12/10 10:44:49 (9 years ago)
Author:
mnagni
Message:

Corrected the CSWHarvester to retrieve all the records (before used max 10 as default)
Now the email format are validate before are accepted.

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

Legend:

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

    r7750 r7783  
    1717 
    1818import ndg.common.NdgMessage; 
     19import ndg.common.Validate; 
    1920import ndg.common.exception.NdgExecutionException; 
    2021import ndg.services.revitalization.EJBBeanFactory; 
     
    5455        } 
    5556         
    56         private void prepareProviderEmails(ProviderCommonType common, ProviderCommon provider) { 
     57        private void prepareProviderEmails(ProviderCommonType common, ProviderCommon provider) throws NdgExecutionException { 
    5758                ProviderEmail email = null; 
    5859                 
     
    6869                if (aemail != null) { 
    6970                        email = new ProviderEmail(); 
     71                        if (! Validate.validateEmail(aemail.getEmail())) { 
     72                                throw new NdgExecutionException(new NdgMessage("illegal.mail.format", new Object[]{aemail.getEmail()})); 
     73                        } 
    7074                        email.setEmail(aemail.getEmail()); 
    7175                        email.setRealName(aemail.getName()); 
     
    8892                for (EmailContactType item : contacts){ 
    8993                        email = new ProviderEmail(); 
    90                         //email = getNewUpdateEmail(provider.getProviderEmails(), item.getID());                         
     94                        //email = getNewUpdateEmail(provider.getProviderEmails(), item.getID()); 
     95                        if (! Validate.validateEmail(item.getEmail())) { 
     96                                throw new NdgExecutionException(new NdgMessage("illegal.mail.format", new Object[]{item.getEmail()})); 
     97                        } 
    9198                        email.setEmail(item.getEmail()); 
    9299                        email.setRealName(item.getName()); 
     
    96103        }        
    97104         
    98         private <T extends ProviderCommon> void prepareCommonProvider(ProviderDetail pdetails, T provider) { 
     105        private <T extends ProviderCommon> void prepareCommonProvider(ProviderDetail pdetails, T provider) throws NdgExecutionException { 
    99106                ProviderCommonType common = pdetails.getProviderCommon();                
    100107                provider.setBaseUrl(common.getProviderURL()); 
  • RevitalizationWS/ws/DPWS/trunk/src/main/java/ndg/services/revitalization/harvest/csw/CSWHarvester.java

    r7625 r7783  
    11/* 
    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 
     2 * BSD Licence Copyright (c) 2009, Science & Technology Facilities Council 
     3 * (STFC) All rights reserved. 
     4 *  
     5 * See the LICENSE file in the source distribution of this software for the full 
     6 * license text. Copyright (C) 2007 STFC & NERC (Science and Technology 
     7 * Facilities Council). This software may be distributed under the terms of the 
    108 * Q Public License, version 1.0 or later. 
    119 * http://ndg.nerc.ac.uk/public_docs/QPublic_license.txt 
     
    1614import java.io.IOException; 
    1715import java.io.InputStream; 
     16import java.math.BigInteger; 
    1817import java.net.HttpURLConnection; 
    19 import java.net.MalformedURLException; 
     18import java.net.ProtocolException; 
    2019import java.net.URL; 
    2120import java.util.Iterator; 
     
    3130import javax.xml.transform.stream.StreamResult; 
    3231 
    33 import ndg.common.exception.NdgException; 
    3432import ndg.common.exception.NdgExecutionException; 
     33import ndg.common.exception.ResourceNotAvailable; 
    3534import ndg.common.jaxb.JAXBManager; 
    3635import ndg.services.revitalization.harvest.HarvesterBase; 
     
    4948/** 
    5049 * Represents a CSW able harvester. 
    51  * @author Maurizio Nagni <maurizio.nagni@stfc.ac.uk>    
     50 *  
     51 * @author Maurizio Nagni <maurizio.nagni@stfc.ac.uk> 
    5252 */ 
    5353public class CSWHarvester extends HarvesterBase<CSWHarvestRequest> { 
    5454 
    55          //private final JaxbService jaxbService = new JaxbService("net.opengis.gml:net.opengis.csw:net.opengis.ogc", new CSWMarshallerHelper()); 
    56          private static JAXBManager manager = null; 
     55        // private final JaxbService jaxbService = new 
     56        // JaxbService("net.opengis.gml:net.opengis.csw:net.opengis.ogc", new 
     57        // CSWMarshallerHelper()); 
     58        private static JAXBManager manager = null; 
    5759        /** 
    5860         *  
     
    6062        private static final long serialVersionUID = 7555651653412200168L; 
    6163 
     64        private GetRecordsType recordsRequest; 
     65 
    6266        public CSWHarvester(CSWHarvestRequest request, HiProcess hiProcess) { 
    6367                super(request, hiProcess); 
    6468                CSWHarvester.manager = JAXBManager.getInstance(); 
    6569        } 
    66          
     70 
    6771        @Override 
    68         protected void doHarvest() throws NdgExecutionException {        
     72        protected void doHarvest() throws NdgExecutionException { 
     73                if (recordsRequest == null) { 
     74                        doGetRecordsType(); 
     75                } 
     76                getRecords(getHits()); 
     77        } 
     78 
     79        private void getRecords(BigInteger hits) throws NdgExecutionException { 
     80                recordsRequest.setResultType(ResultType.RESULTS); 
     81                recordsRequest.setMaxRecords(hits); 
     82                extractRecords(getResponse()); 
     83        } 
     84 
     85        private BigInteger getHits() throws NdgExecutionException { 
     86                recordsRequest.setResultType(ResultType.HITS); 
     87                return getResponse().getSearchResults().getNumberOfRecordsMatched(); 
     88        } 
     89 
     90        private GetRecordsResponseType getResponse() throws NdgExecutionException { 
    6991                try { 
    7092                        URL url = new URL(getHarvestRequest().getUrl()); 
     
    78100                        conn.setRequestProperty("Content-Type", "text/xml"); 
    79101                        ((HttpURLConnection) conn).setRequestMethod("POST"); 
    80                          
    81                         CSWHarvester.manager.marshall(doGetRecordsType(), conn.getOutputStream()); 
    82                         // Read response data 
    83                         extractRecords(conn.getInputStream()); 
    84                 } catch (MalformedURLException e) { 
     102                        CSWHarvester.manager.marshall(recordsRequest, conn.getOutputStream()); 
     103                        return getResponseType(conn.getInputStream()); 
     104                } catch (ProtocolException e) { 
     105                        throw new NdgExecutionException(e.getMessage(), e); 
     106                } catch (ResourceNotAvailable e) { 
     107                        throw new NdgExecutionException(e.getMessage(), e); 
     108                } catch (JAXBException e) { 
    85109                        throw new NdgExecutionException(e.getMessage(), e); 
    86110                } catch (IOException e) { 
    87111                        throw new NdgExecutionException(e.getMessage(), e); 
    88                 } catch (NdgException e) { 
    89                         throw new NdgExecutionException(e.getMessage(), e); 
    90                 } catch (JAXBException e) { 
    91                         throw new NdgExecutionException(e.getMessage(), e); 
    92                 }  
     112                } 
    93113        } 
    94114 
    95         private GetRecordsType doGetRecordsType() { 
     115        private GetRecordsResponseType getResponseType(InputStream is) throws NdgExecutionException { 
     116                GetRecordsResponseType response = null; 
     117                try { 
     118                        response = CSWHarvester.manager.unmarshall(is, GetRecordsResponseType.class); 
     119                } catch (JAXBException e) { 
     120                        if (e.getLinkedException() != null) 
     121                                throw new NdgExecutionException(e.getLinkedException().getMessage(), e); 
     122                } catch (ResourceNotAvailable e) { 
     123                        throw new NdgExecutionException(e.getMessage(), e); 
     124                } 
     125                return response; 
     126        } 
     127 
     128        private void doGetRecordsType() { 
    96129                ObjectFactory of = new ObjectFactory(); 
    97130                GetRecordsType ret = of.createGetRecordsType(); 
     
    101134                QueryType qt = of.createQueryType(); 
    102135                qt.getTypeNames().addAll(getHarvestRequest().getQueryTypeNames()); 
    103                  
     136 
    104137                ElementSetNameType nameType = of.createElementSetNameType(); 
    105138                nameType.setValue(ElementSetType.BRIEF); 
     
    107140 
    108141                ret.setAbstractQuery(of.createQuery(qt)); 
    109                 return ret; 
     142                recordsRequest = ret; 
    110143        } 
    111          
    112         private void extractRecords(InputStream is) throws NdgException { 
    113                 GetRecordsResponseType response = null; 
    114                 try { 
    115                         response = CSWHarvester.manager.unmarshall(is, GetRecordsResponseType.class); 
    116                 } catch (JAXBException e) { 
    117                         if (e.getLinkedException() != null) 
    118                                 throw new NdgExecutionException(e.getLinkedException().getMessage(), e); 
    119                 } 
    120                  
     144 
     145        private void extractRecords(GetRecordsResponseType response) throws NdgExecutionException { 
    121146                if (response == null) 
    122147                        throw new NdgExecutionException("The Provider response message is null"); 
    123                  
     148 
    124149                Iterator<Object> iter = response.getSearchResults().getAny().iterator(); 
    125                 ElementNSImpl doc = null;                
     150                ElementNSImpl doc = null; 
    126151                int index = 0; 
    127152                Transformer transformer; 
     
    131156                        transformer.setOutputProperty(OutputKeys.INDENT, "yes"); 
    132157                } catch (TransformerConfigurationException e) { 
    133                         throw new NdgException(e.getMessage(), e); 
     158                        throw new NdgExecutionException(e.getMessage(), e); 
    134159                } 
    135160                Document document = null; 
     
    137162                Result result = null; 
    138163                while (iter.hasNext()) { 
    139                         doc = (ElementNSImpl)iter.next(); 
     164                        doc = (ElementNSImpl) iter.next(); 
    140165                        document = doc.getOwnerDocument(); 
    141166                        source = new DOMSource(document); 
     
    144169                                transformer.transform(source, result); 
    145170                        } catch (TransformerException e) { 
    146                                 throw new NdgException(e.getMessage(), e); 
     171                                throw new NdgExecutionException(e.getMessage(), e); 
    147172                        } 
    148173                } 
    149174        } 
    150          
    151         private Result getCreateResult(int index) throws NdgException { 
     175 
     176        private Result getCreateResult(int index) throws NdgExecutionException { 
    152177                File file = new File(getHiProcess().getHarvestDir() + File.separator + index + ".xml"); 
    153178                try { 
    154179                        file.createNewFile(); 
    155180                } catch (IOException e) { 
    156                         throw new NdgException(e.getMessage(), e);  
     181                        throw new NdgExecutionException(e.getMessage(), e); 
    157182                } 
    158183                return new StreamResult(file); 
Note: See TracChangeset for help on using the changeset viewer.