classpath
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] Field position attribute handling


From: Dalibor Topic
Subject: Re: [PATCH] Field position attribute handling
Date: Tue, 18 Nov 2003 20:30:44 +0100
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.3) Gecko/20030312

Hi Mark,

Mark Wielaard wrote:
Hi,

On Sat, 2003-11-15 at 19:43, Dalibor Topic wrote:

2003-11-15 Guilhem Lavaux <address@hidden>

        * java/text/FieldPosition.java (field_attribute): New field.
        (FieldPosition (Format.Field), FieldPosition(Format.Field, int),
        getFieldAttribute) New methods.



Shouldn't the hashCode(), equals() and possibly toString() methods be
updated to take the new field into account?

Thanks for pointing that out. Please take a look at the updated, attached patch, and check it in.

2003-11-18 Guilhem Lavaux <address@hidden>

    * java/text/FieldPosition.java (field_attribute): New field.
    (FieldPosition (Format.Field), FieldPosition(Format.Field, int),
    getFieldAttribute) New methods.

2003-11-18 Dalibor Topic <address@hidden>

    * java/text/FieldPosition.java (equals) : Adapted to handle
    field_attribute. Added fast-circuit check for comparison to self.
    Replaced use of instanceof by getClass to fix symmetry for derived
    types.
    (toString) Adapted to handle field_attribute. Improved readability.
    (hashCode) New method.
Index: java/text/FieldPosition.java
===================================================================
RCS file: /cvsroot/classpath/classpath/java/text/FieldPosition.java,v
retrieving revision 1.5
diff -u -r1.5 FieldPosition.java
--- java/text/FieldPosition.java        22 Jan 2002 22:27:01 -0000      1.5
+++ java/text/FieldPosition.java        18 Nov 2003 18:42:32 -0000
@@ -65,6 +65,38 @@
   private int end;
 
   /**
+   * This is the field attribute value.
+   */
+  private Format.Field field_attribute;
+
+  /**
+   * This method initializes a new instance of <code>FieldPosition</code>
+   * to have the specified field attribute. The attribute will be used as
+   * an id.
+   *
+   * @param field The field format attribute.
+   */
+  public FieldPosition (Format.Field field)
+  {
+    this.field_attribute = field;
+  }
+
+  /**
+   * This method initializes a new instance of <code>FieldPosition</code>
+   * to have the specified field attribute. The attribute will be used as
+   * an id is non null. The integer field id is only used if the Format.Field
+   * attribute is not used by the formatter.
+   *
+   * @param field The field format attribute.
+   * @param field_id The field identifier value.
+   */
+  public FieldPosition (Format.Field field, int field_id)
+  {
+    this.field_attribute = field;
+    this.field_id = field_id;
+  }
+
+  /**
    * This method initializes a new instance of <code>FieldPosition</code> to
    * have the specified field id.
    *
@@ -85,6 +117,11 @@
     return field_id;
   }
 
+  public Format.Field getFieldAttribute ()
+  {
+    return field_attribute;
+  }
+
   /**
    * This method returns the beginning index for this field.
    *
@@ -132,8 +169,8 @@
    * <ul>
    * <li>The specified object is not <code>null</code>.
    * <li>The specified object is an instance of <code>FieldPosition</code>.
-   * <li>The specified object has the same field identifier and beginning
-   * and ending index as this object.
+   * <li>The specified object has the same field identifier, field attribute 
+   * and beginning and ending index as this object.
    * </ul>
    *
    * @param obj The object to test for equality to this object.
@@ -143,15 +180,39 @@
    */
   public boolean equals (Object obj)
   {
-    if (! (obj instanceof FieldPosition))
+    if (this == obj)
+      return true;
+
+    if (obj != null && (obj.getClass() != this.getClass()))
       return false;
 
     FieldPosition fp = (FieldPosition) obj;
     return (field_id == fp.field_id
+           && (field_attribute == fp.field_attribute 
+               || (field_attribute != null 
+                   && field_attribute.equals(fp.field_attribute)))
            && begin == fp.begin
            && end == fp.end);
   }
 
+
+  /**
+   * This method returns a hash value for this object
+   * 
+   * @return A hash value for this object.
+   */
+  public int hashCode ()
+  {
+    int hash = 7;
+
+    hash = 31 * hash + field_id;
+    hash = 31 * hash + begin;
+    hash = 31 * hash + end;
+    hash = 31 * hash + (null == field_attribute ? 0 : 
field_attribute.hashCode());
+
+    return hash;
+  }
+
   /**
    * This method returns a <code>String</code> representation of this
    * object.
@@ -160,7 +221,11 @@
    */
   public String toString ()
   {
-    return (getClass ().getName () + "[field=" + getField () + ",beginIndex="
-           + getBeginIndex () + ",endIndex=" + getEndIndex () + "]");
+    return (getClass ().getName ()
+           + "[field=" + getField ()
+           + ",attribute=" + getFieldAttribute ()
+           + ",beginIndex=" + getBeginIndex () 
+           + ",endIndex=" + getEndIndex () 
+           + "]");
   }
 }

reply via email to

[Prev in Thread] Current Thread [Next in Thread]