Author: stianh
Date: 2007-05-11 13:47:39 +0200 (Fri, 11 May 2007)
New Revision: 5062

Modified:
   
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/AddressSearchCommand.java
   
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/CatalogueSearchCommand.java
   
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/WhiteSearchCommand.java
   
trunk/core-api/src/main/java/no/schibstedsok/searchportal/util/GeoSearchUtil.java
Log:
SEARCH-225 Added calculated value for search restriction in selected area of 
map.


Modified: 
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/AddressSearchCommand.java
===================================================================
--- 
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/AddressSearchCommand.java
    2007-05-11 09:55:05 UTC (rev 5061)
+++ 
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/AddressSearchCommand.java
    2007-05-11 11:47:39 UTC (rev 5062)
@@ -77,11 +77,9 @@
         final String center = GeoSearchUtil.getCenter(pdo);
         
         LOG.debug("center : " + center);
-        //TODO: calculate this.
-        final String restrictRadius = "50";
 
         params.setParameter(new SearchParameter("qtf_geosearch:unit", 
GeoSearchUtil.RADIUS_MEASURE_UNIT_TYPE));
-        params.setParameter(new SearchParameter("qtf_geosearch:radius", 
restrictRadius));
+        params.setParameter(new SearchParameter("qtf_geosearch:radius", 
GeoSearchUtil.getRadiusRestriction(pdo)));
         params.setParameter(new SearchParameter("qtf_geosearch:center", 
center));
     }
  

Modified: 
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/CatalogueSearchCommand.java
===================================================================
--- 
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/CatalogueSearchCommand.java
  2007-05-11 09:55:05 UTC (rev 5061)
+++ 
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/CatalogueSearchCommand.java
  2007-05-11 11:47:39 UTC (rev 5062)
@@ -141,10 +141,9 @@
         final String center = GeoSearchUtil.getCenter(pdo);
         
         LOG.debug("center : " + center);
-        
-        final String restrictRadius = "10";
+ 
         params.setParameter(new SearchParameter("qtf_geosearch:unit", 
GeoSearchUtil.RADIUS_MEASURE_UNIT_TYPE));
-        params.setParameter(new SearchParameter("qtf_geosearch:radius", 
restrictRadius));
+        params.setParameter(new SearchParameter("qtf_geosearch:radius", 
GeoSearchUtil.getRadiusRestriction(pdo)));
         params.setParameter(new SearchParameter("qtf_geosearch:center", 
center));
     }
     /**

Modified: 
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/WhiteSearchCommand.java
===================================================================
--- 
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/WhiteSearchCommand.java
      2007-05-11 09:55:05 UTC (rev 5061)
+++ 
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/WhiteSearchCommand.java
      2007-05-11 11:47:39 UTC (rev 5062)
@@ -113,10 +113,9 @@
         }
      
         final String center = GeoSearchUtil.getCenter(pdo);
-       
-        final String restrictRadius = "50";
+ 
         params.setParameter(new SearchParameter("qtf_geosearch:unit", 
GeoSearchUtil.RADIUS_MEASURE_UNIT_TYPE));
-        params.setParameter(new SearchParameter("qtf_geosearch:radius", 
restrictRadius));
+        params.setParameter(new SearchParameter("qtf_geosearch:radius", 
GeoSearchUtil.getRadiusRestriction(pdo)));
         params.setParameter(new SearchParameter("qtf_geosearch:center", 
center));
     }
 

Modified: 
trunk/core-api/src/main/java/no/schibstedsok/searchportal/util/GeoSearchUtil.java
===================================================================
--- 
trunk/core-api/src/main/java/no/schibstedsok/searchportal/util/GeoSearchUtil.java
   2007-05-11 09:55:05 UTC (rev 5061)
+++ 
trunk/core-api/src/main/java/no/schibstedsok/searchportal/util/GeoSearchUtil.java
   2007-05-11 11:47:39 UTC (rev 5062)
@@ -1,17 +1,18 @@
 /*
  * $Id:$
  */
+
 package no.schibstedsok.searchportal.util;
 
 import javax.measure.units.SI;
 
-
 import no.schibstedsok.searchportal.datamodel.request.ParametersDataObject;
 
 import org.apache.log4j.Logger;
 import org.jscience.geography.coordinates.LatLong;
 import org.jscience.geography.coordinates.UTM;
 import org.jscience.geography.coordinates.crs.ReferenceEllipsoid;
