package com.revolsys.ui.html.serializer.key;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import com.revolsys.record.io.format.xml.XmlWriter;
import com.revolsys.ui.html.builder.HtmlUiBuilder;
import com.revolsys.ui.html.builder.HtmlUiBuilderAware;
public class MultipleKeySerializer extends AbstractKeySerializer
implements HtmlUiBuilderAware<HtmlUiBuilder<?>> {
private List<KeySerializer> serializers = new ArrayList<>();
private HtmlUiBuilder<?> uiBuilder;
public MultipleKeySerializer() {
setProperties(null);
}
public MultipleKeySerializer(final String name) {
super(name);
setProperties(null);
}
public MultipleKeySerializer(final String name, final String label) {
super(name, label);
setProperties(null);
}
public MultipleKeySerializer addSerializer(final KeySerializer serializer) {
this.serializers.add(serializer);
return this;
}
public List<KeySerializer> getSerializers() {
return this.serializers;
}
@Override
public void serialize(final XmlWriter out, final Object object) {
for (final KeySerializer serializer : this.serializers) {
serializer.serialize(out, object);
}
}
@Override
@SuppressWarnings("unchecked")
public void setHtmlUiBuilder(final HtmlUiBuilder<?> uiBuilder) {
this.uiBuilder = uiBuilder;
for (final KeySerializer serializer : this.serializers) {
if (serializer instanceof HtmlUiBuilderAware) {
final HtmlUiBuilderAware<HtmlUiBuilder<?>> builderAware = (HtmlUiBuilderAware<HtmlUiBuilder<?>>)serializer;
builderAware.setHtmlUiBuilder(uiBuilder);
}
}
}
@Override
public void setProperties(final Map<String, ? extends Object> properties) {
getProperties().clear();
if (properties != null) {
getProperties().putAll(properties);
}
setProperty("sortable", false);
setProperty("searchable", false);
}
public void setSerializers(final List<KeySerializer> serializers) {
this.serializers = serializers;
setHtmlUiBuilder(this.uiBuilder);
}
}