Return-Path: Delivered-To: apmail-lucene-java-commits-archive@www.apache.org Received: (qmail 30244 invoked from network); 21 Mar 2009 00:46:49 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 21 Mar 2009 00:46:49 -0000 Received: (qmail 19330 invoked by uid 500); 21 Mar 2009 00:46:49 -0000 Delivered-To: apmail-lucene-java-commits-archive@lucene.apache.org Received: (qmail 19307 invoked by uid 500); 21 Mar 2009 00:46:49 -0000 Mailing-List: contact java-commits-help@lucene.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: java-dev@lucene.apache.org Delivered-To: mailing list java-commits@lucene.apache.org Received: (qmail 19296 invoked by uid 99); 21 Mar 2009 00:46:49 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 20 Mar 2009 17:46:49 -0700 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 21 Mar 2009 00:46:48 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 5C783238889F; Sat, 21 Mar 2009 00:46:28 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r756849 - /lucene/java/trunk/contrib/spatial/src/java/org/apache/lucene/spatial/tier/DistanceQueryBuilder.java Date: Sat, 21 Mar 2009 00:46:28 -0000 To: java-commits@lucene.apache.org From: pjaol@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20090321004628.5C783238889F@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: pjaol Date: Sat Mar 21 00:46:27 2009 New Revision: 756849 URL: http://svn.apache.org/viewvc?rev=756849&view=rev Log: Fixed NPE for minimal bounding box search LUCENE-1568 Modified: lucene/java/trunk/contrib/spatial/src/java/org/apache/lucene/spatial/tier/DistanceQueryBuilder.java Modified: lucene/java/trunk/contrib/spatial/src/java/org/apache/lucene/spatial/tier/DistanceQueryBuilder.java URL: http://svn.apache.org/viewvc/lucene/java/trunk/contrib/spatial/src/java/org/apache/lucene/spatial/tier/DistanceQueryBuilder.java?rev=756849&r1=756848&r2=756849&view=diff ============================================================================== --- lucene/java/trunk/contrib/spatial/src/java/org/apache/lucene/spatial/tier/DistanceQueryBuilder.java (original) +++ lucene/java/trunk/contrib/spatial/src/java/org/apache/lucene/spatial/tier/DistanceQueryBuilder.java Sat Mar 21 00:46:27 2009 @@ -37,7 +37,7 @@ private final double lng; private final double miles; private Filter cartesianFilter; - + private boolean needPrecision = true; /** * Create a distance query using * a boundary box wrapper around a more precise @@ -54,6 +54,7 @@ this.lat = lat; this.lng = lng; this.miles = miles; + this.needPrecision = needPrecise; CartesianPolyFilterBuilder cpf = new CartesianPolyFilterBuilder(tierFieldPrefix); @@ -81,7 +82,7 @@ this.lat = lat; this.lng = lng; this.miles = miles; - + this.needPrecision = needPrecise; CartesianPolyFilterBuilder cpf = new CartesianPolyFilterBuilder(tierFieldPrefix); cartesianFilter = cpf.getBoundingArea(lat, lng, (int)miles); @@ -104,20 +105,37 @@ * @param miles */ public Filter getFilter() { - return new SerialChainFilter(new Filter[] {cartesianFilter, distanceFilter}, - new int[] {SerialChainFilter.AND, - SerialChainFilter.SERIALAND}); + Filter [] f; + int [] chain; + + if (needPrecision){ + f = new Filter[]{cartesianFilter, distanceFilter}; + chain = new int[] {SerialChainFilter.AND, + SerialChainFilter.SERIALAND}; + }else{ + f= new Filter[]{cartesianFilter}; + chain = new int[] {SerialChainFilter.AND}; + } + return new SerialChainFilter( f, chain ); } public Filter getFilter(Query query) { QueryWrapperFilter qf = new QueryWrapperFilter(query); + Filter [] f; + int [] chain; - return new SerialChainFilter(new Filter[] {cartesianFilter, qf, distanceFilter}, - new int[] {SerialChainFilter.AND, - SerialChainFilter.AND, - SerialChainFilter.SERIALAND}); - + if (needPrecision){ + f = new Filter[]{cartesianFilter, qf, distanceFilter}; + chain = new int[] {SerialChainFilter.AND, + SerialChainFilter.AND, + SerialChainFilter.SERIALAND}; + }else{ + f= new Filter[]{cartesianFilter, qf}; + chain = new int[] {SerialChainFilter.AND, + SerialChainFilter.AND}; + } + return new SerialChainFilter(f,chain); } public Query getQuery() {