Skip to content

Commit

Permalink
faz enviar para o banco de dados h2
Browse files Browse the repository at this point in the history
  • Loading branch information
cajuuh committed Oct 23, 2015
1 parent 2484446 commit 87634d4
Show file tree
Hide file tree
Showing 9 changed files with 171 additions and 44 deletions.
29 changes: 21 additions & 8 deletions app/controllers/Application.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
package controllers;

import java.util.List;

import models.Usuario;
import models.repository.UsuarioRepository;
import play.*;
import play.data.Form;
import play.mvc.*;
import views.html.*;
import play.db.jpa.Transactional;
import play.mvc.Controller;
import play.mvc.Result;
import play.twirl.api.Content;
import views.html.index;

import java.util.List;

import static play.libs.Json.toJson;

public class Application extends Controller
{
Expand All @@ -17,22 +21,31 @@ public class Application extends Controller

public Result index()
{
return ok(index.render("Your new application is ready."));
return ok(index.render());
}

@Transactional
public Result newUsuario()
{
Form<Usuario> filledForm = usuarioForm.bindFromRequest();
if(filledForm.hasErrors())
{
return badRequest();
return badRequest(views.html.index.render());
}
else
{
Usuario usuario = filledForm.get();
usuarioRepository.persist(usuario);
usuarioRepository.flush();
return redirect("http://www.google.com");
return ok(index.render());
}
}

public Result getUsuarios()
{
List<Usuario> users = usuarioRepository.findAll();
return ok((Content) users);
}
}


86 changes: 86 additions & 0 deletions app/models/repository/GenericDAO.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
package models.repository;

import java.util.List;

import javax.persistence.Query;

import play.db.jpa.JPA;

/**
* Camada genérica para acesso ao Banco de Dados
*/
public class GenericDAO {

/**
* Salva um objeto no BD.
*/
public boolean persist(Object e) {
JPA.em().persist(e);
return true;
}

/**
* Força que as operações executadas até agora no código sejam
* executadas no BD. Normalmente, o final de cada bloco @Transactional
* fará o flush. Porém, se você quer controlar erros, melhor fazer antes.
*/
public void flush() {
JPA.em().flush();
}

/**
* Atualiza a informação da entidade do código com a do banco de dados.
*
* Mais sobre merge: http://www.arquiteturacomputacional.eti.br/2013/02/entenda-o-ciclo-de-vida-das-entidades.html
*/
public void merge(Object e) {
JPA.em().merge(e);
}

/**
* Procura uma certa {@code clazz} pelo seu {@code id}.
*/
public <T> T findByEntityId(Class<T> clazz, Long id) {
return JPA.em().find(clazz, id);
}

/**
* Procura todos os objetos de uma certa classe pelo seu {@code className}
* descrito na Entidade.
*/
public <T> List<T> findAllByClass(Class clazz) {
String hql = "FROM " + clazz.getName();
Query hqlQuery = JPA.em().createQuery(hql);
return hqlQuery.getResultList();
}

/**
* Deleta do banco de dados uma {@code classe} referenciada pelo seu
* {@code id}.
*/
public <T> void removeById(Class<T> classe, Long id) {
JPA.em().remove(findByEntityId(classe, id));
}

/**
* Remove o respectivo {@code objeto} do banco de dados.
*/
public void remove(Object objeto) {
JPA.em().remove(objeto);
}

/**
* Procura uma certa {@code className} pelo seu {@code attributeName}.
*/
public <T> List<T> findByAttributeName(String className,
String attributeName, String attributeValue) {
String hql = "FROM " + className + " c" + " WHERE c." + attributeName
+ " = '" + attributeValue + "'";
Query hqlQuery = JPA.em().createQuery(hql);
return hqlQuery.getResultList();
}

private Query createQuery(String query) {
return JPA.em().createQuery(query);
}
}
11 changes: 5 additions & 6 deletions app/models/repository/GenericRepositoryImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,11 @@

import play.db.jpa.JPA;