+
 /**
  * Utility class for GEO search.
  * 
@@ -20,47 +21,52 @@
  * @version $Revision:$
  */
 public class GeoSearchUtil {
-    
+
     /** Logger for this class. */
     private static final Logger LOG = Logger.getLogger(GeoSearchUtil.class);
-    
+
     /** Constants for selected map rectangel. */
     private static final String MIN_X = "minX";
+
     private static final String MAX_X = "maxX";
+
     private static final String MIN_Y = "minY";
+
     private static final String MAX_Y = "maxY";
-    
+
     /** Measure unit to use. */
     public static final String RADIUS_MEASURE_UNIT_TYPE = "km";
-    
+
     /** The sort by to use when the search is a geo search. */
     public static final String GEO_SORT_BY = "geo_spec_sortable";
-    
+
+
     /** Utility class, should be used by calling static methods. */
-    private GeoSearchUtil(){
-        
+    private GeoSearchUtil() {
+
     }
-    
-     
+
+
     /**
      * Calcluates a center point from minX,maxX,minY,maxY parameters.
      * @param requestParameters Parameters for the request.
      * @return The center point in latlong format.
      */
-    public static String getCenter(final ParametersDataObject 
requestParameters){
-        
-        if(!isGeoSearch(requestParameters)){
-            throw new IllegalArgumentException("Given requestParameter object 
must contain parameters: minX,maxX,minY,maxY");
+    public static String getCenter(final ParametersDataObject 
requestParameters) {
+
+        if (!isGeoSearch(requestParameters)) {
+            throw new IllegalArgumentException(
+                    "Given requestParameter object must contain parameters: 
minX,maxX,minY,maxY");
         }
-        
+
         final int minX = Integer.parseInt((String) 
requestParameters.getValue(MIN_X).getString());
         final int maxX = Integer.parseInt((String) 
requestParameters.getValue(MAX_X).getString());
         final int minY = Integer.parseInt((String) 
requestParameters.getValue(MIN_Y).getString());
         final int maxY = Integer.parseInt((String) 
requestParameters.getValue(MAX_Y).getString());
-        
+
         final UTM utmMin = UTM.valueOf(33, 'W', minX, minY, SI.METER);
         final UTM utmMax = UTM.valueOf(33, 'W', maxX, maxY, SI.METER);
-        
+
         final LatLong llMin = UTM.utmToLatLong(utmMin, 
ReferenceEllipsoid.WGS84);
         final LatLong llMax = UTM.utmToLatLong(utmMax, 
ReferenceEllipsoid.WGS84);
 
@@ -71,31 +77,48 @@
 
         LOG.debug("(" + minX + "," + minY + ") (" + llMinX + "," + llMinY + 
")");
         LOG.debug("(" + maxX + "," + maxY + ") (" + llMaxX + "," + llMaxY + 
")");
-        
-        final String center = new StringBuilder("(").append(llMinX + (llMaxX - 
llMinX) / 2).append(",")
-                .append(llMinY + (llMaxY - llMinY) / 2).append(")").toString();
+
+        final String center = new StringBuilder("(").append(llMinX + (llMaxX - 
llMinX) / 2).append(",").append(
+                llMinY + (llMaxY - llMinY) / 2).append(")").toString();
         return center;
 
     }
-    
-  
-    
+
+
     /**
      * Responsible for checking if a ParameterDataObject is a geosearch.
      * @param requestParameters
      * @return true if the given parameter object contains minX,maxX,minY,maxY 
values.
      */
     public static boolean isGeoSearch(final ParametersDataObject 
requestParameters) {
-        
-        if (requestParameters.getValue(MIN_X) == null || 
requestParameters.getValue(MAX_X) == null || requestParameters.getValue(MIN_Y) 
== null
-                || requestParameters.getValue(MAX_Y) == null) {
+
+        if (requestParameters.getValue(MIN_X) == null || 
requestParameters.getValue(MAX_X) == null
+            || requestParameters.getValue(MIN_Y) == null || 
requestParameters.getValue(MAX_Y) == null) {
             return false;
         }
-        
-        if (requestParameters.getValue(MIN_X).getString().length() == 0 || 
requestParameters.getValue(MAX_X).getString().length() == 0 || 
requestParameters.getValue(MIN_Y).getString().length() == 0 
-                || requestParameters.getValue(MAX_Y).getString().length() == 
0) {
+
+        if (requestParameters.getValue(MIN_X).getString().length() == 0
+            || requestParameters.getValue(MAX_X).getString().length() == 0
+            || requestParameters.getValue(MIN_Y).getString().length() == 0
+            || requestParameters.getValue(MAX_Y).getString().length() == 0) {
             return false;
         }
         return true;
     }
+
+
+    public static int getRadiusRestriction(ParametersDataObject pdo) {
+
+        if (isGeoSearch(pdo)) {
+            final int minX = Integer.parseInt((String) 
pdo.getValue(MIN_X).getString());
+            final int maxX = Integer.parseInt((String) 
pdo.getValue(MAX_X).getString());
+            
+            double restrictedRadius =  ((maxX - minX) / 2) / 1000;
+            if(restrictedRadius < 1.0d ){
+                return 1;
+            } 
+            return (int)Math.round(restrictedRadius);
+        }
+        throw new IllegalArgumentException("Given requestParameter object must 
contain parameters: minX,maxX,minY,maxY");
+    }
 }
\ No newline at end of file

_______________________________________________
Kernel-commits mailing list
[email protected]
http://sesat.no/mailman/listinfo/kernel-commits

Reply via email to