package com.revolsys.ui.html.serializer; import java.util.ArrayList; import java.util.Collection; import java.util.List; import com.revolsys.record.io.format.xml.XmlWriter; import com.revolsys.ui.html.serializer.key.KeySerializer; import com.revolsys.util.Property; public class KeySerializerTableSerializer implements RowsTableSerializer { private int colCount = 0; private int rowCount; private final List<Object> rows = new ArrayList<>(); private final List<KeySerializer> serializers; public KeySerializerTableSerializer(final List<KeySerializer> serializers) { this.serializers = serializers; if (serializers != null) { this.colCount = serializers.size(); } } public KeySerializerTableSerializer(final List<KeySerializer> serializers, final Collection<? extends Object> rows) { this(serializers); setRows(rows); } @Override public String getBodyCssClass(final int row, final int col) { final KeySerializer serializer = getSerializer(col); if (serializer != null) { final String name = serializer.getName(); if (Property.hasValue(name)) { return name.replaceAll("\\.", "_"); } } return ""; } @Override public int getBodyRowCount() { return this.rowCount; } @Override public int getColumnCount() { return this.colCount; } @Override public String getFooterCssClass(final int row, final int col) { return ""; } @Override public int getFooterRowCount() { return 0; } @Override public String getHeaderCssClass(final int col) { if (col < this.colCount) { final KeySerializer serializer = getSerializer(col); final String name = serializer.getName(); if (Property.hasValue(name)) { return name.replaceAll("\\.", "_"); } } return ""; } public KeySerializer getSerializer(final int col) { final KeySerializer serializer = this.serializers.get(col); return serializer; } public List<KeySerializer> getSerializers() { return this.serializers; } @Override public void serializeBodyCell(final XmlWriter out, final int row, final int col) { if (col < this.colCount) { final Object object = this.rows.get(row); final KeySerializer serializer = getSerializer(col); serializer.serialize(out, object); } else { out.entityRef("nbsp"); } } @Override public void serializeFooterCell(final XmlWriter out, final int row, final int col) { } @Override public void serializeHeaderCell(final XmlWriter out, final int col) { if (col < this.colCount) { final KeySerializer serializer = getSerializer(col); out.text(serializer.getLabel()); } else { out.entityRef("nbsp"); } } @Override public void setRows(final Collection<? extends Object> rows) { this.rows.clear(); if (rows != null) { this.rows.addAll(rows); } this.rowCount = this.rows.size(); } }