package humanize.taglibs; import static humanize.taglibs.util.Convert.asNumber; import humanize.Humanize; import humanize.util.Parameters.PluralizeParams; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Locale; import javax.servlet.jsp.JspException; import org.apache.taglibs.standard.tag.common.fmt.HumanizeSupport; public class PluralizeTag extends HumanizeSupport { private static final long serialVersionUID = -8952205534935694612L; private String none; private String one; private String many; private Object value; private String args; private Number num; private Object[] argsArray; public void setArgs(String args) { this.args = args; } public void setMany(String many) { this.many = many; } public void setNone(String none) { this.none = none; } public void setOne(String one) { this.one = one; } public void setValue(String value) { this.value = value; } @Override protected void begin() throws JspException { num = asNumber(value); List<Object> tmpArr = new ArrayList<Object>(); if (args != null) { tmpArr.addAll(Arrays.asList(args.split("\\s*,\\s*"))); } this.argsArray = tmpArr.toArray(new Object[tmpArr.size()]); } protected void clean() { this.value = null; this.none = null; this.one = null; this.many = null; this.num = null; } @Override protected boolean isContextRemoveNeeded() { return value == null; } @Override protected String render() throws JspException { return Humanize.pluralize(num, asParams()); } @Override protected String render(Locale locale) throws JspException { return Humanize.pluralize(locale, num, asParams()); } private PluralizeParams asParams() { return PluralizeParams.begin(one) .many(many) .none(none) .exts(argsArray); } }