Borrar personas con manytomnay relationships

This commit is contained in:
Daniel Cortés
2019-06-15 00:30:32 -04:00
parent acc9ae66ae
commit 7d5dea7d03
5 changed files with 58 additions and 1 deletions

View File

@@ -9,6 +9,9 @@ import xyz.danielcortes.framework.BaseTableModel;
import xyz.danielcortes.framework.PanelName; import xyz.danielcortes.framework.PanelName;
import xyz.danielcortes.models.Cliente; import xyz.danielcortes.models.Cliente;
import xyz.danielcortes.repository.ClienteRespository; import xyz.danielcortes.repository.ClienteRespository;
import xyz.danielcortes.repository.CorreoRepository;
import xyz.danielcortes.repository.DireccionRepository;
import xyz.danielcortes.repository.TelefonoRepository;
import xyz.danielcortes.validator.ClienteValidator; import xyz.danielcortes.validator.ClienteValidator;
import xyz.danielcortes.views.cliente.ClienteSearchPanel; import xyz.danielcortes.views.cliente.ClienteSearchPanel;
@@ -17,12 +20,19 @@ public class ClienteSearchController extends BaseController {
private ClienteSearchPanel view; private ClienteSearchPanel view;
private ClienteRespository clienteRespository; private ClienteRespository clienteRespository;
private ClienteValidator clienteValidator; private ClienteValidator clienteValidator;
private CorreoRepository correoRepository;
private DireccionRepository direccionRepository;
private TelefonoRepository telefonoRepository;
public ClienteSearchController(ClienteSearchPanel view, LaunchController parent) { public ClienteSearchController(ClienteSearchPanel view, LaunchController parent) {
super(parent); super(parent);
this.view = view; this.view = view;
this.clienteRespository = new ClienteRespository(); this.clienteRespository = new ClienteRespository();
this.clienteValidator = new ClienteValidator(this.clienteRespository); this.clienteValidator = new ClienteValidator(this.clienteRespository);
this.correoRepository = new CorreoRepository();
this.direccionRepository = new DireccionRepository();
this.telefonoRepository = new TelefonoRepository();
this.setupListeners(); this.setupListeners();
} }
@@ -70,6 +80,9 @@ public class ClienteSearchController extends BaseController {
if (option == JOptionPane.NO_OPTION) if (option == JOptionPane.NO_OPTION)
return; return;
this.correoRepository.delete(cliente.getCorreos());
this.direccionRepository.delete(cliente.getDirecciones());
this.telefonoRepository.delete(cliente.getTelefonos());
this.clienteRespository.delete(cliente); this.clienteRespository.delete(cliente);
this.reload(); this.reload();
} }

View File

