How to add two tables in the same Arraylist

1

HowdoIaddtwotablesinthesameArrayList?

Mycode:{

publicArrayListSQLConsultagetTodos_Completo(){Stringauxtexto=edtCodigoMovimento.getText();intcodigomovimento=Integer.parseInt(auxtexto);//JOptionPane.showMessageDialog(null,"Codigo Movimento passado: "+auxcodigomovimento);
    String SQLConsulta_itens_dav="select itens_orc_simples.* from itens_orc_simples" +
    "inner join produto_simples on produto_simples.cd_ref=itens_orc_simples.cd_refer_pro" +
    "where itens_orc_simples.cd_movimento=?";       

    ArrayList listaitens = new ArrayList();
    Connection conn = null;
    PreparedStatement pstmt = null;
    ResultSet rs = null;
    try {
        conn = Conexao.getConexao();
        pstmt = conn.prepareStatement(SQLConsulta_itens_dav);
        pstmt.setInt(1,codigomovimento);
        rs = pstmt.executeQuery();
        while (rs.next()) {
            int auxquantidade=rs.getInt("qt_ite_pro");
            Double auxpreco=rs.getDouble("vl_ven_ite_pro");
            Double auxvl_custo=rs.getDouble("vl_cus_ite_pro");
            int auxcd_ref = rs.getInt("CD_REFER_PRO");
            int auxcd_usuario = rs.getInt("cd_usuario");
            int auxcd_filial = rs.getInt("cd_filial");
            int auxcd_seq_ite_pro = rs.getInt("cd_seq_ite_pro");

            VendaProdutoClassse  venpro= new VendaProdutoClassse(
                    auxquantidade,
                    auxpreco,
                    auxcd_ref,
                    auxcd_filial,
                    codigomovimento,
                    auxcd_seq_ite_pro,
                    auxcd_usuario,
                    auxvl_custo                       
            );
            listaitens.add(venpro);
         }
    } catch (SQLException erro) {
        JOptionPane.showMessageDialog(null, "Erro no sql, SQLConsultagetTodos_Completo:\n"
                 + erro.getMessage());
    } finally {
        Conexao.closeAll(conn);            
    }
    return listaitens;
}

I have another method that calls this method and loads it on the screen:

public void ListaItensCompleto() {
    DefaultTableModel modelo = new DefaultTableModel();
    modelo.addColumn("Codigo");
    modelo.addColumn("Nome");
    modelo.addColumn("Quantidade");        
    modelo.addColumn("Preco");
    ArrayList<VendaProdutoClassse> itens = SQLConsultagetTodos_Completo();

    for (VendaProdutoClassse auxitens : itens) {
        modelo.addRow(new Object[]{
            auxitens.getProduto(),
            auxitens.getQuantidade(),
            auxitens.getPreco()
        });
    }
    TabelaProdutos.setModel(modelo);
}

How do I add more of this product table to the same arrayList above?

public ArrayList getTodos() {
    ArrayList listaProduto = new ArrayList();
    Connection conn = null;
    Statement stmt = null;
    ResultSet rs = null;
    try {
        conn = Conexao.getConexao();
        stmt = conn.createStatement();
        rs = stmt.executeQuery(sqlTodos);
        //OBSERVE MUITO IMPORTANTE!!!!!
        //NAO DEIXAR ESPAÇOS,POIS DA ERROS DEPOIS!!!!
        while (rs.next()) {
            //Campos Inteiros
            //NÃO DEIXAR ESPAÇOS!!!!!!
            int CD_PROD = rs.getInt("CD_PROD");
            String DS_PROD = rs.getString("DS_PROD");
            int CD_GRUPO = rs.getInt("CD_GRUPO");
            int CD_SUB_GRUPO = rs.getInt("CD_SUB_GRUPO");
            int FG_ATIVO = rs.getInt("FG_ATIVO");
            int CD_COR = rs.getInt("CD_COR");
            String CD_FABRICA = rs.getString("CD_FABRICA");
            int CD_MARCA = rs.getInt("CD_MARCA");
            int CD_GP_FISCAL = rs.getInt("CD_GP_FISCAL");
            int CD_NCM_SH = rs.getInt("CD_NCM_SH");
            int CD_REF = rs.getInt("CD_REF");

            //Campos String
            //NÃO DEIXAR ESPAÇOS!!!!!!
            Produto_Simples produto = new Produto_Simples(
                    CD_PROD,
                    CD_GRUPO,
                    CD_SUB_GRUPO,
                    FG_ATIVO,
                    CD_COR,
                    CD_FABRICA,
                    CD_MARCA,
                    CD_GP_FISCAL,
                    CD_NCM_SH,
                    CD_REF,
                    DS_PROD);
            listaProduto.add(produto);
        }
    } catch (SQLException erro) {
        JOptionPane.showMessageDialog(null, "Erro no sql, getTodos(): \n" + erro.getMessage());
    } finally {
        Conexao.closeAll(conn);
        return listaProduto;
    }
}

}

