/* * Copyright (c) 2015 EMC Corporation * All Rights Reserved */ package util; import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.List; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; import com.google.common.collect.Lists; /** * Option support for strings. * * @author jonnymiller */ public class StringOption implements Comparable<StringOption> { public static final StringOption NONE_OPTION; static { NONE_OPTION = new StringOption("NONE", "none"); } public String id; public String name; public StringOption(String value) { this(value, value); } public StringOption(String id, String name) { this.id = id; this.name = name; } @Override public int compareTo(StringOption o) { return name.compareToIgnoreCase(o.name); } @Override public int hashCode() { HashCodeBuilder builder = new HashCodeBuilder(); builder.append(id); return builder.toHashCode(); } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (!(obj instanceof StringOption)) { return false; } StringOption other = (StringOption) obj; EqualsBuilder builder = new EqualsBuilder(); builder.append(id, other.id); return builder.isEquals(); } @Override public String toString() { return id + "=" + name; } public static List<StringOption> options(Collection<?> values) { return options(values, true); } public static List<StringOption> options(Collection<?> values, boolean sorted) { List<StringOption> options = Lists.newArrayList(); for (Object value : values) { options.add(new StringOption(value.toString())); } if (sorted) { Collections.sort(options); } return options; } public static StringOption[] options(String[] values) { return options(values, true); } public static StringOption[] options(String[] values, boolean sorted) { return options(values, "", sorted); } public static StringOption[] options(String[] values, String prefix) { return options(values, prefix, true); } public static StringOption[] options(String[] values, String prefix, boolean sorted) { StringOption[] options = new StringOption[values.length]; for (int i = 0; i < values.length; i++) { options[i] = new StringOption(values[i], getDisplayValue(values[i], prefix)); } if (sorted) { Arrays.sort(options); } return options; } /** * Get given enum's i18n display-able string. * * @param value * the enumeration value * @param namePrefix * the prefix of the message key. * @return the display value. */ public static String getDisplayValue(String value, String namePrefix) { String key; if (StringUtils.isNotBlank(namePrefix)) { key = namePrefix + "." + value; } else { key = value; } String message = MessagesUtils.get(key); if (key.equals(message)) { message = value; } return message; } }