@@ -34,7 +34,7 @@ public class ClienteViewController extends BaseController {
private void setupListeners() { private void setupListeners() {
this.view.getVolverButton().addActionListener(e -> this.getParentController().showCard(PanelName.CLIENTE_SEARCH)); this.view.getVolverButton().addActionListener(e -> this.getParentController().showCard(PanelName.CLIENTE_SEARCH));
this.view.getCorreosButton().addActionListener(e -> this.gotoCorreosView()); this.view.getCorreosButton().addActionListener(e -> this.gotoCorreosView());
// this.view.getTelefonosButton().addActionListener(e -> this.gotoTelefonoView()); this.view.getTelefonosButton().addActionListener(e -> this.gotoTelefonoView());
this.view.getDireccionesButton().addActionListener(e -> this.gotoDireccionView()); this.view.getDireccionesButton().addActionListener(e -> this.gotoDireccionView());
} }

View File

@@ -8,7 +8,10 @@ import xyz.danielcortes.framework.BasePanel;
import xyz.danielcortes.framework.BaseTableModel; import xyz.danielcortes.framework.BaseTableModel;
import xyz.danielcortes.framework.PanelName; import xyz.danielcortes.framework.PanelName;
import xyz.danielcortes.models.Distribuidor; import xyz.danielcortes.models.Distribuidor;
import xyz.danielcortes.repository.CorreoRepository;
import xyz.danielcortes.repository.DireccionRepository;
import xyz.danielcortes.repository.DistribuidorRepository; import xyz.danielcortes.repository.DistribuidorRepository;
import xyz.danielcortes.repository.TelefonoRepository;
import xyz.danielcortes.validator.DistribuidorValidator; import xyz.danielcortes.validator.DistribuidorValidator;
import xyz.danielcortes.views.distribuidor.DistribuidorSearchPanel; import xyz.danielcortes.views.distribuidor.DistribuidorSearchPanel;
@@ -18,11 +21,19 @@ public class DistribuidorSearchController extends BaseController {
private DistribuidorRepository distribuidorRepository; private DistribuidorRepository distribuidorRepository;
private DistribuidorValidator distribuidorValidator; private DistribuidorValidator distribuidorValidator;
private CorreoRepository correoRepository;
private DireccionRepository direccionRepository;
private TelefonoRepository telefonoRepository;
public DistribuidorSearchController(DistribuidorSearchPanel view, LaunchController parent) { public DistribuidorSearchController(DistribuidorSearchPanel view, LaunchController parent) {
super(parent); super(parent);
this.view = view; this.view = view;
this.distribuidorRepository = new DistribuidorRepository(); this.distribuidorRepository = new DistribuidorRepository();
this.distribuidorValidator = new DistribuidorValidator(this.distribuidorRepository); this.distribuidorValidator = new DistribuidorValidator(this.distribuidorRepository);
this.telefonoRepository = new TelefonoRepository();
this.direccionRepository = new DireccionRepository();
this.correoRepository = new CorreoRepository();
this.setupListeners(); this.setupListeners();
} }
@@ -70,6 +81,9 @@ public class DistribuidorSearchController extends BaseController {
if (option == JOptionPane.NO_OPTION) if (option == JOptionPane.NO_OPTION)
return; return;
this.correoRepository.delete(distribuidor.getCorreos());
this.direccionRepository.delete(distribuidor.getDirecciones());
this.telefonoRepository.delete(distribuidor.getTelefonos());
this.distribuidorRepository.delete(distribuidor); this.distribuidorRepository.delete(distribuidor);
this.reload(); this.reload();
} }

View File

@@ -8,6 +8,9 @@ import xyz.danielcortes.framework.BasePanel;
import xyz.danielcortes.framework.BaseTableModel; import xyz.danielcortes.framework.BaseTableModel;
import xyz.danielcortes.framework.PanelName; import xyz.danielcortes.framework.PanelName;
import xyz.danielcortes.models.Trabajador; import xyz.danielcortes.models.Trabajador;
import xyz.danielcortes.repository.CorreoRepository;
import xyz.danielcortes.repository.DireccionRepository;
import xyz.danielcortes.repository.TelefonoRepository;
import xyz.danielcortes.repository.TrabajadorRespository; import xyz.danielcortes.repository.TrabajadorRespository;
import xyz.danielcortes.repository.UsuarioRepository; import xyz.danielcortes.repository.UsuarioRepository;
import xyz.danielcortes.validator.TrabajadorValidator; import xyz.danielcortes.validator.TrabajadorValidator;
@@ -22,6 +25,10 @@ public class TrabajadorSearchController extends BaseController {
private TrabajadorValidator trabajadorValidator; private TrabajadorValidator trabajadorValidator;
private UsuarioValidator usuarioValidator; private UsuarioValidator usuarioValidator;
private CorreoRepository correoRepository;
private TelefonoRepository telefonoRepository;
private DireccionRepository direccionRepository;
public TrabajadorSearchController(TrabajadorSearchPanel view, LaunchController parent) { public TrabajadorSearchController(TrabajadorSearchPanel view, LaunchController parent) {
super(parent); super(parent);
this.view = view; this.view = view;
@@ -29,6 +36,10 @@ public class TrabajadorSearchController extends BaseController {
this.usuarioRepository = new UsuarioRepository(); this.usuarioRepository = new UsuarioRepository();
this.trabajadorValidator = new TrabajadorValidator(this.trabajadorRespository); this.trabajadorValidator = new TrabajadorValidator(this.trabajadorRespository);
this.usuarioValidator = new UsuarioValidator(this.usuarioRepository); this.usuarioValidator = new UsuarioValidator(this.usuarioRepository);
this.correoRepository = new CorreoRepository();
this.telefonoRepository = new TelefonoRepository();
this.direccionRepository = new DireccionRepository();
this.setupListeners(); this.setupListeners();
} }
@@ -76,6 +87,9 @@ public class TrabajadorSearchController extends BaseController {
if (option == JOptionPane.NO_OPTION) if (option == JOptionPane.NO_OPTION)
return; return;
this.direccionRepository.delete(trabajador.getDirecciones());
this.telefonoRepository.delete(trabajador.getTelefonos());
this.correoRepository.delete(trabajador.getCorreos());
this.trabajadorRespository.delete(trabajador); this.trabajadorRespository.delete(trabajador);
this.reload(); this.reload();
} }

View File

@@ -1,5 +1,6 @@
package xyz.danielcortes.framework; package xyz.danielcortes.framework;
import java.util.List;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import javax.persistence.PersistenceException; import javax.persistence.PersistenceException;
@@ -49,4 +50,19 @@ public abstract class BaseRepository<E> {
this.em.getTransaction().commit(); this.em.getTransaction().commit();
} }
public void delete(List<E> entities) {
this.em.getTransaction().begin();
try {
for (E e : entities) {
this.em.remove(e);
}
} catch (PersistenceException e) {
e.printStackTrace();
this.em.getTransaction().rollback();
}
this.em.getTransaction().commit();
}
} }