Source for javax.print.attribute.TextSyntax

   1: /* TextSyntax.java -- 
   2:    Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
   3: 
   4: This file is part of GNU Classpath.
   5: 
   6: GNU Classpath is free software; you can redistribute it and/or modify
   7: it under the terms of the GNU General Public License as published by
   8: the Free Software Foundation; either version 2, or (at your option)
   9: any later version.
  10: 
  11: GNU Classpath is distributed in the hope that it will be useful, but
  12: WITHOUT ANY WARRANTY; without even the implied warranty of
  13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  14: General Public License for more details.
  15: 
  16: You should have received a copy of the GNU General Public License
  17: along with GNU Classpath; see the file COPYING.  If not, write to the
  18: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
  19: 02110-1301 USA.
  20: 
  21: Linking this library statically or dynamically with other modules is
  22: making a combined work based on this library.  Thus, the terms and
  23: conditions of the GNU General Public License cover the whole
  24: combination.
  25: 
  26: As a special exception, the copyright holders of this library give you
  27: permission to link this library with independent modules to produce an
  28: executable, regardless of the license terms of these independent
  29: modules, and to copy and distribute the resulting executable under
  30: terms of your choice, provided that you also meet, for each linked
  31: independent module, the terms and conditions of the license of that
  32: module.  An independent module is a module which is not derived from
  33: or based on this library.  If you modify this library, you may extend
  34: this exception to your version of the library, but you are not
  35: obligated to do so.  If you do not wish to do so, delete this
  36: exception statement from your version. */
  37: 
  38: package javax.print.attribute;
  39: 
  40: import java.io.Serializable;
  41: import java.util.Locale;
  42: 
  43: /**
  44:  * <code>TextSyntax</code> is the abstract base class of all attribute 
  45:  * classes which provide a string as value (e.g. the location of the printer).
  46:  * <p>
  47:  * A <code>TextSyntax</code> instance consists of a string value and a
  48:  * locale which indicates the language of the locale of the string.
  49:  * </p>
  50:  *
  51:  * @author Michael Koch (konqueror@gmx.de)
  52:  */
  53: public abstract class TextSyntax implements Cloneable, Serializable
  54: {
  55:   private static final long serialVersionUID = -8130648736378144102L;
  56:   
  57:   private String value;
  58:   private Locale locale;
  59: 
  60:   /**
  61:    * Creates a <code>TextSyntax</code> object with the given value
  62:    * and locale.
  63:    *
  64:    * @param value the value for this syntax
  65:    * @param locale the locale to use, if <code>null</code> the default
  66:    * locale is used.
  67:    *
  68:    * @exception NullPointerException if value is null
  69:    */
  70:   protected TextSyntax(String value, Locale locale)
  71:   {
  72:     if (value == null)
  73:       throw new NullPointerException("value may not be null");
  74:     
  75:     this.value = value;
  76:     this.locale = (locale == null ? Locale.getDefault() : locale);
  77:   }
  78: 
  79:   /**
  80:    * Returns the value of this syntax object.
  81:    *
  82:    * @return The value.
  83:    */
  84:   public String getValue()
  85:   {
  86:     return value;
  87:   }
  88: 
  89:   /**
  90:    * Returns the locale of this syntax object.
  91:    *
  92:    * @return The locale.
  93:    */
  94:   public Locale getLocale()
  95:   {
  96:     return locale;
  97:   }
  98: 
  99:   /**
 100:    * Returns the hashcode for this object.
 101:    *
 102:    * @return The hashcode.
 103:    */
 104:   public int hashCode()
 105:   {
 106:     return value.hashCode() ^ locale.hashCode();
 107:   }
 108: 
 109:   /**
 110:    * Tests if the given object is equal to this object.
 111:    *
 112:    * @param obj the object to test
 113:    *
 114:    * @return true if both objects are equal, false otherwise.
 115:    */
 116:   public boolean equals(Object obj)
 117:   {
 118:     if (! (obj instanceof TextSyntax))
 119:       return false;
 120: 
 121:     TextSyntax tmp = (TextSyntax) obj;
 122:     
 123:     return (value.equals(tmp.getValue())
 124:             && locale.equals(tmp.getLocale()));
 125:   }
 126: 
 127:   /**
 128:    * Returns a string representing the object. The returned
 129:    * string is the underlying text value of this object.
 130:    * 
 131:    * @return The string representation.
 132:    */
 133:   public String toString()
 134:   {
 135:     return getValue();
 136:   }
 137: }