public void create(Produto produto) throws PreexistingEntityException, Exception { if (produto.getDetalheVendaList() == null) { produto.setDetalheVendaList(new ArrayList<DetalheVenda>()); } if (produto.getPromocaoList() == null) { produto.setPromocaoList(new ArrayList<Promocao>()); } EntityManager em = null; try { em = getEntityManager(); em.getTransaction().begin(); Unidade codUnidade = produto.getCodUnidade(); if (codUnidade != null) { codUnidade = em.getReference(codUnidade.getClass(), codUnidade.getIdunidade()); produto.setCodUnidade(codUnidade); } Categoria codCategoria = produto.getCodCategoria(); if (codCategoria != null) { codCategoria = em.getReference(codCategoria.getClass(), codCategoria.getIdcategoria()); produto.setCodCategoria(codCategoria); } List<DetalheVenda> attachedDetalheVendaList = new ArrayList<DetalheVenda>(); for (DetalheVenda detalheVendaListDetalheVendaToAttach : produto.getDetalheVendaList()) { detalheVendaListDetalheVendaToAttach = em.getReference( detalheVendaListDetalheVendaToAttach.getClass(), detalheVendaListDetalheVendaToAttach.getDetalheVendaPK()); attachedDetalheVendaList.add(detalheVendaListDetalheVendaToAttach); } produto.setDetalheVendaList(attachedDetalheVendaList); List<Promocao> attachedPromocaoList = new ArrayList<Promocao>(); for (Promocao promocaoListPromocaoToAttach : produto.getPromocaoList()) { promocaoListPromocaoToAttach = em.getReference( promocaoListPromocaoToAttach.getClass(), promocaoListPromocaoToAttach.getIdpromocao()); attachedPromocaoList.add(promocaoListPromocaoToAttach); } produto.setPromocaoList(attachedPromocaoList); em.persist(produto); if (codUnidade != null) { codUnidade.getProdutoList().add(produto); codUnidade = em.merge(codUnidade); } if (codCategoria != null) { codCategoria.getProdutoList().add(produto); codCategoria = em.merge(codCategoria); } for (DetalheVenda detalheVendaListDetalheVenda : produto.getDetalheVendaList()) { Produto oldProdutoOfDetalheVendaListDetalheVenda = detalheVendaListDetalheVenda.getProduto(); detalheVendaListDetalheVenda.setProduto(produto); detalheVendaListDetalheVenda = em.merge(detalheVendaListDetalheVenda); if (oldProdutoOfDetalheVendaListDetalheVenda != null) { oldProdutoOfDetalheVendaListDetalheVenda .getDetalheVendaList() .remove(detalheVendaListDetalheVenda); oldProdutoOfDetalheVendaListDetalheVenda = em.merge(oldProdutoOfDetalheVendaListDetalheVenda); } } for (Promocao promocaoListPromocao : produto.getPromocaoList()) { Produto oldCodProdutoOfPromocaoListPromocao = promocaoListPromocao.getCodProduto(); promocaoListPromocao.setCodProduto(produto); promocaoListPromocao = em.merge(promocaoListPromocao); if (oldCodProdutoOfPromocaoListPromocao != null) { oldCodProdutoOfPromocaoListPromocao.getPromocaoList().remove(promocaoListPromocao); oldCodProdutoOfPromocaoListPromocao = em.merge(oldCodProdutoOfPromocaoListPromocao); } } em.getTransaction().commit(); } catch (Exception ex) { if (findProduto(produto.getIdproduto()) != null) { throw new PreexistingEntityException("Produto " + produto + " already exists.", ex); } throw ex; } finally { if (em != null) { em.close(); } } }
public void edit(Produto produto) throws IllegalOrphanException, NonexistentEntityException, Exception { EntityManager em = null; try { em = getEntityManager(); em.getTransaction().begin(); Produto persistentProduto = em.find(Produto.class, produto.getIdproduto()); Unidade codUnidadeOld = persistentProduto.getCodUnidade(); Unidade codUnidadeNew = produto.getCodUnidade(); Categoria codCategoriaOld = persistentProduto.getCodCategoria(); Categoria codCategoriaNew = produto.getCodCategoria(); List<DetalheVenda> detalheVendaListOld = persistentProduto.getDetalheVendaList(); List<DetalheVenda> detalheVendaListNew = produto.getDetalheVendaList(); List<Promocao> promocaoListOld = persistentProduto.getPromocaoList(); List<Promocao> promocaoListNew = produto.getPromocaoList(); List<String> illegalOrphanMessages = null; for (DetalheVenda detalheVendaListOldDetalheVenda : detalheVendaListOld) { if (!detalheVendaListNew.contains(detalheVendaListOldDetalheVenda)) { if (illegalOrphanMessages == null) { illegalOrphanMessages = new ArrayList<String>(); } illegalOrphanMessages.add( "You must retain DetalheVenda " + detalheVendaListOldDetalheVenda + " since its produto field is not nullable."); } } for (Promocao promocaoListOldPromocao : promocaoListOld) { if (!promocaoListNew.contains(promocaoListOldPromocao)) { if (illegalOrphanMessages == null) { illegalOrphanMessages = new ArrayList<String>(); } illegalOrphanMessages.add( "You must retain Promocao " + promocaoListOldPromocao + " since its codProduto field is not nullable."); } } if (illegalOrphanMessages != null) { throw new IllegalOrphanException(illegalOrphanMessages); } if (codUnidadeNew != null) { codUnidadeNew = em.getReference(codUnidadeNew.getClass(), codUnidadeNew.getIdunidade()); produto.setCodUnidade(codUnidadeNew); } if (codCategoriaNew != null) { codCategoriaNew = em.getReference(codCategoriaNew.getClass(), codCategoriaNew.getIdcategoria()); produto.setCodCategoria(codCategoriaNew); } List<DetalheVenda> attachedDetalheVendaListNew = new ArrayList<DetalheVenda>(); for (DetalheVenda detalheVendaListNewDetalheVendaToAttach : detalheVendaListNew) { detalheVendaListNewDetalheVendaToAttach = em.getReference( detalheVendaListNewDetalheVendaToAttach.getClass(), detalheVendaListNewDetalheVendaToAttach.getDetalheVendaPK()); attachedDetalheVendaListNew.add(detalheVendaListNewDetalheVendaToAttach); } detalheVendaListNew = attachedDetalheVendaListNew; produto.setDetalheVendaList(detalheVendaListNew); List<Promocao> attachedPromocaoListNew = new ArrayList<Promocao>(); for (Promocao promocaoListNewPromocaoToAttach : promocaoListNew) { promocaoListNewPromocaoToAttach = em.getReference( promocaoListNewPromocaoToAttach.getClass(), promocaoListNewPromocaoToAttach.getIdpromocao()); attachedPromocaoListNew.add(promocaoListNewPromocaoToAttach); } promocaoListNew = attachedPromocaoListNew; produto.setPromocaoList(promocaoListNew); produto = em.merge(produto); if (codUnidadeOld != null && !codUnidadeOld.equals(codUnidadeNew)) { codUnidadeOld.getProdutoList().remove(produto); codUnidadeOld = em.merge(codUnidadeOld); } if (codUnidadeNew != null && !codUnidadeNew.equals(codUnidadeOld)) { codUnidadeNew.getProdutoList().add(produto); codUnidadeNew = em.merge(codUnidadeNew); } if (codCategoriaOld != null && !codCategoriaOld.equals(codCategoriaNew)) { codCategoriaOld.getProdutoList().remove(produto); codCategoriaOld = em.merge(codCategoriaOld); } if (codCategoriaNew != null && !codCategoriaNew.equals(codCategoriaOld)) { codCategoriaNew.getProdutoList().add(produto); codCategoriaNew = em.merge(codCategoriaNew); } for (DetalheVenda detalheVendaListNewDetalheVenda : detalheVendaListNew) { if (!detalheVendaListOld.contains(detalheVendaListNewDetalheVenda)) { Produto oldProdutoOfDetalheVendaListNewDetalheVenda = detalheVendaListNewDetalheVenda.getProduto(); detalheVendaListNewDetalheVenda.setProduto(produto); detalheVendaListNewDetalheVenda = em.merge(detalheVendaListNewDetalheVenda); if (oldProdutoOfDetalheVendaListNewDetalheVenda != null && !oldProdutoOfDetalheVendaListNewDetalheVenda.equals(produto)) { oldProdutoOfDetalheVendaListNewDetalheVenda .getDetalheVendaList() .remove(detalheVendaListNewDetalheVenda); oldProdutoOfDetalheVendaListNewDetalheVenda = em.merge(oldProdutoOfDetalheVendaListNewDetalheVenda); } } } for (Promocao promocaoListNewPromocao : promocaoListNew) { if (!promocaoListOld.contains(promocaoListNewPromocao)) { Produto oldCodProdutoOfPromocaoListNewPromocao = promocaoListNewPromocao.getCodProduto(); promocaoListNewPromocao.setCodProduto(produto); promocaoListNewPromocao = em.merge(promocaoListNewPromocao); if (oldCodProdutoOfPromocaoListNewPromocao != null && !oldCodProdutoOfPromocaoListNewPromocao.equals(produto)) { oldCodProdutoOfPromocaoListNewPromocao .getPromocaoList() .remove(promocaoListNewPromocao); oldCodProdutoOfPromocaoListNewPromocao = em.merge(oldCodProdutoOfPromocaoListNewPromocao); } } } em.getTransaction().commit(); } catch (Exception ex) { String msg = ex.getLocalizedMessage(); if (msg == null || msg.length() == 0) { Integer id = produto.getIdproduto(); if (findProduto(id) == null) { throw new NonexistentEntityException("The produto with id " + id + " no longer exists."); } } throw ex; } finally { if (em != null) { em.close(); } } }