package fr.openwide.core.wicket.more.rendering; import static fr.openwide.core.spring.util.StringUtils.emptyTextToNull; import java.util.Locale; import com.google.common.base.Optional; import fr.openwide.core.commons.util.functional.Joiners; import fr.openwide.core.jpa.more.business.generic.model.GenericListItem; import fr.openwide.core.spring.util.StringUtils; import fr.openwide.core.wicket.more.rendering.Renderer; public abstract class GenericListItemRenderer extends Renderer<GenericListItem<?>> { private static final long serialVersionUID = -3042035624376063917L; private static final Renderer<GenericListItem<?>> INSTANCE = new GenericListItemRenderer() { private static final long serialVersionUID = 1L; @Override public String render(GenericListItem<?> value, Locale locale) { return value.getLabel(); } }.nullsAsNull(); private static final Renderer<GenericListItem<?>> CODE = new GenericListItemRenderer() { private static final long serialVersionUID = 1L; @Override public String render(GenericListItem<?> value, Locale locale) { return value.getCode(); } }.nullsAsNull(); private static final Renderer<GenericListItem<?>> CODE_LABEL = new GenericListItemRenderer() { private static final long serialVersionUID = 1L; @Override public String render(GenericListItem<?> value, Locale locale) { return Joiners.onHyphenSpace() .join( emptyTextToNull(value.getCode()), emptyTextToNull(value.getLabel()) ); } }.nullsAsNull(); private static final Renderer<GenericListItem<?>> SHORT_LABEL = new GenericListItemRenderer() { private static final long serialVersionUID = 1L; @Override public String render(GenericListItem<?> value, Locale locale) { return Optional.fromNullable(StringUtils.emptyTextToNull(value.getShortLabel())) .or(Optional.fromNullable(StringUtils.emptyTextToNull(value.getLabel()))) .orNull(); } }.nullsAsNull(); public static final Renderer<GenericListItem<?>> get() { return INSTANCE; } public static final Renderer<GenericListItem<?>> code() { return CODE; } public static final Renderer<GenericListItem<?>> codeLabel() { return CODE_LABEL; } public static final Renderer<GenericListItem<?>> shortLabel() { return SHORT_LABEL; } /** * @deprecated Use {@link #get()} instead. */ @Deprecated protected GenericListItemRenderer() { } }