package com.jidesoft.converter;

public class StringArrayConverter implements ObjectConverter {
    public static final ConverterContext CONTEXT = new ConverterContext("StringArrayConverter");
    private String _separator = ";";

    /**
     * Creates a StringArrayConverter using default constructor. The semicolon (";") will be used as the separator when
     * converting from string to array and vise versa.
     */
    public StringArrayConverter() {
    }

    /**
     * Creates a StringArrayConverter with a specified separator. Please make sure the separator is not used in the
     * character set used in each string element. For example, you want to use space as separator, then each string in
     * the string array must not use space.
     *
     * @param separator the separator used to separate string to an array.
     */
    public StringArrayConverter(String separator) {
        _separator = separator;
    }

    public String toString(Object object, ConverterContext context) {
        if (object == null) {
            return null;
        }
        if (object.getClass().isArray()) {
            String[] array = (String[]) object;
            StringBuffer b = new StringBuffer();
            for (int i = 0; i < array.length; i++) {
                if (i > 0) b.append(_separator);
                b.append(array[i]);
            }
            return b.toString();
        }
        return null;
    }

    public boolean supportToString(Object object, ConverterContext context) {
        return true;
    }

    public Object fromString(String string, ConverterContext context) {
        if (string.length() == 0) {
            return new String[0];
        }
        return string.split(_separator);
    }

    public boolean supportFromString(String string, ConverterContext context) {
        return true;
    }
}