package enterpriseapp.ui.crud;
import java.util.List;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import com.vaadin.addon.tableexport.ExcelExport;
import com.vaadin.data.Property;
import com.vaadin.ui.Table;
import enterpriseapp.hibernate.CustomHbnContainer.EntityItem;
import enterpriseapp.hibernate.dto.Dto;
/**
* This class uses "TableExport" Vaadin add-on.
*
* @author Alejandro Duarte
*
*/
public class CrudExcelExport extends ExcelExport {
private static final long serialVersionUID = 1L;
/**
* @param table Table to export.
*/
public CrudExcelExport(Table table) {
super(table);
}
@SuppressWarnings("rawtypes")
@Override
protected void addDataRow(final Sheet sheetToAddTo, final Object rootItemId, final int row) {
final Row sheetRow = sheetToAddTo.createRow(row);
Property prop;
Object value;
Cell sheetCell;
List<Object> propIds = getPropIds();
for (int col = 0; col < propIds.size(); col++) {
sheetCell = sheetRow.createCell(col);
prop = getTable().getContainerDataSource().getContainerProperty(rootItemId, propIds.get(col));
CrudTable crudTable = (CrudTable) getTable();
if(propIds.get(col).equals("id")) {
value = ((Dto) ((EntityItem) crudTable.getItem(rootItemId)).getPojo()).getId();
} else {
value = crudTable.formatPropertyValue(rootItemId, propIds.get(col), prop);
}
if (null != value) {
sheetCell.setCellValue(createHelper.createRichTextString(value.toString()));
}
}
}
}