You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by go...@apache.org on 2004/10/06 11:19:04 UTC

cvs commit: jakarta-lucene/src/java/org/apache/lucene/util Parameter.java

goller      2004/10/06 02:19:04

  Modified:    src/java/org/apache/lucene/search BooleanClause.java
               src/java/org/apache/lucene/document Field.java
  Added:       src/java/org/apache/lucene/util Parameter.java
  Log:
  Introduce a serializable Parameter Class.
  
  Revision  Changes    Path
  1.11      +8 -45     jakarta-lucene/src/java/org/apache/lucene/search/BooleanClause.java
  
  Index: BooleanClause.java
  ===================================================================
  RCS file: /home/cvs/jakarta-lucene/src/java/org/apache/lucene/search/BooleanClause.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- BooleanClause.java	12 Sep 2004 13:16:02 -0000	1.10
  +++ BooleanClause.java	6 Oct 2004 09:19:04 -0000	1.11
  @@ -1,7 +1,6 @@
   package org.apache.lucene.search;
   
  -import java.io.ObjectStreamException;
  -import java.io.StreamCorruptedException;
  +import org.apache.lucene.util.Parameter;
   
   /**
    * Copyright 2004 The Apache Software Foundation
  @@ -22,59 +21,23 @@
   /** A clause in a BooleanQuery. */
   public class BooleanClause implements java.io.Serializable {
     
  -  public static final class Occur implements java.io.Serializable {
  +  public static final class Occur extends Parameter implements java.io.Serializable {
       
  -    private int id;
  -    private String name;
  -    private static final int MUST_ID = 0;
  -    private static final int MUST_NOT_ID = 1;
  -    private static final int SHOULD_ID = 2;
  -    
  -    private Occur() {
  +    private Occur(String name) {
         // typesafe enum pattern, no public constructor
  +      super(name);
       }
  -    
  -    private Occur(int id, String name) {
  -      // typesafe enum pattern, no public constructor
  -      this.id = id;
  -      this.name = name;
  -    }
  -    
  -    public String toString() {
  -      return name;
  -    }
  -
  +   
       /** Use this operator for terms that <i>must</i> appear in the matching documents. */
  -    public static final Occur MUST = new Occur(MUST_ID, "MUST");
  +    public static final Occur MUST = new Occur("MUST");
       /** Use this operator for terms of which <i>should</i> appear in the 
        * matching documents. For a BooleanQuery with two <code>SHOULD</code> 
        * subqueries, at least one of the queries must appear in the matching documents. */
  -    public static final Occur SHOULD = new Occur(SHOULD_ID, "SHOULD");
  +    public static final Occur SHOULD = new Occur("SHOULD");
       /** Use this operator for terms that <i>must not</i> appear in the matching documents.
        * Note that it is not possible to search for queries that only consist
        * of a <code>MUST_NOT</code> query. */
  -    public static final Occur MUST_NOT = new Occur(MUST_NOT_ID, "MUST_NOT");
  -    
  -    /**
  -     * Resolves the deserialized instance to the local reference for accurate
  -     * equals() and == comparisons.
  -     * 
  -     * @return a reference to Occur as resolved in the local VM
  -     * @throws ObjectStreamException
  -     */
  -    private Object readResolve() throws ObjectStreamException {
  -      int id = ((Occur) this).id;
  -      switch (id) {
  -        case MUST_ID :
  -          return Occur.MUST;
  -        case MUST_NOT_ID :
  -          return Occur.MUST_NOT;
  -        case SHOULD_ID:
  -          return Occur.SHOULD;
  -        default :
  -          throw new StreamCorruptedException("Unknown id " + id);
  -      }
  -    }
  +    public static final Occur MUST_NOT = new Occur("MUST_NOT");
       
     }
   
  
  
  
  1.26      +15 -23    jakarta-lucene/src/java/org/apache/lucene/document/Field.java
  
  Index: Field.java
  ===================================================================
  RCS file: /home/cvs/jakarta-lucene/src/java/org/apache/lucene/document/Field.java,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- Field.java	5 Oct 2004 17:30:48 -0000	1.25
  +++ Field.java	6 Oct 2004 09:19:04 -0000	1.26
  @@ -17,11 +17,13 @@
    */
   
   import java.io.Reader;
  +import java.io.Serializable;
   import java.util.Date;
   
   import org.apache.lucene.index.IndexReader;
   import org.apache.lucene.search.Hits;
   import org.apache.lucene.search.Similarity;
  +import org.apache.lucene.util.Parameter;
   
   /**
     A field is a section of a Document.  Each field has two parts, a name and a
  @@ -31,7 +33,7 @@
     index, so that they may be returned with hits on the document.
     */
   
  -public final class Field implements java.io.Serializable {
  +public final class Field implements Serializable {
     private String name = "body";
     
     // the one and only data object for all different kind of field values
  @@ -48,14 +50,10 @@
     
     private float boost = 1.0f;
     
  -  public static final class Store {
  -    private String name;
  -    private Store() {}
  +  public static final class Store extends Parameter implements Serializable {
  +    
       private Store(String name) {
  -      this.name = name;
  -    }
  -    public String toString() {
  -      return name;
  +      super(name);
       }
       
       /** Store the original field value in the index in a compressed form. This is
  @@ -74,24 +72,23 @@
       public static final Store NO = new Store("NO");
     }
     
  -  public static final class Index {
  -    private String name;
  -    private Index() {}
  +  public static final class Index extends Parameter implements Serializable {
  +    
       private Index(String name) {
  -      this.name = name;
  -    }
  -    public String toString() {
  -      return name;
  +      super(name);
       }
  +    
       /** Do not index the field value. This field can thus not be searched,
        * but one can still access its contents provided it is 
        * {@link Field.Store stored}. */
       public static final Index NO = new Index("NO");
  +    
       /** Index the field's value so it can be searched. An Analyzer will be used
        * to tokenize and possibly further normalize the text before its
        * terms will be stored in the index. This is useful for common text.
        */
       public static final Index TOKENIZED = new Index("TOKENIZED");
  +    
       /** Index the field's value without using an Analyzer, so it can be searched.
        * As no analyzer is used the value will be stored as a single term. This is 
        * useful for unique Ids like product numbers.
  @@ -99,15 +96,10 @@
       public static final Index UN_TOKENIZED = new Index("UN_TOKENIZED");
     }
   
  -  public static final class TermVector {
  -    private String name;
  -    private TermVector() {}
  +  public static final class TermVector  extends Parameter implements Serializable {
  +    
       private TermVector(String name) {
  -      this.name = name;
  -    }
  -
  -    public String toString() {
  -      return name;
  +      super(name);
       }
       
       /** Do not store term vectors. 
  
  
  
  1.1                  jakarta-lucene/src/java/org/apache/lucene/util/Parameter.java
  
  Index: Parameter.java
  ===================================================================
  package org.apache.lucene.util;
  
  /**
   * Copyright 2004 The Apache Software Foundation
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  
  import java.io.ObjectStreamException;
  import java.io.Serializable;
  import java.io.StreamCorruptedException;
  import java.util.HashMap;
  import java.util.Map;
  
  /**
   * A serializable Enum class.
   */
  public abstract class Parameter implements Serializable
  {
    static Map allParameters = new HashMap();
    
    private String name;
    
    private Parameter() {
      // typesafe enum pattern, no public constructor
    }
    
    protected Parameter(String name) {
      //  typesafe enum pattern, no public constructor
      this.name = name;
      String key = makeKey(name);
      
      if(allParameters.containsKey(key))
        throw new IllegalArgumentException("Parameter name " + key + " already used!");
      
      allParameters.put(key, this);
    }
    
    private String makeKey(String name){
      return getClass() + " " + name;
    }
    
    public String toString() {
      return name;
    }
    
    /**
     * Resolves the deserialized instance to the local reference for accurate
     * equals() and == comparisons.
     * 
     * @return a reference to Parameter as resolved in the local VM
     * @throws ObjectStreamException
     */
    private Object readResolve() throws ObjectStreamException {
      Object par = allParameters.get(makeKey(name));
      
      if(par == null)
        throw new StreamCorruptedException("Unknown parameter value: " + name);
        
      return par;
      }
    
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: lucene-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: lucene-dev-help@jakarta.apache.org