@Transactional public static Result newAnuncio() { // O formulário dos Livros Preenchidos DynamicForm filledForm = Form.form().bindFromRequest(); String objetivo = ""; if (filledForm.get("objetivo").equals("Tocar Ocasionalmente")) { objetivo = "Tocar Ocasionalmente"; } else if (filledForm.get("objetivo").equals("Procuro banda")) { objetivo = "Procuro banda"; } else if (filledForm.get("objetivo").equals("Procuro musico")) { objetivo = "Procuro musico"; } if (filledForm.hasErrors()) { List<Anuncio> result = dao.findAllByClass(Anuncio.class); // TODO falta colocar na interface mensagem de erro. return badRequest(views.html.index.render(result, contador)); } else { Anuncio novoAnuncio = new Anuncio( filledForm.get("nome"), filledForm.get("cidade"), filledForm.get("bairro"), filledForm.get("instrumentos"), filledForm.get("email"), filledForm.get("face"), objetivo, filledForm.get("estilo_gosta"), filledForm.get("estilo_nao_gosta"), filledForm.get("codigo")); Logger.debug( "Criando anúncio: " + filledForm.data().toString() + " como " + novoAnuncio.getNome()); // Persiste o Anuncio criado dao.persist(novoAnuncio); // Espelha no Banco de Dados dao.flush(); /* * Usar routes.Application.<uma action> é uma forma de * evitar colocar rotas literais (ex: "/books") * hard-coded no código. Dessa forma, se mudamos no * arquivo routes, continua funcionando. */ return redirect(routes.Application.anuncios()); } }
// Notação transactional sempre que o método fizer transação com o Banco de // Dados. @Transactional public static Result deleteAnuncio(Long id) { DynamicForm deleteForm = Form.form().bindFromRequest(); if (deleteForm.get("codigo").equals(dao.findByEntityId(Anuncio.class, id).getCodigo())) { // Remove o Anuncio pelo Id dao.removeById(Anuncio.class, id); // Espelha no banco de dados dao.flush(); } if (deleteForm.get("optradio").equals("1")) { contador.setResolvido(contador.getResolvido() + 1); } else { contador.setNao_resolvido(contador.getNao_resolvido() + 1); } dao.persist(contador); dao.flush(); return redirect(routes.Application.anuncios()); }