package humanize.faces.convert; import humanize.Humanize; import java.util.Date; 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.NaturalDay") public class NaturalTimeConverter extends BaseConverter { private static final long serialVersionUID = 2321489006654386163L; private Object reference; @Override public Object getAsObject(FacesContext context, UIComponent component, String value) { return asDate(value); } @Override public String getAsString(FacesContext context, UIComponent component, Object value) { return Humanize.naturalTime(getReference(), asDate(value), getLocale(context)); } public Object getFrom() { return reference; } public void setFrom(Object reference) { clearInitialState(); this.reference = reference; } @Override protected void restore(Iterator<Object> iterator) { this.reference = iterator.next(); } @Override protected void save(List<Object> states) { states.add(reference); } private Date getReference() { return reference == null ? new Date() : asDate(reference); } }