📄 countrymodel.java
字号:
package org.appfuse.webapp.action;
import java.text.Collator;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import org.appfuse.model.LabelValue;
public class CountryModel {
/**
* Build a List of LabelValues for all the available countries. Uses
* the two letter uppercase ISO name of the country as the value and the
* localized country name as the label.
*
* @param locale The Locale used to localize the country names.
*
* @return List of LabelValues for all available countries.
*/
public Map getCountries(Locale locale) {
final String EMPTY = "";
final Locale[] available = Locale.getAvailableLocales();
List countries = new ArrayList();
countries.add(new LabelValue("",""));
for (int i = 0; i < available.length; i++) {
final String iso = available[i].getCountry();
final String name = available[i].getDisplayCountry(locale);
if (!EMPTY.equals(iso) && !EMPTY.equals(name)) {
LabelValue country = new LabelValue(name, iso);
if (!countries.contains(country)) {
countries.add(new LabelValue(name, iso));
}
}
}
Collections.sort(countries, new LabelValueComparator(locale));
Map options = new LinkedHashMap();
// loop through and convert list to a JSF-Friendly Map for a <select>
for (Iterator it = countries.iterator(); it.hasNext();) {
LabelValue option = (LabelValue) it.next();
if (!options.containsValue(option.getValue())) {
options.put(option.getLabel(), option.getValue());
}
}
return options;
}
/**
* Class to compare LabelValues using their labels with
* locale-sensitive behaviour.
*/
public class LabelValueComparator implements Comparator {
private Comparator c;
/**
* Creates a new LabelValueComparator object.
*
* @param locale The Locale used for localized String comparison.
*/
public LabelValueComparator(Locale locale) {
c = Collator.getInstance(locale);
}
/**
* Compares the localized labels of two LabelValues.
*
* @param o1 The first LabelValue to compare.
* @param o2 The second LabelValue to compare.
*
* @return The value returned by comparing the localized labels.
*/
public final int compare(Object o1, Object o2) {
LabelValue lhs = (LabelValue) o1;
LabelValue rhs = (LabelValue) o2;
return c.compare(lhs.getLabel(), rhs.getLabel());
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -