package org.sef4j.core.helpers.proptree.printers; import java.io.PrintWriter; import org.sef4j.core.helpers.proptree.model.PropTreeNode; import org.sef4j.core.helpers.proptree.printers.PropTreeValuePrinter; /** * adapter implements PropTreeValuePrinter, delegate to ValuePrinter. * (PropTree,name,Object) -> String text * * using flags, you can format to "<<value>>" or "<<propName>> : { <<value>> }", * or more generally: "<<propName>> <<prefixSep>> <<value>> <<postfixSep>>" * * @param <T> */ public class PropTreeValueWrapperPrinter<T> implements PropTreeValuePrinter<T> { private final ValuePrinter<T> delegate; private final boolean prefixPropName; private final String prefixSep; private final String postfixSep; public PropTreeValueWrapperPrinter(ValuePrinter<T> delegate, boolean prefixPropName, String prefixSep, String postfixSep) { super(); this.delegate = delegate; this.prefixPropName = prefixPropName; this.prefixSep = prefixSep; this.postfixSep = postfixSep; } public void printValue(PrintWriter output, PropTreeNode node, String propName, T propValue) { if (prefixPropName) { output.print(propName); } if (prefixSep != null) { output.print(prefixSep); } delegate.printValue(output, propName, propValue); if (postfixSep != null) { output.print(postfixSep); } } }