Changeset 7919 for RevitalizationWS


Ignore:
Timestamp:
30/06/11 13:49:28 (8 years ago)
Author:
mnagni
Message:

Many updates/fixes
added a test class

Location:
RevitalizationWS/ws/DiscoveryService/trunk
Files:
4 added
1 deleted
4 edited

Legend:

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

    r7615 r7919  
    44        <groupId>ndg.services.dws</groupId> 
    55        <artifactId>DiscoveryService</artifactId> 
    6         <version>0.0.1-SNAPSHOT</version> 
     6        <version>1.1.0</version> 
    77        <packaging>aar</packaging> 
    88 
     
    5454                        <scope>test</scope> 
    5555                </dependency> 
     56                 
     57                <dependency> 
     58                        <groupId>org.slf4j</groupId> 
     59                        <artifactId>slf4j-simple</artifactId> 
     60                        <version>1.6.1</version> 
     61                        <scope>test</scope>                      
     62                </dependency>            
    5663        </dependencies> 
    5764 
  • RevitalizationWS/ws/DiscoveryService/trunk/src/main/java/ndg/services/discovery/model/CommonMethods.java

    r7900 r7919  
    119119        } 
    120120         
    121         String assembleSearch(SearchCriteria criteria, RetrieveCriteriaType retrieveType)  
     121        public String assembleSearch(SearchCriteria criteria, RetrieveCriteriaType retrieveType)  
    122122                throws AssembleQueryException{ 
    123123 
  • RevitalizationWS/ws/DiscoveryService/trunk/src/main/java/ndg/services/discovery/model/PresentAgent.java

    r7900 r7919  
    234234                Connection conn = DiscoveryBasic.getInstance().getDiscoveryConnection(); 
    235235                List<OriginalDocument> searchResult = null; 
    236                 boolean commit = false; 
    237                 try { 
    238                         conn.setAutoCommit(false); 
    239                         searchResult = doPresent(conn, documentsId, type); 
    240                         commit = true; 
    241                 } catch (SQLException e) { 
    242                         // NdgMessage msg = new NdgMessage("sql.resultset.parsing.error", 
    243                         // new Object[] { sqlQuery }); 
    244                 } finally { 
    245                         commitOrRollback(conn, commit); 
    246                 } 
     236                searchResult = doPresent(conn, documentsId, type); 
     237                 
    247238                if (conn != null) { 
    248239                        try { 
  • RevitalizationWS/ws/DiscoveryService/trunk/src/main/java/ndg/services/discovery/model/SearchAgent.java

    r7904 r7919  
    66import java.sql.Statement; 
    77import java.util.ArrayList; 
    8 import java.util.Arrays; 
    98import java.util.Collections; 
    109import java.util.Comparator; 
     
    2019import ndg.services.discovery.basic.DiscoveryDictionary; 
    2120import ndg.services.discovery.basic.DiscoveryDictionary.TemporalOperator; 
     21import ndg.services.discovery.basic.DiscoveryDictionary.TermTarget; 
    2222import ndg.services.jpa.OriginalDocument; 
    2323import ndg.services.schemas.discovery.BoundingBoxType; 
     
    3131import ndg.services.schemas.discovery.TermSearchType; 
    3232 
    33 import org.apache.log4j.Level; 
    3433import org.apache.log4j.Logger; 
    3534 
     
    182181 
    183182                /* -- defines the ResourceLocator status? -- */          
    184                 preapareResourceLocatorSearch(fromSQL, whereSQL, criteria.getResourceLocator()); 
     183                preapareResourceLocatorSearch(fromSQL, whereSQL, criteria.getResourceLocator());         
    185184                 
    186185                /* -- has Scope request? -- */ 
     
    198197                whereSQL.append(resourceLocator);                
    199198        }  
     199 
     200        /** 
     201         * Has been verified that  
     202         *              <ns0:TermSearch id="1"> 
     203                                <ns0:Term>acoustic OR seagrass</ns0:Term> 
     204                                <ns0:TermTarget>FullText</ns0:TermTarget> 
     205                        </ns0:TermSearch> 
     206         
     207                and  
     208                        <ns0:TermSearch id="1"> 
     209                                <ns0:Term>acoustic</ns0:Term> 
     210                                <ns0:TermTarget>FullText</ns0:TermTarget> 
     211                        </ns0:TermSearch> 
     212                        <ns0:TermSearch id="2" operator="OR"> 
     213                                <ns0:Term>seagrass</ns0:Term> 
     214                                <ns0:TermTarget>FullText</ns0:TermTarget> 
     215                        </ns0:TermSearch> 
     216         
     217        produce two different but equivalent queries. The problems with such queries  
     218        is that the second is deadly slow.  To avoid this this method groups different TermTarget 
     219        in one single TermSearch 
     220         **/ 
     221        private List<TermSearchType> aggregateTermTarget(TermSearchType[] termsType) { 
     222                List<TermSearchType> retList = new ArrayList<TermSearchType>(); 
     223                TermSearchType newTS = null; 
     224                for (TermTarget tt : TermTarget.values()) { 
     225                        newTS = TermSearchType.Factory.newInstance(); 
     226                        newTS.setTermTarget(tt.fieldLabel()); 
     227                        boolean firstTerm = true; 
     228                        for (TermSearchType ts : termsType) {                            
     229                                if (tt.equals(DiscoveryDictionary.getTermType(ts.getTermTarget()))) { 
     230                                        if (newTS.getTerm() == null) { 
     231                                                newTS.setTerm(ts.getTerm()); 
     232                                        } else { 
     233                                                if (newTS.getTerm().length() == 0) { 
     234                                                        newTS.setTerm(ts.getTerm()); 
     235                                                } else { 
     236                                                        newTS.setTerm(newTS.getTerm() + " " + getOperator(ts.getOperator()) + " " + ts.getTerm()); 
     237                                                }        
     238                                        } 
     239                                        if (firstTerm) { 
     240                                                newTS.setOperator(ts.getOperator()); 
     241                                                firstTerm = false; 
     242                                        }        
     243                                } 
     244                        } 
     245                        if (newTS.getTerm() != null && newTS.getTerm().length() > 0) { 
     246                                retList.add(newTS);                      
     247                        } 
     248                } 
     249                return retList; 
     250        }        
    200251         
    201252        private void preapareTermSearch(StringBuffer fromSQL, StringBuffer whereSQL, TermSearchType[] termsType) 
     
    204255                        return; 
    205256 
    206                 List<TermSearchType> terms = Arrays.asList(termsType); 
     257                List<TermSearchType> terms = aggregateTermTarget(termsType); 
    207258                Collections.sort(terms, new TermSearchTypeComparator()); 
    208259                boolean secondPass = false; 
Note: See TracChangeset for help on using the changeset viewer.