Java 类java.text.CollationElementIterator 实例源码
项目:In-the-Box-Fork
文件:OldCollationElementIteratorTest.java
public void testPrevious() {
RuleBasedCollator coll = (RuleBasedCollator) Collator.getInstance(Locale.US);
String text = "abc";
CollationElementIterator iterator = coll
.getCollationElementIterator(text);
int[] orders = new int[text.length()];
int order = iterator.next();
int i = 0;
while (order != CollationElementIterator.NULLORDER) {
orders[i++] = order;
order = iterator.next();
}
int offset = iterator.getOffset();
assertEquals(text.length(), offset);
order = iterator.previous();
while (order != CollationElementIterator.NULLORDER) {
assertEquals(orders[--i], order);
order = iterator.previous();
}
assertEquals(0, iterator.getOffset());
}
项目:cn1
文件:CollationElementIteratorTest.java
public void testNext() {
String text = "abc";
CollationElementIterator iterator = coll
.getCollationElementIterator(text);
int[] orders = new int[text.length()];
int order = iterator.next();
int i = 0;
while (order != CollationElementIterator.NULLORDER) {
orders[i++] = order;
order = iterator.next();
}
int offset = iterator.getOffset();
assertEquals(text.length(), offset);
order = iterator.previous();
while (order != CollationElementIterator.NULLORDER) {
assertEquals(orders[--i], order);
order = iterator.previous();
}
assertEquals(0, iterator.getOffset());
}
项目:cn1
文件:CollationElementIteratorTest.java
public void testReset() {
String text = "abc";
CollationElementIterator iterator = coll
.getCollationElementIterator(text);
int[] orders = new int[text.length()];
int order = iterator.next();
int i = 0;
while (order != CollationElementIterator.NULLORDER) {
orders[i++] = order;
order = iterator.next();
}
int offset = iterator.getOffset();
assertEquals(text.length(), offset);
iterator.reset();
assertEquals(0, iterator.getOffset());
}
项目:cn1
文件:CollationElementIteratorTest.java
public void testTertiaryOrder() {
RuleBasedCollator rbColl = (RuleBasedCollator) Collator
.getInstance(new Locale("fr", "FR"));
String text = "abAB";
CollationElementIterator iterator = rbColl
.getCollationElementIterator(text);
int order = iterator.next();
int tOrder1 = CollationElementIterator.tertiaryOrder(order);
order = iterator.next();
int tOrder2 = CollationElementIterator.tertiaryOrder(order);
assertEquals(tOrder1, tOrder2);
order = iterator.next();
tOrder1 = CollationElementIterator.tertiaryOrder(order);
order = iterator.next();
tOrder2 = CollationElementIterator.tertiaryOrder(order);
assertEquals(tOrder1, tOrder2);
}
项目:freeVM
文件:CollationElementIteratorTest.java
public void testNext() {
String text = "abc";
CollationElementIterator iterator = coll
.getCollationElementIterator(text);
int[] orders = new int[text.length()];
int order = iterator.next();
int i = 0;
while (order != CollationElementIterator.NULLORDER) {
orders[i++] = order;
order = iterator.next();
}
int offset = iterator.getOffset();
assertEquals(text.length(), offset);
order = iterator.previous();
while (order != CollationElementIterator.NULLORDER) {
assertEquals(orders[--i], order);
order = iterator.previous();
}
assertEquals(0, iterator.getOffset());
}
项目:freeVM
文件:CollationElementIteratorTest.java
public void testReset() {
String text = "abc";
CollationElementIterator iterator = coll
.getCollationElementIterator(text);
int[] orders = new int[text.length()];
int order = iterator.next();
int i = 0;
while (order != CollationElementIterator.NULLORDER) {
orders[i++] = order;
order = iterator.next();
}
int offset = iterator.getOffset();
assertEquals(text.length(), offset);
iterator.reset();
assertEquals(0, iterator.getOffset());
}
项目:freeVM
文件:CollationElementIteratorTest.java
public void testTertiaryOrder() {
RuleBasedCollator rbColl = (RuleBasedCollator) Collator
.getInstance(new Locale("fr", "FR"));
String text = "abAB";
CollationElementIterator iterator = rbColl
.getCollationElementIterator(text);
int order = iterator.next();
int tOrder1 = CollationElementIterator.tertiaryOrder(order);
order = iterator.next();
int tOrder2 = CollationElementIterator.tertiaryOrder(order);
assertEquals(tOrder1, tOrder2);
order = iterator.next();
tOrder1 = CollationElementIterator.tertiaryOrder(order);
order = iterator.next();
tOrder2 = CollationElementIterator.tertiaryOrder(order);
assertEquals(tOrder1, tOrder2);
}
项目:freeVM
文件:CollationElementIteratorTest.java
public void testNext() {
String text = "abc";
CollationElementIterator iterator = coll
.getCollationElementIterator(text);
int[] orders = new int[text.length()];
int order = iterator.next();
int i = 0;
while (order != CollationElementIterator.NULLORDER) {
orders[i++] = order;
order = iterator.next();
}
int offset = iterator.getOffset();
assertEquals(text.length(), offset);
order = iterator.previous();
while (order != CollationElementIterator.NULLORDER) {
assertEquals(orders[--i], order);
order = iterator.previous();
}
assertEquals(0, iterator.getOffset());
}
项目:freeVM
文件:CollationElementIteratorTest.java
public void testReset() {
String text = "abc";
CollationElementIterator iterator = coll
.getCollationElementIterator(text);
int[] orders = new int[text.length()];
int order = iterator.next();
int i = 0;
while (order != CollationElementIterator.NULLORDER) {
orders[i++] = order;
order = iterator.next();
}
int offset = iterator.getOffset();
assertEquals(text.length(), offset);
iterator.reset();
assertEquals(0, iterator.getOffset());
}
项目:freeVM
文件:CollationElementIteratorTest.java
public void testTertiaryOrder() {
RuleBasedCollator rbColl = (RuleBasedCollator) Collator
.getInstance(new Locale("fr", "FR"));
String text = "abAB";
CollationElementIterator iterator = rbColl
.getCollationElementIterator(text);
int order = iterator.next();
int tOrder1 = CollationElementIterator.tertiaryOrder(order);
order = iterator.next();
int tOrder2 = CollationElementIterator.tertiaryOrder(order);
assertEquals(tOrder1, tOrder2);
order = iterator.next();
tOrder1 = CollationElementIterator.tertiaryOrder(order);
order = iterator.next();
tOrder2 = CollationElementIterator.tertiaryOrder(order);
assertEquals(tOrder1, tOrder2);
}
项目:In-the-Box-Fork
文件:CollatorTest.java
private void assertCollationElementIterator(CollationElementIterator it, Integer... offsets) {
for (int offset : offsets) {
assertEquals(offset, it.getOffset());
it.next();
}
assertEquals(CollationElementIterator.NULLORDER, it.next());
}
项目:cn1
文件:CollationElementIteratorTest.java
public void testGetOffset() {
String text = "abc";
CollationElementIterator iterator = coll
.getCollationElementIterator(text);
int[] offsets = { 0, 1, 2, 3 };
int offset = iterator.getOffset();
int i = 0;
assertEquals(offsets[i++], offset);
while (offset != text.length()) {
iterator.next();
offset = iterator.getOffset();
assertEquals(offsets[i++], offset);
}
}
项目:cn1
文件:CollationElementIteratorTest.java
public void testGetMaxExpansion() {
String text = "cha";
RuleBasedCollator rbColl = (RuleBasedCollator) Collator
.getInstance(new Locale("es", "", "TRADITIONAL"));
CollationElementIterator iterator = rbColl
.getCollationElementIterator(text);
int order = iterator.next();
while (order != CollationElementIterator.NULLORDER) {
assertEquals(1, iterator.getMaxExpansion(order));
order = iterator.next();
}
}
项目:cn1
文件:CollationElementIteratorTest.java
public void testPrimaryOrder() {
RuleBasedCollator rbColl = (RuleBasedCollator) Collator
.getInstance(new Locale("de", "DE"));
String text = "\u00e6";
CollationElementIterator iterator = rbColl
.getCollationElementIterator(text);
int order = iterator.next();
int pOrder = CollationElementIterator.primaryOrder(order);
CollationElementIterator iterator2 = rbColl
.getCollationElementIterator("ae");
int order2 = iterator2.next();
int pOrder2 = CollationElementIterator.primaryOrder(order2);
assertEquals(pOrder, pOrder2);
}
项目:cn1
文件:CollationElementIteratorTest.java
public void testSecondaryOrder() {
RuleBasedCollator rbColl = (RuleBasedCollator) Collator
.getInstance(new Locale("fr", "FR"));
String text = "a\u00e0";
CollationElementIterator iterator = rbColl
.getCollationElementIterator(text);
int order = iterator.next();
int sOrder1 = CollationElementIterator.secondaryOrder(order);
order = iterator.next();
int sOrder2 = CollationElementIterator.secondaryOrder(order);
assertEquals(sOrder1, sOrder2);
}
项目:cn1
文件:CollationElementIteratorTest.java
public void testSetOffset() {
RuleBasedCollator rbColl = (RuleBasedCollator) Collator
.getInstance(new Locale("es", "", "TRADITIONAL"));
String text = "cha";
CollationElementIterator iterator = rbColl
.getCollationElementIterator(text);
iterator.setOffset(1);
assertEquals(1, iterator.getOffset());
}
项目:cn1
文件:CollationElementIteratorTest.java
public void testSetTextString() {
RuleBasedCollator rbColl = (RuleBasedCollator) Collator
.getInstance(new Locale("es", "", "TRADITIONAL"));
String text = "caa";
CollationElementIterator iterator = rbColl
.getCollationElementIterator(text);
iterator.setOffset(1);
assertEquals(1, iterator.getOffset());
iterator.setText("cha");
iterator.setOffset(1);
assertEquals(1, iterator.getOffset());
}
项目:cn1
文件:CollationElementIteratorTest.java
public void testSetTextCharacterIterator() {
RuleBasedCollator rbColl = (RuleBasedCollator) Collator
.getInstance(new Locale("es", "", "TRADITIONAL"));
String text = "caa";
CollationElementIterator iterator = rbColl
.getCollationElementIterator(text);
iterator.setOffset(1);
assertEquals(1, iterator.getOffset());
iterator.setText(new StringCharacterIterator("cha"));
iterator.setOffset(1);
assertEquals(1, iterator.getOffset());
}
项目:freeVM
文件:CollationElementIteratorTest.java
public void testGetOffset() {
String text = "abc";
CollationElementIterator iterator = coll
.getCollationElementIterator(text);
int[] offsets = { 0, 1, 2, 3 };
int offset = iterator.getOffset();
int i = 0;
assertEquals(offsets[i++], offset);
while (offset != text.length()) {
iterator.next();
offset = iterator.getOffset();
assertEquals(offsets[i++], offset);
}
}
项目:freeVM
文件:CollationElementIteratorTest.java
public void testGetMaxExpansion() {
String text = "cha";
RuleBasedCollator rbColl = (RuleBasedCollator) Collator
.getInstance(new Locale("es", "", "TRADITIONAL"));
CollationElementIterator iterator = rbColl
.getCollationElementIterator(text);
int order = iterator.next();
while (order != CollationElementIterator.NULLORDER) {
assertEquals(1, iterator.getMaxExpansion(order));
order = iterator.next();
}
}
项目:freeVM
文件:CollationElementIteratorTest.java
public void testPrimaryOrder() {
RuleBasedCollator rbColl = (RuleBasedCollator) Collator
.getInstance(new Locale("de", "DE"));
String text = "\u00e6";
CollationElementIterator iterator = rbColl
.getCollationElementIterator(text);
int order = iterator.next();
int pOrder = CollationElementIterator.primaryOrder(order);
CollationElementIterator iterator2 = rbColl
.getCollationElementIterator("ae");
int order2 = iterator2.next();
int pOrder2 = CollationElementIterator.primaryOrder(order2);
assertEquals(pOrder, pOrder2);
}
项目:freeVM
文件:CollationElementIteratorTest.java
public void testSecondaryOrder() {
RuleBasedCollator rbColl = (RuleBasedCollator) Collator
.getInstance(new Locale("fr", "FR"));
String text = "a\u00e0";
CollationElementIterator iterator = rbColl
.getCollationElementIterator(text);
int order = iterator.next();
int sOrder1 = CollationElementIterator.secondaryOrder(order);
order = iterator.next();
int sOrder2 = CollationElementIterator.secondaryOrder(order);
assertEquals(sOrder1, sOrder2);
}
项目:freeVM
文件:CollationElementIteratorTest.java
public void testSetOffset() {
RuleBasedCollator rbColl = (RuleBasedCollator) Collator
.getInstance(new Locale("es", "", "TRADITIONAL"));
String text = "cha";
CollationElementIterator iterator = rbColl
.getCollationElementIterator(text);
iterator.setOffset(1);
assertEquals(0, iterator.getOffset());
}
项目:freeVM
文件:CollationElementIteratorTest.java
public void testSetTextString() {
RuleBasedCollator rbColl = (RuleBasedCollator) Collator
.getInstance(new Locale("es", "", "TRADITIONAL"));
String text = "caa";
CollationElementIterator iterator = rbColl
.getCollationElementIterator(text);
iterator.setOffset(1);
assertEquals(1, iterator.getOffset());
iterator.setText("cha");
iterator.setOffset(1);
assertEquals(0, iterator.getOffset());
}
项目:freeVM
文件:CollationElementIteratorTest.java
public void testSetTextCharacterIterator() {
RuleBasedCollator rbColl = (RuleBasedCollator) Collator
.getInstance(new Locale("es", "", "TRADITIONAL"));
String text = "caa";
CollationElementIterator iterator = rbColl
.getCollationElementIterator(text);
iterator.setOffset(1);
assertEquals(1, iterator.getOffset());
iterator.setText(new StringCharacterIterator("cha"));
iterator.setOffset(1);
assertEquals(0, iterator.getOffset());
}
项目:freeVM
文件:CollationElementIteratorTest.java
public void testGetOffset() {
String text = "abc";
CollationElementIterator iterator = coll
.getCollationElementIterator(text);
int[] offsets = { 0, 1, 2, 3 };
int offset = iterator.getOffset();
int i = 0;
assertEquals(offsets[i++], offset);
while (offset != text.length()) {
iterator.next();
offset = iterator.getOffset();
assertEquals(offsets[i++], offset);
}
}
项目:freeVM
文件:CollationElementIteratorTest.java
public void testGetMaxExpansion() {
String text = "cha";
RuleBasedCollator rbColl = (RuleBasedCollator) Collator
.getInstance(new Locale("es", "", "TRADITIONAL"));
CollationElementIterator iterator = rbColl
.getCollationElementIterator(text);
int order = iterator.next();
while (order != CollationElementIterator.NULLORDER) {
assertEquals(1, iterator.getMaxExpansion(order));
order = iterator.next();
}
}
项目:freeVM
文件:CollationElementIteratorTest.java
public void testPrimaryOrder() {
RuleBasedCollator rbColl = (RuleBasedCollator) Collator
.getInstance(new Locale("de", "DE"));
String text = "\u00e6";
CollationElementIterator iterator = rbColl
.getCollationElementIterator(text);
int order = iterator.next();
int pOrder = CollationElementIterator.primaryOrder(order);
CollationElementIterator iterator2 = rbColl
.getCollationElementIterator("ae");
int order2 = iterator2.next();
int pOrder2 = CollationElementIterator.primaryOrder(order2);
assertEquals(pOrder, pOrder2);
}
项目:freeVM
文件:CollationElementIteratorTest.java
public void testSecondaryOrder() {
RuleBasedCollator rbColl = (RuleBasedCollator) Collator
.getInstance(new Locale("fr", "FR"));
String text = "a\u00e0";
CollationElementIterator iterator = rbColl
.getCollationElementIterator(text);
int order = iterator.next();
int sOrder1 = CollationElementIterator.secondaryOrder(order);
order = iterator.next();
int sOrder2 = CollationElementIterator.secondaryOrder(order);
assertEquals(sOrder1, sOrder2);
}
项目:freeVM
文件:CollationElementIteratorTest.java
public void testSetOffset() {
RuleBasedCollator rbColl = (RuleBasedCollator) Collator
.getInstance(new Locale("es", "", "TRADITIONAL"));
String text = "cha";
CollationElementIterator iterator = rbColl
.getCollationElementIterator(text);
iterator.setOffset(1);
assertEquals(0, iterator.getOffset());
}
项目:freeVM
文件:CollationElementIteratorTest.java
public void testSetTextString() {
RuleBasedCollator rbColl = (RuleBasedCollator) Collator
.getInstance(new Locale("es", "", "TRADITIONAL"));
String text = "caa";
CollationElementIterator iterator = rbColl
.getCollationElementIterator(text);
iterator.setOffset(1);
assertEquals(1, iterator.getOffset());
iterator.setText("cha");
iterator.setOffset(1);
assertEquals(0, iterator.getOffset());
}
项目:freeVM
文件:CollationElementIteratorTest.java
public void testSetTextCharacterIterator() {
RuleBasedCollator rbColl = (RuleBasedCollator) Collator
.getInstance(new Locale("es", "", "TRADITIONAL"));
String text = "caa";
CollationElementIterator iterator = rbColl
.getCollationElementIterator(text);
iterator.setOffset(1);
assertEquals(1, iterator.getOffset());
iterator.setText(new StringCharacterIterator("cha"));
iterator.setOffset(1);
assertEquals(0, iterator.getOffset());
}
项目:OpenJSharp
文件:StringComparable.java
private final int[] getFirstCaseDiff(final String text, final String pattern, final Locale locale){
final CollationElementIterator targIter = m_collator.getCollationElementIterator(text);
final CollationElementIterator patIter = m_collator.getCollationElementIterator(pattern);
int startTarg = -1;
int endTarg = -1;
int startPatt = -1;
int endPatt = -1;
final int done = getElement(CollationElementIterator.NULLORDER);
int patternElement = 0, targetElement = 0;
boolean getPattern = true, getTarget = true;
while (true) {
if (getPattern){
startPatt = patIter.getOffset();
patternElement = getElement(patIter.next());
endPatt = patIter.getOffset();
}
if ((getTarget)){
startTarg = targIter.getOffset();
targetElement = getElement(targIter.next());
endTarg = targIter.getOffset();
}
getTarget = getPattern = true;
if ((patternElement == done) ||( targetElement == done)) {
return null;
} else if (targetElement == 0) {
getPattern = false;
} else if (patternElement == 0) {
getTarget = false;
} else if (targetElement != patternElement) {// mismatch
if((startPatt < endPatt) && (startTarg < endTarg)){
final String subText = text.substring(startTarg, endTarg);
final String subPatt = pattern.substring(startPatt, endPatt);
final String subTextUp = subText.toUpperCase(locale);
final String subPattUp = subPatt.toUpperCase(locale);
if(m_collator.compare(subTextUp, subPattUp) != 0){ // not case diffference
continue;
}
int diff[] = {UNKNOWN_CASE, UNKNOWN_CASE};
if(m_collator.compare(subText, subTextUp) == 0){
diff[0] = UPPER_CASE;
}else if(m_collator.compare(subText, subText.toLowerCase(locale)) == 0){
diff[0] = LOWER_CASE;
}
if(m_collator.compare(subPatt, subPattUp) == 0){
diff[1] = UPPER_CASE;
}else if(m_collator.compare(subPatt, subPatt.toLowerCase(locale)) == 0){
diff[1] = LOWER_CASE;
}
if(((diff[0] == UPPER_CASE) && ( diff[1] == LOWER_CASE)) ||
((diff[0] == LOWER_CASE) && ( diff[1] == UPPER_CASE))){
return diff;
}else{// not case diff
continue;
}
}else{
continue;
}
}
}
}
项目:openjdk-jdk10
文件:StringComparable.java
private final int[] getFirstCaseDiff(final String text, final String pattern, final Locale locale){
final CollationElementIterator targIter = m_collator.getCollationElementIterator(text);
final CollationElementIterator patIter = m_collator.getCollationElementIterator(pattern);
int startTarg = -1;
int endTarg = -1;
int startPatt = -1;
int endPatt = -1;
final int done = getElement(CollationElementIterator.NULLORDER);
int patternElement = 0, targetElement = 0;
boolean getPattern = true, getTarget = true;
while (true) {
if (getPattern){
startPatt = patIter.getOffset();
patternElement = getElement(patIter.next());
endPatt = patIter.getOffset();
}
if ((getTarget)){
startTarg = targIter.getOffset();
targetElement = getElement(targIter.next());
endTarg = targIter.getOffset();
}
getTarget = getPattern = true;
if ((patternElement == done) ||( targetElement == done)) {
return null;
} else if (targetElement == 0) {
getPattern = false;
} else if (patternElement == 0) {
getTarget = false;
} else if (targetElement != patternElement) {// mismatch
if((startPatt < endPatt) && (startTarg < endTarg)){
final String subText = text.substring(startTarg, endTarg);
final String subPatt = pattern.substring(startPatt, endPatt);
final String subTextUp = subText.toUpperCase(locale);
final String subPattUp = subPatt.toUpperCase(locale);
if(m_collator.compare(subTextUp, subPattUp) != 0){ // not case diffference
continue;
}
int diff[] = {UNKNOWN_CASE, UNKNOWN_CASE};
if(m_collator.compare(subText, subTextUp) == 0){
diff[0] = UPPER_CASE;
}else if(m_collator.compare(subText, subText.toLowerCase(locale)) == 0){
diff[0] = LOWER_CASE;
}
if(m_collator.compare(subPatt, subPattUp) == 0){
diff[1] = UPPER_CASE;
}else if(m_collator.compare(subPatt, subPatt.toLowerCase(locale)) == 0){
diff[1] = LOWER_CASE;
}
if(((diff[0] == UPPER_CASE) && ( diff[1] == LOWER_CASE)) ||
((diff[0] == LOWER_CASE) && ( diff[1] == UPPER_CASE))){
return diff;
}else{// not case diff
continue;
}
}else{
continue;
}
}
}
}
项目:openjdk9
文件:StringComparable.java
private final int[] getFirstCaseDiff(final String text, final String pattern, final Locale locale){
final CollationElementIterator targIter = m_collator.getCollationElementIterator(text);
final CollationElementIterator patIter = m_collator.getCollationElementIterator(pattern);
int startTarg = -1;
int endTarg = -1;
int startPatt = -1;
int endPatt = -1;
final int done = getElement(CollationElementIterator.NULLORDER);
int patternElement = 0, targetElement = 0;
boolean getPattern = true, getTarget = true;
while (true) {
if (getPattern){
startPatt = patIter.getOffset();
patternElement = getElement(patIter.next());
endPatt = patIter.getOffset();
}
if ((getTarget)){
startTarg = targIter.getOffset();
targetElement = getElement(targIter.next());
endTarg = targIter.getOffset();
}
getTarget = getPattern = true;
if ((patternElement == done) ||( targetElement == done)) {
return null;
} else if (targetElement == 0) {
getPattern = false;
} else if (patternElement == 0) {
getTarget = false;
} else if (targetElement != patternElement) {// mismatch
if((startPatt < endPatt) && (startTarg < endTarg)){
final String subText = text.substring(startTarg, endTarg);
final String subPatt = pattern.substring(startPatt, endPatt);
final String subTextUp = subText.toUpperCase(locale);
final String subPattUp = subPatt.toUpperCase(locale);
if(m_collator.compare(subTextUp, subPattUp) != 0){ // not case diffference
continue;
}
int diff[] = {UNKNOWN_CASE, UNKNOWN_CASE};
if(m_collator.compare(subText, subTextUp) == 0){
diff[0] = UPPER_CASE;
}else if(m_collator.compare(subText, subText.toLowerCase(locale)) == 0){
diff[0] = LOWER_CASE;
}
if(m_collator.compare(subPatt, subPattUp) == 0){
diff[1] = UPPER_CASE;
}else if(m_collator.compare(subPatt, subPatt.toLowerCase(locale)) == 0){
diff[1] = LOWER_CASE;
}
if(((diff[0] == UPPER_CASE) && ( diff[1] == LOWER_CASE)) ||
((diff[0] == LOWER_CASE) && ( diff[1] == UPPER_CASE))){
return diff;
}else{// not case diff
continue;
}
}else{
continue;
}
}
}
}
项目:gemfirexd-oss
文件:WorkHorseForCollatorDatatypes.java
/**
* This method translates the string into a series of collation elements.
* These elements will get used in the like method.
*
* @return an array of collation elements for the string
* @throws StandardException
*/
int[] getCollationElementsForString()
throws StandardException
{
if (stringData.isNull())
{
return (int[]) null;
}
// Caching of collationElementsForString is not working properly, in
// order to cache it needs to get invalidated everytime the container
// type's value is changed - through any interface, eg: readExternal,
// setValue, ... To get proper behavior, disabling caching, and will
// file a performance enhancement to implement correct caching.
collationElementsForString = null;
countOfCollationElements = 0;
if (collationElementsForString != null)
{
return collationElementsForString;
}
// countOfCollationElements should always be 0 when
// collationElementsForString is null
if (SanityManager.DEBUG)
{
if (countOfCollationElements != 0)
{
SanityManager.THROWASSERT(
"countOfCollationElements expected to be 0, not " +
countOfCollationElements);
}
}
collationElementsForString = new int[stringData.getLength()];
CollationElementIterator cei =
collatorForCharacterDatatypes.getCollationElementIterator(
stringData.getString());
int nextInt;
while ((nextInt = cei.next()) != CollationElementIterator.NULLORDER)
{
/* Believe it or not, a String might have more
* collation elements than characters.
* So, we handle that case by increasing the int array
* by 5 and copying array elements.
*/
if (countOfCollationElements == collationElementsForString.length)
{
int[] expandedArray = new int[countOfCollationElements + 5];
System.arraycopy(collationElementsForString, 0, expandedArray,
0, collationElementsForString.length);
collationElementsForString = expandedArray;
}
collationElementsForString[countOfCollationElements++] = nextInt;
}
return collationElementsForString;
}
项目:lookaside_java-1.8.0-openjdk
文件:StringComparable.java
private final int[] getFirstCaseDiff(final String text, final String pattern, final Locale locale){
final CollationElementIterator targIter = m_collator.getCollationElementIterator(text);
final CollationElementIterator patIter = m_collator.getCollationElementIterator(pattern);
int startTarg = -1;
int endTarg = -1;
int startPatt = -1;
int endPatt = -1;
final int done = getElement(CollationElementIterator.NULLORDER);
int patternElement = 0, targetElement = 0;
boolean getPattern = true, getTarget = true;
while (true) {
if (getPattern){
startPatt = patIter.getOffset();
patternElement = getElement(patIter.next());
endPatt = patIter.getOffset();
}
if ((getTarget)){
startTarg = targIter.getOffset();
targetElement = getElement(targIter.next());
endTarg = targIter.getOffset();
}
getTarget = getPattern = true;
if ((patternElement == done) ||( targetElement == done)) {
return null;
} else if (targetElement == 0) {
getPattern = false;
} else if (patternElement == 0) {
getTarget = false;
} else if (targetElement != patternElement) {// mismatch
if((startPatt < endPatt) && (startTarg < endTarg)){
final String subText = text.substring(startTarg, endTarg);
final String subPatt = pattern.substring(startPatt, endPatt);
final String subTextUp = subText.toUpperCase(locale);
final String subPattUp = subPatt.toUpperCase(locale);
if(m_collator.compare(subTextUp, subPattUp) != 0){ // not case diffference
continue;
}
int diff[] = {UNKNOWN_CASE, UNKNOWN_CASE};
if(m_collator.compare(subText, subTextUp) == 0){
diff[0] = UPPER_CASE;
}else if(m_collator.compare(subText, subText.toLowerCase(locale)) == 0){
diff[0] = LOWER_CASE;
}
if(m_collator.compare(subPatt, subPattUp) == 0){
diff[1] = UPPER_CASE;
}else if(m_collator.compare(subPatt, subPatt.toLowerCase(locale)) == 0){
diff[1] = LOWER_CASE;
}
if(((diff[0] == UPPER_CASE) && ( diff[1] == LOWER_CASE)) ||
((diff[0] == LOWER_CASE) && ( diff[1] == UPPER_CASE))){
return diff;
}else{// not case diff
continue;
}
}else{
continue;
}
}
}
}
项目:gemfirexd-oss
文件:WorkHorseForCollatorDatatypes.java
/**
* This method translates the string into a series of collation elements.
* These elements will get used in the like method.
*
* @return an array of collation elements for the string
* @throws StandardException
*/
int[] getCollationElementsForString()
throws StandardException
{
if (stringData.isNull())
{
return (int[]) null;
}
// Caching of collationElementsForString is not working properly, in
// order to cache it needs to get invalidated everytime the container
// type's value is changed - through any interface, eg: readExternal,
// setValue, ... To get proper behavior, disabling caching, and will
// file a performance enhancement to implement correct caching.
collationElementsForString = null;
countOfCollationElements = 0;
if (collationElementsForString != null)
{
return collationElementsForString;
}
// countOfCollationElements should always be 0 when
// collationElementsForString is null
if (SanityManager.DEBUG)
{
if (countOfCollationElements != 0)
{
SanityManager.THROWASSERT(
"countOfCollationElements expected to be 0, not " +
countOfCollationElements);
}
}
collationElementsForString = new int[stringData.getLength()];
CollationElementIterator cei =
collatorForCharacterDatatypes.getCollationElementIterator(
stringData.getString());
int nextInt;
while ((nextInt = cei.next()) != CollationElementIterator.NULLORDER)
{
/* Believe it or not, a String might have more
* collation elements than characters.
* So, we handle that case by increasing the int array
* by 5 and copying array elements.
*/
if (countOfCollationElements == collationElementsForString.length)
{
int[] expandedArray = new int[countOfCollationElements + 5];
System.arraycopy(collationElementsForString, 0, expandedArray,
0, collationElementsForString.length);
collationElementsForString = expandedArray;
}
collationElementsForString[countOfCollationElements++] = nextInt;
}
return collationElementsForString;
}
项目:infobip-open-jdk-8
文件:StringComparable.java
private final int[] getFirstCaseDiff(final String text, final String pattern, final Locale locale){
final CollationElementIterator targIter = m_collator.getCollationElementIterator(text);
final CollationElementIterator patIter = m_collator.getCollationElementIterator(pattern);
int startTarg = -1;
int endTarg = -1;
int startPatt = -1;
int endPatt = -1;
final int done = getElement(CollationElementIterator.NULLORDER);
int patternElement = 0, targetElement = 0;
boolean getPattern = true, getTarget = true;
while (true) {
if (getPattern){
startPatt = patIter.getOffset();
patternElement = getElement(patIter.next());
endPatt = patIter.getOffset();
}
if ((getTarget)){
startTarg = targIter.getOffset();
targetElement = getElement(targIter.next());
endTarg = targIter.getOffset();
}
getTarget = getPattern = true;
if ((patternElement == done) ||( targetElement == done)) {
return null;
} else if (targetElement == 0) {
getPattern = false;
} else if (patternElement == 0) {
getTarget = false;
} else if (targetElement != patternElement) {// mismatch
if((startPatt < endPatt) && (startTarg < endTarg)){
final String subText = text.substring(startTarg, endTarg);
final String subPatt = pattern.substring(startPatt, endPatt);
final String subTextUp = subText.toUpperCase(locale);
final String subPattUp = subPatt.toUpperCase(locale);
if(m_collator.compare(subTextUp, subPattUp) != 0){ // not case diffference
continue;
}
int diff[] = {UNKNOWN_CASE, UNKNOWN_CASE};
if(m_collator.compare(subText, subTextUp) == 0){
diff[0] = UPPER_CASE;
}else if(m_collator.compare(subText, subText.toLowerCase(locale)) == 0){
diff[0] = LOWER_CASE;
}
if(m_collator.compare(subPatt, subPattUp) == 0){
diff[1] = UPPER_CASE;
}else if(m_collator.compare(subPatt, subPatt.toLowerCase(locale)) == 0){
diff[1] = LOWER_CASE;
}
if(((diff[0] == UPPER_CASE) && ( diff[1] == LOWER_CASE)) ||
((diff[0] == LOWER_CASE) && ( diff[1] == UPPER_CASE))){
return diff;
}else{// not case diff
continue;
}
}else{
continue;
}
}
}
}
项目:OLD-OpenJDK8
文件:StringComparable.java
private final int[] getFirstCaseDiff(final String text, final String pattern, final Locale locale){
final CollationElementIterator targIter = m_collator.getCollationElementIterator(text);
final CollationElementIterator patIter = m_collator.getCollationElementIterator(pattern);
int startTarg = -1;
int endTarg = -1;
int startPatt = -1;
int endPatt = -1;
final int done = getElement(CollationElementIterator.NULLORDER);
int patternElement = 0, targetElement = 0;
boolean getPattern = true, getTarget = true;
while (true) {
if (getPattern){
startPatt = patIter.getOffset();
patternElement = getElement(patIter.next());
endPatt = patIter.getOffset();
}
if ((getTarget)){
startTarg = targIter.getOffset();
targetElement = getElement(targIter.next());
endTarg = targIter.getOffset();
}
getTarget = getPattern = true;
if ((patternElement == done) ||( targetElement == done)) {
return null;
} else if (targetElement == 0) {
getPattern = false;
} else if (patternElement == 0) {
getTarget = false;
} else if (targetElement != patternElement) {// mismatch
if((startPatt < endPatt) && (startTarg < endTarg)){
final String subText = text.substring(startTarg, endTarg);
final String subPatt = pattern.substring(startPatt, endPatt);
final String subTextUp = subText.toUpperCase(locale);
final String subPattUp = subPatt.toUpperCase(locale);
if(m_collator.compare(subTextUp, subPattUp) != 0){ // not case diffference
continue;
}
int diff[] = {UNKNOWN_CASE, UNKNOWN_CASE};
if(m_collator.compare(subText, subTextUp) == 0){
diff[0] = UPPER_CASE;
}else if(m_collator.compare(subText, subText.toLowerCase(locale)) == 0){
diff[0] = LOWER_CASE;
}
if(m_collator.compare(subPatt, subPattUp) == 0){
diff[1] = UPPER_CASE;
}else if(m_collator.compare(subPatt, subPatt.toLowerCase(locale)) == 0){
diff[1] = LOWER_CASE;
}
if(((diff[0] == UPPER_CASE) && ( diff[1] == LOWER_CASE)) ||
((diff[0] == LOWER_CASE) && ( diff[1] == UPPER_CASE))){
return diff;
}else{// not case diff
continue;
}
}else{
continue;
}
}
}
}