As the image shows what I need and the product name is loaded on the screen.

When I write on this screen the items is passed as records the data below:     -Product Code (auxitens.getProduct (),     -Quantity of Product (auxitens.getQuantity (),     -Price of Product (auxitens.getPreco ()

Estes dados são gravado numa tabela de nome itens_orc_simples ->Que sao os itens do pedido

E o nome do produto deve ser carregado com o codigo do produto e deve ser buscado
da classe:
Produto_Simples

When it is loaded on the screen comes that Full ListItem Method ()

Below Class Product_Simples:

public class Produto_Simples {
int CD_PROD,
    CD_GRUPO,
    CD_SUB_GRUPO,
    FG_ATIVO,
    CD_COR,
    CD_MARCA,
    CD_GP_FISCAL,
    CD_NCM_SH,
    CD_REF;
String DS_PROD, CD_FABRICA;

public Produto_Simples(int CD_PROD, int CD_GRUPO, int CD_SUB_GRUPO, int FG_ATIVO, int CD_COR, String CD_FABRICA, int CD_MARCA, int CD_GP_FISCAL, int CD_NCM_SH, int CD_REF, String DS_PROD) {
    this.CD_PROD = CD_PROD;
    this.CD_GRUPO = CD_GRUPO;
    this.CD_SUB_GRUPO = CD_SUB_GRUPO;
    this.FG_ATIVO = FG_ATIVO;
    this.CD_COR = CD_COR;
    this.CD_FABRICA = CD_FABRICA;
    this.CD_MARCA = CD_MARCA;
    this.CD_GP_FISCAL = CD_GP_FISCAL;
    this.CD_NCM_SH = CD_NCM_SH;
    this.CD_REF = CD_REF;
    this.DS_PROD = DS_PROD;
}

public int getCD_PROD() {
    return CD_PROD;
}

public void setCD_PROD(int CD_PROD) {
    this.CD_PROD = CD_PROD;
}

public int getCD_GRUPO() {
    return CD_GRUPO;
}

public void setCD_GRUPO(int CD_GRUPO) {
    this.CD_GRUPO = CD_GRUPO;
}

public int getCD_SUB_GRUPO() {
    return CD_SUB_GRUPO;
}

public void setCD_SUB_GRUPO(int CD_SUB_GRUPO) {
    this.CD_SUB_GRUPO = CD_SUB_GRUPO;
}

public int getFG_ATIVO() {
    return FG_ATIVO;
}

public void setFG_ATIVO(int FG_ATIVO) {
    this.FG_ATIVO = FG_ATIVO;
}

public int getCD_COR() {
    return CD_COR;
}

public void setCD_COR(int CD_COR) {
    this.CD_COR = CD_COR;
}

public String getCD_FABRICA() {
    return CD_FABRICA;
}

public void setCD_FABRICA(String CD_FABRICA) {
    this.CD_FABRICA = CD_FABRICA;
}

public int getCD_MARCA() {
    return CD_MARCA;
}

public void setCD_MARCA(int CD_MARCA) {
    this.CD_MARCA = CD_MARCA;
}

public int getCD_GP_FISCAL() {
    return CD_GP_FISCAL;
}

public void setCD_GP_FISCAL(int CD_GP_FISCAL) {
    this.CD_GP_FISCAL = CD_GP_FISCAL;
}

public int getCD_NCM_SH() {
    return CD_NCM_SH;
}

public void setCD_NCM_SH(int CD_NCM_SH) {
    this.CD_NCM_SH = CD_NCM_SH;
}

public int getCD_REF() {
    return CD_REF;
}

public void setCD_REF(int CD_REF) {
    this.CD_REF = CD_REF;
}

public String getDS_PROD() {
    return DS_PROD;
}

public void setDS_PROD(String DS_PROD) {
    this.DS_PROD = DS_PROD;
}

}

}

    
asked by anonymous 24.04.2014 / 23:13

2 answers

3

For you to add all the ArrayList elements of a one-time return method to an existing ArrayList, use the addAll() method. Example:

import java.util.*;
public class Teste {
    public static void main(String[] args) {
        List lista = new ArrayList();
        lista.add("um");
        lista.add("dois");
        lista.addAll(maisLista());//adiciona todos os elementos no ArrayList já existente
        System.out.println(lista);
    }
    public static List maisLista() {
        List outraLista = new ArrayList();
        outraLista.add("tres");
        outraLista.add("quatro");
        return outraLista;
    }
}

I created the above example to illustrate, since I do not know which class that calls its getTodos() method that returns the ArrayList that you want to group in your first ArrayList.

Reference: ArrayList - Java SE7

    
25.04.2014 / 00:09
0

Solved by myself this way:

public void ListaItensCompleto() {
    DefaultTableModel modelo = new DefaultTableModel();
    modelo.addColumn("Codigo");
    modelo.addColumn("Nome");
    modelo.addColumn("Quantidade");
    modelo.addColumn("Preco");
    habilitaCampos(true);
    int aux_sequencia = 1;//Pega a sequencia
    int aux_contador = 1;   //Pega a sequencia do item
    int aux_movimento = Integer.parseInt(edtCodigoMovimento.getText());

    ArrayList<ProdutoSimples> produtosimples = SQLCarregaNomeItens();

    VendaProdutoDB venprodb = new VendaProdutoDB();
    //aqui verifica se existe item desta venda
    if (venprodb.getProdutoDaVenda(aux_movimento, aux_sequencia)) {
        aux_sequencia = 0;
        for (ProdutoSimples auxprodutosimples : produtosimples) {
            modelo.addRow(new Object[]{
                auxprodutosimples.getCd_ref(),
                auxprodutosimples.getDs_prod()
            });
            TabelaProdutos.setModel(modelo);
            //Programacao do valor e quantidade
            Connection conn = null;
            PreparedStatement pstmt = null;
            ResultSet rs = null;
            for (int x = aux_sequencia; x < TabelaProdutos.getRowCount(); x++) {
                try {
                    conn = Conexao.getConexao();
                    pstmt = conn.prepareStatement(sqlBuscaQuantidadeEPreco);
                    pstmt.setInt(1, aux_movimento);
                    pstmt.setInt(2, aux_contador);
                    rs = pstmt.executeQuery();
                    while (rs.next()) {
                        int aux_quantidade = rs.getInt("QT_ITE_PRO");
                        double aux_preco = rs.getDouble("VL_VEN_ITE_PRO");
                        TabelaProdutos.getModel().setValueAt(aux_quantidade, x, 2);
                        TabelaProdutos.getModel().setValueAt(aux_preco, x, 3);
                    }
                } catch (SQLException erro) {
                    JOptionPane.showMessageDialog(null, "Erro no sql, Nome Produto Itens:\n" + erro.getMessage());
                } finally {
                    Conexao.closeAll(conn);
                }
            }
            aux_sequencia++;//Incrementa a sequencia
            aux_contador++; //Incrementa a sequencia do banco de dados               
        }
    } else {
        JOptionPane.showMessageDialog(null, "Não existe itens nesta venda!");
        edtCodigoProduto.requestFocus();
    }
}

Where the method sellsProductDeliveryProduct (help_movement, help_processed) search the data of the sale in relation to this item, having as parameters the sales movement code and the primary key of the item that is the field sequence.

Below is the schedule of the vendprodb.getProductoDaVenda method (help_movement, help_sequence)

public boolean getProdutoDaVenda(int cd_movimento, int aux_sequencia) {
    boolean existe = false;
    Connection conn = null;
    PreparedStatement pstmt = null;
    ResultSet rs = null;
    try {
        conn = Conexao.getConexao();
        pstmt = conn.prepareStatement(sqlConsultaProdutodaVenda);
        pstmt.setInt(1, cd_movimento);
        pstmt.setInt(2, aux_sequencia);
        rs = pstmt.executeQuery();
        while (rs.next()) {
            existe = rs.getInt("CD_SEQ_ITE_PRO") > 0;
        }
    } catch (SQLException e) {
        JOptionPane.showMessageDialog(null, "Erro de SQL. getProdutoDaVenda(): \n" + e.getMessage());
    } finally {
        Conexao.closeAll(conn);
    }
    return existe;
}

SQL sqlProductProperty is:

private static final String sqlConsultaProdutodaVenda
        = "SELECT                             "
        + "ITENS_ORC_SIMPLES.cd_movimento,    "
        + "ITENS_ORC_SIMPLES.CD_SEQ_ITE_PRO   "
        + "FROM                               "
        + "    ITENS_ORC_SIMPLES              "
        + "WHERE                              "
        + "ITENS_ORC_SIMPLES.cd_movimento=?   "
        + "AND                                "
        + "ITENS_ORC_SIMPLES.CD_SEQ_ITE_PRO=? "
        + "ORDER BY 2;                        ";

Summarizing:
If the return is true in the getProductDataSource method, I pass the product data through this method:
ArrayList productsimples = SQLCarregaNameName ();
Where SQLCarregaNameName ();
looks like this:

public ArrayList SQLCarregaNomeItens() {
    String auxtexto = edtCodigoMovimento.getText();
    int codigomovimento = Integer.parseInt(auxtexto);
    String SQLConsulta_itens_dav =
            "  select                                                           "
            + "     produto_simples.*                                           "
            + "from                                                             "
            + "     itens_orc_simples                                           "
            + "     left outer join produto_simples                         "
            + "     on produto_simples.cd_ref=itens_orc_simples.cd_refer_pro    "
            + " where                                                           "
            + "     itens_orc_simples.cd_movimento=?                            ";

    ArrayList listaProduto = new ArrayList();

    Connection conn = null;
    PreparedStatement pstmt = null;
    ResultSet rs = null;
    try {
        conn = Conexao.getConexao();
        pstmt = conn.prepareStatement(SQLConsulta_itens_dav);
        pstmt.setInt(1, codigomovimento);
        rs = pstmt.executeQuery();
        while (rs.next()) {
            int CD_PROD = rs.getInt("CD_PROD");
            String DS_PROD = rs.getString("DS_PROD");
            int CD_GRUPO = rs.getInt("CD_GRUPO");
            int CD_SUB_GRUPO = rs.getInt("CD_SUB_GRUPO");
            int FG_ATIVO = rs.getInt("FG_ATIVO");
            int CD_COR = rs.getInt("CD_COR");
            String CD_FABRICA = rs.getString("CD_FABRICA");
            int CD_MARCA = rs.getInt("CD_MARCA");
            int CD_GP_FISCAL = rs.getInt("CD_GP_FISCAL");
            String CD_NCM_SH = rs.getString("CD_NCM_SH");
            int CD_REF = rs.getInt("CD_REF");
            int cd_usuario = rs.getInt("cd_usuario");
            int cd_filial = rs.getInt("cd_filial");
            int cd_unidade_medida = rs.getInt("cd_unidade_medida");
            int qt_estoque = rs.getInt("qt_estoque");
            int tx_ipi = rs.getInt("tx_ipi");
            int tx_iss = rs.getInt("tx_iss");

            ProdutoSimples produto = new ProdutoSimples(
                    CD_PROD,
                    DS_PROD,
                    CD_GRUPO,
                    CD_SUB_GRUPO,
                    FG_ATIVO,
                    CD_COR,
                    CD_FABRICA,
                    CD_MARCA,
                    CD_GP_FISCAL,
                    CD_NCM_SH,
                    CD_REF,
                    cd_usuario,
                    cd_filial,
                    cd_unidade_medida,
                    qt_estoque,
                    tx_ipi,
                    tx_iss
            );
            listaProduto.add(produto);
        }
    } catch (SQLException erro) {
        JOptionPane.showMessageDialog(null, "Erro no sql,  SQLConsultagetTodos_Completo_NomeProduto(): \n" + erro.getMessage());
    } finally {
        Conexao.closeAll(conn);
    }
    return listaProduto;
}

Of course I could have created one more class and manage all the data direct it by using a for for objects with all product and sale data, but this would be another file for system maintenance.

It may also be that it has another "easier" way to do it, but in my case What solves the problem is this. So I have only 2 classes for each table in the database, being:
    SimpleProduct Table has the SimpleProduct and SimpleProductDB class     Simple_Object_Type has the class Simple_Object_Types and Simple_Object_Type.

Thanks to everyone who tried to help me.
I hope I have helped other people as well.

    
18.02.2015 / 00:19