2004-07-09 Guilhem Lavaux <guilhem@kaffe.org>

* java/text/RuleBasedCollator.java
	(mergeRules): Use ArrayList instead of Vector.
	(subParseString): likewise.
	(parseString): likewise.
	(buildCollationVector): likewise.
	(getCollationKey): likewise.

From-SVN: r84369
This commit is contained in:
Guilhem Lavaux 2004-07-09 14:09:01 +00:00 committed by Michael Koch
parent 28e0ee766e
commit 4a738a8213
2 changed files with 30 additions and 22 deletions

View file

@ -1,3 +1,12 @@
2004-07-09 Guilhem Lavaux <guilhem@kaffe.org>
* java/text/RuleBasedCollator.java
(mergeRules): Use ArrayList instead of Vector.
(subParseString): likewise.
(parseString): likewise.
(buildCollationVector): likewise.
(getCollationKey): likewise.
2004-07-09 Dalibor Topic <robilad@kaffe.org> 2004-07-09 Dalibor Topic <robilad@kaffe.org>
* java/text/DateFormat.java (parse): * java/text/DateFormat.java (parse):

View file

@ -39,7 +39,7 @@ package java.text;
import java.util.Enumeration; import java.util.Enumeration;
import java.util.HashMap; import java.util.HashMap;
import java.util.Vector; import java.util.ArrayList;
/* Written using "Java Class Libraries", 2nd edition, plus online /* Written using "Java Class Libraries", 2nd edition, plus online
* API docs for JDK 1.2 from http://www.javasoft.com. * API docs for JDK 1.2 from http://www.javasoft.com.
@ -180,7 +180,7 @@ public class RuleBasedCollator extends Collator
* collation elements. It contains an instruction which specifies the new * collation elements. It contains an instruction which specifies the new
* state of the generator. The sequence of instruction should not contain * state of the generator. The sequence of instruction should not contain
* RESET (it is used by * RESET (it is used by
* {@link #mergeRules(int,java.lang.String,java.util.Vector,java.util.Vector)}) * {@link #mergeRules(int,java.lang.String,java.util.ArrayList,java.util.ArrayList)})
* as a temporary state while merging two sets of instructions. * as a temporary state while merging two sets of instructions.
*/ */
final static class CollationSorter final static class CollationSorter
@ -304,10 +304,9 @@ public class RuleBasedCollator extends Collator
* @param patch Rules to be merged into the repository. * @param patch Rules to be merged into the repository.
* @throws ParseException if it is impossible to find an anchor point for the new rules. * @throws ParseException if it is impossible to find an anchor point for the new rules.
*/ */
private void mergeRules(int offset, String starter, Vector main, Vector patch) private void mergeRules(int offset, String starter, ArrayList main, ArrayList patch)
throws ParseException throws ParseException
{ {
Enumeration elements = main.elements();
int insertion_point = -1; int insertion_point = -1;
int max_length = 0; int max_length = 0;
@ -323,11 +322,11 @@ public class RuleBasedCollator extends Collator
while (j < main.size()) while (j < main.size())
{ {
CollationSorter rule1 = (CollationSorter) patch.elementAt(i); CollationSorter rule1 = (CollationSorter) patch.get(i);
CollationSorter rule2 = (CollationSorter) main.elementAt(j); CollationSorter rule2 = (CollationSorter) main.get(j);
if (rule1.textElement.equals(rule2.textElement)) if (rule1.textElement.equals(rule2.textElement))
main.removeElementAt(j); main.remove(j);
else else
j++; j++;
} }
@ -336,7 +335,7 @@ public class RuleBasedCollator extends Collator
// Find the insertion point... O(N) // Find the insertion point... O(N)
for (int i = 0; i < main.size(); i++) for (int i = 0; i < main.size(); i++)
{ {
CollationSorter sorter = (CollationSorter) main.elementAt(i); CollationSorter sorter = (CollationSorter) main.get(i);
int length = findPrefixLength(starter, sorter.textElement); int length = findPrefixLength(starter, sorter.textElement);
if (length > max_length) if (length > max_length)
@ -362,24 +361,24 @@ public class RuleBasedCollator extends Collator
* sequence. The rest of the subsequence must be appended * sequence. The rest of the subsequence must be appended
* to the end of the sequence. * to the end of the sequence.
*/ */
CollationSorter sorter = (CollationSorter) patch.elementAt(0); CollationSorter sorter = (CollationSorter) patch.get(0);
CollationSorter expansionPrefix = CollationSorter expansionPrefix =
(CollationSorter) main.elementAt(insertion_point-1); (CollationSorter) main.get(insertion_point-1);
sorter.expansionOrdering = starter.substring(max_length); // Skip the first good prefix element sorter.expansionOrdering = starter.substring(max_length); // Skip the first good prefix element
main.insertElementAt(sorter, insertion_point); main.add(insertion_point, sorter);
/* /*
* This is a new set of rules. Append to the list. * This is a new set of rules. Append to the list.
*/ */
patch.removeElementAt(0); patch.remove(0);
insertion_point++; insertion_point++;
} }
// Now insert all elements of patch at the insertion point. // Now insert all elements of patch at the insertion point.
for (int i = 0; i < patch.size(); i++) for (int i = 0; i < patch.size(); i++)
main.insertElementAt(patch.elementAt(i), i+insertion_point); main.add(i+insertion_point, patch.get(i));
} }
/** /**
@ -397,7 +396,7 @@ public class RuleBasedCollator extends Collator
* @throws ParseException if something turned wrong during the parsing. To get details * @throws ParseException if something turned wrong during the parsing. To get details
* decode the message. * decode the message.
*/ */
private int subParseString(boolean stop_on_reset, Vector v, private int subParseString(boolean stop_on_reset, ArrayList v,
int base_offset, String rules) int base_offset, String rules)
throws ParseException throws ParseException
{ {
@ -506,7 +505,7 @@ main_parse_loop:
* indicated by the text element. * indicated by the text element.
*/ */
String subrules = rules.substring(i); String subrules = rules.substring(i);
Vector sorted_rules = new Vector(); ArrayList sorted_rules = new ArrayList();
int idx; int idx;
// Parse the subrules but do not iterate through all // Parse the subrules but do not iterate through all
@ -591,10 +590,10 @@ main_parse_loop:
* @throws ParseException if something turned wrong during the parsing. To get details * @throws ParseException if something turned wrong during the parsing. To get details
* decode the message. * decode the message.
*/ */
private Vector parseString(String rules) private ArrayList parseString(String rules)
throws ParseException throws ParseException
{ {
Vector v = new Vector(); ArrayList v = new ArrayList();
// result of the first subParseString is not absolute (may be -1 or a // result of the first subParseString is not absolute (may be -1 or a
// positive integer). But we do not care. // positive integer). But we do not care.
@ -607,10 +606,10 @@ main_parse_loop:
* This method uses the sorting instructions built by {@link #parseString} * This method uses the sorting instructions built by {@link #parseString}
* to build collation elements which can be directly used to sort strings. * to build collation elements which can be directly used to sort strings.
* *
* @param parsedElements Parsed instructions stored in a Vector. * @param parsedElements Parsed instructions stored in a ArrayList.
* @throws ParseException if the order of the instructions are not valid. * @throws ParseException if the order of the instructions are not valid.
*/ */
private void buildCollationVector(Vector parsedElements) private void buildCollationVector(ArrayList parsedElements)
throws ParseException throws ParseException
{ {
int primary_seq = 0; int primary_seq = 0;
@ -622,13 +621,13 @@ main_parse_loop:
final boolean DECREASING = false; final boolean DECREASING = false;
final boolean INCREASING = true; final boolean INCREASING = true;
boolean secondaryType = INCREASING; boolean secondaryType = INCREASING;
Vector v = new Vector(); ArrayList v = new ArrayList();
// elts is completely sorted. // elts is completely sorted.
element_loop: element_loop:
for (int i = 0; i < parsedElements.size(); i++) for (int i = 0; i < parsedElements.size(); i++)
{ {
CollationSorter elt = (CollationSorter) parsedElements.elementAt(i); CollationSorter elt = (CollationSorter) parsedElements.get(i);
boolean ignoreChar = false; boolean ignoreChar = false;
switch (elt.comparisonType) switch (elt.comparisonType)
@ -947,7 +946,7 @@ element_loop:
public CollationKey getCollationKey(String source) public CollationKey getCollationKey(String source)
{ {
CollationElementIterator cei = getCollationElementIterator(source); CollationElementIterator cei = getCollationElementIterator(source);
Vector vect = new Vector(25); ArrayList vect = new ArrayList();
int ord = cei.next(); int ord = cei.next();
cei.reset(); //set to start of string cei.reset(); //set to start of string