SuperSimpleJsonContainer

Hi everyone,

i´ve had some issues with the AddOn from Teemu Pöntelin. So i wrote my own SuperSimpleJsonContainer:

package utils.jsonContainer;

import java.util.Iterator;

import org.json.JSONArray;
import org.json.JSONException;

import com.vaadin.data.Item;
import com.vaadin.data.util.IndexedContainer;

@SuppressWarnings("serial")
public class IndexedJsonContainer extends IndexedContainer {

    @SuppressWarnings({ "rawtypes", "unchecked" })
    public IndexedJsonContainer(String jsonArrayAsString) {
        try {
            JSONArray jsonArray = new JSONArray(jsonArrayAsString);
            for (int i = 0; jsonArray.length() > i; i++) {
                Item item = this.getItem(this.addItem());
                Iterator iterator = jsonArray.getJSONObject(i).keys();
                while (iterator.hasNext()) {
                    Object key = iterator.next();
                    if (!this.getAllItemIds().contains(key))
                        this.addContainerProperty(key, String.class, "");
                    item.getItemProperty(key).setValue(jsonArray.getJSONObject(i).get((String) key));
                }
            }

        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

Usage:

String jsonArrayAsString = "[{\"Key1\":\"Value1\",\"Key2\":\"Value1\"},{\"Key1\":\"Value2\",\"Key2\":\"Value2\"},{\"Key1\":\"Value3\",\"Key2\":\"Value3\"}]
";
Container container = new IndexedJsonContainer(jsonArrayAsString);

Regards,
Michael