Changeset 2462 for TI01-discovery


Ignore:
Timestamp:
08/05/07 16:08:39 (12 years ago)
Author:
mpritcha
Message:

Added choice of spatial operators : overlaps, within, doesNotOverlap

Location:
TI01-discovery/trunk/ws-Discovery2/src/ndg/services/discovery
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • TI01-discovery/trunk/ws-Discovery2/src/ndg/services/discovery/DiscoveryServiceSkeleton.java

    r2096 r2462  
    9090                                agent.setLimitNorth( requestContent.getBoundingBox().getLimitNorth() ); 
    9191                                agent.setDoSpatio( true ); 
     92                                if ( requestContent.isSetSpatialOperator() ) 
     93                                { 
     94                                        agent.setSpatialOperator( requestContent.getSpatialOperator() ); 
     95                                } 
    9296                        } 
    9397 
     
    224228                listNames.addListName("scopeList"); 
    225229                listNames.addListName("termTypeList"); 
     230                listNames.addListName("spatialOperatorList"); 
    226231 
    227232                return response; 
     
    272277                        list.addListMember("parameter"); 
    273278                } 
     279                else if ( requestContent.getListName().equals("spatialOperatorList") ) 
     280                { 
     281                        list.setName( listName ); 
     282                        list.addListMember("overlaps"); 
     283                        list.addListMember("doesNotOverlap"); 
     284                        list.addListMember("within"); 
     285                } 
    274286                else  
    275287                { 
  • TI01-discovery/trunk/ws-Discovery2/src/ndg/services/discovery/SearchAgent.java

    r2415 r2462  
    5656        // TODO ...add orderByDirection (and to WSDL) 
    5757        Vector scopes = new Vector(); 
     58        String spatialOperator = "overlaps"; 
    5859 
    5960        BigDecimal limitWest; 
     
    309310        { 
    310311                this.doScope = b; 
     312        } 
     313 
     314        /** 
     315         * Sets operator used for spatial search 
     316         * @param s va;id value from list <code>spatialOperatorsList</code> 
     317        */ 
     318        public void setSpatialOperator(String s) 
     319        { 
     320                this.spatialOperator = s; 
     321        } 
     322 
     323        /** 
     324         * Gets operator used for spatial search 
     325         * @return String containing value of spatial operator 
     326         */ 
     327        public String getSpatialOperator() 
     328        { 
     329                return this.spatialOperator; 
    311330        } 
    312331 
     
    365384                                        DecimalFormat lonFormat = new DecimalFormat( lonFormatPattern ); 
    366385 
    367                                         spatialClause = " sbox_overlap_box( coordinates, sbox'("+ 
     386                                        if ( spatialOperator.equals("within") ) 
     387                                        { 
     388                                                spatialClause += " sbox_contains_box("; 
     389                                        }  
     390                                        else if ( spatialOperator.equals("overlaps") ) 
     391                                        { 
     392                                                spatialClause += " sbox_overlap_box("; 
     393                                        } 
     394                                        else if ( spatialOperator.equals("doesNotOverlap") ) 
     395                                        { 
     396                                                spatialClause += " NOT sbox_overlap_box("; 
     397                                        }  
     398                                        else 
     399                                        { 
     400                                                throw new Exception("Unrecognised spatial operator: " + spatialOperator + " (see spatialOperatorList for supported values)"); 
     401                                        }                                       spatialClause += " sbox'("+ 
    368402                                                lonFormat.format( limitWest.floatValue() )+"d,"+ 
    369403                                                latFormat.format( limitSouth.floatValue() )+"d),("+ 
    370404                                                lonFormat.format( limitEast.floatValue() )+"d,"+ 
    371                                                 latFormat.format( limitNorth.floatValue() )+"d)') "; 
    372                                          
     405                                                latFormat.format( limitNorth.floatValue() )+"d)' "; 
     406                                        spatialClause += ", coordinates ) "; 
     407 
    373408                                } 
    374409                                else { 
     
    434469                        xqueryStr = xqueryStr.replaceFirst("__subst_doScope__", this.doScope ? "fn:true()" : "fn:false()"); 
    435470                         
    436                         System.out.println("Xquery was \n" + xqueryStr); 
     471                        //System.out.println("Xquery was \n" + xqueryStr); 
    437472 
    438473                        queryParams.addElement( xqueryStr.getBytes("UTF-8") );  
Note: See TracChangeset for help on using the changeset viewer.