public void create(Empleado empleado) throws PreexistingEntityException, Exception { if (empleado.getGastosCollection() == null) { empleado.setGastosCollection(new ArrayList<Gastos>()); } if (empleado.getUsuarioCollection() == null) { empleado.setUsuarioCollection(new ArrayList<Usuario>()); } if (empleado.getRegistroFaltaCollection() == null) { empleado.setRegistroFaltaCollection(new ArrayList<RegistroFalta>()); } EntityManager em = null; try { em = getEntityManager(); em.getTransaction().begin(); Turno turCod = empleado.getTurCod(); if (turCod != null) { turCod = em.getReference(turCod.getClass(), turCod.getTurCod()); empleado.setTurCod(turCod); } Cargo carCod = empleado.getCarCod(); if (carCod != null) { carCod = em.getReference(carCod.getClass(), carCod.getCarCod()); empleado.setCarCod(carCod); } Collection<Gastos> attachedGastosCollection = new ArrayList<Gastos>(); for (Gastos gastosCollectionGastosToAttach : empleado.getGastosCollection()) { gastosCollectionGastosToAttach = em.getReference( gastosCollectionGastosToAttach.getClass(), gastosCollectionGastosToAttach.getGasCod()); attachedGastosCollection.add(gastosCollectionGastosToAttach); } empleado.setGastosCollection(attachedGastosCollection); Collection<Usuario> attachedUsuarioCollection = new ArrayList<Usuario>(); for (Usuario usuarioCollectionUsuarioToAttach : empleado.getUsuarioCollection()) { usuarioCollectionUsuarioToAttach = em.getReference( usuarioCollectionUsuarioToAttach.getClass(), usuarioCollectionUsuarioToAttach.getUsuCod()); attachedUsuarioCollection.add(usuarioCollectionUsuarioToAttach); } empleado.setUsuarioCollection(attachedUsuarioCollection); Collection<RegistroFalta> attachedRegistroFaltaCollection = new ArrayList<RegistroFalta>(); for (RegistroFalta registroFaltaCollectionRegistroFaltaToAttach : empleado.getRegistroFaltaCollection()) { registroFaltaCollectionRegistroFaltaToAttach = em.getReference( registroFaltaCollectionRegistroFaltaToAttach.getClass(), registroFaltaCollectionRegistroFaltaToAttach.getRegFaltaCod()); attachedRegistroFaltaCollection.add(registroFaltaCollectionRegistroFaltaToAttach); } empleado.setRegistroFaltaCollection(attachedRegistroFaltaCollection); em.persist(empleado); if (turCod != null) { turCod.getEmpleadoCollection().add(empleado); turCod = em.merge(turCod); } if (carCod != null) { carCod.getEmpleadoCollection().add(empleado); carCod = em.merge(carCod); } for (Gastos gastosCollectionGastos : empleado.getGastosCollection()) { Empleado oldEmpDniOfGastosCollectionGastos = gastosCollectionGastos.getEmpDni(); gastosCollectionGastos.setEmpDni(empleado); gastosCollectionGastos = em.merge(gastosCollectionGastos); if (oldEmpDniOfGastosCollectionGastos != null) { oldEmpDniOfGastosCollectionGastos.getGastosCollection().remove(gastosCollectionGastos); oldEmpDniOfGastosCollectionGastos = em.merge(oldEmpDniOfGastosCollectionGastos); } } for (Usuario usuarioCollectionUsuario : empleado.getUsuarioCollection()) { Empleado oldEmpDniOfUsuarioCollectionUsuario = usuarioCollectionUsuario.getEmpDni(); usuarioCollectionUsuario.setEmpDni(empleado); usuarioCollectionUsuario = em.merge(usuarioCollectionUsuario); if (oldEmpDniOfUsuarioCollectionUsuario != null) { oldEmpDniOfUsuarioCollectionUsuario .getUsuarioCollection() .remove(usuarioCollectionUsuario); oldEmpDniOfUsuarioCollectionUsuario = em.merge(oldEmpDniOfUsuarioCollectionUsuario); } } for (RegistroFalta registroFaltaCollectionRegistroFalta : empleado.getRegistroFaltaCollection()) { Empleado oldEmpDniOfRegistroFaltaCollectionRegistroFalta = registroFaltaCollectionRegistroFalta.getEmpDni(); registroFaltaCollectionRegistroFalta.setEmpDni(empleado); registroFaltaCollectionRegistroFalta = em.merge(registroFaltaCollectionRegistroFalta); if (oldEmpDniOfRegistroFaltaCollectionRegistroFalta != null) { oldEmpDniOfRegistroFaltaCollectionRegistroFalta .getRegistroFaltaCollection() .remove(registroFaltaCollectionRegistroFalta); oldEmpDniOfRegistroFaltaCollectionRegistroFalta = em.merge(oldEmpDniOfRegistroFaltaCollectionRegistroFalta); } } em.getTransaction().commit(); } catch (Exception ex) { if (findEmpleado(empleado.getEmpDni()) != null) { throw new PreexistingEntityException("Empleado " + empleado + " already exists.", ex); } throw ex; } finally { if (em != null) { em.close(); } } }
public void edit(Empleado empleado) throws IllegalOrphanException, NonexistentEntityException, Exception { EntityManager em = null; try { em = getEntityManager(); em.getTransaction().begin(); Empleado persistentEmpleado = em.find(Empleado.class, empleado.getEmpDni()); Turno turCodOld = persistentEmpleado.getTurCod(); Turno turCodNew = empleado.getTurCod(); Cargo carCodOld = persistentEmpleado.getCarCod(); Cargo carCodNew = empleado.getCarCod(); Collection<Gastos> gastosCollectionOld = persistentEmpleado.getGastosCollection(); Collection<Gastos> gastosCollectionNew = empleado.getGastosCollection(); Collection<Usuario> usuarioCollectionOld = persistentEmpleado.getUsuarioCollection(); Collection<Usuario> usuarioCollectionNew = empleado.getUsuarioCollection(); Collection<RegistroFalta> registroFaltaCollectionOld = persistentEmpleado.getRegistroFaltaCollection(); Collection<RegistroFalta> registroFaltaCollectionNew = empleado.getRegistroFaltaCollection(); List<String> illegalOrphanMessages = null; for (Usuario usuarioCollectionOldUsuario : usuarioCollectionOld) { if (!usuarioCollectionNew.contains(usuarioCollectionOldUsuario)) { if (illegalOrphanMessages == null) { illegalOrphanMessages = new ArrayList<String>(); } illegalOrphanMessages.add( "You must retain Usuario " + usuarioCollectionOldUsuario + " since its empDni field is not nullable."); } } if (illegalOrphanMessages != null) { throw new IllegalOrphanException(illegalOrphanMessages); } if (turCodNew != null) { turCodNew = em.getReference(turCodNew.getClass(), turCodNew.getTurCod()); empleado.setTurCod(turCodNew); } if (carCodNew != null) { carCodNew = em.getReference(carCodNew.getClass(), carCodNew.getCarCod()); empleado.setCarCod(carCodNew); } Collection<Gastos> attachedGastosCollectionNew = new ArrayList<Gastos>(); for (Gastos gastosCollectionNewGastosToAttach : gastosCollectionNew) { gastosCollectionNewGastosToAttach = em.getReference( gastosCollectionNewGastosToAttach.getClass(), gastosCollectionNewGastosToAttach.getGasCod()); attachedGastosCollectionNew.add(gastosCollectionNewGastosToAttach); } gastosCollectionNew = attachedGastosCollectionNew; empleado.setGastosCollection(gastosCollectionNew); Collection<Usuario> attachedUsuarioCollectionNew = new ArrayList<Usuario>(); for (Usuario usuarioCollectionNewUsuarioToAttach : usuarioCollectionNew) { usuarioCollectionNewUsuarioToAttach = em.getReference( usuarioCollectionNewUsuarioToAttach.getClass(), usuarioCollectionNewUsuarioToAttach.getUsuCod()); attachedUsuarioCollectionNew.add(usuarioCollectionNewUsuarioToAttach); } usuarioCollectionNew = attachedUsuarioCollectionNew; empleado.setUsuarioCollection(usuarioCollectionNew); Collection<RegistroFalta> attachedRegistroFaltaCollectionNew = new ArrayList<RegistroFalta>(); for (RegistroFalta registroFaltaCollectionNewRegistroFaltaToAttach : registroFaltaCollectionNew) { registroFaltaCollectionNewRegistroFaltaToAttach = em.getReference( registroFaltaCollectionNewRegistroFaltaToAttach.getClass(), registroFaltaCollectionNewRegistroFaltaToAttach.getRegFaltaCod()); attachedRegistroFaltaCollectionNew.add(registroFaltaCollectionNewRegistroFaltaToAttach); } registroFaltaCollectionNew = attachedRegistroFaltaCollectionNew; empleado.setRegistroFaltaCollection(registroFaltaCollectionNew); empleado = em.merge(empleado); if (turCodOld != null && !turCodOld.equals(turCodNew)) { turCodOld.getEmpleadoCollection().remove(empleado); turCodOld = em.merge(turCodOld); } if (turCodNew != null && !turCodNew.equals(turCodOld)) { turCodNew.getEmpleadoCollection().add(empleado); turCodNew = em.merge(turCodNew); } if (carCodOld != null && !carCodOld.equals(carCodNew)) { carCodOld.getEmpleadoCollection().remove(empleado); carCodOld = em.merge(carCodOld); } if (carCodNew != null && !carCodNew.equals(carCodOld)) { carCodNew.getEmpleadoCollection().add(empleado); carCodNew = em.merge(carCodNew); } for (Gastos gastosCollectionOldGastos : gastosCollectionOld) { if (!gastosCollectionNew.contains(gastosCollectionOldGastos)) { gastosCollectionOldGastos.setEmpDni(null); gastosCollectionOldGastos = em.merge(gastosCollectionOldGastos); } } for (Gastos gastosCollectionNewGastos : gastosCollectionNew) { if (!gastosCollectionOld.contains(gastosCollectionNewGastos)) { Empleado oldEmpDniOfGastosCollectionNewGastos = gastosCollectionNewGastos.getEmpDni(); gastosCollectionNewGastos.setEmpDni(empleado); gastosCollectionNewGastos = em.merge(gastosCollectionNewGastos); if (oldEmpDniOfGastosCollectionNewGastos != null && !oldEmpDniOfGastosCollectionNewGastos.equals(empleado)) { oldEmpDniOfGastosCollectionNewGastos .getGastosCollection() .remove(gastosCollectionNewGastos); oldEmpDniOfGastosCollectionNewGastos = em.merge(oldEmpDniOfGastosCollectionNewGastos); } } } for (Usuario usuarioCollectionNewUsuario : usuarioCollectionNew) { if (!usuarioCollectionOld.contains(usuarioCollectionNewUsuario)) { Empleado oldEmpDniOfUsuarioCollectionNewUsuario = usuarioCollectionNewUsuario.getEmpDni(); usuarioCollectionNewUsuario.setEmpDni(empleado); usuarioCollectionNewUsuario = em.merge(usuarioCollectionNewUsuario); if (oldEmpDniOfUsuarioCollectionNewUsuario != null && !oldEmpDniOfUsuarioCollectionNewUsuario.equals(empleado)) { oldEmpDniOfUsuarioCollectionNewUsuario .getUsuarioCollection() .remove(usuarioCollectionNewUsuario); oldEmpDniOfUsuarioCollectionNewUsuario = em.merge(oldEmpDniOfUsuarioCollectionNewUsuario); } } } for (RegistroFalta registroFaltaCollectionOldRegistroFalta : registroFaltaCollectionOld) { if (!registroFaltaCollectionNew.contains(registroFaltaCollectionOldRegistroFalta)) { registroFaltaCollectionOldRegistroFalta.setEmpDni(null); registroFaltaCollectionOldRegistroFalta = em.merge(registroFaltaCollectionOldRegistroFalta); } } for (RegistroFalta registroFaltaCollectionNewRegistroFalta : registroFaltaCollectionNew) { if (!registroFaltaCollectionOld.contains(registroFaltaCollectionNewRegistroFalta)) { Empleado oldEmpDniOfRegistroFaltaCollectionNewRegistroFalta = registroFaltaCollectionNewRegistroFalta.getEmpDni(); registroFaltaCollectionNewRegistroFalta.setEmpDni(empleado); registroFaltaCollectionNewRegistroFalta = em.merge(registroFaltaCollectionNewRegistroFalta); if (oldEmpDniOfRegistroFaltaCollectionNewRegistroFalta != null && !oldEmpDniOfRegistroFaltaCollectionNewRegistroFalta.equals(empleado)) { oldEmpDniOfRegistroFaltaCollectionNewRegistroFalta .getRegistroFaltaCollection() .remove(registroFaltaCollectionNewRegistroFalta); oldEmpDniOfRegistroFaltaCollectionNewRegistroFalta = em.merge(oldEmpDniOfRegistroFaltaCollectionNewRegistroFalta); } } } em.getTransaction().commit(); } catch (Exception ex) { String msg = ex.getLocalizedMessage(); if (msg == null || msg.length() == 0) { Integer id = empleado.getEmpDni(); if (findEmpleado(id) == null) { throw new NonexistentEntityException("The empleado with id " + id + " no longer exists."); } } throw ex; } finally { if (em != null) { em.close(); } } }