package org.limewire.setting; import java.util.Properties; import org.limewire.util.StringUtils; /** * Provides a <code>String</code> setting value. As a * subclass of <code>Setting</code>, the setting has a key. * <p> * When you add items to the setting, you can only add an entire array at once, * as opposed to per array element. In the same vein, you retrieve the entire * array value with the <code>getValue</code> method. * <p> * Create a <code>StringArraySetting</code> object with a * {@link SettingsFactory#createStringArraySetting(String, String[])}. */ public class StringArraySetting extends AbstractSetting<String[]> { public static final char SEPARATOR = ';'; private String[] value; /** * Creates a new <tt>StringArraySetting</tt> instance with the specified * key and default value. * @param key the constant key to use for the setting * @param defaultValue the default value to use for the setting */ StringArraySetting(Properties defaultProps, Properties props, String key, String[] defaultValue) { super(defaultProps, props, key, encode(defaultValue)); } /** * @return the value of this setting */ public String[] get() { return value; } /** * Mutator for this setting. * * @param value the value to store */ public void set(String[] value) { setValueInternal(encode(value)); } /** Load value from property string value. * @param sValue property string value * */ @Override protected void loadValue(String sValue) { value = decode(sValue); } /** * Splits the string into an Array */ public static String[] decode(String src) { if (src == null || src.length()==0) { return (new String[0]); } return StringUtils.split(src, SEPARATOR); } /** * Separates each field of the array by a semicolon. */ public static String encode(String[] src) { if (src == null || src.length==0) { return ""; } StringBuilder buffer = new StringBuilder(); for(String str : src) { buffer.append(str).append(SEPARATOR); } if (buffer.length() > 0) { buffer.setLength(buffer.length()-1); } return buffer.toString(); } @Override public String toString() { return encode(get()); } }