001package org.javasimon.console.text; 002 003/** 004 * Basic value formatter. 005 * Handles null value delegating to a null Stringifier. 006 * 007 * @param <T> Input type 008 * @author gquintana 009 */ 010public class BaseStringifier<T> implements Stringifier<T> { 011 012 /** Stringifier to handle null values. */ 013 private final Stringifier nullStringifier; 014 015 /** 016 * Constructor. 017 * 018 * @param nullStringifier Stringifier to handle null values 019 */ 020 public BaseStringifier(Stringifier nullStringifier) { 021 this.nullStringifier = nullStringifier; 022 } 023 024 /** 025 * Check whether input value should be considered as null 026 * 027 * @param object Input value 028 * @return Null-style 029 */ 030 protected boolean isValid(T object) { 031 return object != null; 032 } 033 034 @Override 035 public final String toString(T object) { 036 return isValid(object) ? doToString(object) : nullToString(); 037 } 038 039 /** Converts null input value to string. */ 040 @SuppressWarnings("unchecked") 041 protected final String nullToString() { 042 return nullStringifier.toString(null); 043 } 044 045 /** Converts not null input value to string. */ 046 protected String doToString(T object) { 047 return object.toString(); 048 } 049}