001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017:
018: package java.text;
019:
020: /**
021: * FieldPosition is used to identify fields in formatted Strings.
022: */
023: public class FieldPosition {
024:
025: private int myField, beginIndex, endIndex;
026:
027: private Format.Field myAttribute;
028:
029: /**
030: * Constructs a new FieldPosition on the specified field.
031: *
032: * @param field
033: * the field to identify
034: */
035: public FieldPosition(int field) {
036: myField = field;
037: }
038:
039: /**
040: * Constructs a new FieldPosition on the specified Field attribute.
041: *
042: * @param attribute
043: * the field attribute to identify
044: */
045: public FieldPosition(Format.Field attribute) {
046: myAttribute = attribute;
047: myField = -1;
048: }
049:
050: /**
051: * Constructs a new FieldPosition on the specified Field attribute and field
052: * id.
053: *
054: * @param attribute
055: * the field attribute to identify
056: * @param field
057: * the field to identify
058: */
059: public FieldPosition(Format.Field attribute, int field) {
060: myAttribute = attribute;
061: myField = field;
062: }
063:
064: void clear() {
065: beginIndex = endIndex = 0;
066: }
067:
068: /**
069: * Compares the specified object to this FieldPosition and answer if they
070: * are equal. The object must be an instance of FieldPosition with the same
071: * field, begin index and end index.
072: *
073: * @param object
074: * the object to compare with this object
075: * @return true if the specified object is equal to this fieldPosition,
076: * false otherwise
077: *
078: * @see #hashCode
079: */
080: @Override
081: public boolean equals(Object object) {
082: if (!(object instanceof FieldPosition)) {
083: return false;
084: }
085: FieldPosition pos = (FieldPosition) object;
086: return myField == pos.myField && myAttribute == pos.myAttribute
087: && beginIndex == pos.beginIndex
088: && endIndex == pos.endIndex;
089: }
090:
091: /**
092: * Answers the index of the beginning of the field.
093: *
094: * @return the first index of the field
095: */
096: public int getBeginIndex() {
097: return beginIndex;
098: }
099:
100: /**
101: * Answers the index one past the end of the field.
102: *
103: * @return one past the index of the last character in the field
104: */
105: public int getEndIndex() {
106: return endIndex;
107: }
108:
109: /**
110: * Answers the field which is being identified.
111: *
112: * @return the field
113: */
114: public int getField() {
115: return myField;
116: }
117:
118: /**
119: * Answers the attribute which is being identified.
120: *
121: * @return the field
122: */
123: public Format.Field getFieldAttribute() {
124: return myAttribute;
125: }
126:
127: /**
128: * Answers an integer hash code for the receiver. Objects which are equal
129: * answer the same value for this method.
130: *
131: * @return the receiver's hash
132: *
133: * @see #equals
134: */
135: @Override
136: public int hashCode() {
137: int attributeHash = (myAttribute == null) ? 0 : myAttribute
138: .hashCode();
139: return attributeHash + myField * 10 + beginIndex * 100
140: + endIndex;
141: }
142:
143: /**
144: * Sets the index of the beginning of the field.
145: *
146: * @param index
147: * the index of the first character in the field
148: */
149: public void setBeginIndex(int index) {
150: beginIndex = index;
151: }
152:
153: /**
154: * Sets the index of the end of the field.
155: *
156: * @param index
157: * one past the index of the last character in the field
158: */
159: public void setEndIndex(int index) {
160: endIndex = index;
161: }
162:
163: /**
164: * Answers the string representation of this FieldPosition.
165: *
166: * @return the string representation of this FieldPosition
167: */
168: @Override
169: public String toString() {
170: return getClass().getName()
171: + "[attribute=" + myAttribute + ", field=" //$NON-NLS-1$ //$NON-NLS-2$
172: + myField
173: + ", beginIndex=" + beginIndex + ", endIndex=" //$NON-NLS-1$ //$NON-NLS-2$
174: + endIndex + "]"; //$NON-NLS-1$
175: }
176: }
|