agora eu queria fazer uma verificação com uma outra lista
nessa lista eu adiciono o id qunado o usuario seleciona um checkbox:
List<Pecas> pecasList = new ArrayList<>();
{
if (checkMonitor.isSelected()) {
Pecas p = new Pecas();
p.setIdpecas(1);
pecasList.add(p);
}
if (checkTeclado.isSelected()) {
Pecas p = new Pecas();
p.setIdpecas(2);
pecasList.add(p);
}
if (checkMouse.isSelected()) {
Pecas p = new Pecas();
p.setIdpecas(3);
pecasList.add(p);
}
if (checkVGA.isSelected()) {
Pecas p = new Pecas();
p.setIdpecas(4);
pecasList.add(p);
}
if (checkPlacaMae.isSelected()) {
Pecas p = new Pecas();
p.setIdpecas(5);
pecasList.add(p);
}
if (checkHD.isSelected()) {
Pecas p = new Pecas();
p.setIdpecas(6);
pecasList.add(p);
}
if (checkFonte.isSelected()) {
Pecas p = new Pecas();
p.setIdpecas(7);
pecasList.add(p);
}
if (checkRam.isSelected()) {
Pecas p = new Pecas();
p.setIdpecas(8);
pecasList.add(p);
}
if (checkCabos.isSelected()) {
Pecas p = new Pecas();
p.setIdpecas(9);
pecasList.add(p);
}
if (checkGravador.isSelected()) {
Pecas p = new Pecas();
p.setIdpecas(10);
pecasList.add(p);
}
if (checkBateria.isSelected()) {
Pecas p = new Pecas();
p.setIdpecas(11);
pecasList.add(p);
}
}
eu queria percorrer essas duas listas
para fazer uma verificação
pegar o id do checkbox selecionado
comparar com o id da lista do banco de dados e pegar a quantidade de estoque
PecasDAO pecasDAO = new PecasDAO();
for (Pecas pecasVerificacao : pecasList) {
for (Pecas pecasBanco : pecasDAO.pegarPecas()) {
}
}
Geralmente, você nao seleciona tudo que está no banco para depois comparar com as opçoes que o usuário selecionou. Vou passar um pseudo código aqui de uma sugestao como seu método seria organizado:
//primeiro passo, quando criar seus checkbox (to aqui assumindo que é JCheckBox), você coloca o id em cada componente:
JCheckBox checkMonitor = new JCheckBox();
checkMonitor.putClientProperty("id", 1);
JCheckBox checkTeclado = new JCheckBox();
checkMonitor.putClientProperty("id", 2);
//outros
// segundo passo: ver o que foi selecionado
List<Integer> idsSelecionados = Stream.of(checkMonitor, checkTeclado /*, outros */ )
.stream().map(check -> (int) check.getClientProperty("id") )
.collect(Collectors.toList())
// terceiro, seu método no dao recebe a lista de ids selecionados e só vai buscar no banco o que for necessário:
public List<Pecas> pegarPecas(List<Integer> ids) {
// usa a lista de ids pra criar um where no select
}
Entao, com a correçao que coloquei depois, você primeiro filtra quem tá selecionado e depois pega o id deles…a lista teria apenas os valores selecionados.
Eu consegui pegar os dados que eu queria com esse codigo:
List<Pecas> pecasList2 = new ArrayList<>();{
for (Pecas pecasVerificacao : pecasList) {
pecasVerificacao.getIdpecas();
for (Pecas pecasBanco : pecasDAO.pegarPecas()) {
if(pecasBanco.getIdpecas() == pecasVerificacao.getIdpecas()){
pecasVerificacao.setQtd_Pecas(pecasBanco.getQtd_Pecas());
pecasVerificacao.getIdpecas();
pecasList2.add(pecasVerificacao);
}
}
}
}
eu guardo o id e quantidade de cada checkbox selecionado em uma lista
agr só tou com dificuldade como eu faria para fazer um if
se determinada peça da lista tiver quantidade > 0 chamar um metdoo
se não aparecer um alert