/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.dhaval.web.vaadin.simple;

import com.vaadin.data.Container;
import com.vaadin.data.Item;
import com.vaadin.data.util.IndexedContainer;
import com.vaadin.ui.Layout;
import com.vaadin.ui.Table;
import com.vaadin.ui.VerticalLayout;
import java.io.Serializable;
import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
 *
 * @author dhaval
 */
public class MapTable extends VerticalLayout implements Serializable{

    public MapTable(List<Map<String, Object>> dataList) {
        String[] columns = new String[]{};
        columns = dataList.get(0).keySet().toArray(new String[]{});

        Table table = new Table();
        table.setHeight("200px");
        table.setWidth("100%");
        table.setContainerDataSource(getContainerList(dataList));
        table.setVisibleColumns(columns);
        table.setColumnHeaders(columns);
        setSpacing(true);
        addComponent(table);
    }

    public Container getContainerList(List<Map<String, Object>> dataList) {
        IndexedContainer container = new IndexedContainer();
        Collection<String> keys = dataList.get(0).keySet();
        for (String key : keys) {
            container.addContainerProperty(key, String.class, "");
        }

        int i = 1;
        for (Map<String, Object> data : dataList) {
            Item item = container.addItem(i++);
            keys = data.keySet();
            for (String key : keys) {
                item.getItemProperty(key).setValue(data.get(key));
            }
        }

        return container;
    }
}
