]> source.dussan.org Git - archiva.git/commitdiff
[MRM-127] clean up query objects by removing Lucene specifics (refactoring will conti...
authorBrett Porter <brett@apache.org>
Thu, 27 Jul 2006 07:09:38 +0000 (07:09 +0000)
committerBrett Porter <brett@apache.org>
Thu, 27 Jul 2006 07:09:38 +0000 (07:09 +0000)
git-svn-id: https://svn.apache.org/repos/asf/maven/repository-manager/trunk@425984 13f79535-47bb-0310-9956-ffa450edef68

maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/DefaultRepositoryIndexSearcher.java
maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/query/CompoundQuery.java
maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/query/CompoundQueryTerm.java
maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/query/Query.java
maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/query/RangeQuery.java
maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/query/SingleTermQuery.java

index 5525ed57df8206bb386e13addb3b642e25ea3024..c636dbb8eca350a1ad8a26d2856f26a1aa7a9ddc 100644 (file)
@@ -17,9 +17,14 @@ package org.apache.maven.repository.indexing;
  */\r
 \r
 import org.apache.lucene.document.Document;\r
+import org.apache.lucene.index.Term;\r
 import org.apache.lucene.queryParser.ParseException;\r
+import org.apache.lucene.queryParser.QueryParser;\r
+import org.apache.lucene.search.BooleanClause;\r
+import org.apache.lucene.search.BooleanQuery;\r
 import org.apache.lucene.search.Hits;\r
 import org.apache.lucene.search.IndexSearcher;\r
+import org.apache.lucene.search.TermQuery;\r
 import org.apache.maven.artifact.Artifact;\r
 import org.apache.maven.artifact.factory.ArtifactFactory;\r
 import org.apache.maven.artifact.repository.ArtifactRepository;\r
@@ -31,7 +36,11 @@ import org.apache.maven.artifact.repository.metadata.SnapshotArtifactRepositoryM
 import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader;\r
 import org.apache.maven.model.Model;\r
 import org.apache.maven.model.io.xpp3.MavenXpp3Reader;\r
+import org.apache.maven.repository.indexing.query.CompoundQuery;\r
+import org.apache.maven.repository.indexing.query.CompoundQueryTerm;\r
 import org.apache.maven.repository.indexing.query.Query;\r
+import org.apache.maven.repository.indexing.query.RangeQuery;\r
+import org.apache.maven.repository.indexing.query.SingleTermQuery;\r
 import org.codehaus.plexus.logging.AbstractLogEnabled;\r
 import org.codehaus.plexus.util.IOUtil;\r
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;\r
@@ -44,6 +53,7 @@ import java.net.MalformedURLException;
 import java.util.ArrayList;\r
 import java.util.Collections;\r
 import java.util.HashMap;\r
+import java.util.Iterator;\r
 import java.util.List;\r
 import java.util.Map;\r
 import java.util.StringTokenizer;\r
@@ -68,7 +78,7 @@ public class DefaultRepositoryIndexSearcher
         org.apache.lucene.search.Query luceneQuery;\r
         try\r
         {\r
-            luceneQuery = query.createLuceneQuery( index );\r
+            luceneQuery = createLuceneQuery( query, index );\r
         }\r
         catch ( ParseException e )\r
         {\r
@@ -118,6 +128,61 @@ public class DefaultRepositoryIndexSearcher
         return docs;\r
     }\r
 \r
+    private org.apache.lucene.search.Query createLuceneQuery( Query query, RepositoryIndex index )\r
+        throws ParseException\r
+    {\r
+        org.apache.lucene.search.Query luceneQuery = null;\r
+        // TODO: hacked in temporarily\r
+        if ( query instanceof CompoundQuery )\r
+        {\r
+            BooleanQuery booleanQuery = new BooleanQuery();\r
+            List queries = ( (CompoundQuery) query ).getCompoundQueryTerms();\r
+            for ( Iterator i = queries.iterator(); i.hasNext(); )\r
+            {\r
+                CompoundQueryTerm queryTerm = (CompoundQueryTerm) i.next();\r
+\r
+                booleanQuery.add( createLuceneQuery( queryTerm.getQuery(), index ), queryTerm.isRequired()\r
+                    ? BooleanClause.Occur.MUST\r
+                    : queryTerm.isProhibited() ? BooleanClause.Occur.MUST_NOT : BooleanClause.Occur.SHOULD );\r
+            }\r
+            luceneQuery = booleanQuery;\r
+        }\r
+        else if ( query instanceof SingleTermQuery )\r
+        {\r
+            org.apache.lucene.search.Query qry;\r
+            if ( index.isKeywordField( ( (SingleTermQuery) query ).getField() ) )\r
+            {\r
+                qry = new TermQuery(\r
+                    new Term( ( (SingleTermQuery) query ).getField(), ( (SingleTermQuery) query ).getValue() ) );\r
+            }\r
+            else\r
+            {\r
+                // TODO: doesn't seem like the right place for this here!\r
+                QueryParser parser = new QueryParser( ( (SingleTermQuery) query ).getField(), index.getAnalyzer() );\r
+                qry = parser.parse( ( (SingleTermQuery) query ).getValue() );\r
+            }\r
+            luceneQuery = qry;\r
+        }\r
+        else if ( query instanceof RangeQuery )\r
+        {\r
+            Term beginTerm = null;\r
+            if ( ( (RangeQuery) query ).getBegin() != null )\r
+            {\r
+                beginTerm = new Term( ( (RangeQuery) query ).getBegin().getField(),\r
+                                      ( (RangeQuery) query ).getBegin().getValue() );\r
+            }\r
+            Term endTerm = null;\r
+            if ( ( (RangeQuery) query ).getEnd() != null )\r
+            {\r
+                endTerm =\r
+                    new Term( ( (RangeQuery) query ).getEnd().getField(), ( (RangeQuery) query ).getEnd().getValue() );\r
+            }\r
+            luceneQuery =\r
+                new org.apache.lucene.search.RangeQuery( beginTerm, endTerm, ( (RangeQuery) query ).isInclusive() );\r
+        }\r
+        return luceneQuery;\r
+    }\r
+\r
     private RepositoryIndexSearchHit createSearchedObjectFromIndexDocument( Document doc,\r
                                                                             ArtifactRepository repository )\r
         throws RepositoryIndexSearchException\r
index 6de8559a8e599794a1fbe6a847fcca584fe5ad7e..85760b6215507f825e7b08b8fa79853e096955a1 100644 (file)
@@ -16,13 +16,7 @@ package org.apache.maven.repository.indexing.query;
  * limitations under the License.
  */
 
-import org.apache.lucene.queryParser.ParseException;
-import org.apache.lucene.search.BooleanClause;
-import org.apache.lucene.search.BooleanQuery;
-import org.apache.maven.repository.indexing.RepositoryIndex;
-
 import java.util.ArrayList;
-import java.util.Iterator;
 import java.util.List;
 
 /**
@@ -108,20 +102,4 @@ public class CompoundQuery
         return compoundQueryTerms;
     }
 
-    // TODO! relocate
-    public org.apache.lucene.search.Query createLuceneQuery( RepositoryIndex index )
-        throws ParseException
-    {
-        BooleanQuery booleanQuery = new BooleanQuery();
-        List queries = this.compoundQueryTerms;
-        for ( Iterator i = queries.iterator(); i.hasNext(); )
-        {
-            CompoundQueryTerm queryTerm = (CompoundQueryTerm) i.next();
-
-            booleanQuery.add( queryTerm.getQuery().createLuceneQuery( index ), queryTerm.isRequired()
-                ? BooleanClause.Occur.MUST
-                : queryTerm.isProhibited() ? BooleanClause.Occur.MUST_NOT : BooleanClause.Occur.SHOULD );
-        }
-        return booleanQuery;
-    }
 }
index 46507375f9957117482d953331a810b46d0f5c4f..abc99bd13eb3bd3c7fcbc0f7761cbfb95e342c42 100644 (file)
@@ -21,7 +21,7 @@ package org.apache.maven.repository.indexing.query;
  *
  * @author <a href="mailto:brett@apache.org">Brett Porter</a>
  */
-class CompoundQueryTerm
+public class CompoundQueryTerm
 {
     /**
      * The query to add to the compound query.
@@ -57,7 +57,7 @@ class CompoundQueryTerm
      *
      * @return true if this Query is a search requirement, otherwise returns false
      */
-    boolean isRequired()
+    public boolean isRequired()
     {
         return required;
     }
@@ -67,7 +67,7 @@ class CompoundQueryTerm
      *
      * @return true if this Query is prohibited in the search result
      */
-    boolean isProhibited()
+    public boolean isProhibited()
     {
         return prohibited;
     }
@@ -78,7 +78,7 @@ class CompoundQueryTerm
      *
      * @return the query
      */
-    Query getQuery()
+    public Query getQuery()
     {
         return query;
     }
index 515524121c0a415c4a31a26af6f16ac77c8d9924..2c6ac6137e52538e9c9e0d8f04c503c793e9ce46 100644 (file)
@@ -16,9 +16,6 @@ package org.apache.maven.repository.indexing.query;
  * limitations under the License.
  */
 
-import org.apache.lucene.queryParser.ParseException;
-import org.apache.maven.repository.indexing.RepositoryIndex;
-
 /**
  * Interface to label the query classes
  *
@@ -26,6 +23,4 @@ import org.apache.maven.repository.indexing.RepositoryIndex;
  */
 public interface Query
 {
-    org.apache.lucene.search.Query createLuceneQuery( RepositoryIndex index )
-        throws ParseException;
 }
index 632934a327fe2b0b3aad773733da463de4b90dd9..68e6d4a6aa3178d4efe04801885a7330515b7418 100644 (file)
@@ -16,9 +16,6 @@ package org.apache.maven.repository.indexing.query;
  * limitations under the License.\r
  */\r
 \r
-import org.apache.lucene.index.Term;\r
-import org.apache.maven.repository.indexing.RepositoryIndex;\r
-\r
 /**\r
  * Query object that handles range queries (presently used for dates).\r
  *\r
@@ -150,21 +147,4 @@ public class RangeQuery
         return inclusive;\r
     }\r
 \r
-    /**\r
-     * @todo! this seems like the wrong place for this (it's back to front - create the query from the index\r
-     */\r
-    public org.apache.lucene.search.Query createLuceneQuery( RepositoryIndex index )\r
-    {\r
-        Term beginTerm = null;\r
-        if ( begin != null )\r
-        {\r
-            beginTerm = new Term( begin.getField(), begin.getValue() );\r
-        }\r
-        Term endTerm = null;\r
-        if ( end != null )\r
-        {\r
-            endTerm = new Term( end.getField(), end.getValue() );\r
-        }\r
-        return new org.apache.lucene.search.RangeQuery( beginTerm, endTerm, inclusive );\r
-    }\r
 }\r
index 607b6a84ee37160ca8c4cd011edfc4bd042818d6..f7ae019fa435ecbab2a40e7a198cd6c07372b512 100644 (file)
@@ -16,12 +16,6 @@ package org.apache.maven.repository.indexing.query;
  * limitations under the License.
  */
 
-import org.apache.lucene.index.Term;
-import org.apache.lucene.queryParser.ParseException;
-import org.apache.lucene.queryParser.QueryParser;
-import org.apache.lucene.search.TermQuery;
-import org.apache.maven.repository.indexing.RepositoryIndex;
-
 /**
  * Query for a single term.
  *
@@ -56,26 +50,6 @@ public class SingleTermQuery
         this.term = new QueryTerm( field, value );
     }
 
-    /**
-     * @todo! this seems like the wrong place for this (it's back to front - create the query from the index
-     */
-    public org.apache.lucene.search.Query createLuceneQuery( RepositoryIndex index )
-        throws ParseException
-    {
-        org.apache.lucene.search.Query qry;
-        if ( index.isKeywordField( term.getField() ) )
-        {
-            qry = new TermQuery( new Term( term.getField(), term.getValue() ) );
-        }
-        else
-        {
-            // TODO: doesn't seem like the right place for this here!
-            QueryParser parser = new QueryParser( term.getField(), index.getAnalyzer() );
-            qry = parser.parse( term.getValue() );
-        }
-        return qry;
-    }
-
     public String getField()
     {
         return term.getField();