package humanize.faces.convert;
import humanize.Humanize;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.FacesConverter;
@FacesConverter(value = "humanize.Pluralize")
public class PluralizeConverter extends BaseConverter
{
private static final long serialVersionUID = 9005174100459127996L;
private Object value;
private String args;
public String getArgs()
{
return args;
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value)
{
return Humanize.pluralizeFormat(value.toString(), getLocale()).render(getArgsArray());
}
public Object getValue()
{
return value;
}
public void setArgs(String args)
{
clearInitialState();
this.args = args;
}
public void setValue(Object value)
{
clearInitialState();
this.value = value;
}
@Override
protected void restore(Iterator<Object> iterator)
{
this.value = iterator.next();
this.args = (String) iterator.next();
}
@Override
protected void save(List<Object> states)
{
states.add(value);
states.add(args);
}
private Object[] getArgsArray()
{
List<Object> tmpArr = new ArrayList<Object>();
tmpArr.add(asNumber(value));
if (args != null)
{
tmpArr.addAll(Arrays.asList(args.split("\\s*,\\s*")));
}
return tmpArr.toArray(new Object[tmpArr.size()]);
}
}