Ver Mensaje Individual
  #7 (permalink)  
Antiguo 28/11/2015, 16:07
maurikius1983
Usuario no validado
 
Fecha de Ingreso: abril-2012
Mensajes: 134
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Buena practiva Java swing

Hola la verdad que estoy reescribiendo la aplicación con el patrón dao, estoy separando la vista de la lógica:

Está ahora correcto como obtengo los datos??
Código:
private void initActionPanel() {

        JLabel lblSeller = new JLabel("Vendedor", SwingConstants.CENTER);
        JComboBox jcbSeller = new JComboBox();
        jcbSeller.removeAllItems();
        
        try {
            PersonDAOImpl personImplement = new PersonDAOImpl();

            for (Person per : personImplement.showPerson()) {
                String seller;
                seller = per.getRol();
                
                if(seller.equals("seller")){
                    jcbSeller.addItem(per.getName() + " " + per.getSurname1());
                }
            }

        } catch (Exception e) {
            System.err.println(e.getMessage());
        }

        JButton btnRegisterSale = new JButton("Resgistrar venta");
        JButton btnSalesHistory = new JButton("Historico de ventas");

        actionPanel = new JPanel();
        actionPanel.setLayout(new GridLayout(1, 4, 10, 10));
        actionPanel.add(lblSeller);
        actionPanel.add(jcbSeller);
        actionPanel.add(btnRegisterSale);
        actionPanel.add(btnSalesHistory);

    }
Ahora me surge una duda, tengo la interfaz con su clase de implementación donde tengo los métodos para insertar, eliminar, actualizar y listar. En el caso anterior para listar no tengo problemas, ya que con el if localizo los vendedores y muestro los datos, pero tengo un buscador y tengo que cambiar la consulta entera, ¿Es recomendable crear metodos en la clase persona?, o por el contrario creo otra interface y otra clase impl con los metos que necesito en el buscador.

La interfaz es esta
Código:
public interface PersonDAO {

    public void addPerson(Person person) throws SQLException;

    public void updatePerson(Person person) throws SQLException;

    public void removePerson(Person person) throws SQLException;

    public List<Person> showPerson() throws SQLException;

}
La implementacion es esta

Código:
public class PersonDAOImpl extends DBConnection implements PersonDAO {

    @Override
    public List<Person> showPerson() throws SQLException {

        List<Person> listPerson = null;
        try {
            this.connect();
            PreparedStatement st = this.link.prepareStatement("SELECT * FROM person");
            listPerson = new ArrayList();
            ResultSet rs = st.executeQuery();
            while (rs.next()) {
                Person person = new Person();
                person.setIdPerson(rs.getInt("id_person"));
                person.setRol(rs.getString("rol"));
                person.setName(rs.getString("name"));
                person.setSurname1(rs.getString("surname_1"));
                person.setSurname2(rs.getString("surname_2"));
                person.setEmail(rs.getString("email"));
                person.setDni(rs.getString("dni"));
                person.setPhoneNumber(rs.getInt("phone_number"));
                listPerson.add(person);
            }
            rs.close();
            st.close();

        } catch (Exception e) {
            throw e;
        } finally {
            this.disconnect();
        }

        return listPerson;
    }