Save This Page
Home » glassfish-v2ur2-b04-src » javax » mail » search » [javadoc | source]
    1   /*
    2    * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    3    *
    4    * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
    5    *
    6    * The contents of this file are subject to the terms of either the GNU
    7    * General Public License Version 2 only ("GPL") or the Common Development
    8    * and Distribution License("CDDL") (collectively, the "License").  You
    9    * may not use this file except in compliance with the License. You can obtain
   10    * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
   11    * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
   12    * language governing permissions and limitations under the License.
   13    *
   14    * When distributing the software, include this License Header Notice in each
   15    * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
   16    * Sun designates this particular file as subject to the "Classpath" exception
   17    * as provided by Sun in the GPL Version 2 section of the License file that
   18    * accompanied this code.  If applicable, add the following below the License
   19    * Header, with the fields enclosed by brackets [] replaced by your own
   20    * identifying information: "Portions Copyrighted [year]
   21    * [name of copyright owner]"
   22    *
   23    * Contributor(s):
   24    *
   25    * If you wish your version of this file to be governed by only the CDDL or
   26    * only the GPL Version 2, indicate your decision by adding "[Contributor]
   27    * elects to include this software in this distribution under the [CDDL or GPL
   28    * Version 2] license."  If you don't indicate a single choice of license, a
   29    * recipient has the option to distribute your version of this file under
   30    * either the CDDL, the GPL Version 2 or to extend the choice of license to
   31    * its licensees as provided above.  However, if you add GPL Version 2 code
   32    * and therefore, elected the GPL Version 2 license, then the option applies
   33    * only if the new code is made subject to such option by the copyright
   34    * holder.
   35    */
   36   
   37   /*
   38    * @(#)StringTerm.java	1.9 07/05/04
   39    */
   40   
   41   package javax.mail.search;
   42   
   43   /**
   44    * This class implements the match method for Strings. The current
   45    * implementation provides only for substring matching. We
   46    * could add comparisons (like strcmp ...).
   47    *
   48    * @author Bill Shannon
   49    * @author John Mani
   50    */
   51   public abstract class StringTerm extends SearchTerm {
   52       /**
   53        * The pattern.
   54        *
   55        * @serial
   56        */
   57       protected String pattern;
   58   
   59       /**
   60        * Ignore case when comparing?
   61        *
   62        * @serial
   63        */
   64       protected boolean ignoreCase;
   65   
   66       private static final long serialVersionUID = 1274042129007696269L;
   67   
   68       protected StringTerm(String pattern) {
   69   	this.pattern = pattern;
   70   	ignoreCase = true;
   71       }
   72   
   73       protected StringTerm(String pattern, boolean ignoreCase) {
   74   	this.pattern = pattern;
   75   	this.ignoreCase = ignoreCase;
   76       }
   77   
   78       /**
   79        * Return the string to match with.
   80        */
   81       public String getPattern() {
   82   	return pattern;
   83       }
   84   
   85       /**
   86        * Return true if we should ignore case when matching.
   87        */
   88       public boolean getIgnoreCase() {
   89   	return ignoreCase;
   90       }
   91   
   92       protected boolean match(String s) {
   93   	int len = s.length() - pattern.length();
   94   	for (int i=0; i <= len; i++) {
   95   	    if (s.regionMatches(ignoreCase, i, 
   96   				pattern, 0, pattern.length()))
   97   		return true;
   98   	}
   99   	return false;
  100       }
  101   
  102       /**
  103        * Equality comparison.
  104        */
  105       public boolean equals(Object obj) {
  106   	if (!(obj instanceof StringTerm))
  107   	    return false;
  108   	StringTerm st = (StringTerm)obj;
  109   	if (ignoreCase)
  110   	    return st.pattern.equalsIgnoreCase(this.pattern) &&
  111   		    st.ignoreCase == this.ignoreCase;
  112   	else
  113   	    return st.pattern.equals(this.pattern) &&
  114   		    st.ignoreCase == this.ignoreCase;
  115       }
  116   
  117       /**
  118        * Compute a hashCode for this object.
  119        */
  120       public int hashCode() {
  121   	return ignoreCase ? pattern.hashCode() : ~pattern.hashCode();
  122       }
  123   }

Save This Page
Home » glassfish-v2ur2-b04-src » javax » mail » search » [javadoc | source]