package com.revolsys.ui.html.serializer; import java.io.IOException; import com.revolsys.record.io.format.xml.XmlWriter; import com.revolsys.ui.html.builder.HtmlUiBuilder; import com.revolsys.ui.html.builder.HtmlUiBuilderAware; import com.revolsys.ui.html.serializer.key.AbstractKeySerializer; import com.revolsys.ui.html.serializer.type.TypeSerializer; import com.revolsys.util.Property; public class BuilderSerializer extends AbstractKeySerializer implements TypeSerializer, HtmlUiBuilderAware<HtmlUiBuilder<?>> { /** The HTML UI Builder */ private HtmlUiBuilder<?> builder; private String methodName; public BuilderSerializer() { } /** * Construt a new HtmlUiBuilderMethodSerializer. * * @param builder The HTML UI Builder the method is on. */ public BuilderSerializer(final String name, final String label, final HtmlUiBuilder<?> builder) { super(name, label); this.builder = builder; } public String getMethodName() { if (Property.hasValue(this.methodName)) { return this.methodName; } else { return getName(); } } /** * Serialize the value to the XML writer. * * @param out The XML writer to serialize to. * @param value The object to get the value from. * @throws IOException If there was an I/O error serializing the value. */ @Override public void serialize(final XmlWriter out, final Object value) { if (this.builder == null) { out.text("-"); } else { this.builder.serialize(out, value, getMethodName()); } } @Override public void setHtmlUiBuilder(final HtmlUiBuilder<?> uiBuilder) { if (uiBuilder != null) { this.builder = uiBuilder; } } public void setMethodName(final String methodName) { this.methodName = methodName; } @Override public String toString() { if (Property.hasValue(this.methodName)) { return this.methodName; } else { return super.toString(); } } }