Hi! This patch moves the logic to build a CollationElementIterator from RuleBasedCollator and Collator into the class CollationElementIterator itself. *This is not a fix*. Infact, actually the new Constructor just read a string out of the iterator, without any processing. This way we can declare the 1.3 completeness and I can start fixing the CollationElementIterator in just one place. I would like to have this in for 0.93, but I understand that this is not a fix... What do you think? Mario -- Lima Software, SO.PR.IND. s.r.l. http://www.limasoftware.net/ pgp key: http://subkeys.pgp.net/ Please, support open standards: http://opendocumentfellowship.org/petition/ http://www.nosoftwarepatents.com/
### Eclipse Workspace Patch 1.0 #P classpath Index: java/text/CollationElementIterator.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/text/CollationElementIterator.java,v retrieving revision 1.24 diff -u -r1.24 CollationElementIterator.java --- java/text/CollationElementIterator.java 23 Jul 2005 20:25:15 -0000 1.24 +++ java/text/CollationElementIterator.java 6 Dec 2006 12:16:37 -0000 @@ -101,7 +101,8 @@ * to iterate over the specified <code>String</code> using the rules in the * specified <code>RuleBasedCollator</code>. * - * @param collator The <code>RuleBasedCollation</code> used for calculating collation values + * @param collator The <code>RuleBasedCollation</code> used for calculating + * collation values * @param text The <code>String</code> to iterate over. */ CollationElementIterator(RuleBasedCollator collator, String text) @@ -111,6 +112,33 @@ setText (text); } + /** + * This method initializes a new instance of <code>CollationElementIterator</code> + * to iterate over the specified <code>CharacterIterator</code> using the + * rules in the specified <code>RuleBasedCollator</code>. + * + * @param collator The <code>RuleBasedCollation</code> used for calculating + * collation values + * @param text The <code>String</code> to iterate over. + */ + CollationElementIterator(RuleBasedCollator collator, + CharacterIterator source) + { + this.collator = collator; + + // FIXME: does the same as CollationElementIterator(RuleBasedCollator, + // String text) for now + + StringBuffer text = new StringBuffer(""); + + for (char c = source.first(); + c != CharacterIterator.DONE; + c = source.next()) + text.append(c); + + setText (text.toString()); + } + RuleBasedCollator.CollationElement nextBlock() { if (index >= text_decomposition.length) Index: java/text/Collator.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/text/Collator.java,v retrieving revision 1.17 diff -u -r1.17 Collator.java --- java/text/Collator.java 24 Mar 2006 17:04:23 -0000 1.17 +++ java/text/Collator.java 6 Dec 2006 12:16:38 -0000 @@ -375,14 +375,6 @@ this.strength = strength; } - // Decompose a single character and append results to the buffer. - // FIXME: for libgcj this is a native method which handles - // decomposition. For Classpath, for now, it does nothing. - final void decomposeCharacter (char c, StringBuffer buf) - { - buf.append (c); - } - /** * This is the current collation decomposition setting. */ Index: java/text/RuleBasedCollator.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/text/RuleBasedCollator.java,v retrieving revision 1.32 diff -u -r1.32 RuleBasedCollator.java --- java/text/RuleBasedCollator.java 22 Mar 2006 19:15:25 -0000 1.32 +++ java/text/RuleBasedCollator.java 6 Dec 2006 12:16:40 -0000 @@ -38,8 +38,6 @@ package java.text; -import gnu.classpath.NotImplementedException; - import java.util.ArrayList; import java.util.HashMap; @@ -894,7 +892,8 @@ else v = (short) c; return new CollationElement("" + c, (short) 0, - (short) 0, (short) (last_tertiary_value + v), (short) 0, null, false); + (short) 0, (short) (last_tertiary_value + v), + (short) 0, null, false); } /** @@ -922,18 +921,10 @@ * * @return A <code>CollationElementIterator</code> for the specified <code>String</code>. */ - public CollationElementIterator getCollationElementIterator(CharacterIterator source) - throws NotImplementedException // Because decomposeCharacter does not work + public + CollationElementIterator getCollationElementIterator(CharacterIterator source) { - StringBuffer expand = new StringBuffer(""); - - // Right now we assume that we will read from the beginning of the string. - for (char c = source.first(); - c != CharacterIterator.DONE; - c = source.next()) - decomposeCharacter(c, expand); - - return getCollationElementIterator(expand.toString()); + return new CollationElementIterator(this, source); } /**