All pastes #952471 Raw Edit

Stuff

public text v1 · immutable
#952471 ·published 2008-03-22 05:16 UTC
rendered paste body
public 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);
        }
    }

}