private final int getCaseDiff (final String text, final String pattern){ final int savedStrength = m_collator.getStrength(); final int savedDecomposition = m_collator.getDecomposition(); m_collator.setStrength(Collator.TERTIARY);// not to ignore case m_collator.setDecomposition(Collator.CANONICAL_DECOMPOSITION );// corresponds NDF final int diff[] =getFirstCaseDiff (text, pattern, m_locale); m_collator.setStrength(savedStrength);// restore m_collator.setDecomposition(savedDecomposition); //restore if(diff != null){ if((m_caseOrder).equals("upper-first")){ if(diff[0] == UPPER_CASE){ return -1; }else{ return 1; } }else{// lower-first if(diff[0] == LOWER_CASE){ return -1; }else{ return 1; } } }else{// No case differences return 0; } }
public int compareTo(Object o) { final String pattern = ((StringComparable)o).toString(); if(m_text.equals(pattern)){//Code-point equals return 0; } final int savedStrength = m_collator.getStrength(); int comp = 0; // Is there difference more significant than case-order? if(((savedStrength == Collator.PRIMARY) || (savedStrength == Collator.SECONDARY))){ comp = m_collator.compare(m_text, pattern ); }else{// more than SECONDARY m_collator.setStrength(Collator.SECONDARY); comp = m_collator.compare(m_text, pattern ); m_collator.setStrength(savedStrength); } if(comp != 0){//Difference more significant than case-order return comp ; } // No difference more significant than case-order. // Find case difference comp = getCaseDiff(m_text, pattern); if(comp != 0){ return comp; }else{// No case differences. Less significant difference could exist return m_collator.compare(m_text, pattern ); } }
/** * Set the strength of the collation (primary, secondary, tertiary, etc) * @param newStrength the strength */ public void setStrength(int newStrength) { uca.setStrength(newStrength); }
/** * Set the strength of the collation (primary, secondary, tertiary, etc) * @param newStrength the strength */ public void setStrength(int newStrength) { uca.setStrength(newStrength); }
/** * Verify that JVM has support for the Collator for the datbase's locale. * * @param strength Collator strength or -1 for locale default. * @return Collator for database's locale * @throws StandardException if JVM does not have support for Collator */ private RuleBasedCollator verifyCollatorSupport(int strength) throws StandardException { Locale[] availLocales = Collator.getAvailableLocales(); //Verify that Collator can be instantiated for the given locale. boolean localeFound = false; for (int i=0; i<availLocales.length;i++) { if (availLocales[i].equals(databaseLocale)) { localeFound = true; break; } } if (!localeFound) throw StandardException.newException( SQLState.COLLATOR_NOT_FOUND_FOR_LOCALE, (databaseLocale != null ? databaseLocale.toString() : "null")); RuleBasedCollator collator = (RuleBasedCollator)Collator.getInstance(databaseLocale); if (strength != -1) collator.setStrength(strength); return collator; } /**
/** * Verify that JVM has support for the Collator for the datbase's locale. * * @param strength Collator strength or -1 for locale default. * @return Collator for database's locale * @throws StandardException if JVM does not have support for Collator */ private RuleBasedCollator verifyCollatorSupport(int strength) throws StandardException { Locale[] availLocales = Collator.getAvailableLocales(); //Verify that Collator can be instantiated for the given locale. boolean localeFound = false; for (int i=0; i<availLocales.length;i++) { if (availLocales[i].equals(databaseLocale)) { localeFound = true; break; } } if (!localeFound) throw StandardException.newException( SQLState.COLLATOR_NOT_FOUND_FOR_LOCALE, (databaseLocale != null ? databaseLocale.toString() : "null")); RuleBasedCollator collator = (RuleBasedCollator)Collator.getInstance(databaseLocale); if (strength != -1) collator.setStrength(strength); return collator; } /**
/** * Verify that JVM has support for the Collator for the datbase's locale. * * @param strength Collator strength or -1 for locale default. * @return Collator for database's locale * @throws StandardException if JVM does not have support for Collator */ private RuleBasedCollator verifyCollatorSupport(int strength) throws StandardException { Locale[] availLocales = Collator.getAvailableLocales(); //Verify that Collator can be instantiated for the given locale. boolean localeFound = false; for (int i=0; i<availLocales.length;i++) { if (availLocales[i].equals(databaseLocale)) { localeFound = true; break; } } if (!localeFound) throw StandardException.newException( SQLState.COLLATOR_NOT_FOUND_FOR_LOCALE, (databaseLocale != null ? databaseLocale.toString() : "null")); RuleBasedCollator collator = (RuleBasedCollator)Collator.getInstance(databaseLocale); if (strength != -1) collator.setStrength(strength); return collator; } /**
private final int getCaseDiff (final String text, final String pattern){ final int savedStrength = m_collator.getStrength(); final int savedDecomposition = m_collator.getDecomposition(); m_collator.setStrength(Collator.TERTIARY);// not to ignore case m_collator.setDecomposition(Collator.CANONICAL_DECOMPOSITION );// corresponds NDF final int diff[] =getFirstCaseDiff (text, pattern, m_locale); m_collator.setStrength(savedStrength);// restore m_collator.setDecomposition(savedDecomposition); //restore if(diff != null){ if((m_caseOrder).equals("upper-first")){ if(diff[0] == UPPER_CASE){ return -1; }else{ return 1; } }else{// lower-first if(diff[0] == LOWER_CASE){ return -1; }else{ return 1; } } }else{// No case differences return 0; } }
private final int getCaseDiff (final String text, final String pattern){ final int savedStrength = m_collator.getStrength(); final int savedDecomposition = m_collator.getDecomposition(); m_collator.setStrength(Collator.TERTIARY);// not to ignore case m_collator.setDecomposition(Collator.CANONICAL_DECOMPOSITION );// corresponds NDF final int diff[] =getFirstCaseDiff (text, pattern, m_locale); m_collator.setStrength(savedStrength);// restore m_collator.setDecomposition(savedDecomposition); //restore if(diff != null){ if((m_caseOrder).equals("upper-first")){ if(diff[0] == UPPER_CASE){ return -1; }else{ return 1; } }else{// lower-first if(diff[0] == LOWER_CASE){ return -1; }else{ return 1; } } }else{// No case differences return 0; } }
private final int getCaseDiff (final String text, final String pattern){ final int savedStrength = m_collator.getStrength(); final int savedDecomposition = m_collator.getDecomposition(); m_collator.setStrength(Collator.TERTIARY);// not to ignore case m_collator.setDecomposition(Collator.CANONICAL_DECOMPOSITION );// corresponds NDF final int diff[] =getFirstCaseDiff (text, pattern, m_locale); m_collator.setStrength(savedStrength);// restore m_collator.setDecomposition(savedDecomposition); //restore if(diff != null){ if((m_caseOrder).equals("upper-first")){ if(diff[0] == UPPER_CASE){ return -1; }else{ return 1; } }else{// lower-first if(diff[0] == LOWER_CASE){ return -1; }else{ return 1; } } }else{// No case differences return 0; } }
aNewCollator.setStrength (Collator.TERTIARY); aNewCollator.setDecomposition (Collator.FULL_DECOMPOSITION); return aNewCollator;
public int compareTo(Object o) { final String pattern = ((StringComparable)o).toString(); if(m_text.equals(pattern)){//Code-point equals return 0; } final int savedStrength = m_collator.getStrength(); int comp = 0; // Is there difference more significant than case-order? if(((savedStrength == Collator.PRIMARY) || (savedStrength == Collator.SECONDARY))){ comp = m_collator.compare(m_text, pattern ); }else{// more than SECONDARY m_collator.setStrength(Collator.SECONDARY); comp = m_collator.compare(m_text, pattern ); m_collator.setStrength(savedStrength); } if(comp != 0){//Difference more significant than case-order return comp ; } // No difference more significant than case-order. // Find case difference comp = getCaseDiff(m_text, pattern); if(comp != 0){ return comp; }else{// No case differences. Less significant difference could exist return m_collator.compare(m_text, pattern ); } }
try { coll = new RuleBasedCollator(rules); coll.setStrength(Collator.PRIMARY); // ignore case and accent differences return coll; } catch (ParseException e) {
public int compareTo(Object o) { final String pattern = ((StringComparable)o).toString(); if(m_text.equals(pattern)){//Code-point equals return 0; } final int savedStrength = m_collator.getStrength(); int comp = 0; // Is there difference more significant than case-order? if(((savedStrength == Collator.PRIMARY) || (savedStrength == Collator.SECONDARY))){ comp = m_collator.compare(m_text, pattern ); }else{// more than SECONDARY m_collator.setStrength(Collator.SECONDARY); comp = m_collator.compare(m_text, pattern ); m_collator.setStrength(savedStrength); } if(comp != 0){//Difference more significant than case-order return comp ; } // No difference more significant than case-order. // Find case difference comp = getCaseDiff(m_text, pattern); if(comp != 0){ return comp; }else{// No case differences. Less significant difference could exist return m_collator.compare(m_text, pattern ); } }
public int compareTo(Object o) { final String pattern = ((StringComparable)o).toString(); if(m_text.equals(pattern)){//Code-point equals return 0; } final int savedStrength = m_collator.getStrength(); int comp = 0; // Is there difference more significant than case-order? if(((savedStrength == Collator.PRIMARY) || (savedStrength == Collator.SECONDARY))){ comp = m_collator.compare(m_text, pattern ); }else{// more than SECONDARY m_collator.setStrength(Collator.SECONDARY); comp = m_collator.compare(m_text, pattern ); m_collator.setStrength(savedStrength); } if(comp != 0){//Difference more significant than case-order return comp ; } // No difference more significant than case-order. // Find case difference comp = getCaseDiff(m_text, pattern); if(comp != 0){ return comp; }else{// No case differences. Less significant difference could exist return m_collator.compare(m_text, pattern ); } }