List of usage examples for java.text Collator setDecomposition
public synchronized void setDecomposition(int decompositionMode)
From source file:Decomposition.java
public Decomposition() { String pairs[][] = new String[3][3]; pairs[0][0] = "Half-Width and full-width A"; pairs[0][1] = "A"; pairs[0][2] = "\uFF21"; // full-width A pairs[1][0] = "A with Ring and Angstrom Sign"; pairs[1][1] = "\u00c5"; // A with ring pairs[1][2] = "\u212b"; // Angstrom pairs[2][0] = "a + umlaut and precomposed a-umlaut"; pairs[2][1] = "a\u0308"; pairs[2][2] = "\u00e4"; for (int i = 0; i < 3; i++) { Collator collate = Collator.getInstance(Locale.US); collate.setStrength(Collator.IDENTICAL); System.out.println("Comparing " + pairs[i][0]); collate.setDecomposition(Collator.NO_DECOMPOSITION); compare(collate, pairs[i][1], pairs[i][2]); collate.setDecomposition(Collator.CANONICAL_DECOMPOSITION); compare(collate, pairs[i][1], pairs[i][2]); collate.setDecomposition(Collator.FULL_DECOMPOSITION); compare(collate, pairs[i][1], pairs[i][2]); System.out.println(""); }/*from ww w . ja v a2 s . c o m*/ }
From source file:com.evolveum.midpoint.web.component.prism.ContainerValueWrapper.java
public void sort() { Locale locale = WebModelServiceUtils.getLocale(); if (locale == null) { locale = Locale.getDefault(); }/*from www . ja v a2 s. c om*/ Collator collator = Collator.getInstance(locale); if (isSorted()) { collator.setStrength(Collator.SECONDARY); // e.g. "a" should be different from "" collator.setDecomposition(Collator.FULL_DECOMPOSITION); // slower but more precise Collections.sort(properties, new Comparator<ItemWrapper>() { @Override public int compare(ItemWrapper pw1, ItemWrapper pw2) { if (pw1 instanceof ContainerWrapper) { ((ContainerWrapper) pw1).sort(); } if (pw2 instanceof ContainerWrapper) { ((ContainerWrapper) pw2).sort(); } if (PropertyOrReferenceWrapper.class.isAssignableFrom(pw1.getClass()) && pw2 instanceof ContainerWrapper) { return -1; } if (PropertyOrReferenceWrapper.class.isAssignableFrom(pw2.getClass()) && pw1 instanceof ContainerWrapper) { return 1; } // return compareByDisplayNames(pw1, pw2, collator); } }); } else { Collections.sort(properties, new Comparator<ItemWrapper>() { @Override public int compare(ItemWrapper pw1, ItemWrapper pw2) { if (pw1 instanceof ContainerWrapper) { ((ContainerWrapper) pw1).sort(); } if (pw2 instanceof ContainerWrapper) { ((ContainerWrapper) pw2).sort(); } if (PropertyOrReferenceWrapper.class.isAssignableFrom(pw1.getClass()) && pw2 instanceof ContainerWrapper) { return -1; } if (PropertyOrReferenceWrapper.class.isAssignableFrom(pw2.getClass()) && pw1 instanceof ContainerWrapper) { return 1; } ItemDefinition id1 = pw1.getItemDefinition(); ItemDefinition id2 = pw2.getItemDefinition(); int displayOrder1 = (id1 == null || id1.getDisplayOrder() == null) ? Integer.MAX_VALUE : id1.getDisplayOrder(); int displayOrder2 = (id2 == null || id2.getDisplayOrder() == null) ? Integer.MAX_VALUE : id2.getDisplayOrder(); if (displayOrder1 == displayOrder2) { return compareByDisplayNames(pw1, pw2, collator); } else { return Integer.compare(displayOrder1, displayOrder2); } } }); } }
From source file:org.apache.solr.schema.CollationField.java
/** * Setup the field according to the provided parameters *///from w ww. j a va 2 s.c o m private void setup(ResourceLoader loader, Map<String, String> args) { String custom = args.remove("custom"); String language = args.remove("language"); String country = args.remove("country"); String variant = args.remove("variant"); String strength = args.remove("strength"); String decomposition = args.remove("decomposition"); final Collator collator; if (custom == null && language == null) throw new SolrException(ErrorCode.SERVER_ERROR, "Either custom or language is required."); if (custom != null && (language != null || country != null || variant != null)) throw new SolrException(ErrorCode.SERVER_ERROR, "Cannot specify both language and custom. " + "To tailor rules for a built-in language, see the javadocs for RuleBasedCollator. " + "Then save the entire customized ruleset to a file, and use with the custom parameter"); if (language != null) { // create from a system collator, based on Locale. collator = createFromLocale(language, country, variant); } else { // create from a custom ruleset collator = createFromRules(custom, loader); } // set the strength flag, otherwise it will be the default. if (strength != null) { if (strength.equalsIgnoreCase("primary")) collator.setStrength(Collator.PRIMARY); else if (strength.equalsIgnoreCase("secondary")) collator.setStrength(Collator.SECONDARY); else if (strength.equalsIgnoreCase("tertiary")) collator.setStrength(Collator.TERTIARY); else if (strength.equalsIgnoreCase("identical")) collator.setStrength(Collator.IDENTICAL); else throw new SolrException(ErrorCode.SERVER_ERROR, "Invalid strength: " + strength); } // set the decomposition flag, otherwise it will be the default. if (decomposition != null) { if (decomposition.equalsIgnoreCase("no")) collator.setDecomposition(Collator.NO_DECOMPOSITION); else if (decomposition.equalsIgnoreCase("canonical")) collator.setDecomposition(Collator.CANONICAL_DECOMPOSITION); else if (decomposition.equalsIgnoreCase("full")) collator.setDecomposition(Collator.FULL_DECOMPOSITION); else throw new SolrException(ErrorCode.SERVER_ERROR, "Invalid decomposition: " + decomposition); } analyzer = new CollationKeyAnalyzer(collator); }