/**
  * modificar un cliente
  *
  * <p>Devuelve el cliente que se va a modificar
  *
  * <p>Si el cliente pasado es null, intenta crear un nuevo cliente
  */
 public Cliente editCliente(Cliente cliente, Component parent) {
   Assert.notNull(dataService);
   Cliente eCliente = cliente;
   if (eCliente == null) {
     eCliente = new Cliente();
     String s = getMessage("ui.ClienteUIService.DefaultName", null, "New customer");
     eCliente.setNombre(s);
   }
   boolean error = false;
   Throwable excep = null;
   if (eCliente.getId() != null) {
     try {
       eCliente = dataService.getById(eCliente.getId());
     } catch (DataAccessException e) {
       excep = e;
       error = true;
     } catch (Throwable t) {
       excep = t;
       error = true;
     }
     if (error) {
       logger.error("Error retrieving customer from persistence service", excep);
       String t =
           getMessage(
               "ui.ClienteUIService.ErrorLoadClienteTitle", null, "Error retrieving customer");
       String m =
           getMessage(
               "ui.ClienteUIService.ErrorLoadClienteMessage",
               null,
               "Error retrieving customer data");
       ErrorInfo err = new ErrorInfo(t, m, excep.getMessage(), null, excep, null, null);
       JXErrorPane.showDialog(parent == null ? getParentWindow() : parent, err);
       return null;
     }
     // Si el cliente es null, no se ha encontrado
     // Podría haber sido borrado
     if (eCliente == null) {
       logger.error("Error retrieving customer from persistence service. Not found.");
       String t =
           getMessage(
               "ui.ClienteUIService.ErrorNotExistClienteTitle", null, "Error retrieving customer");
       String m =
           getMessage(
               "ui.ClienteUIService.ErrorNotExistClienteMessage",
               null,
               "Customer not found. Please, refresh data");
       ErrorInfo err = new ErrorInfo(t, m, m, null, null, null, null);
       JXErrorPane.showDialog(getParentWindow(), err);
       return null;
     }
   }
   ClienteEditDialog dialog =
       new ClienteEditDialog(parent == null ? getParentWindow() : parent, eCliente, this);
   dialog.setDataService(dataService);
   dialog.setModalityType(ModalityType.MODELESS);
   dialog.pack();
   dialog.setLocationRelativeTo(dialog.getOwner());
   dialog.setVisible(true);
   return eCliente;
 }
 /**
  * Busca un elemento en la table y devuelve el indice en el modelo Devuelve -1 si no se encuetra.
  *
  * @param table
  * @param item
  * @return
  */
 protected int getModelIndexForItem(Cliente item) {
   if (listModel != null) {
     List<Cliente> lista = listModel.getDataList();
     for (int i = 0; i < lista.size(); i++)
       if (lista.get(i).getId().equals(item.getId())) return i;
   }
   return -1;
 }