/**
* Camada genérica para acesso ao Banco de Dados
*/
public abstract class GenericRepositoryImpl<Entidade> {
// Resultados por p?gina
// Resultados por página
public static final int DEFAULT_RESULTS = 50;

private Class<Entidade> clazz;
Expand All @@ -34,10 +32,11 @@ public void persist(Entidade e) {
}

/**
* Espelha o estado do DAO com o banco de Dados, deve ser feito ap?s um
* Espelha o estado do DAO com o banco de Dados, deve ser feito após um
* persist, ou merge.
*/
public void flush() {
public void flush()
{
getEm().flush();
}

Expand Down Expand Up @@ -99,7 +98,7 @@ public Query createQuery(String query) {
}

/**
* Retorna quantas entidades da {@code clazz} est?o no banco de dados
* Retorna quantas entidades da {@code clazz} estão no banco de dados
*/
public Long countAll() {
// Total de entidades
Expand Down
24 changes: 3 additions & 21 deletions app/models/repository/UsuarioRepository.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
package models.repository;

import models.Usuario;

import javax.persistence.NoResultException;
import javax.persistence.Query;
import javax.persistence.TypedQuery;

import com.sun.corba.se.impl.activation.RepositoryImpl;
import models.Usuario;
import sun.reflect.generics.repository.GenericDeclRepository;

/**
* Created by Pedro on 25/08/2015.
*/
Expand All @@ -22,25 +19,10 @@ private UsuarioRepository()

public static UsuarioRepository getInstance()
{
if(instance == null)
if (instance == null)
{
instance = new UsuarioRepository();
}
return instance;
}

public Usuario findByName(String nome)
{
String hql = "FROM Usuario a WHERE a.nome = :nome";
TypedQuery<Usuario> query = super.getEm().createQuery(hql, Usuario.class);
query.setParameter("nome", nome);
try
{
return query.getSingleResult();
}
catch (NoResultException exception)
{
return null;
}
}
}
9 changes: 7 additions & 2 deletions app/views/index.scala.html
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
@(message: String)
@()

@usuarioForm = {
<form action="@routes.Application.newUsuario()" method="post" id="test-form" class="white-popup-block mfp-hide">
Expand All @@ -20,14 +20,15 @@ <h1>Form</h1>
</li>
<li>
<label for="instrumentos">Instrumentos: </label>
<div data-tags-input-name="tag" id="tagBox" class="form-control"></div>
<div data-tags-input-name="tag" id="tagBox" class="form-control" name="instrumentos"></div>
<p>insira aqui os instrumentos que você toca como tags.</p>
</li>
<li>
<label for="textarea">Textarea</label><br>
<textarea id="textarea">Try to resize me to see how popup CSS-based resizing works.</textarea>
</li>
</ol>
<input type="submit" class="btn btn-primary" value="Create">
</fieldset>
</form>
}
Expand Down Expand Up @@ -253,6 +254,10 @@ <h3>WE'RE GOING MOBILE!</h3>
</div>
@usuarioForm

<div>
@routes.Application.getUsuarios()
</div>

<div id="f">
<div class="container">
<div class="row">
Expand Down
28 changes: 28 additions & 0 deletions conf/META-INF/persistence.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">

<persistence-unit name="h2PersistenceUnit"
transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<non-jta-data-source>DefaultDS</non-jta-data-source>
<properties>
<property name="hibernate.connection.url" value="jdbc:h2:mem:play" />
<property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect" />
<property name="hibernate.connection.driver_class" value="org.h2.Driver" />
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.format_sql" value="true" />
</properties>
</persistence-unit>
<persistence-unit name="postgrePersistenceUnit"
transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<non-jta-data-source>DefaultDS</non-jta-data-source>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.format_sql" value="true" />
</properties>
</persistence-unit>
</persistence>
10 changes: 5 additions & 5 deletions conf/application.conf
Original file line number Diff line number Diff line change
Expand Up @@ -32,16 +32,16 @@ play.i18n.langs = [ "en" ]
#


# jpa.default=defaultPersistenceUnit
# db.default.driver=org.postgresql.Driver
# db.default.url="postgres://postgres:postgres@localhost/test"
jpa.default=h2PersistenceUnit
db.default.driver=org.h2.Driver
db.default.url="jdbc:h2:mem:play"

# You can expose this datasource via JNDI if needed (Useful for JPA)
# db.default.jndiName=DefaultDS
db.default.jndiName=DefaultDS

db.default.driver=org.h2.Driver
db.default.url="jdbc:h2:mem:play"
# ebean.default="models.*"
ebean.default="models.*"
# db.default.username=sa
# db.default.password=""

Expand Down
3 changes: 2 additions & 1 deletion conf/routes
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@

# Home page
GET / controllers.Application.index()
POST /usuarios controllers.Application.newUsuario()
POST /usuario controllers.Application.newUsuario()
GET /usuarios controllers.Application.getUsuarios()

# Map static resources from the /public folder to the /assets URL path
GET /assets/*file controllers.Assets.versioned(path="/public", file: Asset)
15 changes: 14 additions & 1 deletion public/javascripts/tag-controll.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,20 @@ var my_custom_options = {
"case-sensitive" : false,
"edit-on-delete" : false
}

$(document).ready(function(){
$("#tagBox").tagging(my_custom_options);
$("#tagBox").tagging("getTags");
var instrumentos = $("#tagBox").tagging("getTags");

$('btn btn-primary').click(function(){
$.ajax({
url: "/",
type: "POST",
data: {myArray : instrumentos}
}).done(function(data,text,jQxhr){
alert("success");
});
});

});

0 comments on commit 87634d4

Please sign in to comment.