
com.vaadin.spring.roo.addon.EntityTableColumnGenerator-template Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of com.vaadin.spring.roo.addon Show documentation
Show all versions of com.vaadin.spring.roo.addon Show documentation
Spring Roo addon for creating rich internet applications with Vaadin.
The newest version!
package __ABSTRACT_ENTITY_VIEW_PACKAGE__;
import java.util.Collection;
import java.util.Iterator;
import com.vaadin.data.Property;
import com.vaadin.data.util.MethodProperty;
import com.vaadin.ui.Component;
import com.vaadin.ui.Label;
import com.vaadin.ui.Table;
import com.vaadin.ui.Table.ColumnGenerator;
/**
* Column generator to use in a Vaadin {@link Table} component for
* pretty-printing entities.
*
* Uses the given entity property for pretty-printing individual entities.
* Collections of entities are displayed as a comma separated list.
*/
public class EntityTableColumnGenerator implements ColumnGenerator {
private final String displayProperty;
public EntityTableColumnGenerator(String displayProperty) {
this.displayProperty = displayProperty;
}
public Component generateCell(Table source, Object itemId, Object columnId) {
Property property = source.getContainerProperty(itemId, columnId);
if (property == null) {
return null;
}
Object cellContent = property.getValue();
if (cellContent instanceof Collection) {
StringBuilder sb = new StringBuilder();
Iterator> it = ((Collection>) cellContent).iterator();
while (it.hasNext()) {
if (displayProperty != null) {
Object value = new MethodProperty(it.next(),
displayProperty).getValue();
sb.append(value);
} else {
sb.append(it.next());
}
if (it.hasNext()) {
sb.append(", ");
}
}
return new Label(sb.toString());
} else if (cellContent != null) {
Object value = cellContent;
if (displayProperty != null) {
value = new MethodProperty(cellContent, displayProperty)
.getValue();
}
return new Label(value != null ? value.toString() : "");
} else {
return null;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy