private void actualizarPagina() { final String nombreClaseEntidad = claseEntidad.getSimpleName(); Long numFilas = new HibernateTransaction<Long>() { @Override public Long run() { return (Long) session.createQuery("select count(*) from " + nombreClaseEntidad).iterate().next(); } }.execute(); Double maxPaginasFP = numFilas.doubleValue() / maxFilas.doubleValue(); maxPaginas = (int) Math.ceil(maxPaginasFP.doubleValue()); paginaEtiqueta.setText(getTextoPagina()); }
public GestorGenericoWindow(final UBTicket ubticket, Class c) { super("Gestionar [" + c.getSimpleName() + "]"); final Object self = this; claseEntidad = c; tablaPanel = new Panel(new Border.Invisible(), Panel.Orientation.HORISONTAL); addComponent(tablaPanel); Panel paginadorPanel = new Panel(new Border.Invisible(), Panel.Orientation.HORISONTAL); paginadorPanel.addComponent( new Button( "<--", new Action() { @Override public void doAction() { if (pagina > 0) { pagina--; actualizarTabla(); } } })); paginaEtiqueta = new Label(); paginaEtiqueta.setText(getTextoPagina()); paginadorPanel.addComponent(paginaEtiqueta); paginadorPanel.addComponent( new Button( "-->", new Action() { @Override public void doAction() { if ((pagina + 1) < maxPaginas) { pagina++; actualizarTabla(); } } })); addComponent(paginadorPanel); Panel botonesPanel = new Panel(new Border.Invisible(), Panel.Orientation.HORISONTAL); botonesPanel.addComponent( new Button( "CREAR", new Action() { @Override public void doAction() { if (claseEntidad == Categoria.class) { ubticket .getGUIScreen() .showWindow(new CategoriaEditorWindow((GestorGenericoWindow) self)); } else if (claseEntidad == Espectaculo.class) { ubticket .getGUIScreen() .showWindow( new EspectaculoEditorWindow(ubticket, (GestorGenericoWindow) self)); } else if (claseEntidad == Espacio.class) { ubticket .getGUIScreen() .showWindow(new EspacioEditorWindow(ubticket, (GestorGenericoWindow) self)); } else if (claseEntidad == Usuario.class) { ubticket .getGUIScreen() .showWindow(new UsuarioEditorWindow(ubticket, (GestorGenericoWindow) self)); } } })); botonesPanel.addComponent( new Button( "EDITAR", new Action() { final String nombreClaseEntidad = claseEntidad.getSimpleName(); @Override public void doAction() { String input = TextInputDialog.showTextInputBox( ubticket.getGUIScreen(), "Atención", "¿Qué tabla desea editar?", ""); if (input != null && input.length() != 0) { try { final Integer i = Integer.parseInt(input); Object entidad = new HibernateTransaction<Object>() { @Override public Object run() { return session.byId(claseEntidad).load(i); } }.execute(); if (entidad != null) { if (entidad instanceof Categoria) { ubticket .getGUIScreen() .showWindow( new CategoriaEditorWindow( (GestorGenericoWindow) self, (Categoria) entidad)); } else if (entidad instanceof Espectaculo) { ubticket .getGUIScreen() .showWindow( new EspectaculoEditorWindow( ubticket, (GestorGenericoWindow) self, (Espectaculo) entidad)); } else if (entidad instanceof Espacio) { ubticket .getGUIScreen() .showWindow( new EspacioEditorWindow( ubticket, (GestorGenericoWindow) self, (Espacio) entidad)); } else if (entidad instanceof Usuario) { ubticket .getGUIScreen() .showWindow( new UsuarioEditorWindow( ubticket, (GestorGenericoWindow) self, (Usuario) entidad)); } } else { MessageBox.showMessageBox( ubticket.getGUIScreen(), "Atención", "No se ha encontrado ninguna entidad con tal identificador."); } } catch (NumberFormatException ex) { MessageBox.showMessageBox( ubticket.getGUIScreen(), "Atención", "Identificador inválido."); } } } })); botonesPanel.addComponent( new Button( "BORRAR", new Action() { final String nombreClaseEntidad = claseEntidad.getSimpleName(); @Override public void doAction() { String input = TextInputDialog.showTextInputBox( ubticket.getGUIScreen(), "Atención", "¿Qué tabla desea eliminar?", ""); if (input != null && input.length() != 0) { try { final Integer i = Integer.parseInt(input); Integer entidadesBorradas = new HibernateTransaction<Integer>() { @Override public Integer run() { int entidadesBorradas = session .createQuery( "DELETE " + nombreClaseEntidad + " e WHERE e.id = :idEntidad") .setString("idEntidad", i.toString()) .executeUpdate(); return new Integer(entidadesBorradas); } }.execute(); if (entidadesBorradas.intValue() > 0) { MessageBox.showMessageBox( ubticket.getGUIScreen(), "Información", "Se ha(n) borrado " + entidadesBorradas + " entrada(s)."); actualizarTabla(); } else { MessageBox.showMessageBox( ubticket.getGUIScreen(), "Atención", "No se ha encontrado ninguna entidad con tal identificador."); } } catch (NumberFormatException ex) { MessageBox.showMessageBox( ubticket.getGUIScreen(), "Atención", "Identificador inválido."); } } } })); botonesPanel.addComponent( new Button( "CANCELAR", new Action() { @Override public void doAction() { ((Window) self).close(); } })); addComponent(botonesPanel); }