Ejemplo n.º 1
0
 public void edit(Comprobante comprobante) throws NonexistentEntityException, Exception {
   EntityManager em = null;
   try {
     em = getEntityManager();
     em.getTransaction().begin();
     Comprobante persistentComprobante =
         em.find(Comprobante.class, comprobante.getIdComprobante());
     Operador administrativoResponsableOld = persistentComprobante.getAdministrativoResponsable();
     Operador administrativoResponsableNew = comprobante.getAdministrativoResponsable();
     Clase claseLicenciaOld = persistentComprobante.getClaseLicencia();
     Clase claseLicenciaNew = comprobante.getClaseLicencia();
     Titular titularOld = persistentComprobante.getTitular();
     Titular titularNew = comprobante.getTitular();
     if (administrativoResponsableNew != null) {
       administrativoResponsableNew =
           em.getReference(
               administrativoResponsableNew.getClass(),
               administrativoResponsableNew.getIdOperador());
       comprobante.setAdministrativoResponsable(administrativoResponsableNew);
     }
     if (claseLicenciaNew != null) {
       claseLicenciaNew =
           em.getReference(claseLicenciaNew.getClass(), claseLicenciaNew.getIdClase());
       comprobante.setClaseLicencia(claseLicenciaNew);
     }
     if (titularNew != null) {
       titularNew = em.getReference(titularNew.getClass(), titularNew.getIdTitular());
       comprobante.setTitular(titularNew);
     }
     comprobante = em.merge(comprobante);
     if (administrativoResponsableOld != null
         && !administrativoResponsableOld.equals(administrativoResponsableNew)) {
       administrativoResponsableOld.getComprobanteCollection().remove(comprobante);
       administrativoResponsableOld = em.merge(administrativoResponsableOld);
     }
     if (administrativoResponsableNew != null
         && !administrativoResponsableNew.equals(administrativoResponsableOld)) {
       administrativoResponsableNew.getComprobanteCollection().add(comprobante);
       administrativoResponsableNew = em.merge(administrativoResponsableNew);
     }
     if (claseLicenciaOld != null && !claseLicenciaOld.equals(claseLicenciaNew)) {
       claseLicenciaOld.getComprobanteCollection().remove(comprobante);
       claseLicenciaOld = em.merge(claseLicenciaOld);
     }
     if (claseLicenciaNew != null && !claseLicenciaNew.equals(claseLicenciaOld)) {
       claseLicenciaNew.getComprobanteCollection().add(comprobante);
       claseLicenciaNew = em.merge(claseLicenciaNew);
     }
     if (titularOld != null && !titularOld.equals(titularNew)) {
       titularOld.getComprobanteCollection().remove(comprobante);
       titularOld = em.merge(titularOld);
     }
     if (titularNew != null && !titularNew.equals(titularOld)) {
       titularNew.getComprobanteCollection().add(comprobante);
       titularNew = em.merge(titularNew);
     }
     em.getTransaction().commit();
   } catch (Exception ex) {
     String msg = ex.getLocalizedMessage();
     if (msg == null || msg.length() == 0) {
       Integer id = comprobante.getIdComprobante();
       if (findComprobante(id) == null) {
         throw new NonexistentEntityException(
             "The comprobante with id " + id + " no longer exists.");
       }
     }
     throw ex;
   } finally {
     if (em != null) {
       em.close();
     }
   }
 }