rendered paste bodypublic class GananciaUsuarioStatsPanel extends Panel {
private Usuario usuario;
private List<Unidad> unidades;
private List<SubastaIterativa> subastas;
private Iterator<SubastaIterativa> subastasIterator;
@EJB(name="ejb/usuarioDAO")
private UsuarioDAO userManager;
@EJB(name="ejb/unidadDAO")
private UnidadDAO unidadManager;
public GananciaUsuarioStatsPanel(String id, Usuario usuario, int visibleRows) {
super(id);
this.usuario = usuario;
List columnas = new ArrayList();
unidades = unidadManager.getUnidadesGroupByUsuario(usuario);
//This is here to prevent exceptions, needs to be improved
subastas = userManager.getSubastasIterativasConGanancia(usuario.getId());
if (subastas.size() == 0) {
columnas.add(new PropertyColumn(new Model("Etapa"), ""));
int i = 0;
for (Unidad unidad : unidades)
columnas.add(new GananciaColumn(new Model(unidad.getRenderer()), i++));
} else {
columnas.add(new AbstractColumn(new Model("Etapa")) {
public void populateItem(Item cellItem, String componentId, IModel model) {
cellItem.add(new Label(componentId,
String.valueOf(subastasIterator.next().getEtapa())));
}
});
int i = 0;
for (Unidad unidad : unidades) {
columnas.add(new GananciaColumn(new Model(unidad.getRenderer()), i++));
}
}
AjaxFallbackDefaultDataTable tabla = new AjaxFallbackDefaultDataTable(
"usuarioStats", columnas, new UsuarioStatsDataProvider(), visibleRows);
add(tabla);
}
private class GananciaColumn extends AbstractColumn {
private int index;
GananciaColumn(IModel model, int index) {
super(model);
this.index = index;
}
public void populateItem(Item cellItem, String componentId, IModel model) {
List<Oferta> ofertas = (List<Oferta>) model.getObject();
double ganancia;
ganancia = ofertas.get(index).getGanancia();
if (ganancia == 0.0000011)
ganancia = 0;
cellItem.add(new Label(componentId,
String.valueOf(ganancia)));
}
}
private class UsuarioStatsDataProvider extends SortableDataProvider {
public int size() {
return userManager.getSubastasIterativasConGanancia(usuario.getId()).size();
}
public IModel model(Object object) {
return new GananciaListDetachableModel(
((SubastaIterativa)object).getEtapa());
}
public Iterator iterator(int first, int count) {
subastas = userManager.getSubastasIterativasConGanancia(usuario.getId()).
subList(first, first+count);
subastasIterator = subastas.iterator();
return subastas.iterator();
}
}
private class GananciaListDetachableModel extends LoadableDetachableModel {
private int id;
GananciaListDetachableModel(int etapa) {
super(unidadManager.getGananciasUsuarioByEtapa(usuario.getId(), etapa));
this.id = etapa;
}
@Override
protected Object load() {
return unidadManager.getGananciasUsuarioByEtapa(usuario.getId(), id);
}
}
}