package de.jpaw.bonaparte.zk;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.zkoss.zul.Listitem;
import org.zkoss.zul.ListitemRenderer;
import de.jpaw.bonaparte.core.BonaCustom;
import de.jpaw.bonaparte.core.BonaPortable;
import de.jpaw.bonaparte.core.CSVConfiguration;
import de.jpaw.bonaparte.core.FoldingComposer;
import de.jpaw.bonaparte.core.MessageComposer;
import de.jpaw.bonaparte.pojos.meta.FoldingStrategy;
public class BonaparteRowRenderer implements ListitemRenderer<BonaPortable> {
protected final MessageComposer<IOException> foldingComposer;
protected final Map<Class<? extends BonaCustom>, List<String>> map;
public BonaparteRowRenderer(CSVConfiguration cfg, List<String> columns) {
// map = Collections.singletonMap(BonaPortable.class, columns); // Java does not like this... (in Eclipse)
map = new HashMap<Class<? extends BonaCustom>, List<String>>(2);
map.put(BonaPortable.class, columns);
foldingComposer = new FoldingComposer<IOException>(cfg == null ? new ZKComposer() : new ZKComposer(cfg), map, FoldingStrategy.TRY_SUPERCLASS);
}
public BonaparteRowRenderer(List<String> columns) {
this(null, columns);
}
@Override
public void render(Listitem listitem, BonaPortable data, int index) throws Exception {
listitem.setValue(data);
foldingComposer.writeRecord(data);
}
}